diff options
author | Karl Berry <karl@freefriends.org> | 2010-06-01 23:29:11 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-06-01 23:29:11 +0000 |
commit | da1a001044f9e87559e32a4ad7a0d5f44d72810c (patch) | |
tree | bf2f21508e4220dff99189e03845c5b73e2f9da9 /Master/tlpkg/tlperl.old | |
parent | 550c8d37fab593519a4984e62b0a8aaaf405c9a8 (diff) |
looks like we are going with new perl
git-svn-id: svn://tug.org/texlive/trunk@18687 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/tlperl.old')
1276 files changed, 0 insertions, 290480 deletions
diff --git a/Master/tlpkg/tlperl.old/README.TEXLIVE b/Master/tlpkg/tlperl.old/README.TEXLIVE deleted file mode 100644 index 1671e7674d5..00000000000 --- a/Master/tlpkg/tlperl.old/README.TEXLIVE +++ /dev/null @@ -1,21 +0,0 @@ - -This directory contains a subset of the Perl 5.8.8 distribution -for Windows. The only purpose of this package is to support programs -shipped with TeX Live. It's not intended for general use. - -The executable files were compiled by Siep Kroonenberg with MinGW. - -Changes: - - * The documentation and many modules have been removed. - - * Some Windows specific modules have been added. - -This version of Perl will not be installed on your system and will not -interfere with other versions of Perl which might be installed already. - -If you need Perl for any other purpose than running the programs -provided by TeX Live, we recommand to install the full version which -can be downloaded from: - - http://www.perl.org diff --git a/Master/tlpkg/tlperl.old/bin/perl.exe b/Master/tlpkg/tlperl.old/bin/perl.exe Binary files differdeleted file mode 100755 index 30108d9a8cc..00000000000 --- a/Master/tlpkg/tlperl.old/bin/perl.exe +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/bin/perl.exe.manifest b/Master/tlpkg/tlperl.old/bin/perl.exe.manifest deleted file mode 100755 index c97b607769a..00000000000 --- a/Master/tlpkg/tlperl.old/bin/perl.exe.manifest +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> - <assemblyIdentity - version="1.0.0.0" - processorArchitecture="*" - name="perl.exe" - type="win32"/> - <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> - <security> - <requestedPrivileges> - <requestedExecutionLevel level="asInvoker"/> - </requestedPrivileges> - </security> - </trustInfo> -</assembly> diff --git a/Master/tlpkg/tlperl.old/bin/perl58.dll b/Master/tlpkg/tlperl.old/bin/perl58.dll Binary files differdeleted file mode 100755 index d783261a862..00000000000 --- a/Master/tlpkg/tlperl.old/bin/perl58.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/AnyDBM_File.pm b/Master/tlpkg/tlperl.old/lib/AnyDBM_File.pm deleted file mode 100644 index d73abab0f9e..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/AutoLoader.pm b/Master/tlpkg/tlperl.old/lib/AutoLoader.pm deleted file mode 100644 index 4352d8b1fbe..00000000000 --- a/Master/tlpkg/tlperl.old/lib/AutoLoader.pm +++ /dev/null @@ -1,343 +0,0 @@ -package AutoLoader; - -use strict; -use 5.006_001; - -our($VERSION, $AUTOLOAD); - -my $is_dosish; -my $is_epoc; -my $is_vms; -my $is_macos; - -BEGIN { - $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.60'; -} - -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') { - no strict 'refs'; - *$sub = sub {}; - $@ = undef; - } elsif ($@ =~ /^Can't locate/) { - # 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 successfully 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') { - no strict 'refs'; - *{ $callpkg . '::AUTOLOAD' } = \&AUTOLOAD - if @_ and $_[0] =~ /^&?AUTOLOAD$/; - } - - # - # 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; - - no strict 'refs'; - my $symname = $callpkg . '::AUTOLOAD'; - undef *{ $symname } if \&{ $symname } == \&AUTOLOAD; - *{ $symname } = \&{ $symname }; -} - -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/tlpkg/tlperl.old/lib/B.pm b/Master/tlpkg/tlperl.old/lib/B.pm deleted file mode 100644 index 12917347cd0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B.pm +++ /dev/null @@ -1,1111 +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.09_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 check_av end_av regex_padav dowarn - defstash curstash warnhook diehook inc_gv - ); - -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::SV'; -@B::RV::ISA = 'B::SV'; -@B::PVIV::ISA = qw(B::PV B::IV); -@B::PVNV::ISA = qw(B::PVIV B::NV); -@B::PVMG::ISA = 'B::PVNV'; -# Change in the inheritance hierarchy post 5.9.0 -@B::PVLV::ISA = $] > 5.009 ? 'B::GV' : '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::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' && ref($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 =~ - /^(d?or(assign)?|and(assign)?|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 - -The C<B> module contains a set of utility functions for querying the -current state of the Perl interpreter; typically these functions -return objects from the B::SV and B::OP classes, or their derived -classes. These classes in turn define methods for querying the -resulting objects about their own internal state. - -=head1 Utility Functions - -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. - -=head2 Functions Returning C<B::SV>, C<B::AV>, C<B::HV>, and C<B::CV> objects - -For descriptions of the class hierarchy of these objects and the -methods that can be called on them, see below, L<"OVERVIEW OF -CLASSES"> and L<"SV-RELATED CLASSES">. - -=over 4 - -=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 svref_2object(SVREF) - -Takes a reference to any Perl value, and turns the referred-to value -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. - -The returned object will only be valid as long as the underlying OPs -and SVs continue to exist. Do not attempt to use the object after the -underlying structures are freed. - -=item amagic_generation - -Returns the SV object corresponding to the C variable C<amagic_generation>. - -=item init_av - -Returns the AV object (i.e. in class B::AV) representing INIT blocks. - -=item check_av - -Returns the AV object (i.e. in class B::AV) representing CHECK 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 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 main_cv - -Return the (faked) CV corresponding to the main part of the Perl -program. - -=back - -=head2 Functions for Examining the Symbol Table - -=over 4 - -=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. - # Recurse only into CGI::Util:: - walksymtable(\%CGI::, 'print_subs', sub { $_[0] eq 'CGI::Util::' }, - 'CGI::'); - -print_subs() is a B::GV method you have declared. Also see L<"B::GV -Methods">, below. - -=back - -=head2 Functions Returning C<B::OP> objects or for walking op trees - -For descriptions of the class hierarchy of these objects and the -methods that can be called on them, see below, L<"OVERVIEW OF -CLASSES"> and L<"OP-RELATED CLASSES">. - -=over 4 - -=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 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> (see below) 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. - -=back - -=head2 Miscellaneous Utility Functions - -=over 4 - -=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 C<"::">. This is used to turn C<"B::UNOP"> into -C<"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 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. Also, note that the B::OP and B::SV objects created -by this module are only valid for as long as the underlying objects -exist; their creation doesn't increase the reference counts of the -underlying objects. Trying to access the fields of a freed object will -give incomprehensible results, or worse. - -=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". For 5.9.1 -and later this is: - - B::SV - | - +--------------+----------+------------+ - | | | | - B::PV B::IV B::NV B::RV - \ / / - \ / / - B::PVIV / - \ / - \ / - \ / - B::PVNV - | - | - B::PVMG - | - +-----+----+------+-----+-----+ - | | | | | | - B::BM B::AV B::GV B::HV B::CV B::IO - | | - B::PVLV | - B::FM - - -For 5.9.0 and earlier, PVLV is a direct subclass of PVMG, so the base -of this diagram is - - | - B::PVMG - | - +------+-----+----+------+-----+-----+ - | | | | | | | - B::PVLV B::BM B::AV B::GV B::HV B::CV B::IO - | - | - B::FM - - -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 - -=item object_2svref - -Returns a reference to the regular scalar corresponding to this -B::SV object. In other words, this method is the inverse operation -to the svref_2object() subroutine. This scalar and other data it points -at should be considered read-only: modifying them is neither safe nor -guaranteed to have a sensible effect. - -=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 ARRAYelt - -Like C<ARRAY>, but takes an index as an argument to get only one element, -rather than a list of all of them. - -=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 OUTSIDE_SEQ - -=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 - -C<B::OP>, C<B::UNOP>, C<B::BINOP>, C<B::LOGOP>, C<B::LISTOP>, C<B::PMOP>, -C<B::SVOP>, C<B::PADOP>, C<B::PVOP>, C<B::LOOP>, C<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": - - B::OP - | - +---------------+--------+--------+ - | | | | - B::UNOP B::SVOP B::PADOP B::COP - ,' `-. - / `--. - B::BINOP B::LOGOP - | - | - B::LISTOP - ,' `. - / \ - B::LOOP B::PMOP - -Access methods correspond to the underlying C structre field names, -with the leading "class indication" prefix (C<"op_">) removed. - -=head2 B::OP Methods - -These methods get the values of similarly named fields within the OP -data structure. See top of C<op.h> for more info. - -=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 opt - -=item static - -=item flags - -=item private - -=item spare - -=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 pmoffset - -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 stashpv - -=item file - -=item cop_seq - -=item arybase - -=item line - -=item warnings - -=item io - -=back - - -=head1 AUTHOR - -Malcolm Beattie, C<mbeattie@sable.ox.ac.uk> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/B/Asmdata.pm b/Master/tlpkg/tlperl.old/lib/B/Asmdata.pm deleted file mode 100644 index 9e41d6dd757..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Asmdata.pm +++ /dev/null @@ -1,250 +0,0 @@ -# -#- buffer-read-only: t -#- -# -# Copyright (c) 1996-1999 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. -# -# -# -# This file is autogenerated from bytecode.pl. Changes made here will be lost. -# -package B::Asmdata; - -our $VERSION = '1.01'; - -use Exporter; -@ISA = qw(Exporter); -@EXPORT_OK = qw(%insn_data @insn_name @optype @specialsv_name); -our(%insn_data, @insn_name, @optype, @specialsv_name); - -@optype = qw(OP UNOP BINOP LOGOP LISTOP PMOP SVOP PADOP PVOP LOOP COP); -@specialsv_name = qw(Nullsv &PL_sv_undef &PL_sv_yes &PL_sv_no pWARN_ALL pWARN_NONE); - -# XXX insn_data is initialised this way because with a large -# %insn_data = (foo => [...], bar => [...], ...) initialiser -# I get a hard-to-track-down stack underflow and segfault. -$insn_data{comment} = [35, \&PUT_comment_t, "GET_comment_t"]; -$insn_data{nop} = [10, \&PUT_none, "GET_none"]; -$insn_data{ret} = [0, \&PUT_none, "GET_none"]; -$insn_data{ldsv} = [1, \&PUT_svindex, "GET_svindex"]; -$insn_data{ldop} = [2, \&PUT_opindex, "GET_opindex"]; -$insn_data{stsv} = [3, \&PUT_U32, "GET_U32"]; -$insn_data{stop} = [4, \&PUT_U32, "GET_U32"]; -$insn_data{stpv} = [5, \&PUT_U32, "GET_U32"]; -$insn_data{ldspecsv} = [6, \&PUT_U8, "GET_U8"]; -$insn_data{ldspecsvx} = [7, \&PUT_U8, "GET_U8"]; -$insn_data{newsv} = [8, \&PUT_U8, "GET_U8"]; -$insn_data{newsvx} = [9, \&PUT_U32, "GET_U32"]; -$insn_data{newop} = [11, \&PUT_U8, "GET_U8"]; -$insn_data{newopx} = [12, \&PUT_U16, "GET_U16"]; -$insn_data{newopn} = [13, \&PUT_U8, "GET_U8"]; -$insn_data{newpv} = [14, \&PUT_PV, "GET_PV"]; -$insn_data{pv_cur} = [15, \&PUT_PADOFFSET, "GET_PADOFFSET"]; -$insn_data{pv_free} = [16, \&PUT_none, "GET_none"]; -$insn_data{sv_upgrade} = [17, \&PUT_U8, "GET_U8"]; -$insn_data{sv_refcnt} = [18, \&PUT_U32, "GET_U32"]; -$insn_data{sv_refcnt_add} = [19, \&PUT_I32, "GET_I32"]; -$insn_data{sv_flags} = [20, \&PUT_U32, "GET_U32"]; -$insn_data{xrv} = [21, \&PUT_svindex, "GET_svindex"]; -$insn_data{xpv} = [22, \&PUT_none, "GET_none"]; -$insn_data{xpv_cur} = [23, \&PUT_PADOFFSET, "GET_PADOFFSET"]; -$insn_data{xpv_len} = [24, \&PUT_PADOFFSET, "GET_PADOFFSET"]; -$insn_data{xiv} = [25, \&PUT_IV, "GET_IV"]; -$insn_data{xnv} = [26, \&PUT_NV, "GET_NV"]; -$insn_data{xlv_targoff} = [27, \&PUT_PADOFFSET, "GET_PADOFFSET"]; -$insn_data{xlv_targlen} = [28, \&PUT_PADOFFSET, "GET_PADOFFSET"]; -$insn_data{xlv_targ} = [29, \&PUT_svindex, "GET_svindex"]; -$insn_data{xlv_type} = [30, \&PUT_U8, "GET_U8"]; -$insn_data{xbm_useful} = [31, \&PUT_I32, "GET_I32"]; -$insn_data{xbm_previous} = [32, \&PUT_U16, "GET_U16"]; -$insn_data{xbm_rare} = [33, \&PUT_U8, "GET_U8"]; -$insn_data{xfm_lines} = [34, \&PUT_IV, "GET_IV"]; -$insn_data{xio_lines} = [36, \&PUT_IV, "GET_IV"]; -$insn_data{xio_page} = [37, \&PUT_IV, "GET_IV"]; -$insn_data{xio_page_len} = [38, \&PUT_IV, "GET_IV"]; -$insn_data{xio_lines_left} = [39, \&PUT_IV, "GET_IV"]; -$insn_data{xio_top_name} = [40, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{xio_top_gv} = [41, \&PUT_svindex, "GET_svindex"]; -$insn_data{xio_fmt_name} = [42, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{xio_fmt_gv} = [43, \&PUT_svindex, "GET_svindex"]; -$insn_data{xio_bottom_name} = [44, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{xio_bottom_gv} = [45, \&PUT_svindex, "GET_svindex"]; -$insn_data{xio_subprocess} = [46, \&PUT_U16, "GET_U16"]; -$insn_data{xio_type} = [47, \&PUT_U8, "GET_U8"]; -$insn_data{xio_flags} = [48, \&PUT_U8, "GET_U8"]; -$insn_data{xcv_xsubany} = [49, \&PUT_svindex, "GET_svindex"]; -$insn_data{xcv_stash} = [50, \&PUT_svindex, "GET_svindex"]; -$insn_data{xcv_start} = [51, \&PUT_opindex, "GET_opindex"]; -$insn_data{xcv_root} = [52, \&PUT_opindex, "GET_opindex"]; -$insn_data{xcv_gv} = [53, \&PUT_svindex, "GET_svindex"]; -$insn_data{xcv_file} = [54, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{xcv_depth} = [55, \&PUT_long, "GET_long"]; -$insn_data{xcv_padlist} = [56, \&PUT_svindex, "GET_svindex"]; -$insn_data{xcv_outside} = [57, \&PUT_svindex, "GET_svindex"]; -$insn_data{xcv_outside_seq} = [58, \&PUT_U32, "GET_U32"]; -$insn_data{xcv_flags} = [59, \&PUT_U16, "GET_U16"]; -$insn_data{av_extend} = [60, \&PUT_PADOFFSET, "GET_PADOFFSET"]; -$insn_data{av_pushx} = [61, \&PUT_svindex, "GET_svindex"]; -$insn_data{av_push} = [62, \&PUT_svindex, "GET_svindex"]; -$insn_data{xav_fill} = [63, \&PUT_PADOFFSET, "GET_PADOFFSET"]; -$insn_data{xav_max} = [64, \&PUT_PADOFFSET, "GET_PADOFFSET"]; -$insn_data{xav_flags} = [65, \&PUT_U8, "GET_U8"]; -$insn_data{xhv_riter} = [66, \&PUT_I32, "GET_I32"]; -$insn_data{xhv_name} = [67, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{xhv_pmroot} = [68, \&PUT_opindex, "GET_opindex"]; -$insn_data{hv_store} = [69, \&PUT_svindex, "GET_svindex"]; -$insn_data{sv_magic} = [70, \&PUT_U8, "GET_U8"]; -$insn_data{mg_obj} = [71, \&PUT_svindex, "GET_svindex"]; -$insn_data{mg_private} = [72, \&PUT_U16, "GET_U16"]; -$insn_data{mg_flags} = [73, \&PUT_U8, "GET_U8"]; -$insn_data{mg_name} = [74, \&PUT_pvcontents, "GET_pvcontents"]; -$insn_data{mg_namex} = [75, \&PUT_svindex, "GET_svindex"]; -$insn_data{xmg_stash} = [76, \&PUT_svindex, "GET_svindex"]; -$insn_data{gv_fetchpv} = [77, \&PUT_strconst, "GET_strconst"]; -$insn_data{gv_fetchpvx} = [78, \&PUT_strconst, "GET_strconst"]; -$insn_data{gv_stashpv} = [79, \&PUT_strconst, "GET_strconst"]; -$insn_data{gv_stashpvx} = [80, \&PUT_strconst, "GET_strconst"]; -$insn_data{gp_sv} = [81, \&PUT_svindex, "GET_svindex"]; -$insn_data{gp_refcnt} = [82, \&PUT_U32, "GET_U32"]; -$insn_data{gp_refcnt_add} = [83, \&PUT_I32, "GET_I32"]; -$insn_data{gp_av} = [84, \&PUT_svindex, "GET_svindex"]; -$insn_data{gp_hv} = [85, \&PUT_svindex, "GET_svindex"]; -$insn_data{gp_cv} = [86, \&PUT_svindex, "GET_svindex"]; -$insn_data{gp_file} = [87, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{gp_io} = [88, \&PUT_svindex, "GET_svindex"]; -$insn_data{gp_form} = [89, \&PUT_svindex, "GET_svindex"]; -$insn_data{gp_cvgen} = [90, \&PUT_U32, "GET_U32"]; -$insn_data{gp_line} = [91, \&PUT_U32, "GET_U32"]; -$insn_data{gp_share} = [92, \&PUT_svindex, "GET_svindex"]; -$insn_data{xgv_flags} = [93, \&PUT_U8, "GET_U8"]; -$insn_data{op_next} = [94, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_sibling} = [95, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_ppaddr} = [96, \&PUT_strconst, "GET_strconst"]; -$insn_data{op_targ} = [97, \&PUT_PADOFFSET, "GET_PADOFFSET"]; -$insn_data{op_type} = [98, \&PUT_U16, "GET_U16"]; -$insn_data{op_seq} = [99, \&PUT_U16, "GET_U16"]; -$insn_data{op_flags} = [100, \&PUT_U8, "GET_U8"]; -$insn_data{op_private} = [101, \&PUT_U8, "GET_U8"]; -$insn_data{op_first} = [102, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_last} = [103, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_other} = [104, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_pmreplroot} = [105, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_pmreplstart} = [106, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_pmnext} = [107, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_pmstashpv} = [108, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{op_pmreplrootpo} = [109, \&PUT_PADOFFSET, "GET_PADOFFSET"]; -$insn_data{op_pmstash} = [110, \&PUT_svindex, "GET_svindex"]; -$insn_data{op_pmreplrootgv} = [111, \&PUT_svindex, "GET_svindex"]; -$insn_data{pregcomp} = [112, \&PUT_pvcontents, "GET_pvcontents"]; -$insn_data{op_pmflags} = [113, \&PUT_U16, "GET_U16"]; -$insn_data{op_pmpermflags} = [114, \&PUT_U16, "GET_U16"]; -$insn_data{op_pmdynflags} = [115, \&PUT_U8, "GET_U8"]; -$insn_data{op_sv} = [116, \&PUT_svindex, "GET_svindex"]; -$insn_data{op_padix} = [117, \&PUT_PADOFFSET, "GET_PADOFFSET"]; -$insn_data{op_pv} = [118, \&PUT_pvcontents, "GET_pvcontents"]; -$insn_data{op_pv_tr} = [119, \&PUT_op_tr_array, "GET_op_tr_array"]; -$insn_data{op_redoop} = [120, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_nextop} = [121, \&PUT_opindex, "GET_opindex"]; -$insn_data{op_lastop} = [122, \&PUT_opindex, "GET_opindex"]; -$insn_data{cop_label} = [123, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{cop_stashpv} = [124, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{cop_file} = [125, \&PUT_pvindex, "GET_pvindex"]; -$insn_data{cop_stash} = [126, \&PUT_svindex, "GET_svindex"]; -$insn_data{cop_filegv} = [127, \&PUT_svindex, "GET_svindex"]; -$insn_data{cop_seq} = [128, \&PUT_U32, "GET_U32"]; -$insn_data{cop_arybase} = [129, \&PUT_I32, "GET_I32"]; -$insn_data{cop_line} = [130, \&PUT_U32, "GET_U32"]; -$insn_data{cop_io} = [131, \&PUT_svindex, "GET_svindex"]; -$insn_data{cop_warnings} = [132, \&PUT_svindex, "GET_svindex"]; -$insn_data{main_start} = [133, \&PUT_opindex, "GET_opindex"]; -$insn_data{main_root} = [134, \&PUT_opindex, "GET_opindex"]; -$insn_data{main_cv} = [135, \&PUT_svindex, "GET_svindex"]; -$insn_data{curpad} = [136, \&PUT_svindex, "GET_svindex"]; -$insn_data{push_begin} = [137, \&PUT_svindex, "GET_svindex"]; -$insn_data{push_init} = [138, \&PUT_svindex, "GET_svindex"]; -$insn_data{push_end} = [139, \&PUT_svindex, "GET_svindex"]; -$insn_data{curstash} = [140, \&PUT_svindex, "GET_svindex"]; -$insn_data{defstash} = [141, \&PUT_svindex, "GET_svindex"]; -$insn_data{data} = [142, \&PUT_U8, "GET_U8"]; -$insn_data{incav} = [143, \&PUT_svindex, "GET_svindex"]; -$insn_data{load_glob} = [144, \&PUT_svindex, "GET_svindex"]; -$insn_data{regex_padav} = [145, \&PUT_svindex, "GET_svindex"]; -$insn_data{dowarn} = [146, \&PUT_U8, "GET_U8"]; -$insn_data{comppad_name} = [147, \&PUT_svindex, "GET_svindex"]; -$insn_data{xgv_stash} = [148, \&PUT_svindex, "GET_svindex"]; -$insn_data{signal} = [149, \&PUT_strconst, "GET_strconst"]; -$insn_data{formfeed} = [150, \&PUT_svindex, "GET_svindex"]; - -my ($insn_name, $insn_data); -while (($insn_name, $insn_data) = each %insn_data) { - $insn_name[$insn_data->[0]] = $insn_name; -} -# Fill in any gaps -@insn_name = map($_ || "unused", @insn_name); - -1; - -__END__ - -=head1 NAME - -B::Asmdata - Autogenerated data about Perl ops, used to generate bytecode - -=head1 SYNOPSIS - - use B::Asmdata qw(%insn_data @insn_name @optype @specialsv_name); - -=head1 DESCRIPTION - -Provides information about Perl ops in order to generate bytecode via -a bunch of exported variables. Its mostly used by B::Assembler and -B::Disassembler. - -=over 4 - -=item %insn_data - - my($bytecode_num, $put_sub, $get_meth) = @$insn_data{$op_name}; - -For a given $op_name (for example, 'cop_label', 'sv_flags', etc...) -you get an array ref containing the bytecode number of the op, a -reference to the subroutine used to 'PUT', and the name of the method -used to 'GET'. - -=for _private -Add more detail about what $put_sub and $get_meth are and how to use them. - -=item @insn_name - - my $op_name = $insn_name[$bytecode_num]; - -A simple mapping of the bytecode number to the name of the op. -Suitable for using with %insn_data like so: - - my $op_info = $insn_data{$insn_name[$bytecode_num]}; - -=item @optype - - my $op_type = $optype[$op_type_num]; - -A simple mapping of the op type number to its type (like 'COP' or 'BINOP'). - -=item @specialsv_name - - my $sv_name = $specialsv_name[$sv_index]; - -Certain SV types are considered 'special'. They're represented by -B::SPECIAL and are referred to by a number from the specialsv_list. -This array maps that number back to the name of the SV (like 'Nullsv' -or '&PL_sv_undef'). - -=back - -=head1 AUTHOR - -Malcolm Beattie, C<mbeattie@sable.ox.ac.uk> - -=cut - -# ex: set ro: diff --git a/Master/tlpkg/tlperl.old/lib/B/Assembler.pm b/Master/tlpkg/tlperl.old/lib/B/Assembler.pm deleted file mode 100644 index f312273ce36..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Assembler.pm +++ /dev/null @@ -1,328 +0,0 @@ -# Assembler.pm -# -# Copyright (c) 1996 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::Assembler; -use Exporter; -use B qw(ppname); -use B::Asmdata qw(%insn_data @insn_name); -use Config qw(%Config); -require ByteLoader; # we just need its $VERSION - -no warnings; # XXX - -@ISA = qw(Exporter); -@EXPORT_OK = qw(assemble_fh newasm endasm assemble asm); -$VERSION = 0.07; - -use strict; -my %opnumber; -my ($i, $opname); -for ($i = 0; defined($opname = ppname($i)); $i++) { - $opnumber{$opname} = $i; -} - -my($linenum, $errors, $out); # global state, set up by newasm - -sub error { - my $str = shift; - warn "$linenum: $str\n"; - $errors++; -} - -my $debug = 0; -sub debug { $debug = shift } - -sub limcheck($$$$){ - my( $val, $lo, $hi, $loc ) = @_; - if( $val < $lo || $hi < $val ){ - error "argument for $loc outside [$lo, $hi]: $val"; - $val = $hi; - } - return $val; -} - -# -# First define all the data conversion subs to which Asmdata will refer -# - -sub B::Asmdata::PUT_U8 { - my $arg = shift; - my $c = uncstring($arg); - if (defined($c)) { - if (length($c) != 1) { - error "argument for U8 is too long: $c"; - $c = substr($c, 0, 1); - } - } else { - $arg = limcheck( $arg, 0, 0xff, 'U8' ); - $c = chr($arg); - } - return $c; -} - -sub B::Asmdata::PUT_U16 { - my $arg = limcheck( $_[0], 0, 0xffff, 'U16' ); - pack("S", $arg); -} -sub B::Asmdata::PUT_U32 { - my $arg = limcheck( $_[0], 0, 0xffffffff, 'U32' ); - pack("L", $arg); -} -sub B::Asmdata::PUT_I32 { - my $arg = limcheck( $_[0], -0x80000000, 0x7fffffff, 'I32' ); - pack("l", $arg); -} -sub B::Asmdata::PUT_NV { sprintf("%s\0", $_[0]) } # "%lf" looses precision and pack('d',...) - # may not even be portable between compilers -sub B::Asmdata::PUT_objindex { # could allow names here - my $arg = limcheck( $_[0], 0, 0xffffffff, '*index' ); - pack("L", $arg); -} -sub B::Asmdata::PUT_svindex { &B::Asmdata::PUT_objindex } -sub B::Asmdata::PUT_opindex { &B::Asmdata::PUT_objindex } -sub B::Asmdata::PUT_pvindex { &B::Asmdata::PUT_objindex } - -sub B::Asmdata::PUT_strconst { - my $arg = shift; - my $str = uncstring($arg); - if (!defined($str)) { - error "bad string constant: $arg"; - $str = ''; - } - if ($str =~ s/\0//g) { - error "string constant argument contains NUL: $arg"; - $str = ''; - } - return $str . "\0"; -} - -sub B::Asmdata::PUT_pvcontents { - my $arg = shift; - error "extraneous argument: $arg" if defined $arg; - return ""; -} -sub B::Asmdata::PUT_PV { - my $arg = shift; - my $str = uncstring($arg); - if( ! defined($str) ){ - error "bad string argument: $arg"; - $str = ''; - } - return pack("L", length($str)) . $str; -} -sub B::Asmdata::PUT_comment_t { - my $arg = shift; - $arg = uncstring($arg); - error "bad string argument: $arg" unless defined($arg); - if ($arg =~ s/\n//g) { - error "comment argument contains linefeed: $arg"; - } - return $arg . "\n"; -} -sub B::Asmdata::PUT_double { sprintf("%s\0", $_[0]) } # see PUT_NV above -sub B::Asmdata::PUT_none { - my $arg = shift; - error "extraneous argument: $arg" if defined $arg; - return ""; -} -sub B::Asmdata::PUT_op_tr_array { - my @ary = split /\s*,\s*/, shift; - return pack "S*", @ary; -} - -sub B::Asmdata::PUT_IV64 { - return pack "Q", shift; -} - -sub B::Asmdata::PUT_IV { - $Config{ivsize} == 4 ? &B::Asmdata::PUT_I32 : &B::Asmdata::PUT_IV64; -} - -sub B::Asmdata::PUT_PADOFFSET { - $Config{ptrsize} == 8 ? &B::Asmdata::PUT_IV64 : &B::Asmdata::PUT_U32; -} - -sub B::Asmdata::PUT_long { - $Config{longsize} == 8 ? &B::Asmdata::PUT_IV64 : &B::Asmdata::PUT_U32; -} - -my %unesc = (n => "\n", r => "\r", t => "\t", a => "\a", - b => "\b", f => "\f", v => "\013"); - -sub uncstring { - my $s = shift; - $s =~ s/^"// and $s =~ s/"$// or return undef; - $s =~ s/\\(\d\d\d|.)/length($1) == 3 ? chr(oct($1)) : ($unesc{$1}||$1)/eg; - return $s; -} - -sub strip_comments { - my $stmt = shift; - # Comments only allowed in instructions which don't take string arguments - # Treat string as a single line so .* eats \n characters. - $stmt =~ s{ - ^\s* # Ignore leading whitespace - ( - [^"]* # A double quote '"' indicates a string argument. If we - # find a double quote, the match fails and we strip nothing. - ) - \s*\# # Any amount of whitespace plus the comment marker... - .*$ # ...which carries on to end-of-string. - }{$1}sx; # Keep only the instruction and optional argument. - return $stmt; -} - -# create the ByteCode header: magic, archname, ByteLoader $VERSION, ivsize, -# ptrsize, byteorder -# nvtype is irrelevant (floats are stored as strings) -# byteorder is strconst not U32 because of varying size issues - -sub gen_header { - my $header = ""; - - $header .= B::Asmdata::PUT_U32(0x43424c50); # 'PLBC' - $header .= B::Asmdata::PUT_strconst('"' . $Config{archname}. '"'); - $header .= B::Asmdata::PUT_strconst(qq["$ByteLoader::VERSION"]); - $header .= B::Asmdata::PUT_U32($Config{ivsize}); - $header .= B::Asmdata::PUT_U32($Config{ptrsize}); - $header; -} - -sub parse_statement { - my $stmt = shift; - my ($insn, $arg) = $stmt =~ m{ - ^\s* # allow (but ignore) leading whitespace - (.*?) # Instruction continues up until... - (?: # ...an optional whitespace+argument group - \s+ # first whitespace. - (.*) # The argument is all the rest (newlines included). - )?$ # anchor at end-of-line - }sx; - if (defined($arg)) { - if ($arg =~ s/^0x(?=[0-9a-fA-F]+$)//) { - $arg = hex($arg); - } elsif ($arg =~ s/^0(?=[0-7]+$)//) { - $arg = oct($arg); - } elsif ($arg =~ /^pp_/) { - $arg =~ s/\s*$//; # strip trailing whitespace - my $opnum = $opnumber{$arg}; - if (defined($opnum)) { - $arg = $opnum; - } else { - error qq(No such op type "$arg"); - $arg = 0; - } - } - } - return ($insn, $arg); -} - -sub assemble_insn { - my ($insn, $arg) = @_; - my $data = $insn_data{$insn}; - if (defined($data)) { - my ($bytecode, $putsub) = @{$data}[0, 1]; - my $argcode = &$putsub($arg); - return chr($bytecode).$argcode; - } else { - error qq(no such instruction "$insn"); - return ""; - } -} - -sub assemble_fh { - my ($fh, $out) = @_; - my $line; - my $asm = newasm($out); - while ($line = <$fh>) { - assemble($line); - } - endasm(); -} - -sub newasm { - my($outsub) = @_; - - die "Invalid printing routine for B::Assembler\n" unless ref $outsub eq 'CODE'; - die <<EOD if ref $out; -Can't have multiple byteassembly sessions at once! - (perhaps you forgot an endasm()?) -EOD - - $linenum = $errors = 0; - $out = $outsub; - - $out->(gen_header()); -} - -sub endasm { - if ($errors) { - die "There were $errors assembly errors\n"; - } - $linenum = $errors = $out = 0; -} - -sub assemble { - my($line) = @_; - my ($insn, $arg); - $linenum++; - chomp $line; - if ($debug) { - my $quotedline = $line; - $quotedline =~ s/\\/\\\\/g; - $quotedline =~ s/"/\\"/g; - $out->(assemble_insn("comment", qq("$quotedline"))); - } - if( $line = strip_comments($line) ){ - ($insn, $arg) = parse_statement($line); - $out->(assemble_insn($insn, $arg)); - if ($debug) { - $out->(assemble_insn("nop", undef)); - } - } -} - -### temporary workaround - -sub asm { - return if $_[0] =~ /\s*\W/; - if (defined $_[1]) { - return if $_[1] eq "0" and - $_[0] !~ /^(?:newsvx?|av_pushx?|av_extend|xav_flags)$/; - return if $_[1] eq "1" and $_[0] =~ /^(?:sv_refcnt)$/; - } - assemble "@_"; -} - -1; - -__END__ - -=head1 NAME - -B::Assembler - Assemble Perl bytecode - -=head1 SYNOPSIS - - use B::Assembler qw(newasm endasm assemble); - newasm(\&printsub); # sets up for assembly - assemble($buf); # assembles one line - endasm(); # closes down - - use B::Assembler qw(assemble_fh); - assemble_fh($fh, \&printsub); # assemble everything in $fh - -=head1 DESCRIPTION - -See F<ext/B/B/Assembler.pm>. - -=head1 AUTHORS - -Malcolm Beattie, C<mbeattie@sable.ox.ac.uk> -Per-statement interface by Benjamin Stuhl, C<sho_pi@hotmail.com> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/B/Bblock.pm b/Master/tlpkg/tlperl.old/lib/B/Bblock.pm deleted file mode 100644 index 9566d125aaa..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Bblock.pm +++ /dev/null @@ -1,224 +0,0 @@ -package B::Bblock; - -our $VERSION = '1.02_01'; - -use Exporter (); -@ISA = "Exporter"; -@EXPORT_OK = qw(find_leaders); - -use B qw(peekop walkoptree walkoptree_exec - main_root main_start svref_2object - OPf_SPECIAL OPf_STACKED ); - -use B::Concise qw(concise_cv concise_main set_style_standard); -use strict; - -my $bblock; -my @bblock_ends; - -sub mark_leader { - my $op = shift; - if ($$op) { - $bblock->{$$op} = $op; - } -} - -sub remove_sortblock{ - foreach (keys %$bblock){ - my $leader=$$bblock{$_}; - delete $$bblock{$_} if( $leader == 0); - } -} -sub find_leaders { - my ($root, $start) = @_; - $bblock = {}; - mark_leader($start) if ( ref $start ne "B::NULL" ); - walkoptree($root, "mark_if_leader") if ((ref $root) ne "B::NULL") ; - remove_sortblock(); - return $bblock; -} - -# Debugging -sub walk_bblocks { - my ($root, $start) = @_; - my ($op, $lastop, $leader, $bb); - $bblock = {}; - mark_leader($start); - walkoptree($root, "mark_if_leader"); - my @leaders = values %$bblock; - while ($leader = shift @leaders) { - $lastop = $leader; - $op = $leader->next; - while ($$op && !exists($bblock->{$$op})) { - $bblock->{$$op} = $leader; - $lastop = $op; - $op = $op->next; - } - push(@bblock_ends, [$leader, $lastop]); - } - foreach $bb (@bblock_ends) { - ($leader, $lastop) = @$bb; - printf "%s .. %s\n", peekop($leader), peekop($lastop); - for ($op = $leader; $$op != $$lastop; $op = $op->next) { - printf " %s\n", peekop($op); - } - printf " %s\n", peekop($lastop); - } -} - -sub walk_bblocks_obj { - my $cvref = shift; - my $cv = svref_2object($cvref); - walk_bblocks($cv->ROOT, $cv->START); -} - -sub B::OP::mark_if_leader {} - -sub B::COP::mark_if_leader { - my $op = shift; - if ($op->label) { - mark_leader($op); - } -} - -sub B::LOOP::mark_if_leader { - my $op = shift; - mark_leader($op->next); - mark_leader($op->nextop); - mark_leader($op->redoop); - mark_leader($op->lastop->next); -} - -sub B::LOGOP::mark_if_leader { - my $op = shift; - my $opname = $op->name; - mark_leader($op->next); - if ($opname eq "entertry") { - mark_leader($op->other->next); - } else { - mark_leader($op->other); - } -} - -sub B::LISTOP::mark_if_leader { - my $op = shift; - my $first=$op->first; - $first=$first->next while ($first->name eq "null"); - mark_leader($op->first) unless (exists( $bblock->{$$first})); - mark_leader($op->next); - if ($op->name eq "sort" and $op->flags & OPf_SPECIAL - and $op->flags & OPf_STACKED){ - my $root=$op->first->sibling->first; - my $leader=$root->first; - $bblock->{$$leader} = 0; - } -} - -sub B::PMOP::mark_if_leader { - my $op = shift; - if ($op->name ne "pushre") { - my $replroot = $op->pmreplroot; - if ($$replroot) { - mark_leader($replroot); - mark_leader($op->next); - mark_leader($op->pmreplstart); - } - } -} - -# PMOP stuff omitted - -sub compile { - my @options = @_; - B::clearsym(); - if (@options) { - return sub { - my $objname; - foreach $objname (@options) { - $objname = "main::$objname" unless $objname =~ /::/; - eval "walk_bblocks_obj(\\&$objname)"; - die "walk_bblocks_obj(\\&$objname) failed: $@" if $@; - print "-------\n"; - set_style_standard("terse"); - eval "concise_cv('exec', \\&$objname)"; - die "concise_cv('exec', \\&$objname) failed: $@" if $@; - } - } - } else { - return sub { - walk_bblocks(main_root, main_start); - print "-------\n"; - set_style_standard("terse"); - concise_main("exec"); - }; - } -} - -# Basic block leaders: -# Any COP (pp_nextstate) with a non-NULL label -# [The op after a pp_enter] Omit -# [The op after a pp_entersub. Don't count this one.] -# The ops pointed at by nextop, redoop and lastop->op_next of a LOOP -# The ops pointed at by op_next and op_other of a LOGOP, except -# for pp_entertry which has op_next and op_other->op_next -# The op pointed at by op_pmreplstart of a PMOP -# The op pointed at by op_other->op_pmreplstart of pp_substcont? -# [The op after a pp_return] Omit - -1; - -__END__ - -=head1 NAME - -B::Bblock - Walk basic blocks - -=head1 SYNOPSIS - - # External interface - perl -MO=Bblock[,OPTIONS] foo.pl - - # Programmatic API - use B::Bblock qw(find_leaders); - my $leaders = find_leaders($root_op, $start_op); - -=head1 DESCRIPTION - -This module is used by the B::CC back end. It walks "basic blocks". -A basic block is a series of operations which is known to execute from -start to finish, with no possibility of branching or halting. - -It can be used either stand alone or from inside another program. - -=for _private -Somebody who understands the stand-alone options document them, please. - -=head2 Functions - -=over 4 - -=item B<find_leaders> - - my $leaders = find_leaders($root_op, $start_op); - -Given the root of the op tree and an op from which to start -processing, it will return a hash ref representing all the ops which -start a block. - -=for _private -The above description may be somewhat wrong. - -The values of %$leaders are the op objects themselves. Keys are $$op -addresses. - -=for _private -Above cribbed from B::CC's comments. What's a $$op address? - -=back - - -=head1 AUTHOR - -Malcolm Beattie, C<mbeattie@sable.ox.ac.uk> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/B/Bytecode.pm b/Master/tlpkg/tlperl.old/lib/B/Bytecode.pm deleted file mode 100644 index 250569ae57b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Bytecode.pm +++ /dev/null @@ -1,889 +0,0 @@ -# B::Bytecode.pm -# Copyright (c) 2003 Enache Adrian. All rights reserved. -# This module is free software; you can redistribute and/or modify -# it under the same terms as Perl itself. - -# Based on the original Bytecode.pm module written by Malcolm Beattie. - -package B::Bytecode; - -our $VERSION = '1.01_01'; - -use strict; -use Config; -use B qw(class main_cv main_root main_start cstring comppadlist - defstash curstash begin_av init_av end_av inc_gv warnhook diehook - dowarn SVt_PVGV SVt_PVHV OPf_SPECIAL OPf_STACKED OPf_MOD - OPpLVAL_INTRO SVf_FAKE SVf_READONLY); -use B::Asmdata qw(@specialsv_name); -use B::Assembler qw(asm newasm endasm); - -################################################# - -my ($varix, $opix, $savebegins, %walked, %files, @cloop); -my %strtab = (0,0); -my %svtab = (0,0); -my %optab = (0,0); -my %spectab = (0,0); -my $tix = 1; -sub asm; -sub nice ($) { } - -BEGIN { - my $ithreads = $Config{'useithreads'} eq 'define'; - eval qq{ - sub ITHREADS() { $ithreads } - sub VERSION() { $] } - }; die $@ if $@; -} - -################################################# - -sub pvstring { - my $pv = shift; - defined($pv) ? cstring ($pv."\0") : "\"\""; -} - -sub pvix { - my $str = pvstring shift; - my $ix = $strtab{$str}; - defined($ix) ? $ix : do { - asm "newpv", $str; - asm "stpv", $strtab{$str} = $tix; - $tix++; - } -} - -sub B::OP::ix { - my $op = shift; - my $ix = $optab{$$op}; - defined($ix) ? $ix : do { - nice "[".$op->name." $tix]"; - asm "newopx", $op->size | $op->type <<7; - $optab{$$op} = $opix = $ix = $tix++; - $op->bsave($ix); - $ix; - } -} - -sub B::SPECIAL::ix { - my $spec = shift; - my $ix = $spectab{$$spec}; - defined($ix) ? $ix : do { - nice '['.$specialsv_name[$$spec].']'; - asm "ldspecsvx", $$spec; - $spectab{$$spec} = $varix = $tix++; - } -} - -sub B::SV::ix { - my $sv = shift; - my $ix = $svtab{$$sv}; - defined($ix) ? $ix : do { - nice '['.class($sv).']'; - asm "newsvx", $sv->FLAGS; - $svtab{$$sv} = $varix = $ix = $tix++; - $sv->bsave($ix); - $ix; - } -} - -sub B::GV::ix { - my ($gv,$desired) = @_; - my $ix = $svtab{$$gv}; - defined($ix) ? $ix : do { - if ($gv->GP) { - my ($svix, $avix, $hvix, $cvix, $ioix, $formix); - nice "[GV]"; - my $name = $gv->STASH->NAME . "::" . $gv->NAME; - asm "gv_fetchpvx", cstring $name; - $svtab{$$gv} = $varix = $ix = $tix++; - asm "sv_flags", $gv->FLAGS; - asm "sv_refcnt", $gv->REFCNT; - asm "xgv_flags", $gv->GvFLAGS; - - asm "gp_refcnt", $gv->GvREFCNT; - asm "load_glob", $ix if $name eq "CORE::GLOBAL::glob"; - return $ix - unless $desired || desired $gv; - $svix = $gv->SV->ix; - $avix = $gv->AV->ix; - $hvix = $gv->HV->ix; - - # XXX {{{{ - my $cv = $gv->CV; - $cvix = $$cv && defined $files{$cv->FILE} ? $cv->ix : 0; - my $form = $gv->FORM; - $formix = $$form && defined $files{$form->FILE} ? $form->ix : 0; - - $ioix = $name !~ /STDOUT$/ ? $gv->IO->ix : 0; - # }}}} XXX - - nice "-GV-", - asm "ldsv", $varix = $ix unless $ix == $varix; - asm "gp_sv", $svix; - asm "gp_av", $avix; - asm "gp_hv", $hvix; - asm "gp_cv", $cvix; - asm "gp_io", $ioix; - asm "gp_cvgen", $gv->CVGEN; - asm "gp_form", $formix; - asm "gp_file", pvix $gv->FILE; - asm "gp_line", $gv->LINE; - asm "formfeed", $svix if $name eq "main::\cL"; - } else { - nice "[GV]"; - asm "newsvx", $gv->FLAGS; - $svtab{$$gv} = $varix = $ix = $tix++; - my $stashix = $gv->STASH->ix; - $gv->B::PVMG::bsave($ix); - asm "xgv_flags", $gv->GvFLAGS; - asm "xgv_stash", $stashix; - } - $ix; - } -} - -sub B::HV::ix { - my $hv = shift; - my $ix = $svtab{$$hv}; - defined($ix) ? $ix : do { - my ($ix,$i,@array); - my $name = $hv->NAME; - if ($name) { - nice "[STASH]"; - asm "gv_stashpvx", cstring $name; - asm "sv_flags", $hv->FLAGS; - $svtab{$$hv} = $varix = $ix = $tix++; - asm "xhv_name", pvix $name; - # my $pmrootix = $hv->PMROOT->ix; # XXX - asm "ldsv", $varix = $ix unless $ix == $varix; - # asm "xhv_pmroot", $pmrootix; # XXX - } else { - nice "[HV]"; - asm "newsvx", $hv->FLAGS; - $svtab{$$hv} = $varix = $ix = $tix++; - my $stashix = $hv->SvSTASH->ix; - for (@array = $hv->ARRAY) { - next if $i = not $i; - $_ = $_->ix; - } - nice "-HV-", - asm "ldsv", $varix = $ix unless $ix == $varix; - ($i = not $i) ? asm ("newpv", pvstring $_) : asm("hv_store", $_) - for @array; - if (VERSION < 5.009) { - asm "xnv", $hv->NVX; - } - asm "xmg_stash", $stashix; - asm "xhv_riter", $hv->RITER; - } - asm "sv_refcnt", $hv->REFCNT; - $ix; - } -} - -sub B::NULL::ix { - my $sv = shift; - $$sv ? $sv->B::SV::ix : 0; -} - -sub B::NULL::opwalk { 0 } - -################################################# - -sub B::NULL::bsave { - my ($sv,$ix) = @_; - - nice '-'.class($sv).'-', - asm "ldsv", $varix = $ix unless $ix == $varix; - asm "sv_refcnt", $sv->REFCNT; -} - -sub B::SV::bsave; - *B::SV::bsave = *B::NULL::bsave; - -sub B::RV::bsave { - my ($sv,$ix) = @_; - my $rvix = $sv->RV->ix; - $sv->B::NULL::bsave($ix); - asm "xrv", $rvix; -} - -sub B::PV::bsave { - my ($sv,$ix) = @_; - $sv->B::NULL::bsave($ix); - asm "newpv", pvstring $sv->PVBM; - asm "xpv"; -} - -sub B::IV::bsave { - my ($sv,$ix) = @_; - $sv->B::NULL::bsave($ix); - asm "xiv", $sv->IVX; -} - -sub B::NV::bsave { - my ($sv,$ix) = @_; - $sv->B::NULL::bsave($ix); - asm "xnv", sprintf "%.40g", $sv->NVX; -} - -sub B::PVIV::bsave { - my ($sv,$ix) = @_; - $sv->POK ? - $sv->B::PV::bsave($ix): - $sv->ROK ? - $sv->B::RV::bsave($ix): - $sv->B::NULL::bsave($ix); - if (VERSION >= 5.009) { - # See note below in B::PVNV::bsave - return if $sv->isa('B::AV'); - return if $sv->isa('B::HV'); - } - asm "xiv", !ITHREADS && $sv->FLAGS & (SVf_FAKE|SVf_READONLY) ? - "0 but true" : $sv->IVX; -} - -sub B::PVNV::bsave { - my ($sv,$ix) = @_; - $sv->B::PVIV::bsave($ix); - if (VERSION >= 5.009) { - # Magical AVs end up here, but AVs now don't have an NV slot actually - # allocated. Hence don't write out assembly to store the NV slot if - # we're actually an array. - return if $sv->isa('B::AV'); - # Likewise HVs have no NV slot actually allocated. - # I don't think that they can get here, but better safe than sorry - return if $sv->isa('B::HV'); - } - asm "xnv", sprintf "%.40g", $sv->NVX; -} - -sub B::PVMG::domagic { - my ($sv,$ix) = @_; - nice '-MAGICAL-'; - my @mglist = $sv->MAGIC; - my (@mgix, @namix); - for (@mglist) { - push @mgix, $_->OBJ->ix; - push @namix, $_->PTR->ix if $_->LENGTH == B::HEf_SVKEY; - } - - nice '-'.class($sv).'-', - asm "ldsv", $varix = $ix unless $ix == $varix; - for (@mglist) { - asm "sv_magic", cstring $_->TYPE; - asm "mg_obj", shift @mgix; - my $length = $_->LENGTH; - if ($length == B::HEf_SVKEY) { - asm "mg_namex", shift @namix; - } elsif ($length) { - asm "newpv", pvstring $_->PTR; - asm "mg_name"; - } - } -} - -sub B::PVMG::bsave { - my ($sv,$ix) = @_; - my $stashix = $sv->SvSTASH->ix; - $sv->B::PVNV::bsave($ix); - asm "xmg_stash", $stashix; - $sv->domagic($ix) if $sv->MAGICAL; -} - -sub B::PVLV::bsave { - my ($sv,$ix) = @_; - my $targix = $sv->TARG->ix; - $sv->B::PVMG::bsave($ix); - asm "xlv_targ", $targix; - asm "xlv_targoff", $sv->TARGOFF; - asm "xlv_targlen", $sv->TARGLEN; - asm "xlv_type", $sv->TYPE; - -} - -sub B::BM::bsave { - my ($sv,$ix) = @_; - $sv->B::PVMG::bsave($ix); - asm "xpv_cur", $sv->CUR; - asm "xbm_useful", $sv->USEFUL; - asm "xbm_previous", $sv->PREVIOUS; - asm "xbm_rare", $sv->RARE; -} - -sub B::IO::bsave { - my ($io,$ix) = @_; - my $topix = $io->TOP_GV->ix; - my $fmtix = $io->FMT_GV->ix; - my $bottomix = $io->BOTTOM_GV->ix; - $io->B::PVMG::bsave($ix); - asm "xio_lines", $io->LINES; - asm "xio_page", $io->PAGE; - asm "xio_page_len", $io->PAGE_LEN; - asm "xio_lines_left", $io->LINES_LEFT; - asm "xio_top_name", pvix $io->TOP_NAME; - asm "xio_top_gv", $topix; - asm "xio_fmt_name", pvix $io->FMT_NAME; - asm "xio_fmt_gv", $fmtix; - asm "xio_bottom_name", pvix $io->BOTTOM_NAME; - asm "xio_bottom_gv", $bottomix; - asm "xio_subprocess", $io->SUBPROCESS; - asm "xio_type", ord $io->IoTYPE; - # asm "xio_flags", ord($io->IoFLAGS) & ~32; # XXX XXX -} - -sub B::CV::bsave { - my ($cv,$ix) = @_; - my $stashix = $cv->STASH->ix; - my $gvix = $cv->GV->ix; - my $padlistix = $cv->PADLIST->ix; - my $outsideix = $cv->OUTSIDE->ix; - my $constix = $cv->CONST ? $cv->XSUBANY->ix : 0; - my $startix = $cv->START->opwalk; - my $rootix = $cv->ROOT->ix; - - $cv->B::PVMG::bsave($ix); - asm "xcv_stash", $stashix; - asm "xcv_start", $startix; - asm "xcv_root", $rootix; - asm "xcv_xsubany", $constix; - asm "xcv_gv", $gvix; - asm "xcv_file", pvix $cv->FILE if $cv->FILE; # XXX AD - asm "xcv_padlist", $padlistix; - asm "xcv_outside", $outsideix; - asm "xcv_flags", $cv->CvFLAGS; - asm "xcv_outside_seq", $cv->OUTSIDE_SEQ; - asm "xcv_depth", $cv->DEPTH; -} - -sub B::FM::bsave { - my ($form,$ix) = @_; - - $form->B::CV::bsave($ix); - asm "xfm_lines", $form->LINES; -} - -sub B::AV::bsave { - my ($av,$ix) = @_; - return $av->B::PVMG::bsave($ix) if $av->MAGICAL; - my @array = $av->ARRAY; - $_ = $_->ix for @array; - my $stashix = $av->SvSTASH->ix; - - nice "-AV-", - asm "ldsv", $varix = $ix unless $ix == $varix; - asm "av_extend", $av->MAX if $av->MAX >= 0; - asm "av_pushx", $_ for @array; - asm "sv_refcnt", $av->REFCNT; - if (VERSION < 5.009) { - asm "xav_flags", $av->AvFLAGS; - } - asm "xmg_stash", $stashix; -} - -sub B::GV::desired { - my $gv = shift; - my ($cv, $form); - $files{$gv->FILE} && $gv->LINE - || ${$cv = $gv->CV} && $files{$cv->FILE} - || ${$form = $gv->FORM} && $files{$form->FILE} -} - -sub B::HV::bwalk { - my $hv = shift; - return if $walked{$$hv}++; - my %stash = $hv->ARRAY; - while (my($k,$v) = each %stash) { - if ($v->SvTYPE == SVt_PVGV) { - my $hash = $v->HV; - if ($$hash && $hash->NAME) { - $hash->bwalk; - } - $v->ix(1) if desired $v; - } else { - nice "[prototype]"; - asm "gv_fetchpvx", cstring $hv->NAME . "::$k"; - $svtab{$$v} = $varix = $tix; - $v->bsave($tix++); - asm "sv_flags", $v->FLAGS; - } - } -} - -###################################################### - - -sub B::OP::bsave_thin { - my ($op, $ix) = @_; - my $next = $op->next; - my $nextix = $optab{$$next}; - $nextix = 0, push @cloop, $op unless defined $nextix; - if ($ix != $opix) { - nice '-'.$op->name.'-', - asm "ldop", $opix = $ix; - } - asm "op_next", $nextix; - asm "op_targ", $op->targ if $op->type; # tricky - asm "op_flags", $op->flags; - asm "op_private", $op->private; -} - -sub B::OP::bsave; - *B::OP::bsave = *B::OP::bsave_thin; - -sub B::UNOP::bsave { - my ($op, $ix) = @_; - my $name = $op->name; - my $flags = $op->flags; - my $first = $op->first; - my $firstix = - $name =~ /fl[io]p/ - # that's just neat - || (!ITHREADS && $name eq 'regcomp') - # trick for /$a/o in pp_regcomp - || $name eq 'rv2sv' - && $op->flags & OPf_MOD - && $op->private & OPpLVAL_INTRO - # change #18774 made my life hard - ? $first->ix - : 0; - - $op->B::OP::bsave($ix); - asm "op_first", $firstix; -} - -sub B::BINOP::bsave { - my ($op, $ix) = @_; - if ($op->name eq 'aassign' && $op->private & B::OPpASSIGN_HASH()) { - my $last = $op->last; - my $lastix = do { - local *B::OP::bsave = *B::OP::bsave_fat; - local *B::UNOP::bsave = *B::UNOP::bsave_fat; - $last->ix; - }; - asm "ldop", $lastix unless $lastix == $opix; - asm "op_targ", $last->targ; - $op->B::OP::bsave($ix); - asm "op_last", $lastix; - } else { - $op->B::OP::bsave($ix); - } -} - -# not needed if no pseudohashes - -*B::BINOP::bsave = *B::OP::bsave if VERSION >= 5.009; - -# deal with sort / formline - -sub B::LISTOP::bsave { - my ($op, $ix) = @_; - my $name = $op->name; - sub blocksort() { OPf_SPECIAL|OPf_STACKED } - if ($name eq 'sort' && ($op->flags & blocksort) == blocksort) { - my $first = $op->first; - my $pushmark = $first->sibling; - my $rvgv = $pushmark->first; - my $leave = $rvgv->first; - - my $leaveix = $leave->ix; - - my $rvgvix = $rvgv->ix; - asm "ldop", $rvgvix unless $rvgvix == $opix; - asm "op_first", $leaveix; - - my $pushmarkix = $pushmark->ix; - asm "ldop", $pushmarkix unless $pushmarkix == $opix; - asm "op_first", $rvgvix; - - my $firstix = $first->ix; - asm "ldop", $firstix unless $firstix == $opix; - asm "op_sibling", $pushmarkix; - - $op->B::OP::bsave($ix); - asm "op_first", $firstix; - } elsif ($name eq 'formline') { - $op->B::UNOP::bsave_fat($ix); - } else { - $op->B::OP::bsave($ix); - } -} - -# fat versions - -sub B::OP::bsave_fat { - my ($op, $ix) = @_; - my $siblix = $op->sibling->ix; - - $op->B::OP::bsave_thin($ix); - asm "op_sibling", $siblix; - # asm "op_seq", -1; XXX don't allocate OPs piece by piece -} - -sub B::UNOP::bsave_fat { - my ($op,$ix) = @_; - my $firstix = $op->first->ix; - - $op->B::OP::bsave($ix); - asm "op_first", $firstix; -} - -sub B::BINOP::bsave_fat { - my ($op,$ix) = @_; - my $last = $op->last; - my $lastix = $op->last->ix; - if (VERSION < 5.009 && $op->name eq 'aassign' && $last->name eq 'null') { - asm "ldop", $lastix unless $lastix == $opix; - asm "op_targ", $last->targ; - } - - $op->B::UNOP::bsave($ix); - asm "op_last", $lastix; -} - -sub B::LOGOP::bsave { - my ($op,$ix) = @_; - my $otherix = $op->other->ix; - - $op->B::UNOP::bsave($ix); - asm "op_other", $otherix; -} - -sub B::PMOP::bsave { - my ($op,$ix) = @_; - my ($rrop, $rrarg, $rstart); - - # my $pmnextix = $op->pmnext->ix; # XXX - - if (ITHREADS) { - if ($op->name eq 'subst') { - $rrop = "op_pmreplroot"; - $rrarg = $op->pmreplroot->ix; - $rstart = $op->pmreplstart->ix; - } elsif ($op->name eq 'pushre') { - $rrop = "op_pmreplrootpo"; - $rrarg = $op->pmreplroot; - } - $op->B::BINOP::bsave($ix); - asm "op_pmstashpv", pvix $op->pmstashpv; - } else { - $rrop = "op_pmreplrootgv"; - $rrarg = $op->pmreplroot->ix; - $rstart = $op->pmreplstart->ix if $op->name eq 'subst'; - my $stashix = $op->pmstash->ix; - $op->B::BINOP::bsave($ix); - asm "op_pmstash", $stashix; - } - - asm $rrop, $rrarg if $rrop; - asm "op_pmreplstart", $rstart if $rstart; - - asm "op_pmflags", $op->pmflags; - asm "op_pmpermflags", $op->pmpermflags; - asm "op_pmdynflags", $op->pmdynflags; - # asm "op_pmnext", $pmnextix; # XXX - asm "newpv", pvstring $op->precomp; - asm "pregcomp"; -} - -sub B::SVOP::bsave { - my ($op,$ix) = @_; - my $svix = $op->sv->ix; - - $op->B::OP::bsave($ix); - asm "op_sv", $svix; -} - -sub B::PADOP::bsave { - my ($op,$ix) = @_; - - $op->B::OP::bsave($ix); - asm "op_padix", $op->padix; -} - -sub B::PVOP::bsave { - my ($op,$ix) = @_; - $op->B::OP::bsave($ix); - return unless my $pv = $op->pv; - - if ($op->name eq 'trans') { - asm "op_pv_tr", join ',', length($pv)/2, unpack("s*", $pv); - } else { - asm "newpv", pvstring $pv; - asm "op_pv"; - } -} - -sub B::LOOP::bsave { - my ($op,$ix) = @_; - my $nextix = $op->nextop->ix; - my $lastix = $op->lastop->ix; - my $redoix = $op->redoop->ix; - - $op->B::BINOP::bsave($ix); - asm "op_redoop", $redoix; - asm "op_nextop", $nextix; - asm "op_lastop", $lastix; -} - -sub B::COP::bsave { - my ($cop,$ix) = @_; - my $warnix = $cop->warnings->ix; - my $ioix = $cop->io->ix; - if (ITHREADS) { - $cop->B::OP::bsave($ix); - asm "cop_stashpv", pvix $cop->stashpv; - asm "cop_file", pvix $cop->file; - } else { - my $stashix = $cop->stash->ix; - my $fileix = $cop->filegv->ix(1); - $cop->B::OP::bsave($ix); - asm "cop_stash", $stashix; - asm "cop_filegv", $fileix; - } - asm "cop_label", pvix $cop->label if $cop->label; # XXX AD - asm "cop_seq", $cop->cop_seq; - asm "cop_arybase", $cop->arybase; - asm "cop_line", $cop->line; - asm "cop_warnings", $warnix; - asm "cop_io", $ioix; -} - -sub B::OP::opwalk { - my $op = shift; - my $ix = $optab{$$op}; - defined($ix) ? $ix : do { - my $ix; - my @oplist = $op->oplist; - push @cloop, undef; - $ix = $_->ix while $_ = pop @oplist; - while ($_ = pop @cloop) { - asm "ldop", $optab{$$_}; - asm "op_next", $optab{${$_->next}}; - } - $ix; - } -} - -################################################# - -sub save_cq { - my $av; - if (($av=begin_av)->isa("B::AV")) { - if ($savebegins) { - for ($av->ARRAY) { - next unless $_->FILE eq $0; - asm "push_begin", $_->ix; - } - } else { - for ($av->ARRAY) { - next unless $_->FILE eq $0; - # XXX BEGIN { goto A while 1; A: } - for (my $op = $_->START; $$op; $op = $op->next) { - next unless $op->name eq 'require' || - # this kludge needed for tests - $op->name eq 'gv' && do { - my $gv = class($op) eq 'SVOP' ? - $op->gv : - (($_->PADLIST->ARRAY)[1]->ARRAY)[$op->padix]; - $$gv && $gv->NAME =~ /use_ok|plan/ - }; - asm "push_begin", $_->ix; - last; - } - } - } - } - if (($av=init_av)->isa("B::AV")) { - for ($av->ARRAY) { - next unless $_->FILE eq $0; - asm "push_init", $_->ix; - } - } - if (($av=end_av)->isa("B::AV")) { - for ($av->ARRAY) { - next unless $_->FILE eq $0; - asm "push_end", $_->ix; - } - } -} - -sub compile { - my ($head, $scan, $T_inhinc, $keep_syn); - my $cwd = ''; - $files{$0} = 1; - sub keep_syn { - $keep_syn = 1; - *B::OP::bsave = *B::OP::bsave_fat; - *B::UNOP::bsave = *B::UNOP::bsave_fat; - *B::BINOP::bsave = *B::BINOP::bsave_fat; - *B::LISTOP::bsave = *B::LISTOP::bsave_fat; - } - sub bwarn { print STDERR "Bytecode.pm: @_\n" } - - for (@_) { - if (/^-S/) { - *newasm = *endasm = sub { }; - *asm = sub { print " @_\n" }; - *nice = sub ($) { print "\n@_\n" }; - } elsif (/^-H/) { - require ByteLoader; - $head = "#! $^X\nuse ByteLoader $ByteLoader::VERSION;\n"; - } elsif (/^-k/) { - keep_syn; - } elsif (/^-o(.*)$/) { - open STDOUT, ">$1" or die "open $1: $!"; - } elsif (/^-f(.*)$/) { - $files{$1} = 1; - } elsif (/^-s(.*)$/) { - $scan = length($1) ? $1 : $0; - } elsif (/^-b/) { - $savebegins = 1; - # this is here for the testsuite - } elsif (/^-TI/) { - $T_inhinc = 1; - } elsif (/^-TF(.*)/) { - my $thatfile = $1; - *B::COP::file = sub { $thatfile }; - } else { - bwarn "Ignoring '$_' option"; - } - } - if ($scan) { - my $f; - if (open $f, $scan) { - while (<$f>) { - /^#\s*line\s+\d+\s+("?)(.*)\1/ and $files{$2} = 1; - /^#/ and next; - if (/\bgoto\b\s*[^&]/ && !$keep_syn) { - bwarn "keeping the syntax tree: \"goto\" op found"; - keep_syn; - } - } - } else { - bwarn "cannot rescan '$scan'"; - } - close $f; - } - binmode STDOUT; - return sub { - print $head if $head; - newasm sub { print @_ }; - - defstash->bwalk; - asm "main_start", main_start->opwalk; - asm "main_root", main_root->ix; - asm "main_cv", main_cv->ix; - asm "curpad", (comppadlist->ARRAY)[1]->ix; - - asm "signal", cstring "__WARN__" # XXX - if warnhook->ix; - asm "incav", inc_gv->AV->ix if $T_inhinc; - save_cq; - asm "incav", inc_gv->AV->ix if $T_inhinc; - asm "dowarn", dowarn; - - { - no strict 'refs'; - nice "<DATA>"; - my $dh = *{defstash->NAME."::DATA"}; - unless (eof $dh) { - local undef $/; - asm "data", ord 'D'; - print <$dh>; - } else { - asm "ret"; - } - } - - endasm; - } -} - -1; - -=head1 NAME - -B::Bytecode - Perl compiler's bytecode backend - -=head1 SYNOPSIS - -B<perl -MO=Bytecode>[B<,-H>][B<,-o>I<script.plc>] I<script.pl> - -=head1 DESCRIPTION - -Compiles a Perl script into a bytecode format that could be loaded -later by the ByteLoader module and executed as a regular Perl script. - -=head1 EXAMPLE - - $ perl -MO=Bytecode,-H,-ohi -e 'print "hi!\n"' - $ perl hi - hi! - -=head1 OPTIONS - -=over 4 - -=item B<-b> - -Save all the BEGIN blocks. Normally only BEGIN blocks that C<require> -other files (ex. C<use Foo;>) are saved. - -=item B<-H> - -prepend a C<use ByteLoader VERSION;> line to the produced bytecode. - -=item B<-k> - -keep the syntax tree - it is stripped by default. - -=item B<-o>I<outfile> - -put the bytecode in <outfile> instead of dumping it to STDOUT. - -=item B<-s> - -scan the script for C<# line ..> directives and for <goto LABEL> -expressions. When gotos are found keep the syntax tree. - -=back - -=head1 KNOWN BUGS - -=over 4 - -=item * - -C<BEGIN { goto A: while 1; A: }> won't even compile. - -=item * - -C<?...?> and C<reset> do not work as expected. - -=item * - -variables in C<(?{ ... })> constructs are not properly scoped. - -=item * - -scripts that use source filters will fail miserably. - -=back - -=head1 NOTICE - -There are also undocumented bugs and options. - -THIS CODE IS HIGHLY EXPERIMENTAL. USE AT YOUR OWN RISK. - -=head1 AUTHORS - -Originally written by Malcolm Beattie <mbeattie@sable.ox.ac.uk> and -modified by Benjamin Stuhl <sho_pi@hotmail.com>. - -Rewritten by Enache Adrian <enache@rdslink.ro>, 2003 a.d. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/B/C.pm b/Master/tlpkg/tlperl.old/lib/B/C.pm deleted file mode 100644 index cebf4132ffd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/C.pm +++ /dev/null @@ -1,2272 +0,0 @@ -# C.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::C; - -our $VERSION = '1.04_01'; - -package B::C::Section; - -use B (); -use base B::Section; - -sub new -{ - my $class = shift; - my $o = $class->SUPER::new(@_); - push @$o, { values => [] }; - return $o; -} - -sub add -{ - my $section = shift; - push(@{$section->[-1]{values}},@_); -} - -sub index -{ - my $section = shift; - return scalar(@{$section->[-1]{values}})-1; -} - -sub output -{ - my ($section, $fh, $format) = @_; - my $sym = $section->symtable || {}; - my $default = $section->default; - my $i; - foreach (@{$section->[-1]{values}}) - { - s{(s\\_[0-9a-f]+)}{ exists($sym->{$1}) ? $sym->{$1} : $default; }ge; - printf $fh $format, $_, $i; - ++$i; - } -} - -package B::C::InitSection; - -# avoid use vars -@B::C::InitSection::ISA = qw(B::C::Section); - -sub new { - my $class = shift; - my $max_lines = 10000; #pop; - my $section = $class->SUPER::new( @_ ); - - $section->[-1]{evals} = []; - $section->[-1]{chunks} = []; - $section->[-1]{nosplit} = 0; - $section->[-1]{current} = []; - $section->[-1]{count} = 0; - $section->[-1]{max_lines} = $max_lines; - - return $section; -} - -sub split { - my $section = shift; - $section->[-1]{nosplit}-- - if $section->[-1]{nosplit} > 0; -} - -sub no_split { - shift->[-1]{nosplit}++; -} - -sub inc_count { - my $section = shift; - - $section->[-1]{count} += $_[0]; - # this is cheating - $section->add(); -} - -sub add { - my $section = shift->[-1]; - my $current = $section->{current}; - my $nosplit = $section->{nosplit}; - - push @$current, @_; - $section->{count} += scalar(@_); - if( !$nosplit && $section->{count} >= $section->{max_lines} ) { - push @{$section->{chunks}}, $current; - $section->{current} = []; - $section->{count} = 0; - } -} - -sub add_eval { - my $section = shift; - my @strings = @_; - - foreach my $i ( @strings ) { - $i =~ s/\"/\\\"/g; - } - push @{$section->[-1]{evals}}, @strings; -} - -sub output { - my( $section, $fh, $format, $init_name ) = @_; - my $sym = $section->symtable || {}; - my $default = $section->default; - push @{$section->[-1]{chunks}}, $section->[-1]{current}; - - my $name = "aaaa"; - foreach my $i ( @{$section->[-1]{chunks}} ) { - print $fh <<"EOT"; -static int perl_init_${name}() -{ - dTARG; - dSP; -EOT - foreach my $j ( @$i ) { - $j =~ s{(s\\_[0-9a-f]+)} - { exists($sym->{$1}) ? $sym->{$1} : $default; }ge; - print $fh "\t$j\n"; - } - print $fh "\treturn 0;\n}\n"; - - $section->SUPER::add( "perl_init_${name}();" ); - ++$name; - } - foreach my $i ( @{$section->[-1]{evals}} ) { - $section->SUPER::add( sprintf q{eval_pv("%s",1);}, $i ); - } - - print $fh <<"EOT"; -static int ${init_name}() -{ - dTARG; - dSP; -EOT - $section->SUPER::output( $fh, $format ); - print $fh "\treturn 0;\n}\n"; -} - - -package B::C; -use Exporter (); -our %REGEXP; - -{ # block necessary for caller to work - my $caller = caller; - if( $caller eq 'O' ) { - require XSLoader; - XSLoader::load( 'B::C' ); - } -} - -@ISA = qw(Exporter); -@EXPORT_OK = qw(output_all output_boilerplate output_main mark_unused - init_sections set_callback save_unused_subs objsym save_context); - -use B qw(minus_c sv_undef walkoptree walksymtable main_root main_start peekop - class cstring cchar svref_2object compile_stats comppadlist hash - threadsv_names main_cv init_av end_av regex_padav opnumber amagic_generation - HEf_SVKEY SVf_POK SVf_ROK CVf_CONST); -use B::Asmdata qw(@specialsv_name); - -use FileHandle; -use Carp; -use strict; -use Config; - -my $hv_index = 0; -my $gv_index = 0; -my $re_index = 0; -my $pv_index = 0; -my $cv_index = 0; -my $anonsub_index = 0; -my $initsub_index = 0; - -my %symtable; -my %xsub; -my $warn_undefined_syms; -my $verbose; -my %unused_sub_packages; -my $use_xsloader; -my $nullop_count; -my $pv_copy_on_grow = 0; -my $optimize_ppaddr = 0; -my $optimize_warn_sv = 0; -my $use_perl_script_name = 0; -my $save_data_fh = 0; -my $save_sig = 0; -my ($debug_cops, $debug_av, $debug_cv, $debug_mg); -my $max_string_len; - -my $ithreads = $Config{useithreads} eq 'define'; - -my @threadsv_names; -BEGIN { - @threadsv_names = threadsv_names(); -} - -# Code sections -my ($init, $decl, $symsect, $binopsect, $condopsect, $copsect, - $padopsect, $listopsect, $logopsect, $loopsect, $opsect, $pmopsect, - $pvopsect, $svopsect, $unopsect, $svsect, $xpvsect, $xpvavsect, - $xpvhvsect, $xpvcvsect, $xpvivsect, $xpvnvsect, $xpvmgsect, $xpvlvsect, - $xrvsect, $xpvbmsect, $xpviosect ); -my @op_sections = \( $binopsect, $condopsect, $copsect, $padopsect, $listopsect, - $logopsect, $loopsect, $opsect, $pmopsect, $pvopsect, $svopsect, - $unopsect ); - -sub walk_and_save_optree; -my $saveoptree_callback = \&walk_and_save_optree; -sub set_callback { $saveoptree_callback = shift } -sub saveoptree { &$saveoptree_callback(@_) } - -sub walk_and_save_optree { - my ($name, $root, $start) = @_; - walkoptree($root, "save"); - return objsym($start); -} - -# Look this up here so we can do just a number compare -# rather than looking up the name of every BASEOP in B::OP -my $OP_THREADSV = opnumber('threadsv'); - -sub savesym { - my ($obj, $value) = @_; - my $sym = sprintf("s\\_%x", $$obj); - $symtable{$sym} = $value; -} - -sub objsym { - my $obj = shift; - return $symtable{sprintf("s\\_%x", $$obj)}; -} - -sub getsym { - my $sym = shift; - my $value; - - return 0 if $sym eq "sym_0"; # special case - $value = $symtable{$sym}; - if (defined($value)) { - return $value; - } else { - warn "warning: undefined symbol $sym\n" if $warn_undefined_syms; - return "UNUSED"; - } -} - -sub savere { - my $re = shift; - my $sym = sprintf("re%d", $re_index++); - $decl->add(sprintf("static char *$sym = %s;", cstring($re))); - - return ($sym,length(pack "a*",$re)); -} - -sub savepv { - my $pv = pack "a*", shift; - my $pvsym = 0; - my $pvmax = 0; - if ($pv_copy_on_grow) { - $pvsym = sprintf("pv%d", $pv_index++); - - if( defined $max_string_len && length($pv) > $max_string_len ) { - my $chars = join ', ', map { cchar $_ } split //, $pv; - $decl->add(sprintf("static char %s[] = { %s };", $pvsym, $chars)); - } - else { - my $cstring = cstring($pv); - if ($cstring ne "0") { # sic - $decl->add(sprintf("static char %s[] = %s;", - $pvsym, $cstring)); - } - } - } else { - $pvmax = length(pack "a*",$pv) + 1; - } - return ($pvsym, $pvmax); -} - -sub save_rv { - my $sv = shift; -# confess "Can't save RV: not ROK" unless $sv->FLAGS & SVf_ROK; - my $rv = $sv->RV->save; - - $rv =~ s/^\(([AGHS]V|IO)\s*\*\)\s*(\&sv_list.*)$/$2/; - - return $rv; -} - -# savesym, pvmax, len, pv -sub save_pv_or_rv { - my $sv = shift; - - my $rok = $sv->FLAGS & SVf_ROK; - my $pok = $sv->FLAGS & SVf_POK; - my( $len, $pvmax, $savesym, $pv ) = ( 0, 0 ); - if( $rok ) { - $savesym = '(char*)' . save_rv( $sv ); - } - else { - $pv = $pok ? (pack "a*", $sv->PV) : undef; - $len = $pok ? length($pv) : 0; - ($savesym, $pvmax) = $pok ? savepv($pv) : ( 'NULL', 0 ); - } - - return ( $savesym, $pvmax, $len, $pv ); -} - -# see also init_op_ppaddr below; initializes the ppaddt to the -# OpTYPE; init_op_ppaddr iterates over the ops and sets -# op_ppaddr to PL_ppaddr[op_ppaddr]; this avoids an explicit assignmente -# in perl_init ( ~10 bytes/op with GCC/i386 ) -sub B::OP::fake_ppaddr { - return $optimize_ppaddr ? - sprintf("INT2PTR(void*,OP_%s)", uc( $_[0]->name ) ) : - 'NULL'; -} - -# This pair is needed becase B::FAKEOP::save doesn't scalar dereference -# $op->next and $op->sibling - -{ - # For 5.9 the hard coded text is the values for op_opt and op_static in each - # op. The value of op_opt is irrelevant, and the value of op_static needs to - # be 1 to tell op_free that this is a statically defined op and that is - # shouldn't be freed. - - # For 5.8: - # Current workaround/fix for op_free() trying to free statically - # defined OPs is to set op_seq = -1 and check for that in op_free(). - # Instead of hardwiring -1 in place of $op->seq, we use $op_seq - # so that it can be changed back easily if necessary. In fact, to - # stop compilers from moaning about a U16 being initialised with an - # uncast -1 (the printf format is %d so we can't tweak it), we have - # to "know" that op_seq is a U16 and use 65535. Ugh. - - my $static = $] > 5.009 ? '0, 1, 0' : sprintf "%u", 65535; - sub B::OP::_save_common_middle { - my $op = shift; - sprintf ("%s, %u, %u, $static, 0x%x, 0x%x", - $op->fake_ppaddr, $op->targ, $op->type, $op->flags, $op->private); - } -} - -sub B::OP::_save_common { - my $op = shift; - return sprintf("s\\_%x, s\\_%x, %s", - ${$op->next}, ${$op->sibling}, $op->_save_common_middle); -} - -sub B::OP::save { - my ($op, $level) = @_; - my $sym = objsym($op); - return $sym if defined $sym; - my $type = $op->type; - $nullop_count++ unless $type; - if ($type == $OP_THREADSV) { - # saves looking up ppaddr but it's a bit naughty to hard code this - $init->add(sprintf("(void)find_threadsv(%s);", - cstring($threadsv_names[$op->targ]))); - } - $opsect->add($op->_save_common); - my $ix = $opsect->index; - $init->add(sprintf("op_list[$ix].op_ppaddr = %s;", $op->ppaddr)) - unless $optimize_ppaddr; - savesym($op, "&op_list[$ix]"); -} - -sub B::FAKEOP::new { - my ($class, %objdata) = @_; - bless \%objdata, $class; -} - -sub B::FAKEOP::save { - my ($op, $level) = @_; - $opsect->add(sprintf("%s, %s, %s", - $op->next, $op->sibling, $op->_save_common_middle)); - my $ix = $opsect->index; - $init->add(sprintf("op_list[$ix].op_ppaddr = %s;", $op->ppaddr)) - unless $optimize_ppaddr; - return "&op_list[$ix]"; -} - -sub B::FAKEOP::next { $_[0]->{"next"} || 0 } -sub B::FAKEOP::type { $_[0]->{type} || 0} -sub B::FAKEOP::sibling { $_[0]->{sibling} || 0 } -sub B::FAKEOP::ppaddr { $_[0]->{ppaddr} || 0 } -sub B::FAKEOP::targ { $_[0]->{targ} || 0 } -sub B::FAKEOP::flags { $_[0]->{flags} || 0 } -sub B::FAKEOP::private { $_[0]->{private} || 0 } - -sub B::UNOP::save { - my ($op, $level) = @_; - my $sym = objsym($op); - return $sym if defined $sym; - $unopsect->add(sprintf("%s, s\\_%x", $op->_save_common, ${$op->first})); - my $ix = $unopsect->index; - $init->add(sprintf("unop_list[$ix].op_ppaddr = %s;", $op->ppaddr)) - unless $optimize_ppaddr; - savesym($op, "(OP*)&unop_list[$ix]"); -} - -sub B::BINOP::save { - my ($op, $level) = @_; - my $sym = objsym($op); - return $sym if defined $sym; - $binopsect->add(sprintf("%s, s\\_%x, s\\_%x", - $op->_save_common, ${$op->first}, ${$op->last})); - my $ix = $binopsect->index; - $init->add(sprintf("binop_list[$ix].op_ppaddr = %s;", $op->ppaddr)) - unless $optimize_ppaddr; - savesym($op, "(OP*)&binop_list[$ix]"); -} - -sub B::LISTOP::save { - my ($op, $level) = @_; - my $sym = objsym($op); - return $sym if defined $sym; - $listopsect->add(sprintf("%s, s\\_%x, s\\_%x", - $op->_save_common, ${$op->first}, ${$op->last})); - my $ix = $listopsect->index; - $init->add(sprintf("listop_list[$ix].op_ppaddr = %s;", $op->ppaddr)) - unless $optimize_ppaddr; - savesym($op, "(OP*)&listop_list[$ix]"); -} - -sub B::LOGOP::save { - my ($op, $level) = @_; - my $sym = objsym($op); - return $sym if defined $sym; - $logopsect->add(sprintf("%s, s\\_%x, s\\_%x", - $op->_save_common, ${$op->first}, ${$op->other})); - my $ix = $logopsect->index; - $init->add(sprintf("logop_list[$ix].op_ppaddr = %s;", $op->ppaddr)) - unless $optimize_ppaddr; - savesym($op, "(OP*)&logop_list[$ix]"); -} - -sub B::LOOP::save { - my ($op, $level) = @_; - my $sym = objsym($op); - return $sym if defined $sym; - #warn sprintf("LOOP: redoop %s, nextop %s, lastop %s\n", - # peekop($op->redoop), peekop($op->nextop), - # peekop($op->lastop)); # debug - $loopsect->add(sprintf("%s, s\\_%x, s\\_%x, s\\_%x, s\\_%x, s\\_%x", - $op->_save_common, ${$op->first}, ${$op->last}, - ${$op->redoop}, ${$op->nextop}, - ${$op->lastop})); - my $ix = $loopsect->index; - $init->add(sprintf("loop_list[$ix].op_ppaddr = %s;", $op->ppaddr)) - unless $optimize_ppaddr; - savesym($op, "(OP*)&loop_list[$ix]"); -} - -sub B::PVOP::save { - my ($op, $level) = @_; - my $sym = objsym($op); - return $sym if defined $sym; - $pvopsect->add(sprintf("%s, %s", $op->_save_common, cstring($op->pv))); - my $ix = $pvopsect->index; - $init->add(sprintf("pvop_list[$ix].op_ppaddr = %s;", $op->ppaddr)) - unless $optimize_ppaddr; - savesym($op, "(OP*)&pvop_list[$ix]"); -} - -sub B::SVOP::save { - my ($op, $level) = @_; - my $sym = objsym($op); - return $sym if defined $sym; - my $sv = $op->sv; - my $svsym = '(SV*)' . $sv->save; - my $is_const_addr = $svsym =~ m/Null|\&/; - $svopsect->add(sprintf("%s, %s", $op->_save_common, - ( $is_const_addr ? $svsym : 'Nullsv' ))); - my $ix = $svopsect->index; - $init->add(sprintf("svop_list[$ix].op_ppaddr = %s;", $op->ppaddr)) - unless $optimize_ppaddr; - $init->add("svop_list[$ix].op_sv = $svsym;") - unless $is_const_addr; - savesym($op, "(OP*)&svop_list[$ix]"); -} - -sub B::PADOP::save { - my ($op, $level) = @_; - my $sym = objsym($op); - return $sym if defined $sym; - $padopsect->add(sprintf("%s, %d", - $op->_save_common, $op->padix)); - my $ix = $padopsect->index; - $init->add(sprintf("padop_list[$ix].op_ppaddr = %s;", $op->ppaddr)) - unless $optimize_ppaddr; -# $init->add(sprintf("padop_list[$ix].op_padix = %ld;", $op->padix)); - savesym($op, "(OP*)&padop_list[$ix]"); -} - -sub B::COP::save { - my ($op, $level) = @_; - my $sym = objsym($op); - return $sym if defined $sym; - warn sprintf("COP: line %d file %s\n", $op->line, $op->file) - if $debug_cops; - # shameless cut'n'paste from B::Deparse - my $warn_sv; - my $warnings = $op->warnings; - my $is_special = $warnings->isa("B::SPECIAL"); - if ($is_special && $$warnings == 4) { - # use warnings 'all'; - $warn_sv = $optimize_warn_sv ? - 'INT2PTR(SV*,1)' : - 'pWARN_ALL'; - } - elsif ($is_special && $$warnings == 5) { - # no warnings 'all'; - $warn_sv = $optimize_warn_sv ? - 'INT2PTR(SV*,2)' : - 'pWARN_NONE'; - } - elsif ($is_special) { - # use warnings; - $warn_sv = $optimize_warn_sv ? - 'INT2PTR(SV*,3)' : - 'pWARN_STD'; - } - else { - # something else - $warn_sv = $warnings->save; - } - - $copsect->add(sprintf("%s, %s, NULL, NULL, %u, %d, %u, %s", - $op->_save_common, cstring($op->label), $op->cop_seq, - $op->arybase, $op->line, - ( $optimize_warn_sv ? $warn_sv : 'NULL' ))); - my $ix = $copsect->index; - $init->add(sprintf("cop_list[$ix].op_ppaddr = %s;", $op->ppaddr)) - unless $optimize_ppaddr; - $init->add(sprintf("cop_list[$ix].cop_warnings = %s;", $warn_sv )) - unless $optimize_warn_sv; - $init->add(sprintf("CopFILE_set(&cop_list[$ix], %s);", cstring($op->file)), - sprintf("CopSTASHPV_set(&cop_list[$ix], %s);", cstring($op->stashpv))); - - savesym($op, "(OP*)&cop_list[$ix]"); -} - -sub B::PMOP::save { - my ($op, $level) = @_; - my $sym = objsym($op); - return $sym if defined $sym; - my $replroot = $op->pmreplroot; - my $replstart = $op->pmreplstart; - my $replrootfield; - my $replstartfield = sprintf("s\\_%x", $$replstart); - my $gvsym; - my $ppaddr = $op->ppaddr; - # under ithreads, OP_PUSHRE.op_replroot is an integer - $replrootfield = sprintf("s\\_%x", $$replroot) if ref $replroot; - if($ithreads && $op->name eq "pushre") { - $replrootfield = "INT2PTR(OP*,${replroot})"; - } elsif ($$replroot) { - # OP_PUSHRE (a mutated version of OP_MATCH for the regexp - # argument to a split) stores a GV in op_pmreplroot instead - # of a substitution syntax tree. We don't want to walk that... - if ($op->name eq "pushre") { - $gvsym = $replroot->save; -# warn "PMOP::save saving a pp_pushre with GV $gvsym\n"; # debug - $replrootfield = 0; - } else { - $replstartfield = saveoptree("*ignore*", $replroot, $replstart); - } - } - # pmnext handling is broken in perl itself, I think. Bad op_pmnext - # fields aren't noticed in perl's runtime (unless you try reset) but we - # segfault when trying to dereference it to find op->op_pmnext->op_type - $pmopsect->add(sprintf("%s, s\\_%x, s\\_%x, %s, %s, 0, %u, 0x%x, 0x%x, 0x%x", - $op->_save_common, ${$op->first}, ${$op->last}, - $replrootfield, $replstartfield, - ( $ithreads ? $op->pmoffset : 0 ), - $op->pmflags, $op->pmpermflags, $op->pmdynflags )); - my $pm = sprintf("pmop_list[%d]", $pmopsect->index); - $init->add(sprintf("$pm.op_ppaddr = %s;", $ppaddr)) - unless $optimize_ppaddr; - my $re = $op->precomp; - if (defined($re)) { - my( $resym, $relen ) = savere( $re ); - $init->add(sprintf("PM_SETRE(&$pm,pregcomp($resym, $resym + %u, &$pm));", - $relen)); - } - if ($gvsym) { - $init->add("$pm.op_pmreplroot = (OP*)$gvsym;"); - } - savesym($op, "(OP*)&$pm"); -} - -sub B::SPECIAL::save { - my ($sv) = @_; - # special case: $$sv is not the address but an index into specialsv_list -# warn "SPECIAL::save specialsv $$sv\n"; # debug - my $sym = $specialsv_name[$$sv]; - if (!defined($sym)) { - confess "unknown specialsv index $$sv passed to B::SPECIAL::save"; - } - return $sym; -} - -sub B::OBJECT::save {} - -sub B::NULL::save { - my ($sv) = @_; - my $sym = objsym($sv); - return $sym if defined $sym; -# warn "Saving SVt_NULL SV\n"; # debug - # debug - if ($$sv == 0) { - warn "NULL::save for sv = 0 called from @{[(caller(1))[3]]}\n"; - return savesym($sv, "(void*)Nullsv /* XXX */"); - } - $svsect->add(sprintf("0, %u, 0x%x", $sv->REFCNT , $sv->FLAGS)); - return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); -} - -sub B::IV::save { - my ($sv) = @_; - my $sym = objsym($sv); - return $sym if defined $sym; - $xpvivsect->add(sprintf("0, 0, 0, %d", $sv->IVX)); - $svsect->add(sprintf("&xpviv_list[%d], %lu, 0x%x", - $xpvivsect->index, $sv->REFCNT , $sv->FLAGS)); - return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); -} - -sub B::NV::save { - my ($sv) = @_; - my $sym = objsym($sv); - return $sym if defined $sym; - my $val= $sv->NVX; - $val .= '.00' if $val =~ /^-?\d+$/; - $xpvnvsect->add(sprintf("0, 0, 0, %d, %s", $sv->IVX, $val)); - $svsect->add(sprintf("&xpvnv_list[%d], %lu, 0x%x", - $xpvnvsect->index, $sv->REFCNT , $sv->FLAGS)); - return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); -} - -sub savepvn { - my ($dest,$pv) = @_; - my @res; - # work with byte offsets/lengths - my $pv = pack "a*", $pv; - if (defined $max_string_len && length($pv) > $max_string_len) { - push @res, sprintf("Newx(%s,%u,char);", $dest, length($pv)+1); - my $offset = 0; - while (length $pv) { - my $str = substr $pv, 0, $max_string_len, ''; - push @res, sprintf("Copy(%s,$dest+$offset,%u,char);", - cstring($str), length($str)); - $offset += length $str; - } - push @res, sprintf("%s[%u] = '\\0';", $dest, $offset); - } - else { - push @res, sprintf("%s = savepvn(%s, %u);", $dest, - cstring($pv), length($pv)); - } - return @res; -} - -sub B::PVLV::save { - my ($sv) = @_; - my $sym = objsym($sv); - return $sym if defined $sym; - my $pv = $sv->PV; - my $len = length($pv); - my ($pvsym, $pvmax) = savepv($pv); - my ($lvtarg, $lvtarg_sym); - $xpvlvsect->add(sprintf("%s, %u, %u, %d, %g, 0, 0, %u, %u, 0, %s", - $pvsym, $len, $pvmax, $sv->IVX, $sv->NVX, - $sv->TARGOFF, $sv->TARGLEN, cchar($sv->TYPE))); - $svsect->add(sprintf("&xpvlv_list[%d], %lu, 0x%x", - $xpvlvsect->index, $sv->REFCNT , $sv->FLAGS)); - if (!$pv_copy_on_grow) { - $init->add(savepvn(sprintf("xpvlv_list[%d].xpv_pv", - $xpvlvsect->index), $pv)); - } - $sv->save_magic; - return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); -} - -sub B::PVIV::save { - my ($sv) = @_; - my $sym = objsym($sv); - return $sym if defined $sym; - my( $savesym, $pvmax, $len, $pv ) = save_pv_or_rv( $sv ); - $xpvivsect->add(sprintf("%s, %u, %u, %d", $savesym, $len, $pvmax, $sv->IVX)); - $svsect->add(sprintf("&xpviv_list[%d], %u, 0x%x", - $xpvivsect->index, $sv->REFCNT , $sv->FLAGS)); - if (defined($pv) && !$pv_copy_on_grow) { - $init->add(savepvn(sprintf("xpviv_list[%d].xpv_pv", - $xpvivsect->index), $pv)); - } - return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); -} - -sub B::PVNV::save { - my ($sv) = @_; - my $sym = objsym($sv); - return $sym if defined $sym; - my( $savesym, $pvmax, $len, $pv ) = save_pv_or_rv( $sv ); - my $val= $sv->NVX; - $val .= '.00' if $val =~ /^-?\d+$/; - $xpvnvsect->add(sprintf("%s, %u, %u, %d, %s", - $savesym, $len, $pvmax, $sv->IVX, $val)); - $svsect->add(sprintf("&xpvnv_list[%d], %lu, 0x%x", - $xpvnvsect->index, $sv->REFCNT , $sv->FLAGS)); - if (defined($pv) && !$pv_copy_on_grow) { - $init->add(savepvn(sprintf("xpvnv_list[%d].xpv_pv", - $xpvnvsect->index), $pv)); - } - return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); -} - -sub B::BM::save { - my ($sv) = @_; - my $sym = objsym($sv); - return $sym if defined $sym; - my $pv = pack "a*", ($sv->PV . "\0" . $sv->TABLE); - my $len = length($pv); - $xpvbmsect->add(sprintf("0, %u, %u, %d, %s, 0, 0, %d, %u, 0x%x", - $len, $len + 258, $sv->IVX, $sv->NVX, - $sv->USEFUL, $sv->PREVIOUS, $sv->RARE)); - $svsect->add(sprintf("&xpvbm_list[%d], %lu, 0x%x", - $xpvbmsect->index, $sv->REFCNT , $sv->FLAGS)); - $sv->save_magic; - $init->add(savepvn(sprintf("xpvbm_list[%d].xpv_pv", - $xpvbmsect->index), $pv), - sprintf("xpvbm_list[%d].xpv_cur = %u;", - $xpvbmsect->index, $len - 257)); - return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); -} - -sub B::PV::save { - my ($sv) = @_; - my $sym = objsym($sv); - return $sym if defined $sym; - my( $savesym, $pvmax, $len, $pv ) = save_pv_or_rv( $sv ); - $xpvsect->add(sprintf("%s, %u, %u", $savesym, $len, $pvmax)); - $svsect->add(sprintf("&xpv_list[%d], %lu, 0x%x", - $xpvsect->index, $sv->REFCNT , $sv->FLAGS)); - if (defined($pv) && !$pv_copy_on_grow) { - $init->add(savepvn(sprintf("xpv_list[%d].xpv_pv", - $xpvsect->index), $pv)); - } - return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); -} - -sub B::PVMG::save { - my ($sv) = @_; - my $sym = objsym($sv); - return $sym if defined $sym; - my( $savesym, $pvmax, $len, $pv ) = save_pv_or_rv( $sv ); - - $xpvmgsect->add(sprintf("%s, %u, %u, %d, %s, 0, 0", - $savesym, $len, $pvmax, - $sv->IVX, $sv->NVX)); - $svsect->add(sprintf("&xpvmg_list[%d], %lu, 0x%x", - $xpvmgsect->index, $sv->REFCNT , $sv->FLAGS)); - if (defined($pv) && !$pv_copy_on_grow) { - $init->add(savepvn(sprintf("xpvmg_list[%d].xpv_pv", - $xpvmgsect->index), $pv)); - } - $sym = savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); - $sv->save_magic; - return $sym; -} - -sub B::PVMG::save_magic { - my ($sv) = @_; - #warn sprintf("saving magic for %s (0x%x)\n", class($sv), $$sv); # debug - my $stash = $sv->SvSTASH; - $stash->save; - if ($$stash) { - warn sprintf("xmg_stash = %s (0x%x)\n", $stash->NAME, $$stash) - if $debug_mg; - # XXX Hope stash is already going to be saved. - $init->add(sprintf("SvSTASH(s\\_%x) = s\\_%x;", $$sv, $$stash)); - } - my @mgchain = $sv->MAGIC; - my ($mg, $type, $obj, $ptr,$len,$ptrsv); - foreach $mg (@mgchain) { - $type = $mg->TYPE; - $ptr = $mg->PTR; - $len=$mg->LENGTH; - if ($debug_mg) { - warn sprintf("magic %s (0x%x), obj %s (0x%x), type %s, ptr %s\n", - class($sv), $$sv, class($obj), $$obj, - cchar($type), cstring($ptr)); - } - - unless( $type eq 'r' ) { - $obj = $mg->OBJ; - $obj->save; - } - - if ($len == HEf_SVKEY){ - #The pointer is an SV* - $ptrsv=svref_2object($ptr)->save; - $init->add(sprintf("sv_magic((SV*)s\\_%x, (SV*)s\\_%x, %s,(char *) %s, %d);", - $$sv, $$obj, cchar($type),$ptrsv,$len)); - }elsif( $type eq 'r' ){ - my $rx = $mg->REGEX; - my $pmop = $REGEXP{$rx}; - - confess "PMOP not found for REGEXP $rx" unless $pmop; - - my( $resym, $relen ) = savere( $mg->precomp ); - my $pmsym = $pmop->save; - $init->add( split /\n/, sprintf <<CODE, $$sv, cchar($type), cstring($ptr) ); -{ - REGEXP* rx = pregcomp($resym, $resym + $relen, (PMOP*)$pmsym); - sv_magic((SV*)s\\_%x, (SV*)rx, %s, %s, %d); -} -CODE - }else{ - $init->add(sprintf("sv_magic((SV*)s\\_%x, (SV*)s\\_%x, %s, %s, %d);", - $$sv, $$obj, cchar($type),cstring($ptr),$len)); - } - } -} - -sub B::RV::save { - my ($sv) = @_; - my $sym = objsym($sv); - return $sym if defined $sym; - my $rv = save_rv( $sv ); - # GVs need to be handled at runtime - if( ref( $sv->RV ) eq 'B::GV' ) { - $xrvsect->add( "(SV*)Nullgv" ); - $init->add(sprintf("xrv_list[%d].xrv_rv = (SV*)%s;\n", $xrvsect->index, $rv)); - } - # and stashes, too - elsif( $sv->RV->isa( 'B::HV' ) && $sv->RV->NAME ) { - $xrvsect->add( "(SV*)Nullhv" ); - $init->add(sprintf("xrv_list[%d].xrv_rv = (SV*)%s;\n", $xrvsect->index, $rv)); - } - else { - $xrvsect->add($rv); - } - $svsect->add(sprintf("&xrv_list[%d], %lu, 0x%x", - $xrvsect->index, $sv->REFCNT , $sv->FLAGS)); - return savesym($sv, sprintf("&sv_list[%d]", $svsect->index)); -} - -sub try_autoload { - my ($cvstashname, $cvname) = @_; - warn sprintf("No definition for sub %s::%s\n", $cvstashname, $cvname); - # Handle AutoLoader classes explicitly. Any more general AUTOLOAD - # use should be handled by the class itself. - no strict 'refs'; - my $isa = \@{"$cvstashname\::ISA"}; - if (grep($_ eq "AutoLoader", @$isa)) { - warn "Forcing immediate load of sub derived from AutoLoader\n"; - # Tweaked version of AutoLoader::AUTOLOAD - my $dir = $cvstashname; - $dir =~ s(::)(/)g; - eval { require "auto/$dir/$cvname.al" }; - if ($@) { - warn qq(failed require "auto/$dir/$cvname.al": $@\n); - return 0; - } else { - return 1; - } - } -} -sub Dummy_initxs{}; -sub B::CV::save { - my ($cv) = @_; - my $sym = objsym($cv); - if (defined($sym)) { -# warn sprintf("CV 0x%x already saved as $sym\n", $$cv); # debug - return $sym; - } - # Reserve a place in svsect and xpvcvsect and record indices - my $gv = $cv->GV; - my ($cvname, $cvstashname); - if ($$gv){ - $cvname = $gv->NAME; - $cvstashname = $gv->STASH->NAME; - } - my $root = $cv->ROOT; - my $cvxsub = $cv->XSUB; - my $isconst = $cv->CvFLAGS & CVf_CONST; - if( $isconst ) { - my $value = $cv->XSUBANY; - my $stash = $gv->STASH; - my $vsym = $value->save; - my $stsym = $stash->save; - my $name = cstring($cvname); - $decl->add( "static CV* cv$cv_index;" ); - $init->add( "cv$cv_index = newCONSTSUB( $stsym, NULL, $vsym );" ); - my $sym = savesym( $cv, "cv$cv_index" ); - $cv_index++; - return $sym; - } - #INIT is removed from the symbol table, so this call must come - # from PL_initav->save. Re-bootstrapping will push INIT back in - # so nullop should be sent. - if (!$isconst && $cvxsub && ($cvname ne "INIT")) { - my $egv = $gv->EGV; - my $stashname = $egv->STASH->NAME; - if ($cvname eq "bootstrap") - { - my $file = $gv->FILE; - $decl->add("/* bootstrap $file */"); - warn "Bootstrap $stashname $file\n"; - # if it not isa('DynaLoader'), it should hopefully be XSLoaded - # ( attributes being an exception, of course ) - if( $stashname ne 'attributes' && - !UNIVERSAL::isa($stashname,'DynaLoader') ) { - $xsub{$stashname}='Dynamic-XSLoaded'; - $use_xsloader = 1; - } - else { - $xsub{$stashname}='Dynamic'; - } - # $xsub{$stashname}='Static' unless $xsub{$stashname}; - return qq/NULL/; - } - else - { - # XSUBs for IO::File, IO::Handle, IO::Socket, - # IO::Seekable and IO::Poll - # are defined in IO.xs, so let's bootstrap it - svref_2object( \&IO::bootstrap )->save - if grep { $stashname eq $_ } qw(IO::File IO::Handle IO::Socket - IO::Seekable IO::Poll); - } - warn sprintf("stub for XSUB $cvstashname\:\:$cvname CV 0x%x\n", $$cv) if $debug_cv; - return qq/(perl_get_cv("$stashname\:\:$cvname",TRUE))/; - } - if ($cvxsub && $cvname eq "INIT") { - no strict 'refs'; - return svref_2object(\&Dummy_initxs)->save; - } - my $sv_ix = $svsect->index + 1; - $svsect->add("svix$sv_ix"); - my $xpvcv_ix = $xpvcvsect->index + 1; - $xpvcvsect->add("xpvcvix$xpvcv_ix"); - # Save symbol now so that GvCV() doesn't recurse back to us via CvGV() - $sym = savesym($cv, "&sv_list[$sv_ix]"); - warn sprintf("saving $cvstashname\:\:$cvname CV 0x%x as $sym\n", $$cv) if $debug_cv; - if (!$$root && !$cvxsub) { - if (try_autoload($cvstashname, $cvname)) { - # Recalculate root and xsub - $root = $cv->ROOT; - $cvxsub = $cv->XSUB; - if ($$root || $cvxsub) { - warn "Successful forced autoload\n"; - } - } - } - my $startfield = 0; - my $padlist = $cv->PADLIST; - my $pv = $cv->PV; - my $xsub = 0; - my $xsubany = "Nullany"; - if ($$root) { - warn sprintf("saving op tree for CV 0x%x, root = 0x%x\n", - $$cv, $$root) if $debug_cv; - my $ppname = ""; - if ($$gv) { - my $stashname = $gv->STASH->NAME; - my $gvname = $gv->NAME; - if ($gvname ne "__ANON__") { - $ppname = (${$gv->FORM} == $$cv) ? "pp_form_" : "pp_sub_"; - $ppname .= ($stashname eq "main") ? - $gvname : "$stashname\::$gvname"; - $ppname =~ s/::/__/g; - if ($gvname eq "INIT"){ - $ppname .= "_$initsub_index"; - $initsub_index++; - } - } - } - if (!$ppname) { - $ppname = "pp_anonsub_$anonsub_index"; - $anonsub_index++; - } - $startfield = saveoptree($ppname, $root, $cv->START, $padlist->ARRAY); - warn sprintf("done saving op tree for CV 0x%x, name %s, root 0x%x\n", - $$cv, $ppname, $$root) if $debug_cv; - if ($$padlist) { - warn sprintf("saving PADLIST 0x%x for CV 0x%x\n", - $$padlist, $$cv) if $debug_cv; - $padlist->save; - warn sprintf("done saving PADLIST 0x%x for CV 0x%x\n", - $$padlist, $$cv) if $debug_cv; - } - } - else { - warn sprintf("No definition for sub %s::%s (unable to autoload)\n", - $cvstashname, $cvname); # debug - } - $pv = '' unless defined $pv; # Avoid use of undef warnings - $symsect->add(sprintf("xpvcvix%d\t%s, %u, 0, %d, %s, 0, Nullhv, Nullhv, %s, s\\_%x, $xsub, $xsubany, Nullgv, \"\", %d, s\\_%x, (CV*)s\\_%x, 0x%x, 0x%x", - $xpvcv_ix, cstring($pv), length($pv), $cv->IVX, - $cv->NVX, $startfield, ${$cv->ROOT}, $cv->DEPTH, - $$padlist, ${$cv->OUTSIDE}, $cv->CvFLAGS, - $cv->OUTSIDE_SEQ)); - - if (${$cv->OUTSIDE} == ${main_cv()}){ - $init->add(sprintf("CvOUTSIDE(s\\_%x)=PL_main_cv;",$$cv)); - $init->add(sprintf("SvREFCNT_inc(PL_main_cv);")); - } - - if ($$gv) { - $gv->save; - $init->add(sprintf("CvGV(s\\_%x) = s\\_%x;",$$cv,$$gv)); - warn sprintf("done saving GV 0x%x for CV 0x%x\n", - $$gv, $$cv) if $debug_cv; - } - if( $ithreads ) { - $init->add( savepvn( "CvFILE($sym)", $cv->FILE) ); - } - else { - $init->add(sprintf("CvFILE($sym) = %s;", cstring($cv->FILE))); - } - my $stash = $cv->STASH; - if ($$stash) { - $stash->save; - $init->add(sprintf("CvSTASH(s\\_%x) = s\\_%x;", $$cv, $$stash)); - warn sprintf("done saving STASH 0x%x for CV 0x%x\n", - $$stash, $$cv) if $debug_cv; - } - $symsect->add(sprintf("svix%d\t(XPVCV*)&xpvcv_list[%u], %lu, 0x%x", - $sv_ix, $xpvcv_ix, $cv->REFCNT +1*0 , $cv->FLAGS)); - return $sym; -} - -sub B::GV::save { - my ($gv) = @_; - my $sym = objsym($gv); - if (defined($sym)) { - #warn sprintf("GV 0x%x already saved as $sym\n", $$gv); # debug - return $sym; - } else { - my $ix = $gv_index++; - $sym = savesym($gv, "gv_list[$ix]"); - #warn sprintf("Saving GV 0x%x as $sym\n", $$gv); # debug - } - my $is_empty = $gv->is_empty; - my $gvname = $gv->NAME; - my $fullname = $gv->STASH->NAME . "::" . $gvname; - my $name = cstring($fullname); - #warn "GV name is $name\n"; # debug - my $egvsym; - unless ($is_empty) { - my $egv = $gv->EGV; - if ($$gv != $$egv) { - #warn(sprintf("EGV name is %s, saving it now\n", - # $egv->STASH->NAME . "::" . $egv->NAME)); # debug - $egvsym = $egv->save; - } - } - $init->add(qq[$sym = gv_fetchpv($name, TRUE, SVt_PV);], - sprintf("SvFLAGS($sym) = 0x%x;", $gv->FLAGS ), - sprintf("GvFLAGS($sym) = 0x%x;", $gv->GvFLAGS)); - $init->add(sprintf("GvLINE($sym) = %u;", $gv->LINE)) unless $is_empty; - # XXX hack for when Perl accesses PVX of GVs - $init->add("SvPVX($sym) = emptystring;\n"); - # Shouldn't need to do save_magic since gv_fetchpv handles that - #$gv->save_magic; - # XXX will always be > 1!!! - my $refcnt = $gv->REFCNT + 1; - $init->add(sprintf("SvREFCNT($sym) += %u;", $refcnt - 1 )) if $refcnt > 1; - - return $sym if $is_empty; - - # XXX B::walksymtable creates an extra reference to the GV - my $gvrefcnt = $gv->GvREFCNT; - if ($gvrefcnt > 1) { - $init->add(sprintf("GvREFCNT($sym) += %u;", $gvrefcnt - 1)); - } - # some non-alphavetic globs require some parts to be saved - # ( ex. %!, but not $! ) - sub Save_HV() { 1 } - sub Save_AV() { 2 } - sub Save_SV() { 4 } - sub Save_CV() { 8 } - sub Save_FORM() { 16 } - sub Save_IO() { 32 } - my $savefields = 0; - if( $gvname !~ /^([^A-Za-z]|STDIN|STDOUT|STDERR|ARGV|SIG|ENV)$/ ) { - $savefields = Save_HV|Save_AV|Save_SV|Save_CV|Save_FORM|Save_IO; - } - elsif( $gvname eq '!' ) { - $savefields = Save_HV; - } - # attributes::bootstrap is created in perl_parse - # saving it would overwrite it, because perl_init() is - # called after perl_parse() - $savefields&=~Save_CV if $fullname eq 'attributes::bootstrap'; - - # save it - # XXX is that correct? - if (defined($egvsym) && $egvsym !~ m/Null/ ) { - # Shared glob *foo = *bar - $init->add("gp_free($sym);", - "GvGP($sym) = GvGP($egvsym);"); - } elsif ($savefields) { - # Don't save subfields of special GVs (*_, *1, *# and so on) -# warn "GV::save saving subfields\n"; # debug - my $gvsv = $gv->SV; - if ($$gvsv && $savefields&Save_SV) { - $gvsv->save; - $init->add(sprintf("GvSV($sym) = s\\_%x;", $$gvsv)); -# warn "GV::save \$$name\n"; # debug - } - my $gvav = $gv->AV; - if ($$gvav && $savefields&Save_AV) { - $gvav->save; - $init->add(sprintf("GvAV($sym) = s\\_%x;", $$gvav)); -# warn "GV::save \@$name\n"; # debug - } - my $gvhv = $gv->HV; - if ($$gvhv && $savefields&Save_HV) { - $gvhv->save; - $init->add(sprintf("GvHV($sym) = s\\_%x;", $$gvhv)); -# warn "GV::save \%$name\n"; # debug - } - my $gvcv = $gv->CV; - if ($$gvcv && $savefields&Save_CV) { - my $origname=cstring($gvcv->GV->EGV->STASH->NAME . - "::" . $gvcv->GV->EGV->NAME); - if (0 && $gvcv->XSUB && $name ne $origname) { #XSUB alias - # must save as a 'stub' so newXS() has a CV to populate - $init->add("{ CV *cv;"); - $init->add("\tcv=perl_get_cv($origname,TRUE);"); - $init->add("\tGvCV($sym)=cv;"); - $init->add("\tSvREFCNT_inc((SV *)cv);"); - $init->add("}"); - } else { - $init->add(sprintf("GvCV($sym) = (CV*)(%s);", $gvcv->save)); -# warn "GV::save &$name\n"; # debug - } - } - $init->add(sprintf("GvFILE($sym) = %s;", cstring($gv->FILE))); -# warn "GV::save GvFILE(*$name)\n"; # debug - my $gvform = $gv->FORM; - if ($$gvform && $savefields&Save_FORM) { - $gvform->save; - $init->add(sprintf("GvFORM($sym) = (CV*)s\\_%x;", $$gvform)); -# warn "GV::save GvFORM(*$name)\n"; # debug - } - my $gvio = $gv->IO; - if ($$gvio && $savefields&Save_IO) { - $gvio->save; - $init->add(sprintf("GvIOp($sym) = s\\_%x;", $$gvio)); - if( $fullname =~ m/::DATA$/ && $save_data_fh ) { - no strict 'refs'; - my $fh = *{$fullname}{IO}; - use strict 'refs'; - $gvio->save_data( $fullname, <$fh> ) if $fh->opened; - } -# warn "GV::save GvIO(*$name)\n"; # debug - } - } - return $sym; -} - -sub B::AV::save { - my ($av) = @_; - my $sym = objsym($av); - return $sym if defined $sym; - my $line = "0, -1, -1, 0, 0.0, 0, Nullhv, 0, 0"; - $line .= sprintf(", 0x%x", $av->AvFLAGS) if $] < 5.009; - $xpvavsect->add($line); - $svsect->add(sprintf("&xpvav_list[%d], %lu, 0x%x", - $xpvavsect->index, $av->REFCNT , $av->FLAGS)); - my $sv_list_index = $svsect->index; - my $fill = $av->FILL; - $av->save_magic; - if ($debug_av) { - $line = sprintf("saving AV 0x%x FILL=$fill", $$av); - $line .= sprintf(" AvFLAGS=0x%x", $av->AvFLAGS) if $] < 5.009; - warn $line; - } - # XXX AVf_REAL is wrong test: need to save comppadlist but not stack - #if ($fill > -1 && ($avflags & AVf_REAL)) { - if ($fill > -1) { - my @array = $av->ARRAY; - if ($debug_av) { - my $el; - my $i = 0; - foreach $el (@array) { - warn sprintf("AV 0x%x[%d] = %s 0x%x\n", - $$av, $i++, class($el), $$el); - } - } -# my @names = map($_->save, @array); - # XXX Better ways to write loop? - # Perhaps svp[0] = ...; svp[1] = ...; svp[2] = ...; - # Perhaps I32 i = 0; svp[i++] = ...; svp[i++] = ...; svp[i++] = ...; - - # micro optimization: op/pat.t ( and other code probably ) - # has very large pads ( 20k/30k elements ) passing them to - # ->add is a performance bottleneck: passing them as a - # single string cuts runtime from 6min20sec to 40sec - - # you want to keep this out of the no_split/split - # map("\t*svp++ = (SV*)$_;", @names), - my $acc = ''; - foreach my $i ( 0..$#array ) { - $acc .= "\t*svp++ = (SV*)" . $array[$i]->save . ";\n\t"; - } - $acc .= "\n"; - - $init->no_split; - $init->add("{", - "\tSV **svp;", - "\tAV *av = (AV*)&sv_list[$sv_list_index];", - "\tav_extend(av, $fill);", - "\tsvp = AvARRAY(av);" ); - $init->add($acc); - $init->add("\tAvFILLp(av) = $fill;", - "}"); - $init->split; - # we really added a lot of lines ( B::C::InitSection->add - # should really scan for \n, but that would slow - # it down - $init->inc_count( $#array ); - } else { - my $max = $av->MAX; - $init->add("av_extend((AV*)&sv_list[$sv_list_index], $max);") - if $max > -1; - } - return savesym($av, "(AV*)&sv_list[$sv_list_index]"); -} - -sub B::HV::save { - my ($hv) = @_; - my $sym = objsym($hv); - return $sym if defined $sym; - my $name = $hv->NAME; - if ($name) { - # It's a stash - - # A perl bug means HvPMROOT isn't altered when a PMOP is freed. Usually - # the only symptom is that sv_reset tries to reset the PMf_USED flag of - # a trashed op but we look at the trashed op_type and segfault. - #my $adpmroot = ${$hv->PMROOT}; - my $adpmroot = 0; - $decl->add("static HV *hv$hv_index;"); - # XXX Beware of weird package names containing double-quotes, \n, ...? - $init->add(qq[hv$hv_index = gv_stashpv("$name", TRUE);]); - if ($adpmroot) { - $init->add(sprintf("HvPMROOT(hv$hv_index) = (PMOP*)s\\_%x;", - $adpmroot)); - } - $sym = savesym($hv, "hv$hv_index"); - $hv_index++; - return $sym; - } - # It's just an ordinary HV - $xpvhvsect->add(sprintf("0, 0, %d, 0, 0.0, 0, Nullhv, %d, 0, 0, 0", - $hv->MAX, $hv->RITER)); - $svsect->add(sprintf("&xpvhv_list[%d], %lu, 0x%x", - $xpvhvsect->index, $hv->REFCNT , $hv->FLAGS)); - my $sv_list_index = $svsect->index; - my @contents = $hv->ARRAY; - if (@contents) { - my $i; - for ($i = 1; $i < @contents; $i += 2) { - $contents[$i] = $contents[$i]->save; - } - $init->no_split; - $init->add("{", "\tHV *hv = (HV*)&sv_list[$sv_list_index];"); - while (@contents) { - my ($key, $value) = splice(@contents, 0, 2); - $init->add(sprintf("\thv_store(hv, %s, %u, %s, %s);", - cstring($key),length(pack "a*",$key), - $value, hash($key))); -# $init->add(sprintf("\thv_store(hv, %s, %u, %s, %s);", -# cstring($key),length($key),$value, 0)); - } - $init->add("}"); - $init->split; - } - $hv->save_magic(); - return savesym($hv, "(HV*)&sv_list[$sv_list_index]"); -} - -sub B::IO::save_data { - my( $io, $globname, @data ) = @_; - my $data = join '', @data; - - # XXX using $DATA might clobber it! - my $sym = svref_2object( \\$data )->save; - $init->add( split /\n/, <<CODE ); - { - GV* gv = (GV*)gv_fetchpv( "$globname", TRUE, SVt_PV ); - SV* sv = $sym; - GvSV( gv ) = sv; - } -CODE - # for PerlIO::scalar - $use_xsloader = 1; - $init->add_eval( sprintf 'open(%s, "<", $%s)', $globname, $globname ); -} - -sub B::IO::save { - my ($io) = @_; - my $sym = objsym($io); - return $sym if defined $sym; - my $pv = $io->PV; - $pv = '' unless defined $pv; - my $len = length($pv); - $xpviosect->add(sprintf("0, %u, %u, %d, %s, 0, 0, 0, 0, 0, %d, %d, %d, %d, %s, Nullgv, %s, Nullgv, %s, Nullgv, %d, %s, 0x%x", - $len, $len+1, $io->IVX, $io->NVX, $io->LINES, - $io->PAGE, $io->PAGE_LEN, $io->LINES_LEFT, - cstring($io->TOP_NAME), cstring($io->FMT_NAME), - cstring($io->BOTTOM_NAME), $io->SUBPROCESS, - cchar($io->IoTYPE), $io->IoFLAGS)); - $svsect->add(sprintf("&xpvio_list[%d], %lu, 0x%x", - $xpviosect->index, $io->REFCNT , $io->FLAGS)); - $sym = savesym($io, sprintf("(IO*)&sv_list[%d]", $svsect->index)); - # deal with $x = *STDIN/STDOUT/STDERR{IO} - my $perlio_func; - foreach ( qw(stdin stdout stderr) ) { - $io->IsSTD($_) and $perlio_func = $_; - } - if( $perlio_func ) { - $init->add( "IoIFP(${sym})=PerlIO_${perlio_func}();" ); - $init->add( "IoOFP(${sym})=PerlIO_${perlio_func}();" ); - } - - my ($field, $fsym); - foreach $field (qw(TOP_GV FMT_GV BOTTOM_GV)) { - $fsym = $io->$field(); - if ($$fsym) { - $init->add(sprintf("Io$field($sym) = (GV*)s\\_%x;", $$fsym)); - $fsym->save; - } - } - $io->save_magic; - return $sym; -} - -sub B::SV::save { - my $sv = shift; - # This is where we catch an honest-to-goodness Nullsv (which gets - # blessed into B::SV explicitly) and any stray erroneous SVs. - return 0 unless $$sv; - confess sprintf("cannot save that type of SV: %s (0x%x)\n", - class($sv), $$sv); -} - -sub output_all { - my $init_name = shift; - my $section; - my @sections = ($opsect, $unopsect, $binopsect, $logopsect, $condopsect, - $listopsect, $pmopsect, $svopsect, $padopsect, $pvopsect, - $loopsect, $copsect, $svsect, $xpvsect, - $xpvavsect, $xpvhvsect, $xpvcvsect, $xpvivsect, $xpvnvsect, - $xpvmgsect, $xpvlvsect, $xrvsect, $xpvbmsect, $xpviosect); - $symsect->output(\*STDOUT, "#define %s\n"); - print "\n"; - output_declarations(); - foreach $section (@sections) { - my $lines = $section->index + 1; - if ($lines) { - my $name = $section->name; - my $typename = ($name eq "xpvcv") ? "XPVCV_or_similar" : uc($name); - print "Static $typename ${name}_list[$lines];\n"; - } - } - # XXX hack for when Perl accesses PVX of GVs - print 'Static char emptystring[] = "\0";'; - - $decl->output(\*STDOUT, "%s\n"); - print "\n"; - foreach $section (@sections) { - my $lines = $section->index + 1; - if ($lines) { - my $name = $section->name; - my $typename = ($name eq "xpvcv") ? "XPVCV_or_similar" : uc($name); - printf "static %s %s_list[%u] = {\n", $typename, $name, $lines; - $section->output(\*STDOUT, "\t{ %s }, /* %d */\n"); - print "};\n\n"; - } - } - - $init->output(\*STDOUT, "\t%s\n", $init_name ); - if ($verbose) { - warn compile_stats(); - warn "NULLOP count: $nullop_count\n"; - } -} - -sub output_declarations { - print <<'EOT'; -#ifdef BROKEN_STATIC_REDECL -#define Static extern -#else -#define Static static -#endif /* BROKEN_STATIC_REDECL */ - -#ifdef BROKEN_UNION_INIT -/* - * Cribbed from cv.h with ANY (a union) replaced by void*. - * Some pre-Standard compilers can't cope with initialising unions. Ho hum. - */ -typedef struct { - char * xpv_pv; /* pointer to malloced string */ - STRLEN xpv_cur; /* length of xp_pv as a C string */ - STRLEN xpv_len; /* allocated size */ - IV xof_off; /* integer value */ - NV xnv_nv; /* numeric value, if any */ - MAGIC* xmg_magic; /* magic for scalar array */ - HV* xmg_stash; /* class package */ - - HV * xcv_stash; - OP * xcv_start; - OP * xcv_root; - void (*xcv_xsub) (pTHX_ CV*); - ANY xcv_xsubany; - GV * xcv_gv; - char * xcv_file; - long xcv_depth; /* >= 2 indicates recursive call */ - AV * xcv_padlist; - CV * xcv_outside; -EOT - print <<'EOT' if $] < 5.009; -#ifdef USE_5005THREADS - perl_mutex *xcv_mutexp; - struct perl_thread *xcv_owner; /* current owner thread */ -#endif /* USE_5005THREADS */ -EOT - print <<'EOT'; - cv_flags_t xcv_flags; - U32 xcv_outside_seq; /* the COP sequence (at the point of our - * compilation) in the lexically enclosing - * sub */ -} XPVCV_or_similar; -#define ANYINIT(i) i -#else -#define XPVCV_or_similar XPVCV -#define ANYINIT(i) {i} -#endif /* BROKEN_UNION_INIT */ -#define Nullany ANYINIT(0) - -#define UNUSED 0 -#define sym_0 0 -EOT - print "static GV *gv_list[$gv_index];\n" if $gv_index; - print "\n"; -} - - -sub output_boilerplate { - print <<'EOT'; -#include "EXTERN.h" -#include "perl.h" -#include "XSUB.h" - -/* Workaround for mapstart: the only op which needs a different ppaddr */ -#undef Perl_pp_mapstart -#define Perl_pp_mapstart Perl_pp_grepstart -#undef OP_MAPSTART -#define OP_MAPSTART OP_GREPSTART -#define XS_DynaLoader_boot_DynaLoader boot_DynaLoader -EXTERN_C void boot_DynaLoader (pTHX_ CV* cv); - -static void xs_init (pTHX); -static void dl_init (pTHX); -static PerlInterpreter *my_perl; -EOT -} - -sub init_op_addr { - my( $op_type, $num ) = @_; - my $op_list = $op_type."_list"; - - $init->add( split /\n/, <<EOT ); - { - int i; - - for( i = 0; i < ${num}; ++i ) - { - ${op_list}\[i].op_ppaddr = PL_ppaddr[INT2PTR(int,${op_list}\[i].op_ppaddr)]; - } - } -EOT -} - -sub init_op_warn { - my( $op_type, $num ) = @_; - my $op_list = $op_type."_list"; - - # for resons beyond imagination, MSVC5 considers pWARN_ALL non-const - $init->add( split /\n/, <<EOT ); - { - int i; - - for( i = 0; i < ${num}; ++i ) - { - switch( (int)(${op_list}\[i].cop_warnings) ) - { - case 1: - ${op_list}\[i].cop_warnings = pWARN_ALL; - break; - case 2: - ${op_list}\[i].cop_warnings = pWARN_NONE; - break; - case 3: - ${op_list}\[i].cop_warnings = pWARN_STD; - break; - default: - break; - } - } - } -EOT -} - -sub output_main { - print <<'EOT'; -/* if USE_IMPLICIT_SYS, we need a 'real' exit */ -#if defined(exit) -#undef exit -#endif - -int -main(int argc, char **argv, char **env) -{ - int exitstatus; - int i; - char **fakeargv; - GV* tmpgv; - SV* tmpsv; - int options_count; - - PERL_SYS_INIT3(&argc,&argv,&env); - - if (!PL_do_undump) { - my_perl = perl_alloc(); - if (!my_perl) - exit(1); - perl_construct( my_perl ); - PL_perl_destruct_level = 0; - } -EOT - if( $ithreads ) { - # XXX init free elems! - my $pad_len = regex_padav->FILL + 1 - 1; # first is an avref - - print <<EOT; -#ifdef USE_ITHREADS - for( i = 0; i < $pad_len; ++i ) { - av_push( PL_regex_padav, newSViv(0) ); - } - PL_regex_pad = AvARRAY( PL_regex_padav ); -#endif -EOT - } - - print <<'EOT'; -#ifdef CSH - if (!PL_cshlen) - PL_cshlen = strlen(PL_cshname); -#endif - -#ifdef ALLOW_PERL_OPTIONS -#define EXTRA_OPTIONS 3 -#else -#define EXTRA_OPTIONS 4 -#endif /* ALLOW_PERL_OPTIONS */ - Newx(fakeargv, argc + EXTRA_OPTIONS + 1, char *); - - fakeargv[0] = argv[0]; - fakeargv[1] = "-e"; - fakeargv[2] = ""; - options_count = 3; -EOT - # honour -T - print <<EOT; - if( ${^TAINT} ) { - fakeargv[options_count] = "-T"; - ++options_count; - } -EOT - print <<'EOT'; -#ifndef ALLOW_PERL_OPTIONS - fakeargv[options_count] = "--"; - ++options_count; -#endif /* ALLOW_PERL_OPTIONS */ - for (i = 1; i < argc; i++) - fakeargv[i + options_count - 1] = argv[i]; - fakeargv[argc + options_count - 1] = 0; - - exitstatus = perl_parse(my_perl, xs_init, argc + options_count - 1, - fakeargv, NULL); - - if (exitstatus) - exit( exitstatus ); - - TAINT; -EOT - - if( $use_perl_script_name ) { - my $dollar_0 = $0; - $dollar_0 =~ s/\\/\\\\/g; - $dollar_0 = '"' . $dollar_0 . '"'; - - print <<EOT; - if ((tmpgv = gv_fetchpv("0",TRUE, SVt_PV))) {/* $0 */ - tmpsv = GvSV(tmpgv); - sv_setpv(tmpsv, ${dollar_0}); - SvSETMAGIC(tmpsv); - } -EOT - } - else { - print <<EOT; - if ((tmpgv = gv_fetchpv("0",TRUE, SVt_PV))) {/* $0 */ - tmpsv = GvSV(tmpgv); - sv_setpv(tmpsv, argv[0]); - SvSETMAGIC(tmpsv); - } -EOT - } - - print <<'EOT'; - if ((tmpgv = gv_fetchpv("\030",TRUE, SVt_PV))) {/* $^X */ - tmpsv = GvSV(tmpgv); -#ifdef WIN32 - sv_setpv(tmpsv,"perl.exe"); -#else - sv_setpv(tmpsv,"perl"); -#endif - SvSETMAGIC(tmpsv); - } - - TAINT_NOT; - - /* PL_main_cv = PL_compcv; */ - PL_compcv = 0; - - exitstatus = perl_init(); - if (exitstatus) - exit( exitstatus ); - dl_init(aTHX); - - exitstatus = perl_run( my_perl ); - - perl_destruct( my_perl ); - perl_free( my_perl ); - - PERL_SYS_TERM(); - - exit( exitstatus ); -} - -/* yanked from perl.c */ -static void -xs_init(pTHX) -{ - char *file = __FILE__; - dTARG; - dSP; -EOT - print "\n#ifdef USE_DYNAMIC_LOADING"; - print qq/\n\tnewXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);/; - print "\n#endif\n" ; - # delete $xsub{'DynaLoader'}; - delete $xsub{'UNIVERSAL'}; - print("/* bootstrapping code*/\n\tSAVETMPS;\n"); - print("\ttarg=sv_newmortal();\n"); - print "#ifdef USE_DYNAMIC_LOADING\n"; - print "\tPUSHMARK(sp);\n"; - print qq/\tXPUSHp("DynaLoader",strlen("DynaLoader"));\n/; - print qq/\tPUTBACK;\n/; - print "\tboot_DynaLoader(aTHX_ NULL);\n"; - print qq/\tSPAGAIN;\n/; - print "#endif\n"; - foreach my $stashname (keys %xsub){ - if ($xsub{$stashname} !~ m/Dynamic/ ) { - my $stashxsub=$stashname; - $stashxsub =~ s/::/__/g; - print "\tPUSHMARK(sp);\n"; - print qq/\tXPUSHp("$stashname",strlen("$stashname"));\n/; - print qq/\tPUTBACK;\n/; - print "\tboot_$stashxsub(aTHX_ NULL);\n"; - print qq/\tSPAGAIN;\n/; - } - } - print("\tFREETMPS;\n/* end bootstrapping code */\n"); - print "}\n"; - -print <<'EOT'; -static void -dl_init(pTHX) -{ - char *file = __FILE__; - dTARG; - dSP; -EOT - print("/* Dynamicboot strapping code*/\n\tSAVETMPS;\n"); - print("\ttarg=sv_newmortal();\n"); - foreach my $stashname (@DynaLoader::dl_modules) { - warn "Loaded $stashname\n"; - if (exists($xsub{$stashname}) && $xsub{$stashname} =~ m/Dynamic/) { - my $stashxsub=$stashname; - $stashxsub =~ s/::/__/g; - print "\tPUSHMARK(sp);\n"; - print qq/\tXPUSHp("$stashname",/,length($stashname),qq/);\n/; - print qq/\tPUTBACK;\n/; - print "#ifdef USE_DYNAMIC_LOADING\n"; - warn "bootstrapping $stashname added to xs_init\n"; - if( $xsub{$stashname} eq 'Dynamic' ) { - print qq/\tperl_call_method("bootstrap",G_DISCARD);\n/; - } - else { - print qq/\tperl_call_pv("XSLoader::load",G_DISCARD);\n/; - } - print "#else\n"; - print "\tboot_$stashxsub(aTHX_ NULL);\n"; - print "#endif\n"; - print qq/\tSPAGAIN;\n/; - } - } - print("\tFREETMPS;\n/* end Dynamic bootstrapping code */\n"); - print "}\n"; -} -sub dump_symtable { - # For debugging - my ($sym, $val); - warn "----Symbol table:\n"; - while (($sym, $val) = each %symtable) { - warn "$sym => $val\n"; - } - warn "---End of symbol table\n"; -} - -sub save_object { - my $sv; - foreach $sv (@_) { - svref_2object($sv)->save; - } -} - -sub Dummy_BootStrap { } - -sub B::GV::savecv -{ - my $gv = shift; - my $package=$gv->STASH->NAME; - my $name = $gv->NAME; - my $cv = $gv->CV; - my $sv = $gv->SV; - my $av = $gv->AV; - my $hv = $gv->HV; - - my $fullname = $gv->STASH->NAME . "::" . $gv->NAME; - - # We may be looking at this package just because it is a branch in the - # symbol table which is on the path to a package which we need to save - # e.g. this is 'Getopt' and we need to save 'Getopt::Long' - # - return unless ($unused_sub_packages{$package}); - return unless ($$cv || $$av || $$sv || $$hv); - $gv->save; -} - -sub mark_package -{ - my $package = shift; - unless ($unused_sub_packages{$package}) - { - no strict 'refs'; - $unused_sub_packages{$package} = 1; - if (defined @{$package.'::ISA'}) - { - foreach my $isa (@{$package.'::ISA'}) - { - if ($isa eq 'DynaLoader') - { - unless (defined(&{$package.'::bootstrap'})) - { - warn "Forcing bootstrap of $package\n"; - eval { $package->bootstrap }; - } - } -# else - { - unless ($unused_sub_packages{$isa}) - { - warn "$isa saved (it is in $package\'s \@ISA)\n"; - mark_package($isa); - } - } - } - } - } - return 1; -} - -sub should_save -{ - no strict qw(vars refs); - my $package = shift; - $package =~ s/::$//; - return $unused_sub_packages{$package} = 0 if ($package =~ /::::/); # skip ::::ISA::CACHE etc. - # warn "Considering $package\n";#debug - foreach my $u (grep($unused_sub_packages{$_},keys %unused_sub_packages)) - { - # If this package is a prefix to something we are saving, traverse it - # but do not mark it for saving if it is not already - # e.g. to get to Getopt::Long we need to traverse Getopt but need - # not save Getopt - return 1 if ($u =~ /^$package\:\:/); - } - if (exists $unused_sub_packages{$package}) - { - # warn "Cached $package is ".$unused_sub_packages{$package}."\n"; - delete_unsaved_hashINC($package) unless $unused_sub_packages{$package} ; - return $unused_sub_packages{$package}; - } - # Omit the packages which we use (and which cause grief - # because of fancy "goto &$AUTOLOAD" stuff). - # XXX Surely there must be a nicer way to do this. - if ($package eq "FileHandle" || $package eq "Config" || - $package eq "SelectSaver" || $package =~/^(B|IO)::/) - { - delete_unsaved_hashINC($package); - return $unused_sub_packages{$package} = 0; - } - # Now see if current package looks like an OO class this is probably too strong. - foreach my $m (qw(new DESTROY TIESCALAR TIEARRAY TIEHASH TIEHANDLE)) - { - if (UNIVERSAL::can($package, $m)) - { - warn "$package has method $m: saving package\n";#debug - return mark_package($package); - } - } - delete_unsaved_hashINC($package); - return $unused_sub_packages{$package} = 0; -} -sub delete_unsaved_hashINC{ - my $packname=shift; - $packname =~ s/\:\:/\//g; - $packname .= '.pm'; -# warn "deleting $packname" if $INC{$packname} ;# debug - delete $INC{$packname}; -} -sub walkpackages -{ - my ($symref, $recurse, $prefix) = @_; - my $sym; - my $ref; - no strict 'vars'; - $prefix = '' unless defined $prefix; - while (($sym, $ref) = each %$symref) - { - local(*glob); - *glob = $ref; - if ($sym =~ /::$/) - { - $sym = $prefix . $sym; - if ($sym ne "main::" && $sym ne "<none>::" && &$recurse($sym)) - { - walkpackages(\%glob, $recurse, $sym); - } - } - } -} - - -sub save_unused_subs -{ - no strict qw(refs); - &descend_marked_unused; - warn "Prescan\n"; - walkpackages(\%{"main::"}, sub { should_save($_[0]); return 1 }); - warn "Saving methods\n"; - walksymtable(\%{"main::"}, "savecv", \&should_save); -} - -sub save_context -{ - my $curpad_nam = (comppadlist->ARRAY)[0]->save; - my $curpad_sym = (comppadlist->ARRAY)[1]->save; - my $inc_hv = svref_2object(\%INC)->save; - my $inc_av = svref_2object(\@INC)->save; - my $amagic_generate= amagic_generation; - $init->add( "PL_curpad = AvARRAY($curpad_sym);", - "GvHV(PL_incgv) = $inc_hv;", - "GvAV(PL_incgv) = $inc_av;", - "av_store(CvPADLIST(PL_main_cv),0,SvREFCNT_inc($curpad_nam));", - "av_store(CvPADLIST(PL_main_cv),1,SvREFCNT_inc($curpad_sym));", - "PL_amagic_generation= $amagic_generate;" ); -} - -sub descend_marked_unused { - foreach my $pack (keys %unused_sub_packages) - { - mark_package($pack); - } -} - -sub save_main { - # this is mainly for the test suite - my $warner = $SIG{__WARN__}; - local $SIG{__WARN__} = sub { print STDERR @_ }; - - warn "Starting compile\n"; - warn "Walking tree\n"; - seek(STDOUT,0,0); #exclude print statements in BEGIN{} into output - walkoptree(main_root, "save"); - warn "done main optree, walking symtable for extras\n" if $debug_cv; - save_unused_subs(); - # XSLoader was used, force saving of XSLoader::load - if( $use_xsloader ) { - my $cv = svref_2object( \&XSLoader::load ); - $cv->save; - } - # save %SIG ( in case it was set in a BEGIN block ) - if( $save_sig ) { - local $SIG{__WARN__} = $warner; - $init->no_split; - $init->add("{", "\tHV* hv = get_hv(\"main::SIG\",1);" ); - foreach my $k ( keys %SIG ) { - next unless ref $SIG{$k}; - my $cv = svref_2object( \$SIG{$k} ); - my $sv = $cv->save; - $init->add('{',sprintf 'SV* sv = (SV*)%s;', $sv ); - $init->add(sprintf("\thv_store(hv, %s, %u, %s, %s);", - cstring($k),length(pack "a*",$k), - 'sv', hash($k))); - $init->add('mg_set(sv);','}'); - } - $init->add('}'); - $init->split; - } - # honour -w - $init->add( sprintf " PL_dowarn = ( %s ) ? G_WARN_ON : G_WARN_OFF;", $^W ); - # - my $init_av = init_av->save; - my $end_av = end_av->save; - $init->add(sprintf("PL_main_root = s\\_%x;", ${main_root()}), - sprintf("PL_main_start = s\\_%x;", ${main_start()}), - "PL_initav = (AV *) $init_av;", - "PL_endav = (AV*) $end_av;"); - save_context(); - # init op addrs ( must be the last action, otherwise - # some ops might not be initialized - if( $optimize_ppaddr ) { - foreach my $i ( @op_sections ) { - my $section = $$i; - next unless $section->index >= 0; - init_op_addr( $section->name, $section->index + 1); - } - } - init_op_warn( $copsect->name, $copsect->index + 1) - if $optimize_warn_sv && $copsect->index >= 0; - - warn "Writing output\n"; - output_boilerplate(); - print "\n"; - output_all("perl_init"); - print "\n"; - output_main(); -} - -sub init_sections { - my @sections = (decl => \$decl, sym => \$symsect, - binop => \$binopsect, condop => \$condopsect, - cop => \$copsect, padop => \$padopsect, - listop => \$listopsect, logop => \$logopsect, - loop => \$loopsect, op => \$opsect, pmop => \$pmopsect, - pvop => \$pvopsect, svop => \$svopsect, unop => \$unopsect, - sv => \$svsect, xpv => \$xpvsect, xpvav => \$xpvavsect, - xpvhv => \$xpvhvsect, xpvcv => \$xpvcvsect, - xpviv => \$xpvivsect, xpvnv => \$xpvnvsect, - xpvmg => \$xpvmgsect, xpvlv => \$xpvlvsect, - xrv => \$xrvsect, xpvbm => \$xpvbmsect, - xpvio => \$xpviosect); - my ($name, $sectref); - while (($name, $sectref) = splice(@sections, 0, 2)) { - $$sectref = new B::C::Section $name, \%symtable, 0; - } - $init = new B::C::InitSection 'init', \%symtable, 0; -} - -sub mark_unused -{ - my ($arg,$val) = @_; - $unused_sub_packages{$arg} = $val; -} - -sub compile { - my @options = @_; - my ($option, $opt, $arg); - my @eval_at_startup; - my %option_map = ( 'cog' => \$pv_copy_on_grow, - 'save-data' => \$save_data_fh, - 'ppaddr' => \$optimize_ppaddr, - 'warn-sv' => \$optimize_warn_sv, - 'use-script-name' => \$use_perl_script_name, - 'save-sig-hash' => \$save_sig, - ); - my %optimization_map = ( 0 => [ qw() ], # special case - 1 => [ qw(-fcog) ], - 2 => [ qw(-fwarn-sv -fppaddr) ], - ); - OPTION: - while ($option = shift @options) { - if ($option =~ /^-(.)(.*)/) { - $opt = $1; - $arg = $2; - } else { - unshift @options, $option; - last OPTION; - } - if ($opt eq "-" && $arg eq "-") { - shift @options; - last OPTION; - } - if ($opt eq "w") { - $warn_undefined_syms = 1; - } elsif ($opt eq "D") { - $arg ||= shift @options; - foreach $arg (split(//, $arg)) { - if ($arg eq "o") { - B->debug(1); - } elsif ($arg eq "c") { - $debug_cops = 1; - } elsif ($arg eq "A") { - $debug_av = 1; - } elsif ($arg eq "C") { - $debug_cv = 1; - } elsif ($arg eq "M") { - $debug_mg = 1; - } else { - warn "ignoring unknown debug option: $arg\n"; - } - } - } elsif ($opt eq "o") { - $arg ||= shift @options; - open(STDOUT, ">$arg") or return "$arg: $!\n"; - } elsif ($opt eq "v") { - $verbose = 1; - } elsif ($opt eq "u") { - $arg ||= shift @options; - mark_unused($arg,undef); - } elsif ($opt eq "f") { - $arg ||= shift @options; - $arg =~ m/(no-)?(.*)/; - my $no = defined($1) && $1 eq 'no-'; - $arg = $no ? $2 : $arg; - if( exists $option_map{$arg} ) { - ${$option_map{$arg}} = !$no; - } else { - die "Invalid optimization '$arg'"; - } - } elsif ($opt eq "O") { - $arg = 1 if $arg eq ""; - my @opt; - foreach my $i ( 1 .. $arg ) { - push @opt, @{$optimization_map{$i}} - if exists $optimization_map{$i}; - } - unshift @options, @opt; - } elsif ($opt eq "e") { - push @eval_at_startup, $arg; - } elsif ($opt eq "l") { - $max_string_len = $arg; - } - } - init_sections(); - foreach my $i ( @eval_at_startup ) { - $init->add_eval( $i ); - } - if (@options) { - return sub { - my $objname; - foreach $objname (@options) { - eval "save_object(\\$objname)"; - } - output_all(); - } - } else { - return sub { save_main() }; - } -} - -1; - -__END__ - -=head1 NAME - -B::C - Perl compiler's C backend - -=head1 SYNOPSIS - - perl -MO=C[,OPTIONS] foo.pl - -=head1 DESCRIPTION - -This compiler backend takes Perl source and generates C source code -corresponding to the internal structures that perl uses to run -your program. When the generated C source is compiled and run, it -cuts out the time which perl would have taken to load and parse -your program into its internal semi-compiled form. That means that -compiling with this backend will not help improve the runtime -execution speed of your program but may improve the start-up time. -Depending on the environment in which your program runs this may be -either a help or a hindrance. - -=head1 OPTIONS - -If there are any non-option arguments, they are taken to be -names of objects to be saved (probably doesn't work properly yet). -Without extra arguments, it saves the main program. - -=over 4 - -=item B<-ofilename> - -Output to filename instead of STDOUT - -=item B<-v> - -Verbose compilation (currently gives a few compilation statistics). - -=item B<--> - -Force end of options - -=item B<-uPackname> - -Force apparently unused subs from package Packname to be compiled. -This allows programs to use eval "foo()" even when sub foo is never -seen to be used at compile time. The down side is that any subs which -really are never used also have code generated. This option is -necessary, for example, if you have a signal handler foo which you -initialise with C<$SIG{BAR} = "foo">. A better fix, though, is just -to change it to C<$SIG{BAR} = \&foo>. You can have multiple B<-u> -options. The compiler tries to figure out which packages may possibly -have subs in which need compiling but the current version doesn't do -it very well. In particular, it is confused by nested packages (i.e. -of the form C<A::B>) where package C<A> does not contain any subs. - -=item B<-D> - -Debug options (concatenated or separate flags like C<perl -D>). - -=item B<-Do> - -OPs, prints each OP as it's processed - -=item B<-Dc> - -COPs, prints COPs as processed (incl. file & line num) - -=item B<-DA> - -prints AV information on saving - -=item B<-DC> - -prints CV information on saving - -=item B<-DM> - -prints MAGIC information on saving - -=item B<-f> - -Force options/optimisations on or off one at a time. You can explicitly -disable an option using B<-fno-option>. All options default to -B<disabled>. - -=over 4 - -=item B<-fcog> - -Copy-on-grow: PVs declared and initialised statically. - -=item B<-fsave-data> - -Save package::DATA filehandles ( only available with PerlIO ). - -=item B<-fppaddr> - -Optimize the initialization of op_ppaddr. - -=item B<-fwarn-sv> - -Optimize the initialization of cop_warnings. - -=item B<-fuse-script-name> - -Use the script name instead of the program name as $0. - -=item B<-fsave-sig-hash> - -Save compile-time modifications to the %SIG hash. - -=back - -=item B<-On> - -Optimisation level (n = 0, 1, 2, ...). B<-O> means B<-O1>. - -=over 4 - -=item B<-O0> - -Disable all optimizations. - -=item B<-O1> - -Enable B<-fcog>. - -=item B<-O2> - -Enable B<-fppaddr>, B<-fwarn-sv>. - -=back - -=item B<-llimit> - -Some C compilers impose an arbitrary limit on the length of string -constants (e.g. 2048 characters for Microsoft Visual C++). The -B<-llimit> options tells the C backend not to generate string literals -exceeding that limit. - -=back - -=head1 EXAMPLES - - perl -MO=C,-ofoo.c foo.pl - perl cc_harness -o foo foo.c - -Note that C<cc_harness> lives in the C<B> subdirectory of your perl -library directory. The utility called C<perlcc> may also be used to -help make use of this compiler. - - perl -MO=C,-v,-DcA,-l2048 bar.pl > /dev/null - -=head1 BUGS - -Plenty. Current status: experimental. - -=head1 AUTHOR - -Malcolm Beattie, C<mbeattie@sable.ox.ac.uk> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/B/CC.pm b/Master/tlpkg/tlperl.old/lib/B/CC.pm deleted file mode 100644 index 079313a0a4e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/CC.pm +++ /dev/null @@ -1,2005 +0,0 @@ -# CC.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::CC; - -our $VERSION = '1.00_01'; - -use Config; -use strict; -use B qw(main_start main_root class comppadlist peekop svref_2object - timing_info init_av sv_undef amagic_generation - OPf_WANT_LIST OPf_WANT OPf_MOD OPf_STACKED OPf_SPECIAL - OPpASSIGN_BACKWARDS OPpLVAL_INTRO OPpDEREF_AV OPpDEREF_HV - OPpDEREF OPpFLIP_LINENUM G_ARRAY G_SCALAR - CXt_NULL CXt_SUB CXt_EVAL CXt_LOOP CXt_SUBST CXt_BLOCK - ); -use B::C qw(save_unused_subs objsym init_sections mark_unused - output_all output_boilerplate output_main); -use B::Bblock qw(find_leaders); -use B::Stackobj qw(:types :flags); - -# These should probably be elsewhere -# Flags for $op->flags - -my $module; # module name (when compiled with -m) -my %done; # hash keyed by $$op of leaders of basic blocks - # which have already been done. -my $leaders; # ref to hash of basic block leaders. Keys are $$op - # addresses, values are the $op objects themselves. -my @bblock_todo; # list of leaders of basic blocks that need visiting - # sometime. -my @cc_todo; # list of tuples defining what PP code needs to be - # saved (e.g. CV, main or PMOP repl code). Each tuple - # is [$name, $root, $start, @padlist]. PMOP repl code - # tuples inherit padlist. -my @stack; # shadows perl's stack when contents are known. - # Values are objects derived from class B::Stackobj -my @pad; # Lexicals in current pad as Stackobj-derived objects -my @padlist; # Copy of current padlist so PMOP repl code can find it -my @cxstack; # Shadows the (compile-time) cxstack for next,last,redo -my $jmpbuf_ix = 0; # Next free index for dynamically allocated jmpbufs -my %constobj; # OP_CONST constants as Stackobj-derived objects - # keyed by $$sv. -my $need_freetmps = 0; # We may postpone FREETMPS to the end of each basic - # block or even to the end of each loop of blocks, - # depending on optimisation options. -my $know_op = 0; # Set when C variable op already holds the right op - # (from an immediately preceding DOOP(ppname)). -my $errors = 0; # Number of errors encountered -my %skip_stack; # Hash of PP names which don't need write_back_stack -my %skip_lexicals; # Hash of PP names which don't need write_back_lexicals -my %skip_invalidate; # Hash of PP names which don't need invalidate_lexicals -my %ignore_op; # Hash of ops which do nothing except returning op_next -my %need_curcop; # Hash of ops which need PL_curcop - -my %lexstate; #state of padsvs at the start of a bblock - -BEGIN { - foreach (qw(pp_scalar pp_regcmaybe pp_lineseq pp_scope pp_null)) { - $ignore_op{$_} = 1; - } -} - -my ($module_name); -my ($debug_op, $debug_stack, $debug_cxstack, $debug_pad, $debug_runtime, - $debug_shadow, $debug_queue, $debug_lineno, $debug_timings); - -# Optimisation options. On the command line, use hyphens instead of -# underscores for compatibility with gcc-style options. We use -# underscores here because they are OK in (strict) barewords. -my ($freetmps_each_bblock, $freetmps_each_loop, $omit_taint); -my %optimise = (freetmps_each_bblock => \$freetmps_each_bblock, - freetmps_each_loop => \$freetmps_each_loop, - omit_taint => \$omit_taint); -# perl patchlevel to generate code for (defaults to current patchlevel) -my $patchlevel = int(0.5 + 1000 * ($] - 5)); - -# Could rewrite push_runtime() and output_runtime() to use a -# temporary file if memory is at a premium. -my $ppname; # name of current fake PP function -my $runtime_list_ref; -my $declare_ref; # Hash ref keyed by C variable type of declarations. - -my @pp_list; # list of [$ppname, $runtime_list_ref, $declare_ref] - # tuples to be written out. - -my ($init, $decl); - -sub init_hash { map { $_ => 1 } @_ } - -# -# Initialise the hashes for the default PP functions where we can avoid -# either write_back_stack, write_back_lexicals or invalidate_lexicals. -# -%skip_lexicals = init_hash qw(pp_enter pp_enterloop); -%skip_invalidate = init_hash qw(pp_enter pp_enterloop); -%need_curcop = init_hash qw(pp_rv2gv pp_bless pp_repeat pp_sort pp_caller - pp_reset pp_rv2cv pp_entereval pp_require pp_dofile - pp_entertry pp_enterloop pp_enteriter pp_entersub - pp_enter pp_method); - -sub debug { - if ($debug_runtime) { - warn(@_); - } else { - my @tmp=@_; - runtime(map { chomp; "/* $_ */"} @tmp); - } -} - -sub declare { - my ($type, $var) = @_; - push(@{$declare_ref->{$type}}, $var); -} - -sub push_runtime { - push(@$runtime_list_ref, @_); - warn join("\n", @_) . "\n" if $debug_runtime; -} - -sub save_runtime { - push(@pp_list, [$ppname, $runtime_list_ref, $declare_ref]); -} - -sub output_runtime { - my $ppdata; - print qq(#include "cc_runtime.h"\n); - foreach $ppdata (@pp_list) { - my ($name, $runtime, $declare) = @$ppdata; - print "\nstatic\nCCPP($name)\n{\n"; - my ($type, $varlist, $line); - while (($type, $varlist) = each %$declare) { - print "\t$type ", join(", ", @$varlist), ";\n"; - } - foreach $line (@$runtime) { - print $line, "\n"; - } - print "}\n"; - } -} - -sub runtime { - my $line; - foreach $line (@_) { - push_runtime("\t$line"); - } -} - -sub init_pp { - $ppname = shift; - $runtime_list_ref = []; - $declare_ref = {}; - runtime("dSP;"); - declare("I32", "oldsave"); - declare("SV", "**svp"); - map { declare("SV", "*$_") } qw(sv src dst left right); - declare("MAGIC", "*mg"); - $decl->add("static OP * $ppname (pTHX);"); - debug "init_pp: $ppname\n" if $debug_queue; -} - -# Initialise runtime_callback function for Stackobj class -BEGIN { B::Stackobj::set_callback(\&runtime) } - -# Initialise saveoptree_callback for B::C class -sub cc_queue { - my ($name, $root, $start, @pl) = @_; - debug "cc_queue: name $name, root $root, start $start, padlist (@pl)\n" - if $debug_queue; - if ($name eq "*ignore*") { - $name = 0; - } else { - push(@cc_todo, [$name, $root, $start, (@pl ? @pl : @padlist)]); - } - my $fakeop = new B::FAKEOP ("next" => 0, sibling => 0, ppaddr => $name); - $start = $fakeop->save; - debug "cc_queue: name $name returns $start\n" if $debug_queue; - return $start; -} -BEGIN { B::C::set_callback(\&cc_queue) } - -sub valid_int { $_[0]->{flags} & VALID_INT } -sub valid_double { $_[0]->{flags} & VALID_DOUBLE } -sub valid_numeric { $_[0]->{flags} & (VALID_INT | VALID_DOUBLE) } -sub valid_sv { $_[0]->{flags} & VALID_SV } - -sub top_int { @stack ? $stack[-1]->as_int : "TOPi" } -sub top_double { @stack ? $stack[-1]->as_double : "TOPn" } -sub top_numeric { @stack ? $stack[-1]->as_numeric : "TOPn" } -sub top_sv { @stack ? $stack[-1]->as_sv : "TOPs" } -sub top_bool { @stack ? $stack[-1]->as_bool : "SvTRUE(TOPs)" } - -sub pop_int { @stack ? (pop @stack)->as_int : "POPi" } -sub pop_double { @stack ? (pop @stack)->as_double : "POPn" } -sub pop_numeric { @stack ? (pop @stack)->as_numeric : "POPn" } -sub pop_sv { @stack ? (pop @stack)->as_sv : "POPs" } -sub pop_bool { - if (@stack) { - return ((pop @stack)->as_bool); - } else { - # Careful: POPs has an auto-decrement and SvTRUE evaluates - # its argument more than once. - runtime("sv = POPs;"); - return "SvTRUE(sv)"; - } -} - -sub write_back_lexicals { - my $avoid = shift || 0; - debug "write_back_lexicals($avoid) called from @{[(caller(1))[3]]}\n" - if $debug_shadow; - my $lex; - foreach $lex (@pad) { - next unless ref($lex); - $lex->write_back unless $lex->{flags} & $avoid; - } -} - -sub save_or_restore_lexical_state { - my $bblock=shift; - unless( exists $lexstate{$bblock}){ - foreach my $lex (@pad) { - next unless ref($lex); - ${$lexstate{$bblock}}{$lex->{iv}} = $lex->{flags} ; - } - } - else { - foreach my $lex (@pad) { - next unless ref($lex); - my $old_flags=${$lexstate{$bblock}}{$lex->{iv}} ; - next if ( $old_flags eq $lex->{flags}); - if (($old_flags & VALID_SV) && !($lex->{flags} & VALID_SV)){ - $lex->write_back; - } - if (($old_flags & VALID_DOUBLE) && !($lex->{flags} & VALID_DOUBLE)){ - $lex->load_double; - } - if (($old_flags & VALID_INT) && !($lex->{flags} & VALID_INT)){ - $lex->load_int; - } - } - } -} - -sub write_back_stack { - my $obj; - return unless @stack; - runtime(sprintf("EXTEND(sp, %d);", scalar(@stack))); - foreach $obj (@stack) { - runtime(sprintf("PUSHs((SV*)%s);", $obj->as_sv)); - } - @stack = (); -} - -sub invalidate_lexicals { - my $avoid = shift || 0; - debug "invalidate_lexicals($avoid) called from @{[(caller(1))[3]]}\n" - if $debug_shadow; - my $lex; - foreach $lex (@pad) { - next unless ref($lex); - $lex->invalidate unless $lex->{flags} & $avoid; - } -} - -sub reload_lexicals { - my $lex; - foreach $lex (@pad) { - next unless ref($lex); - my $type = $lex->{type}; - if ($type == T_INT) { - $lex->as_int; - } elsif ($type == T_DOUBLE) { - $lex->as_double; - } else { - $lex->as_sv; - } - } -} - -{ - package B::Pseudoreg; - # - # This class allocates pseudo-registers (OK, so they're C variables). - # - my %alloc; # Keyed by variable name. A value of 1 means the - # variable has been declared. A value of 2 means - # it's in use. - - sub new_scope { %alloc = () } - - sub new ($$$) { - my ($class, $type, $prefix) = @_; - my ($ptr, $i, $varname, $status, $obj); - $prefix =~ s/^(\**)//; - $ptr = $1; - $i = 0; - do { - $varname = "$prefix$i"; - $status = $alloc{$varname}; - } while $status == 2; - if ($status != 1) { - # Not declared yet - B::CC::declare($type, "$ptr$varname"); - $alloc{$varname} = 2; # declared and in use - } - $obj = bless \$varname, $class; - return $obj; - } - sub DESTROY { - my $obj = shift; - $alloc{$$obj} = 1; # no longer in use but still declared - } -} -{ - package B::Shadow; - # - # This class gives a standard API for a perl object to shadow a - # C variable and only generate reloads/write-backs when necessary. - # - # Use $obj->load($foo) instead of runtime("shadowed_c_var = foo"). - # Use $obj->write_back whenever shadowed_c_var needs to be up to date. - # Use $obj->invalidate whenever an unknown function may have - # set shadow itself. - - sub new { - my ($class, $write_back) = @_; - # Object fields are perl shadow variable, validity flag - # (for *C* variable) and callback sub for write_back - # (passed perl shadow variable as argument). - bless [undef, 1, $write_back], $class; - } - sub load { - my ($obj, $newval) = @_; - $obj->[1] = 0; # C variable no longer valid - $obj->[0] = $newval; - } - sub write_back { - my $obj = shift; - if (!($obj->[1])) { - $obj->[1] = 1; # C variable will now be valid - &{$obj->[2]}($obj->[0]); - } - } - sub invalidate { $_[0]->[1] = 0 } # force C variable to be invalid -} -my $curcop = new B::Shadow (sub { - my $opsym = shift->save; - runtime("PL_curcop = (COP*)$opsym;"); -}); - -# -# Context stack shadowing. Mimics stuff in pp_ctl.c, cop.h and so on. -# -sub dopoptoloop { - my $cxix = $#cxstack; - while ($cxix >= 0 && $cxstack[$cxix]->{type} != CXt_LOOP) { - $cxix--; - } - debug "dopoptoloop: returning $cxix" if $debug_cxstack; - return $cxix; -} - -sub dopoptolabel { - my $label = shift; - my $cxix = $#cxstack; - while ($cxix >= 0 && - ($cxstack[$cxix]->{type} != CXt_LOOP || - $cxstack[$cxix]->{label} ne $label)) { - $cxix--; - } - debug "dopoptolabel: returning $cxix" if $debug_cxstack; - return $cxix; -} - -sub error { - my $format = shift; - my $file = $curcop->[0]->file; - my $line = $curcop->[0]->line; - $errors++; - if (@_) { - warn sprintf("%s:%d: $format\n", $file, $line, @_); - } else { - warn sprintf("%s:%d: %s\n", $file, $line, $format); - } -} - -# -# Load pad takes (the elements of) a PADLIST as arguments and loads -# up @pad with Stackobj-derived objects which represent those lexicals. -# If/when perl itself can generate type information (my int $foo) then -# we'll take advantage of that here. Until then, we'll use various hacks -# to tell the compiler when we want a lexical to be a particular type -# or to be a register. -# -sub load_pad { - my ($namelistav, $valuelistav) = @_; - @padlist = @_; - my @namelist = $namelistav->ARRAY; - my @valuelist = $valuelistav->ARRAY; - my $ix; - @pad = (); - debug "load_pad: $#namelist names, $#valuelist values\n" if $debug_pad; - # Temporary lexicals don't get named so it's possible for @valuelist - # to be strictly longer than @namelist. We count $ix up to the end of - # @valuelist but index into @namelist for the name. Any temporaries which - # run off the end of @namelist will make $namesv undefined and we treat - # that the same as having an explicit SPECIAL sv_undef object in @namelist. - # [XXX If/when @_ becomes a lexical, we must start at 0 here.] - for ($ix = 1; $ix < @valuelist; $ix++) { - my $namesv = $namelist[$ix]; - my $type = T_UNKNOWN; - my $flags = 0; - my $name = "tmp$ix"; - my $class = class($namesv); - if (!defined($namesv) || $class eq "SPECIAL") { - # temporaries have &PL_sv_undef instead of a PVNV for a name - $flags = VALID_SV|TEMPORARY|REGISTER; - } else { - if ($namesv->PV =~ /^\$(.*)_([di])(r?)$/) { - $name = $1; - if ($2 eq "i") { - $type = T_INT; - $flags = VALID_SV|VALID_INT; - } elsif ($2 eq "d") { - $type = T_DOUBLE; - $flags = VALID_SV|VALID_DOUBLE; - } - $flags |= REGISTER if $3; - } - } - $pad[$ix] = new B::Stackobj::Padsv ($type, $flags, $ix, - "i_$name", "d_$name"); - - debug sprintf("PL_curpad[$ix] = %s\n", $pad[$ix]->peek) if $debug_pad; - } -} - -sub declare_pad { - my $ix; - for ($ix = 1; $ix <= $#pad; $ix++) { - my $type = $pad[$ix]->{type}; - declare("IV", $type == T_INT ? - sprintf("%s=0",$pad[$ix]->{iv}):$pad[$ix]->{iv}) if $pad[$ix]->save_int; - declare("double", $type == T_DOUBLE ? - sprintf("%s = 0",$pad[$ix]->{nv}):$pad[$ix]->{nv} )if $pad[$ix]->save_double; - - } -} -# -# Debugging stuff -# -sub peek_stack { sprintf "stack = %s\n", join(" ", map($_->minipeek, @stack)) } - -# -# OP stuff -# - -sub label { - my $op = shift; - # XXX Preserve original label name for "real" labels? - return sprintf("lab_%x", $$op); -} - -sub write_label { - my $op = shift; - push_runtime(sprintf(" %s:", label($op))); -} - -sub loadop { - my $op = shift; - my $opsym = $op->save; - runtime("PL_op = $opsym;") unless $know_op; - return $opsym; -} - -sub doop { - my $op = shift; - my $ppname = $op->ppaddr; - my $sym = loadop($op); - runtime("DOOP($ppname);"); - $know_op = 1; - return $sym; -} - -sub gimme { - my $op = shift; - my $flags = $op->flags; - return (($flags & OPf_WANT) ? (($flags & OPf_WANT)== OPf_WANT_LIST? G_ARRAY:G_SCALAR) : "dowantarray()"); -} - -# -# Code generation for PP code -# - -sub pp_null { - my $op = shift; - return $op->next; -} - -sub pp_stub { - my $op = shift; - my $gimme = gimme($op); - if ($gimme != G_ARRAY) { - my $obj= new B::Stackobj::Const(sv_undef); - push(@stack, $obj); - # XXX Change to push a constant sv_undef Stackobj onto @stack - #write_back_stack(); - #runtime("if ($gimme != G_ARRAY) XPUSHs(&PL_sv_undef);"); - } - return $op->next; -} - -sub pp_unstack { - my $op = shift; - @stack = (); - runtime("PP_UNSTACK;"); - return $op->next; -} - -sub pp_and { - my $op = shift; - my $next = $op->next; - reload_lexicals(); - unshift(@bblock_todo, $next); - if (@stack >= 1) { - my $bool = pop_bool(); - write_back_stack(); - save_or_restore_lexical_state($$next); - runtime(sprintf("if (!$bool) {XPUSHs(&PL_sv_no); goto %s;}", label($next))); - } else { - save_or_restore_lexical_state($$next); - runtime(sprintf("if (!%s) goto %s;", top_bool(), label($next)), - "*sp--;"); - } - return $op->other; -} - -sub pp_or { - my $op = shift; - my $next = $op->next; - reload_lexicals(); - unshift(@bblock_todo, $next); - if (@stack >= 1) { - my $bool = pop_bool @stack; - write_back_stack(); - save_or_restore_lexical_state($$next); - runtime(sprintf("if (%s) { XPUSHs(&PL_sv_yes); goto %s; }", - $bool, label($next))); - } else { - save_or_restore_lexical_state($$next); - runtime(sprintf("if (%s) goto %s;", top_bool(), label($next)), - "*sp--;"); - } - return $op->other; -} - -sub pp_cond_expr { - my $op = shift; - my $false = $op->next; - unshift(@bblock_todo, $false); - reload_lexicals(); - my $bool = pop_bool(); - write_back_stack(); - save_or_restore_lexical_state($$false); - runtime(sprintf("if (!$bool) goto %s;", label($false))); - return $op->other; -} - -sub pp_padsv { - my $op = shift; - my $ix = $op->targ; - push(@stack, $pad[$ix]); - if ($op->flags & OPf_MOD) { - my $private = $op->private; - if ($private & OPpLVAL_INTRO) { - runtime("SAVECLEARSV(PL_curpad[$ix]);"); - } elsif ($private & OPpDEREF) { - runtime(sprintf("vivify_ref(PL_curpad[%d], %d);", - $ix, $private & OPpDEREF)); - $pad[$ix]->invalidate; - } - } - return $op->next; -} - -sub pp_const { - my $op = shift; - my $sv = $op->sv; - my $obj; - # constant could be in the pad (under useithreads) - if ($$sv) { - $obj = $constobj{$$sv}; - if (!defined($obj)) { - $obj = $constobj{$$sv} = new B::Stackobj::Const ($sv); - } - } - else { - $obj = $pad[$op->targ]; - } - push(@stack, $obj); - return $op->next; -} - -sub pp_nextstate { - my $op = shift; - $curcop->load($op); - @stack = (); - debug(sprintf("%s:%d\n", $op->file, $op->line)) if $debug_lineno; - runtime("TAINT_NOT;") unless $omit_taint; - runtime("sp = PL_stack_base + cxstack[cxstack_ix].blk_oldsp;"); - if ($freetmps_each_bblock || $freetmps_each_loop) { - $need_freetmps = 1; - } else { - runtime("FREETMPS;"); - } - return $op->next; -} - -sub pp_dbstate { - my $op = shift; - $curcop->invalidate; # XXX? - return default_pp($op); -} - -#default_pp will handle this: -#sub pp_bless { $curcop->write_back; default_pp(@_) } -#sub pp_repeat { $curcop->write_back; default_pp(@_) } -# The following subs need $curcop->write_back if we decide to support arybase: -# pp_pos, pp_substr, pp_index, pp_rindex, pp_aslice, pp_lslice, pp_splice -#sub pp_caller { $curcop->write_back; default_pp(@_) } -#sub pp_reset { $curcop->write_back; default_pp(@_) } - -sub pp_rv2gv{ - my $op =shift; - $curcop->write_back; - write_back_lexicals() unless $skip_lexicals{$ppname}; - write_back_stack() unless $skip_stack{$ppname}; - my $sym=doop($op); - if ($op->private & OPpDEREF) { - $init->add(sprintf("((UNOP *)$sym)->op_first = $sym;")); - $init->add(sprintf("((UNOP *)$sym)->op_type = %d;", - $op->first->type)); - } - return $op->next; -} -sub pp_sort { - my $op = shift; - my $ppname = $op->ppaddr; - if ( $op->flags & OPf_SPECIAL && $op->flags & OPf_STACKED){ - #this indicates the sort BLOCK Array case - #ugly surgery required. - my $root=$op->first->sibling->first; - my $start=$root->first; - $op->first->save; - $op->first->sibling->save; - $root->save; - my $sym=$start->save; - my $fakeop=cc_queue("pp_sort".$$op,$root,$start); - $init->add(sprintf("(%s)->op_next=%s;",$sym,$fakeop)); - } - $curcop->write_back; - write_back_lexicals(); - write_back_stack(); - doop($op); - return $op->next; -} - -sub pp_gv { - my $op = shift; - my $gvsym; - if ($Config{useithreads}) { - $gvsym = $pad[$op->padix]->as_sv; - } - else { - $gvsym = $op->gv->save; - } - write_back_stack(); - runtime("XPUSHs((SV*)$gvsym);"); - return $op->next; -} - -sub pp_gvsv { - my $op = shift; - my $gvsym; - if ($Config{useithreads}) { - $gvsym = $pad[$op->padix]->as_sv; - } - else { - $gvsym = $op->gv->save; - } - write_back_stack(); - if ($op->private & OPpLVAL_INTRO) { - runtime("XPUSHs(save_scalar($gvsym));"); - } else { - runtime("XPUSHs(GvSV($gvsym));"); - } - return $op->next; -} - -sub pp_aelemfast { - my $op = shift; - my $gvsym; - if ($Config{useithreads}) { - $gvsym = $pad[$op->padix]->as_sv; - } - else { - $gvsym = $op->gv->save; - } - my $ix = $op->private; - my $flag = $op->flags & OPf_MOD; - write_back_stack(); - runtime("svp = av_fetch(GvAV($gvsym), $ix, $flag);", - "PUSHs(svp ? *svp : &PL_sv_undef);"); - return $op->next; -} - -sub int_binop { - my ($op, $operator) = @_; - if ($op->flags & OPf_STACKED) { - my $right = pop_int(); - if (@stack >= 1) { - my $left = top_int(); - $stack[-1]->set_int(&$operator($left, $right)); - } else { - runtime(sprintf("sv_setiv(TOPs, %s);",&$operator("TOPi", $right))); - } - } else { - my $targ = $pad[$op->targ]; - my $right = new B::Pseudoreg ("IV", "riv"); - my $left = new B::Pseudoreg ("IV", "liv"); - runtime(sprintf("$$right = %s; $$left = %s;", pop_int(), pop_int)); - $targ->set_int(&$operator($$left, $$right)); - push(@stack, $targ); - } - return $op->next; -} - -sub INTS_CLOSED () { 0x1 } -sub INT_RESULT () { 0x2 } -sub NUMERIC_RESULT () { 0x4 } - -sub numeric_binop { - my ($op, $operator, $flags) = @_; - my $force_int = 0; - $force_int ||= ($flags & INT_RESULT); - $force_int ||= ($flags & INTS_CLOSED && @stack >= 2 - && valid_int($stack[-2]) && valid_int($stack[-1])); - if ($op->flags & OPf_STACKED) { - my $right = pop_numeric(); - if (@stack >= 1) { - my $left = top_numeric(); - if ($force_int) { - $stack[-1]->set_int(&$operator($left, $right)); - } else { - $stack[-1]->set_numeric(&$operator($left, $right)); - } - } else { - if ($force_int) { - my $rightruntime = new B::Pseudoreg ("IV", "riv"); - runtime(sprintf("$$rightruntime = %s;",$right)); - runtime(sprintf("sv_setiv(TOPs, %s);", - &$operator("TOPi", $$rightruntime))); - } else { - my $rightruntime = new B::Pseudoreg ("double", "rnv"); - runtime(sprintf("$$rightruntime = %s;",$right)); - runtime(sprintf("sv_setnv(TOPs, %s);", - &$operator("TOPn",$$rightruntime))); - } - } - } else { - my $targ = $pad[$op->targ]; - $force_int ||= ($targ->{type} == T_INT); - if ($force_int) { - my $right = new B::Pseudoreg ("IV", "riv"); - my $left = new B::Pseudoreg ("IV", "liv"); - runtime(sprintf("$$right = %s; $$left = %s;", - pop_numeric(), pop_numeric)); - $targ->set_int(&$operator($$left, $$right)); - } else { - my $right = new B::Pseudoreg ("double", "rnv"); - my $left = new B::Pseudoreg ("double", "lnv"); - runtime(sprintf("$$right = %s; $$left = %s;", - pop_numeric(), pop_numeric)); - $targ->set_numeric(&$operator($$left, $$right)); - } - push(@stack, $targ); - } - return $op->next; -} - -sub pp_ncmp { - my ($op) = @_; - if ($op->flags & OPf_STACKED) { - my $right = pop_numeric(); - if (@stack >= 1) { - my $left = top_numeric(); - runtime sprintf("if (%s > %s){",$left,$right); - $stack[-1]->set_int(1); - $stack[-1]->write_back(); - runtime sprintf("}else if (%s < %s ) {",$left,$right); - $stack[-1]->set_int(-1); - $stack[-1]->write_back(); - runtime sprintf("}else if (%s == %s) {",$left,$right); - $stack[-1]->set_int(0); - $stack[-1]->write_back(); - runtime sprintf("}else {"); - $stack[-1]->set_sv("&PL_sv_undef"); - runtime "}"; - } else { - my $rightruntime = new B::Pseudoreg ("double", "rnv"); - runtime(sprintf("$$rightruntime = %s;",$right)); - runtime sprintf(qq/if ("TOPn" > %s){/,$rightruntime); - runtime sprintf("sv_setiv(TOPs,1);"); - runtime sprintf(qq/}else if ( "TOPn" < %s ) {/,$$rightruntime); - runtime sprintf("sv_setiv(TOPs,-1);"); - runtime sprintf(qq/} else if ("TOPn" == %s) {/,$$rightruntime); - runtime sprintf("sv_setiv(TOPs,0);"); - runtime sprintf(qq/}else {/); - runtime sprintf("sv_setiv(TOPs,&PL_sv_undef;"); - runtime "}"; - } - } else { - my $targ = $pad[$op->targ]; - my $right = new B::Pseudoreg ("double", "rnv"); - my $left = new B::Pseudoreg ("double", "lnv"); - runtime(sprintf("$$right = %s; $$left = %s;", - pop_numeric(), pop_numeric)); - runtime sprintf("if (%s > %s){",$$left,$$right); - $targ->set_int(1); - $targ->write_back(); - runtime sprintf("}else if (%s < %s ) {",$$left,$$right); - $targ->set_int(-1); - $targ->write_back(); - runtime sprintf("}else if (%s == %s) {",$$left,$$right); - $targ->set_int(0); - $targ->write_back(); - runtime sprintf("}else {"); - $targ->set_sv("&PL_sv_undef"); - runtime "}"; - push(@stack, $targ); - } - return $op->next; -} - -sub sv_binop { - my ($op, $operator, $flags) = @_; - if ($op->flags & OPf_STACKED) { - my $right = pop_sv(); - if (@stack >= 1) { - my $left = top_sv(); - if ($flags & INT_RESULT) { - $stack[-1]->set_int(&$operator($left, $right)); - } elsif ($flags & NUMERIC_RESULT) { - $stack[-1]->set_numeric(&$operator($left, $right)); - } else { - # XXX Does this work? - runtime(sprintf("sv_setsv($left, %s);", - &$operator($left, $right))); - $stack[-1]->invalidate; - } - } else { - my $f; - if ($flags & INT_RESULT) { - $f = "sv_setiv"; - } elsif ($flags & NUMERIC_RESULT) { - $f = "sv_setnv"; - } else { - $f = "sv_setsv"; - } - runtime(sprintf("%s(TOPs, %s);", $f, &$operator("TOPs", $right))); - } - } else { - my $targ = $pad[$op->targ]; - runtime(sprintf("right = %s; left = %s;", pop_sv(), pop_sv)); - if ($flags & INT_RESULT) { - $targ->set_int(&$operator("left", "right")); - } elsif ($flags & NUMERIC_RESULT) { - $targ->set_numeric(&$operator("left", "right")); - } else { - # XXX Does this work? - runtime(sprintf("sv_setsv(%s, %s);", - $targ->as_sv, &$operator("left", "right"))); - $targ->invalidate; - } - push(@stack, $targ); - } - return $op->next; -} - -sub bool_int_binop { - my ($op, $operator) = @_; - my $right = new B::Pseudoreg ("IV", "riv"); - my $left = new B::Pseudoreg ("IV", "liv"); - runtime(sprintf("$$right = %s; $$left = %s;", pop_int(), pop_int())); - my $bool = new B::Stackobj::Bool (new B::Pseudoreg ("int", "b")); - $bool->set_int(&$operator($$left, $$right)); - push(@stack, $bool); - return $op->next; -} - -sub bool_numeric_binop { - my ($op, $operator) = @_; - my $right = new B::Pseudoreg ("double", "rnv"); - my $left = new B::Pseudoreg ("double", "lnv"); - runtime(sprintf("$$right = %s; $$left = %s;", - pop_numeric(), pop_numeric())); - my $bool = new B::Stackobj::Bool (new B::Pseudoreg ("int", "b")); - $bool->set_numeric(&$operator($$left, $$right)); - push(@stack, $bool); - return $op->next; -} - -sub bool_sv_binop { - my ($op, $operator) = @_; - runtime(sprintf("right = %s; left = %s;", pop_sv(), pop_sv())); - my $bool = new B::Stackobj::Bool (new B::Pseudoreg ("int", "b")); - $bool->set_numeric(&$operator("left", "right")); - push(@stack, $bool); - return $op->next; -} - -sub infix_op { - my $opname = shift; - return sub { "$_[0] $opname $_[1]" } -} - -sub prefix_op { - my $opname = shift; - return sub { sprintf("%s(%s)", $opname, join(", ", @_)) } -} - -BEGIN { - my $plus_op = infix_op("+"); - my $minus_op = infix_op("-"); - my $multiply_op = infix_op("*"); - my $divide_op = infix_op("/"); - my $modulo_op = infix_op("%"); - my $lshift_op = infix_op("<<"); - my $rshift_op = infix_op(">>"); - my $scmp_op = prefix_op("sv_cmp"); - my $seq_op = prefix_op("sv_eq"); - my $sne_op = prefix_op("!sv_eq"); - my $slt_op = sub { "sv_cmp($_[0], $_[1]) < 0" }; - my $sgt_op = sub { "sv_cmp($_[0], $_[1]) > 0" }; - my $sle_op = sub { "sv_cmp($_[0], $_[1]) <= 0" }; - my $sge_op = sub { "sv_cmp($_[0], $_[1]) >= 0" }; - my $eq_op = infix_op("=="); - my $ne_op = infix_op("!="); - my $lt_op = infix_op("<"); - my $gt_op = infix_op(">"); - my $le_op = infix_op("<="); - my $ge_op = infix_op(">="); - - # - # XXX The standard perl PP code has extra handling for - # some special case arguments of these operators. - # - sub pp_add { numeric_binop($_[0], $plus_op) } - sub pp_subtract { numeric_binop($_[0], $minus_op) } - sub pp_multiply { numeric_binop($_[0], $multiply_op) } - sub pp_divide { numeric_binop($_[0], $divide_op) } - sub pp_modulo { int_binop($_[0], $modulo_op) } # differs from perl's - - sub pp_left_shift { int_binop($_[0], $lshift_op) } - sub pp_right_shift { int_binop($_[0], $rshift_op) } - sub pp_i_add { int_binop($_[0], $plus_op) } - sub pp_i_subtract { int_binop($_[0], $minus_op) } - sub pp_i_multiply { int_binop($_[0], $multiply_op) } - sub pp_i_divide { int_binop($_[0], $divide_op) } - sub pp_i_modulo { int_binop($_[0], $modulo_op) } - - sub pp_eq { bool_numeric_binop($_[0], $eq_op) } - sub pp_ne { bool_numeric_binop($_[0], $ne_op) } - sub pp_lt { bool_numeric_binop($_[0], $lt_op) } - sub pp_gt { bool_numeric_binop($_[0], $gt_op) } - sub pp_le { bool_numeric_binop($_[0], $le_op) } - sub pp_ge { bool_numeric_binop($_[0], $ge_op) } - - sub pp_i_eq { bool_int_binop($_[0], $eq_op) } - sub pp_i_ne { bool_int_binop($_[0], $ne_op) } - sub pp_i_lt { bool_int_binop($_[0], $lt_op) } - sub pp_i_gt { bool_int_binop($_[0], $gt_op) } - sub pp_i_le { bool_int_binop($_[0], $le_op) } - sub pp_i_ge { bool_int_binop($_[0], $ge_op) } - - sub pp_scmp { sv_binop($_[0], $scmp_op, INT_RESULT) } - sub pp_slt { bool_sv_binop($_[0], $slt_op) } - sub pp_sgt { bool_sv_binop($_[0], $sgt_op) } - sub pp_sle { bool_sv_binop($_[0], $sle_op) } - sub pp_sge { bool_sv_binop($_[0], $sge_op) } - sub pp_seq { bool_sv_binop($_[0], $seq_op) } - sub pp_sne { bool_sv_binop($_[0], $sne_op) } -} - - -sub pp_sassign { - my $op = shift; - my $backwards = $op->private & OPpASSIGN_BACKWARDS; - my ($dst, $src); - if (@stack >= 2) { - $dst = pop @stack; - $src = pop @stack; - ($src, $dst) = ($dst, $src) if $backwards; - my $type = $src->{type}; - if ($type == T_INT) { - $dst->set_int($src->as_int,$src->{flags} & VALID_UNSIGNED); - } elsif ($type == T_DOUBLE) { - $dst->set_numeric($src->as_numeric); - } else { - $dst->set_sv($src->as_sv); - } - push(@stack, $dst); - } elsif (@stack == 1) { - if ($backwards) { - my $src = pop @stack; - my $type = $src->{type}; - runtime("if (PL_tainting && PL_tainted) TAINT_NOT;"); - if ($type == T_INT) { - if ($src->{flags} & VALID_UNSIGNED){ - runtime sprintf("sv_setuv(TOPs, %s);", $src->as_int); - }else{ - runtime sprintf("sv_setiv(TOPs, %s);", $src->as_int); - } - } elsif ($type == T_DOUBLE) { - runtime sprintf("sv_setnv(TOPs, %s);", $src->as_double); - } else { - runtime sprintf("sv_setsv(TOPs, %s);", $src->as_sv); - } - runtime("SvSETMAGIC(TOPs);"); - } else { - my $dst = $stack[-1]; - my $type = $dst->{type}; - runtime("sv = POPs;"); - runtime("MAYBE_TAINT_SASSIGN_SRC(sv);"); - if ($type == T_INT) { - $dst->set_int("SvIV(sv)"); - } elsif ($type == T_DOUBLE) { - $dst->set_double("SvNV(sv)"); - } else { - runtime("SvSetMagicSV($dst->{sv}, sv);"); - $dst->invalidate; - } - } - } else { - if ($backwards) { - runtime("src = POPs; dst = TOPs;"); - } else { - runtime("dst = POPs; src = TOPs;"); - } - runtime("MAYBE_TAINT_SASSIGN_SRC(src);", - "SvSetSV(dst, src);", - "SvSETMAGIC(dst);", - "SETs(dst);"); - } - return $op->next; -} - -sub pp_preinc { - my $op = shift; - if (@stack >= 1) { - my $obj = $stack[-1]; - my $type = $obj->{type}; - if ($type == T_INT || $type == T_DOUBLE) { - $obj->set_int($obj->as_int . " + 1"); - } else { - runtime sprintf("PP_PREINC(%s);", $obj->as_sv); - $obj->invalidate(); - } - } else { - runtime sprintf("PP_PREINC(TOPs);"); - } - return $op->next; -} - - -sub pp_pushmark { - my $op = shift; - write_back_stack(); - runtime("PUSHMARK(sp);"); - return $op->next; -} - -sub pp_list { - my $op = shift; - write_back_stack(); - my $gimme = gimme($op); - if ($gimme == G_ARRAY) { # sic - runtime("POPMARK;"); # need this even though not a "full" pp_list - } else { - runtime("PP_LIST($gimme);"); - } - return $op->next; -} - -sub pp_entersub { - my $op = shift; - $curcop->write_back; - write_back_lexicals(REGISTER|TEMPORARY); - write_back_stack(); - my $sym = doop($op); - runtime("while (PL_op != ($sym)->op_next && PL_op != (OP*)0 ){"); - runtime("PL_op = (*PL_op->op_ppaddr)(aTHX);"); - runtime("SPAGAIN;}"); - $know_op = 0; - invalidate_lexicals(REGISTER|TEMPORARY); - return $op->next; -} -sub pp_formline { - my $op = shift; - my $ppname = $op->ppaddr; - write_back_lexicals() unless $skip_lexicals{$ppname}; - write_back_stack() unless $skip_stack{$ppname}; - my $sym=doop($op); - # See comment in pp_grepwhile to see why! - $init->add("((LISTOP*)$sym)->op_first = $sym;"); - runtime("if (PL_op == ((LISTOP*)($sym))->op_first){"); - save_or_restore_lexical_state(${$op->first}); - runtime( sprintf("goto %s;",label($op->first))); - runtime("}"); - return $op->next; -} - -sub pp_goto{ - - my $op = shift; - my $ppname = $op->ppaddr; - write_back_lexicals() unless $skip_lexicals{$ppname}; - write_back_stack() unless $skip_stack{$ppname}; - my $sym=doop($op); - runtime("if (PL_op != ($sym)->op_next && PL_op != (OP*)0){return PL_op;}"); - invalidate_lexicals() unless $skip_invalidate{$ppname}; - return $op->next; -} -sub pp_enterwrite { - my $op = shift; - pp_entersub($op); -} -sub pp_leavesub{ - my $op = shift; - write_back_lexicals() unless $skip_lexicals{$ppname}; - write_back_stack() unless $skip_stack{$ppname}; - runtime("if (PL_curstackinfo->si_type == PERLSI_SORT){"); - runtime("\tPUTBACK;return 0;"); - runtime("}"); - doop($op); - return $op->next; -} -sub pp_leavewrite { - my $op = shift; - write_back_lexicals(REGISTER|TEMPORARY); - write_back_stack(); - my $sym = doop($op); - # XXX Is this the right way to distinguish between it returning - # CvSTART(cv) (via doform) and pop_return()? - #runtime("if (PL_op) PL_op = (*PL_op->op_ppaddr)(aTHX);"); - runtime("SPAGAIN;"); - $know_op = 0; - invalidate_lexicals(REGISTER|TEMPORARY); - return $op->next; -} - -sub doeval { - my $op = shift; - $curcop->write_back; - write_back_lexicals(REGISTER|TEMPORARY); - write_back_stack(); - my $sym = loadop($op); - my $ppaddr = $op->ppaddr; - #runtime(qq/printf("$ppaddr type eval\n");/); - runtime("PP_EVAL($ppaddr, ($sym)->op_next);"); - $know_op = 1; - invalidate_lexicals(REGISTER|TEMPORARY); - return $op->next; -} - -sub pp_entereval { doeval(@_) } -sub pp_dofile { doeval(@_) } - -#pp_require is protected by pp_entertry, so no protection for it. -sub pp_require { - my $op = shift; - $curcop->write_back; - write_back_lexicals(REGISTER|TEMPORARY); - write_back_stack(); - my $sym = doop($op); - runtime("while (PL_op != ($sym)->op_next && PL_op != (OP*)0 ){"); - runtime("PL_op = (*PL_op->op_ppaddr)(ARGS);"); - runtime("SPAGAIN;}"); - $know_op = 1; - invalidate_lexicals(REGISTER|TEMPORARY); - return $op->next; -} - - -sub pp_entertry { - my $op = shift; - $curcop->write_back; - write_back_lexicals(REGISTER|TEMPORARY); - write_back_stack(); - my $sym = doop($op); - my $jmpbuf = sprintf("jmpbuf%d", $jmpbuf_ix++); - declare("JMPENV", $jmpbuf); - runtime(sprintf("PP_ENTERTRY(%s,%s);", $jmpbuf, label($op->other->next))); - invalidate_lexicals(REGISTER|TEMPORARY); - return $op->next; -} - -sub pp_leavetry{ - my $op=shift; - default_pp($op); - runtime("PP_LEAVETRY;"); - return $op->next; -} - -sub pp_grepstart { - my $op = shift; - if ($need_freetmps && $freetmps_each_loop) { - runtime("FREETMPS;"); # otherwise the grepwhile loop messes things up - $need_freetmps = 0; - } - write_back_stack(); - my $sym= doop($op); - my $next=$op->next; - $next->save; - my $nexttonext=$next->next; - $nexttonext->save; - save_or_restore_lexical_state($$nexttonext); - runtime(sprintf("if (PL_op == (($sym)->op_next)->op_next) goto %s;", - label($nexttonext))); - return $op->next->other; -} - -sub pp_mapstart { - my $op = shift; - if ($need_freetmps && $freetmps_each_loop) { - runtime("FREETMPS;"); # otherwise the mapwhile loop messes things up - $need_freetmps = 0; - } - write_back_stack(); - # pp_mapstart can return either op_next->op_next or op_next->op_other and - # we need to be able to distinguish the two at runtime. - my $sym= doop($op); - my $next=$op->next; - $next->save; - my $nexttonext=$next->next; - $nexttonext->save; - save_or_restore_lexical_state($$nexttonext); - runtime(sprintf("if (PL_op == (($sym)->op_next)->op_next) goto %s;", - label($nexttonext))); - return $op->next->other; -} - -sub pp_grepwhile { - my $op = shift; - my $next = $op->next; - unshift(@bblock_todo, $next); - write_back_lexicals(); - write_back_stack(); - my $sym = doop($op); - # pp_grepwhile can return either op_next or op_other and we need to - # be able to distinguish the two at runtime. Since it's possible for - # both ops to be "inlined", the fields could both be zero. To get - # around that, we hack op_next to be our own op (purely because we - # know it's a non-NULL pointer and can't be the same as op_other). - $init->add("((LOGOP*)$sym)->op_next = $sym;"); - save_or_restore_lexical_state($$next); - runtime(sprintf("if (PL_op == ($sym)->op_next) goto %s;", label($next))); - $know_op = 0; - return $op->other; -} - -sub pp_mapwhile { - pp_grepwhile(@_); -} - -sub pp_return { - my $op = shift; - write_back_lexicals(REGISTER|TEMPORARY); - write_back_stack(); - doop($op); - runtime("PUTBACK;", "return PL_op;"); - $know_op = 0; - return $op->next; -} - -sub nyi { - my $op = shift; - warn sprintf("%s not yet implemented properly\n", $op->ppaddr); - return default_pp($op); -} - -sub pp_range { - my $op = shift; - my $flags = $op->flags; - if (!($flags & OPf_WANT)) { - error("context of range unknown at compile-time"); - } - write_back_lexicals(); - write_back_stack(); - unless (($flags & OPf_WANT)== OPf_WANT_LIST) { - # We need to save our UNOP structure since pp_flop uses - # it to find and adjust out targ. We don't need it ourselves. - $op->save; - save_or_restore_lexical_state(${$op->other}); - runtime sprintf("if (SvTRUE(PL_curpad[%d])) goto %s;", - $op->targ, label($op->other)); - unshift(@bblock_todo, $op->other); - } - return $op->next; -} - -sub pp_flip { - my $op = shift; - my $flags = $op->flags; - if (!($flags & OPf_WANT)) { - error("context of flip unknown at compile-time"); - } - if (($flags & OPf_WANT)==OPf_WANT_LIST) { - return $op->first->other; - } - write_back_lexicals(); - write_back_stack(); - # We need to save our UNOP structure since pp_flop uses - # it to find and adjust out targ. We don't need it ourselves. - $op->save; - my $ix = $op->targ; - my $rangeix = $op->first->targ; - runtime(($op->private & OPpFLIP_LINENUM) ? - "if (PL_last_in_gv && SvIV(TOPs) == IoLINES(GvIOp(PL_last_in_gv))) {" - : "if (SvTRUE(TOPs)) {"); - runtime("\tsv_setiv(PL_curpad[$rangeix], 1);"); - if ($op->flags & OPf_SPECIAL) { - runtime("sv_setiv(PL_curpad[$ix], 1);"); - } else { - save_or_restore_lexical_state(${$op->first->other}); - runtime("\tsv_setiv(PL_curpad[$ix], 0);", - "\tsp--;", - sprintf("\tgoto %s;", label($op->first->other))); - } - runtime("}", - qq{sv_setpv(PL_curpad[$ix], "");}, - "SETs(PL_curpad[$ix]);"); - $know_op = 0; - return $op->next; -} - -sub pp_flop { - my $op = shift; - default_pp($op); - $know_op = 0; - return $op->next; -} - -sub enterloop { - my $op = shift; - my $nextop = $op->nextop; - my $lastop = $op->lastop; - my $redoop = $op->redoop; - $curcop->write_back; - debug "enterloop: pushing on cxstack" if $debug_cxstack; - push(@cxstack, { - type => CXt_LOOP, - op => $op, - "label" => $curcop->[0]->label, - nextop => $nextop, - lastop => $lastop, - redoop => $redoop - }); - $nextop->save; - $lastop->save; - $redoop->save; - return default_pp($op); -} - -sub pp_enterloop { enterloop(@_) } -sub pp_enteriter { enterloop(@_) } - -sub pp_leaveloop { - my $op = shift; - if (!@cxstack) { - die "panic: leaveloop"; - } - debug "leaveloop: popping from cxstack" if $debug_cxstack; - pop(@cxstack); - return default_pp($op); -} - -sub pp_next { - my $op = shift; - my $cxix; - if ($op->flags & OPf_SPECIAL) { - $cxix = dopoptoloop(); - if ($cxix < 0) { - error('"next" used outside loop'); - return $op->next; # ignore the op - } - } else { - $cxix = dopoptolabel($op->pv); - if ($cxix < 0) { - error('Label not found at compile time for "next %s"', $op->pv); - return $op->next; # ignore the op - } - } - default_pp($op); - my $nextop = $cxstack[$cxix]->{nextop}; - push(@bblock_todo, $nextop); - save_or_restore_lexical_state($$nextop); - runtime(sprintf("goto %s;", label($nextop))); - return $op->next; -} - -sub pp_redo { - my $op = shift; - my $cxix; - if ($op->flags & OPf_SPECIAL) { - $cxix = dopoptoloop(); - if ($cxix < 0) { - error('"redo" used outside loop'); - return $op->next; # ignore the op - } - } else { - $cxix = dopoptolabel($op->pv); - if ($cxix < 0) { - error('Label not found at compile time for "redo %s"', $op->pv); - return $op->next; # ignore the op - } - } - default_pp($op); - my $redoop = $cxstack[$cxix]->{redoop}; - push(@bblock_todo, $redoop); - save_or_restore_lexical_state($$redoop); - runtime(sprintf("goto %s;", label($redoop))); - return $op->next; -} - -sub pp_last { - my $op = shift; - my $cxix; - if ($op->flags & OPf_SPECIAL) { - $cxix = dopoptoloop(); - if ($cxix < 0) { - error('"last" used outside loop'); - return $op->next; # ignore the op - } - } else { - $cxix = dopoptolabel($op->pv); - if ($cxix < 0) { - error('Label not found at compile time for "last %s"', $op->pv); - return $op->next; # ignore the op - } - # XXX Add support for "last" to leave non-loop blocks - if ($cxstack[$cxix]->{type} != CXt_LOOP) { - error('Use of "last" for non-loop blocks is not yet implemented'); - return $op->next; # ignore the op - } - } - default_pp($op); - my $lastop = $cxstack[$cxix]->{lastop}->next; - push(@bblock_todo, $lastop); - save_or_restore_lexical_state($$lastop); - runtime(sprintf("goto %s;", label($lastop))); - return $op->next; -} - -sub pp_subst { - my $op = shift; - write_back_lexicals(); - write_back_stack(); - my $sym = doop($op); - my $replroot = $op->pmreplroot; - if ($$replroot) { - save_or_restore_lexical_state($$replroot); - runtime sprintf("if (PL_op == ((PMOP*)(%s))->op_pmreplroot) goto %s;", - $sym, label($replroot)); - $op->pmreplstart->save; - push(@bblock_todo, $replroot); - } - invalidate_lexicals(); - return $op->next; -} - -sub pp_substcont { - my $op = shift; - write_back_lexicals(); - write_back_stack(); - doop($op); - my $pmop = $op->other; - # warn sprintf("substcont: op = %s, pmop = %s\n", - # peekop($op), peekop($pmop));#debug -# my $pmopsym = objsym($pmop); - my $pmopsym = $pmop->save; # XXX can this recurse? -# warn "pmopsym = $pmopsym\n";#debug - save_or_restore_lexical_state(${$pmop->pmreplstart}); - runtime sprintf("if (PL_op == ((PMOP*)(%s))->op_pmreplstart) goto %s;", - $pmopsym, label($pmop->pmreplstart)); - invalidate_lexicals(); - return $pmop->next; -} - -sub default_pp { - my $op = shift; - my $ppname = "pp_" . $op->name; - if ($curcop and $need_curcop{$ppname}){ - $curcop->write_back; - } - write_back_lexicals() unless $skip_lexicals{$ppname}; - write_back_stack() unless $skip_stack{$ppname}; - doop($op); - # XXX If the only way that ops can write to a TEMPORARY lexical is - # when it's named in $op->targ then we could call - # invalidate_lexicals(TEMPORARY) and avoid having to write back all - # the temporaries. For now, we'll play it safe and write back the lot. - invalidate_lexicals() unless $skip_invalidate{$ppname}; - return $op->next; -} - -sub compile_op { - my $op = shift; - my $ppname = "pp_" . $op->name; - if (exists $ignore_op{$ppname}) { - return $op->next; - } - debug peek_stack() if $debug_stack; - if ($debug_op) { - debug sprintf("%s [%s]\n", - peekop($op), - $op->flags & OPf_STACKED ? "OPf_STACKED" : $op->targ); - } - no strict 'refs'; - if (defined(&$ppname)) { - $know_op = 0; - return &$ppname($op); - } else { - return default_pp($op); - } -} - -sub compile_bblock { - my $op = shift; - #warn "compile_bblock: ", peekop($op), "\n"; # debug - save_or_restore_lexical_state($$op); - write_label($op); - $know_op = 0; - do { - $op = compile_op($op); - } while (defined($op) && $$op && !exists($leaders->{$$op})); - write_back_stack(); # boo hoo: big loss - reload_lexicals(); - return $op; -} - -sub cc { - my ($name, $root, $start, @padlist) = @_; - my $op; - if($done{$$start}){ - #warn "repeat=>".ref($start)."$name,\n";#debug - $decl->add(sprintf("#define $name %s",$done{$$start})); - return; - } - init_pp($name); - load_pad(@padlist); - %lexstate=(); - B::Pseudoreg->new_scope; - @cxstack = (); - if ($debug_timings) { - warn sprintf("Basic block analysis at %s\n", timing_info); - } - $leaders = find_leaders($root, $start); - my @leaders= keys %$leaders; - if ($#leaders > -1) { - @bblock_todo = ($start, values %$leaders) ; - } else{ - runtime("return PL_op?PL_op->op_next:0;"); - } - if ($debug_timings) { - warn sprintf("Compilation at %s\n", timing_info); - } - while (@bblock_todo) { - $op = shift @bblock_todo; - #warn sprintf("Considering basic block %s\n", peekop($op)); # debug - next if !defined($op) || !$$op || $done{$$op}; - #warn "...compiling it\n"; # debug - do { - $done{$$op} = $name; - $op = compile_bblock($op); - if ($need_freetmps && $freetmps_each_bblock) { - runtime("FREETMPS;"); - $need_freetmps = 0; - } - } while defined($op) && $$op && !$done{$$op}; - if ($need_freetmps && $freetmps_each_loop) { - runtime("FREETMPS;"); - $need_freetmps = 0; - } - if (!$$op) { - runtime("PUTBACK;","return PL_op;"); - } elsif ($done{$$op}) { - save_or_restore_lexical_state($$op); - runtime(sprintf("goto %s;", label($op))); - } - } - if ($debug_timings) { - warn sprintf("Saving runtime at %s\n", timing_info); - } - declare_pad(@padlist) ; - save_runtime(); -} - -sub cc_recurse { - my $ccinfo; - my $start; - $start = cc_queue(@_) if @_; - while ($ccinfo = shift @cc_todo) { - cc(@$ccinfo); - } - return $start; -} - -sub cc_obj { - my ($name, $cvref) = @_; - my $cv = svref_2object($cvref); - my @padlist = $cv->PADLIST->ARRAY; - my $curpad_sym = $padlist[1]->save; - cc_recurse($name, $cv->ROOT, $cv->START, @padlist); -} - -sub cc_main { - my @comppadlist = comppadlist->ARRAY; - my $curpad_nam = $comppadlist[0]->save; - my $curpad_sym = $comppadlist[1]->save; - my $init_av = init_av->save; - my $start = cc_recurse("pp_main", main_root, main_start, @comppadlist); - # Do save_unused_subs before saving inc_hv - save_unused_subs(); - cc_recurse(); - - my $inc_hv = svref_2object(\%INC)->save; - my $inc_av = svref_2object(\@INC)->save; - my $amagic_generate= amagic_generation; - return if $errors; - if (!defined($module)) { - $init->add(sprintf("PL_main_root = s\\_%x;", ${main_root()}), - "PL_main_start = $start;", - "PL_curpad = AvARRAY($curpad_sym);", - "PL_initav = (AV *) $init_av;", - "GvHV(PL_incgv) = $inc_hv;", - "GvAV(PL_incgv) = $inc_av;", - "av_store(CvPADLIST(PL_main_cv),0,SvREFCNT_inc($curpad_nam));", - "av_store(CvPADLIST(PL_main_cv),1,SvREFCNT_inc($curpad_sym));", - "PL_amagic_generation= $amagic_generate;", - ); - - } - seek(STDOUT,0,0); #prevent print statements from BEGIN{} into the output - output_boilerplate(); - print "\n"; - output_all("perl_init"); - output_runtime(); - print "\n"; - output_main(); - if (defined($module)) { - my $cmodule = $module; - $cmodule =~ s/::/__/g; - print <<"EOT"; - -#include "XSUB.h" -XS(boot_$cmodule) -{ - dXSARGS; - perl_init(); - ENTER; - SAVETMPS; - SAVEVPTR(PL_curpad); - SAVEVPTR(PL_op); - PL_curpad = AvARRAY($curpad_sym); - PL_op = $start; - pp_main(aTHX); - FREETMPS; - LEAVE; - ST(0) = &PL_sv_yes; - XSRETURN(1); -} -EOT - } - if ($debug_timings) { - warn sprintf("Done at %s\n", timing_info); - } -} - -sub compile { - my @options = @_; - my ($option, $opt, $arg); - OPTION: - while ($option = shift @options) { - if ($option =~ /^-(.)(.*)/) { - $opt = $1; - $arg = $2; - } else { - unshift @options, $option; - last OPTION; - } - if ($opt eq "-" && $arg eq "-") { - shift @options; - last OPTION; - } elsif ($opt eq "o") { - $arg ||= shift @options; - open(STDOUT, ">$arg") or return "open '>$arg': $!\n"; - } elsif ($opt eq "n") { - $arg ||= shift @options; - $module_name = $arg; - } elsif ($opt eq "u") { - $arg ||= shift @options; - mark_unused($arg,undef); - } elsif ($opt eq "f") { - $arg ||= shift @options; - my $value = $arg !~ s/^no-//; - $arg =~ s/-/_/g; - my $ref = $optimise{$arg}; - if (defined($ref)) { - $$ref = $value; - } else { - warn qq(ignoring unknown optimisation option "$arg"\n); - } - } elsif ($opt eq "O") { - $arg = 1 if $arg eq ""; - my $ref; - foreach $ref (values %optimise) { - $$ref = 0; - } - if ($arg >= 2) { - $freetmps_each_loop = 1; - } - if ($arg >= 1) { - $freetmps_each_bblock = 1 unless $freetmps_each_loop; - } - } elsif ($opt eq "m") { - $arg ||= shift @options; - $module = $arg; - mark_unused($arg,undef); - } elsif ($opt eq "p") { - $arg ||= shift @options; - $patchlevel = $arg; - } elsif ($opt eq "D") { - $arg ||= shift @options; - foreach $arg (split(//, $arg)) { - if ($arg eq "o") { - B->debug(1); - } elsif ($arg eq "O") { - $debug_op = 1; - } elsif ($arg eq "s") { - $debug_stack = 1; - } elsif ($arg eq "c") { - $debug_cxstack = 1; - } elsif ($arg eq "p") { - $debug_pad = 1; - } elsif ($arg eq "r") { - $debug_runtime = 1; - } elsif ($arg eq "S") { - $debug_shadow = 1; - } elsif ($arg eq "q") { - $debug_queue = 1; - } elsif ($arg eq "l") { - $debug_lineno = 1; - } elsif ($arg eq "t") { - $debug_timings = 1; - } - } - } - } - init_sections(); - $init = B::Section->get("init"); - $decl = B::Section->get("decl"); - - if (@options) { - return sub { - my ($objname, $ppname); - foreach $objname (@options) { - $objname = "main::$objname" unless $objname =~ /::/; - ($ppname = $objname) =~ s/^.*?:://; - eval "cc_obj(qq(pp_sub_$ppname), \\&$objname)"; - die "cc_obj(qq(pp_sub_$ppname, \\&$objname) failed: $@" if $@; - return if $errors; - } - output_boilerplate(); - print "\n"; - output_all($module_name || "init_module"); - output_runtime(); - } - } else { - return sub { cc_main() }; - } -} - -1; - -__END__ - -=head1 NAME - -B::CC - Perl compiler's optimized C translation backend - -=head1 SYNOPSIS - - perl -MO=CC[,OPTIONS] foo.pl - -=head1 DESCRIPTION - -This compiler backend takes Perl source and generates C source code -corresponding to the flow of your program. In other words, this -backend is somewhat a "real" compiler in the sense that many people -think about compilers. Note however that, currently, it is a very -poor compiler in that although it generates (mostly, or at least -sometimes) correct code, it performs relatively few optimisations. -This will change as the compiler develops. The result is that -running an executable compiled with this backend may start up more -quickly than running the original Perl program (a feature shared -by the B<C> compiler backend--see F<B::C>) and may also execute -slightly faster. This is by no means a good optimising compiler--yet. - -=head1 OPTIONS - -If there are any non-option arguments, they are taken to be -names of objects to be saved (probably doesn't work properly yet). -Without extra arguments, it saves the main program. - -=over 4 - -=item B<-ofilename> - -Output to filename instead of STDOUT - -=item B<-v> - -Verbose compilation (currently gives a few compilation statistics). - -=item B<--> - -Force end of options - -=item B<-uPackname> - -Force apparently unused subs from package Packname to be compiled. -This allows programs to use eval "foo()" even when sub foo is never -seen to be used at compile time. The down side is that any subs which -really are never used also have code generated. This option is -necessary, for example, if you have a signal handler foo which you -initialise with C<$SIG{BAR} = "foo">. A better fix, though, is just -to change it to C<$SIG{BAR} = \&foo>. You can have multiple B<-u> -options. The compiler tries to figure out which packages may possibly -have subs in which need compiling but the current version doesn't do -it very well. In particular, it is confused by nested packages (i.e. -of the form C<A::B>) where package C<A> does not contain any subs. - -=item B<-mModulename> - -Instead of generating source for a runnable executable, generate -source for an XSUB module. The boot_Modulename function (which -DynaLoader can look for) does the appropriate initialisation and runs -the main part of the Perl source that is being compiled. - - -=item B<-D> - -Debug options (concatenated or separate flags like C<perl -D>). - -=item B<-Dr> - -Writes debugging output to STDERR just as it's about to write to the -program's runtime (otherwise writes debugging info as comments in -its C output). - -=item B<-DO> - -Outputs each OP as it's compiled - -=item B<-Ds> - -Outputs the contents of the shadow stack at each OP - -=item B<-Dp> - -Outputs the contents of the shadow pad of lexicals as it's loaded for -each sub or the main program. - -=item B<-Dq> - -Outputs the name of each fake PP function in the queue as it's about -to process it. - -=item B<-Dl> - -Output the filename and line number of each original line of Perl -code as it's processed (C<pp_nextstate>). - -=item B<-Dt> - -Outputs timing information of compilation stages. - -=item B<-f> - -Force optimisations on or off one at a time. - -=item B<-ffreetmps-each-bblock> - -Delays FREETMPS from the end of each statement to the end of the each -basic block. - -=item B<-ffreetmps-each-loop> - -Delays FREETMPS from the end of each statement to the end of the group -of basic blocks forming a loop. At most one of the freetmps-each-* -options can be used. - -=item B<-fomit-taint> - -Omits generating code for handling perl's tainting mechanism. - -=item B<-On> - -Optimisation level (n = 0, 1, 2, ...). B<-O> means B<-O1>. -Currently, B<-O1> sets B<-ffreetmps-each-bblock> and B<-O2> -sets B<-ffreetmps-each-loop>. - -=back - -=head1 EXAMPLES - - perl -MO=CC,-O2,-ofoo.c foo.pl - perl cc_harness -o foo foo.c - -Note that C<cc_harness> lives in the C<B> subdirectory of your perl -library directory. The utility called C<perlcc> may also be used to -help make use of this compiler. - - perl -MO=CC,-mFoo,-oFoo.c Foo.pm - perl cc_harness -shared -c -o Foo.so Foo.c - -=head1 BUGS - -Plenty. Current status: experimental. - -=head1 DIFFERENCES - -These aren't really bugs but they are constructs which are heavily -tied to perl's compile-and-go implementation and with which this -compiler backend cannot cope. - -=head2 Loops - -Standard perl calculates the target of "next", "last", and "redo" -at run-time. The compiler calculates the targets at compile-time. -For example, the program - - sub skip_on_odd { next NUMBER if $_[0] % 2 } - NUMBER: for ($i = 0; $i < 5; $i++) { - skip_on_odd($i); - print $i; - } - -produces the output - - 024 - -with standard perl but gives a compile-time error with the compiler. - -=head2 Context of ".." - -The context (scalar or array) of the ".." operator determines whether -it behaves as a range or a flip/flop. Standard perl delays until -runtime the decision of which context it is in but the compiler needs -to know the context at compile-time. For example, - - @a = (4,6,1,0,0,1); - sub range { (shift @a)..(shift @a) } - print range(); - while (@a) { print scalar(range()) } - -generates the output - - 456123E0 - -with standard Perl but gives a compile-time error with compiled Perl. - -=head2 Arithmetic - -Compiled Perl programs use native C arithmetic much more frequently -than standard perl. Operations on large numbers or on boundary -cases may produce different behaviour. - -=head2 Deprecated features - -Features of standard perl such as C<$[> which have been deprecated -in standard perl since Perl5 was released have not been implemented -in the compiler. - -=head1 AUTHOR - -Malcolm Beattie, C<mbeattie@sable.ox.ac.uk> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/B/Concise.pm b/Master/tlpkg/tlperl.old/lib/B/Concise.pm deleted file mode 100644 index c84578e44c4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Concise.pm +++ /dev/null @@ -1,1628 +0,0 @@ -package B::Concise; -# Copyright (C) 2000-2003 Stephen McCamant. All rights reserved. -# This program is free software; you can redistribute and/or modify it -# under the same terms as Perl itself. - -# Note: we need to keep track of how many use declarations/BEGIN -# blocks this module uses, so we can avoid printing them when user -# asks for the BEGIN blocks in her program. Update the comments and -# the count in concise_specials if you add or delete one. The -# -MO=Concise counts as use #1. - -use strict; # use #2 -use warnings; # uses #3 and #4, since warnings uses Carp - -use Exporter (); # use #5 - -our $VERSION = "0.66"; -our @ISA = qw(Exporter); -our @EXPORT_OK = qw( set_style set_style_standard add_callback - concise_subref concise_cv concise_main - add_style walk_output compile reset_sequence ); -our %EXPORT_TAGS = - ( io => [qw( walk_output compile reset_sequence )], - style => [qw( add_style set_style_standard )], - cb => [qw( add_callback )], - mech => [qw( concise_subref concise_cv concise_main )], ); - -# use #6 -use B qw(class ppname main_start main_root main_cv cstring svref_2object - SVf_IOK SVf_NOK SVf_POK SVf_IVisUV SVf_FAKE OPf_KIDS OPf_SPECIAL - CVf_ANON); - -my %style = - ("terse" => - ["(?(#label =>\n)?)(*( )*)#class (#addr) #name (?([#targ])?) " - . "#svclass~(?((#svaddr))?)~#svval~(?(label \"#coplabel\")?)\n", - "(*( )*)goto #class (#addr)\n", - "#class pp_#name"], - "concise" => - ["#hyphseq2 (*( (x( ;)x))*)<#classsym> " - . "#exname#arg(?([#targarglife])?)~#flags(?(/#private)?)(x(;~->#next)x)\n" - , " (*( )*) goto #seq\n", - "(?(<#seq>)?)#exname#arg(?([#targarglife])?)"], - "linenoise" => - ["(x(;(*( )*))x)#noise#arg(?([#targarg])?)(x( ;\n)x)", - "gt_#seq ", - "(?(#seq)?)#noise#arg(?([#targarg])?)"], - "debug" => - ["#class (#addr)\n\top_next\t\t#nextaddr\n\top_sibling\t#sibaddr\n\t" - . "op_ppaddr\tPL_ppaddr[OP_#NAME]\n\top_type\t\t#typenum\n" . - ($] > 5.009 ? '' : "\top_seq\t\t#seqnum\n") - . "\top_flags\t#flagval\n\top_private\t#privval\n" - . "(?(\top_first\t#firstaddr\n)?)(?(\top_last\t\t#lastaddr\n)?)" - . "(?(\top_sv\t\t#svaddr\n)?)", - " GOTO #addr\n", - "#addr"], - "env" => [$ENV{B_CONCISE_FORMAT}, $ENV{B_CONCISE_GOTO_FORMAT}, - $ENV{B_CONCISE_TREE_FORMAT}], - ); - -# Renderings, ie how Concise prints, is controlled by these vars -# primary: -our $stylename; # selects current style from %style -my $order = "basic"; # how optree is walked & printed: basic, exec, tree - -# rendering mechanics: -# these 'formats' are the line-rendering templates -# they're updated from %style when $stylename changes -my ($format, $gotofmt, $treefmt); - -# lesser players: -my $base = 36; # how <sequence#> is displayed -my $big_endian = 1; # more <sequence#> display -my $tree_style = 0; # tree-order details -my $banner = 1; # print banner before optree is traversed -my $do_main = 0; # force printing of main routine - -# another factor: can affect all styles! -our @callbacks; # allow external management - -set_style_standard("concise"); - -my $curcv; -my $cop_seq_base; - -sub set_style { - ($format, $gotofmt, $treefmt) = @_; - #warn "set_style: deprecated, use set_style_standard instead\n"; # someday - die "expecting 3 style-format args\n" unless @_ == 3; -} - -sub add_style { - my ($newstyle,@args) = @_; - die "style '$newstyle' already exists, choose a new name\n" - if exists $style{$newstyle}; - die "expecting 3 style-format args\n" unless @args == 3; - $style{$newstyle} = [@args]; - $stylename = $newstyle; # update rendering state -} - -sub set_style_standard { - ($stylename) = @_; # update rendering state - die "err: style '$stylename' unknown\n" unless exists $style{$stylename}; - set_style(@{$style{$stylename}}); -} - -sub add_callback { - push @callbacks, @_; -} - -# output handle, used with all Concise-output printing -our $walkHandle; # public for your convenience -BEGIN { $walkHandle = \*STDOUT } - -sub walk_output { # updates $walkHandle - my $handle = shift; - return $walkHandle unless $handle; # allow use as accessor - - if (ref $handle eq 'SCALAR') { - require Config; - die "no perlio in this build, can't call walk_output (\\\$scalar)\n" - unless $Config::Config{useperlio}; - # in 5.8+, open(FILEHANDLE,MODE,REFERENCE) writes to string - open my $tmp, '>', $handle; # but cant re-set existing STDOUT - $walkHandle = $tmp; # so use my $tmp as intermediate var - return $walkHandle; - } - my $iotype = ref $handle; - die "expecting argument/object that can print\n" - unless $iotype eq 'GLOB' or $iotype and $handle->can('print'); - $walkHandle = $handle; -} - -sub concise_subref { - my($order, $coderef, $name) = @_; - my $codeobj = svref_2object($coderef); - - return concise_stashref(@_) - unless ref $codeobj eq 'B::CV'; - concise_cv_obj($order, $codeobj, $name); -} - -sub concise_stashref { - my($order, $h) = @_; - foreach my $k (sort keys %$h) { - local *s = $h->{$k}; - my $coderef = *s{CODE} or next; - reset_sequence(); - print "FUNC: ", *s, "\n"; - my $codeobj = svref_2object($coderef); - next unless ref $codeobj eq 'B::CV'; - eval { concise_cv_obj($order, $codeobj) } - or warn "err $@ on $codeobj"; - } -} - -# This should have been called concise_subref, but it was exported -# under this name in versions before 0.56 -*concise_cv = \&concise_subref; - -sub concise_cv_obj { - my ($order, $cv, $name) = @_; - # name is either a string, or a CODE ref (copy of $cv arg??) - - $curcv = $cv; - if ($cv->XSUB) { - print $walkHandle "$name is XS code\n"; - return; - } - if (class($cv->START) eq "NULL") { - no strict 'refs'; - if (ref $name eq 'CODE') { - print $walkHandle "coderef $name has no START\n"; - } - elsif (exists &$name) { - print $walkHandle "$name exists in stash, but has no START\n"; - } - else { - print $walkHandle "$name not in symbol table\n"; - } - return; - } - sequence($cv->START); - if ($order eq "exec") { - walk_exec($cv->START); - } - elsif ($order eq "basic") { - # walk_topdown($cv->ROOT, sub { $_[0]->concise($_[1]) }, 0); - my $root = $cv->ROOT; - unless (ref $root eq 'B::NULL') { - walk_topdown($root, sub { $_[0]->concise($_[1]) }, 0); - } else { - print $walkHandle "B::NULL encountered doing ROOT on $cv. avoiding disaster\n"; - } - } else { - print $walkHandle tree($cv->ROOT, 0); - } -} - -sub concise_main { - my($order) = @_; - sequence(main_start); - $curcv = main_cv; - if ($order eq "exec") { - return if class(main_start) eq "NULL"; - walk_exec(main_start); - } elsif ($order eq "tree") { - return if class(main_root) eq "NULL"; - print $walkHandle tree(main_root, 0); - } elsif ($order eq "basic") { - return if class(main_root) eq "NULL"; - walk_topdown(main_root, - sub { $_[0]->concise($_[1]) }, 0); - } -} - -sub concise_specials { - my($name, $order, @cv_s) = @_; - my $i = 1; - if ($name eq "BEGIN") { - splice(@cv_s, 0, 8); # skip 7 BEGIN blocks in this file. NOW 8 ?? - } elsif ($name eq "CHECK") { - pop @cv_s; # skip the CHECK block that calls us - } - for my $cv (@cv_s) { - print $walkHandle "$name $i:\n"; - $i++; - concise_cv_obj($order, $cv, $name); - } -} - -my $start_sym = "\e(0"; # "\cN" sometimes also works -my $end_sym = "\e(B"; # "\cO" respectively - -my @tree_decorations = - ([" ", "--", "+-", "|-", "| ", "`-", "-", 1], - [" ", "-", "+", "+", "|", "`", "", 0], - [" ", map("$start_sym$_$end_sym", "qq", "wq", "tq", "x ", "mq", "q"), 1], - [" ", map("$start_sym$_$end_sym", "q", "w", "t", "x", "m"), "", 0], - ); - - -sub compileOpts { - # set rendering state from options and args - my (@options,@args); - if (@_) { - @options = grep(/^-/, @_); - @args = grep(!/^-/, @_); - } - for my $o (@options) { - # mode/order - if ($o eq "-basic") { - $order = "basic"; - } elsif ($o eq "-exec") { - $order = "exec"; - } elsif ($o eq "-tree") { - $order = "tree"; - } - # tree-specific - elsif ($o eq "-compact") { - $tree_style |= 1; - } elsif ($o eq "-loose") { - $tree_style &= ~1; - } elsif ($o eq "-vt") { - $tree_style |= 2; - } elsif ($o eq "-ascii") { - $tree_style &= ~2; - } - # sequence numbering - elsif ($o =~ /^-base(\d+)$/) { - $base = $1; - } elsif ($o eq "-bigendian") { - $big_endian = 1; - } elsif ($o eq "-littleendian") { - $big_endian = 0; - } - elsif ($o eq "-nobanner") { - $banner = 0; - } elsif ($o eq "-banner") { - $banner = 1; - } - elsif ($o eq "-main") { - $do_main = 1; - } elsif ($o eq "-nomain") { - $do_main = 0; - } - # line-style options - elsif (exists $style{substr($o, 1)}) { - $stylename = substr($o, 1); - set_style_standard($stylename); - } else { - warn "Option $o unrecognized"; - } - } - return (@args); -} - -sub compile { - my (@args) = compileOpts(@_); - return sub { - my @newargs = compileOpts(@_); # accept new rendering options - warn "disregarding non-options: @newargs\n" if @newargs; - - for my $objname (@args) { - next unless $objname; # skip null args to avoid noisy responses - - if ($objname eq "BEGIN") { - concise_specials("BEGIN", $order, - B::begin_av->isa("B::AV") ? - B::begin_av->ARRAY : ()); - } elsif ($objname eq "INIT") { - concise_specials("INIT", $order, - B::init_av->isa("B::AV") ? - B::init_av->ARRAY : ()); - } elsif ($objname eq "CHECK") { - concise_specials("CHECK", $order, - B::check_av->isa("B::AV") ? - B::check_av->ARRAY : ()); - } elsif ($objname eq "END") { - concise_specials("END", $order, - B::end_av->isa("B::AV") ? - B::end_av->ARRAY : ()); - } - else { - # convert function names to subrefs - my $objref; - if (ref $objname) { - print $walkHandle "B::Concise::compile($objname)\n" - if $banner; - $objref = $objname; - } else { - $objname = "main::" . $objname unless $objname =~ /::/; - print $walkHandle "$objname:\n"; - no strict 'refs'; - unless (exists &$objname) { - print $walkHandle "err: unknown function ($objname)\n"; - return; - } - $objref = \&$objname; - } - concise_subref($order, $objref, $objname); - } - } - if (!@args or $do_main) { - print $walkHandle "main program:\n" if $do_main; - concise_main($order); - } - return @args; # something - } -} - -my %labels; -my $lastnext; # remembers op-chain, used to insert gotos - -my %opclass = ('OP' => "0", 'UNOP' => "1", 'BINOP' => "2", 'LOGOP' => "|", - 'LISTOP' => "@", 'PMOP' => "/", 'SVOP' => "\$", 'GVOP' => "*", - 'PVOP' => '"', 'LOOP' => "{", 'COP' => ";", 'PADOP' => "#"); - -no warnings 'qw'; # "Possible attempt to put comments..."; use #7 -my @linenoise = - qw'# () sc ( @? 1 $* gv *{ m$ m@ m% m? p/ *$ $ $# & a& pt \\ s\\ rf bl - ` *? <> ?? ?/ r/ c/ // qr s/ /c y/ = @= C sC Cp sp df un BM po +1 +I - -1 -I 1+ I+ 1- I- ** * i* / i/ %$ i% x + i+ - i- . " << >> < i< - > i> <= i, >= i. == i= != i! <? i? s< s> s, s. s= s! s? b& b^ b| -0 -i - ! ~ a2 si cs rd sr e^ lg sq in %x %o ab le ss ve ix ri sf FL od ch cy - uf lf uc lc qm @ [f [ @[ eh vl ky dl ex % ${ @{ uk pk st jn ) )[ a@ - a% sl +] -] [- [+ so rv GS GW MS MW .. f. .f && || ^^ ?: &= |= -> s{ s} - v} ca wa di rs ;; ; ;d }{ { } {} f{ it {l l} rt }l }n }r dm }g }e ^o - ^c ^| ^# um bm t~ u~ ~d DB db ^s se ^g ^r {w }w pf pr ^O ^K ^R ^W ^d ^v - ^e ^t ^k t. fc ic fl .s .p .b .c .l .a .h g1 s1 g2 s2 ?. l? -R -W -X -r - -w -x -e -o -O -z -s -M -A -C -S -c -b -f -d -p -l -u -g -k -t -T -B cd - co cr u. cm ut r. l@ s@ r@ mD uD oD rD tD sD wD cD f$ w$ p$ sh e$ k$ g3 - g4 s4 g5 s5 T@ C@ L@ G@ A@ S@ Hg Hc Hr Hw Mg Mc Ms Mr Sg Sc So rq do {e - e} {t t} g6 G6 6e g7 G7 7e g8 G8 8e g9 G9 9e 6s 7s 8s 9s 6E 7E 8E 9E Pn - Pu GP SP EP Gn Gg GG SG EG g0 c$ lk t$ ;s n> // /= CO'; - -my $chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; - -sub op_flags { # common flags (see BASOP.op_flags in op.h) - my($x) = @_; - my(@v); - push @v, "v" if ($x & 3) == 1; - push @v, "s" if ($x & 3) == 2; - push @v, "l" if ($x & 3) == 3; - push @v, "K" if $x & 4; - push @v, "P" if $x & 8; - push @v, "R" if $x & 16; - push @v, "M" if $x & 32; - push @v, "S" if $x & 64; - push @v, "*" if $x & 128; - return join("", @v); -} - -sub base_n { - my $x = shift; - return "-" . base_n(-$x) if $x < 0; - my $str = ""; - do { $str .= substr($chars, $x % $base, 1) } while $x = int($x / $base); - $str = reverse $str if $big_endian; - return $str; -} - -my %sequence_num; -my $seq_max = 1; - -sub reset_sequence { - # reset the sequence - %sequence_num = (); - $seq_max = 1; - $lastnext = 0; -} - -sub seq { - my($op) = @_; - return "-" if not exists $sequence_num{$$op}; - return base_n($sequence_num{$$op}); -} - -sub walk_topdown { - my($op, $sub, $level) = @_; - $sub->($op, $level); - if ($op->flags & OPf_KIDS) { - for (my $kid = $op->first; $$kid; $kid = $kid->sibling) { - walk_topdown($kid, $sub, $level + 1); - } - } - elsif (class($op) eq "PMOP") { - my $maybe_root = $op->pmreplroot; - if (ref($maybe_root) and $maybe_root->isa("B::OP")) { - # It really is the root of the replacement, not something - # else stored here for lack of space elsewhere - walk_topdown($maybe_root, $sub, $level + 1); - } - } -} - -sub walklines { - my($ar, $level) = @_; - for my $l (@$ar) { - if (ref($l) eq "ARRAY") { - walklines($l, $level + 1); - } else { - $l->concise($level); - } - } -} - -sub walk_exec { - my($top, $level) = @_; - my %opsseen; - my @lines; - my @todo = ([$top, \@lines]); - while (@todo and my($op, $targ) = @{shift @todo}) { - for (; $$op; $op = $op->next) { - last if $opsseen{$$op}++; - push @$targ, $op; - my $name = $op->name; - if (class($op) eq "LOGOP") { - my $ar = []; - push @$targ, $ar; - push @todo, [$op->other, $ar]; - } elsif ($name eq "subst" and $ {$op->pmreplstart}) { - my $ar = []; - push @$targ, $ar; - push @todo, [$op->pmreplstart, $ar]; - } elsif ($name =~ /^enter(loop|iter)$/) { - if ($] > 5.009) { - $labels{${$op->nextop}} = "NEXT"; - $labels{${$op->lastop}} = "LAST"; - $labels{${$op->redoop}} = "REDO"; - } else { - $labels{$op->nextop->seq} = "NEXT"; - $labels{$op->lastop->seq} = "LAST"; - $labels{$op->redoop->seq} = "REDO"; - } - } - } - } - walklines(\@lines, 0); -} - -# The structure of this routine is purposely modeled after op.c's peep() -sub sequence { - my($op) = @_; - my $oldop = 0; - return if class($op) eq "NULL" or exists $sequence_num{$$op}; - for (; $$op; $op = $op->next) { - last if exists $sequence_num{$$op}; - my $name = $op->name; - if ($name =~ /^(null|scalar|lineseq|scope)$/) { - next if $oldop and $ {$op->next}; - } else { - $sequence_num{$$op} = $seq_max++; - if (class($op) eq "LOGOP") { - my $other = $op->other; - $other = $other->next while $other->name eq "null"; - sequence($other); - } elsif (class($op) eq "LOOP") { - my $redoop = $op->redoop; - $redoop = $redoop->next while $redoop->name eq "null"; - sequence($redoop); - my $nextop = $op->nextop; - $nextop = $nextop->next while $nextop->name eq "null"; - sequence($nextop); - my $lastop = $op->lastop; - $lastop = $lastop->next while $lastop->name eq "null"; - sequence($lastop); - } elsif ($name eq "subst" and $ {$op->pmreplstart}) { - my $replstart = $op->pmreplstart; - $replstart = $replstart->next while $replstart->name eq "null"; - sequence($replstart); - } - } - $oldop = $op; - } -} - -sub fmt_line { # generate text-line for op. - my($hr, $op, $text, $level) = @_; - - $_->($hr, $op, \$text, \$level, $stylename) for @callbacks; - - return '' if $hr->{SKIP}; # suppress line if a callback said so - return '' if $hr->{goto} and $hr->{goto} eq '-'; # no goto nowhere - - # spec: (?(text1#varText2)?) - $text =~ s/\(\?\(([^\#]*?)\#(\w+)([^\#]*?)\)\?\)/ - $hr->{$2} ? $1.$hr->{$2}.$3 : ""/eg; - - # spec: (x(exec_text;basic_text)x) - $text =~ s/\(x\((.*?);(.*?)\)x\)/$order eq "exec" ? $1 : $2/egs; - - # spec: (*(text)*) - $text =~ s/\(\*\(([^;]*?)\)\*\)/$1 x $level/egs; - - # spec: (*(text1;text2)*) - $text =~ s/\(\*\((.*?);(.*?)\)\*\)/$1 x ($level - 1) . $2 x ($level>0)/egs; - - # convert #Var to tag=>val form: Var\t#var - $text =~ s/\#([A-Z][a-z]+)(\d+)?/\t\u$1\t\L#$1$2/gs; - - # spec: #varN - $text =~ s/\#([a-zA-Z]+)(\d+)/sprintf("%-$2s", $hr->{$1})/eg; - - $text =~ s/\#([a-zA-Z]+)/$hr->{$1}/eg; # populate #var's - $text =~ s/[ \t]*~+[ \t]*/ /g; # squeeze tildes - chomp $text; - return "$text\n" if $text ne ""; - return $text; # suppress empty lines -} - -our %priv; # used to display each opcode's BASEOP.op_private values - -$priv{$_}{128} = "LVINTRO" - for ("pos", "substr", "vec", "threadsv", "gvsv", "rv2sv", "rv2hv", "rv2gv", - "rv2av", "rv2arylen", "aelem", "helem", "aslice", "hslice", "padsv", - "padav", "padhv", "enteriter"); -$priv{$_}{64} = "REFC" for ("leave", "leavesub", "leavesublv", "leavewrite"); -$priv{"aassign"}{64} = "COMMON"; -$priv{"aassign"}{32} = "PHASH" if $] < 5.009; -$priv{"sassign"}{64} = "BKWARD"; -$priv{$_}{64} = "RTIME" for ("match", "subst", "substcont", "qr"); -@{$priv{"trans"}}{1,2,4,8,16,64} = ("<UTF", ">UTF", "IDENT", "SQUASH", "DEL", - "COMPL", "GROWS"); -$priv{"repeat"}{64} = "DOLIST"; -$priv{"leaveloop"}{64} = "CONT"; -@{$priv{$_}}{32,64,96} = ("DREFAV", "DREFHV", "DREFSV") - for (qw(rv2gv rv2sv padsv aelem helem)); -@{$priv{"entersub"}}{16,32,64} = ("DBG","TARG","NOMOD"); -@{$priv{$_}}{4,8,128} = ("INARGS","AMPER","NO()") for ("entersub", "rv2cv"); -$priv{"gv"}{32} = "EARLYCV"; -$priv{"aelem"}{16} = $priv{"helem"}{16} = "LVDEFER"; -$priv{$_}{16} = "OURINTR" for ("gvsv", "rv2sv", "rv2av", "rv2hv", "r2gv", - "enteriter"); -$priv{$_}{16} = "TARGMY" - for (map(($_,"s$_"),"chop", "chomp"), - map(($_,"i_$_"), "postinc", "postdec", "multiply", "divide", "modulo", - "add", "subtract", "negate"), "pow", "concat", "stringify", - "left_shift", "right_shift", "bit_and", "bit_xor", "bit_or", - "complement", "atan2", "sin", "cos", "rand", "exp", "log", "sqrt", - "int", "hex", "oct", "abs", "length", "index", "rindex", "sprintf", - "ord", "chr", "crypt", "quotemeta", "join", "push", "unshift", "flock", - "chdir", "chown", "chroot", "unlink", "chmod", "utime", "rename", - "link", "symlink", "mkdir", "rmdir", "wait", "waitpid", "system", - "exec", "kill", "getppid", "getpgrp", "setpgrp", "getpriority", - "setpriority", "time", "sleep"); -$priv{$_}{4} = "REVERSED" for ("enteriter", "iter"); -@{$priv{"const"}}{4,8,16,32,64,128} = ("SHORT","STRICT","ENTERED",'$[',"BARE","WARN"); -$priv{"flip"}{64} = $priv{"flop"}{64} = "LINENUM"; -$priv{"list"}{64} = "GUESSED"; -$priv{"delete"}{64} = "SLICE"; -$priv{"exists"}{64} = "SUB"; -$priv{$_}{64} = "LOCALE" - for ("sort", "prtf", "sprintf", "slt", "sle", "seq", "sne", "sgt", "sge", - "scmp", "lc", "uc", "lcfirst", "ucfirst"); -@{$priv{"sort"}}{1,2,4,8,16} = ("NUM", "INT", "REV", "INPLACE","DESC"); -$priv{"threadsv"}{64} = "SVREFd"; -@{$priv{$_}}{16,32,64,128} = ("INBIN","INCR","OUTBIN","OUTCR") - for ("open", "backtick"); -$priv{"exit"}{128} = "VMS"; -$priv{$_}{2} = "FTACCESS" - for ("ftrread", "ftrwrite", "ftrexec", "fteread", "ftewrite", "fteexec"); -if ($] >= 5.009) { - # Stacked filetests are post 5.8.x - $priv{$_}{4} = "FTSTACKED" - for ("ftrread", "ftrwrite", "ftrexec", "fteread", "ftewrite", "fteexec", - "ftis", "fteowned", "ftrowned", "ftzero", "ftsize", "ftmtime", - "ftatime", "ftctime", "ftsock", "ftchr", "ftblk", "ftfile", "ftdir", - "ftpipe", "ftlink", "ftsuid", "ftsgid", "ftsvtx", "fttty", "fttext", - "ftbinary"); - # Lexical $_ is post 5.8.x - $priv{$_}{2} = "GREPLEX" - for ("mapwhile", "mapstart", "grepwhile", "grepstart"); -} - -sub private_flags { - my($name, $x) = @_; - my @s; - for my $flag (128, 96, 64, 32, 16, 8, 4, 2, 1) { - if ($priv{$name}{$flag} and $x & $flag and $x >= $flag) { - $x -= $flag; - push @s, $priv{$name}{$flag}; - } - } - push @s, $x if $x; - return join(",", @s); -} - -sub concise_sv { - my($sv, $hr, $preferpv) = @_; - $hr->{svclass} = class($sv); - $hr->{svclass} = "UV" - if $hr->{svclass} eq "IV" and $sv->FLAGS & SVf_IVisUV; - Carp::cluck("bad concise_sv: $sv") unless $sv and $$sv; - $hr->{svaddr} = sprintf("%#x", $$sv); - if ($hr->{svclass} eq "GV") { - my $gv = $sv; - my $stash = $gv->STASH->NAME; - if ($stash eq "main") { - $stash = ""; - } else { - $stash = $stash . "::"; - } - $hr->{svval} = "*$stash" . $gv->SAFENAME; - return "*$stash" . $gv->SAFENAME; - } else { - while (class($sv) eq "RV") { - $hr->{svval} .= "\\"; - $sv = $sv->RV; - } - if (class($sv) eq "SPECIAL") { - $hr->{svval} .= ["Null", "sv_undef", "sv_yes", "sv_no"]->[$$sv]; - } elsif ($preferpv && $sv->FLAGS & SVf_POK) { - $hr->{svval} .= cstring($sv->PV); - } elsif ($sv->FLAGS & SVf_NOK) { - $hr->{svval} .= $sv->NV; - } elsif ($sv->FLAGS & SVf_IOK) { - $hr->{svval} .= $sv->int_value; - } elsif ($sv->FLAGS & SVf_POK) { - $hr->{svval} .= cstring($sv->PV); - } elsif (class($sv) eq "HV") { - $hr->{svval} .= 'HASH'; - } - - $hr->{svval} = 'undef' unless defined $hr->{svval}; - my $out = $hr->{svclass}; - return $out .= " $hr->{svval}" ; - } -} - -sub concise_op { - my ($op, $level, $format) = @_; - my %h; - $h{exname} = $h{name} = $op->name; - $h{NAME} = uc $h{name}; - $h{class} = class($op); - $h{extarg} = $h{targ} = $op->targ; - $h{extarg} = "" unless $h{extarg}; - if ($h{name} eq "null" and $h{targ}) { - # targ holds the old type - $h{exname} = "ex-" . substr(ppname($h{targ}), 3); - $h{extarg} = ""; - } elsif ($op->name =~ /^leave(sub(lv)?|write)?$/) { - # targ potentially holds a reference count - if ($op->private & 64) { - my $refs = "ref" . ($h{targ} != 1 ? "s" : ""); - $h{targarglife} = $h{targarg} = "$h{targ} $refs"; - } - } elsif ($h{targ}) { - my $padname = (($curcv->PADLIST->ARRAY)[0]->ARRAY)[$h{targ}]; - if (defined $padname and class($padname) ne "SPECIAL") { - $h{targarg} = $padname->PVX; - if ($padname->FLAGS & SVf_FAKE) { - if ($] < 5.009) { - $h{targarglife} = "$h{targarg}:FAKE"; - } else { - # These changes relate to the jumbo closure fix. - # See changes 19939 and 20005 - my $fake = ''; - $fake .= 'a' if $padname->IVX & 1; # PAD_FAKELEX_ANON - $fake .= 'm' if $padname->IVX & 2; # PAD_FAKELEX_MULTI - $fake .= ':' . $padname->NVX if $curcv->CvFLAGS & CVf_ANON; - $h{targarglife} = "$h{targarg}:FAKE:$fake"; - } - } - else { - my $intro = $padname->NVX - $cop_seq_base; - my $finish = int($padname->IVX) - $cop_seq_base; - $finish = "end" if $finish == 999999999 - $cop_seq_base; - $h{targarglife} = "$h{targarg}:$intro,$finish"; - } - } else { - $h{targarglife} = $h{targarg} = "t" . $h{targ}; - } - } - $h{arg} = ""; - $h{svclass} = $h{svaddr} = $h{svval} = ""; - if ($h{class} eq "PMOP") { - my $precomp = $op->precomp; - if (defined $precomp) { - $precomp = cstring($precomp); # Escape literal control sequences - $precomp = "/$precomp/"; - } else { - $precomp = ""; - } - my $pmreplroot = $op->pmreplroot; - my $pmreplstart; - if (ref($pmreplroot) eq "B::GV") { - # with C<@stash_array = split(/pat/, str);>, - # *stash_array is stored in /pat/'s pmreplroot. - $h{arg} = "($precomp => \@" . $pmreplroot->NAME . ")"; - } elsif (!ref($pmreplroot) and $pmreplroot) { - # same as the last case, except the value is actually a - # pad offset for where the GV is kept (this happens under - # ithreads) - my $gv = (($curcv->PADLIST->ARRAY)[1]->ARRAY)[$pmreplroot]; - $h{arg} = "($precomp => \@" . $gv->NAME . ")"; - } elsif ($ {$op->pmreplstart}) { - undef $lastnext; - $pmreplstart = "replstart->" . seq($op->pmreplstart); - $h{arg} = "(" . join(" ", $precomp, $pmreplstart) . ")"; - } else { - $h{arg} = "($precomp)"; - } - } elsif ($h{class} eq "PVOP" and $h{name} ne "trans") { - $h{arg} = '("' . $op->pv . '")'; - $h{svval} = '"' . $op->pv . '"'; - } elsif ($h{class} eq "COP") { - my $label = $op->label; - $h{coplabel} = $label; - $label = $label ? "$label: " : ""; - my $loc = $op->file; - $loc =~ s[.*/][]; - $loc .= ":" . $op->line; - my($stash, $cseq) = ($op->stash->NAME, $op->cop_seq - $cop_seq_base); - my $arybase = $op->arybase; - $arybase = $arybase ? ' $[=' . $arybase : ""; - $h{arg} = "($label$stash $cseq $loc$arybase)"; - } elsif ($h{class} eq "LOOP") { - $h{arg} = "(next->" . seq($op->nextop) . " last->" . seq($op->lastop) - . " redo->" . seq($op->redoop) . ")"; - } elsif ($h{class} eq "LOGOP") { - undef $lastnext; - $h{arg} = "(other->" . seq($op->other) . ")"; - } - elsif ($h{class} eq "SVOP" or $h{class} eq "PADOP") { - unless ($h{name} eq 'aelemfast' and $op->flags & OPf_SPECIAL) { - my $idx = ($h{class} eq "SVOP") ? $op->targ : $op->padix; - my $preferpv = $h{name} eq "method_named"; - if ($h{class} eq "PADOP" or !${$op->sv}) { - my $sv = (($curcv->PADLIST->ARRAY)[1]->ARRAY)[$idx]; - $h{arg} = "[" . concise_sv($sv, \%h, $preferpv) . "]"; - $h{targarglife} = $h{targarg} = ""; - } else { - $h{arg} = "(" . concise_sv($op->sv, \%h, $preferpv) . ")"; - } - } - } - $h{seq} = $h{hyphseq} = seq($op); - $h{seq} = "" if $h{seq} eq "-"; - if ($] > 5.009) { - $h{opt} = $op->opt; - $h{static} = $op->static; - $h{label} = $labels{$$op}; - } else { - $h{seqnum} = $op->seq; - $h{label} = $labels{$op->seq}; - } - $h{next} = $op->next; - $h{next} = (class($h{next}) eq "NULL") ? "(end)" : seq($h{next}); - $h{nextaddr} = sprintf("%#x", $ {$op->next}); - $h{sibaddr} = sprintf("%#x", $ {$op->sibling}); - $h{firstaddr} = sprintf("%#x", $ {$op->first}) if $op->can("first"); - $h{lastaddr} = sprintf("%#x", $ {$op->last}) if $op->can("last"); - - $h{classsym} = $opclass{$h{class}}; - $h{flagval} = $op->flags; - $h{flags} = op_flags($op->flags); - $h{privval} = $op->private; - $h{private} = private_flags($h{name}, $op->private); - $h{addr} = sprintf("%#x", $$op); - $h{typenum} = $op->type; - $h{noise} = $linenoise[$op->type]; - - return fmt_line(\%h, $op, $format, $level); -} - -sub B::OP::concise { - my($op, $level) = @_; - if ($order eq "exec" and $lastnext and $$lastnext != $$op) { - # insert a 'goto' line - my $synth = {"seq" => seq($lastnext), "class" => class($lastnext), - "addr" => sprintf("%#x", $$lastnext), - "goto" => seq($lastnext), # simplify goto '-' removal - }; - print $walkHandle fmt_line($synth, $op, $gotofmt, $level+1); - } - $lastnext = $op->next; - print $walkHandle concise_op($op, $level, $format); -} - -# B::OP::terse (see Terse.pm) now just calls this -sub b_terse { - my($op, $level) = @_; - - # This isn't necessarily right, but there's no easy way to get - # from an OP to the right CV. This is a limitation of the - # ->terse() interface style, and there isn't much to do about - # it. In particular, we can die in concise_op if the main pad - # isn't long enough, or has the wrong kind of entries, compared to - # the pad a sub was compiled with. The fix for that would be to - # make a backwards compatible "terse" format that never even - # looked at the pad, just like the old B::Terse. I don't think - # that's worth the effort, though. - $curcv = main_cv unless $curcv; - - if ($order eq "exec" and $lastnext and $$lastnext != $$op) { - # insert a 'goto' - my $h = {"seq" => seq($lastnext), "class" => class($lastnext), - "addr" => sprintf("%#x", $$lastnext)}; - print # $walkHandle - fmt_line($h, $op, $style{"terse"}[1], $level+1); - } - $lastnext = $op->next; - print # $walkHandle - concise_op($op, $level, $style{"terse"}[0]); -} - -sub tree { - my $op = shift; - my $level = shift; - my $style = $tree_decorations[$tree_style]; - my($space, $single, $kids, $kid, $nokid, $last, $lead, $size) = @$style; - my $name = concise_op($op, $level, $treefmt); - if (not $op->flags & OPf_KIDS) { - return $name . "\n"; - } - my @lines; - for (my $kid = $op->first; $$kid; $kid = $kid->sibling) { - push @lines, tree($kid, $level+1); - } - my $i; - for ($i = $#lines; substr($lines[$i], 0, 1) eq " "; $i--) { - $lines[$i] = $space . $lines[$i]; - } - if ($i > 0) { - $lines[$i] = $last . $lines[$i]; - while ($i-- > 1) { - if (substr($lines[$i], 0, 1) eq " ") { - $lines[$i] = $nokid . $lines[$i]; - } else { - $lines[$i] = $kid . $lines[$i]; - } - } - $lines[$i] = $kids . $lines[$i]; - } else { - $lines[0] = $single . $lines[0]; - } - return("$name$lead" . shift @lines, - map(" " x (length($name)+$size) . $_, @lines)); -} - -# *** Warning: fragile kludge ahead *** -# Because the B::* modules run in the same interpreter as the code -# they're compiling, their presence tends to distort the view we have of -# the code we're looking at. In particular, perl gives sequence numbers -# to COPs. If the program we're looking at were run on its own, this -# would start at 1. Because all of B::Concise and all the modules it -# uses are compiled first, though, by the time we get to the user's -# program the sequence number is already pretty high, which could be -# distracting if you're trying to tell OPs apart. Therefore we'd like to -# subtract an offset from all the sequence numbers we display, to -# restore the simpler view of the world. The trick is to know what that -# offset will be, when we're still compiling B::Concise! If we -# hardcoded a value, it would have to change every time B::Concise or -# other modules we use do. To help a little, what we do here is compile -# a little code at the end of the module, and compute the base sequence -# number for the user's program as being a small offset later, so all we -# have to worry about are changes in the offset. - -# [For 5.8.x and earlier perl is generating sequence numbers for all ops, -# and using them to reference labels] - - -# When you say "perl -MO=Concise -e '$a'", the output should look like: - -# 4 <@> leave[t1] vKP/REFC ->(end) -# 1 <0> enter ->2 - #^ smallest OP sequence number should be 1 -# 2 <;> nextstate(main 1 -e:1) v ->3 - # ^ smallest COP sequence number should be 1 -# - <1> ex-rv2sv vK/1 ->4 -# 3 <$> gvsv(*a) s ->4 - -# If the second of the marked numbers there isn't 1, it means you need -# to update the corresponding magic number in the next line. -# Remember, this needs to stay the last things in the module. - -# Why is this different for MacOS? Does it matter? -my $cop_seq_mnum = $^O eq 'MacOS' ? 12 : 11; -$cop_seq_base = svref_2object(eval 'sub{0;}')->START->cop_seq + $cop_seq_mnum; - -1; - -__END__ - -=head1 NAME - -B::Concise - Walk Perl syntax tree, printing concise info about ops - -=head1 SYNOPSIS - - perl -MO=Concise[,OPTIONS] foo.pl - - use B::Concise qw(set_style add_callback); - -=head1 DESCRIPTION - -This compiler backend prints the internal OPs of a Perl program's syntax -tree in one of several space-efficient text formats suitable for debugging -the inner workings of perl or other compiler backends. It can print OPs in -the order they appear in the OP tree, in the order they will execute, or -in a text approximation to their tree structure, and the format of the -information displayed is customizable. Its function is similar to that of -perl's B<-Dx> debugging flag or the B<B::Terse> module, but it is more -sophisticated and flexible. - -=head1 EXAMPLE - -Here's an example of 2 outputs (aka 'renderings'), using the --exec and -basic (i.e. default) formatting conventions on the same code -snippet. - - % perl -MO=Concise,-exec -e '$a = $b + 42' - 1 <0> enter - 2 <;> nextstate(main 1 -e:1) v - 3 <#> gvsv[*b] s - 4 <$> const[IV 42] s - * 5 <2> add[t3] sK/2 - 6 <#> gvsv[*a] s - 7 <2> sassign vKS/2 - 8 <@> leave[1 ref] vKP/REFC - -Each line corresponds to an opcode. The opcode marked with '*' is used -in a few examples below. - -The 1st column is the op's sequence number, starting at 1, and is -displayed in base 36 by default. This rendering is in -exec (i.e. -execution) order. - -The symbol between angle brackets indicates the op's type, for -example; <2> is a BINOP, <@> a LISTOP, and <#> is a PADOP, which is -used in threaded perls. (see L</"OP class abbreviations">). - -The opname, as in B<'add[t1]'>, which may be followed by op-specific -information in parentheses or brackets (ex B<'[t1]'>). - -The op-flags (ex B<'sK/2'>) follow, and are described in (L</"OP flags -abbreviations">). - - % perl -MO=Concise -e '$a = $b + 42' - 8 <@> leave[1 ref] vKP/REFC ->(end) - 1 <0> enter ->2 - 2 <;> nextstate(main 1 -e:1) v ->3 - 7 <2> sassign vKS/2 ->8 - * 5 <2> add[t1] sK/2 ->6 - - <1> ex-rv2sv sK/1 ->4 - 3 <$> gvsv(*b) s ->4 - 4 <$> const(IV 42) s ->5 - - <1> ex-rv2sv sKRM*/1 ->7 - 6 <$> gvsv(*a) s ->7 - -The default rendering is top-down, so they're not in execution order. -This form reflects the way the stack is used to parse and evaluate -expressions; the add operates on the two terms below it in the tree. - -Nullops appear as C<ex-opname>, where I<opname> is an op that has been -optimized away by perl. They're displayed with a sequence-number of -'-', because they are not executed (they don't appear in previous -example), they're printed here because they reflect the parse. - -The arrow points to the sequence number of the next op; they're not -displayed in -exec mode, for obvious reasons. - -Note that because this rendering was done on a non-threaded perl, the -PADOPs in the previous examples are now SVOPs, and some (but not all) -of the square brackets have been replaced by round ones. This is a -subtle feature to provide some visual distinction between renderings -on threaded and un-threaded perls. - - -=head1 OPTIONS - -Arguments that don't start with a hyphen are taken to be the names of -subroutines to print the OPs of; if no such functions are specified, -the main body of the program (outside any subroutines, and not -including use'd or require'd files) is rendered. Passing C<BEGIN>, -C<CHECK>, C<INIT>, or C<END> will cause all of the corresponding -special blocks to be printed. - -Options affect how things are rendered (ie printed). They're presented -here by their visual effect, 1st being strongest. They're grouped -according to how they interrelate; within each group the options are -mutually exclusive (unless otherwise stated). - -=head2 Options for Opcode Ordering - -These options control the 'vertical display' of opcodes. The display -'order' is also called 'mode' elsewhere in this document. - -=over 4 - -=item B<-basic> - -Print OPs in the order they appear in the OP tree (a preorder -traversal, starting at the root). The indentation of each OP shows its -level in the tree, and the '->' at the end of the line indicates the -next opcode in execution order. This mode is the default, so the flag -is included simply for completeness. - -=item B<-exec> - -Print OPs in the order they would normally execute (for the majority -of constructs this is a postorder traversal of the tree, ending at the -root). In most cases the OP that usually follows a given OP will -appear directly below it; alternate paths are shown by indentation. In -cases like loops when control jumps out of a linear path, a 'goto' -line is generated. - -=item B<-tree> - -Print OPs in a text approximation of a tree, with the root of the tree -at the left and 'left-to-right' order of children transformed into -'top-to-bottom'. Because this mode grows both to the right and down, -it isn't suitable for large programs (unless you have a very wide -terminal). - -=back - -=head2 Options for Line-Style - -These options select the line-style (or just style) used to render -each opcode, and dictates what info is actually printed into each line. - -=over 4 - -=item B<-concise> - -Use the author's favorite set of formatting conventions. This is the -default, of course. - -=item B<-terse> - -Use formatting conventions that emulate the output of B<B::Terse>. The -basic mode is almost indistinguishable from the real B<B::Terse>, and the -exec mode looks very similar, but is in a more logical order and lacks -curly brackets. B<B::Terse> doesn't have a tree mode, so the tree mode -is only vaguely reminiscent of B<B::Terse>. - -=item B<-linenoise> - -Use formatting conventions in which the name of each OP, rather than being -written out in full, is represented by a one- or two-character abbreviation. -This is mainly a joke. - -=item B<-debug> - -Use formatting conventions reminiscent of B<B::Debug>; these aren't -very concise at all. - -=item B<-env> - -Use formatting conventions read from the environment variables -C<B_CONCISE_FORMAT>, C<B_CONCISE_GOTO_FORMAT>, and C<B_CONCISE_TREE_FORMAT>. - -=back - -=head2 Options for tree-specific formatting - -=over 4 - -=item B<-compact> - -Use a tree format in which the minimum amount of space is used for the -lines connecting nodes (one character in most cases). This squeezes out -a few precious columns of screen real estate. - -=item B<-loose> - -Use a tree format that uses longer edges to separate OP nodes. This format -tends to look better than the compact one, especially in ASCII, and is -the default. - -=item B<-vt> - -Use tree connecting characters drawn from the VT100 line-drawing set. -This looks better if your terminal supports it. - -=item B<-ascii> - -Draw the tree with standard ASCII characters like C<+> and C<|>. These don't -look as clean as the VT100 characters, but they'll work with almost any -terminal (or the horizontal scrolling mode of less(1)) and are suitable -for text documentation or email. This is the default. - -=back - -These are pairwise exclusive, i.e. compact or loose, vt or ascii. - -=head2 Options controlling sequence numbering - -=over 4 - -=item B<-base>I<n> - -Print OP sequence numbers in base I<n>. If I<n> is greater than 10, the -digit for 11 will be 'a', and so on. If I<n> is greater than 36, the digit -for 37 will be 'A', and so on until 62. Values greater than 62 are not -currently supported. The default is 36. - -=item B<-bigendian> - -Print sequence numbers with the most significant digit first. This is the -usual convention for Arabic numerals, and the default. - -=item B<-littleendian> - -Print seqence numbers with the least significant digit first. This is -obviously mutually exclusive with bigendian. - -=back - -=head2 Other options - -These are pairwise exclusive. - -=over 4 - -=item B<-main> - -Include the main program in the output, even if subroutines were also -specified. This rendering is normally suppressed when a subroutine -name or reference is given. - -=item B<-nomain> - -This restores the default behavior after you've changed it with '-main' -(it's not normally needed). If no subroutine name/ref is given, main is -rendered, regardless of this flag. - -=item B<-nobanner> - -Renderings usually include a banner line identifying the function name -or stringified subref. This suppresses the printing of the banner. - -TBC: Remove the stringified coderef; while it provides a 'cookie' for -each function rendered, the cookies used should be 1,2,3.. not a -random hex-address. It also complicates string comparison of two -different trees. - -=item B<-banner> - -restores default banner behavior. - -=item B<-banneris> => subref - -TBC: a hookpoint (and an option to set it) for a user-supplied -function to produce a banner appropriate for users needs. It's not -ideal, because the rendering-state variables, which are a natural -candidate for use in concise.t, are unavailable to the user. - -=back - -=head2 Option Stickiness - -If you invoke Concise more than once in a program, you should know that -the options are 'sticky'. This means that the options you provide in -the first call will be remembered for the 2nd call, unless you -re-specify or change them. - -=head1 ABBREVIATIONS - -The concise style uses symbols to convey maximum info with minimal -clutter (like hex addresses). With just a little practice, you can -start to see the flowers, not just the branches, in the trees. - -=head2 OP class abbreviations - -These symbols appear before the op-name, and indicate the -B:: namespace that represents the ops in your Perl code. - - 0 OP (aka BASEOP) An OP with no children - 1 UNOP An OP with one child - 2 BINOP An OP with two children - | LOGOP A control branch OP - @ LISTOP An OP that could have lots of children - / PMOP An OP with a regular expression - $ SVOP An OP with an SV - " PVOP An OP with a string - { LOOP An OP that holds pointers for a loop - ; COP An OP that marks the start of a statement - # PADOP An OP with a GV on the pad - -=head2 OP flags abbreviations - -OP flags are either public or private. The public flags alter the -behavior of each opcode in consistent ways, and are represented by 0 -or more single characters. - - v OPf_WANT_VOID Want nothing (void context) - s OPf_WANT_SCALAR Want single value (scalar context) - l OPf_WANT_LIST Want list of any length (list context) - Want is unknown - K OPf_KIDS There is a firstborn child. - P OPf_PARENS This operator was parenthesized. - (Or block needs explicit scope entry.) - R OPf_REF Certified reference. - (Return container, not containee). - M OPf_MOD Will modify (lvalue). - S OPf_STACKED Some arg is arriving on the stack. - * OPf_SPECIAL Do something weird for this op (see op.h) - -Private flags, if any are set for an opcode, are displayed after a '/' - - 8 <@> leave[1 ref] vKP/REFC ->(end) - 7 <2> sassign vKS/2 ->8 - -They're opcode specific, and occur less often than the public ones, so -they're represented by short mnemonics instead of single-chars; see -F<op.h> for gory details, or try this quick 2-liner: - - $> perl -MB::Concise -de 1 - DB<1> |x \%B::Concise::priv - -=head1 FORMATTING SPECIFICATIONS - -For each line-style ('concise', 'terse', 'linenoise', etc.) there are -3 format-specs which control how OPs are rendered. - -The first is the 'default' format, which is used in both basic and exec -modes to print all opcodes. The 2nd, goto-format, is used in exec -mode when branches are encountered. They're not real opcodes, and are -inserted to look like a closing curly brace. The tree-format is tree -specific. - -When a line is rendered, the correct format-spec is copied and scanned -for the following items; data is substituted in, and other -manipulations like basic indenting are done, for each opcode rendered. - -There are 3 kinds of items that may be populated; special patterns, -#vars, and literal text, which is copied verbatim. (Yes, it's a set -of s///g steps.) - -=head2 Special Patterns - -These items are the primitives used to perform indenting, and to -select text from amongst alternatives. - -=over 4 - -=item B<(x(>I<exec_text>B<;>I<basic_text>B<)x)> - -Generates I<exec_text> in exec mode, or I<basic_text> in basic mode. - -=item B<(*(>I<text>B<)*)> - -Generates one copy of I<text> for each indentation level. - -=item B<(*(>I<text1>B<;>I<text2>B<)*)> - -Generates one fewer copies of I<text1> than the indentation level, followed -by one copy of I<text2> if the indentation level is more than 0. - -=item B<(?(>I<text1>B<#>I<var>I<Text2>B<)?)> - -If the value of I<var> is true (not empty or zero), generates the -value of I<var> surrounded by I<text1> and I<Text2>, otherwise -nothing. - -=item B<~> - -Any number of tildes and surrounding whitespace will be collapsed to -a single space. - -=back - -=head2 # Variables - -These #vars represent opcode properties that you may want as part of -your rendering. The '#' is intended as a private sigil; a #var's -value is interpolated into the style-line, much like "read $this". - -These vars take 3 forms: - -=over 4 - -=item B<#>I<var> - -A property named 'var' is assumed to exist for the opcodes, and is -interpolated into the rendering. - -=item B<#>I<var>I<N> - -Generates the value of I<var>, left justified to fill I<N> spaces. -Note that this means while you can have properties 'foo' and 'foo2', -you cannot render 'foo2', but you could with 'foo2a'. You would be -wise not to rely on this behavior going forward ;-) - -=item B<#>I<Var> - -This ucfirst form of #var generates a tag-value form of itself for -display; it converts '#Var' into a 'Var => #var' style, which is then -handled as described above. (Imp-note: #Vars cannot be used for -conditional-fills, because the => #var transform is done after the check -for #Var's value). - -=back - -The following variables are 'defined' by B::Concise; when they are -used in a style, their respective values are plugged into the -rendering of each opcode. - -Only some of these are used by the standard styles, the others are -provided for you to delve into optree mechanics, should you wish to -add a new style (see L</add_style> below) that uses them. You can -also add new ones using L</add_callback>. - -=over 4 - -=item B<#addr> - -The address of the OP, in hexadecimal. - -=item B<#arg> - -The OP-specific information of the OP (such as the SV for an SVOP, the -non-local exit pointers for a LOOP, etc.) enclosed in parentheses. - -=item B<#class> - -The B-determined class of the OP, in all caps. - -=item B<#classsym> - -A single symbol abbreviating the class of the OP. - -=item B<#coplabel> - -The label of the statement or block the OP is the start of, if any. - -=item B<#exname> - -The name of the OP, or 'ex-foo' if the OP is a null that used to be a foo. - -=item B<#extarg> - -The target of the OP, or nothing for a nulled OP. - -=item B<#firstaddr> - -The address of the OP's first child, in hexadecimal. - -=item B<#flags> - -The OP's flags, abbreviated as a series of symbols. - -=item B<#flagval> - -The numeric value of the OP's flags. - -=item B<#hyphseq> - -The sequence number of the OP, or a hyphen if it doesn't have one. - -=item B<#label> - -'NEXT', 'LAST', or 'REDO' if the OP is a target of one of those in exec -mode, or empty otherwise. - -=item B<#lastaddr> - -The address of the OP's last child, in hexadecimal. - -=item B<#name> - -The OP's name. - -=item B<#NAME> - -The OP's name, in all caps. - -=item B<#next> - -The sequence number of the OP's next OP. - -=item B<#nextaddr> - -The address of the OP's next OP, in hexadecimal. - -=item B<#noise> - -A one- or two-character abbreviation for the OP's name. - -=item B<#private> - -The OP's private flags, rendered with abbreviated names if possible. - -=item B<#privval> - -The numeric value of the OP's private flags. - -=item B<#seq> - -The sequence number of the OP. Note that this is a sequence number -generated by B::Concise. - -=item B<#seqnum> - -5.8.x and earlier only. 5.9 and later do not provide this. - -The real sequence number of the OP, as a regular number and not adjusted -to be relative to the start of the real program. (This will generally be -a fairly large number because all of B<B::Concise> is compiled before -your program is). - -=item B<#opt> - -Whether or not the op has been optimised by the peephole optimiser. - -Only available in 5.9 and later. - -=item B<#static> - -Whether or not the op is statically defined. This flag is used by the -B::C compiler backend and indicates that the op should not be freed. - -Only available in 5.9 and later. - -=item B<#sibaddr> - -The address of the OP's next youngest sibling, in hexadecimal. - -=item B<#svaddr> - -The address of the OP's SV, if it has an SV, in hexadecimal. - -=item B<#svclass> - -The class of the OP's SV, if it has one, in all caps (e.g., 'IV'). - -=item B<#svval> - -The value of the OP's SV, if it has one, in a short human-readable format. - -=item B<#targ> - -The numeric value of the OP's targ. - -=item B<#targarg> - -The name of the variable the OP's targ refers to, if any, otherwise the -letter t followed by the OP's targ in decimal. - -=item B<#targarglife> - -Same as B<#targarg>, but followed by the COP sequence numbers that delimit -the variable's lifetime (or 'end' for a variable in an open scope) for a -variable. - -=item B<#typenum> - -The numeric value of the OP's type, in decimal. - -=back - -=head1 Using B::Concise outside of the O framework - -The common (and original) usage of B::Concise was for command-line -renderings of simple code, as given in EXAMPLE. But you can also use -B<B::Concise> from your code, and call compile() directly, and -repeatedly. By doing so, you can avoid the compile-time only -operation of O.pm, and even use the debugger to step through -B::Concise::compile() itself. - -Once you're doing this, you may alter Concise output by adding new -rendering styles, and by optionally adding callback routines which -populate new variables, if such were referenced from those (just -added) styles. - -=head2 Example: Altering Concise Renderings - - use B::Concise qw(set_style add_callback); - add_style($yourStyleName => $defaultfmt, $gotofmt, $treefmt); - add_callback - ( sub { - my ($h, $op, $format, $level, $stylename) = @_; - $h->{variable} = some_func($op); - }); - $walker = B::Concise::compile(@options,@subnames,@subrefs); - $walker->(); - -=head2 set_style() - -B<set_style> accepts 3 arguments, and updates the three format-specs -comprising a line-style (basic-exec, goto, tree). It has one minor -drawback though; it doesn't register the style under a new name. This -can become an issue if you render more than once and switch styles. -Thus you may prefer to use add_style() and/or set_style_standard() -instead. - -=head2 set_style_standard($name) - -This restores one of the standard line-styles: C<terse>, C<concise>, -C<linenoise>, C<debug>, C<env>, into effect. It also accepts style -names previously defined with add_style(). - -=head2 add_style() - -This subroutine accepts a new style name and three style arguments as -above, and creates, registers, and selects the newly named style. It is -an error to re-add a style; call set_style_standard() to switch between -several styles. - -=head2 add_callback() - -If your newly minted styles refer to any new #variables, you'll need -to define a callback subroutine that will populate (or modify) those -variables. They are then available for use in the style you've -chosen. - -The callbacks are called for each opcode visited by Concise, in the -same order as they are added. Each subroutine is passed five -parameters. - - 1. A hashref, containing the variable names and values which are - populated into the report-line for the op - 2. the op, as a B<B::OP> object - 3. a reference to the format string - 4. the formatting (indent) level - 5. the selected stylename - -To define your own variables, simply add them to the hash, or change -existing values if you need to. The level and format are passed in as -references to scalars, but it is unlikely that they will need to be -changed or even used. - -=head2 Running B::Concise::compile() - -B<compile> accepts options as described above in L</OPTIONS>, and -arguments, which are either coderefs, or subroutine names. - -It constructs and returns a $treewalker coderef, which when invoked, -traverses, or walks, and renders the optrees of the given arguments to -STDOUT. You can reuse this, and can change the rendering style used -each time; thereafter the coderef renders in the new style. - -B<walk_output> lets you change the print destination from STDOUT to -another open filehandle, or into a string passed as a ref (unless -you've built perl with -Uuseperlio). - - my $walker = B::Concise::compile('-terse','aFuncName', \&aSubRef); # 1 - walk_output(\my $buf); - $walker->(); # 1 renders -terse - set_style_standard('concise'); # 2 - $walker->(); # 2 renders -concise - $walker->(@new); # 3 renders whatever - print "3 different renderings: terse, concise, and @new: $buf\n"; - -When $walker is called, it traverses the subroutines supplied when it -was created, and renders them using the current style. You can change -the style afterwards in several different ways: - - 1. call C<compile>, altering style or mode/order - 2. call C<set_style_standard> - 3. call $walker, passing @new options - -Passing new options to the $walker is the easiest way to change -amongst any pre-defined styles (the ones you add are automatically -recognized as options), and is the only way to alter rendering order -without calling compile again. Note however that rendering state is -still shared amongst multiple $walker objects, so they must still be -used in a coordinated manner. - -=head2 B::Concise::reset_sequence() - -This function (not exported) lets you reset the sequence numbers (note -that they're numbered arbitrarily, their goal being to be human -readable). Its purpose is mostly to support testing, i.e. to compare -the concise output from two identical anonymous subroutines (but -different instances). Without the reset, B::Concise, seeing that -they're separate optrees, generates different sequence numbers in -the output. - -=head2 Errors - -Errors in rendering (non-existent function-name, non-existent coderef) -are written to the STDOUT, or wherever you've set it via -walk_output(). - -Errors using the various *style* calls, and bad args to walk_output(), -result in die(). Use an eval if you wish to catch these errors and -continue processing. - -=head1 AUTHOR - -Stephen McCamant, E<lt>smcc@CSUA.Berkeley.EDUE<gt>. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/B/Debug.pm b/Master/tlpkg/tlperl.old/lib/B/Debug.pm deleted file mode 100644 index cb369682d66..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Debug.pm +++ /dev/null @@ -1,305 +0,0 @@ -package B::Debug; - -our $VERSION = '1.02_01'; - -use strict; -use B qw(peekop class walkoptree walkoptree_exec - main_start main_root cstring sv_undef); -use B::Asmdata qw(@specialsv_name); - -my %done_gv; - -sub B::OP::debug { - my ($op) = @_; - printf <<'EOT', class($op), $$op, ${$op->next}, ${$op->sibling}, $op->ppaddr, $op->targ, $op->type; -%s (0x%lx) - op_next 0x%x - op_sibling 0x%x - op_ppaddr %s - op_targ %d - op_type %d -EOT - if ($] > 5.009) { - printf <<'EOT', $op->opt, $op->static; - op_opt %d - op_static %d -EOT - } else { - printf <<'EOT', $op->seq; - op_seq %d -EOT - } - printf <<'EOT', $op->flags, $op->private; - op_flags %d - op_private %d -EOT -} - -sub B::UNOP::debug { - my ($op) = @_; - $op->B::OP::debug(); - printf "\top_first\t0x%x\n", ${$op->first}; -} - -sub B::BINOP::debug { - my ($op) = @_; - $op->B::UNOP::debug(); - printf "\top_last\t\t0x%x\n", ${$op->last}; -} - -sub B::LOOP::debug { - my ($op) = @_; - $op->B::BINOP::debug(); - printf <<'EOT', ${$op->redoop}, ${$op->nextop}, ${$op->lastop}; - op_redoop 0x%x - op_nextop 0x%x - op_lastop 0x%x -EOT -} - -sub B::LOGOP::debug { - my ($op) = @_; - $op->B::UNOP::debug(); - printf "\top_other\t0x%x\n", ${$op->other}; -} - -sub B::LISTOP::debug { - my ($op) = @_; - $op->B::BINOP::debug(); - printf "\top_children\t%d\n", $op->children; -} - -sub B::PMOP::debug { - my ($op) = @_; - $op->B::LISTOP::debug(); - printf "\top_pmreplroot\t0x%x\n", ${$op->pmreplroot}; - printf "\top_pmreplstart\t0x%x\n", ${$op->pmreplstart}; - printf "\top_pmnext\t0x%x\n", ${$op->pmnext}; - printf "\top_pmregexp->precomp\t%s\n", cstring($op->precomp); - printf "\top_pmflags\t0x%x\n", $op->pmflags; - $op->pmreplroot->debug; -} - -sub B::COP::debug { - my ($op) = @_; - $op->B::OP::debug(); - my $cop_io = class($op->io) eq 'SPECIAL' ? '' : $op->io->as_string; - printf <<'EOT', $op->label, $op->stashpv, $op->file, $op->cop_seq, $op->arybase, $op->line, ${$op->warnings}, cstring($cop_io); - cop_label %s - cop_stashpv %s - cop_file %s - cop_seq %d - cop_arybase %d - cop_line %d - cop_warnings 0x%x - cop_io %s -EOT -} - -sub B::SVOP::debug { - my ($op) = @_; - $op->B::OP::debug(); - printf "\top_sv\t\t0x%x\n", ${$op->sv}; - $op->sv->debug; -} - -sub B::PVOP::debug { - my ($op) = @_; - $op->B::OP::debug(); - printf "\top_pv\t\t%s\n", cstring($op->pv); -} - -sub B::PADOP::debug { - my ($op) = @_; - $op->B::OP::debug(); - printf "\top_padix\t\t%ld\n", $op->padix; -} - -sub B::NULL::debug { - my ($sv) = @_; - if ($$sv == ${sv_undef()}) { - print "&sv_undef\n"; - } else { - printf "NULL (0x%x)\n", $$sv; - } -} - -sub B::SV::debug { - my ($sv) = @_; - if (!$$sv) { - print class($sv), " = NULL\n"; - return; - } - printf <<'EOT', class($sv), $$sv, $sv->REFCNT, $sv->FLAGS; -%s (0x%x) - REFCNT %d - FLAGS 0x%x -EOT -} - -sub B::RV::debug { - my ($rv) = @_; - B::SV::debug($rv); - printf <<'EOT', ${$rv->RV}; - RV 0x%x -EOT - $rv->RV->debug; -} - -sub B::PV::debug { - my ($sv) = @_; - $sv->B::SV::debug(); - my $pv = $sv->PV(); - printf <<'EOT', cstring($pv), length($pv); - xpv_pv %s - xpv_cur %d -EOT -} - -sub B::IV::debug { - my ($sv) = @_; - $sv->B::SV::debug(); - printf "\txiv_iv\t\t%d\n", $sv->IV; -} - -sub B::NV::debug { - my ($sv) = @_; - $sv->B::IV::debug(); - printf "\txnv_nv\t\t%s\n", $sv->NV; -} - -sub B::PVIV::debug { - my ($sv) = @_; - $sv->B::PV::debug(); - printf "\txiv_iv\t\t%d\n", $sv->IV; -} - -sub B::PVNV::debug { - my ($sv) = @_; - $sv->B::PVIV::debug(); - printf "\txnv_nv\t\t%s\n", $sv->NV; -} - -sub B::PVLV::debug { - my ($sv) = @_; - $sv->B::PVNV::debug(); - printf "\txlv_targoff\t%d\n", $sv->TARGOFF; - printf "\txlv_targlen\t%u\n", $sv->TARGLEN; - printf "\txlv_type\t%s\n", cstring(chr($sv->TYPE)); -} - -sub B::BM::debug { - my ($sv) = @_; - $sv->B::PVNV::debug(); - printf "\txbm_useful\t%d\n", $sv->USEFUL; - printf "\txbm_previous\t%u\n", $sv->PREVIOUS; - printf "\txbm_rare\t%s\n", cstring(chr($sv->RARE)); -} - -sub B::CV::debug { - my ($sv) = @_; - $sv->B::PVNV::debug(); - my ($stash) = $sv->STASH; - my ($start) = $sv->START; - my ($root) = $sv->ROOT; - my ($padlist) = $sv->PADLIST; - my ($file) = $sv->FILE; - my ($gv) = $sv->GV; - printf <<'EOT', $$stash, $$start, $$root, $$gv, $file, $sv->DEPTH, $padlist, ${$sv->OUTSIDE}, $sv->OUTSIDE_SEQ; - STASH 0x%x - START 0x%x - ROOT 0x%x - GV 0x%x - FILE %s - DEPTH %d - PADLIST 0x%x - OUTSIDE 0x%x - OUTSIDE_SEQ %d -EOT - $start->debug if $start; - $root->debug if $root; - $gv->debug if $gv; - $padlist->debug if $padlist; -} - -sub B::AV::debug { - my ($av) = @_; - $av->B::SV::debug; - my(@array) = $av->ARRAY; - print "\tARRAY\t\t(", join(", ", map("0x" . $$_, @array)), ")\n"; - printf <<'EOT', scalar(@array), $av->MAX, $av->OFF; - FILL %d - MAX %d - OFF %d -EOT - printf <<'EOT', $av->AvFLAGS if $] < 5.009; - AvFLAGS %d -EOT -} - -sub B::GV::debug { - my ($gv) = @_; - if ($done_gv{$$gv}++) { - printf "GV %s::%s\n", $gv->STASH->NAME, $gv->SAFENAME; - return; - } - my ($sv) = $gv->SV; - my ($av) = $gv->AV; - my ($cv) = $gv->CV; - $gv->B::SV::debug; - printf <<'EOT', $gv->SAFENAME, $gv->STASH->NAME, $gv->STASH, $$sv, $gv->GvREFCNT, $gv->FORM, $$av, ${$gv->HV}, ${$gv->EGV}, $$cv, $gv->CVGEN, $gv->LINE, $gv->FILE, $gv->GvFLAGS; - NAME %s - STASH %s (0x%x) - SV 0x%x - GvREFCNT %d - FORM 0x%x - AV 0x%x - HV 0x%x - EGV 0x%x - CV 0x%x - CVGEN %d - LINE %d - FILE %s - GvFLAGS 0x%x -EOT - $sv->debug if $sv; - $av->debug if $av; - $cv->debug if $cv; -} - -sub B::SPECIAL::debug { - my $sv = shift; - print $specialsv_name[$$sv], "\n"; -} - -sub compile { - my $order = shift; - B::clearsym(); - if ($order && $order eq "exec") { - return sub { walkoptree_exec(main_start, "debug") } - } else { - return sub { walkoptree(main_root, "debug") } - } -} - -1; - -__END__ - -=head1 NAME - -B::Debug - Walk Perl syntax tree, printing debug info about ops - -=head1 SYNOPSIS - - perl -MO=Debug[,OPTIONS] foo.pl - -=head1 DESCRIPTION - -See F<ext/B/README>. - -=head1 AUTHOR - -Malcolm Beattie, C<mbeattie@sable.ox.ac.uk> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/B/Deparse.pm b/Master/tlpkg/tlperl.old/lib/B/Deparse.pm deleted file mode 100644 index 3db6fbe6e1f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Deparse.pm +++ /dev/null @@ -1,4642 +0,0 @@ -# B::Deparse.pm -# Copyright (c) 1998-2000, 2002, 2003 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 OPpSORT_INPLACE OPpSORT_DESCEND OPpITER_REVERSED - SVf_IOK SVf_NOK SVf_ROK SVf_POK SVpad_OUR SVf_FAKE SVs_RMG SVs_SMG - CVf_METHOD CVf_LOCKED CVf_LVALUE CVf_ASSERTION - PMf_KEEP PMf_GLOBAL PMf_CONTINUE PMf_EVAL PMf_ONCE PMf_SKIPWHITE - PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED); -$VERSION = 0.71; -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.) -# Changes between 0.63 and 0.64 -# - support for //, CHECK blocks, and assertions -# - improved handling of foreach loops and lexicals -# - option to use Data::Dumper for constants -# - more bug fixes -# - discovered lots more bugs not yet fixed - -# 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 -# - 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'? -# - version using op_next instead of op_first/sibling? -# - avoid string copies (pass arrays, one big join?) -# - here-docs? - -# Current test.deparse failures -# comp/assertions 38 - disabled assertions should be like "my($x) if 0" -# 'sub f : assertion {}; no assertions; my $x=1; {f(my $x=2); print "$x\n"}' -# comp/hints 6 - location of BEGIN blocks wrt. block openings -# run/switchI 1 - missing -I switches entirely -# perl -Ifoo -e 'print @INC' -# op/caller 2 - warning mask propagates backwards before warnings::register -# 'use warnings; BEGIN {${^WARNING_BITS} eq "U"x12;} use warnings::register' -# op/getpid 2 - can't assign to shared my() declaration (threads only) -# 'my $x : shared = 5' -# op/override 7 - parens on overriden require change v-string interpretation -# 'BEGIN{*CORE::GLOBAL::require=sub {}} require v5.6' -# c.f. 'BEGIN { *f = sub {0} }; f 2' -# op/pat 774 - losing Unicode-ness of Latin1-only strings -# 'use charnames ":short"; $x="\N{latin:a with acute}"' -# op/recurse 12 - missing parens on recursive call makes it look like method -# 'sub f { f($x) }' -# op/subst 90 - inconsistent handling of utf8 under "use utf8" -# op/taint 29 - "use re 'taint'" deparsed in the wrong place wrt. block open -# op/tiehandle compile - "use strict" deparsed in the wrong place -# uni/tr_ several -# ext/B/t/xref 11 - line numbers when we add newlines to one-line subs -# ext/Data/Dumper/t/dumper compile -# ext/DB_file/several -# ext/Encode/several -# ext/Ernno/Errno warnings -# ext/IO/lib/IO/t/io_sel 23 -# ext/PerlIO/t/encoding compile -# ext/POSIX/t/posix 6 -# ext/Socket/Socket 8 -# ext/Storable/t/croak compile -# lib/Attribute/Handlers/t/multi compile -# lib/bignum/ several -# lib/charnames 35 -# lib/constant 32 -# lib/English 40 -# lib/ExtUtils/t/bytes 4 -# lib/File/DosGlob compile -# lib/Filter/Simple/t/data 1 -# lib/Math/BigInt/t/constant 1 -# lib/Net/t/config Deparse-warning -# lib/overload compile -# lib/Switch/ several -# lib/Symbol 4 -# lib/Test/Simple several -# lib/Term/Complete -# lib/Tie/File/t/29_downcopy 5 -# lib/vars 22 - -# 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.5 statements, but still print scopes as do { ... } -# 0 statement level - -# 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 ($cv->OUTSIDE_SEQ) { - $seq = $cv->OUTSIDE_SEQ; - } elsif (!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) and $self->{'expand'} < 5) { - 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"; - } - my $p = ''; - if (class($cv->STASH) ne "SPECIAL") { - my $stash = $cv->STASH->NAME; - if ($stash ne $self->{'curstash'}) { - $p = "package $stash;\n"; - $name = "$self->{'curstash'}::$name" unless $name =~ /::/; - $self->{'curstash'} = $stash; - } - $name =~ s/^\Q$stash\E:://; - } - return "${p}${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 = $self->const($self->const_sv($req_op->first), 6); - } - - 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); - if (class($version) eq "IV") { - $version = $version->int_value; - } elsif (class($version) eq "NV") { - $version = $version->NV; - } elsif (class($version) ne "PVMG") { - # Includes PVIV and PVNV - $version = $version->PV; - } else { - # version specified as a v-string - $version = 'v'.join '.', map ord, split //, $version->PV; - } - $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->{'cuddle'} = "\n"; - $self->{'curcop'} = undef; - $self->{'curstash'} = "main"; - $self->{'ex_const'} = "'???'"; - $self->{'expand'} = 0; - $self->{'files'} = {}; - $self->{'indent_size'} = 4; - $self->{'linenums'} = 0; - $self->{'parens'} = 0; - $self->{'subs_todo'} = []; - $self->{'unquote'} = 0; - $self->{'use_dumper'} = 0; - $self->{'use_tabs'} = 0; - - $self->{'ambient_arybase'} = 0; - $self->{'ambient_warnings'} = undef; # Assume no lexical warnings - $self->{'ambient_hints'} = 0; - $self->init(); - - while (my $arg = shift @_) { - if ($arg eq "-d") { - $self->{'use_dumper'} = 1; - require Data::Dumper; - } elsif ($arg =~ /^-f(.*)/) { - $self->{'files'}{$1} = 1; - } elsif ($arg eq "-l") { - $self->{'linenums'} = 1; - } elsif ($arg eq "-p") { - $self->{'parens'} = 1; - } elsif ($arg eq "-P") { - $self->{'noproto'} = 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 @CHECKs = B::check_av->isa("B::AV") ? B::check_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, @CHECKs, @INITs, @ENDs) { - $self->todo($block, 0); - } - $self->stash_subs(); - local($SIG{"__DIE__"}) = - sub { - if ($self->{'curcop'}) { - my $cop = $self->{'curcop'}; - my($line, $file) = ($cop->line, $cop->file); - print STDERR "While deparsing $file near line $line,\n"; - } - }; - $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_root(main_root)), "\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 "package $laststash;\n" - unless $laststash eq $self->{'curstash'}; - 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; -} - -# This method is the inner loop, so try to keep it simple -sub deparse { - my $self = shift; - my($op, $cx) = @_; - - Carp::confess("Null op in deparse") if !defined($op) - || class($op) eq "NULL"; - my $meth = "pp_" . $op->name; - 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|CVf_ASSERTION)) { - $proto .= ": "; - $proto .= "lvalue " if $cv->CvFLAGS & CVf_LVALUE; - $proto .= "locked " if $cv->CvFLAGS & CVf_LOCKED; - $proto .= "method " if $cv->CvFLAGS & CVf_METHOD; - $proto .= "assertion " if $cv->CvFLAGS & CVf_ASSERTION; - } - - 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 . "{ " . $self->const($sv, 0) . " }\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") - )); -} - -# Check if the op and its sibling are the initialization and the rest of a -# for (..;..;..) { ... } loop -sub is_for_loop { - my $op = shift; - # This OP might be almost anything, though it won't be a - # nextstate. (It's the initialization, so in the canonical case it - # will be an sassign.) The sibling is a lineseq whose first child - # is a nextstate and whose second is a leaveloop. - my $lseq = $op->sibling; - if (!is_state $op and !null($lseq) and $lseq->name eq "lineseq") { - if ($lseq->first && !null($lseq->first) && is_state($lseq->first) - && (my $sib = $lseq->first->sibling)) { - return (!null($sib) && $sib->name eq "leaveloop"); - } - } - return 0; -} - -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( $our_local eq 'our' ) { - # XXX This assertion fails code with non-ASCII identifiers, - # like ./ext/Encode/t/jperl.t - die "Unexpected our($text)\n" unless $text =~ /^\W(\w+::)*\w+\z/; - $text =~ s/(\w+::)+//; - } - 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->ARRAYelt(0)->ARRAYelt($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; - $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], (@ops != 1)/2); - $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) = @_; - 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 ($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, @_); } - -# This is a special case of scopeop and lineseq, for the case of the -# main_root. The difference is that we print the output statements as -# soon as we get them, for the sake of impatient users. -sub deparse_root { - my $self = shift; - my($op) = @_; - local(@$self{qw'curstash warnings hints'}) - = @$self{qw'curstash warnings hints'}; - my @kids; - for (my $kid = $op->first->sibling; !null($kid); $kid = $kid->sibling) { - push @kids, $kid; - } - for (my $i = 0; $i < @kids; $i++) { - my $expr = ""; - if (is_state $kids[$i]) { - $expr = $self->deparse($kids[$i], 0); - $i++; - if ($i > $#kids) { - print $self->indent($expr); - last; - } - } - if (is_for_loop($kids[$i])) { - $expr .= $self->for_loop($kids[$i], 0); - $expr .= ";\n" unless $i == $#kids; - print $self->indent($expr); - $i++; - next; - } - $expr .= $self->deparse($kids[$i], (@kids != 1)/2); - $expr =~ s/;\n?\z//; - $expr .= ";"; - print $self->indent($expr); - print "\n" unless $i == $#kids; - } -} - -# 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() unless ref($gv) eq "B::GV"; - 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; - # an undef CV still in lexical chain - next if class($padlist) eq "SPECIAL"; - my @padlist = $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, $seq_en) = - ($ns[$i]->FLAGS & SVf_FAKE) - ? (0, 999999) - : ($ns[$i]->NVX, $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->{'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; - } - - # This should go after of any branches that add statements, to - # increase the chances that it refers to the same line it did in - # the original program. - if ($self->{'linenums'}) { - push @text, "\f#line " . $op->line . - ' "' . $op->file, qq'"\n'; - } - - return join("", @text); -} - -sub declare_warnings { - my ($from, $to) = @_; - if (($to & WARN_MASK) eq (warnings::bits("all") & WARN_MASK)) { - return "use warnings;\n"; - } - elsif (($to & WARN_MASK) eq ("\0"x length($to) & WARN_MASK)) { - 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 >= 1) { - 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) = @_; - my $opname = $op->flags & OPf_SPECIAL ? 'CORE::require' : 'require'; - 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 "$opname $name"; - } else { - $self->unop($op, $cx, $opname); - } -} - -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->ARRAYelt(1)->ARRAYelt($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->pp_list($op->first) . ")"; - } 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($self->gv_or_padgv($op)) . ">"; -} - -# 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) =~ /^(SV|PAD)OP$/) { - 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 < 1 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 < 1 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") } -sub pp_dor { logop(@_, "err", 2, "//", 10, "") } - -# 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 pp_dorassign { 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"; - my $proto = prototype("CORE::$name"); - if (defined $proto - && $proto =~ /^;?\*/ - && $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; - if (defined $proto && $proto =~ /^\*\*/ && $kid->name eq "rv2gv") { - push @exprs, $self->deparse($kid->first, 6); - $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) . "}"; - $indir = "{;}" if $indir eq "{}"; - } 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_DESCEND) ? '{$b <=> $a} ' - : '{$a <=> $b} '; - } - elsif ($name eq "sort" && $op->private & OPpSORT_DESCEND) { - $indir = '{$b cmp $a} '; - } - for (; !null($kid); $kid = $kid->sibling) { - $expr = $self->deparse($kid, 6); - push @exprs, $expr; - } - my $name2 = $name; - if ($name eq "sort" && $op->private & OPpSORT_REVERSE) { - $name2 = 'reverse sort'; - } - if ($name eq "sort" && ($op->private & OPpSORT_INPLACE)) { - return "$exprs[0] = $name2 $indir $exprs[0]"; - } - - my $args = $indir . join(", ", @exprs); - if ($indir ne "" and $name eq "sort") { - # We don't want to say "sort(f 1, 2, 3)", since perl -w will - # give bareword warnings in that case. Therefore if context - # requires, we'll put parens around the outside "(sort f 1, 2, - # 3)". Unfortunately, we'll currently think the parens are - # necessary more often that they really are, because we don't - # distinguish which side of an assignment we're on. - if ($cx >= 5) { - return "($name2 $args)"; - } else { - return "$name2 $args"; - } - } else { - return $self->maybe_parens_func($name2, $args, $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_mapstart { baseop(@_, "map") } -sub pp_grepstart { baseop(@_, "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" - # specifically avoid the "reverse sort" optimisation, - # where "reverse" is nullified - && !($lop->name eq 'sort' && ($lop->flags & OPpSORT_REVERSE))) - { - # 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 < 1 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 ($kid->last->name eq "unstack") { # 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 ($ary->name eq 'null' and $enter->private & OPpITER_REVERSED) { - # "reverse" was optimised away - $ary = listop($self, $ary->first->sibling, 1, 'reverse'); - } elsif ($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); - } - } elsif ($var->name eq "rv2gv") { - $var = $self->pp_rv2sv($var, 1); - if ($enter->private & OPpOUR_INTRO) { - # our declarations don't have package names - $var =~ s/^(.).*::/$1/; - $var = "our $var"; - } - } elsif ($var->name eq "gv") { - $var = "\$" . $self->deparse($var, 1); - } - $body = $kid->first->first->sibling; # skip OP_AND and OP_ITER - if (!is_state $body->first and $body->first->name ne "stub") { - confess unless $var eq '$_'; - $body = $body->first; - return $self->deparse($body, 2) . " foreach ($ary)"; - } - $head = "foreach $var ($ary) "; - } 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 last child, except - # in a bare loop, when it will point to the leaveloop. When neither of - # these conditions hold, then the second-to-last child is the continue - # block (or the last in a bare loop). - my $cont_start = $enter->nextop; - my $cont; - if ($$cont_start != $$op && ${$cont_start} != ${$body->last}) { - if ($bare) { - $cont = $body->last; - } else { - $cont = $body->first; - while (!null($cont->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 < 1 && !$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 $name; - if ($op->flags & OPf_SPECIAL) { # optimised PADAV - $name = $self->padname($op->targ); - $name =~ s/^@/\$/; - } - else { - my $gv = $self->gv_or_padgv($op); - $name = $self->gv_name($gv); - $name = $self->{'curstash'}."::$name" - if $name !~ /::/ && $self->lex_in_scope('@'.$name); - $name = '$' . $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; - if ($kid->name eq "gv") { - return $self->stash_variable($type, $self->deparse($kid, 0)); - } elsif (is_scalar $kid) { - my $str = $self->deparse($kid, 0); - if ($str =~ /^\$([^\w\d])\z/) { - # "$$+" isn't a legal way to write the scalar dereference - # of $+, since the lexer can't tell you aren't trying to - # do something like "$$ + 1" to get one more than your - # PID. Either "${$+}" or "$${+}" are workable - # disambiguations, but if the programmer did the former, - # they'd be in the "else" clause below rather than here. - # It's not clear if this should somehow be unified with - # the code in dq and re_dq that also adds lexer - # disambiguation braces. - $str = '$' . "{$1}"; #' - } - return $type . $str; - } else { - return $type . "{" . $self->deparse($kid, 0) . "}"; - } -} - -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 list_const { - my $self = shift; - my($cx, @list) = @_; - my @a = map $self->const($_, 6), @list; - if (@a == 0) { - return "()"; - } elsif (@a == 1) { - return $a[0]; - } elsif ( @a > 2 and !grep(!/^-?\d+$/, @a)) { - # collapse (-1,0,1,2) into (-1..2) - my ($s, $e) = @a[0,-1]; - my $i = $s; - return $self->maybe_parens("$s..$e", $cx, 9) - unless grep $i++ != $_, @a; - } - return $self->maybe_parens(join(", ", @a), $cx, 6); -} - -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 $self->list_const($cx, $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:://; - - my $dproto = defined($proto) ? $proto : "undefined"; - if (!$declared) { - return "$kid(" . $args . ")"; - } elsif ($dproto eq "") { - return $kid; - } elsif ($dproto eq "\$" and is_scalar($exprs[0])) { - # is_scalar is an excessively conservative test here: - # really, we should be comparing to the precedence of the - # top operator of $exprs[0] (ala unop()), but that would - # take some major code restructuring to do right. - return $self->maybe_parens_func($kid, $args, $cx, 16); - } elsif ($dproto ne '$' and defined($proto) || $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] - ) - - /defined($4) && 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] - ) - - /defined($4) && 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/"; - } -} - -my $max_prec; -BEGIN { $max_prec = int(0.999 + 8*length(pack("F", 42))*log(2)/log(10)); } - -# Split a floating point number into an integer mantissa and a binary -# exponent. Assumes you've already made sure the number isn't zero or -# some weird infinity or NaN. -sub split_float { - my($f) = @_; - my $exponent = 0; - if ($f == int($f)) { - while ($f % 2 == 0) { - $f /= 2; - $exponent++; - } - } else { - while ($f != int($f)) { - $f *= 2; - $exponent--; - } - } - my $mantissa = sprintf("%.0f", $f); - return ($mantissa, $exponent); -} - -sub const { - my $self = shift; - my($sv, $cx) = @_; - if ($self->{'use_dumper'}) { - return $self->const_dumper($sv, $cx); - } - if (class($sv) eq "SPECIAL") { - # sv_undef, sv_yes, sv_no - return ('undef', '1', $self->maybe_parens("!1", $cx, 21))[$$sv-1]; - } elsif (class($sv) eq "NULL") { - return 'undef'; - } - # convert a version object into the "v1.2.3" string in its V magic - if ($sv->FLAGS & SVs_RMG) { - for (my $mg = $sv->MAGIC; $mg; $mg = $mg->MOREMAGIC) { - return $mg->PTR if $mg->TYPE eq 'V'; - } - } - - if ($sv->FLAGS & SVf_IOK) { - my $str = $sv->int_value; - $str = $self->maybe_parens($str, $cx, 21) if $str < 0; - return $str; - } elsif ($sv->FLAGS & SVf_NOK) { - my $nv = $sv->NV; - if ($nv == 0) { - if (pack("F", $nv) eq pack("F", 0)) { - # positive zero - return "0"; - } else { - # negative zero - return $self->maybe_parens("-.0", $cx, 21); - } - } elsif (1/$nv == 0) { - if ($nv > 0) { - # positive infinity - return $self->maybe_parens("9**9**9", $cx, 22); - } else { - # negative infinity - return $self->maybe_parens("-9**9**9", $cx, 21); - } - } elsif ($nv != $nv) { - # NaN - if (pack("F", $nv) eq pack("F", sin(9**9**9))) { - # the normal kind - return "sin(9**9**9)"; - } elsif (pack("F", $nv) eq pack("F", -sin(9**9**9))) { - # the inverted kind - return $self->maybe_parens("-sin(9**9**9)", $cx, 21); - } else { - # some other kind - my $hex = unpack("h*", pack("F", $nv)); - return qq'unpack("F", pack("h*", "$hex"))'; - } - } - # first, try the default stringification - my $str = "$nv"; - if ($str != $nv) { - # failing that, try using more precision - $str = sprintf("%.${max_prec}g", $nv); -# if (pack("F", $str) ne pack("F", $nv)) { - if ($str != $nv) { - # not representable in decimal with whatever sprintf() - # and atof() Perl is using here. - my($mant, $exp) = split_float($nv); - return $self->maybe_parens("$mant * 2**$exp", $cx, 19); - } - } - $str = $self->maybe_parens($str, $cx, 21) if $nv < 0; - return $str; - } elsif ($sv->FLAGS & SVf_ROK && $sv->can("RV")) { - my $ref = $sv->RV; - if (class($ref) eq "AV") { - return "[" . $self->list_const(2, $ref->ARRAY) . "]"; - } elsif (class($ref) eq "HV") { - my %hash = $ref->ARRAY; - my @elts; - for my $k (sort keys %hash) { - push @elts, "$k => " . $self->const($hash{$k}, 6); - } - return "{" . join(", ", @elts) . "}"; - } elsif (class($ref) eq "CV") { - return "sub " . $self->deparse_sub($ref); - } - if ($ref->FLAGS & SVs_SMG) { - for (my $mg = $ref->MAGIC; $mg; $mg = $mg->MOREMAGIC) { - if ($mg->TYPE eq 'r') { - my $re = re_uninterp(escape_str(re_unback($mg->precomp))); - return single_delim("qr", "", $re); - } - } - } - - return $self->maybe_parens("\\" . $self->const($ref, 20), $cx, 20); - } 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_dumper { - my $self = shift; - my($sv, $cx) = @_; - my $ref = $sv->object_2svref(); - my $dumper = Data::Dumper->new([$$ref], ['$v']); - $dumper->Purity(1)->Terse(1)->Deparse(1)->Indent(0)->Useqq(1)->Sortkeys(1); - my $str = $dumper->Dump(); - if ($str =~ /^\$v/) { - return '${my ' . $str . ' \$v}'; - } else { - return $str; - } -} - -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 $self->const($sv, $cx); -} - -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]", "$foo\::bar" - ($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) = @_; - return 0 if null $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$/) { - return 1; - } - elsif ($type eq "null" and $op->can('first') and not null $op->first and - $op->first->name eq "null" and $op->first->can('first') - and not null $op->first->first and - $op->first->first->name eq "aelemfast") { - 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"; - if ($kid->name eq "null" and !null($kid->first) - and $kid->first->name eq 'pushmark') - { - my $str = ''; - $kid = $kid->first->sibling; - while (!null($kid)) { - $str .= $self->re_dq($kid, $extended); - $kid = $kid->sibling; - } - return $str, 1; - } - - 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, 21, $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; - - # For our kid (an OP_PUSHRE), pmreplroot is never actually the - # root of a replacement; it's either empty, or abused to point to - # the GV for an array we split into (an optimization to save - # assignment overhead). Depending on whether we're using ithreads, - # this OP* holds either a GV* or a PADOFFSET. Luckily, B.xs - # figures out for us which it is. - my $replroot = $kid->pmreplroot; - my $gv = 0; - if (ref($replroot) eq "B::GV") { - $gv = $replroot; - } elsif (!ref($replroot) and $replroot > 0) { - $gv = $self->padval($replroot); - } - $ary = $self->stash_variable('@', $self->gv_name($gv)) if $gv; - - 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->first, 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<,-d>][B<,-f>I<FILE>][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. - -While B::Deparse goes to some lengths to try to figure out what your -original program was doing, some parts of the language can still trip -it up; it still fails even on some parts of Perl's own test suite. If -you encounter a failure other than the most common ones described in -the BUGS section below, you can help contribute to B::Deparse's -ongoing development by submitting a bug report with a small -example. - -=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<-d> - -Output data values (when they appear as constants) using Data::Dumper. -Without this option, B::Deparse will use some simple routines of its -own for the same purpose. Currently, Data::Dumper is better for some -kinds of data (such as complex structures with sharing and -self-reference) while the built-in routines are better for others -(such as odd floating-point values). - -=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<-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<-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, C<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 5, C<use> declarations will be translated into -C<BEGIN> blocks containing calls to C<require> and C<import>; for -instance, - - use strict 'refs'; - -turns into - - sub BEGIN { - require strict; - do { - 'strict'->import('refs') - }; - } - -If I<LEVEL> is at least 7, C<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. -(Specifically, pragmas at the beginning of a block often appear right -before the start of the block instead.) -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 require some help -from the Perl core 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 * - -Some constants don't print correctly either with or without B<-d>. -For instance, neither B::Deparse nor Data::Dumper know how to print -dual-valued scalars correctly, as in: - - use constant E2BIG => ($!=7); $y = E2BIG; print $y, 0+$y; - -=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 * - -Optimised away statements are rendered as '???'. This includes statements that -have a compile-time side-effect, such as the obscure - - my $x if 0; - -which is not, consequently, deparsed correctly. - -=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, Dave Mitchell, -Hugo van der Sanden, Gurusamy Sarathy, Nick Ing-Simmons, and Rafael -Garcia-Suarez. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/B/Disassembler.pm b/Master/tlpkg/tlperl.old/lib/B/Disassembler.pm deleted file mode 100644 index e1993aa9537..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Disassembler.pm +++ /dev/null @@ -1,233 +0,0 @@ -# Disassembler.pm -# -# Copyright (c) 1996 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. - -$B::Disassembler::VERSION = '1.05'; - -package B::Disassembler::BytecodeStream; - -use FileHandle; -use Carp; -use Config qw(%Config); -use B qw(cstring cast_I32); -@ISA = qw(FileHandle); -sub readn { - my ($fh, $len) = @_; - my $data; - read($fh, $data, $len); - croak "reached EOF while reading $len bytes" unless length($data) == $len; - return $data; -} - -sub GET_U8 { - my $fh = shift; - my $c = $fh->getc; - croak "reached EOF while reading U8" unless defined($c); - return ord($c); -} - -sub GET_U16 { - my $fh = shift; - my $str = $fh->readn(2); - croak "reached EOF while reading U16" unless length($str) == 2; - return unpack("S", $str); -} - -sub GET_NV { - my $fh = shift; - my ($str, $c); - while (defined($c = $fh->getc) && $c ne "\0") { - $str .= $c; - } - croak "reached EOF while reading double" unless defined($c); - return $str; -} - -sub GET_U32 { - my $fh = shift; - my $str = $fh->readn(4); - croak "reached EOF while reading U32" unless length($str) == 4; - return unpack("L", $str); -} - -sub GET_I32 { - my $fh = shift; - my $str = $fh->readn(4); - croak "reached EOF while reading I32" unless length($str) == 4; - return unpack("l", $str); -} - -sub GET_objindex { - my $fh = shift; - my $str = $fh->readn(4); - croak "reached EOF while reading objindex" unless length($str) == 4; - return unpack("L", $str); -} - -sub GET_opindex { - my $fh = shift; - my $str = $fh->readn(4); - croak "reached EOF while reading opindex" unless length($str) == 4; - return unpack("L", $str); -} - -sub GET_svindex { - my $fh = shift; - my $str = $fh->readn(4); - croak "reached EOF while reading svindex" unless length($str) == 4; - return unpack("L", $str); -} - -sub GET_pvindex { - my $fh = shift; - my $str = $fh->readn(4); - croak "reached EOF while reading pvindex" unless length($str) == 4; - return unpack("L", $str); -} - -sub GET_strconst { - my $fh = shift; - my ($str, $c); - $str = ''; - while (defined($c = $fh->getc) && $c ne "\0") { - $str .= $c; - } - croak "reached EOF while reading strconst" unless defined($c); - return cstring($str); -} - -sub GET_pvcontents {} - -sub GET_PV { - my $fh = shift; - my $str; - my $len = $fh->GET_U32; - if ($len) { - read($fh, $str, $len); - croak "reached EOF while reading PV" unless length($str) == $len; - return cstring($str); - } else { - return '""'; - } -} - -sub GET_comment_t { - my $fh = shift; - my ($str, $c); - while (defined($c = $fh->getc) && $c ne "\n") { - $str .= $c; - } - croak "reached EOF while reading comment" unless defined($c); - return cstring($str); -} - -sub GET_double { - my $fh = shift; - my ($str, $c); - while (defined($c = $fh->getc) && $c ne "\0") { - $str .= $c; - } - croak "reached EOF while reading double" unless defined($c); - return $str; -} - -sub GET_none {} - -sub GET_op_tr_array { - my $fh = shift; - my $len = unpack "S", $fh->readn(2); - my @ary = unpack "S*", $fh->readn($len*2); - return join(",", $len, @ary); -} - -sub GET_IV64 { - my $fh = shift; - my $str = $fh->readn(8); - croak "reached EOF while reading I32" unless length($str) == 8; - return sprintf "0x%09llx", unpack("q", $str); -} - -sub GET_IV { - $Config{ivsize} == 4 ? &GET_I32 : &GET_IV64; -} - -sub GET_PADOFFSET { - $Config{ptrsize} == 8 ? &GET_IV64 : &GET_U32; -} - -sub GET_long { - $Config{longsize} == 8 ? &GET_IV64 : &GET_U32; -} - - -package B::Disassembler; -use Exporter; -@ISA = qw(Exporter); -@EXPORT_OK = qw(disassemble_fh get_header); -use Carp; -use strict; - -use B::Asmdata qw(%insn_data @insn_name); - -our( $magic, $archname, $blversion, $ivsize, $ptrsize ); - -sub dis_header($){ - my( $fh ) = @_; - $magic = $fh->GET_U32(); - warn( "bad magic" ) if $magic != 0x43424c50; - $archname = $fh->GET_strconst(); - $blversion = $fh->GET_strconst(); - $ivsize = $fh->GET_U32(); - $ptrsize = $fh->GET_U32(); -} - -sub get_header(){ - return( $magic, $archname, $blversion, $ivsize, $ptrsize); -} - -sub disassemble_fh { - my ($fh, $out) = @_; - my ($c, $getmeth, $insn, $arg); - bless $fh, "B::Disassembler::BytecodeStream"; - dis_header( $fh ); - while (defined($c = $fh->getc)) { - $c = ord($c); - $insn = $insn_name[$c]; - if (!defined($insn) || $insn eq "unused") { - my $pos = $fh->tell - 1; - die "Illegal instruction code $c at stream offset $pos\n"; - } - $getmeth = $insn_data{$insn}->[2]; - $arg = $fh->$getmeth(); - if (defined($arg)) { - &$out($insn, $arg); - } else { - &$out($insn); - } - } -} - -1; - -__END__ - -=head1 NAME - -B::Disassembler - Disassemble Perl bytecode - -=head1 SYNOPSIS - - use Disassembler; - -=head1 DESCRIPTION - -See F<ext/B/B/Disassembler.pm>. - -=head1 AUTHOR - -Malcolm Beattie, C<mbeattie@sable.ox.ac.uk> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/B/Lint.pm b/Master/tlpkg/tlperl.old/lib/B/Lint.pm deleted file mode 100644 index 3475bd2596e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Lint.pm +++ /dev/null @@ -1,392 +0,0 @@ -package B::Lint; - -our $VERSION = '1.03'; - -=head1 NAME - -B::Lint - Perl lint - -=head1 SYNOPSIS - -perl -MO=Lint[,OPTIONS] foo.pl - -=head1 DESCRIPTION - -The B::Lint module is equivalent to an extended version of the B<-w> -option of B<perl>. It is named after the program F<lint> which carries -out a similar process for C programs. - -=head1 OPTIONS AND LINT CHECKS - -Option words are separated by commas (not whitespace) and follow the -usual conventions of compiler backend options. Following any options -(indicated by a leading B<->) come lint check arguments. Each such -argument (apart from the special B<all> and B<none> options) is a -word representing one possible lint check (turning on that check) or -is B<no-foo> (turning off that check). Before processing the check -arguments, a standard list of checks is turned on. Later options -override earlier ones. Available options are: - -=over 8 - -=item B<context> - -Produces a warning whenever an array is used in an implicit scalar -context. For example, both of the lines - - $foo = length(@bar); - $foo = @bar; - -will elicit a warning. Using an explicit B<scalar()> silences the -warning. For example, - - $foo = scalar(@bar); - -=item B<implicit-read> and B<implicit-write> - -These options produce a warning whenever an operation implicitly -reads or (respectively) writes to one of Perl's special variables. -For example, B<implicit-read> will warn about these: - - /foo/; - -and B<implicit-write> will warn about these: - - s/foo/bar/; - -Both B<implicit-read> and B<implicit-write> warn about this: - - for (@a) { ... } - -=item B<bare-subs> - -This option warns whenever a bareword is implicitly quoted, but is also -the name of a subroutine in the current package. Typical mistakes that it will -trap are: - - use constant foo => 'bar'; - @a = ( foo => 1 ); - $b{foo} = 2; - -Neither of these will do what a naive user would expect. - -=item B<dollar-underscore> - -This option warns whenever C<$_> is used either explicitly anywhere or -as the implicit argument of a B<print> statement. - -=item B<private-names> - -This option warns on each use of any variable, subroutine or -method name that lives in a non-current package but begins with -an underscore ("_"). Warnings aren't issued for the special case -of the single character name "_" by itself (e.g. C<$_> and C<@_>). - -=item B<undefined-subs> - -This option warns whenever an undefined subroutine is invoked. -This option will only catch explicitly invoked subroutines such -as C<foo()> and not indirect invocations such as C<&$subref()> -or C<$obj-E<gt>meth()>. Note that some programs or modules delay -definition of subs until runtime by means of the AUTOLOAD -mechanism. - -=item B<regexp-variables> - -This option warns whenever one of the regexp variables C<$`>, C<$&> or C<$'> -is used. Any occurrence of any of these variables in your -program can slow your whole program down. See L<perlre> for -details. - -=item B<all> - -Turn all warnings on. - -=item B<none> - -Turn all warnings off. - -=back - -=head1 NON LINT-CHECK OPTIONS - -=over 8 - -=item B<-u Package> - -Normally, Lint only checks the main code of the program together -with all subs defined in package main. The B<-u> option lets you -include other package names whose subs are then checked by Lint. - -=back - -=head1 BUGS - -This is only a very preliminary version. - -This module doesn't work correctly on thread-enabled perls. - -=head1 AUTHOR - -Malcolm Beattie, mbeattie@sable.ox.ac.uk. - -=cut - -use strict; -use B qw(walkoptree_slow main_root walksymtable svref_2object parents - OPf_WANT_LIST OPf_WANT OPf_STACKED G_ARRAY SVf_POK - ); - -my $file = "unknown"; # shadows current filename -my $line = 0; # shadows current line number -my $curstash = "main"; # shadows current stash - -# Lint checks -my %check; -my %implies_ok_context; -BEGIN { - map($implies_ok_context{$_}++, - qw(scalar av2arylen aelem aslice helem hslice - keys values hslice defined undef delete)); -} - -# Lint checks turned on by default -my @default_checks = qw(context); - -my %valid_check; -# All valid checks -BEGIN { - map($valid_check{$_}++, - qw(context implicit_read implicit_write dollar_underscore - private_names bare_subs undefined_subs regexp_variables)); -} - -# Debugging options -my ($debug_op); - -my %done_cv; # used to mark which subs have already been linted -my @extra_packages; # Lint checks mainline code and all subs which are - # in main:: or in one of these packages. - -sub warning { - my $format = (@_ < 2) ? "%s" : shift; - warn sprintf("$format at %s line %d\n", @_, $file, $line); -} - -# This gimme can't cope with context that's only determined -# at runtime via dowantarray(). -sub gimme { - my $op = shift; - my $flags = $op->flags; - if ($flags & OPf_WANT) { - return(($flags & OPf_WANT) == OPf_WANT_LIST ? 1 : 0); - } - return undef; -} - -sub B::OP::lint {} - -sub B::COP::lint { - my $op = shift; - if ($op->name eq "nextstate") { - $file = $op->file; - $line = $op->line; - $curstash = $op->stash->NAME; - } -} - -sub B::UNOP::lint { - my $op = shift; - my $opname = $op->name; - if ($check{context} && ($opname eq "rv2av" || $opname eq "rv2hv")) { - my $parent = parents->[0]; - my $pname = $parent->name; - return if gimme($op) || $implies_ok_context{$pname}; - # Two special cases to deal with: "foreach (@foo)" and "delete $a{$b}" - # null out the parent so we have to check for a parent of pp_null and - # a grandparent of pp_enteriter or pp_delete - if ($pname eq "null") { - my $gpname = parents->[1]->name; - return if $gpname eq "enteriter" || $gpname eq "delete"; - } - warning("Implicit scalar context for %s in %s", - $opname eq "rv2av" ? "array" : "hash", $parent->desc); - } - if ($check{private_names} && $opname eq "method") { - my $methop = $op->first; - if ($methop->name eq "const") { - my $method = $methop->sv->PV; - if ($method =~ /^_/ && !defined(&{"$curstash\::$method"})) { - warning("Illegal reference to private method name $method"); - } - } - } -} - -sub B::PMOP::lint { - my $op = shift; - if ($check{implicit_read}) { - if ($op->name eq "match" && !($op->flags & OPf_STACKED)) { - warning('Implicit match on $_'); - } - } - if ($check{implicit_write}) { - if ($op->name eq "subst" && !($op->flags & OPf_STACKED)) { - warning('Implicit substitution on $_'); - } - } -} - -sub B::LOOP::lint { - my $op = shift; - if ($check{implicit_read} || $check{implicit_write}) { - if ($op->name eq "enteriter") { - my $last = $op->last; - if ($last->name eq "gv" && $last->gv->NAME eq "_") { - warning('Implicit use of $_ in foreach'); - } - } - } -} - -sub B::SVOP::lint { - my $op = shift; - if ( $check{bare_subs} && $op->name eq 'const' - && $op->private & 64 ) # OPpCONST_BARE = 64 in op.h - { - my $sv = $op->sv; - if( $sv->FLAGS & SVf_POK && exists &{$curstash.'::'.$sv->PV} ) { - warning "Bare sub name '" . $sv->PV . "' interpreted as string"; - } - } - if ($check{dollar_underscore} && $op->name eq "gvsv" - && $op->gv->NAME eq "_") - { - warning('Use of $_'); - } - if ($check{private_names}) { - my $opname = $op->name; - if ($opname eq "gv" || $opname eq "gvsv") { - my $gv = $op->gv; - if ($gv->NAME =~ /^_./ && $gv->STASH->NAME ne $curstash) { - warning('Illegal reference to private name %s', $gv->NAME); - } - } elsif ($opname eq "method_named") { - my $method = $op->gv->PV; - if ($method =~ /^_./) { - warning("Illegal reference to private method name $method"); - } - } - } - if ($check{undefined_subs}) { - if ($op->name eq "gv" - && $op->next->name eq "entersub") - { - my $gv = $op->gv; - my $subname = $gv->STASH->NAME . "::" . $gv->NAME; - no strict 'refs'; - if (!defined(&$subname)) { - $subname =~ s/^main:://; - warning('Undefined subroutine %s called', $subname); - } - } - } - if ($check{regexp_variables} && $op->name eq "gvsv") { - my $name = $op->gv->NAME; - if ($name =~ /^[&'`]$/) { - warning('Use of regexp variable $%s', $name); - } - } -} - -sub B::GV::lintcv { - my $gv = shift; - my $cv = $gv->CV; - #warn sprintf("lintcv: %s::%s (done=%d)\n", - # $gv->STASH->NAME, $gv->NAME, $done_cv{$$cv});#debug - return if !$$cv || $done_cv{$$cv}++; - my $root = $cv->ROOT; - #warn " root = $root (0x$$root)\n";#debug - walkoptree_slow($root, "lint") if $$root; -} - -sub do_lint { - my %search_pack; - walkoptree_slow(main_root, "lint") if ${main_root()}; - - # Now do subs in main - no strict qw(vars refs); - local(*glob); - for my $sym (keys %main::) { - next if $sym =~ /::$/; - *glob = $main::{$sym}; - svref_2object(\*glob)->EGV->lintcv; - } - - # Now do subs in non-main packages given by -u options - map { $search_pack{$_} = 1 } @extra_packages; - walksymtable(\%{"main::"}, "lintcv", sub { - my $package = shift; - $package =~ s/::$//; - #warn "Considering $package\n";#debug - return exists $search_pack{$package}; - }); -} - -sub compile { - my @options = @_; - my ($option, $opt, $arg); - # Turn on default lint checks - for $opt (@default_checks) { - $check{$opt} = 1; - } - OPTION: - while ($option = shift @options) { - if ($option =~ /^-(.)(.*)/) { - $opt = $1; - $arg = $2; - } else { - unshift @options, $option; - last OPTION; - } - if ($opt eq "-" && $arg eq "-") { - shift @options; - last OPTION; - } elsif ($opt eq "D") { - $arg ||= shift @options; - foreach $arg (split(//, $arg)) { - if ($arg eq "o") { - B->debug(1); - } elsif ($arg eq "O") { - $debug_op = 1; - } - } - } elsif ($opt eq "u") { - $arg ||= shift @options; - push(@extra_packages, $arg); - } - } - foreach $opt (@default_checks, @options) { - $opt =~ tr/-/_/; - if ($opt eq "all") { - %check = %valid_check; - } - elsif ($opt eq "none") { - %check = (); - } - else { - if ($opt =~ s/^no_//) { - $check{$opt} = 0; - } - else { - $check{$opt} = 1; - } - warn "No such check: $opt\n" unless defined $valid_check{$opt}; - } - } - # Remaining arguments are things to check - - return \&do_lint; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/B/Showlex.pm b/Master/tlpkg/tlperl.old/lib/B/Showlex.pm deleted file mode 100644 index 3b261a337df..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Showlex.pm +++ /dev/null @@ -1,205 +0,0 @@ -package B::Showlex; - -our $VERSION = '1.02'; - -use strict; -use B qw(svref_2object comppadlist class); -use B::Terse (); -use B::Concise (); - -# -# Invoke as -# perl -MO=Showlex,foo bar.pl -# to see the names of lexical variables used by &foo -# or as -# perl -MO=Showlex bar.pl -# to see the names of file scope lexicals used by bar.pl -# - - -# borrowed from B::Concise -our $walkHandle = \*STDOUT; - -sub walk_output { # updates $walkHandle - $walkHandle = B::Concise::walk_output(@_); - #print "got $walkHandle"; - #print $walkHandle "using it"; - $walkHandle; -} - -sub shownamearray { - my ($name, $av) = @_; - my @els = $av->ARRAY; - my $count = @els; - my $i; - print $walkHandle "$name has $count entries\n"; - for ($i = 0; $i < $count; $i++) { - my $sv = $els[$i]; - if (class($sv) ne "SPECIAL") { - printf $walkHandle "$i: %s (0x%lx) %s\n", class($sv), $$sv, $sv->PVX; - } else { - printf $walkHandle "$i: %s\n", $sv->terse; - #printf $walkHandle "$i: %s\n", B::Concise::concise_sv($sv); - } - } -} - -sub showvaluearray { - my ($name, $av) = @_; - my @els = $av->ARRAY; - my $count = @els; - my $i; - print $walkHandle "$name has $count entries\n"; - for ($i = 0; $i < $count; $i++) { - printf $walkHandle "$i: %s\n", $els[$i]->terse; - #print $walkHandle "$i: %s\n", B::Concise::concise_sv($els[$i]); - } -} - -sub showlex { - my ($objname, $namesav, $valsav) = @_; - shownamearray("Pad of lexical names for $objname", $namesav); - showvaluearray("Pad of lexical values for $objname", $valsav); -} - -my ($newlex, $nosp1); # rendering state vars - -sub newlex { # drop-in for showlex - my ($objname, $names, $vals) = @_; - my @names = $names->ARRAY; - my @vals = $vals->ARRAY; - my $count = @names; - print $walkHandle "$objname Pad has $count entries\n"; - printf $walkHandle "0: %s\n", $names[0]->terse unless $nosp1; - for (my $i = 1; $i < $count; $i++) { - printf $walkHandle "$i: %s = %s\n", $names[$i]->terse, $vals[$i]->terse - unless $nosp1 and $names[$i]->terse =~ /SPECIAL/; - } -} - -sub showlex_obj { - my ($objname, $obj) = @_; - $objname =~ s/^&main::/&/; - showlex($objname, svref_2object($obj)->PADLIST->ARRAY) if !$newlex; - newlex ($objname, svref_2object($obj)->PADLIST->ARRAY) if $newlex; -} - -sub showlex_main { - showlex("comppadlist", comppadlist->ARRAY) if !$newlex; - newlex ("main", comppadlist->ARRAY) if $newlex; -} - -sub compile { - my @options = grep(/^-/, @_); - my @args = grep(!/^-/, @_); - for my $o (@options) { - $newlex = 1 if $o eq "-newlex"; - $nosp1 = 1 if $o eq "-nosp"; - } - - return \&showlex_main unless @args; - return sub { - my $objref; - foreach my $objname (@args) { - next unless $objname; # skip nulls w/o carping - - if (ref $objname) { - print $walkHandle "B::Showlex::compile($objname)\n"; - $objref = $objname; - } else { - $objname = "main::$objname" unless $objname =~ /::/; - print $walkHandle "$objname:\n"; - no strict 'refs'; - die "err: unknown function ($objname)\n" - unless *{$objname}{CODE}; - $objref = \&$objname; - } - showlex_obj($objname, $objref); - } - } -} - -1; - -__END__ - -=head1 NAME - -B::Showlex - Show lexical variables used in functions or files - -=head1 SYNOPSIS - - perl -MO=Showlex[,-OPTIONS][,SUBROUTINE] foo.pl - -=head1 DESCRIPTION - -When a comma-separated list of subroutine names is given as options, Showlex -prints the lexical variables used in those subroutines. Otherwise, it prints -the file-scope lexicals in the file. - -=head1 EXAMPLES - -Traditional form: - - $ perl -MO=Showlex -e 'my ($i,$j,$k)=(1,"foo")' - Pad of lexical names for comppadlist has 4 entries - 0: SPECIAL #1 &PL_sv_undef - 1: PVNV (0x9db0fb0) $i - 2: PVNV (0x9db0f38) $j - 3: PVNV (0x9db0f50) $k - Pad of lexical values for comppadlist has 5 entries - 0: SPECIAL #1 &PL_sv_undef - 1: NULL (0x9da4234) - 2: NULL (0x9db0f2c) - 3: NULL (0x9db0f44) - 4: NULL (0x9da4264) - -e syntax OK - -New-style form: - - $ perl -MO=Showlex,-newlex -e 'my ($i,$j,$k)=(1,"foo")' - main Pad has 4 entries - 0: SPECIAL #1 &PL_sv_undef - 1: PVNV (0xa0c4fb8) "$i" = NULL (0xa0b8234) - 2: PVNV (0xa0c4f40) "$j" = NULL (0xa0c4f34) - 3: PVNV (0xa0c4f58) "$k" = NULL (0xa0c4f4c) - -e syntax OK - -New form, no specials, outside O framework: - - $ perl -MB::Showlex -e \ - 'my ($i,$j,$k)=(1,"foo"); B::Showlex::compile(-newlex,-nosp)->()' - main Pad has 4 entries - 1: PVNV (0x998ffb0) "$i" = IV (0x9983234) 1 - 2: PVNV (0x998ff68) "$j" = PV (0x998ff5c) "foo" - 3: PVNV (0x998ff80) "$k" = NULL (0x998ff74) - -Note that this example shows the values of the lexicals, whereas the other -examples did not (as they're compile-time only). - -=head2 OPTIONS - -The C<-newlex> option produces a more readable C<< name => value >> format, -and is shown in the second example above. - -The C<-nosp> option eliminates reporting of SPECIALs, such as C<0: SPECIAL -#1 &PL_sv_undef> above. Reporting of SPECIALs can sometimes overwhelm -your declared lexicals. - -=head1 SEE ALSO - -C<B::Showlex> can also be used outside of the O framework, as in the third -example. See C<B::Concise> for a fuller explanation of reasons. - -=head1 TODO - -Some of the reported info, such as hex addresses, is not particularly -valuable. Other information would be more useful for the typical -programmer, such as line-numbers, pad-slot reuses, etc.. Given this, --newlex isnt a particularly good flag-name. - -=head1 AUTHOR - -Malcolm Beattie, C<mbeattie@sable.ox.ac.uk> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/B/Stackobj.pm b/Master/tlpkg/tlperl.old/lib/B/Stackobj.pm deleted file mode 100644 index b17dfb8173a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Stackobj.pm +++ /dev/null @@ -1,349 +0,0 @@ -# Stackobj.pm -# -# Copyright (c) 1996 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::Stackobj; - -our $VERSION = '1.00'; - -use Exporter (); -@ISA = qw(Exporter); -@EXPORT_OK = qw(set_callback T_UNKNOWN T_DOUBLE T_INT VALID_UNSIGNED - VALID_INT VALID_DOUBLE VALID_SV REGISTER TEMPORARY); -%EXPORT_TAGS = (types => [qw(T_UNKNOWN T_DOUBLE T_INT)], - flags => [qw(VALID_INT VALID_DOUBLE VALID_SV - VALID_UNSIGNED REGISTER TEMPORARY)]); - -use Carp qw(confess); -use strict; -use B qw(class SVf_IOK SVf_NOK SVf_IVisUV); - -# Types -sub T_UNKNOWN () { 0 } -sub T_DOUBLE () { 1 } -sub T_INT () { 2 } -sub T_SPECIAL () { 3 } - -# Flags -sub VALID_INT () { 0x01 } -sub VALID_UNSIGNED () { 0x02 } -sub VALID_DOUBLE () { 0x04 } -sub VALID_SV () { 0x08 } -sub REGISTER () { 0x10 } # no implicit write-back when calling subs -sub TEMPORARY () { 0x20 } # no implicit write-back needed at all -sub SAVE_INT () { 0x40 } #if int part needs to be saved at all -sub SAVE_DOUBLE () { 0x80 } #if double part needs to be saved at all - - -# -# Callback for runtime code generation -# -my $runtime_callback = sub { confess "set_callback not yet called" }; -sub set_callback (&) { $runtime_callback = shift } -sub runtime { &$runtime_callback(@_) } - -# -# Methods -# - -sub write_back { confess "stack object does not implement write_back" } - -sub invalidate { shift->{flags} &= ~(VALID_INT |VALID_UNSIGNED | VALID_DOUBLE) } - -sub as_sv { - my $obj = shift; - if (!($obj->{flags} & VALID_SV)) { - $obj->write_back; - $obj->{flags} |= VALID_SV; - } - return $obj->{sv}; -} - -sub as_int { - my $obj = shift; - if (!($obj->{flags} & VALID_INT)) { - $obj->load_int; - $obj->{flags} |= VALID_INT|SAVE_INT; - } - return $obj->{iv}; -} - -sub as_double { - my $obj = shift; - if (!($obj->{flags} & VALID_DOUBLE)) { - $obj->load_double; - $obj->{flags} |= VALID_DOUBLE|SAVE_DOUBLE; - } - return $obj->{nv}; -} - -sub as_numeric { - my $obj = shift; - return $obj->{type} == T_INT ? $obj->as_int : $obj->as_double; -} - -sub as_bool { - my $obj=shift; - if ($obj->{flags} & VALID_INT ){ - return $obj->{iv}; - } - if ($obj->{flags} & VALID_DOUBLE ){ - return $obj->{nv}; - } - return sprintf("(SvTRUE(%s))", $obj->as_sv) ; -} - -# -# Debugging methods -# -sub peek { - my $obj = shift; - my $type = $obj->{type}; - my $flags = $obj->{flags}; - my @flags; - if ($type == T_UNKNOWN) { - $type = "T_UNKNOWN"; - } elsif ($type == T_INT) { - $type = "T_INT"; - } elsif ($type == T_DOUBLE) { - $type = "T_DOUBLE"; - } else { - $type = "(illegal type $type)"; - } - push(@flags, "VALID_INT") if $flags & VALID_INT; - push(@flags, "VALID_DOUBLE") if $flags & VALID_DOUBLE; - push(@flags, "VALID_SV") if $flags & VALID_SV; - push(@flags, "REGISTER") if $flags & REGISTER; - push(@flags, "TEMPORARY") if $flags & TEMPORARY; - @flags = ("none") unless @flags; - return sprintf("%s type=$type flags=%s sv=$obj->{sv}", - class($obj), join("|", @flags)); -} - -sub minipeek { - my $obj = shift; - my $type = $obj->{type}; - my $flags = $obj->{flags}; - if ($type == T_INT || $flags & VALID_INT) { - return $obj->{iv}; - } elsif ($type == T_DOUBLE || $flags & VALID_DOUBLE) { - return $obj->{nv}; - } else { - return $obj->{sv}; - } -} - -# -# Caller needs to ensure that set_int, set_double, -# set_numeric and set_sv are only invoked on legal lvalues. -# -sub set_int { - my ($obj, $expr,$unsigned) = @_; - runtime("$obj->{iv} = $expr;"); - $obj->{flags} &= ~(VALID_SV | VALID_DOUBLE); - $obj->{flags} |= VALID_INT|SAVE_INT; - $obj->{flags} |= VALID_UNSIGNED if $unsigned; -} - -sub set_double { - my ($obj, $expr) = @_; - runtime("$obj->{nv} = $expr;"); - $obj->{flags} &= ~(VALID_SV | VALID_INT); - $obj->{flags} |= VALID_DOUBLE|SAVE_DOUBLE; -} - -sub set_numeric { - my ($obj, $expr) = @_; - if ($obj->{type} == T_INT) { - $obj->set_int($expr); - } else { - $obj->set_double($expr); - } -} - -sub set_sv { - my ($obj, $expr) = @_; - runtime("SvSetSV($obj->{sv}, $expr);"); - $obj->invalidate; - $obj->{flags} |= VALID_SV; -} - -# -# Stackobj::Padsv -# - -@B::Stackobj::Padsv::ISA = 'B::Stackobj'; -sub B::Stackobj::Padsv::new { - my ($class, $type, $extra_flags, $ix, $iname, $dname) = @_; - $extra_flags |= SAVE_INT if $extra_flags & VALID_INT; - $extra_flags |= SAVE_DOUBLE if $extra_flags & VALID_DOUBLE; - bless { - type => $type, - flags => VALID_SV | $extra_flags, - sv => "PL_curpad[$ix]", - iv => "$iname", - nv => "$dname" - }, $class; -} - -sub B::Stackobj::Padsv::load_int { - my $obj = shift; - if ($obj->{flags} & VALID_DOUBLE) { - runtime("$obj->{iv} = $obj->{nv};"); - } else { - runtime("$obj->{iv} = SvIV($obj->{sv});"); - } - $obj->{flags} |= VALID_INT|SAVE_INT; -} - -sub B::Stackobj::Padsv::load_double { - my $obj = shift; - $obj->write_back; - runtime("$obj->{nv} = SvNV($obj->{sv});"); - $obj->{flags} |= VALID_DOUBLE|SAVE_DOUBLE; -} -sub B::Stackobj::Padsv::save_int { - my $obj = shift; - return $obj->{flags} & SAVE_INT; -} - -sub B::Stackobj::Padsv::save_double { - my $obj = shift; - return $obj->{flags} & SAVE_DOUBLE; -} - -sub B::Stackobj::Padsv::write_back { - my $obj = shift; - my $flags = $obj->{flags}; - return if $flags & VALID_SV; - if ($flags & VALID_INT) { - if ($flags & VALID_UNSIGNED ){ - runtime("sv_setuv($obj->{sv}, $obj->{iv});"); - }else{ - runtime("sv_setiv($obj->{sv}, $obj->{iv});"); - } - } elsif ($flags & VALID_DOUBLE) { - runtime("sv_setnv($obj->{sv}, $obj->{nv});"); - } else { - confess "write_back failed for lexical @{[$obj->peek]}\n"; - } - $obj->{flags} |= VALID_SV; -} - -# -# Stackobj::Const -# - -@B::Stackobj::Const::ISA = 'B::Stackobj'; -sub B::Stackobj::Const::new { - my ($class, $sv) = @_; - my $obj = bless { - flags => 0, - sv => $sv # holds the SV object until write_back happens - }, $class; - if ( ref($sv) eq "B::SPECIAL" ){ - $obj->{type}= T_SPECIAL; - }else{ - my $svflags = $sv->FLAGS; - if ($svflags & SVf_IOK) { - $obj->{flags} = VALID_INT|VALID_DOUBLE; - $obj->{type} = T_INT; - if ($svflags & SVf_IVisUV){ - $obj->{flags} |= VALID_UNSIGNED; - $obj->{nv} = $obj->{iv} = $sv->UVX; - }else{ - $obj->{nv} = $obj->{iv} = $sv->IV; - } - } elsif ($svflags & SVf_NOK) { - $obj->{flags} = VALID_INT|VALID_DOUBLE; - $obj->{type} = T_DOUBLE; - $obj->{iv} = $obj->{nv} = $sv->NV; - } else { - $obj->{type} = T_UNKNOWN; - } - } - return $obj; -} - -sub B::Stackobj::Const::write_back { - my $obj = shift; - return if $obj->{flags} & VALID_SV; - # Save the SV object and replace $obj->{sv} by its C source code name - $obj->{sv} = $obj->{sv}->save; - $obj->{flags} |= VALID_SV|VALID_INT|VALID_DOUBLE; -} - -sub B::Stackobj::Const::load_int { - my $obj = shift; - if (ref($obj->{sv}) eq "B::RV"){ - $obj->{iv} = int($obj->{sv}->RV->PV); - }else{ - $obj->{iv} = int($obj->{sv}->PV); - } - $obj->{flags} |= VALID_INT; -} - -sub B::Stackobj::Const::load_double { - my $obj = shift; - if (ref($obj->{sv}) eq "B::RV"){ - $obj->{nv} = $obj->{sv}->RV->PV + 0.0; - }else{ - $obj->{nv} = $obj->{sv}->PV + 0.0; - } - $obj->{flags} |= VALID_DOUBLE; -} - -sub B::Stackobj::Const::invalidate {} - -# -# Stackobj::Bool -# - -@B::Stackobj::Bool::ISA = 'B::Stackobj'; -sub B::Stackobj::Bool::new { - my ($class, $preg) = @_; - my $obj = bless { - type => T_INT, - flags => VALID_INT|VALID_DOUBLE, - iv => $$preg, - nv => $$preg, - preg => $preg # this holds our ref to the pseudo-reg - }, $class; - return $obj; -} - -sub B::Stackobj::Bool::write_back { - my $obj = shift; - return if $obj->{flags} & VALID_SV; - $obj->{sv} = "($obj->{iv} ? &PL_sv_yes : &PL_sv_no)"; - $obj->{flags} |= VALID_SV; -} - -# XXX Might want to handle as_double/set_double/load_double? - -sub B::Stackobj::Bool::invalidate {} - -1; - -__END__ - -=head1 NAME - -B::Stackobj - Helper module for CC backend - -=head1 SYNOPSIS - - use B::Stackobj; - -=head1 DESCRIPTION - -See F<ext/B/README>. - -=head1 AUTHOR - -Malcolm Beattie, C<mbeattie@sable.ox.ac.uk> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/B/Stash.pm b/Master/tlpkg/tlperl.old/lib/B/Stash.pm deleted file mode 100644 index 5e60868a28e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Stash.pm +++ /dev/null @@ -1,52 +0,0 @@ -# Stash.pm -- show what stashes are loaded -# vishalb@hotmail.com -package B::Stash; - -our $VERSION = '1.00'; - -=pod - -=head1 NAME - -B::Stash - show what stashes are loaded - -=cut - -BEGIN { %Seen = %INC } - -CHECK { - my @arr=scan($main::{"main::"}); - @arr=map{s/\:\:$//;$_ eq "<none>"?():$_;} @arr; - print "-umain,-u", join (",-u",@arr) ,"\n"; -} -sub scan{ - my $start=shift; - my $prefix=shift; - $prefix = '' unless defined $prefix; - my @return; - foreach my $key ( keys %{$start}){ -# print $prefix,$key,"\n"; - if ($key =~ /::$/){ - unless ($start eq ${$start}{$key} or $key eq "B::" ){ - push @return, $key unless omit($prefix.$key); - foreach my $subscan ( scan(${$start}{$key},$prefix.$key)){ - push @return, "$key".$subscan; - } - } - } - } - return @return; -} -sub omit{ - my $module = shift; - my %omit=("DynaLoader::" => 1 , "XSLoader::" => 1, "CORE::" => 1 , - "CORE::GLOBAL::" => 1, "UNIVERSAL::" => 1 ); - return 1 if $omit{$module}; - if ($module eq "IO::" or $module eq "IO::Handle::"){ - $module =~ s/::/\//g; - return 1 unless $INC{$module}; - } - - return 0; -} -1; diff --git a/Master/tlpkg/tlperl.old/lib/B/Terse.pm b/Master/tlpkg/tlperl.old/lib/B/Terse.pm deleted file mode 100644 index 1d53950ad3b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Terse.pm +++ /dev/null @@ -1,103 +0,0 @@ -package B::Terse; - -our $VERSION = '1.03_01'; - -use strict; -use B qw(class); -use B::Asmdata qw(@specialsv_name); -use B::Concise qw(concise_subref set_style_standard); -use Carp; - -sub terse { - my ($order, $subref) = @_; - set_style_standard("terse"); - if ($order eq "exec") { - concise_subref('exec', $subref); - } else { - concise_subref('basic', $subref); - } -} - -sub compile { - my @args = @_; - my $order = @args ? shift(@args) : ""; - $order = "-exec" if $order eq "exec"; - unshift @args, $order if $order ne ""; - B::Concise::compile("-terse", @args); -} - -sub indent { - my ($level) = @_ ? shift : 0; - return " " x $level; -} - -# Don't use this, at least on OPs in subroutines: it has no way of -# getting to the pad, and will give wrong answers or crash. -sub B::OP::terse { - carp "B::OP::terse is deprecated; use B::Concise instead"; - B::Concise::b_terse(@_); -} - -sub B::SV::terse { - my($sv, $level) = (@_, 0); - my %info; - B::Concise::concise_sv($sv, \%info); - my $s = indent($level) - . B::Concise::fmt_line(\%info, $sv, - "#svclass~(?((#svaddr))?)~#svval", 0); - chomp $s; - print "$s\n" unless defined wantarray; - $s; -} - -sub B::NULL::terse { - my ($sv, $level) = (@_, 0); - my $s = indent($level) . sprintf "%s (0x%lx)", class($sv), $$sv; - print "$s\n" unless defined wantarray; - $s; -} - -sub B::SPECIAL::terse { - my ($sv, $level) = (@_, 0); - my $s = indent($level) - . sprintf( "%s #%d %s", class($sv), $$sv, $specialsv_name[$$sv]); - print "$s\n" unless defined wantarray; - $s; -} - -1; - -__END__ - -=head1 NAME - -B::Terse - Walk Perl syntax tree, printing terse info about ops - -=head1 SYNOPSIS - - perl -MO=Terse[,OPTIONS] foo.pl - -=head1 DESCRIPTION - -This version of B::Terse is really just a wrapper that calls B::Concise -with the B<-terse> option. It is provided for compatibility with old scripts -(and habits) but using B::Concise directly is now recommended instead. - -For compatibility with the old B::Terse, this module also adds a -method named C<terse> to B::OP and B::SV objects. The B::SV method is -largely compatible with the old one, though authors of new software -might be advised to choose a more user-friendly output format. The -B::OP C<terse> method, however, doesn't work well. Since B::Terse was -first written, much more information in OPs has migrated to the -scratchpad datastructure, but the C<terse> interface doesn't have any -way of getting to the correct pad. As a kludge, the new version will -always use the pad for the main program, but for OPs in subroutines -this will give the wrong answer or crash. - -=head1 AUTHOR - -The original version of B::Terse was written by Malcolm Beattie, -E<lt>mbeattie@sable.ox.ac.ukE<gt>. This wrapper was written by Stephen -McCamant, E<lt>smcc@MIT.EDUE<gt>. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/B/Xref.pm b/Master/tlpkg/tlperl.old/lib/B/Xref.pm deleted file mode 100644 index f727dc766b5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/Xref.pm +++ /dev/null @@ -1,430 +0,0 @@ -package B::Xref; - -our $VERSION = '1.01'; - -=head1 NAME - -B::Xref - Generates cross reference reports for Perl programs - -=head1 SYNOPSIS - -perl -MO=Xref[,OPTIONS] foo.pl - -=head1 DESCRIPTION - -The B::Xref module is used to generate a cross reference listing of all -definitions and uses of variables, subroutines and formats in a Perl program. -It is implemented as a backend for the Perl compiler. - -The report generated is in the following format: - - File filename1 - Subroutine subname1 - Package package1 - object1 line numbers - object2 line numbers - ... - Package package2 - ... - -Each B<File> section reports on a single file. Each B<Subroutine> section -reports on a single subroutine apart from the special cases -"(definitions)" and "(main)". These report, respectively, on subroutine -definitions found by the initial symbol table walk and on the main part of -the program or module external to all subroutines. - -The report is then grouped by the B<Package> of each variable, -subroutine or format with the special case "(lexicals)" meaning -lexical variables. Each B<object> name (implicitly qualified by its -containing B<Package>) includes its type character(s) at the beginning -where possible. Lexical variables are easier to track and even -included dereferencing information where possible. - -The C<line numbers> are a comma separated list of line numbers (some -preceded by code letters) where that object is used in some way. -Simple uses aren't preceded by a code letter. Introductions (such as -where a lexical is first defined with C<my>) are indicated with the -letter "i". Subroutine and method calls are indicated by the character -"&". Subroutine definitions are indicated by "s" and format -definitions by "f". - -=head1 OPTIONS - -Option words are separated by commas (not whitespace) and follow the -usual conventions of compiler backend options. - -=over 8 - -=item C<-oFILENAME> - -Directs output to C<FILENAME> instead of standard output. - -=item C<-r> - -Raw output. Instead of producing a human-readable report, outputs a line -in machine-readable form for each definition/use of a variable/sub/format. - -=item C<-d> - -Don't output the "(definitions)" sections. - -=item C<-D[tO]> - -(Internal) debug options, probably only useful if C<-r> included. -The C<t> option prints the object on the top of the stack as it's -being tracked. The C<O> option prints each operator as it's being -processed in the execution order of the program. - -=back - -=head1 BUGS - -Non-lexical variables are quite difficult to track through a program. -Sometimes the type of a non-lexical variable's use is impossible to -determine. Introductions of non-lexical non-scalars don't seem to be -reported properly. - -=head1 AUTHOR - -Malcolm Beattie, mbeattie@sable.ox.ac.uk. - -=cut - -use strict; -use Config; -use B qw(peekop class comppadlist main_start svref_2object walksymtable - OPpLVAL_INTRO SVf_POK OPpOUR_INTRO cstring - ); - -sub UNKNOWN { ["?", "?", "?"] } - -my @pad; # lexicals in current pad - # as ["(lexical)", type, name] -my %done; # keyed by $$op: set when each $op is done -my $top = UNKNOWN; # shadows top element of stack as - # [pack, type, name] (pack can be "(lexical)") -my $file; # shadows current filename -my $line; # shadows current line number -my $subname; # shadows current sub name -my %table; # Multi-level hash to record all uses etc. -my @todo = (); # List of CVs that need processing - -my %code = (intro => "i", used => "", - subdef => "s", subused => "&", - formdef => "f", meth => "->"); - - -# Options -my ($debug_op, $debug_top, $nodefs, $raw); - -sub process { - my ($var, $event) = @_; - my ($pack, $type, $name) = @$var; - if ($type eq "*") { - if ($event eq "used") { - return; - } elsif ($event eq "subused") { - $type = "&"; - } - } - $type =~ s/(.)\*$/$1/g; - if ($raw) { - printf "%-16s %-12s %5d %-12s %4s %-16s %s\n", - $file, $subname, $line, $pack, $type, $name, $event; - } else { - # Wheee - push(@{$table{$file}->{$subname}->{$pack}->{$type.$name}->{$event}}, - $line); - } -} - -sub load_pad { - my $padlist = shift; - my ($namelistav, $vallistav, @namelist, $ix); - @pad = (); - return if class($padlist) eq "SPECIAL"; - ($namelistav,$vallistav) = $padlist->ARRAY; - @namelist = $namelistav->ARRAY; - for ($ix = 1; $ix < @namelist; $ix++) { - my $namesv = $namelist[$ix]; - next if class($namesv) eq "SPECIAL"; - my ($type, $name) = $namesv->PV =~ /^(.)([^\0]*)(\0.*)?$/; - $pad[$ix] = ["(lexical)", $type || '?', $name || '?']; - } - if ($Config{useithreads}) { - my (@vallist); - @vallist = $vallistav->ARRAY; - for ($ix = 1; $ix < @vallist; $ix++) { - my $valsv = $vallist[$ix]; - next unless class($valsv) eq "GV"; - # these pad GVs don't have corresponding names, so same @pad - # array can be used without collisions - $pad[$ix] = [$valsv->STASH->NAME, "*", $valsv->NAME]; - } - } -} - -sub xref { - my $start = shift; - my $op; - for ($op = $start; $$op; $op = $op->next) { - last if $done{$$op}++; - warn sprintf("top = [%s, %s, %s]\n", @$top) if $debug_top; - warn peekop($op), "\n" if $debug_op; - my $opname = $op->name; - if ($opname =~ /^(or|and|mapwhile|grepwhile|range|cond_expr)$/) { - xref($op->other); - } elsif ($opname eq "match" || $opname eq "subst") { - xref($op->pmreplstart); - } elsif ($opname eq "substcont") { - xref($op->other->pmreplstart); - $op = $op->other; - redo; - } elsif ($opname eq "enterloop") { - xref($op->redoop); - xref($op->nextop); - xref($op->lastop); - } elsif ($opname eq "subst") { - xref($op->pmreplstart); - } else { - no strict 'refs'; - my $ppname = "pp_$opname"; - &$ppname($op) if defined(&$ppname); - } - } -} - -sub xref_cv { - my $cv = shift; - my $pack = $cv->GV->STASH->NAME; - $subname = ($pack eq "main" ? "" : "$pack\::") . $cv->GV->NAME; - load_pad($cv->PADLIST); - xref($cv->START); - $subname = "(main)"; -} - -sub xref_object { - my $cvref = shift; - xref_cv(svref_2object($cvref)); -} - -sub xref_main { - $subname = "(main)"; - load_pad(comppadlist); - xref(main_start); - while (@todo) { - xref_cv(shift @todo); - } -} - -sub pp_nextstate { - my $op = shift; - $file = $op->file; - $line = $op->line; - $top = UNKNOWN; -} - -sub pp_padsv { - my $op = shift; - $top = $pad[$op->targ]; - process($top, $op->private & OPpLVAL_INTRO ? "intro" : "used"); -} - -sub pp_padav { pp_padsv(@_) } -sub pp_padhv { pp_padsv(@_) } - -sub deref { - my ($op, $var, $as) = @_; - $var->[1] = $as . $var->[1]; - process($var, $op->private & OPpOUR_INTRO ? "intro" : "used"); -} - -sub pp_rv2cv { deref(shift, $top, "&"); } -sub pp_rv2hv { deref(shift, $top, "%"); } -sub pp_rv2sv { deref(shift, $top, "\$"); } -sub pp_rv2av { deref(shift, $top, "\@"); } -sub pp_rv2gv { deref(shift, $top, "*"); } - -sub pp_gvsv { - my $op = shift; - my $gv; - if ($Config{useithreads}) { - $top = $pad[$op->padix]; - $top = UNKNOWN unless $top; - $top->[1] = '$'; - } - else { - $gv = $op->gv; - $top = [$gv->STASH->NAME, '$', $gv->SAFENAME]; - } - process($top, $op->private & OPpLVAL_INTRO || - $op->private & OPpOUR_INTRO ? "intro" : "used"); -} - -sub pp_gv { - my $op = shift; - my $gv; - if ($Config{useithreads}) { - $top = $pad[$op->padix]; - $top = UNKNOWN unless $top; - $top->[1] = '*'; - } - else { - $gv = $op->gv; - $top = [$gv->STASH->NAME, "*", $gv->SAFENAME]; - } - process($top, $op->private & OPpLVAL_INTRO ? "intro" : "used"); -} - -sub pp_const { - my $op = shift; - my $sv = $op->sv; - # constant could be in the pad (under useithreads) - if ($$sv) { - $top = ["?", "", - (class($sv) ne "SPECIAL" && $sv->FLAGS & SVf_POK) - ? cstring($sv->PV) : "?"]; - } - else { - $top = $pad[$op->targ]; - $top = UNKNOWN unless $top; - } -} - -sub pp_method { - my $op = shift; - $top = ["(method)", "->".$top->[1], $top->[2]]; -} - -sub pp_entersub { - my $op = shift; - if ($top->[1] eq "m") { - process($top, "meth"); - } else { - process($top, "subused"); - } - $top = UNKNOWN; -} - -# -# Stuff for cross referencing definitions of variables and subs -# - -sub B::GV::xref { - my $gv = shift; - my $cv = $gv->CV; - if ($$cv) { - #return if $done{$$cv}++; - $file = $gv->FILE; - $line = $gv->LINE; - process([$gv->STASH->NAME, "&", $gv->NAME], "subdef"); - push(@todo, $cv); - } - my $form = $gv->FORM; - if ($$form) { - return if $done{$$form}++; - $file = $gv->FILE; - $line = $gv->LINE; - process([$gv->STASH->NAME, "", $gv->NAME], "formdef"); - } -} - -sub xref_definitions { - my ($pack, %exclude); - return if $nodefs; - $subname = "(definitions)"; - foreach $pack (qw(B O AutoLoader DynaLoader XSLoader Config DB VMS - strict vars FileHandle Exporter Carp PerlIO::Layer - attributes utf8 warnings)) { - $exclude{$pack."::"} = 1; - } - no strict qw(vars refs); - walksymtable(\%{"main::"}, "xref", sub { !defined($exclude{$_[0]}) }); -} - -sub output { - return if $raw; - my ($file, $subname, $pack, $name, $ev, $perfile, $persubname, - $perpack, $pername, $perev); - foreach $file (sort(keys(%table))) { - $perfile = $table{$file}; - print "File $file\n"; - foreach $subname (sort(keys(%$perfile))) { - $persubname = $perfile->{$subname}; - print " Subroutine $subname\n"; - foreach $pack (sort(keys(%$persubname))) { - $perpack = $persubname->{$pack}; - print " Package $pack\n"; - foreach $name (sort(keys(%$perpack))) { - $pername = $perpack->{$name}; - my @lines; - foreach $ev (qw(intro formdef subdef meth subused used)) { - $perev = $pername->{$ev}; - if (defined($perev) && @$perev) { - my $code = $code{$ev}; - push(@lines, map("$code$_", @$perev)); - } - } - printf " %-16s %s\n", $name, join(", ", @lines); - } - } - } - } -} - -sub compile { - my @options = @_; - my ($option, $opt, $arg); - OPTION: - while ($option = shift @options) { - if ($option =~ /^-(.)(.*)/) { - $opt = $1; - $arg = $2; - } else { - unshift @options, $option; - last OPTION; - } - if ($opt eq "-" && $arg eq "-") { - shift @options; - last OPTION; - } elsif ($opt eq "o") { - $arg ||= shift @options; - open(STDOUT, ">$arg") or return "$arg: $!\n"; - } elsif ($opt eq "d") { - $nodefs = 1; - } elsif ($opt eq "r") { - $raw = 1; - } elsif ($opt eq "D") { - $arg ||= shift @options; - foreach $arg (split(//, $arg)) { - if ($arg eq "o") { - B->debug(1); - } elsif ($arg eq "O") { - $debug_op = 1; - } elsif ($arg eq "t") { - $debug_top = 1; - } - } - } - } - if (@options) { - return sub { - my $objname; - xref_definitions(); - foreach $objname (@options) { - $objname = "main::$objname" unless $objname =~ /::/; - eval "xref_object(\\&$objname)"; - die "xref_object(\\&$objname) failed: $@" if $@; - } - output(); - } - } else { - return sub { - xref_definitions(); - xref_main(); - output(); - } - } -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/B/assemble b/Master/tlpkg/tlperl.old/lib/B/assemble deleted file mode 100644 index 43cc5bc4b33..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/assemble +++ /dev/null @@ -1,30 +0,0 @@ -use B::Assembler qw(assemble_fh); -use FileHandle; - -my ($filename, $fh, $out); - -if ($ARGV[0] eq "-d") { - B::Assembler::debug(1); - shift; -} - -$out = \*STDOUT; - -if (@ARGV == 0) { - $fh = \*STDIN; - $filename = "-"; -} elsif (@ARGV == 1) { - $filename = $ARGV[0]; - $fh = new FileHandle "<$filename"; -} elsif (@ARGV == 2) { - $filename = $ARGV[0]; - $fh = new FileHandle "<$filename"; - $out = new FileHandle ">$ARGV[1]"; -} else { - die "Usage: assemble [filename] [outfilename]\n"; -} - -binmode $out; -$SIG{__WARN__} = sub { warn "$filename:@_" }; -$SIG{__DIE__} = sub { die "$filename: @_" }; -assemble_fh($fh, sub { print $out @_ }); diff --git a/Master/tlpkg/tlperl.old/lib/B/cc_harness b/Master/tlpkg/tlperl.old/lib/B/cc_harness deleted file mode 100644 index 79f8727a8f0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/cc_harness +++ /dev/null @@ -1,12 +0,0 @@ -use Config; - -$libdir = $ENV{PERL_SRC} || "$Config{installarchlib}/CORE"; - -if (!grep(/^-[cS]$/, @ARGV)) { - $linkargs = sprintf("%s $libdir/$Config{libperl} %s", - @Config{qw(ldflags libs)}); -} - -$cccmd = "$Config{cc} $Config{ccflags} -I$libdir @ARGV $linkargs"; -print "$cccmd\n"; -exec $cccmd; diff --git a/Master/tlpkg/tlperl.old/lib/B/disassemble b/Master/tlpkg/tlperl.old/lib/B/disassemble deleted file mode 100644 index 6530b809502..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/disassemble +++ /dev/null @@ -1,22 +0,0 @@ -use B::Disassembler qw(disassemble_fh); -use FileHandle; - -my $fh; -if (@ARGV == 0) { - $fh = \*STDIN; -} elsif (@ARGV == 1) { - $fh = new FileHandle "<$ARGV[0]"; -} else { - die "Usage: disassemble [filename]\n"; -} - -sub print_insn { - my ($insn, $arg) = @_; - if (defined($arg)) { - printf "%s %s\n", $insn, $arg; - } else { - print $insn, "\n"; - } -} - -disassemble_fh($fh, \&print_insn); diff --git a/Master/tlpkg/tlperl.old/lib/B/makeliblinks b/Master/tlpkg/tlperl.old/lib/B/makeliblinks deleted file mode 100644 index 82560783c01..00000000000 --- a/Master/tlpkg/tlperl.old/lib/B/makeliblinks +++ /dev/null @@ -1,54 +0,0 @@ -use File::Find; -use Config; - -if (@ARGV != 2) { - warn <<"EOT"; -Usage: makeliblinks libautodir targetdir -where libautodir is the architecture-dependent auto directory -(e.g. $Config::Config{archlib}/auto). -EOT - exit 2; -} - -my ($libautodir, $targetdir) = @ARGV; - -# Calculate relative path prefix from $targetdir to $libautodir -sub relprefix { - my ($to, $from) = @_; - my $up; - for ($up = 0; substr($to, 0, length($from)) ne $from; $up++) { - $from =~ s( - [^/]+ (?# a group of non-slashes) - /* (?# maybe with some trailing slashes) - $ (?# at the end of the path) - )()x; - } - return (("../" x $up) . substr($to, length($from))); -} - -my $relprefix = relprefix($libautodir, $targetdir); - -my ($dlext, $lib_ext) = @Config::Config{qw(dlext lib_ext)}; - -sub link_if_library { - if (/\.($dlext|$lib_ext)$/o) { - my $ext = $1; - my $name = $File::Find::name; - if (substr($name, 0, length($libautodir) + 1) ne "$libautodir/") { - die "directory of $name doesn't match $libautodir\n"; - } - substr($name, 0, length($libautodir) + 1) = ''; - my @parts = split(m(/), $name); - if ($parts[-1] ne "$parts[-2].$ext") { - die "module name $_ doesn't match its directory $libautodir\n"; - } - pop @parts; - my $libpath = "$targetdir/lib" . join("__", @parts) . ".$ext"; - print "$libpath -> $relprefix/$name\n"; - symlink("$relprefix/$name", $libpath) - or warn "above link failed with error: $!\n"; - } -} - -find(\&link_if_library, $libautodir); -exit 0; diff --git a/Master/tlpkg/tlperl.old/lib/Carp.pm b/Master/tlpkg/tlperl.old/lib/Carp.pm deleted file mode 100644 index 1a814ead34f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Carp.pm +++ /dev/null @@ -1,274 +0,0 @@ -package Carp; - -our $VERSION = '1.04'; - -=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. - -You can also alter the way the output and logic of C<Carp> works, by -changing some global variables in the C<Carp> namespace. See the -section on C<GLOBAL VARIABLES> below. - -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. - -Alternately, you can set the global variable C<$Carp::Verbose> to true. -See the C<GLOBAL VARIABLES> section below. - -=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. - -# Comments added by Jos I. Boumans <kane@dwim.org> 11-Aug-2004 -# I can not get %CarpInternal or %Internal to work as advertised, -# therefor leaving it out of the below documentation. -# $CarpLevel may be decprecated according to the last comment, but -# after 6 years, it's still around and in heavy use ;) - -=pod - -=head1 GLOBAL VARIABLES - -=head2 $Carp::CarpLevel - -This variable determines how many call frames are to be skipped when -reporting where an error occurred on a call to one of C<Carp>'s -functions. For example: - - $Carp::CarpLevel = 1; - sub bar { .... or _error('Wrong input') } - sub _error { Carp::carp(@_) } - -This would make Carp report the error as coming from C<bar>'s caller, -rather than from C<_error>'s caller, as it normally would. - -Defaults to C<0>. - -=head2 $Carp::MaxEvalLen - -This variable determines how many characters of a string-eval are to -be shown in the output. Use a value of C<0> to show all text. - -Defaults to C<0>. - -=head2 $Carp::MaxArgLen - -This variable determines how many characters of each argument to a -function to print. Use a value of C<0> to show the full length of the -argument. - -Defaults to C<64>. - -=head2 $Carp::MaxArgNums - -This variable determines how many arguments to each function to show. -Use a value of C<0> to show all arguments to a function call. - -Defaults to C<8>. - -=head2 $Carp::Verbose - -This variable makes C<Carp> use the C<longmess> function at all times. -This effectively means that all calls to C<carp> become C<cluck> and -all calls to C<croak> become C<confess>. - -Note, this is analogous to using C<use Carp 'verbose'>. - -Defaults to C<0>. - -=cut - - -$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 - -=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 - -# 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($@, $!); - # XXX fix require to not clear $@ or $!? - # don't use require unless we need to (for Safe compartments) - require Carp::Heavy unless $INC{"Carp/Heavy.pm"}; - } - # 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($@, $!); - # XXX fix require to not clear $@ or $!? - # don't use require unless we need to (for Safe compartments) - require Carp::Heavy unless $INC{"Carp/Heavy.pm"}; - } - # 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/tlpkg/tlperl.old/lib/Carp/Heavy.pm b/Master/tlpkg/tlperl.old/lib/Carp/Heavy.pm deleted file mode 100644 index 55bca2b421a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Carp/Heavy.pm +++ /dev/null @@ -1,241 +0,0 @@ -# Carp::Heavy uses some variables in common with Carp. -package Carp; - -=head1 NAME - -Carp::Heavy - 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 (ref($arg)) { - $arg = defined($overload::VERSION) ? overload::StrVal($arg) : "$arg"; - }elsif (not defined($arg)) { - $arg = 'undef'; - } - $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 - it is broken on Unicode though. - # Suggestions? - utf8::is_utf8($arg) - or $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; - } - - 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 $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/tlpkg/tlperl.old/lib/Class/ISA.pm b/Master/tlpkg/tlperl.old/lib/Class/ISA.pm deleted file mode 100644 index e1371912e2c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Class/ISA.pm +++ /dev/null @@ -1,214 +0,0 @@ -#!/usr/local/bin/perl -# Time-stamp: "2004-12-29 20:01:02 AST" -*-Perl-*- - -package Class::ISA; -require 5; -use strict; -use vars qw($Debug $VERSION); -$VERSION = '0.33'; -$Debug = 0 unless defined $Debug; - -=head1 NAME - -Class::ISA -- report the search path for a class's ISA tree - -=head1 SYNOPSIS - - # Suppose you go: use Food::Fishstick, and that uses and - # inherits from other things, which in turn use and inherit - # from other things. And suppose, for sake of brevity of - # example, that their ISA tree is the same as: - - @Food::Fishstick::ISA = qw(Food::Fish Life::Fungus Chemicals); - @Food::Fish::ISA = qw(Food); - @Food::ISA = qw(Matter); - @Life::Fungus::ISA = qw(Life); - @Chemicals::ISA = qw(Matter); - @Life::ISA = qw(Matter); - @Matter::ISA = qw(); - - use Class::ISA; - print "Food::Fishstick path is:\n ", - join(", ", Class::ISA::super_path('Food::Fishstick')), - "\n"; - -That prints: - - Food::Fishstick path is: - Food::Fish, Food, Matter, Life::Fungus, Life, Chemicals - -=head1 DESCRIPTION - -Suppose you have a class (like Food::Fish::Fishstick) that is derived, -via its @ISA, from one or more superclasses (as Food::Fish::Fishstick -is from Food::Fish, Life::Fungus, and Chemicals), and some of those -superclasses may themselves each be derived, via its @ISA, from one or -more superclasses (as above). - -When, then, you call a method in that class ($fishstick->calories), -Perl first searches there for that method, but if it's not there, it -goes searching in its superclasses, and so on, in a depth-first (or -maybe "height-first" is the word) search. In the above example, it'd -first look in Food::Fish, then Food, then Matter, then Life::Fungus, -then Life, then Chemicals. - -This library, Class::ISA, provides functions that return that list -- -the list (in order) of names of classes Perl would search to find a -method, with no duplicates. - -=head1 FUNCTIONS - -=over - -=item the function Class::ISA::super_path($CLASS) - -This returns the ordered list of names of classes that Perl would -search thru in order to find a method, with no duplicates in the list. -$CLASS is not included in the list. UNIVERSAL is not included -- if -you need to consider it, add it to the end. - - -=item the function Class::ISA::self_and_super_path($CLASS) - -Just like C<super_path>, except that $CLASS is included as the first -element. - -=item the function Class::ISA::self_and_super_versions($CLASS) - -This returns a hash whose keys are $CLASS and its -(super-)superclasses, and whose values are the contents of each -class's $VERSION (or undef, for classes with no $VERSION). - -The code for self_and_super_versions is meant to serve as an example -for precisely the kind of tasks I anticipate that self_and_super_path -and super_path will be used for. You are strongly advised to read the -source for self_and_super_versions, and the comments there. - -=back - -=head1 CAUTIONARY NOTES - -* Class::ISA doesn't export anything. You have to address the -functions with a "Class::ISA::" on the front. - -* Contrary to its name, Class::ISA isn't a class; it's just a package. -Strange, isn't it? - -* Say you have a loop in the ISA tree of the class you're calling one -of the Class::ISA functions on: say that Food inherits from Matter, -but Matter inherits from Food (for sake of argument). If Perl, while -searching for a method, actually discovers this cyclicity, it will -throw a fatal error. The functions in Class::ISA effectively ignore -this cyclicity; the Class::ISA algorithm is "never go down the same -path twice", and cyclicities are just a special case of that. - -* The Class::ISA functions just look at @ISAs. But theoretically, I -suppose, AUTOLOADs could bypass Perl's ISA-based search mechanism and -do whatever they please. That would be bad behavior, tho; and I try -not to think about that. - -* If Perl can't find a method anywhere in the ISA tree, it then looks -in the magical class UNIVERSAL. This is rarely relevant to the tasks -that I expect Class::ISA functions to be put to, but if it matters to -you, then instead of this: - - @supers = Class::Tree::super_path($class); - -do this: - - @supers = (Class::Tree::super_path($class), 'UNIVERSAL'); - -And don't say no-one ever told ya! - -* When you call them, the Class::ISA functions look at @ISAs anew -- -that is, there is no memoization, and so if ISAs change during -runtime, you get the current ISA tree's path, not anything memoized. -However, changing ISAs at runtime is probably a sign that you're out -of your mind! - -=head1 COPYRIGHT - -Copyright (c) 1999, 2000 Sean M. Burke. All rights reserved. - -This library is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=head1 AUTHOR - -Sean M. Burke C<sburke@cpan.org> - -=cut - -########################################################################### - -sub self_and_super_versions { - no strict 'refs'; - map { - $_ => (defined(${"$_\::VERSION"}) ? ${"$_\::VERSION"} : undef) - } self_and_super_path($_[0]) -} - -# Also consider magic like: -# no strict 'refs'; -# my %class2SomeHashr = -# map { defined(%{"$_\::SomeHash"}) ? ($_ => \%{"$_\::SomeHash"}) : () } -# Class::ISA::self_and_super_path($class); -# to get a hash of refs to all the defined (and non-empty) hashes in -# $class and its superclasses. -# -# Or even consider this incantation for doing something like hash-data -# inheritance: -# no strict 'refs'; -# %union_hash = -# map { defined(%{"$_\::SomeHash"}) ? %{"$_\::SomeHash"}) : () } -# reverse(Class::ISA::self_and_super_path($class)); -# Consider that reverse() is necessary because with -# %foo = ('a', 'wun', 'b', 'tiw', 'a', 'foist'); -# $foo{'a'} is 'foist', not 'wun'. - -########################################################################### -sub super_path { - my @ret = &self_and_super_path(@_); - shift @ret if @ret; - return @ret; -} - -#-------------------------------------------------------------------------- -sub self_and_super_path { - # Assumption: searching is depth-first. - # Assumption: '' (empty string) can't be a class package name. - # Note: 'UNIVERSAL' is not given any special treatment. - return () unless @_; - - my @out = (); - - my @in_stack = ($_[0]); - my %seen = ($_[0] => 1); - - my $current; - while(@in_stack) { - next unless defined($current = shift @in_stack) && length($current); - print "At $current\n" if $Debug; - push @out, $current; - no strict 'refs'; - unshift @in_stack, - map - { my $c = $_; # copy, to avoid being destructive - substr($c,0,2) = "main::" if substr($c,0,2) eq '::'; - # Canonize the :: -> main::, ::foo -> main::foo thing. - # Should I ever canonize the Foo'Bar = Foo::Bar thing? - $seen{$c}++ ? () : $c; - } - @{"$current\::ISA"} - ; - # I.e., if this class has any parents (at least, ones I've never seen - # before), push them, in order, onto the stack of classes I need to - # explore. - } - - return @out; -} -#-------------------------------------------------------------------------- -1; - -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Class/Struct.pm b/Master/tlpkg/tlperl.old/lib/Class/Struct.pm deleted file mode 100644 index 7a9af54faf8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Class/Struct.pm +++ /dev/null @@ -1,636 +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.63'; - -## 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 { - goto &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, ... }; - - # declare struct at compile time, based on array, implicit class name: - package CLASS_NAME; - use Class::Struct 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', # user time used - ru_stime => 'Timeval', # system time used - }); - - struct( Timeval => [ - tv_secs => '$', # seconds - tv_usecs => '$', # microseconds - ]); - - # create an object: - my $t = Rusage->new(ru_utime=>Timeval->new(), ru_stime=>Timeval->new()); - - # $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->{'MyObj::count'} = shift; - warn "Too many args to count" if @_; - } - return $self->{'MyObj::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/tlpkg/tlperl.old/lib/Config.pm b/Master/tlpkg/tlperl.old/lib/Config.pm deleted file mode 100644 index 7e5ad77b30a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Config.pm +++ /dev/null @@ -1,95 +0,0 @@ -# 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. - -package Config; -use strict; -# use warnings; Pulls in Carp -# use vars pulls in Carp -@Config::EXPORT = qw(%Config); -@Config::EXPORT_OK = qw(myconfig config_sh config_vars config_re); - -# Need to stub all the functions to make code such as print Config::config_sh -# keep working - -sub myconfig; -sub config_sh; -sub config_vars; -sub config_re; - -my %Export_Cache = map {($_ => 1)} (@Config::EXPORT, @Config::EXPORT_OK); - -our %Config; - -# Define our own import method to avoid pulling in the full Exporter: -sub import { - my $pkg = shift; - @_ = @Config::EXPORT unless @_; - - my @funcs = grep $_ ne '%Config', @_; - my $export_Config = @funcs < @_ ? 1 : 0; - - no strict 'refs'; - my $callpkg = caller(0); - foreach my $func (@funcs) { - die sprintf qq{"%s" is not exported by the %s module\n}, - $func, __PACKAGE__ unless $Export_Cache{$func}; - *{$callpkg.'::'.$func} = \&{$func}; - } - - *{"$callpkg\::Config"} = \%Config if $export_Config; - return; -} - -die "Perl lib version (v5.8.8) doesn't match executable version ($])" - unless $^V; - -$^V eq v5.8.8 - or die "Perl lib version (v5.8.8) doesn't match executable version (" . - sprintf("v%vd",$^V) . ")"; - - -sub FETCH { - my($self, $key) = @_; - - # check for cached value (which may be undef so we use exists not defined) - return $self->{$key} if exists $self->{$key}; - - return $self->fetch_string($key); -} -sub TIEHASH { - bless $_[1], $_[0]; -} - -sub DESTROY { } - -sub AUTOLOAD { - require 'Config_heavy.pl'; - goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/; - die "&Config::AUTOLOAD failed on $Config::AUTOLOAD"; -} - -# tie returns the object, so the value returned to require will be true. -tie %Config, 'Config', { - archlibexp => 'x:\\perl\\lib', - archname => 'MSWin32-x86-multi-thread', - cc => 'gcc', - d_readlink => undef, - d_symlink => undef, - dlsrc => 'dl_win32.xs', - dont_use_nlink => undef, - exe_ext => '.exe', - inc_version_list => '', - intsize => '4', - ldlibpthname => '', - libpth => 'x:\\msys\\mingw\\lib', - osname => 'MSWin32', - osvers => '5.1', - path_sep => ';', - privlibexp => 'x:\\perl\\lib', - scriptdir => 'x:\\perl\\bin', - sitearchexp => 'x:\\perl\\site\\lib', - sitelibexp => 'x:\\perl\\site\\lib', - useithreads => 'define', - usevendorprefix => undef, - version => '5.8.8', -}; diff --git a/Master/tlpkg/tlperl.old/lib/Config_heavy.pl b/Master/tlpkg/tlperl.old/lib/Config_heavy.pl deleted file mode 100644 index 919d4637cf2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Config_heavy.pl +++ /dev/null @@ -1,1185 +0,0 @@ -# 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. - -package Config; -use strict; -# use warnings; Pulls in Carp -# use vars pulls in Carp -### Configured by: siepo@xpeco -### Target system: WIN32 - -our $summary = <<'!END!'; -Summary of my $package (revision $revision $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; - -sub myconfig { - return $summary_expanded if $summary_expanded; - ($summary_expanded = $summary) =~ s{\$(\w+)} - { my $c = $Config::Config{$1}; defined($c) ? $c : 'undef' }ge; - $summary_expanded; -} - -local *_ = \my $a; -$_ = <<'!END!'; -Author='' -CONFIG='true' -Date='$Date' -Header='' -Id='$Id' -Locker='' -Log='$Log' -Mcc='Mcc' -PATCHLEVEL='8' -PERL_API_REVISION='5' -PERL_API_SUBVERSION='0' -PERL_API_VERSION='8' -PERL_CONFIG_SH='true' -PERL_PATCHLEVEL='8' -PERL_REVISION='5' -PERL_SUBVERSION='8' -PERL_VERSION='8' -RCSfile='$RCSfile' -Revision='$Revision' -SUBVERSION='8' -Source='' -State='' -_a='.a' -_exe='.exe' -_o='.o' -afs='false' -afsroot='/afs' -alignbytes='8' -ansi2knr='' -aphostname='' -api_revision='5' -api_subversion='0' -api_version='8' -api_versionstring='5.8.0' -ar='ar' -archlib='x:\perl\lib' -archlibexp='x:\perl\lib' -archname64='' -archname='MSWin32-x86-multi-thread' -archobjs='' -asctime_r_proto='0' -awk='awk' -baserev='5' -bash='' -bin='x:\perl\bin' -binexp='x:\perl\bin' -bison='' -byacc='byacc' -byteorder='1234' -c='' -castflags='0' -cat='type' -cc='gcc' -cccdlflags=' ' -ccdlflags=' ' -ccflags=' -s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -fno-strict-aliasing -DPERL_MSVCRT_READFIX' -ccflags_uselargefiles='' -ccname='gcc' -ccsymbols='' -ccversion='' -cf_by='siepo' -cf_email='siepo@xpeco' -cf_time='Sun May 27 17:53:00 2007' -charsize='1' -chgrp='' -chmod='' -chown='' -clocktype='clock_t' -comm='' -compress='' -contains='grep' -cp='copy' -cpio='' -cpp='gcc -E' -cpp_stuff='42' -cppccsymbols='' -cppflags='-DWIN32' -cpplast='' -cppminus='-' -cpprun='gcc -E' -cppstdin='gcc -E' -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_aintl='undef' -d_alarm='define' -d_archlib='define' -d_asctime_r='undef' -d_atolf='undef' -d_atoll='undef' -d_attribute_format='undef' -d_attribute_malloc='undef' -d_attribute_nonnull='undef' -d_attribute_noreturn='undef' -d_attribute_pure='undef' -d_attribute_unused='undef' -d_attribute_warn_unused_result='undef' -d_bcmp='undef' -d_bcopy='undef' -d_bsd='define' -d_bsdgetpgrp='undef' -d_bsdsetpgrp='undef' -d_bzero='undef' -d_casti32='define' -d_castneg='define' -d_charvspr='undef' -d_chown='undef' -d_chroot='undef' -d_chsize='define' -d_class='undef' -d_clearenv='undef' -d_closedir='define' -d_cmsghdr_s='undef' -d_const='define' -d_copysignl='undef' -d_crypt='define' -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_faststdio='define' -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_futimes='undef' -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_ilogbl='undef' -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_libm_lib_version='undef' -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_malloc_good_size='undef' -d_malloc_size='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_modflproto='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_nv_zero_is_allbits_zero='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_attr_setscope='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_scalbnl='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_sprintf_returns_strlen='define' -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_strlcat='undef' -d_strlcpy='undef' -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_unsetenv='undef' -d_usleep='undef' -d_usleepproto='undef' -d_ustat='undef' -d_vendorarch='undef' -d_vendorbin='undef' -d_vendorlib='undef' -d_vendorscript='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' -dlsrc='dl_win32.xs' -doublesize='8' -drand01='(rand()/(double)((unsigned)1<<RANDBITS))' -drand48_r_proto='0' -dynamic_ext='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode 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 Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared' -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' -extensions='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode 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 Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared' -extras='' -fflushNULL='define' -fflushall='undef' -find='find' -firstmakefile='makefile' -flex='' -fpossize='8' -fpostype='fpos_t' -freetype='void' -from=':' -full_ar='' -full_csh='' -full_sed='' -gccansipedantic='' -gccosandvers='' -gccversion='3.4.5' -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' -gnulibc_version='' -grep='grep' -groupcat='' -groupstype='gid_t' -gzip='gzip' -h_fcntl='false' -h_sysfile='true' -hint='recommended' -hostcat='ypcat hosts' -html1dir=' ' -html1direxp='' -html3dir=' ' -html3direxp='' -i16size='2' -i16type='short' -i32size='4' -i32type='long' -i64size='8' -i64type='long long' -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='x:\msys\mingw\include' -inews='' -installarchlib='x:\perl\lib' -installbin='x:\perl\bin' -installhtml1dir='' -installhtml3dir='' -installhtmldir='x:\perl\html' -installhtmlhelpdir='x:\perl\htmlhelp' -installman1dir='x:\perl\man\man1' -installman3dir='x:\perl\man\man3' -installprefix='x:\perl' -installprefixexp='x:\perl' -installprivlib='x:\perl\lib' -installscript='x:\perl\bin' -installsitearch='x:\perl\site\lib' -installsitebin='x:\perl\bin' -installsitehtml1dir='' -installsitehtml3dir='' -installsitelib='x:\perl\site\lib' -installsiteman1dir='' -installsiteman3dir='' -installsitescript='' -installstyle='lib' -installusrbinperl='undef' -installvendorarch='' -installvendorbin='' -installvendorhtml1dir='' -installvendorhtml3dir='' -installvendorlib='' -installvendorman1dir='' -installvendorman3dir='' -installvendorscript='' -intsize='4' -issymlink='' -ivdformat='"ld"' -ivsize='4' -ivtype='long' -known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared' -ksh='' -ld='g++' -lddlflags='-mdll -s -L"x:\perl\lib\CORE" -L"x:\msys\mingw\lib"' -ldflags='-s -L"x:\perl\lib\CORE" -L"x:\msys\mingw\lib"' -ldflags_uselargefiles='' -ldlibpthname='' -less='less' -lib_ext='.a' -libc='-lmsvcrt' -libperl='libperl58.a' -libpth='x:\msys\mingw\lib' -libs=' -lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32' -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' -libswanted_uselargefiles='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='12' -longlongsize='8' -longsize='4' -lp='' -lpr='' -ls='dir' -lseeksize='8' -lseektype='long long' -mail='' -mailx='' -make='dmake' -make_set_make='#' -mallocobj='malloc.o' -mallocsrc='malloc.c' -malloctype='void *' -man1dir='x:\perl\man\man1' -man1direxp='x:\perl\man\man1' -man1ext='1' -man3dir='x:\perl\man\man3' -man3direxp='x:\perl\man\man3' -man3ext='3' -mips_type='' -mistrustnm='' -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' -nm_opt='' -nm_so_opt='' -nonxs_ext='Errno' -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='.o' -old_pthread_create_joinable='' -optimize='-s -O2' -orderlib='false' -osname='MSWin32' -osvers='5.1' -otherlibdirs='' -package='perl5' -pager='more /e' -passcat='' -patchlevel='' -path_sep=';' -perl5='' -perl='perl' -perl_patchlevel='' -perladmin='' -perllibs=' -lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32' -perlpath='x:\perl\bin\perl.exe' -pg='' -phostname='hostname' -pidtype='int' -plibpth='' -pmake='' -pr='' -prefix='x:\perl' -prefixexp='x:\perl' -privlib='x:\perl\lib' -privlibexp='x:\perl\lib' -procselfexe='' -prototype='define' -ptrsize='4' -quadkind='5' -quadtype='long long' -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='' -run='' -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='x:\perl\bin' -scriptdirexp='x:\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='' -sharpbang='#!' -shmattype='void *' -shortsize='2' -shrpenv='' -shsharp='true' -sig_count='26' -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_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='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' -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='x:\perl\site\lib' -sitearchexp='x:\perl\site\lib' -sitebin='x:\perl\site\bin' -sitebinexp='x:\perl\site\bin' -sitehtml1dir='' -sitehtml1direxp='' -sitehtml3dir='' -sitehtml3direxp='' -sitelib='x:\perl\site\lib' -sitelib_stem='' -sitelibexp='x:\perl\site\lib' -siteman1dir='' -siteman1direxp='' -siteman3dir='' -siteman3direxp='' -siteprefix='x:\perl\site' -siteprefixexp='x:\perl\site' -sitescript='' -sitescriptexp='' -sizesize='4' -sizetype='size_t' -sleep='' -smail='' -so='dll' -sockethdr='' -socketlib='' -socksizetype='int' -sort='sort' -spackage='Perl5' -spitshell='' -srand48_r_proto='0' -srandom_r_proto='0' -src='' -ssizetype='int' -startperl='#!perl' -startsh='#!/bin/sh' -static_ext=' ' -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' -to=':' -touch='touch' -tr='' -trnl='\012' -troff='' -ttyname_r_proto='0' -u16size='2' -u16type='unsigned short' -u32size='4' -u32type='unsigned long' -u64size='8' -u64type='unsigned long long' -u8size='1' -u8type='unsigned char' -uidformat='"ld"' -uidsign='-1' -uidsize='4' -uidtype='uid_t' -uname='uname' -uniq='uniq' -uquadtype='unsigned long long' -use5005threads='undef' -use64bitall='undef' -use64bitint='undef' -usecrosscompile='undef' -usedl='define' -usefaststdio='define' -useithreads='define' -uselargefiles='define' -uselongdouble='undef' -usemallocwrap='define' -usemorebits='undef' -usemultiplicity='define' -usemymalloc='n' -usenm='false' -useopcode='true' -useperlio='define' -useposix='true' -usereentrant='undef' -userelocatableinc='undef' -usesfio='false' -useshrplib='yes' -usesitecustomize='undef' -usesocks='undef' -usethreads='define' -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='' -vendorhtml1dir=' ' -vendorhtml1direxp='' -vendorhtml3dir=' ' -vendorhtml3direxp='' -vendorlib='' -vendorlib_stem='' -vendorlibexp='' -vendorman1dir=' ' -vendorman1direxp='' -vendorman3dir=' ' -vendorman3direxp='' -vendorprefix='' -vendorprefixexp='' -vendorscript='' -vendorscriptexp='' -version='5.8.8' -version_patchlevel_string='version 8 subversion 8' -versiononly='undef' -vi='' -voidflags='15' -xlibpth='/usr/lib/386 /lib/386' -yacc='yacc' -yaccflags='' -zcat='' -zip='zip' -!END! - -my $i = 0; -foreach my $c (4,3,2) { $i |= ord($c); $i <<= 8 } -$i |= ord(1); -our $byteorder = join('', unpack('aaaa', pack('L!', $i))); -s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m; - -my $config_sh_len = length $_; - -our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL'; -ccflags_nolargefiles=' -s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -fno-strict-aliasing -DPERL_MSVCRT_READFIX' -ldflags_nolargefiles='-s -L"x:\perl\lib\CORE" -L"x:\msys\mingw\lib"' -libs_nolargefiles='-lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32' -libswanted_nolargefiles='' -EOVIRTUAL - -# Search for it in the big string -sub fetch_string { - my($self, $key) = @_; - - # We only have ' delimted. - my $start = index($Config_SH_expanded, "\n$key=\'"); - # Start can never be -1 now, as we've rigged the long string we're - # searching with an initial dummy newline. - return undef if $start == -1; - - $start += length($key) + 3; - - my $value = substr($Config_SH_expanded, $start, - index($Config_SH_expanded, "'\n", $start) - - $start); - # So we can say "if $Config{'foo'}". - $value = undef if $value eq 'undef'; - $self->{$key} = $value; # cache it -} - -my $prevpos = 0; - -sub FIRSTKEY { - $prevpos = 0; - substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 ); -} - -sub NEXTKEY { - my $pos = index($Config_SH_expanded, qq('\n), $prevpos) + 2; - my $len = index($Config_SH_expanded, "=", $pos) - $pos; - $prevpos = $pos; - $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef; -} - -sub EXISTS { - return 1 if exists($_[0]->{$_[1]}); - - return(index($Config_SH_expanded, "\n$_[1]='") != -1 - ); -} - -sub STORE { die "\%Config::Config is read-only\n" } -*DELETE = \&STORE; -*CLEAR = \&STORE; - - -sub config_sh { - substr $Config_SH_expanded, 1, $config_sh_len; -} - -sub config_re { - my $re = shift; - return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/, - $Config_SH_expanded; -} - -sub config_vars { - # implements -V:cfgvar option (see perlrun -V:) - foreach (@_) { - # find optional leading, trailing colons; and query-spec - my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft, - # map colon-flags to print decorations - my $prfx = $notag ? '': "$qry="; # tag-prefix for print - my $lnend = $lncont ? ' ' : ";\n"; # line ending for print - - # all config-vars are by definition \w only, any \W means regex - if ($qry =~ /\W/) { - my @matches = config_re($qry); - print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag; - print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag; - } else { - my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry} - : 'UNKNOWN'; - $v = 'undef' unless defined $v; - print "${prfx}'${v}'$lnend"; - } - } -} - -# Called by the real AUTOLOAD -sub launcher { - undef &AUTOLOAD; - goto \&$Config::AUTOLOAD; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Cwd.pm b/Master/tlpkg/tlperl.old/lib/Cwd.pm deleted file mode 100644 index 8d25af9f7cd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Cwd.pm +++ /dev/null @@ -1,710 +0,0 @@ -package Cwd; - -=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() (and, on Win32, getdcwd()) 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. - -=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). - -=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(). - -=item getdcwd - - my $cwd = getdcwd(); - my $cwd = getdcwd('C:'); - -The getdcwd() function is also provided on Win32 to get the current working -directory on the specified drive, since Windows maintains a separate current -working directory for each drive. If no drive is specified then the current -drive is assumed. - -This function simply calls the Microsoft C library _getdcwd() function. - -=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. If no argument is -given they'll use the current working directory. - -=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). - -=item realpath - - my $abs_path = realpath($file); - -A synonym for abs_path(). - -=item fast_abs_path - - my $abs_path = fast_abs_path($file); - -A more dangerous, but potentially faster version of abs_path. - -=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 AUTHOR - -Originally by the perl5-porters. - -Maintained by Ken Williams <KWILLIAMS@cpan.org> - -=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. - -Portions of the C code in this library are copyright (c) 1994 by the -Regents of the University of California. All rights reserved. The -license on this code is compatible with the licensing of the rest of -the distribution - please see the source code in F<Cwd.xs> for the -details. - -=head1 SEE ALSO - -L<File::chdir> - -=cut - -use strict; -use Exporter; -use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); - -$VERSION = '3.12'; - -@ISA = qw/ Exporter /; -@EXPORT = qw(cwd getcwd fastcwd fastgetcwd); -push @EXPORT, qw(getdcwd) if $^O eq 'MSWin32'; -@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') { - local $^W = 0; - - *cwd = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd; - *getcwd = \&cwd; - *fastgetcwd = \&cwd; - *fastcwd = \&cwd; - - *fast_abs_path = \&sys_abspath if defined &sys_abspath; - *abs_path = \&fast_abs_path; - *realpath = \&fast_abs_path; - *fast_realpath = \&fast_abs_path; - - return 1; -} - -# If loading the XS stuff doesn't work, we can fall back to pure perl -eval { - if ( $] >= 5.006 ) { - require XSLoader; - XSLoader::load( __PACKAGE__, $VERSION ); - } else { - require DynaLoader; - push @ISA, 'DynaLoader'; - __PACKAGE__->bootstrap( $VERSION ); - } -}; - -# Must be after the DynaLoader stuff: -$VERSION = eval $VERSION; - -# Big nasty table of function aliases -my %METHOD_MAP = - ( - VMS => - { - cwd => '_vms_cwd', - getcwd => '_vms_cwd', - fastcwd => '_vms_cwd', - fastgetcwd => '_vms_cwd', - abs_path => '_vms_abs_path', - fast_abs_path => '_vms_abs_path', - }, - - 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', - }, - - dos => - { - cwd => '_dos_cwd', - getcwd => '_dos_cwd', - fastgetcwd => '_dos_cwd', - fastcwd => '_dos_cwd', - abs_path => 'fast_abs_path', - }, - - qnx => - { - cwd => '_qnx_cwd', - getcwd => '_qnx_cwd', - fastgetcwd => '_qnx_cwd', - fastcwd => '_qnx_cwd', - abs_path => '_qnx_abs_path', - fast_abs_path => '_qnx_abs_path', - }, - - cygwin => - { - getcwd => 'cwd', - fastgetcwd => 'cwd', - fastcwd => 'cwd', - abs_path => 'fast_abs_path', - realpath => 'fast_abs_path', - }, - - epoc => - { - cwd => '_epoc_cwd', - getcwd => '_epoc_cwd', - fastgetcwd => '_epoc_cwd', - fastcwd => '_epoc_cwd', - abs_path => 'fast_abs_path', - }, - - MacOS => - { - getcwd => 'cwd', - fastgetcwd => 'cwd', - fastcwd => 'cwd', - abs_path => 'fast_abs_path', - }, - ); - -$METHOD_MAP{NT} = $METHOD_MAP{MSWin32}; -$METHOD_MAP{nto} = $METHOD_MAP{qnx}; - - -# 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 ('/bin/pwd', - '/usr/bin/pwd', - '/QOpenSys/bin/pwd', # OS/400 PASE. - ) { - - if( -x $try ) { - $pwd_cmd = $try; - last; - } -} -unless ($pwd_cmd) { - # Isn't this wrong? _backtick_pwd() will fail if somenone has - # pwd in their path but it is not /bin/pwd or /usr/bin/pwd? - # See [perl #16774]. --jhi - $pwd_cmd = 'pwd'; -} - -# Lazy-load Carp -sub _carp { require Carp; Carp::carp(@_) } -sub _croak { require Carp; Carp::croak(@_) } - -# The 'natural and safe form' for UNIX (pwd may be setuid root) -sub _backtick_pwd { - # Localize %ENV entries in a way that won't create new hash keys - my @localize = grep exists $ENV{$_}, qw(PATH IFS CDPATH ENV BASH_ENV); - local @ENV{@localize}; - - 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 ($METHOD_MAP{$^O}{cwd} or defined &cwd) { - # The pwd command is not available in some chroot(2)'ed environments - my $sep = $Config::Config{path_sep} || ':'; - my $os = $^O; # Protect $^O from tainting - if( $os eq 'MacOS' || (defined $ENV{PATH} && - $os ne 'MSWin32' && # no pwd on Windows - grep { -x "$_/pwd" } split($sep, $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; -} -if (not defined &fastcwd) { *fastcwd = \&fastcwd_ } - - -# 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; -} - - -sub _perl_abs_path -{ - my $start = @_ ? shift : '.'; - my($dotdots, $cwd, @pst, @cst, $dir, @tst); - - unless (@cst = stat( $start )) - { - _carp("stat($start): $!"); - return ''; - } - - unless (-d _) { - # Make sure we can be invoked on plain files, not just directories. - # NOTE that this routine assumes that '/' is the only directory separator. - - my ($dir, $file) = $start =~ m{^(.*)/(.+)$} - or return cwd() . '/' . $start; - - # Can't use "-l _" here, because the previous stat was a stat(), not an lstat(). - if (-l $start) { - my $link_target = readlink($start); - die "Can't resolve link $start: $!" unless defined $link_target; - - require File::Spec; - $link_target = $dir . '/' . $link_target - unless File::Spec->file_name_is_absolute($link_target); - - return abs_path($link_target); - } - - return $dir ? abs_path($dir) . "/$file" : "/$file"; - } - - $cwd = ''; - $dotdots = $start; - do - { - $dotdots .= '/..'; - @pst = @cst; - local *PARENT; - 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; -} - - -my $Curdir; -sub fast_abs_path { - local $ENV{PWD} = $ENV{PWD} || ''; # Guard against clobberage - my $cwd = getcwd(); - require File::Spec; - my $path = @_ ? shift : ($Curdir ||= File::Spec->curdir); - - # Detaint else we'll explode in taint mode. This is safe because - # we're not doing anything dangerous with it. - ($path) = $path =~ /(.*)/; - ($cwd) = $cwd =~ /(.*)/; - - unless (-e $path) { - _croak("$path: No such file or directory"); - } - - unless (-d _) { - # Make sure we can be invoked on plain files, not just directories. - - my ($vol, $dir, $file) = File::Spec->splitpath($path); - return File::Spec->catfile($cwd, $path) unless length $dir; - - if (-l $path) { - my $link_target = readlink($path); - die "Can't resolve link $path: $!" unless defined $link_target; - - $link_target = File::Spec->catpath($vol, $dir, $link_target) - unless File::Spec->file_name_is_absolute($link_target); - - return fast_abs_path($link_target); - } - - return $dir eq File::Spec->rootdir - ? File::Spec->catpath($vol, $dir, $file) - : fast_abs_path(File::Spec->catpath($vol, $dir, '')) . '/' . $file; - } - - if (!CORE::chdir($path)) { - _croak("Cannot chdir to $path: $!"); - } - my $realpath = getcwd(); - if (! ((-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 @_; - - # may need to turn foo.dir into [.foo] - my $path = VMS::Filespec::pathify($_[0]); - $path = $_[0] unless defined $path; - - return VMS::Filespec::rmsexpand($path); -} - -sub _os2_cwd { - $ENV{'PWD'} = `cmd /c cd`; - chomp $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 = defined &Win32::GetCwd ? \&_win32_cwd : \&_os2_cwd; - -sub _dos_cwd { - if (!defined &Dos::GetCwd) { - $ENV{'PWD'} = `command /c cd`; - chomp $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`; - chomp $ENV{'PWD'}; - return $ENV{'PWD'}; -} - -sub _qnx_abs_path { - local $ENV{PATH} = ''; - local $ENV{CDPATH} = ''; - local $ENV{ENV} = ''; - my $path = @_ ? shift : '.'; - local *REALPATH; - - defined( open(REALPATH, '-|') || exec '/usr/bin/fullpath', '-t', $path ) or - die "Can't open /usr/bin/fullpath: $!"; - my $realpath = <REALPATH>; - close REALPATH; - chomp $realpath; - return $realpath; -} - -sub _epoc_cwd { - $ENV{'PWD'} = EPOC::getcwd(); - return $ENV{'PWD'}; -} - - -# Now that all the base-level functions are set up, alias the -# user-level functions to the right places - -if (exists $METHOD_MAP{$^O}) { - my $map = $METHOD_MAP{$^O}; - foreach my $name (keys %$map) { - local $^W = 0; # assignments trigger 'subroutine redefined' warning - no strict 'refs'; - *{$name} = \&{$map->{$name}}; - } -} - -# In case the XS version doesn't load. -*abs_path = \&_perl_abs_path unless defined &abs_path; - -# added function alias for those of us more -# used to the libc function. --tchrist 27-Jan-00 -*realpath = \&abs_path; - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Data/Dumper.pm b/Master/tlpkg/tlperl.old/lib/Data/Dumper.pm deleted file mode 100644 index b7fe1d61e77..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Data/Dumper.pm +++ /dev/null @@ -1,1264 +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.121_08'; - -#$| = 1; - -use 5.006_001; -require Exporter; -require overload; - -use Carp; - -BEGIN { - @ISA = qw(Exporter); - @EXPORT = qw(Dumper); - @EXPORT_OK = qw(DumperX); - - # if run under miniperl, or otherwise lacking dynamic loading, - # XSLoader should be attempted to load, or the pure perl flag - # toggled on load failure. - eval { - require XSLoader; - }; - $Useperl = 1 if $@; -} - -XSLoader::load( 'Data::Dumper' ) unless $Useperl; - -# 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; -$Pair = ' => ' unless defined $Pair; -$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 - pair => $Pair, # hash key/value separator: defaults to ' => ' - 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); -} - -sub init_refaddr_format { - require Config; - my $f = $Config::Config{uvxformat}; - $f =~ tr/"//d; - our $refaddr_format = "0x%" . $f; -} - -sub format_refaddr { - require Scalar::Util; - sprintf our $refaddr_format, Scalar::Util::refaddr(shift); -} - -# -# 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 = format_refaddr($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); - init_refaddr_format(); - - $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) { - - # Call the freezer method if it's specified and the object has the - # method. Trap errors and warn() instead of die()ing, like the XS - # implementation. - my $freezer = $s->{freezer}; - if ($freezer and UNIVERSAL::can($val, $freezer)) { - eval { $val->$freezer() }; - warn "WARNING(Freezer method call failed): $@" if $@; - } - - require Scalar::Util; - $realpack = Scalar::Util::blessed($val); - $realtype = $realpack ? Scalar::Util::reftype($val) : ref $val; - $id = format_refaddr($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, $pair); - $out .= ($name =~ /^\%/) ? '(' : '{'; - $pad = $s->{sep} . $s->{pad} . $s->{apad}; - $lpad = $s->{apad}; - $pair = $s->{pair}; - ($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 . $pair; - - # 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->{apad} . $s->{xpad} x ($s->{level} - 1); - $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 = format_refaddr($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 Pair { - my($s, $v) = @_; - defined($v) ? (($s->{pair} = $v), return $s) : $s->{pair}; -} - -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("$_"); -} - -# helper sub to sort hash keys in Perl < 5.8.0 where we don't have -# access to sortsv() from XS -sub _sortkeys { [ sort keys %{$_[0]} ] } - -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::Dumper::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. Moreover, if C<eval>ed when strictures are in effect, -you need to ensure that any variables it accesses are previously declared. - -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. - -If an object does not support the method specified (determined using -UNIVERSAL::can()) then the call will be skipped. If the method dies a -warning will be generated. - -=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::Pair I<or> $I<OBJ>->Pair(I<[NEWVAL]>) - -Can be set to a string that specifies the separator between hash keys -and values. To dump nested hash, array and scalar values to JavaScript, -use: C<$Data::Dumper::Pair = ' : ';>. Implementing C<bless> in JavaScript -is left as an exercise for the reader. -A function with the specified name exists, and accepts the same arguments -as the builtin. - -Default is: C< =E<gt> >. - -=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); - - $Data::Dumper::Pair = " : "; # specify hash key/value separator - 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. - -Pure Perl version of C<Data::Dumper> escapes UTF-8 strings correctly -only in Perl 5.8.0 and later. - -=head2 NOTE - -Starting from Perl 5.8.1 different runs of Perl will have different -ordering of hash keys. The change was done for greater security, -see L<perlsec/"Algorithmic Complexity Attacks">. This means that -different runs of Perl will have different Data::Dumper outputs if -the data contains hashes. If you need to have identical Data::Dumper -outputs from different runs of Perl, use the environment variable -PERL_HASH_SEED, see L<perlrun/PERL_HASH_SEED>. Using this restores -the old (platform-specific) ordering: an even prettier solution might -be to use the C<Sortkeys> filter of Data::Dumper. - -=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.121 (Aug 24 2003) - -=head1 SEE ALSO - -perl(1) - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Digest/MD5.pm b/Master/tlpkg/tlperl.old/lib/Digest/MD5.pm deleted file mode 100644 index 17fb11d678a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Digest/MD5.pm +++ /dev/null @@ -1,376 +0,0 @@ -package Digest::MD5; - -use strict; -use vars qw($VERSION @ISA @EXPORT_OK); - -$VERSION = '2.36'; # $Date: 2005/11/30 13:46:47 $ - -require Exporter; -*import = \&Exporter::import; -@EXPORT_OK = qw(md5 md5_hex md5_base64); - -eval { - require Digest::base; - push(@ISA, 'Digest::base'); -}; -if ($@) { - my $err = $@; - *add_bits = sub { die $err }; -} - - -eval { - require XSLoader; - XSLoader::load('Digest::MD5', $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. - -Note that the MD5 algorithm is not as strong as it used to be. It has -since 2005 been easy to generate different messages that produce the -same MD5 digest. It still seems hard to generate messages that -produce a given digest, but it is probably wise to move to stronger -algorithms for applications that depend on the digest to uniquely identify -a message. - -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. - -=head1 FUNCTIONS - -The following functions are provided by the C<Digest::MD5> module. -None of these 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. The returned string -will be 16 bytes long. - -The result of md5("a", "b", "c") will be exactly the same as the -result of md5("abc"). - -=item md5_hex($data,...) - -Same as md5(), but will return the digest in hexadecimal form. The -length of the returned string will be 32 and it will only contain -characters from this set: '0'..'9' and 'a'..'f'. - -=item md5_base64($data,...) - -Same as md5(), but will return the digest as a base64 encoded string. -The length of the returned string will be 22 and it will only contain -characters from this set: 'A'..'Z', 'a'..'z', '0'..'9', '+' and -'/'. - -Note that 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 redundant -string "==" to the result. - -=back - -=head1 METHODS - -The object oriented interface to C<Digest::MD5> is described in this -section. After a C<Digest::MD5> object has been created, you will add -data to it and finally ask for the digest in a suitable format. A -single object can be used to calculate multiple digests. - -The following methods are provided: - -=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. - -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->clone - -This a copy of the $md5 object. It is useful when you do not want to -destroy the digests state, but need an intermediate value of the -digest, e.g. when calculating digests iteratively on a continuous data -stream. Example: - - my $md5 = Digest::MD5->new; - while (<>) { - $md5->add($_); - print "Line $.: ", $md5->clone->hexdigest, "\n"; - } - -=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. - -All these lines will have the same effect on the state of the $md5 -object: - - $md5->add("a"); $md5->add("b"); $md5->add("c"); - $md5->add("a")->add("b")->add("c"); - $md5->add("a", "b", "c"); - $md5->add("abc"); - -=item $md5->addfile($io_handle) - -The $io_handle will be read until EOF and its content appended to the -message we calculate the digest for. The return value is the $md5 -object itself. - -The addfile() method will croak() if it fails reading data for some -reason. If it croaks it is unpredictable what the state of the $md5 -object will be in. The addfile() method might have been able to read -the file partially before it failed. It is probably wise to discard -or reset the $md5 object if this occurs. - -In most cases you want to make sure that the $io_handle is in -C<binmode> before you pass it as argument to the addfile() method. - -=item $md5->add_bits($data, $nbits) - -=item $md5->add_bits($bitstring) - -Since the MD5 algorithm is byte oriented you might only add bits as -multiples of 8, so you probably want to just use add() instead. The -add_bits() method is provided for compatibility with other digest -implementations. See L<Digest> for description of the arguments -that add_bits() take. - -=item $md5->digest - -Return the binary digest for the message. The returned string will be -16 bytes long. - -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. Call $md5->clone->digest if you want to calculate the -digest without resetting the digest state. - -=item $md5->hexdigest - -Same as $md5->digest, but will return the digest in hexadecimal -form. The length of the returned string will be 32 and it will only -contain characters from this set: '0'..'9' and 'a'..'f'. - -=item $md5->b64digest - -Same as $md5->digest, but will return the digest as a base64 encoded -string. The length of the returned string will be 22 and it will only -contain characters from this set: 'A'..'Z', 'a'..'z', '0'..'9', '+' -and '/'. - - -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 - -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 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"; - -Perl 5.8 support Unicode characters in strings. Since the MD5 -algorithm is only defined for strings of bytes, it can not be used on -strings that contains chars with ordinal number above 255. The MD5 -functions and methods will croak if you try to feed them such input -data: - - use Digest::MD5 qw(md5_hex); - - my $str = "abc\x{300}"; - print md5_hex($str), "\n"; # croaks - # Wide character in subroutine entry - -What you can do is calculate the MD5 checksum of the UTF-8 -representation of such strings. This is achieved by filtering the -string through encode_utf8() function: - - use Digest::MD5 qw(md5_hex); - use Encode qw(encode_utf8); - - my $str = "abc\x{300}"; - print md5_hex(encode_utf8($str)), "\n"; - # 8c2d46911f3f5a326455f0ed7a8ed3b3 - -=head1 SEE ALSO - -L<Digest>, -L<Digest::MD2>, -L<Digest::SHA1>, -L<Digest::HMAC> - -L<md5sum(1)> - -RFC 1321 - -http://en.wikipedia.org/wiki/MD5 - -The paper "How to Break MD5 and Other Hash Functions" by Xiaoyun Wang -and Hongbo Yu. - -=head1 COPYRIGHT - -This library is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - - Copyright 1998-2003 Gisle Aas. - Copyright 1995-1996 Neil Winton. - Copyright 1991-1992 RSA Data Security, Inc. - -The MD5 algorithm is defined in RFC 1321. This implementation is -derived from the reference C code in RFC 1321 which is covered by -the following copyright statement: - -=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 C<MD5> interface was written by Neil Winton -(C<N.Winton@axion.bt.co.uk>). - -The C<Digest::MD5> module is written by Gisle Aas <gisle@ActiveState.com>. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Digest/base.pm b/Master/tlpkg/tlperl.old/lib/Digest/base.pm deleted file mode 100644 index cb336c2cf61..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Digest/base.pm +++ /dev/null @@ -1,100 +0,0 @@ -package Digest::base; - -use strict; -use vars qw($VERSION); -$VERSION = "1.00"; - -# subclass is supposed to implement at least these -sub new; -sub clone; -sub add; -sub digest; - -sub reset { - my $self = shift; - $self->new(@_); # ugly -} - -sub addfile { - my ($self, $handle) = @_; - - my $n; - my $buf = ""; - - while (($n = read($handle, $buf, 4*1024))) { - $self->add($buf); - } - unless (defined $n) { - require Carp; - Carp::croak("Read failed: $!"); - } - - $self; -} - -sub add_bits { - my $self = shift; - my $bits; - my $nbits; - if (@_ == 1) { - my $arg = shift; - $bits = pack("B*", $arg); - $nbits = length($arg); - } - else { - ($bits, $nbits) = @_; - } - if (($nbits % 8) != 0) { - require Carp; - Carp::croak("Number of bits must be multiple of 8 for this algorithm"); - } - return $self->add(substr($bits, 0, $nbits/8)); -} - -sub hexdigest { - my $self = shift; - return unpack("H*", $self->digest(@_)); -} - -sub b64digest { - my $self = shift; - require MIME::Base64; - my $b64 = MIME::Base64::encode($self->digest(@_), ""); - $b64 =~ s/=+$//; - return $b64; -} - -1; - -__END__ - -=head1 NAME - -Digest::base - Digest base class - -=head1 SYNOPSIS - - package Digest::Foo; - use base 'Digest::base'; - -=head1 DESCRIPTION - -The C<Digest::base> class provide implementations of the methods -C<addfile> and C<add_bits> in terms of C<add>, and of the methods -C<hexdigest> and C<b64digest> in terms of C<digest>. - -Digest implementations might want to inherit from this class to get -this implementations of the alternative I<add> and I<digest> methods. -A minimal subclass needs to implement the following methods by itself: - - new - clone - add - digest - -The arguments and expected behaviour of these methods are described in -L<Digest>. - -=head1 SEE ALSO - -L<Digest> diff --git a/Master/tlpkg/tlperl.old/lib/Digest/file.pm b/Master/tlpkg/tlperl.old/lib/Digest/file.pm deleted file mode 100644 index 67985fd7599..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Digest/file.pm +++ /dev/null @@ -1,85 +0,0 @@ -package Digest::file; - -use strict; - -use Exporter (); -use Carp qw(croak); -use Digest (); - -use vars qw($VERSION @ISA @EXPORT_OK); - -$VERSION = "1.00"; -@ISA = qw(Exporter); -@EXPORT_OK = qw(digest_file_ctx digest_file digest_file_hex digest_file_base64); - -sub digest_file_ctx { - my $file = shift; - croak("No digest algorithm specified") unless @_; - local *F; - open(F, $file) || croak("Can't open '$file': $!"); - binmode(F); - my $ctx = Digest->new(@_); - $ctx->addfile(*F); - close(F); - return $ctx; -} - -sub digest_file { - digest_file_ctx(@_)->digest; -} - -sub digest_file_hex { - digest_file_ctx(@_)->hexdigest; -} - -sub digest_file_base64 { - digest_file_ctx(@_)->b64digest; -} - -1; - -__END__ - -=head1 NAME - -Digest::file - Calculate digests of files - -=head1 SYNOPSIS - - # Poor mans "md5sum" command - use Digest::file qw(digest_file_hex); - for (@ARGV) { - print digest_file_hex($_, "MD5"), " $_\n"; - } - -=head1 DESCRIPTION - -This module provide 3 convenience functions to calculate the digest -of files. The following functions are provided: - -=over - -=item digest_file( $file, $algorithm, [$arg,...] ) - -This function will calculate and return the binary digest of the bytes -of the given file. The function will croak if it fails to open or -read the file. - -The $algorithm is a string like "MD2", "MD5", "SHA-1", "SHA-512". -Additional arguments are passed to the constructor for the -implementation of the given algorithm. - -=item digest_file_hex( $file, $algorithm, [$arg,...] ) - -Same as digest_file(), but return the digest in hex form. - -=item digest_file_base64( $file, $algorithm, [$arg,...] ) - -Same as digest_file(), but return the digest as a base64 encoded -string. - -=back - -=head1 SEE ALSO - -L<Digest> diff --git a/Master/tlpkg/tlperl.old/lib/DynaLoader.pm b/Master/tlpkg/tlperl.old/lib/DynaLoader.pm deleted file mode 100644 index 178e9b2616c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/DynaLoader.pm +++ /dev/null @@ -1,833 +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.05'; # 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_shared_objects = (); # shared objects for symbols we have -#@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 - - push(@dl_shared_objects, $file); # record files loaded - - &$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 - -=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 - @dl_shared_objects - 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_shared_objects - -An array of file names for the shared objects that were loaded. - -=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_load_flags() - -Syntax: - - $flags = dl_load_flags $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/tlpkg/tlperl.old/lib/Encode.pm b/Master/tlpkg/tlperl.old/lib/Encode.pm deleted file mode 100644 index ac0123c89ec..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode.pm +++ /dev/null @@ -1,851 +0,0 @@ -# -# $Id: Encode.pm,v 2.12 2005/09/08 14:17:17 dankogai Exp dankogai $ -# -package Encode; -use strict; -our $VERSION = sprintf "%d.%02d", q$Revision: 2.12 $ =~ /(\d+)/g; -sub DEBUG () { 0 } -use XSLoader (); -XSLoader::load(__PACKAGE__, $VERSION); - -require Exporter; -use base qw/Exporter/; - -# Public, encouraged API is exported by default - -our @EXPORT = qw( - decode decode_utf8 encode encode_utf8 - encodings find_encoding clone_encoding -); - -our @FB_FLAGS = qw(DIE_ON_ERR WARN_ON_ERR RETURN_ON_ERR LEAVE_SRC - PERLQQ HTMLCREF XMLCREF STOP_AT_PARTIAL); -our @FB_CONSTS = qw(FB_DEFAULT FB_CROAK FB_QUIET FB_WARN - FB_PERLQQ FB_HTMLCREF FB_XMLCREF); - -our @EXPORT_OK = - ( - qw( - _utf8_off _utf8_on define_encoding from_to is_16bit is_8bit - is_utf8 perlio_ok resolve_alias utf8_downgrade utf8_upgrade - ), - @FB_FLAGS, @FB_CONSTS, - ); - -our %EXPORT_TAGS = - ( - all => [ @EXPORT, @EXPORT_OK ], - fallbacks => [ @FB_CONSTS ], - fallback_all => [ @FB_CONSTS, @FB_FLAGS ], - ); - -# Documentation moved after __END__ for speed - NI-S - -our $ON_EBCDIC = (ord("A") == 193); - -use Encode::Alias; - -# Make a %Encoding package variable to allow a certain amount of cheating -our %Encoding; -our %ExtModule; -require Encode::Config; -eval { require Encode::ConfigLocal }; - -sub encodings -{ - my $class = shift; - my %enc; - if (@_ and $_[0] eq ":all"){ - %enc = ( %Encoding, %ExtModule ); - }else{ - %enc = %Encoding; - for my $mod (map {m/::/o ? $_ : "Encode::$_" } @_){ - DEBUG and warn $mod; - for my $enc (keys %ExtModule){ - $ExtModule{$enc} eq $mod and $enc{$enc} = $mod; - } - } - } - return - sort { lc $a cmp lc $b } - grep {!/^(?:Internal|Unicode|Guess)$/o} keys %enc; -} - -sub perlio_ok{ - my $obj = ref($_[0]) ? $_[0] : find_encoding($_[0]); - $obj->can("perlio_ok") and return $obj->perlio_ok(); - return 0; # safety net -} - -sub define_encoding -{ - my $obj = shift; - my $name = shift; - $Encoding{$name} = $obj; - my $lc = lc($name); - define_alias($lc => $obj) unless $lc eq $name; - while (@_){ - my $alias = shift; - define_alias($alias, $obj); - } - return $obj; -} - -sub getEncoding -{ - my ($class, $name, $skip_external) = @_; - - ref($name) && $name->can('renew') and return $name; - exists $Encoding{$name} and return $Encoding{$name}; - my $lc = lc $name; - exists $Encoding{$lc} and return $Encoding{$lc}; - - my $oc = $class->find_alias($name); - defined($oc) and return $oc; - $lc ne $name and $oc = $class->find_alias($lc); - defined($oc) and return $oc; - - unless ($skip_external) - { - if (my $mod = $ExtModule{$name} || $ExtModule{$lc}){ - $mod =~ s,::,/,g ; $mod .= '.pm'; - eval{ require $mod; }; - exists $Encoding{$name} and return $Encoding{$name}; - } - } - return; -} - -sub find_encoding($;$) -{ - my ($name, $skip_external) = @_; - return __PACKAGE__->getEncoding($name,$skip_external); -} - -sub resolve_alias($){ - my $obj = find_encoding(shift); - defined $obj and return $obj->name; - return; -} - -sub clone_encoding($){ - my $obj = find_encoding(shift); - ref $obj or return; - eval { require Storable }; - $@ and return; - return Storable::dclone($obj); -} - -sub encode($$;$) -{ - my ($name, $string, $check) = @_; - return undef unless defined $string; - $string .= '' if ref $string; # stringify; - $check ||=0; - my $enc = find_encoding($name); - unless(defined $enc){ - require Carp; - Carp::croak("Unknown encoding '$name'"); - } - my $octets = $enc->encode($string,$check); - $_[1] = $string if $check and !($check & LEAVE_SRC()); - return $octets; -} - -sub decode($$;$) -{ - my ($name,$octets,$check) = @_; - return undef unless defined $octets; - $octets .= '' if ref $octets; - $check ||=0; - my $enc = find_encoding($name); - unless(defined $enc){ - require Carp; - Carp::croak("Unknown encoding '$name'"); - } - my $string = $enc->decode($octets,$check); - $_[1] = $octets if $check and !($check & LEAVE_SRC()); - return $string; -} - -sub from_to($$$;$) -{ - my ($string,$from,$to,$check) = @_; - return undef unless defined $string; - $check ||=0; - my $f = find_encoding($from); - unless (defined $f){ - require Carp; - Carp::croak("Unknown encoding '$from'"); - } - my $t = find_encoding($to); - unless (defined $t){ - require Carp; - Carp::croak("Unknown encoding '$to'"); - } - my $uni = $f->decode($string,$check); - return undef if ($check && length($string)); - $string = $t->encode($uni,$check); - return undef if ($check && length($uni)); - return defined($_[0] = $string) ? length($string) : undef ; -} - -sub encode_utf8($) -{ - my ($str) = @_; - utf8::encode($str); - return $str; -} - -sub decode_utf8($;$) -{ - my ($str, $check) = @_; - if ($check){ - return decode("utf8", $str, $check); - }else{ - return decode("utf8", $str); - return $str; - } -} - -predefine_encodings(1); - -# -# This is to restore %Encoding if really needed; -# - -sub predefine_encodings{ - use Encode::Encoding; - no warnings 'redefine'; - my $use_xs = shift; - if ($ON_EBCDIC) { - # was in Encode::UTF_EBCDIC - package Encode::UTF_EBCDIC; - push @Encode::UTF_EBCDIC::ISA, 'Encode::Encoding'; - *decode = sub{ - my ($obj,$str,$chk) = @_; - my $res = ''; - for (my $i = 0; $i < length($str); $i++) { - $res .= - chr(utf8::unicode_to_native(ord(substr($str,$i,1)))); - } - $_[1] = '' if $chk; - return $res; - }; - *encode = sub{ - my ($obj,$str,$chk) = @_; - my $res = ''; - for (my $i = 0; $i < length($str); $i++) { - $res .= - chr(utf8::native_to_unicode(ord(substr($str,$i,1)))); - } - $_[1] = '' if $chk; - return $res; - }; - $Encode::Encoding{Unicode} = - bless {Name => "UTF_EBCDIC"} => "Encode::UTF_EBCDIC"; - } else { - package Encode::Internal; - push @Encode::Internal::ISA, 'Encode::Encoding'; - *decode = sub{ - my ($obj,$str,$chk) = @_; - utf8::upgrade($str); - $_[1] = '' if $chk; - return $str; - }; - *encode = \&decode; - $Encode::Encoding{Unicode} = - bless {Name => "Internal"} => "Encode::Internal"; - } - - { - # was in Encode::utf8 - package Encode::utf8; - push @Encode::utf8::ISA, 'Encode::Encoding'; - # - if ($use_xs){ - Encode::DEBUG and warn __PACKAGE__, " XS on"; - *decode = \&decode_xs; - *encode = \&encode_xs; - }else{ - Encode::DEBUG and warn __PACKAGE__, " XS off"; - *decode = sub{ - my ($obj,$octets,$chk) = @_; - my $str = Encode::decode_utf8($octets); - if (defined $str) { - $_[1] = '' if $chk; - return $str; - } - return undef; - }; - *encode = sub { - my ($obj,$string,$chk) = @_; - my $octets = Encode::encode_utf8($string); - $_[1] = '' if $chk; - return $octets; - }; - } - *cat_decode = sub{ # ($obj, $dst, $src, $pos, $trm, $chk) - my ($obj, undef, undef, $pos, $trm) = @_; # currently ignores $chk - my ($rdst, $rsrc, $rpos) = \@_[1,2,3]; - use bytes; - if ((my $npos = index($$rsrc, $trm, $pos)) >= 0) { - $$rdst .= substr($$rsrc, $pos, $npos - $pos + length($trm)); - $$rpos = $npos + length($trm); - return 1; - } - $$rdst .= substr($$rsrc, $pos); - $$rpos = length($$rsrc); - return ''; - }; - $Encode::Encoding{utf8} = - bless {Name => "utf8"} => "Encode::utf8"; - $Encode::Encoding{"utf-8-strict"} = - bless {Name => "utf-8-strict", strict_utf8 => 1 } => "Encode::utf8"; - } -} - -1; - -__END__ - -=head1 NAME - -Encode - character encodings - -=head1 SYNOPSIS - - use Encode; - -=head2 Table of Contents - -Encode consists of a collection of modules whose details are too big -to fit in one document. This POD itself explains the top-level APIs -and general topics at a glance. For other topics and more details, -see the PODs below: - - Name Description - -------------------------------------------------------- - Encode::Alias Alias definitions to encodings - Encode::Encoding Encode Implementation Base Class - Encode::Supported List of Supported Encodings - Encode::CN Simplified Chinese Encodings - Encode::JP Japanese Encodings - Encode::KR Korean Encodings - Encode::TW Traditional Chinese Encodings - -------------------------------------------------------- - -=head1 DESCRIPTION - -The C<Encode> module provides the interfaces between Perl's strings -and the rest of the system. Perl strings are sequences of -B<characters>. - -The repertoire of characters that Perl can represent is at least that -defined by the Unicode Consortium. On most platforms the ordinal -values of the characters (as returned by C<ord(ch)>) is the "Unicode -codepoint" for the character (the exceptions are those platforms where -the legacy encoding is some variant of EBCDIC rather than a super-set -of ASCII - see L<perlebcdic>). - -Traditionally, computer data has been moved around in 8-bit chunks -often called "bytes". These chunks are also known as "octets" in -networking standards. Perl is widely used to manipulate data of many -types - not only strings of characters representing human or computer -languages but also "binary" data being the machine's representation of -numbers, pixels in an image - or just about anything. - -When Perl is processing "binary data", the programmer wants Perl to -process "sequences of bytes". This is not a problem for Perl - as a -byte has 256 possible values, it easily fits in Perl's much larger -"logical character". - -=head2 TERMINOLOGY - -=over 2 - -=item * - -I<character>: a character in the range 0..(2**32-1) (or more). -(What Perl's strings are made of.) - -=item * - -I<byte>: a character in the range 0..255 -(A special case of a Perl character.) - -=item * - -I<octet>: 8 bits of data, with ordinal values 0..255 -(Term for bytes passed to or from a non-Perl context, e.g. a disk file.) - -=back - -=head1 PERL ENCODING API - -=over 2 - -=item $octets = encode(ENCODING, $string [, CHECK]) - -Encodes a string from Perl's internal form into I<ENCODING> and returns -a sequence of octets. ENCODING can be either a canonical name or -an alias. For encoding names and aliases, see L</"Defining Aliases">. -For CHECK, see L</"Handling Malformed Data">. - -For example, to convert a string from Perl's internal format to -iso-8859-1 (also known as Latin1), - - $octets = encode("iso-8859-1", $string); - -B<CAVEAT>: When you run C<$octets = encode("utf8", $string)>, then $octets -B<may not be equal to> $string. Though they both contain the same data, the utf8 flag -for $octets is B<always> off. When you encode anything, utf8 flag of -the result is always off, even when it contains completely valid utf8 -string. See L</"The UTF-8 flag"> below. - -If the $string is C<undef> then C<undef> is returned. - -=item $string = decode(ENCODING, $octets [, CHECK]) - -Decodes a sequence of octets assumed to be in I<ENCODING> into Perl's -internal form and returns the resulting string. As in encode(), -ENCODING can be either a canonical name or an alias. For encoding names -and aliases, see L</"Defining Aliases">. For CHECK, see -L</"Handling Malformed Data">. - -For example, to convert ISO-8859-1 data to a string in Perl's internal format: - - $string = decode("iso-8859-1", $octets); - -B<CAVEAT>: When you run C<$string = decode("utf8", $octets)>, then $string -B<may not be equal to> $octets. Though they both contain the same data, -the utf8 flag for $string is on unless $octets entirely consists of -ASCII data (or EBCDIC on EBCDIC machines). See L</"The UTF-8 flag"> -below. - -If the $string is C<undef> then C<undef> is returned. - -=item [$length =] from_to($octets, FROM_ENC, TO_ENC [, CHECK]) - -Converts B<in-place> data between two encodings. The data in $octets -must be encoded as octets and not as characters in Perl's internal -format. For example, to convert ISO-8859-1 data to Microsoft's CP1250 -encoding: - - from_to($octets, "iso-8859-1", "cp1250"); - -and to convert it back: - - from_to($octets, "cp1250", "iso-8859-1"); - -Note that because the conversion happens in place, the data to be -converted cannot be a string constant; it must be a scalar variable. - -from_to() returns the length of the converted string in octets on -success, I<undef> on error. - -B<CAVEAT>: The following operations look the same but are not quite so; - - from_to($data, "iso-8859-1", "utf8"); #1 - $data = decode("iso-8859-1", $data); #2 - -Both #1 and #2 make $data consist of a completely valid UTF-8 string -but only #2 turns utf8 flag on. #1 is equivalent to - - $data = encode("utf8", decode("iso-8859-1", $data)); - -See L</"The UTF-8 flag"> below. - -=item $octets = encode_utf8($string); - -Equivalent to C<$octets = encode("utf8", $string);> The characters -that comprise $string are encoded in Perl's internal format and the -result is returned as a sequence of octets. All possible -characters have a UTF-8 representation so this function cannot fail. - - -=item $string = decode_utf8($octets [, CHECK]); - -equivalent to C<$string = decode("utf8", $octets [, CHECK])>. -The sequence of octets represented by -$octets is decoded from UTF-8 into a sequence of logical -characters. Not all sequences of octets form valid UTF-8 encodings, so -it is possible for this call to fail. For CHECK, see -L</"Handling Malformed Data">. - -=back - -=head2 Listing available encodings - - use Encode; - @list = Encode->encodings(); - -Returns a list of the canonical names of the available encodings that -are loaded. To get a list of all available encodings including the -ones that are not loaded yet, say - - @all_encodings = Encode->encodings(":all"); - -Or you can give the name of a specific module. - - @with_jp = Encode->encodings("Encode::JP"); - -When "::" is not in the name, "Encode::" is assumed. - - @ebcdic = Encode->encodings("EBCDIC"); - -To find out in detail which encodings are supported by this package, -see L<Encode::Supported>. - -=head2 Defining Aliases - -To add a new alias to a given encoding, use: - - use Encode; - use Encode::Alias; - define_alias(newName => ENCODING); - -After that, newName can be used as an alias for ENCODING. -ENCODING may be either the name of an encoding or an -I<encoding object> - -But before you do so, make sure the alias is nonexistent with -C<resolve_alias()>, which returns the canonical name thereof. -i.e. - - Encode::resolve_alias("latin1") eq "iso-8859-1" # true - Encode::resolve_alias("iso-8859-12") # false; nonexistent - Encode::resolve_alias($name) eq $name # true if $name is canonical - -resolve_alias() does not need C<use Encode::Alias>; it can be -exported via C<use Encode qw(resolve_alias)>. - -See L<Encode::Alias> for details. - -=head1 Encoding via PerlIO - -If your perl supports I<PerlIO> (which is the default), you can use a PerlIO layer to decode -and encode directly via a filehandle. The following two examples -are totally identical in their functionality. - - # via PerlIO - open my $in, "<:encoding(shiftjis)", $infile or die; - open my $out, ">:encoding(euc-jp)", $outfile or die; - while(<$in>){ print $out $_; } - - # via from_to - open my $in, "<", $infile or die; - open my $out, ">", $outfile or die; - while(<$in>){ - from_to($_, "shiftjis", "euc-jp", 1); - print $out $_; - } - -Unfortunately, it may be that encodings are PerlIO-savvy. You can check -if your encoding is supported by PerlIO by calling the C<perlio_ok> -method. - - Encode::perlio_ok("hz"); # False - find_encoding("euc-cn")->perlio_ok; # True where PerlIO is available - - use Encode qw(perlio_ok); # exported upon request - perlio_ok("euc-jp") - -Fortunately, all encodings that come with Encode core are PerlIO-savvy -except for hz and ISO-2022-kr. For gory details, see -L<Encode::Encoding> and L<Encode::PerlIO>. - -=head1 Handling Malformed Data - -The optional I<CHECK> argument tells Encode what to do when it -encounters malformed data. Without CHECK, Encode::FB_DEFAULT ( == 0 ) -is assumed. - -As of version 2.12 Encode supports coderef values for CHECK. See below. - -=over 2 - -=item B<NOTE:> Not all encoding support this feature - -Some encodings ignore I<CHECK> argument. For example, -L<Encode::Unicode> ignores I<CHECK> and it always croaks on error. - -=back - -Now here is the list of I<CHECK> values available - -=over 2 - -=item I<CHECK> = Encode::FB_DEFAULT ( == 0) - -If I<CHECK> is 0, (en|de)code will put a I<substitution character> in -place of a malformed character. When you encode, E<lt>subcharE<gt> -will be used. When you decode the code point C<0xFFFD> is used. If -the data is supposed to be UTF-8, an optional lexical warning -(category utf8) is given. - -=item I<CHECK> = Encode::FB_CROAK ( == 1) - -If I<CHECK> is 1, methods will die on error immediately with an error -message. Therefore, when I<CHECK> is set to 1, you should trap the -error with eval{} unless you really want to let it die. - -=item I<CHECK> = Encode::FB_QUIET - -If I<CHECK> is set to Encode::FB_QUIET, (en|de)code will immediately -return the portion of the data that has been processed so far when an -error occurs. The data argument will be overwritten with everything -after that point (that is, the unprocessed part of data). This is -handy when you have to call decode repeatedly in the case where your -source data may contain partial multi-byte character sequences, -(i.e. you are reading with a fixed-width buffer). Here is a sample -code that does exactly this: - - my $buffer = ''; my $string = ''; - while(read $fh, $buffer, 256, length($buffer)){ - $string .= decode($encoding, $buffer, Encode::FB_QUIET); - # $buffer now contains the unprocessed partial character - } - -=item I<CHECK> = Encode::FB_WARN - -This is the same as above, except that it warns on error. Handy when -you are debugging the mode above. - -=item perlqq mode (I<CHECK> = Encode::FB_PERLQQ) - -=item HTML charref mode (I<CHECK> = Encode::FB_HTMLCREF) - -=item XML charref mode (I<CHECK> = Encode::FB_XMLCREF) - -For encodings that are implemented by Encode::XS, CHECK == -Encode::FB_PERLQQ turns (en|de)code into C<perlqq> fallback mode. - -When you decode, C<\xI<HH>> will be inserted for a malformed character, -where I<HH> is the hex representation of the octet that could not be -decoded to utf8. And when you encode, C<\x{I<HHHH>}> will be inserted, -where I<HHHH> is the Unicode ID of the character that cannot be found -in the character repertoire of the encoding. - -HTML/XML character reference modes are about the same, in place of -C<\x{I<HHHH>}>, HTML uses C<&#I<NNN>;> where I<NNN> is a decimal number and -XML uses C<&#xI<HHHH>;> where I<HHHH> is the hexadecimal number. - -In Encode 2.10 or later, C<LEAVE_SRC> is also implied. - -=item The bitmask - -These modes are actually set via a bitmask. Here is how the FB_XX -constants are laid out. You can import the FB_XX constants via -C<use Encode qw(:fallbacks)>; you can import the generic bitmask -constants via C<use Encode qw(:fallback_all)>. - - FB_DEFAULT FB_CROAK FB_QUIET FB_WARN FB_PERLQQ - DIE_ON_ERR 0x0001 X - WARN_ON_ERR 0x0002 X - RETURN_ON_ERR 0x0004 X X - LEAVE_SRC 0x0008 X - PERLQQ 0x0100 X - HTMLCREF 0x0200 - XMLCREF 0x0400 - -=back - -=head2 coderef for CHECK - -As of Encode 2.12 CHECK can also be a code reference which takes the -ord value of unmapped caharacter as an argument and returns a string -that represents the fallback character. For instance, - - $ascii = encode("ascii", $utf8, sub{ sprintf "<U+%04X>", shift }); - -Acts like FB_PERLQQ but E<lt>U+I<XXXX>E<gt> is used instead of -\x{I<XXXX>}. - -=head1 Defining Encodings - -To define a new encoding, use: - - use Encode qw(define_encoding); - define_encoding($object, 'canonicalName' [, alias...]); - -I<canonicalName> will be associated with I<$object>. The object -should provide the interface described in L<Encode::Encoding>. -If more than two arguments are provided then additional -arguments are taken as aliases for I<$object>. - -See L<Encode::Encoding> for more details. - -=head1 The UTF-8 flag - -Before the introduction of utf8 support in perl, The C<eq> operator -just compared the strings represented by two scalars. Beginning with -perl 5.8, C<eq> compares two strings with simultaneous consideration -of I<the utf8 flag>. To explain why we made it so, I will quote page -402 of C<Programming Perl, 3rd ed.> - -=over 2 - -=item Goal #1: - -Old byte-oriented programs should not spontaneously break on the old -byte-oriented data they used to work on. - -=item Goal #2: - -Old byte-oriented programs should magically start working on the new -character-oriented data when appropriate. - -=item Goal #3: - -Programs should run just as fast in the new character-oriented mode -as in the old byte-oriented mode. - -=item Goal #4: - -Perl should remain one language, rather than forking into a -byte-oriented Perl and a character-oriented Perl. - -=back - -Back when C<Programming Perl, 3rd ed.> was written, not even Perl 5.6.0 -was born and many features documented in the book remained -unimplemented for a long time. Perl 5.8 corrected this and the introduction -of the UTF-8 flag is one of them. You can think of this perl notion as of a -byte-oriented mode (utf8 flag off) and a character-oriented mode (utf8 -flag on). - -Here is how Encode takes care of the utf8 flag. - -=over 2 - -=item * - -When you encode, the resulting utf8 flag is always off. - -=item * - -When you decode, the resulting utf8 flag is on unless you can -unambiguously represent data. Here is the definition of -dis-ambiguity. - -After C<$utf8 = decode('foo', $octet);>, - - When $octet is... The utf8 flag in $utf8 is - --------------------------------------------- - In ASCII only (or EBCDIC only) OFF - In ISO-8859-1 ON - In any other Encoding ON - --------------------------------------------- - -As you see, there is one exception, In ASCII. That way you can assume -Goal #1. And with Encode Goal #2 is assumed but you still have to be -careful in such cases mentioned in B<CAVEAT> paragraphs. - -This utf8 flag is not visible in perl scripts, exactly for the same -reason you cannot (or you I<don't have to>) see if a scalar contains a -string, integer, or floating point number. But you can still peek -and poke these if you will. See the section below. - -=back - -=head2 Messing with Perl's Internals - -The following API uses parts of Perl's internals in the current -implementation. As such, they are efficient but may change. - -=over 2 - -=item is_utf8(STRING [, CHECK]) - -[INTERNAL] Tests whether the UTF-8 flag is turned on in the STRING. -If CHECK is true, also checks the data in STRING for being well-formed -UTF-8. Returns true if successful, false otherwise. - -As of perl 5.8.1, L<utf8> also has utf8::is_utf8(). - -=item _utf8_on(STRING) - -[INTERNAL] Turns on the UTF-8 flag in STRING. The data in STRING is -B<not> checked for being well-formed UTF-8. Do not use unless you -B<know> that the STRING is well-formed UTF-8. Returns the previous -state of the UTF-8 flag (so please don't treat the return value as -indicating success or failure), or C<undef> if STRING is not a string. - -=item _utf8_off(STRING) - -[INTERNAL] Turns off the UTF-8 flag in STRING. Do not use frivolously. -Returns the previous state of the UTF-8 flag (so please don't treat the -return value as indicating success or failure), or C<undef> if STRING is -not a string. - -=back - -=head1 UTF-8 vs. utf8 - - ....We now view strings not as sequences of bytes, but as sequences - of numbers in the range 0 .. 2**32-1 (or in the case of 64-bit - computers, 0 .. 2**64-1) -- Programming Perl, 3rd ed. - -That has been the perl's notion of UTF-8 but official UTF-8 is more -strict; Its ranges is much narrower (0 .. 10FFFF), some sequences are -not allowed (i.e. Those used in the surrogate pair, 0xFFFE, et al). - -Now that is overruled by Larry Wall himself. - - From: Larry Wall <larry@wall.org> - Date: December 04, 2004 11:51:58 JST - To: perl-unicode@perl.org - Subject: Re: Make Encode.pm support the real UTF-8 - Message-Id: <20041204025158.GA28754@wall.org> - - On Fri, Dec 03, 2004 at 10:12:12PM +0000, Tim Bunce wrote: - : I've no problem with 'utf8' being perl's unrestricted uft8 encoding, - : but "UTF-8" is the name of the standard and should give the - : corresponding behaviour. - - For what it's worth, that's how I've always kept them straight in my - head. - - Also for what it's worth, Perl 6 will mostly default to strict but - make it easy to switch back to lax. - - Larry - -Do you copy? As of Perl 5.8.7, B<UTF-8> means strict, official UTF-8 -while B<utf8> means liberal, lax, version thereof. And Encode version -2.10 or later thus groks the difference between C<UTF-8> and C"utf8". - - encode("utf8", "\x{FFFF_FFFF}", 1); # okay - encode("UTF-8", "\x{FFFF_FFFF}", 1); # croaks - -C<UTF-8> in Encode is actually a canonical name for C<utf-8-strict>. -Yes, the hyphen between "UTF" and "8" is important. Without it Encode -goes "liberal" - - find_encoding("UTF-8")->name # is 'utf-8-strict' - find_encoding("utf-8")->name # ditto. names are case insensitive - find_encoding("utf8")->name # ditto. "_" are treated as "-" - find_encoding("UTF8")->name # is 'utf8'. - - -=head1 SEE ALSO - -L<Encode::Encoding>, -L<Encode::Supported>, -L<Encode::PerlIO>, -L<encoding>, -L<perlebcdic>, -L<perlfunc/open>, -L<perlunicode>, -L<utf8>, -the Perl Unicode Mailing List E<lt>perl-unicode@perl.orgE<gt> - -=head1 MAINTAINER - -This project was originated by Nick Ing-Simmons and later maintained -by Dan Kogai E<lt>dankogai@dan.co.jpE<gt>. See AUTHORS for a full -list of people involved. For any questions, use -E<lt>perl-unicode@perl.orgE<gt> so we can all share. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/Alias.pm b/Master/tlpkg/tlperl.old/lib/Encode/Alias.pm deleted file mode 100644 index c0bbf69f469..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/Alias.pm +++ /dev/null @@ -1,341 +0,0 @@ -package Encode::Alias; -use strict; -no warnings 'redefine'; -use Encode; -our $VERSION = do { my @r = (q$Revision: 2.4 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; -sub DEBUG () { 0 } - -use base qw(Exporter); - -# Public, encouraged API is exported by default - -our @EXPORT = - qw ( - define_alias - find_alias - ); - -our @Alias; # ordered matching list -our %Alias; # cached known aliases - -sub find_alias{ - my $class = shift; - my $find = shift; - unless (exists $Alias{$find}) { - $Alias{$find} = undef; # Recursion guard - for (my $i=0; $i < @Alias; $i += 2){ - my $alias = $Alias[$i]; - my $val = $Alias[$i+1]; - my $new; - if (ref($alias) eq 'Regexp' && $find =~ $alias){ - DEBUG and warn "eval $val"; - $new = eval $val; - DEBUG and $@ and warn "$val, $@"; - }elsif (ref($alias) eq 'CODE'){ - DEBUG and warn "$alias", "->", "($find)"; - $new = $alias->($find); - }elsif (lc($find) eq lc($alias)){ - $new = $val; - } - if (defined($new)){ - next if $new eq $find; # avoid (direct) recursion on bugs - DEBUG and warn "$alias, $new"; - my $enc = (ref($new)) ? $new : Encode::find_encoding($new); - if ($enc){ - $Alias{$find} = $enc; - last; - } - } - } - # case insensitive search when canonical is not in all lowercase - # RT ticket #7835 - unless ($Alias{$find}){ - my $lcfind = lc($find); - for my $name (keys %Encode::Encoding, keys %Encode::ExtModule){ - $lcfind eq lc($name) or next; - $Alias{$find} = Encode::find_encoding($name); - DEBUG and warn "$find => $name"; - } - } - } - if (DEBUG){ - my $name; - if (my $e = $Alias{$find}){ - $name = $e->name; - }else{ - $name = ""; - } - warn "find_alias($class, $find)->name = $name"; - } - return $Alias{$find}; -} - -sub define_alias{ - while (@_){ - my ($alias,$name) = splice(@_,0,2); - unshift(@Alias, $alias => $name); # newer one has precedence - if (ref($alias)){ - # clear %Alias cache to allow overrides - my @a = keys %Alias; - for my $k (@a){ - if (ref($alias) eq 'Regexp' && $k =~ $alias){ - DEBUG and warn "delete \$Alias\{$k\}"; - delete $Alias{$k}; - } - elsif (ref($alias) eq 'CODE'){ - DEBUG and warn "delete \$Alias\{$k\}"; - delete $Alias{$alias->($name)}; - } - } - }else{ - DEBUG and warn "delete \$Alias\{$alias\}"; - delete $Alias{$alias}; - } - } -} - -# Allow latin-1 style names as well -# 0 1 2 3 4 5 6 7 8 9 10 -our @Latin2iso = ( 0, 1, 2, 3, 4, 9, 10, 13, 14, 15, 16 ); -# Allow winlatin1 style names as well -our %Winlatin2cp = ( - 'latin1' => 1252, - 'latin2' => 1250, - 'cyrillic' => 1251, - 'greek' => 1253, - 'turkish' => 1254, - 'hebrew' => 1255, - 'arabic' => 1256, - 'baltic' => 1257, - 'vietnamese' => 1258, - ); - -init_aliases(); - -sub undef_aliases{ - @Alias = (); - %Alias = (); -} - -sub init_aliases -{ - undef_aliases(); - # Try all-lower-case version should all else fails - define_alias( qr/^(.*)$/ => '"\L$1"' ); - - # UTF/UCS stuff - define_alias( qr/^UTF-?7$/i => '"UTF-7"'); - define_alias( qr/^UCS-?2-?LE$/i => '"UCS-2LE"' ); - define_alias( qr/^UCS-?2-?(BE)?$/i => '"UCS-2BE"', - qr/^UCS-?4-?(BE|LE)?$/i => 'uc("UTF-32$1")', - qr/^iso-10646-1$/i => '"UCS-2BE"' ); - define_alias( qr/^UTF-?(16|32)-?BE$/i => '"UTF-$1BE"', - qr/^UTF-?(16|32)-?LE$/i => '"UTF-$1LE"', - qr/^UTF-?(16|32)$/i => '"UTF-$1"', - ); - # ASCII - define_alias(qr/^(?:US-?)ascii$/i => '"ascii"'); - define_alias('C' => 'ascii'); - define_alias(qr/\bISO[-_]?646[-_]?US$/i => '"ascii"'); - # Allow variants of iso-8859-1 etc. - define_alias( qr/\biso[-_]?(\d+)[-_](\d+)$/i => '"iso-$1-$2"' ); - - # At least HP-UX has these. - define_alias( qr/\biso8859(\d+)$/i => '"iso-8859-$1"' ); - - # More HP stuff. - define_alias( qr/\b(?:hp-)?(arabic|greek|hebrew|kana|roman|thai|turkish)8$/i => '"${1}8"' ); - - # The Official name of ASCII. - define_alias( qr/\bANSI[-_]?X3\.4[-_]?1968$/i => '"ascii"' ); - - # This is a font issue, not an encoding issue. - # (The currency symbol of the Latin 1 upper half - # has been redefined as the euro symbol.) - define_alias( qr/^(.+)\@euro$/i => '"$1"' ); - - define_alias( qr/\b(?:iso[-_]?)?latin[-_]?(\d+)$/i - => 'defined $Encode::Alias::Latin2iso[$1] ? "iso-8859-$Encode::Alias::Latin2iso[$1]" : undef' ); - - define_alias( qr/\bwin(latin[12]|cyrillic|baltic|greek|turkish| - hebrew|arabic|baltic|vietnamese)$/ix => - '"cp" . $Encode::Alias::Winlatin2cp{lc($1)}' ); - - # Common names for non-latin preferred MIME names - define_alias( 'ascii' => 'US-ascii', - 'cyrillic' => 'iso-8859-5', - 'arabic' => 'iso-8859-6', - 'greek' => 'iso-8859-7', - 'hebrew' => 'iso-8859-8', - 'thai' => 'iso-8859-11', - 'tis620' => 'iso-8859-11', - ); - - # At least AIX has IBM-NNN (surprisingly...) instead of cpNNN. - # And Microsoft has their own naming (again, surprisingly). - # And windows-* is registered in IANA! - define_alias( qr/\b(?:cp|ibm|ms|windows)[-_ ]?(\d{2,4})$/i => '"cp$1"'); - - # Sometimes seen with a leading zero. - # define_alias( qr/\bcp037\b/i => '"cp37"'); - - # Mac Mappings - # predefined in *.ucm; unneeded - # define_alias( qr/\bmacIcelandic$/i => '"macIceland"'); - define_alias( qr/^mac_(.*)$/i => '"mac$1"'); - # Ououououou. gone. They are differente! - # define_alias( qr/\bmacRomanian$/i => '"macRumanian"'); - - # Standardize on the dashed versions. - define_alias( qr/\bkoi8[\s\-_]*([ru])$/i => '"koi8-$1"' ); - - unless ($Encode::ON_EBCDIC){ - # for Encode::CN - define_alias( qr/\beuc.*cn$/i => '"euc-cn"' ); - define_alias( qr/\bcn.*euc$/i => '"euc-cn"' ); - # define_alias( qr/\bGB[- ]?(\d+)$/i => '"euc-cn"' ) - # CP936 doesn't have vendor-addon for GBK, so they're identical. - define_alias( qr/^gbk$/i => '"cp936"'); - # This fixes gb2312 vs. euc-cn confusion, practically - define_alias( qr/\bGB[-_ ]?2312(?!-?raw)/i => '"euc-cn"' ); - # for Encode::JP - define_alias( qr/\bjis$/i => '"7bit-jis"' ); - define_alias( qr/\beuc.*jp$/i => '"euc-jp"' ); - define_alias( qr/\bjp.*euc$/i => '"euc-jp"' ); - define_alias( qr/\bujis$/i => '"euc-jp"' ); - define_alias( qr/\bshift.*jis$/i => '"shiftjis"' ); - define_alias( qr/\bsjis$/i => '"shiftjis"' ); - define_alias( qr/\bwindows-31j$/i => '"cp932"' ); - # for Encode::KR - define_alias( qr/\beuc.*kr$/i => '"euc-kr"' ); - define_alias( qr/\bkr.*euc$/i => '"euc-kr"' ); - # This fixes ksc5601 vs. euc-kr confusion, practically - define_alias( qr/(?:x-)?uhc$/i => '"cp949"' ); - define_alias( qr/(?:x-)?windows-949$/i => '"cp949"' ); - define_alias( qr/\bks_c_5601-1987$/i => '"cp949"' ); - # for Encode::TW - define_alias( qr/\bbig-?5$/i => '"big5-eten"' ); - define_alias( qr/\bbig5-?et(?:en)?$/i => '"big5-eten"' ); - define_alias( qr/\btca[-_]?big5$/i => '"big5-eten"' ); - define_alias( qr/\bbig5-?hk(?:scs)?$/i => '"big5-hkscs"' ); - define_alias( qr/\bhk(?:scs)?[-_]?big5$/i => '"big5-hkscs"' ); - } - # utf8 is blessed :) - define_alias( qr/^UTF-8$/i => '"utf-8-strict"'); - # At last, Map white space and _ to '-' - define_alias( qr/^(\S+)[\s_]+(.*)$/i => '"$1-$2"' ); -} - -1; -__END__ - -# TODO: HP-UX '8' encodings arabic8 greek8 hebrew8 kana8 thai8 turkish8 -# TODO: HP-UX '15' encodings japanese15 korean15 roi15 -# TODO: Cyrillic encoding ISO-IR-111 (useful?) -# TODO: Armenian encoding ARMSCII-8 -# TODO: Hebrew encoding ISO-8859-8-1 -# TODO: Thai encoding TCVN -# TODO: Vietnamese encodings VPS -# TODO: Mac Asian+African encodings: Arabic Armenian Bengali Burmese -# ChineseSimp ChineseTrad Devanagari Ethiopic ExtArabic -# Farsi Georgian Gujarati Gurmukhi Hebrew Japanese -# Kannada Khmer Korean Laotian Malayalam Mongolian -# Oriya Sinhalese Symbol Tamil Telugu Tibetan Vietnamese - -=head1 NAME - -Encode::Alias - alias definitions to encodings - -=head1 SYNOPSIS - - use Encode; - use Encode::Alias; - define_alias( newName => ENCODING); - -=head1 DESCRIPTION - -Allows newName to be used as an alias for ENCODING. ENCODING may be -either the name of an encoding or an encoding object (as described -in L<Encode>). - -Currently I<newName> can be specified in the following ways: - -=over 4 - -=item As a simple string. - -=item As a qr// compiled regular expression, e.g.: - - define_alias( qr/^iso8859-(\d+)$/i => '"iso-8859-$1"' ); - -In this case, if I<ENCODING> is not a reference, it is C<eval>-ed -in order to allow C<$1> etc. to be substituted. The example is one -way to alias names as used in X11 fonts to the MIME names for the -iso-8859-* family. Note the double quotes inside the single quotes. - -(or, you don't have to do this yourself because this example is predefined) - -If you are using a regex here, you have to use the quotes as shown or -it won't work. Also note that regex handling is tricky even for the -experienced. Use this feature with caution. - -=item As a code reference, e.g.: - - define_alias( sub {shift =~ /^iso8859-(\d+)$/i ? "iso-8859-$1" : undef } ); - -The same effect as the example above in a different way. The coderef -takes the alias name as an argument and returns a canonical name on -success or undef if not. Note the second argument is not required. -Use this with even more caution than the regex version. - -=back - -=head3 Changes in code reference aliasing - -As of Encode 1.87, the older form - - define_alias( sub { return /^iso8859-(\d+)$/i ? "iso-8859-$1" : undef } ); - -no longer works. - -Encode up to 1.86 internally used "local $_" to implement ths older -form. But consider the code below; - - use Encode; - $_ = "eeeee" ; - while (/(e)/g) { - my $utf = decode('aliased-encoding-name', $1); - print "position:",pos,"\n"; - } - -Prior to Encode 1.86 this fails because of "local $_". - -=head2 Alias overloading - -You can override predefined aliases by simply applying define_alias(). -The new alias is always evaluated first, and when necessary, -define_alias() flushes the internal cache to make the new definition -available. - - # redirect SHIFT_JIS to MS/IBM Code Page 932, which is a - # superset of SHIFT_JIS - - define_alias( qr/shift.*jis$/i => '"cp932"' ); - define_alias( qr/sjis$/i => '"cp932"' ); - -If you want to zap all predefined aliases, you can use - - Encode::Alias->undef_aliases; - -to do so. And - - Encode::Alias->init_aliases; - -gets the factory settings back. - -=head1 SEE ALSO - -L<Encode>, L<Encode::Supported> - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Encode/Byte.pm b/Master/tlpkg/tlperl.old/lib/Encode/Byte.pm deleted file mode 100644 index d40c1c3d9d1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/Byte.pm +++ /dev/null @@ -1,119 +0,0 @@ -package Encode::Byte; -use Encode; -our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use XSLoader; -XSLoader::load(__PACKAGE__,$VERSION); - -1; -__END__ - -=head1 NAME - -Encode::Byte - Single Byte Encodings - -=head1 SYNOPSIS - - use Encode qw/encode decode/; - $greek = encode("iso-8859-7", $utf8); # loads Encode::Byte implicitly - $utf8 = decode("iso-8859-7", $greek); # ditto - -=head1 ABSTRACT - -This module implements various single byte encodings. For most cases it uses -\x80-\xff (upper half) to map non-ASCII characters. Encodings -supported are as follows. - - Canonical Alias Description - -------------------------------------------------------------------- - # ISO 8859 series - (iso-8859-1 is in built-in) - iso-8859-2 latin2 [ISO] - iso-8859-3 latin3 [ISO] - iso-8859-4 latin4 [ISO] - iso-8859-5 [ISO] - iso-8859-6 [ISO] - iso-8859-7 [ISO] - iso-8859-8 [ISO] - iso-8859-9 latin5 [ISO] - iso-8859-10 latin6 [ISO] - iso-8859-11 - (iso-8859-12 is nonexistent) - iso-8859-13 latin7 [ISO] - iso-8859-14 latin8 [ISO] - iso-8859-15 latin9 [ISO] - iso-8859-16 latin10 [ISO] - - # Cyrillic - koi8-f - koi8-r cp878 [RFC1489] - koi8-u [RFC2319] - - # Vietnamese - viscii - - # all cp* are also available as ibm-*, ms-*, and windows-* - # also see L<http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset4.asp> - - cp424 - cp437 - cp737 - cp775 - cp850 - cp852 - cp855 - cp856 - cp857 - cp860 - cp861 - cp862 - cp863 - cp864 - cp865 - cp866 - cp869 - cp874 - cp1006 - cp1250 WinLatin2 - cp1251 WinCyrillic - cp1252 WinLatin1 - cp1253 WinGreek - cp1254 WinTurkish - cp1255 WinHebrew - cp1256 WinArabic - cp1257 WinBaltic - cp1258 WinVietnamese - - # Macintosh - # Also see L<http://developer.apple.com/technotes/tn/tn1150.html> - MacArabic - MacCentralEurRoman - MacCroatian - MacCyrillic - MacFarsi - MacGreek - MacHebrew - MacIcelandic - MacRoman - MacRomanian - MacRumanian - MacSami - MacThai - MacTurkish - MacUkrainian - - # More vendor encodings - AdobeStandardEncoding - nextstep - gsm0338 # used in GSM handsets - hp-roman8 - -=head1 DESCRIPTION - -To find how to use this module in detail, see L<Encode>. - -=head1 SEE ALSO - -L<Encode> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/CJKConstants.pm b/Master/tlpkg/tlperl.old/lib/Encode/CJKConstants.pm deleted file mode 100644 index 4ab40e72ef2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/CJKConstants.pm +++ /dev/null @@ -1,66 +0,0 @@ -# -# $Id: CJKConstants.pm,v 2.0 2004/05/16 20:55:16 dankogai Exp $ -# - -package Encode::CJKConstants; - -use strict; - -our $RCSID = q$Id: CJKConstants.pm,v 2.0 2004/05/16 20:55:16 dankogai Exp $; -our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use Carp; - -require Exporter; -our @ISA = qw(Exporter); -our @EXPORT = qw(); -our @EXPORT_OK = qw(%CHARCODE %ESC %RE); -our %EXPORT_TAGS = ( 'all' => [ @EXPORT_OK, @EXPORT ] ); - -my %_0208 = ( - 1978 => '\e\$\@', - 1983 => '\e\$B', - 1990 => '\e&\@\e\$B', - ); - -our %CHARCODE = ( - UNDEF_EUC => "\xa2\xae", # ¢® in EUC - UNDEF_SJIS => "\x81\xac", # ¢® in SJIS - UNDEF_JIS => "\xa2\xf7", # ¢÷ -- used in unicode - UNDEF_UNICODE => "\x20\x20", # ¢÷ -- used in unicode - ); - -our %ESC = ( - GB_2312 => "\e\$A", - JIS_0208 => "\e\$B", - JIS_0212 => "\e\$(D", - KSC_5601 => "\e\$(C", - ASC => "\e\(B", - KANA => "\e\(I", - '2022_KR' => "\e\$)C", - ); - -our %RE = - ( - ASCII => '[\x00-\x7f]', - BIN => '[\x00-\x06\x7f\xff]', - EUC_0212 => '\x8f[\xa1-\xfe][\xa1-\xfe]', - EUC_C => '[\xa1-\xfe][\xa1-\xfe]', - EUC_KANA => '\x8e[\xa1-\xdf]', - JIS_0208 => "$_0208{1978}|$_0208{1983}|$_0208{1990}", - JIS_0212 => "\e" . '\$\(D', - ISO_ASC => "\e" . '\([BJ]', - JIS_KANA => "\e" . '\(I', - '2022_KR' => "\e" . '\$\)C', - SJIS_C => '[\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc]', - SJIS_KANA => '[\xa1-\xdf]', - UTF8 => '[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf][\x80-\xbf]' - ); - -1; - -=head1 NAME - -Encode::CJKConstants.pm -- Internally used by Encode::??::ISO_2022_* - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/CN.pm b/Master/tlpkg/tlperl.old/lib/Encode/CN.pm deleted file mode 100644 index be5a830fc51..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/CN.pm +++ /dev/null @@ -1,76 +0,0 @@ -package Encode::CN; -BEGIN { - if (ord("A") == 193) { - die "Encode::CN not supported on EBCDIC\n"; - } -} -our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use Encode; -use XSLoader; -XSLoader::load(__PACKAGE__,$VERSION); - -# Relocated from Encode.pm - -use Encode::CN::HZ; -# use Encode::CN::2022_CN; - -1; -__END__ - -=head1 NAME - -Encode::CN - China-based Chinese Encodings - -=head1 SYNOPSIS - - use Encode qw/encode decode/; - $euc_cn = encode("euc-cn", $utf8); # loads Encode::CN implicitly - $utf8 = decode("euc-cn", $euc_cn); # ditto - -=head1 DESCRIPTION - -This module implements China-based Chinese charset encodings. -Encodings supported are as follows. - - Canonical Alias Description - -------------------------------------------------------------------- - euc-cn /\beuc.*cn$/i EUC (Extended Unix Character) - /\bcn.*euc$/i - /\bGB[-_ ]?2312(?:\D.*$|$)/i (see below) - gb2312-raw The raw (low-bit) GB2312 character map - gb12345-raw Traditional chinese counterpart to - GB2312 (raw) - iso-ir-165 GB2312 + GB6345 + GB8565 + additions - MacChineseSimp GB2312 + Apple Additions - cp936 Code Page 936, also known as GBK - (Extended GuoBiao) - hz 7-bit escaped GB2312 encoding - -------------------------------------------------------------------- - -To find how to use this module in detail, see L<Encode>. - -=head1 NOTES - -Due to size concerns, C<GB 18030> (an extension to C<GBK>) is distributed -separately on CPAN, under the name L<Encode::HanExtra>. That module -also contains extra Taiwan-based encodings. - -=head1 BUGS - -When you see C<charset=gb2312> on mails and web pages, they really -mean C<euc-cn> encodings. To fix that, C<gb2312> is aliased to C<euc-cn>. -Use C<gb2312-raw> when you really mean it. - -The ASCII region (0x00-0x7f) is preserved for all encodings, even though -this conflicts with mappings by the Unicode Consortium. See - -L<http://www.debian.or.jp/~kubota/unicode-symbols.html.en> - -to find out why it is implemented that way. - -=head1 SEE ALSO - -L<Encode> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/CN/HZ.pm b/Master/tlpkg/tlperl.old/lib/Encode/CN/HZ.pm deleted file mode 100644 index fbc6ba60ced..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/CN/HZ.pm +++ /dev/null @@ -1,196 +0,0 @@ -package Encode::CN::HZ; - -use strict; - -use vars qw($VERSION); -$VERSION = do { my @r = (q$Revision: 2.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use Encode qw(:fallbacks); - -use base qw(Encode::Encoding); -__PACKAGE__->Define('hz'); - -# HZ is a combination of ASCII and escaped GB, so we implement it -# with the GB2312(raw) encoding here. Cf. RFCs 1842 & 1843. - -# not ported for EBCDIC. Which should be used, "~" or "\x7E"? - -sub needs_lines { 1 } - -sub decode ($$;$) -{ - my ($obj,$str,$chk) = @_; - - my $GB = Encode::find_encoding('gb2312-raw'); - my $ret = ''; - my $in_ascii = 1; # default mode is ASCII. - - while (length $str) { - if ($in_ascii) { # ASCII mode - if ($str =~ s/^([\x00-\x7D\x7F]+)//) { # no '~' => ASCII - $ret .= $1; - # EBCDIC should need ascii2native, but not ported. - } - elsif ($str =~ s/^\x7E\x7E//) { # escaped tilde - $ret .= '~'; - } - elsif ($str =~ s/^\x7E\cJ//) { # '\cJ' == LF in ASCII - 1; # no-op - } - elsif ($str =~ s/^\x7E\x7B//) { # '~{' - $in_ascii = 0; # to GB - } - else { # encounters an invalid escape, \x80 or greater - last; - } - } - else { # GB mode; the byte ranges are as in RFC 1843. - if ($str =~ s/^((?:[\x21-\x77][\x21-\x7E])+)//) { - $ret .= $GB->decode($1, $chk); - } - elsif ($str =~ s/^\x7E\x7D//) { # '~}' - $in_ascii = 1; - } - else { # invalid - last; - } - } - } - $_[1] = '' if $chk; # needs_lines guarantees no partial character - return $ret; -} - -sub cat_decode { - my ($obj, undef, $src, $pos, $trm, $chk) = @_; - my ($rdst, $rsrc, $rpos) = \@_[1..3]; - - my $GB = Encode::find_encoding('gb2312-raw'); - my $ret = ''; - my $in_ascii = 1; # default mode is ASCII. - - my $ini_pos = pos($$rsrc); - - substr($src, 0, $pos) = ''; - - my $ini_len = bytes::length($src); - - # $trm is the first of the pair '~~', then 2nd tilde is to be removed. - # XXX: Is better C<$src =~ s/^\x7E// or die if ...>? - $src =~ s/^\x7E// if $trm eq "\x7E"; - - while (length $src) { - my $now; - if ($in_ascii) { # ASCII mode - if ($src =~ s/^([\x00-\x7D\x7F])//) { # no '~' => ASCII - $now = $1; - } - elsif ($src =~ s/^\x7E\x7E//) { # escaped tilde - $now = '~'; - } - elsif ($src =~ s/^\x7E\cJ//) { # '\cJ' == LF in ASCII - next; - } - elsif ($src =~ s/^\x7E\x7B//) { # '~{' - $in_ascii = 0; # to GB - next; - } - else { # encounters an invalid escape, \x80 or greater - last; - } - } - else { # GB mode; the byte ranges are as in RFC 1843. - if ($src =~ s/^((?:[\x21-\x77][\x21-\x7F])+)//) { - $now = $GB->decode($1, $chk); - } - elsif ($src =~ s/^\x7E\x7D//) { # '~}' - $in_ascii = 1; - next; - } - else { # invalid - last; - } - } - - next if ! defined $now; - - $ret .= $now; - - if ($now eq $trm) { - $$rdst .= $ret; - $$rpos = $ini_pos + $pos + $ini_len - bytes::length($src); - pos($$rsrc) = $ini_pos; - return 1; - } - } - - $$rdst .= $ret; - $$rpos = $ini_pos + $pos + $ini_len - bytes::length($src); - pos($$rsrc) = $ini_pos; - return ''; # terminator not found -} - - -sub encode($$;$) -{ - my ($obj,$str,$chk) = @_; - - my $GB = Encode::find_encoding('gb2312-raw'); - my $ret = ''; - my $in_ascii = 1; # default mode is ASCII. - - no warnings 'utf8'; # $str may be malformed UTF8 at the end of a chunk. - - while (length $str) { - if ($str =~ s/^([[:ascii:]]+)//) { - my $tmp = $1; - $tmp =~ s/~/~~/g; # escapes tildes - if (! $in_ascii) { - $ret .= "\x7E\x7D"; # '~}' - $in_ascii = 1; - } - $ret .= pack 'a*', $tmp; # remove UTF8 flag. - } - elsif ($str =~ s/(.)//) { - my $s = $1; - my $tmp = $GB->encode($s, $chk); - last if !defined $tmp; - if (length $tmp == 2) { # maybe a valid GB char (XXX) - if ($in_ascii) { - $ret .= "\x7E\x7B"; # '~{' - $in_ascii = 0; - } - $ret .= $tmp; - } - elsif (length $tmp) { # maybe FALLBACK in ASCII (XXX) - if (!$in_ascii) { - $ret .= "\x7E\x7D"; # '~}' - $in_ascii = 1; - } - $ret .= $tmp; - } - } - else { # if $str is malformed UTF8 *and* if length $str != 0. - last; - } - } - $_[1] = $str if $chk; - - # The state at the end of the chunk is discarded, even if in GB mode. - # That results in the combination of GB-OUT and GB-IN, i.e. "~}~{". - # Parhaps it is harmless, but further investigations may be required... - - if (! $in_ascii) { - $ret .= "\x7E\x7D"; # '~}' - $in_ascii = 1; - } - return $ret; -} - -1; -__END__ - -=head1 NAME - -Encode::CN::HZ -- internally used by Encode::CN - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/Changes.e2x b/Master/tlpkg/tlperl.old/lib/Encode/Changes.e2x deleted file mode 100644 index 5c67c55cb93..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/Changes.e2x +++ /dev/null @@ -1,7 +0,0 @@ -# -# $Id: Changes.e2x,v 2.0 2004/05/16 20:55:15 dankogai Exp $ -# Revision history for Perl extension Encode::$_Name_. -# - -0.01 $_Now_ - Autogenerated by enc2xs version $_Version_. diff --git a/Master/tlpkg/tlperl.old/lib/Encode/Config.pm b/Master/tlpkg/tlperl.old/lib/Encode/Config.pm deleted file mode 100644 index d69b92d8248..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/Config.pm +++ /dev/null @@ -1,166 +0,0 @@ -# -# Demand-load module list -# -package Encode::Config; -our $VERSION = do { my @r = (q$Revision: 2.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use strict; - -our %ExtModule = - ( - # Encode::Byte - #iso-8859-1 is in Encode.pm itself - 'iso-8859-2' => 'Encode::Byte', - 'iso-8859-3' => 'Encode::Byte', - 'iso-8859-4' => 'Encode::Byte', - 'iso-8859-5' => 'Encode::Byte', - 'iso-8859-6' => 'Encode::Byte', - 'iso-8859-7' => 'Encode::Byte', - 'iso-8859-8' => 'Encode::Byte', - 'iso-8859-9' => 'Encode::Byte', - 'iso-8859-10' => 'Encode::Byte', - 'iso-8859-11' => 'Encode::Byte', - 'iso-8859-13' => 'Encode::Byte', - 'iso-8859-14' => 'Encode::Byte', - 'iso-8859-15' => 'Encode::Byte', - 'iso-8859-16' => 'Encode::Byte', - 'koi8-f' => 'Encode::Byte', - 'koi8-r' => 'Encode::Byte', - 'koi8-u' => 'Encode::Byte', - 'viscii' => 'Encode::Byte', - 'cp424' => 'Encode::Byte', - 'cp437' => 'Encode::Byte', - 'cp737' => 'Encode::Byte', - 'cp775' => 'Encode::Byte', - 'cp850' => 'Encode::Byte', - 'cp852' => 'Encode::Byte', - 'cp855' => 'Encode::Byte', - 'cp856' => 'Encode::Byte', - 'cp857' => 'Encode::Byte', - 'cp860' => 'Encode::Byte', - 'cp861' => 'Encode::Byte', - 'cp862' => 'Encode::Byte', - 'cp863' => 'Encode::Byte', - 'cp864' => 'Encode::Byte', - 'cp865' => 'Encode::Byte', - 'cp866' => 'Encode::Byte', - 'cp869' => 'Encode::Byte', - 'cp874' => 'Encode::Byte', - 'cp1006' => 'Encode::Byte', - 'cp1250' => 'Encode::Byte', - 'cp1251' => 'Encode::Byte', - 'cp1252' => 'Encode::Byte', - 'cp1253' => 'Encode::Byte', - 'cp1254' => 'Encode::Byte', - 'cp1255' => 'Encode::Byte', - 'cp1256' => 'Encode::Byte', - 'cp1257' => 'Encode::Byte', - 'cp1258' => 'Encode::Byte', - 'AdobeStandardEncoding' => 'Encode::Byte', - 'MacArabic' => 'Encode::Byte', - 'MacCentralEurRoman' => 'Encode::Byte', - 'MacCroatian' => 'Encode::Byte', - 'MacCyrillic' => 'Encode::Byte', - 'MacFarsi' => 'Encode::Byte', - 'MacGreek' => 'Encode::Byte', - 'MacHebrew' => 'Encode::Byte', - 'MacIcelandic' => 'Encode::Byte', - 'MacRoman' => 'Encode::Byte', - 'MacRomanian' => 'Encode::Byte', - 'MacRumanian' => 'Encode::Byte', - 'MacSami' => 'Encode::Byte', - 'MacThai' => 'Encode::Byte', - 'MacTurkish' => 'Encode::Byte', - 'MacUkrainian' => 'Encode::Byte', - 'nextstep' => 'Encode::Byte', - 'hp-roman8' => 'Encode::Byte', - 'gsm0338' => 'Encode::Byte', - # Encode::EBCDIC - 'cp37' => 'Encode::EBCDIC', - 'cp500' => 'Encode::EBCDIC', - 'cp875' => 'Encode::EBCDIC', - 'cp1026' => 'Encode::EBCDIC', - 'cp1047' => 'Encode::EBCDIC', - 'posix-bc' => 'Encode::EBCDIC', - # Encode::Symbol - 'dingbats' => 'Encode::Symbol', - 'symbol' => 'Encode::Symbol', - 'AdobeSymbol' => 'Encode::Symbol', - 'AdobeZdingbat' => 'Encode::Symbol', - 'MacDingbats' => 'Encode::Symbol', - 'MacSymbol' => 'Encode::Symbol', - # Encode::Unicode - 'UCS-2BE' => 'Encode::Unicode', - 'UCS-2LE' => 'Encode::Unicode', - 'UTF-16' => 'Encode::Unicode', - 'UTF-16BE' => 'Encode::Unicode', - 'UTF-16LE' => 'Encode::Unicode', - 'UTF-32' => 'Encode::Unicode', - 'UTF-32BE' => 'Encode::Unicode', - 'UTF-32LE' => 'Encode::Unicode', - 'UTF-7' => 'Encode::Unicode::UTF7', - ); - -unless (ord("A") == 193){ - %ExtModule = - ( - %ExtModule, - 'euc-cn' => 'Encode::CN', - 'gb12345-raw' => 'Encode::CN', - 'gb2312-raw' => 'Encode::CN', - 'hz' => 'Encode::CN', - 'iso-ir-165' => 'Encode::CN', - 'cp936' => 'Encode::CN', - 'MacChineseSimp' => 'Encode::CN', - - '7bit-jis' => 'Encode::JP', - 'euc-jp' => 'Encode::JP', - 'iso-2022-jp' => 'Encode::JP', - 'iso-2022-jp-1' => 'Encode::JP', - 'jis0201-raw' => 'Encode::JP', - 'jis0208-raw' => 'Encode::JP', - 'jis0212-raw' => 'Encode::JP', - 'cp932' => 'Encode::JP', - 'MacJapanese' => 'Encode::JP', - 'shiftjis' => 'Encode::JP', - - - 'euc-kr' => 'Encode::KR', - 'iso-2022-kr' => 'Encode::KR', - 'johab' => 'Encode::KR', - 'ksc5601-raw' => 'Encode::KR', - 'cp949' => 'Encode::KR', - 'MacKorean' => 'Encode::KR', - - 'big5-eten' => 'Encode::TW', - 'big5-hkscs' => 'Encode::TW', - 'cp950' => 'Encode::TW', - 'MacChineseTrad' => 'Encode::TW', - - #'big5plus' => 'Encode::HanExtra', - #'euc-tw' => 'Encode::HanExtra', - #'gb18030' => 'Encode::HanExtra', - - 'MIME-Header' => 'Encode::MIME::Header', - 'MIME-B' => 'Encode::MIME::Header', - 'MIME-Q' => 'Encode::MIME::Header', - - 'MIME-Header-ISO_2022_JP' => 'Encode::MIME::Header::ISO_2022_JP', - ); -} - -# -# Why not export ? to keep ConfigLocal Happy! -# -while (my ($enc,$mod) = each %ExtModule){ - $Encode::ExtModule{$enc} = $mod; -} - -1; -__END__ - -=head1 NAME - -Encode::Config -- internally used by Encode - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/ConfigLocal_PM.e2x b/Master/tlpkg/tlperl.old/lib/Encode/ConfigLocal_PM.e2x deleted file mode 100644 index e203dfded50..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/ConfigLocal_PM.e2x +++ /dev/null @@ -1,13 +0,0 @@ -# -# Local demand-load module list -# -# You should not edit this file by hand! use "enc2xs -C" -# -package Encode::ConfigLocal; -our $VERSION = $_LocalVer_; - -use strict; - -$_ModLines_ - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Encode/EBCDIC.pm b/Master/tlpkg/tlperl.old/lib/Encode/EBCDIC.pm deleted file mode 100644 index 200a82fea46..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/EBCDIC.pm +++ /dev/null @@ -1,43 +0,0 @@ -package Encode::EBCDIC; -use Encode; -our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use XSLoader; -XSLoader::load(__PACKAGE__,$VERSION); - -1; -__END__ - -=head1 NAME - -Encode::EBCDIC - EBCDIC Encodings - -=head1 SYNOPSIS - - use Encode qw/encode decode/; - $posix_bc = encode("posix-bc", $utf8); # loads Encode::EBCDIC implicitly - $utf8 = decode("", $posix_bc); # ditto - -=head1 ABSTRACT - -This module implements various EBCDIC-Based encodings. Encodings -supported are as follows. - - Canonical Alias Description - -------------------------------------------------------------------- - cp37 - cp500 - cp875 - cp1026 - cp1047 - posix-bc - -=head1 DESCRIPTION - -To find how to use this module in detail, see L<Encode>. - -=head1 SEE ALSO - -L<Encode>, L<perlebcdic> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/Encoder.pm b/Master/tlpkg/tlperl.old/lib/Encode/Encoder.pm deleted file mode 100644 index fe2a2b90ff6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/Encoder.pm +++ /dev/null @@ -1,249 +0,0 @@ -# -# $Id: Encoder.pm,v 2.0 2004/05/16 20:55:17 dankogai Exp $ -# -package Encode::Encoder; -use strict; -use warnings; -our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -require Exporter; -our @ISA = qw(Exporter); -our @EXPORT_OK = qw ( encoder ); - -our $AUTOLOAD; -sub DEBUG () { 0 } -use Encode qw(encode decode find_encoding from_to); -use Carp; - -sub new{ - my ($class, $data, $encname) = @_; - unless($encname){ - $encname = Encode::is_utf8($data) ? 'utf8' : ''; - }else{ - my $obj = find_encoding($encname) - or croak __PACKAGE__, ": unknown encoding: $encname"; - $encname = $obj->name; - } - my $self = { - data => $data, - encoding => $encname, - }; - bless $self => $class; -} - -sub encoder{ __PACKAGE__->new(@_) } - -sub data{ - my ($self, $data) = @_; - if (defined $data){ - $self->{data} = $data; - return $data; - }else{ - return $self->{data}; - } -} - -sub encoding{ - my ($self, $encname) = @_; - if ($encname){ - my $obj = find_encoding($encname) - or confess __PACKAGE__, ": unknown encoding: $encname"; - $self->{encoding} = $obj->name; - return $self; - }else{ - return $self->{encoding} - } -} - -sub bytes { - my ($self, $encname) = @_; - $encname ||= $self->{encoding}; - my $obj = find_encoding($encname) - or confess __PACKAGE__, ": unknown encoding: $encname"; - $self->{data} = $obj->decode($self->{data}, 1); - $self->{encoding} = '' ; - return $self; -} - -sub DESTROY{ # defined so it won't autoload. - DEBUG and warn shift; -} - -sub AUTOLOAD { - my $self = shift; - my $type = ref($self) - or confess "$self is not an object"; - my $myname = $AUTOLOAD; - $myname =~ s/.*://; # strip fully-qualified portion - my $obj = find_encoding($myname) - or confess __PACKAGE__, ": unknown encoding: $myname"; - DEBUG and warn $self->{encoding}, " => ", $obj->name; - if ($self->{encoding}){ - from_to($self->{data}, $self->{encoding}, $obj->name, 1); - }else{ - $self->{data} = $obj->encode($self->{data}, 1); - } - $self->{encoding} = $obj->name; - return $self; -} - -use overload - q("") => sub { $_[0]->{data} }, - q(0+) => sub { use bytes (); bytes::length($_[0]->{data}) }, - fallback => 1, - ; - -1; -__END__ - -=head1 NAME - -Encode::Encoder -- Object Oriented Encoder - -=head1 SYNOPSIS - - use Encode::Encoder; - # Encode::encode("ISO-8859-1", $data); - Encode::Encoder->new($data)->iso_8859_1; # OOP way - # shortcut - use Encode::Encoder qw(encoder); - encoder($data)->iso_8859_1; - # you can stack them! - encoder($data)->iso_8859_1->base64; # provided base64() is defined - # you can use it as a decoder as well - encoder($base64)->bytes('base64')->latin1; - # stringified - print encoder($data)->utf8->latin1; # prints the string in latin1 - # numified - encoder("\x{abcd}\x{ef}g")->utf8 == 6; # true. bytes::length($data) - -=head1 ABSTRACT - -B<Encode::Encoder> allows you to use Encode in an object-oriented -style. This is not only more intuitive than a functional approach, -but also handier when you want to stack encodings. Suppose you want -your UTF-8 string converted to Latin1 then Base64: you can simply say - - my $base64 = encoder($utf8)->latin1->base64; - -instead of - - my $latin1 = encode("latin1", $utf8); - my $base64 = encode_base64($utf8); - -or the lazier and more convoluted - - my $base64 = encode_base64(encode("latin1", $utf8)); - -=head1 Description - -Here is how to use this module. - -=over 4 - -=item * - -There are at least two instance variables stored in a hash reference, -{data} and {encoding}. - -=item * - -When there is no method, it takes the method name as the name of the -encoding and encodes the instance I<data> with I<encoding>. If successful, -the instance I<encoding> is set accordingly. - -=item * - -You can retrieve the result via -E<gt>data but usually you don't have to -because the stringify operator ("") is overridden to do exactly that. - -=back - -=head2 Predefined Methods - -This module predefines the methods below: - -=over 4 - -=item $e = Encode::Encoder-E<gt>new([$data, $encoding]); - -returns an encoder object. Its data is initialized with $data if -present, and its encoding is set to $encoding if present. - -When $encoding is omitted, it defaults to utf8 if $data is already in -utf8 or "" (empty string) otherwise. - -=item encoder() - -is an alias of Encode::Encoder-E<gt>new(). This one is exported on demand. - -=item $e-E<gt>data([$data]) - -When $data is present, sets the instance data to $data and returns the -object itself. Otherwise, the current instance data is returned. - -=item $e-E<gt>encoding([$encoding]) - -When $encoding is present, sets the instance encoding to $encoding and -returns the object itself. Otherwise, the current instance encoding is -returned. - -=item $e-E<gt>bytes([$encoding]) - -decodes instance data from $encoding, or the instance encoding if -omitted. If the conversion is successful, the instance encoding -will be set to "". - -The name I<bytes> was deliberately picked to avoid namespace tainting --- this module may be used as a base class so method names that appear -in Encode::Encoding are avoided. - -=back - -=head2 Example: base64 transcoder - -This module is designed to work with L<Encode::Encoding>. -To make the Base64 transcoder example above really work, you could -write a module like this: - - package Encode::Base64; - use base 'Encode::Encoding'; - __PACKAGE__->Define('base64'); - use MIME::Base64; - sub encode{ - my ($obj, $data) = @_; - return encode_base64($data); - } - sub decode{ - my ($obj, $data) = @_; - return decode_base64($data); - } - 1; - __END__ - -And your caller module would be something like this: - - use Encode::Encoder; - use Encode::Base64; - - # now you can really do the following - - encoder($data)->iso_8859_1->base64; - encoder($base64)->bytes('base64')->latin1; - -=head2 Operator Overloading - -This module overloads two operators, stringify ("") and numify (0+). - -Stringify dumps the data inside the object. - -Numify returns the number of bytes in the instance data. - -They come in handy when you want to print or find the size of data. - -=head1 SEE ALSO - -L<Encode>, -L<Encode::Encoding> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/Encoding.pm b/Master/tlpkg/tlperl.old/lib/Encode/Encoding.pm deleted file mode 100644 index 06af9fb6994..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/Encoding.pm +++ /dev/null @@ -1,341 +0,0 @@ -package Encode::Encoding; -# Base class for classes which implement encodings -use strict; -our $VERSION = do { my @r = (q$Revision: 2.2 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -require Encode; - -sub DEBUG { 0 } -sub Define -{ - my $obj = shift; - my $canonical = shift; - $obj = bless { Name => $canonical },$obj unless ref $obj; - # warn "$canonical => $obj\n"; - Encode::define_encoding($obj, $canonical, @_); -} - -sub name { return shift->{'Name'} } - -# sub renew { return $_[0] } - -sub renew { - my $self = shift; - my $clone = bless { %$self } => ref($self); - $clone->{renewed}++; # so the caller can see it - DEBUG and warn $clone->{renewed}; - return $clone; -} - -sub renewed{ return $_[0]->{renewed} || 0 } - -*new_sequence = \&renew; - -sub needs_lines { 0 }; - -sub perlio_ok { - eval{ require PerlIO::encoding }; - return $@ ? 0 : 1; -} - -# (Temporary|legacy) methods - -sub toUnicode { shift->decode(@_) } -sub fromUnicode { shift->encode(@_) } - -# -# Needs to be overloaded or just croak -# - -sub encode { - require Carp; - my $obj = shift; - my $class = ref($obj) ? ref($obj) : $obj; - Carp::croak($class . "->encode() not defined!"); -} - -sub decode{ - require Carp; - my $obj = shift; - my $class = ref($obj) ? ref($obj) : $obj; - Carp::croak($class . "->encode() not defined!"); -} - -sub DESTROY {} - -1; -__END__ - -=head1 NAME - -Encode::Encoding - Encode Implementation Base Class - -=head1 SYNOPSIS - - package Encode::MyEncoding; - use base qw(Encode::Encoding); - - __PACKAGE__->Define(qw(myCanonical myAlias)); - -=head1 DESCRIPTION - -As mentioned in L<Encode>, encodings are (in the current -implementation at least) defined as objects. The mapping of encoding -name to object is via the C<%Encode::Encoding> hash. Though you can -directly manipulate this hash, it is strongly encouraged to use this -base class module and add encode() and decode() methods. - -=head2 Methods you should implement - -You are strongly encouraged to implement methods below, at least -either encode() or decode(). - -=over 4 - -=item -E<gt>encode($string [,$check]) - -MUST return the octet sequence representing I<$string>. - -=over 2 - -=item * - -If I<$check> is true, it SHOULD modify I<$string> in place to remove -the converted part (i.e. the whole string unless there is an error). -If perlio_ok() is true, SHOULD becomes MUST. - -=item * - -If an error occurs, it SHOULD return the octet sequence for the -fragment of string that has been converted and modify $string in-place -to remove the converted part leaving it starting with the problem -fragment. If perlio_ok() is true, SHOULD becomes MUST. - -=item * - -If I<$check> is is false then C<encode> MUST make a "best effort" to -convert the string - for example, by using a replacement character. - -=back - -=item -E<gt>decode($octets [,$check]) - -MUST return the string that I<$octets> represents. - -=over 2 - -=item * - -If I<$check> is true, it SHOULD modify I<$octets> in place to remove -the converted part (i.e. the whole sequence unless there is an -error). If perlio_ok() is true, SHOULD becomes MUST. - -=item * - -If an error occurs, it SHOULD return the fragment of string that has -been converted and modify $octets in-place to remove the converted -part leaving it starting with the problem fragment. If perlio_ok() is -true, SHOULD becomes MUST. - -=item * - -If I<$check> is false then C<decode> should make a "best effort" to -convert the string - for example by using Unicode's "\x{FFFD}" as a -replacement character. - -=back - -=back - -If you want your encoding to work with L<encoding> pragma, you should -also implement the method below. - -=over 4 - -=item -E<gt>cat_decode($destination, $octets, $offset, $terminator [,$check]) - -MUST decode I<$octets> with I<$offset> and concatenate it to I<$destination>. -Decoding will terminate when $terminator (a string) appears in output. -I<$offset> will be modified to the last $octets position at end of decode. -Returns true if $terminator appears output, else returns false. - -=back - -=head2 Other methods defined in Encode::Encodings - -You do not have to override methods shown below unless you have to. - -=over 4 - -=item -E<gt>name - -Predefined As: - - sub name { return shift->{'Name'} } - -MUST return the string representing the canonical name of the encoding. - -=item -E<gt>renew - -Predefined As: - - sub renew { - my $self = shift; - my $clone = bless { %$self } => ref($self); - $clone->{renewed}++; - return $clone; - } - -This method reconstructs the encoding object if necessary. If you need -to store the state during encoding, this is where you clone your object. - -PerlIO ALWAYS calls this method to make sure it has its own private -encoding object. - -=item -E<gt>renewed - -Predefined As: - - sub renewed { $_[0]->{renewed} || 0 } - -Tells whether the object is renewed (and how many times). Some -modules emit C<Use of uninitialized value in null operation> warning -unless the value is numeric so return 0 for false. - -=item -E<gt>perlio_ok() - -Predefined As: - - sub perlio_ok { - eval{ require PerlIO::encoding }; - return $@ ? 0 : 1; - } - -If your encoding does not support PerlIO for some reasons, just; - - sub perlio_ok { 0 } - -=item -E<gt>needs_lines() - -Predefined As: - - sub needs_lines { 0 }; - -If your encoding can work with PerlIO but needs line buffering, you -MUST define this method so it returns true. 7bit ISO-2022 encodings -are one example that needs this. When this method is missing, false -is assumed. - -=back - -=head2 Example: Encode::ROT13 - - package Encode::ROT13; - use strict; - use base qw(Encode::Encoding); - - __PACKAGE__->Define('rot13'); - - sub encode($$;$){ - my ($obj, $str, $chk) = @_; - $str =~ tr/A-Za-z/N-ZA-Mn-za-m/; - $_[1] = '' if $chk; # this is what in-place edit means - return $str; - } - - # Jr pna or ynml yvxr guvf; - *decode = \&encode; - - 1; - -=head1 Why the heck Encode API is different? - -It should be noted that the I<$check> behaviour is different from the -outer public API. The logic is that the "unchecked" case is useful -when the encoding is part of a stream which may be reporting errors -(e.g. STDERR). In such cases, it is desirable to get everything -through somehow without causing additional errors which obscure the -original one. Also, the encoding is best placed to know what the -correct replacement character is, so if that is the desired behaviour -then letting low level code do it is the most efficient. - -By contrast, if I<$check> is true, the scheme above allows the -encoding to do as much as it can and tell the layer above how much -that was. What is lacking at present is a mechanism to report what -went wrong. The most likely interface will be an additional method -call to the object, or perhaps (to avoid forcing per-stream objects -on otherwise stateless encodings) an additional parameter. - -It is also highly desirable that encoding classes inherit from -C<Encode::Encoding> as a base class. This allows that class to define -additional behaviour for all encoding objects. - - package Encode::MyEncoding; - use base qw(Encode::Encoding); - - __PACKAGE__->Define(qw(myCanonical myAlias)); - -to create an object with C<< bless {Name => ...}, $class >>, and call -define_encoding. They inherit their C<name> method from -C<Encode::Encoding>. - -=head2 Compiled Encodings - -For the sake of speed and efficiency, most of the encodings are now -supported via a I<compiled form>: XS modules generated from UCM -files. Encode provides the enc2xs tool to achieve that. Please see -L<enc2xs> for more details. - -=head1 SEE ALSO - -L<perlmod>, L<enc2xs> - -=begin future - -=over 4 - -=item Scheme 1 - -The fixup routine gets passed the remaining fragment of string being -processed. It modifies it in place to remove bytes/characters it can -understand and returns a string used to represent them. For example: - - sub fixup { - my $ch = substr($_[0],0,1,''); - return sprintf("\x{%02X}",ord($ch); - } - -This scheme is close to how the underlying C code for Encode works, -but gives the fixup routine very little context. - -=item Scheme 2 - -The fixup routine gets passed the original string, an index into -it of the problem area, and the output string so far. It appends -what it wants to the output string and returns a new index into the -original string. For example: - - sub fixup { - # my ($s,$i,$d) = @_; - my $ch = substr($_[0],$_[1],1); - $_[2] .= sprintf("\x{%02X}",ord($ch); - return $_[1]+1; - } - -This scheme gives maximal control to the fixup routine but is more -complicated to code, and may require that the internals of Encode be tweaked to -keep the original string intact. - -=item Other Schemes - -Hybrids of the above. - -Multiple return values rather than in-place modifications. - -Index into the string could be C<pos($str)> allowing C<s/\G...//>. - -=back - -=end future - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/Guess.pm b/Master/tlpkg/tlperl.old/lib/Encode/Guess.pm deleted file mode 100644 index 5692cee9a4a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/Guess.pm +++ /dev/null @@ -1,351 +0,0 @@ -package Encode::Guess; -use strict; - -use Encode qw(:fallbacks find_encoding); -our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -my $Canon = 'Guess'; -sub DEBUG () { 0 } -our %DEF_SUSPECTS = map { $_ => find_encoding($_) } qw(ascii utf8); -$Encode::Encoding{$Canon} = - bless { - Name => $Canon, - Suspects => { %DEF_SUSPECTS }, - } => __PACKAGE__; - -use base qw(Encode::Encoding); -sub needs_lines { 1 } -sub perlio_ok { 0 } - -our @EXPORT = qw(guess_encoding); -our $NoUTFAutoGuess = 0; -our $UTF8_BOM = pack("C3", 0xef, 0xbb, 0xbf); - -sub import { # Exporter not used so we do it on our own - my $callpkg = caller; - for my $item (@EXPORT){ - no strict 'refs'; - *{"$callpkg\::$item"} = \&{"$item"}; - } - set_suspects(@_); -} - -sub set_suspects{ - my $class = shift; - my $self = ref($class) ? $class : $Encode::Encoding{$Canon}; - $self->{Suspects} = { %DEF_SUSPECTS }; - $self->add_suspects(@_); -} - -sub add_suspects{ - my $class = shift; - my $self = ref($class) ? $class : $Encode::Encoding{$Canon}; - for my $c (@_){ - my $e = find_encoding($c) or die "Unknown encoding: $c"; - $self->{Suspects}{$e->name} = $e; - DEBUG and warn "Added: ", $e->name; - } -} - -sub decode($$;$){ - my ($obj, $octet, $chk) = @_; - my $guessed = guess($obj, $octet); - unless (ref($guessed)){ - require Carp; - Carp::croak($guessed); - } - my $utf8 = $guessed->decode($octet, $chk); - $_[1] = $octet if $chk; - return $utf8; -} - -sub guess_encoding{ - guess($Encode::Encoding{$Canon}, @_); -} - -sub guess { - my $class = shift; - my $obj = ref($class) ? $class : $Encode::Encoding{$Canon}; - my $octet = shift; - - # sanity check - return unless defined $octet and length $octet; - - # cheat 0: utf8 flag; - if ( Encode::is_utf8($octet) ) { - return find_encoding('utf8') unless $NoUTFAutoGuess; - Encode::_utf8_off($octet); - } - # cheat 1: BOM - use Encode::Unicode; - unless ($NoUTFAutoGuess) { - my $BOM = pack('C3', unpack("C3", $octet)); - return find_encoding('utf8') - if (defined $BOM and $BOM eq $UTF8_BOM); - $BOM = unpack('N', $octet); - return find_encoding('UTF-32') - if (defined $BOM and ($BOM == 0xFeFF or $BOM == 0xFFFe0000)); - $BOM = unpack('n', $octet); - return find_encoding('UTF-16') - if (defined $BOM and ($BOM == 0xFeFF or $BOM == 0xFFFe)); - if ($octet =~ /\x00/o){ # if \x00 found, we assume UTF-(16|32)(BE|LE) - my $utf; - my ($be, $le) = (0, 0); - if ($octet =~ /\x00\x00/o){ # UTF-32(BE|LE) assumed - $utf = "UTF-32"; - for my $char (unpack('N*', $octet)){ - $char & 0x0000ffff and $be++; - $char & 0xffff0000 and $le++; - } - }else{ # UTF-16(BE|LE) assumed - $utf = "UTF-16"; - for my $char (unpack('n*', $octet)){ - $char & 0x00ff and $be++; - $char & 0xff00 and $le++; - } - } - DEBUG and warn "$utf, be == $be, le == $le"; - $be == $le - and return - "Encodings ambiguous between $utf BE and LE ($be, $le)"; - $utf .= ($be > $le) ? 'BE' : 'LE'; - return find_encoding($utf); - } - } - my %try = %{$obj->{Suspects}}; - for my $c (@_){ - my $e = find_encoding($c) or die "Unknown encoding: $c"; - $try{$e->name} = $e; - DEBUG and warn "Added: ", $e->name; - } - my $nline = 1; - for my $line (split /\r\n?|\n/, $octet){ - # cheat 2 -- \e in the string - if ($line =~ /\e/o){ - my @keys = keys %try; - delete @try{qw/utf8 ascii/}; - for my $k (@keys){ - ref($try{$k}) eq 'Encode::XS' and delete $try{$k}; - } - } - my %ok = %try; - # warn join(",", keys %try); - for my $k (keys %try){ - my $scratch = $line; - $try{$k}->decode($scratch, FB_QUIET); - if ($scratch eq ''){ - DEBUG and warn sprintf("%4d:%-24s ok\n", $nline, $k); - }else{ - use bytes (); - DEBUG and - warn sprintf("%4d:%-24s not ok; %d bytes left\n", - $nline, $k, bytes::length($scratch)); - delete $ok{$k}; - } - } - %ok or return "No appropriate encodings found!"; - if (scalar(keys(%ok)) == 1){ - my ($retval) = values(%ok); - return $retval; - } - %try = %ok; $nline++; - } - $try{ascii} or - return "Encodings too ambiguous: ", join(" or ", keys %try); - return $try{ascii}; -} - - - -1; -__END__ - -=head1 NAME - -Encode::Guess -- Guesses encoding from data - -=head1 SYNOPSIS - - # if you are sure $data won't contain anything bogus - - use Encode; - use Encode::Guess qw/euc-jp shiftjis 7bit-jis/; - my $utf8 = decode("Guess", $data); - my $data = encode("Guess", $utf8); # this doesn't work! - - # more elaborate way - use Encode::Guess; - my $enc = guess_encoding($data, qw/euc-jp shiftjis 7bit-jis/); - ref($enc) or die "Can't guess: $enc"; # trap error this way - $utf8 = $enc->decode($data); - # or - $utf8 = decode($enc->name, $data) - -=head1 ABSTRACT - -Encode::Guess enables you to guess in what encoding a given data is -encoded, or at least tries to. - -=head1 DESCRIPTION - -By default, it checks only ascii, utf8 and UTF-16/32 with BOM. - - use Encode::Guess; # ascii/utf8/BOMed UTF - -To use it more practically, you have to give the names of encodings to -check (I<suspects> as follows). The name of suspects can either be -canonical names or aliases. - -CAVEAT: Unlike UTF-(16|32), BOM in utf8 is NOT AUTOMATICALLY STRIPPED. - - # tries all major Japanese Encodings as well - use Encode::Guess qw/euc-jp shiftjis 7bit-jis/; - -If the C<$Encode::Guess::NoUTFAutoGuess> variable is set to a true -value, no heuristics will be applied to UTF8/16/32, and the result -will be limited to the suspects and C<ascii>. - -=over 4 - -=item Encode::Guess->set_suspects - -You can also change the internal suspects list via C<set_suspects> -method. - - use Encode::Guess; - Encode::Guess->set_suspects(qw/euc-jp shiftjis 7bit-jis/); - -=item Encode::Guess->add_suspects - -Or you can use C<add_suspects> method. The difference is that -C<set_suspects> flushes the current suspects list while -C<add_suspects> adds. - - use Encode::Guess; - Encode::Guess->add_suspects(qw/euc-jp shiftjis 7bit-jis/); - # now the suspects are euc-jp,shiftjis,7bit-jis, AND - # euc-kr,euc-cn, and big5-eten - Encode::Guess->add_suspects(qw/euc-kr euc-cn big5-eten/); - -=item Encode::decode("Guess" ...) - -When you are content with suspects list, you can now - - my $utf8 = Encode::decode("Guess", $data); - -=item Encode::Guess->guess($data) - -But it will croak if: - -=over - -=item * - -Two or more suspects remain - -=item * - -No suspects left - -=back - -So you should instead try this; - - my $decoder = Encode::Guess->guess($data); - -On success, $decoder is an object that is documented in -L<Encode::Encoding>. So you can now do this; - - my $utf8 = $decoder->decode($data); - -On failure, $decoder now contains an error message so the whole thing -would be as follows; - - my $decoder = Encode::Guess->guess($data); - die $decoder unless ref($decoder); - my $utf8 = $decoder->decode($data); - -=item guess_encoding($data, [, I<list of suspects>]) - -You can also try C<guess_encoding> function which is exported by -default. It takes $data to check and it also takes the list of -suspects by option. The optional suspect list is I<not reflected> to -the internal suspects list. - - my $decoder = guess_encoding($data, qw/euc-jp euc-kr euc-cn/); - die $decoder unless ref($decoder); - my $utf8 = $decoder->decode($data); - # check only ascii and utf8 - my $decoder = guess_encoding($data); - -=back - -=head1 CAVEATS - -=over 4 - -=item * - -Because of the algorithm used, ISO-8859 series and other single-byte -encodings do not work well unless either one of ISO-8859 is the only -one suspect (besides ascii and utf8). - - use Encode::Guess; - # perhaps ok - my $decoder = guess_encoding($data, 'latin1'); - # definitely NOT ok - my $decoder = guess_encoding($data, qw/latin1 greek/); - -The reason is that Encode::Guess guesses encoding by trial and error. -It first splits $data into lines and tries to decode the line for each -suspect. It keeps it going until all but one encoding is eliminated -out of suspects list. ISO-8859 series is just too successful for most -cases (because it fills almost all code points in \x00-\xff). - -=item * - -Do not mix national standard encodings and the corresponding vendor -encodings. - - # a very bad idea - my $decoder - = guess_encoding($data, qw/shiftjis MacJapanese cp932/); - -The reason is that vendor encoding is usually a superset of national -standard so it becomes too ambiguous for most cases. - -=item * - -On the other hand, mixing various national standard encodings -automagically works unless $data is too short to allow for guessing. - - # This is ok if $data is long enough - my $decoder = - guess_encoding($data, qw/euc-cn - euc-jp shiftjis 7bit-jis - euc-kr - big5-eten/); - -=item * - -DO NOT PUT TOO MANY SUSPECTS! Don't you try something like this! - - my $decoder = guess_encoding($data, - Encode->encodings(":all")); - -=back - -It is, after all, just a guess. You should alway be explicit when it -comes to encodings. But there are some, especially Japanese, -environment that guess-coding is a must. Use this module with care. - -=head1 TO DO - -Encode::Guess does not work on EBCDIC platforms. - -=head1 SEE ALSO - -L<Encode>, L<Encode::Encoding> - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Encode/JP.pm b/Master/tlpkg/tlperl.old/lib/Encode/JP.pm deleted file mode 100644 index 01ad37f30db..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/JP.pm +++ /dev/null @@ -1,97 +0,0 @@ -package Encode::JP; -BEGIN { - if (ord("A") == 193) { - die "Encode::JP not supported on EBCDIC\n"; - } -} -use Encode; -our $VERSION = do { my @r = (q$Revision: 2.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use XSLoader; -XSLoader::load(__PACKAGE__,$VERSION); - -use Encode::JP::JIS7; - -1; -__END__ - -=head1 NAME - -Encode::JP - Japanese Encodings - -=head1 SYNOPSIS - - use Encode qw/encode decode/; - $euc_jp = encode("euc-jp", $utf8); # loads Encode::JP implicitly - $utf8 = decode("euc-jp", $euc_jp); # ditto - -=head1 ABSTRACT - -This module implements Japanese charset encodings. Encodings -supported are as follows. - - Canonical Alias Description - -------------------------------------------------------------------- - euc-jp /\beuc.*jp$/i EUC (Extended Unix Character) - /\bjp.*euc/i - /\bujis$/i - shiftjis /\bshift.*jis$/i Shift JIS (aka MS Kanji) - /\bsjis$/i - 7bit-jis /\bjis$/i 7bit JIS - iso-2022-jp ISO-2022-JP [RFC1468] - = 7bit JIS with all Halfwidth Kana - converted to Fullwidth - iso-2022-jp-1 ISO-2022-JP-1 [RFC2237] - = ISO-2022-JP with JIS X 0212-1990 - support. See below - MacJapanese Shift JIS + Apple vendor mappings - cp932 /\bwindows-31j$/i Code Page 932 - = Shift JIS + MS/IBM vendor mappings - jis0201-raw JIS0201, raw format - jis0208-raw JIS0201, raw format - jis0212-raw JIS0201, raw format - -------------------------------------------------------------------- - -=head1 DESCRIPTION - -To find out how to use this module in detail, see L<Encode>. - -=head1 Note on ISO-2022-JP(-1)? - -ISO-2022-JP-1 (RFC2237) is a superset of ISO-2022-JP (RFC1468) which -adds support for JIS X 0212-1990. That means you can use the same -code to decode to utf8 but not vice versa. - - $utf8 = decode('iso-2022-jp-1', $stream); - -and - - $utf8 = decode('iso-2022-jp', $stream); - -yield the same result but - - $with_0212 = encode('iso-2022-jp-1', $utf8); - -is now different from - - $without_0212 = encode('iso-2022-jp', $utf8 ); - -In the latter case, characters that map to 0212 are first converted -to U+3013 (0xA2AE in EUC-JP; a white square also known as 'Tofu' or -'geta mark') then fed to the decoding engine. U+FFFD is not used, -in order to preserve text layout as much as possible. - -=head1 BUGS - -The ASCII region (0x00-0x7f) is preserved for all encodings, even -though this conflicts with mappings by the Unicode Consortium. See - -L<http://www.debian.or.jp/~kubota/unicode-symbols.html.en> - -to find out why it is implemented that way. - -=head1 SEE ALSO - -L<Encode> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/JP/H2Z.pm b/Master/tlpkg/tlperl.old/lib/Encode/JP/H2Z.pm deleted file mode 100644 index 0c84c62fda6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/JP/H2Z.pm +++ /dev/null @@ -1,174 +0,0 @@ -# -# $Id: H2Z.pm,v 2.0 2004/05/16 20:55:17 dankogai Exp $ -# - -package Encode::JP::H2Z; - -use strict; - -our $RCSID = q$Id: H2Z.pm,v 2.0 2004/05/16 20:55:17 dankogai Exp $; -our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use Encode::CJKConstants qw(:all); - -use vars qw(%_D2Z $_PAT_D2Z - %_Z2D $_PAT_Z2D - %_H2Z $_PAT_H2Z - %_Z2H $_PAT_Z2H); - -%_H2Z = ( - "\x8e\xa1" => "\xa1\xa3", #¡£ - "\x8e\xa2" => "\xa1\xd6", #¡Ö - "\x8e\xa3" => "\xa1\xd7", #¡× - "\x8e\xa4" => "\xa1\xa2", #¡¢ - "\x8e\xa5" => "\xa1\xa6", #¡¦ - "\x8e\xa6" => "\xa5\xf2", #¥ò - "\x8e\xa7" => "\xa5\xa1", #¥¡ - "\x8e\xa8" => "\xa5\xa3", #¥£ - "\x8e\xa9" => "\xa5\xa5", #¥¥ - "\x8e\xaa" => "\xa5\xa7", #¥§ - "\x8e\xab" => "\xa5\xa9", #¥© - "\x8e\xac" => "\xa5\xe3", #¥ã - "\x8e\xad" => "\xa5\xe5", #¥å - "\x8e\xae" => "\xa5\xe7", #¥ç - "\x8e\xaf" => "\xa5\xc3", #¥Ã - "\x8e\xb0" => "\xa1\xbc", #¡¼ - "\x8e\xb1" => "\xa5\xa2", #¥¢ - "\x8e\xb2" => "\xa5\xa4", #¥¤ - "\x8e\xb3" => "\xa5\xa6", #¥¦ - "\x8e\xb4" => "\xa5\xa8", #¥¨ - "\x8e\xb5" => "\xa5\xaa", #¥ª - "\x8e\xb6" => "\xa5\xab", #¥« - "\x8e\xb7" => "\xa5\xad", #¥ - "\x8e\xb8" => "\xa5\xaf", #¥¯ - "\x8e\xb9" => "\xa5\xb1", #¥± - "\x8e\xba" => "\xa5\xb3", #¥³ - "\x8e\xbb" => "\xa5\xb5", #¥µ - "\x8e\xbc" => "\xa5\xb7", #¥· - "\x8e\xbd" => "\xa5\xb9", #¥¹ - "\x8e\xbe" => "\xa5\xbb", #¥» - "\x8e\xbf" => "\xa5\xbd", #¥½ - "\x8e\xc0" => "\xa5\xbf", #¥¿ - "\x8e\xc1" => "\xa5\xc1", #¥Á - "\x8e\xc2" => "\xa5\xc4", #¥Ä - "\x8e\xc3" => "\xa5\xc6", #¥Æ - "\x8e\xc4" => "\xa5\xc8", #¥È - "\x8e\xc5" => "\xa5\xca", #¥Ê - "\x8e\xc6" => "\xa5\xcb", #¥Ë - "\x8e\xc7" => "\xa5\xcc", #¥Ì - "\x8e\xc8" => "\xa5\xcd", #¥Í - "\x8e\xc9" => "\xa5\xce", #¥Î - "\x8e\xca" => "\xa5\xcf", #¥Ï - "\x8e\xcb" => "\xa5\xd2", #¥Ò - "\x8e\xcc" => "\xa5\xd5", #¥Õ - "\x8e\xcd" => "\xa5\xd8", #¥Ø - "\x8e\xce" => "\xa5\xdb", #¥Û - "\x8e\xcf" => "\xa5\xde", #¥Þ - "\x8e\xd0" => "\xa5\xdf", #¥ß - "\x8e\xd1" => "\xa5\xe0", #¥à - "\x8e\xd2" => "\xa5\xe1", #¥á - "\x8e\xd3" => "\xa5\xe2", #¥â - "\x8e\xd4" => "\xa5\xe4", #¥ä - "\x8e\xd5" => "\xa5\xe6", #¥æ - "\x8e\xd6" => "\xa5\xe8", #¥è - "\x8e\xd7" => "\xa5\xe9", #¥é - "\x8e\xd8" => "\xa5\xea", #¥ê - "\x8e\xd9" => "\xa5\xeb", #¥ë - "\x8e\xda" => "\xa5\xec", #¥ì - "\x8e\xdb" => "\xa5\xed", #¥í - "\x8e\xdc" => "\xa5\xef", #¥ï - "\x8e\xdd" => "\xa5\xf3", #¥ó - "\x8e\xde" => "\xa1\xab", #¡« - "\x8e\xdf" => "\xa1\xac", #¡¬ -); - -%_D2Z = ( - "\x8e\xb6\x8e\xde" => "\xa5\xac", #¥¬ - "\x8e\xb7\x8e\xde" => "\xa5\xae", #¥® - "\x8e\xb8\x8e\xde" => "\xa5\xb0", #¥° - "\x8e\xb9\x8e\xde" => "\xa5\xb2", #¥² - "\x8e\xba\x8e\xde" => "\xa5\xb4", #¥´ - "\x8e\xbb\x8e\xde" => "\xa5\xb6", #¥¶ - "\x8e\xbc\x8e\xde" => "\xa5\xb8", #¥¸ - "\x8e\xbd\x8e\xde" => "\xa5\xba", #¥º - "\x8e\xbe\x8e\xde" => "\xa5\xbc", #¥¼ - "\x8e\xbf\x8e\xde" => "\xa5\xbe", #¥¾ - "\x8e\xc0\x8e\xde" => "\xa5\xc0", #¥À - "\x8e\xc1\x8e\xde" => "\xa5\xc2", #¥Â - "\x8e\xc2\x8e\xde" => "\xa5\xc5", #¥Å - "\x8e\xc3\x8e\xde" => "\xa5\xc7", #¥Ç - "\x8e\xc4\x8e\xde" => "\xa5\xc9", #¥É - "\x8e\xca\x8e\xde" => "\xa5\xd0", #¥Ð - "\x8e\xcb\x8e\xde" => "\xa5\xd3", #¥Ó - "\x8e\xcc\x8e\xde" => "\xa5\xd6", #¥Ö - "\x8e\xcd\x8e\xde" => "\xa5\xd9", #¥Ù - "\x8e\xce\x8e\xde" => "\xa5\xdc", #¥Ü - "\x8e\xca\x8e\xdf" => "\xa5\xd1", #¥Ñ - "\x8e\xcb\x8e\xdf" => "\xa5\xd4", #¥Ô - "\x8e\xcc\x8e\xdf" => "\xa5\xd7", #¥× - "\x8e\xcd\x8e\xdf" => "\xa5\xda", #¥Ú - "\x8e\xce\x8e\xdf" => "\xa5\xdd", #¥Ý - "\x8e\xb3\x8e\xde" => "\xa5\xf4", #¥ô -); - -# init only once; - -#$_PAT_D2Z = join("|", keys %_D2Z); -#$_PAT_H2Z = join("|", keys %_H2Z); - -%_Z2H = reverse %_H2Z; -%_Z2D = reverse %_D2Z; - -#$_PAT_Z2H = join("|", keys %_Z2H); -#$_PAT_Z2D = join("|", keys %_Z2D); - -sub h2z { - no warnings qw(uninitialized); - my $r_str = shift; - my ($keep_dakuten) = @_; - my $n = 0; - unless ($keep_dakuten){ - $n = ( - $$r_str =~ s( - ($RE{EUC_KANA} - (?:\x8e[\xde\xdf])?) - ){ - my $str = $1; - $_D2Z{$str} || $_H2Z{$str} || - # in case dakuten and handakuten are side-by-side! - $_H2Z{substr($str,0,2)} . $_H2Z{substr($str,2,2)}; - }eogx - ); - }else{ - $n = ( - $$r_str =~ s( - ($RE{EUC_KANA}) - ){ - $_H2Z{$1}; - }eogx - ); - } - $n; -} - -sub z2h { - my $r_str = shift; - my $n = ( - $$r_str =~ s( - ($RE{EUC_C}|$RE{EUC_0212}|$RE{EUC_KANA}) - ){ - $_Z2D{$1} || $_Z2H{$1} || $1; - }eogx - ); - $n; -} - -1; -__END__ - - -=head1 NAME - -Encode::JP::H2Z -- internally used by Encode::JP::2022_JP* - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/JP/JIS7.pm b/Master/tlpkg/tlperl.old/lib/Encode/JP/JIS7.pm deleted file mode 100644 index 28503ec760c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/JP/JIS7.pm +++ /dev/null @@ -1,165 +0,0 @@ -package Encode::JP::JIS7; -use strict; - -our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use Encode qw(:fallbacks); - -for my $name ('7bit-jis', 'iso-2022-jp', 'iso-2022-jp-1'){ - my $h2z = ($name eq '7bit-jis') ? 0 : 1; - my $jis0212 = ($name eq 'iso-2022-jp') ? 0 : 1; - - $Encode::Encoding{$name} = - bless { - Name => $name, - h2z => $h2z, - jis0212 => $jis0212, - } => __PACKAGE__; -} - -use base qw(Encode::Encoding); - -# we override this to 1 so PerlIO works -sub needs_lines { 1 } - -use Encode::CJKConstants qw(:all); - -# -# decode is identical for all 2022 variants -# - -sub decode($$;$) -{ - my ($obj, $str, $chk) = @_; - my $residue = ''; - if ($chk){ - $str =~ s/([^\x00-\x7f].*)$//so and $residue = $1; - } - $residue .= jis_euc(\$str); - $_[1] = $residue if $chk; - return Encode::decode('euc-jp', $str, FB_PERLQQ); -} - -# -# encode is different -# - -sub encode($$;$) -{ - require Encode::JP::H2Z; - my ($obj, $utf8, $chk) = @_; - # empty the input string in the stack so perlio is ok - $_[1] = '' if $chk; - my ($h2z, $jis0212) = @$obj{qw(h2z jis0212)}; - my $octet = Encode::encode('euc-jp', $utf8, FB_PERLQQ) ; - $h2z and &Encode::JP::H2Z::h2z(\$octet); - euc_jis(\$octet, $jis0212); - return $octet; -} - -# -# cat_decode -# -my $re_scan_jis_g = qr{ - \G ( ($RE{JIS_0212}) | $RE{JIS_0208} | - ($RE{ISO_ASC}) | ($RE{JIS_KANA}) | ) - ([^\e]*) -}x; -sub cat_decode { # ($obj, $dst, $src, $pos, $trm, $chk) - my ($obj, undef, undef, $pos, $trm) = @_; # currently ignores $chk - my ($rdst, $rsrc, $rpos) = \@_[1,2,3]; - local ${^ENCODING}; - use bytes; - my $opos = pos($$rsrc); - pos($$rsrc) = $pos; - while ($$rsrc =~ /$re_scan_jis_g/gc) { - my ($esc, $esc_0212, $esc_asc, $esc_kana, $chunk) = - ($1, $2, $3, $4, $5); - - unless ($chunk) { $esc or last; next; } - - if ($esc && !$esc_asc) { - $chunk =~ tr/\x21-\x7e/\xa1-\xfe/; - if ($esc_kana) { - $chunk =~ s/([\xa1-\xdf])/\x8e$1/og; - } elsif ($esc_0212) { - $chunk =~ s/([\xa1-\xfe][\xa1-\xfe])/\x8f$1/og; - } - $chunk = Encode::decode('euc-jp', $chunk, 0); - } - elsif ((my $npos = index($chunk, $trm)) >= 0) { - $$rdst .= substr($chunk, 0, $npos + length($trm)); - $$rpos += length($esc) + $npos + length($trm); - pos($$rsrc) = $opos; - return 1; - } - $$rdst .= $chunk; - $$rpos = pos($$rsrc); - } - $$rpos = pos($$rsrc); - pos($$rsrc) = $opos; - return ''; -} - -# JIS<->EUC -my $re_scan_jis = qr{ - (?:($RE{JIS_0212})|$RE{JIS_0208}|($RE{ISO_ASC})|($RE{JIS_KANA}))([^\e]*) -}x; - -sub jis_euc { - local ${^ENCODING}; - my $r_str = shift; - $$r_str =~ s($re_scan_jis) - { - my ($esc_0212, $esc_asc, $esc_kana, $chunk) = - ($1, $2, $3, $4); - if (!$esc_asc) { - $chunk =~ tr/\x21-\x7e/\xa1-\xfe/; - if ($esc_kana) { - $chunk =~ s/([\xa1-\xdf])/\x8e$1/og; - } - elsif ($esc_0212) { - $chunk =~ s/([\xa1-\xfe][\xa1-\xfe])/\x8f$1/og; - } - } - $chunk; - }geox; - my ($residue) = ($$r_str =~ s/(\e.*)$//so); - return $residue; -} - -sub euc_jis{ - no warnings qw(uninitialized); - my $r_str = shift; - my $jis0212 = shift; - $$r_str =~ s{ - ((?:$RE{EUC_C})+|(?:$RE{EUC_KANA})+|(?:$RE{EUC_0212})+) - }{ - my $chunk = $1; - my $esc = - ( $chunk =~ tr/\x8E//d ) ? $ESC{KANA} : - ( $chunk =~ tr/\x8F//d ) ? $ESC{JIS_0212} : - $ESC{JIS_0208}; - if ($esc eq $ESC{JIS_0212} && !$jis0212){ - # fallback to '?' - $chunk =~ tr/\xA1-\xFE/\x3F/; - }else{ - $chunk =~ tr/\xA1-\xFE/\x21-\x7E/; - } - $esc . $chunk . $ESC{ASC}; - }geox; - $$r_str =~ - s/\Q$ESC{ASC}\E - (\Q$ESC{KANA}\E|\Q$ESC{JIS_0212}\E|\Q$ESC{JIS_0208}\E)/$1/gox; - $$r_str; -} - -1; -__END__ - - -=head1 NAME - -Encode::JP::JIS7 -- internally used by Encode::JP - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/KR.pm b/Master/tlpkg/tlperl.old/lib/Encode/KR.pm deleted file mode 100644 index e9d4073b7b4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/KR.pm +++ /dev/null @@ -1,72 +0,0 @@ -package Encode::KR; -BEGIN { - if (ord("A") == 193) { - die "Encode::KR not supported on EBCDIC\n"; - } -} -our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use Encode; -use XSLoader; -XSLoader::load(__PACKAGE__,$VERSION); - -use Encode::KR::2022_KR; - -1; -__END__ - -=head1 NAME - -Encode::KR - Korean Encodings - -=head1 SYNOPSIS - - use Encode qw/encode decode/; - $euc_kr = encode("euc-kr", $utf8); # loads Encode::KR implicitly - $utf8 = decode("euc-kr", $euc_kr); # ditto - -=head1 DESCRIPTION - -This module implements Korean charset encodings. Encodings supported -are as follows. - - - Canonical Alias Description - -------------------------------------------------------------------- - euc-kr /\beuc.*kr$/i EUC (Extended Unix Character) - /\bkr.*euc$/i - ksc5601-raw Korean standard code set (as is) - cp949 /(?:x-)?uhc$/i - /(?:x-)?windows-949$/i - /\bks_c_5601-1987$/i - Code Page 949 (EUC-KR + 8,822 - (additional Hangul syllables) - MacKorean EUC-KR + Apple Vendor Mappings - johab JOHAB A supplementary encoding defined in - Annex 3 of KS X 1001:1998 - iso-2022-kr iso-2022-kr [RFC1557] - -------------------------------------------------------------------- - -To find how to use this module in detail, see L<Encode>. - -=head1 BUGS - -When you see C<charset=ks_c_5601-1987> on mails and web pages, they really -mean "cp949" encodings. To fix that, the following aliases are set; - - qr/(?:x-)?uhc$/i => '"cp949"' - qr/(?:x-)?windows-949$/i => '"cp949"' - qr/ks_c_5601-1987$/i => '"cp949"' - -The ASCII region (0x00-0x7f) is preserved for all encodings, even -though this conflicts with mappings by the Unicode Consortium. See - -L<http://www.debian.or.jp/~kubota/unicode-symbols.html.en> - -to find out why it is implemented that way. - -=head1 SEE ALSO - -L<Encode> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/KR/2022_KR.pm b/Master/tlpkg/tlperl.old/lib/Encode/KR/2022_KR.pm deleted file mode 100644 index 8b4052be570..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/KR/2022_KR.pm +++ /dev/null @@ -1,79 +0,0 @@ -package Encode::KR::2022_KR; -use strict; - -our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use Encode qw(:fallbacks); - -use base qw(Encode::Encoding); -__PACKAGE__->Define('iso-2022-kr'); - -sub needs_lines { 1 } - -sub perlio_ok { - return 0; # for the time being -} - -sub decode -{ - my ($obj, $str, $chk) = @_; - my $res = $str; - my $residue = iso_euc(\$res); - # This is for PerlIO - $_[1] = $residue if $chk; - return Encode::decode('euc-kr', $res, FB_PERLQQ); -} - -sub encode -{ - my ($obj, $utf8, $chk) = @_; - # empty the input string in the stack so perlio is ok - $_[1] = '' if $chk; - my $octet = Encode::encode('euc-kr', $utf8, FB_PERLQQ) ; - euc_iso(\$octet); - return $octet; -} - -use Encode::CJKConstants qw(:all); - -# ISO<->EUC - -sub iso_euc{ - my $r_str = shift; - $$r_str =~ s/$RE{'2022_KR'}//gox; # remove the designator - $$r_str =~ s{ # replace characters in GL - \x0e # between SO(\x0e) and SI(\x0f) - ([^\x0f]*) # with characters in GR - \x0f - } - { - my $out= $1; - $out =~ tr/\x21-\x7e/\xa1-\xfe/; - $out; - }geox; - my ($residue) = ($$r_str =~ s/(\e.*)$//so); - return $residue; -} - -sub euc_iso{ - no warnings qw(uninitialized); - my $r_str = shift; - substr($$r_str,0,0)=$ESC{'2022_KR'}; # put the designator at the beg. - $$r_str =~ s{ # move KS X 1001 characters in GR to GL - ($RE{EUC_C}+) # and enclose them with SO and SI - }{ - my $str = $1; - $str =~ tr/\xA1-\xFE/\x21-\x7E/; - "\x0e" . $str . "\x0f"; - }geox; - $$r_str; -} - -1; -__END__ - -=head1 NAME - -Encode::KR::2022_KR -- internally used by Encode::KR - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/MIME/Header.pm b/Master/tlpkg/tlperl.old/lib/Encode/MIME/Header.pm deleted file mode 100644 index f4e2ad6e2b5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/MIME/Header.pm +++ /dev/null @@ -1,230 +0,0 @@ -package Encode::MIME::Header; -use strict; -# use warnings; -our $VERSION = do { my @r = (q$Revision: 2.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; -use Encode qw(find_encoding encode_utf8 decode_utf8); -use MIME::Base64; -use Carp; - -my %seed = - ( - decode_b => '1', # decodes 'B' encoding ? - decode_q => '1', # decodes 'Q' encoding ? - encode => 'B', # encode with 'B' or 'Q' ? - bpl => 75, # bytes per line - ); - -$Encode::Encoding{'MIME-Header'} = - bless { - %seed, - Name => 'MIME-Header', - } => __PACKAGE__; - -$Encode::Encoding{'MIME-B'} = - bless { - %seed, - decode_q => 0, - Name => 'MIME-B', - } => __PACKAGE__; - -$Encode::Encoding{'MIME-Q'} = - bless { - %seed, - decode_q => 1, - encode => 'Q', - Name => 'MIME-Q', - } => __PACKAGE__; - -use base qw(Encode::Encoding); - -sub needs_lines { 1 } -sub perlio_ok{ 0 }; - -sub decode($$;$){ - use utf8; - my ($obj, $str, $chk) = @_; - # zap spaces between encoded words - $str =~ s/\?=\s+=\?/\?==\?/gos; - # multi-line header to single line - $str =~ s/(:?\r|\n|\r\n)[ \t]//gos; - $str =~ - s{ - =\? # begin encoded word - ([0-9A-Za-z\-_]+) # charset (encoding) - \?([QqBb])\? # delimiter - (.*?) # Base64-encodede contents - \?= # end encoded word - }{ - if (uc($2) eq 'B'){ - $obj->{decode_b} or croak qq(MIME "B" unsupported); - decode_b($1, $3); - }elsif(uc($2) eq 'Q'){ - $obj->{decode_q} or croak qq(MIME "Q" unsupported); - decode_q($1, $3); - }else{ - croak qq(MIME "$2" encoding is nonexistent!); - } - }egox; - $_[1] = '' if $chk; - return $str; -} - -sub decode_b{ - my $enc = shift; - my $d = find_encoding($enc) or croak qq(Unknown encoding "$enc"); - my $db64 = decode_base64(shift); - return $d->name eq 'utf8' ? - Encode::decode_utf8($db64) : $d->decode($db64, Encode::FB_PERLQQ); -} - -sub decode_q{ - my ($enc, $q) = @_; - my $d = find_encoding($enc) or croak qq(Unknown encoding "$enc"); - $q =~ s/_/ /go; - $q =~ s/=([0-9A-Fa-f]{2})/pack("C", hex($1))/ego; - return $d->name eq 'utf8' ? - Encode::decode_utf8($q) : $d->decode($q, Encode::FB_PERLQQ); -} - -my $especials = - join('|' => - map {quotemeta(chr($_))} - unpack("C*", qq{()<>@,;:\"\'/[]?.=})); - -my $re_encoded_word = - qr{ - (?: - =\? # begin encoded word - (?:[0-9A-Za-z\-_]+) # charset (encoding) - \?(?:[QqBb])\? # delimiter - (?:.*?) # Base64-encodede contents - \?= # end encoded word - ) - }xo; - -my $re_especials = qr{$re_encoded_word|$especials}xo; - -sub encode($$;$){ - my ($obj, $str, $chk) = @_; - my @line = (); - for my $line (split /\r|\n|\r\n/o, $str){ - my (@word, @subline); - for my $word (split /($re_especials)/o, $line){ - if ($word =~ /[^\x00-\x7f]/o or $word =~ /^$re_encoded_word$/o){ - push @word, $obj->_encode($word); - }else{ - push @word, $word; - } - } - my $subline = ''; - for my $word (@word){ - use bytes (); - if (bytes::length($subline) + bytes::length($word) > $obj->{bpl}){ - push @subline, $subline; - $subline = ''; - } - $subline .= $word; - } - $subline and push @subline, $subline; - push @line, join("\n " => @subline); - } - $_[1] = '' if $chk; - return join("\n", @line); -} - -use constant HEAD => '=?UTF-8?'; -use constant TAIL => '?='; -use constant SINGLE => { B => \&_encode_b, Q => \&_encode_q, }; - -sub _encode{ - my ($o, $str) = @_; - my $enc = $o->{encode}; - my $llen = ($o->{bpl} - length(HEAD) - 2 - length(TAIL)); - # to coerce a floating-point arithmetics, the following contains - # .0 in numbers -- dankogai - $llen *= $enc eq 'B' ? 3.0/4.0 : 1.0/3.0; - my @result = (); - my $chunk = ''; - while(length(my $chr = substr($str, 0, 1, ''))){ - use bytes (); - if (bytes::length($chunk) + bytes::length($chr) > $llen){ - push @result, SINGLE->{$enc}($chunk); - $chunk = ''; - } - $chunk .= $chr; - } - $chunk and push @result, SINGLE->{$enc}($chunk); - return @result; -} - -sub _encode_b{ - HEAD . 'B?' . encode_base64(encode_utf8(shift), '') . TAIL; -} - -sub _encode_q{ - my $chunk = shift; - $chunk =~ s{ - ([^0-9A-Za-z]) - }{ - join("" => map {sprintf "=%02X", $_} unpack("C*", $1)) - }egox; - return decode_utf8(HEAD . 'Q?' . $chunk . TAIL); -} - -1; -__END__ - -=head1 NAME - -Encode::MIME::Header -- MIME 'B' and 'Q' header encoding - -=head1 SYNOPSIS - - use Encode qw/encode decode/; - $utf8 = decode('MIME-Header', $header); - $header = encode('MIME-Header', $utf8); - -=head1 ABSTRACT - -This module implements RFC 2047 Mime Header Encoding. There are 3 -variant encoding names; C<MIME-Header>, C<MIME-B> and C<MIME-Q>. The -difference is described below - - decode() encode() - ---------------------------------------------- - MIME-Header Both B and Q =?UTF-8?B?....?= - MIME-B B only; Q croaks =?UTF-8?B?....?= - MIME-Q Q only; B croaks =?UTF-8?Q?....?= - -=head1 DESCRIPTION - -When you decode(=?I<encoding>?I<X>?I<ENCODED WORD>?=), I<ENCODED WORD> -is extracted and decoded for I<X> encoding (B for Base64, Q for -Quoted-Printable). Then the decoded chunk is fed to -decode(I<encoding>). So long as I<encoding> is supported by Encode, -any source encoding is fine. - -When you encode, it just encodes UTF-8 string with I<X> encoding then -quoted with =?UTF-8?I<X>?....?= . The parts that RFC 2047 forbids to -encode are left as is and long lines are folded within 76 bytes per -line. - -=head1 BUGS - -It would be nice to support encoding to non-UTF8, such as =?ISO-2022-JP? -and =?ISO-8859-1?= but that makes the implementation too complicated. -These days major mail agents all support =?UTF-8? so I think it is -just good enough. - -Due to popular demand, 'MIME-Header-ISO_2022_JP' was introduced by -Makamaka. Thre are still too many MUAs especially cellular phone -handsets which does not grok UTF-8. - -=head1 SEE ALSO - -L<Encode> - -RFC 2047, L<http://www.faqs.org/rfcs/rfc2047.html> and many other -locations. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/MIME/Header/ISO_2022_JP.pm b/Master/tlpkg/tlperl.old/lib/Encode/MIME/Header/ISO_2022_JP.pm deleted file mode 100644 index 5f637a32472..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/MIME/Header/ISO_2022_JP.pm +++ /dev/null @@ -1,127 +0,0 @@ -package Encode::MIME::Header::ISO_2022_JP; - -use strict; -use base qw(Encode::MIME::Header); - -$Encode::Encoding{'MIME-Header-ISO_2022_JP'} - = bless {encode => 'B', bpl => 76, Name => 'MIME-Header-ISO_2022_JP'} - => __PACKAGE__; - -use constant HEAD => '=?ISO-2022-JP?B?'; -use constant TAIL => '?='; - -use Encode::CJKConstants qw(%RE); - -our $VERSION = do { my @r = (q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - - -# I owe the below codes totally to -# Jcode by Dan Kogai & http://www.din.or.jp/~ohzaki/perl.htm#JP_Base64 - -sub encode { - my $self = shift; - my $str = shift; - - utf8::encode($str) if( Encode::is_utf8($str) ); - Encode::from_to($str, 'utf8', 'euc-jp'); - - my($trailing_crlf) = ($str =~ /(\n|\r|\x0d\x0a)$/o); - - $str = _mime_unstructured_header($str, $self->{bpl}); - - not $trailing_crlf and $str =~ s/(\n|\r|\x0d\x0a)$//o; - - return $str; -} - - -sub _mime_unstructured_header { - my ($oldheader, $bpl) = @_; - my $crlf = $oldheader =~ /\n$/; - my($header, @words, @wordstmp, $i) = (''); - - $oldheader =~ s/\s+$//; - - @wordstmp = split /\s+/, $oldheader; - - for ($i = 0; $i < $#wordstmp; $i++){ - if( $wordstmp[$i] !~ /^[\x21-\x7E]+$/ and $wordstmp[$i + 1] !~ /^[\x21-\x7E]+$/){ - $wordstmp[$i + 1] = "$wordstmp[$i] $wordstmp[$i + 1]"; - } - else{ - push(@words, $wordstmp[$i]); - } - } - - push(@words, $wordstmp[-1]); - - for my $word (@words){ - if ($word =~ /^[\x21-\x7E]+$/) { - $header =~ /(?:.*\n)*(.*)/; - if (length($1) + length($word) > $bpl) { - $header .= "\n $word"; - } - else{ - $header .= $word; - } - } - else{ - $header = _add_encoded_word($word, $header, $bpl); - } - - $header =~ /(?:.*\n)*(.*)/; - - if(length($1) == $bpl){ - $header .= "\n "; - } - else { - $header .= ' '; - } - } - - $header =~ s/\n? $//mg; - - $crlf ? "$header\n" : $header; -} - - -sub _add_encoded_word { - my($str, $line, $bpl) = @_; - my $result = ''; - - while( length($str) ){ - my $target = $str; - $str = ''; - - if(length($line) + 22 + ($target =~ /^(?:$RE{EUC_0212}|$RE{EUC_C})/o) * 8 > $bpl){ - $line =~ s/[ \t\n\r]*$/\n/; - $result .= $line; - $line = ' '; - } - - while(1){ - my $iso_2022_jp = $target; - Encode::from_to($iso_2022_jp, 'euc-jp', 'iso-2022-jp'); - - my $encoded - = HEAD . MIME::Base64::encode_base64($iso_2022_jp, '') . TAIL; - - if(length($encoded) + length($line) > $bpl){ - $target =~ s/($RE{EUC_0212}|$RE{EUC_KANA}|$RE{EUC_C}|$RE{ASCII})$//o; - $str = $1 . $str; - } - else{ - $line .= $encoded; - last; - } - } - - } - - $result . $line; -} - - -1; -__END__ - diff --git a/Master/tlpkg/tlperl.old/lib/Encode/Makefile_PL.e2x b/Master/tlpkg/tlperl.old/lib/Encode/Makefile_PL.e2x deleted file mode 100644 index 3bca0bff52b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/Makefile_PL.e2x +++ /dev/null @@ -1,180 +0,0 @@ -# -# This file is auto-generated by: -# enc2xs version $_Version_ -# $_Now_ -# -use 5.7.2; -use strict; -use ExtUtils::MakeMaker; -use Config; - -# Please edit the following to the taste! -my $name = '$_Name_'; -my %tables = ( - $_Name__t => [ $_TableFiles_ ], - ); - -#### DO NOT EDIT BEYOND THIS POINT! -require File::Spec; -my ($enc2xs, $encode_h) = (); -PATHLOOP: -for my $d (@Config{qw/bin sitebin vendorbin/}, - (split /$Config{path_sep}/o, $ENV{PATH})){ - for my $f (qw/enc2xs enc2xs5.7.3/){ - my $path = File::Spec->catfile($d, $f); - -r $path and $enc2xs = $path and last PATHLOOP; - } -} -$enc2xs or die "enc2xs not found!"; -print "enc2xs is $enc2xs\n"; -my %encode_h = (); -for my $d (@INC){ - my $dir = File::Spec->catfile($d, "Encode"); - my $file = File::Spec->catfile($dir, "encode.h"); - -f $file and $encode_h{$dir} = -M $file; -} -%encode_h or die "encode.h not found!"; -# find the latest one -($encode_h) = sort {$encode_h{$b} <=> $encode_h{$a}} keys %encode_h; -print "encode.h is at $encode_h\n"; - -WriteMakefile( - INC => "-I$encode_h", -#### END_OF_HEADER -- DO NOT EDIT THIS LINE BY HAND! #### - NAME => 'Encode::'.$name, - VERSION_FROM => "$name.pm", - OBJECT => '$(O_FILES)', - 'dist' => { - COMPRESS => 'gzip -9f', - SUFFIX => 'gz', - DIST_DEFAULT => 'all tardist', - }, - MAN3PODS => {}, - PREREQ_PM => { - 'Encode' => "1.41", - }, - # OS 390 winges about line numbers > 64K ??? - XSOPT => '-nolinenumbers', - ); - -package MY; - -sub post_initialize -{ - my ($self) = @_; - my %o; - my $x = $self->{'OBJ_EXT'}; - # Add the table O_FILES - foreach my $e (keys %tables) - { - $o{$e.$x} = 1; - } - $o{"$name$x"} = 1; - $self->{'O_FILES'} = [sort keys %o]; - my @files = ("$name.xs"); - $self->{'C'} = ["$name.c"]; - # The next two lines to make MacPerl Happy -- dankogai via pudge - $self->{SOURCE} .= " $name.c" - if $^O eq 'MacOS' && $self->{SOURCE} !~ /\b$name\.c\b/; - # $self->{'H'} = [$self->catfile($self->updir,'encode.h')]; - my %xs; - foreach my $table (keys %tables) { - push (@{$self->{'C'}},"$table.c"); - # Do NOT add $table.h etc. to H_FILES unless we own up as to how they - # get built. - foreach my $ext (qw($(OBJ_EXT) .c .h .exh .fnm)) { - push (@files,$table.$ext); - } - } - $self->{'XS'} = { "$name.xs" => "$name.c" }; - $self->{'clean'}{'FILES'} .= join(' ',@files); - open(XS,">$name.xs") || die "Cannot open $name.xs:$!"; - print XS <<'END'; -#include <EXTERN.h> -#include <perl.h> -#include <XSUB.h> -#define U8 U8 -#include "encode.h" -END - foreach my $table (keys %tables) { - print XS qq[#include "${table}.h"\n]; - } - print XS <<"END"; - -static void -Encode_XSEncoding(pTHX_ encode_t *enc) -{ - dSP; - HV *stash = gv_stashpv("Encode::XS", TRUE); - SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))),stash); - int i = 0; - PUSHMARK(sp); - XPUSHs(sv); - while (enc->name[i]) - { - const char *name = enc->name[i++]; - XPUSHs(sv_2mortal(newSVpvn(name,strlen(name)))); - } - PUTBACK; - call_pv("Encode::define_encoding",G_DISCARD); - SvREFCNT_dec(sv); -} - -MODULE = Encode::$name PACKAGE = Encode::$name -PROTOTYPES: DISABLE -BOOT: -{ -END - foreach my $table (keys %tables) { - print XS qq[#include "${table}.exh"\n]; - } - print XS "}\n"; - close(XS); - return "# Built $name.xs\n\n"; -} - -sub postamble -{ - my $self = shift; - my $dir = "."; # $self->catdir('Encode'); - my $str = "# $name\$(OBJ_EXT) depends on .h and .exh files not .c files - but all written by enc2xs\n"; - $str .= "$name.c : $name.xs "; - foreach my $table (keys %tables) - { - $str .= " $table.c"; - } - $str .= "\n\n"; - $str .= "$name\$(OBJ_EXT) : $name.c\n\n"; - - foreach my $table (keys %tables) - { - my $numlines = 1; - my $lengthsofar = length($str); - my $continuator = ''; - $str .= "$table.c : Makefile.PL"; - foreach my $file (@{$tables{$table}}) - { - $str .= $continuator.' '.$self->catfile($dir,$file); - if ( length($str)-$lengthsofar > 128*$numlines ) - { - $continuator .= " \\\n\t"; - $numlines++; - } else { - $continuator = ''; - } - } - my $plib = $self->{PERL_CORE} ? '"-I$(PERL_LIB)"' : ''; - my $ucopts = '-"Q"'; - $str .= - qq{\n\t\$(PERL) $plib $enc2xs $ucopts -o \$\@ -f $table.fnm\n\n}; - open (FILELIST, ">$table.fnm") - || die "Could not open $table.fnm: $!"; - foreach my $file (@{$tables{$table}}) - { - print FILELIST $self->catfile($dir,$file) . "\n"; - } - close(FILELIST); - } - return $str; -} - diff --git a/Master/tlpkg/tlperl.old/lib/Encode/PerlIO.pod b/Master/tlpkg/tlperl.old/lib/Encode/PerlIO.pod deleted file mode 100644 index abd1f2d10a1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/PerlIO.pod +++ /dev/null @@ -1,167 +0,0 @@ -=head1 NAME - -Encode::PerlIO -- a detailed document on Encode and PerlIO - -=head1 Overview - -It is very common to want to do encoding transformations when -reading or writing files, network connections, pipes etc. -If Perl is configured to use the new 'perlio' IO system then -C<Encode> provides a "layer" (see L<PerlIO>) which can transform -data as it is read or written. - -Here is how the blind poet would modernise the encoding: - - use Encode; - open(my $iliad,'<:encoding(iso-8859-7)','iliad.greek'); - open(my $utf8,'>:utf8','iliad.utf8'); - my @epic = <$iliad>; - print $utf8 @epic; - close($utf8); - close($illiad); - -In addition, the new IO system can also be configured to read/write -UTF-8 encoded characters (as noted above, this is efficient): - - open(my $fh,'>:utf8','anything'); - print $fh "Any \x{0021} string \N{SMILEY FACE}\n"; - -Either of the above forms of "layer" specifications can be made the default -for a lexical scope with the C<use open ...> pragma. See L<open>. - -Once a handle is open, its layers can be altered using C<binmode>. - -Without any such configuration, or if Perl itself is built using the -system's own IO, then write operations assume that the file handle -accepts only I<bytes> and will C<die> if a character larger than 255 is -written to the handle. When reading, each octet from the handle becomes -a byte-in-a-character. Note that this default is the same behaviour -as bytes-only languages (including Perl before v5.6) would have, -and is sufficient to handle native 8-bit encodings e.g. iso-8859-1, -EBCDIC etc. and any legacy mechanisms for handling other encodings -and binary data. - -In other cases, it is the program's responsibility to transform -characters into bytes using the API above before doing writes, and to -transform the bytes read from a handle into characters before doing -"character operations" (e.g. C<lc>, C</\W+/>, ...). - -You can also use PerlIO to convert larger amounts of data you don't -want to bring into memory. For example, to convert between ISO-8859-1 -(Latin 1) and UTF-8 (or UTF-EBCDIC in EBCDIC machines): - - open(F, "<:encoding(iso-8859-1)", "data.txt") or die $!; - open(G, ">:utf8", "data.utf") or die $!; - while (<F>) { print G } - - # Could also do "print G <F>" but that would pull - # the whole file into memory just to write it out again. - -More examples: - - open(my $f, "<:encoding(cp1252)") - open(my $g, ">:encoding(iso-8859-2)") - open(my $h, ">:encoding(latin9)") # iso-8859-15 - -See also L<encoding> for how to change the default encoding of the -data in your script. - -=head1 How does it work? - -Here is a crude diagram of how filehandle, PerlIO, and Encode -interact. - - filehandle <-> PerlIO PerlIO <-> scalar (read/printed) - \ / - Encode - -When PerlIO receives data from either direction, it fills a buffer -(currently with 1024 bytes) and passes the buffer to Encode. -Encode tries to convert the valid part and passes it back to PerlIO, -leaving invalid parts (usually a partial character) in the buffer. -PerlIO then appends more data to the buffer, calls Encode again, -and so on until the data stream ends. - -To do so, PerlIO always calls (de|en)code methods with CHECK set to 1. -This ensures that the method stops at the right place when it -encounters partial character. The following is what happens when -PerlIO and Encode tries to encode (from utf8) more than 1024 bytes -and the buffer boundary happens to be in the middle of a character. - - A B C .... ~ \x{3000} .... - 41 42 43 .... 7E e3 80 80 .... - <- buffer ---------------> - << encoded >>>>>>>>>> - <- next buffer ------ - -Encode converts from the beginning to \x7E, leaving \xe3 in the buffer -because it is invalid (partial character). - -Unfortunately, this scheme does not work well with escape-based -encodings such as ISO-2022-JP. - -=head1 Line Buffering - -Now let's see what happens when you try to decode from ISO-2022-JP and -the buffer ends in the middle of a character. - - JIS208-ESC \x{5f3e} - A B C .... ~ \e $ B |DAN | .... - 41 42 43 .... 7E 1b 24 41 43 46 .... - <- buffer ---------------------------> - << encoded >>>>>>>>>>>>>>>>>>>>>>> - -As you see, the next buffer begins with \x43. But \x43 is 'C' in -ASCII, which is wrong in this case because we are now in JISX 0208 -area so it has to convert \x43\x46, not \x43. Unlike utf8 and EUC, -in escape-based encodings you can't tell if a given octet is a whole -character or just part of it. - -Fortunately PerlIO also supports line buffer if you tell PerlIO to use -one instead of fixed buffer. Since ISO-2022-JP is guaranteed to revert to ASCII at the end of the line, partial -character will never happen when line buffer is used. - -To tell PerlIO to use line buffer, implement -E<gt>needs_lines method -for your encoding object. See L<Encode::Encoding> for details. - -Thanks to these efforts most encodings that come with Encode support -PerlIO but that still leaves following encodings. - - iso-2022-kr - MIME-B - MIME-Header - MIME-Q - -Fortunately iso-2022-kr is hardly used (according to Jungshik) and -MIME-* are very unlikely to be fed to PerlIO because they are for mail -headers. See L<Encode::MIME::Header> for details. - -=head2 How can I tell whether my encoding fully supports PerlIO ? - -As of this writing, any encoding whose class belongs to Encode::XS and -Encode::Unicode works. The Encode module has a C<perlio_ok> method -which you can use before applying PerlIO encoding to the filehandle. -Here is an example: - - my $use_perlio = perlio_ok($enc); - my $layer = $use_perlio ? "<:raw" : "<:encoding($enc)"; - open my $fh, $layer, $file or die "$file : $!"; - while(<$fh>){ - $_ = decode($enc, $_) unless $use_perlio; - # .... - } - -=head1 SEE ALSO - -L<Encode::Encoding>, -L<Encode::Supported>, -L<Encode::PerlIO>, -L<encoding>, -L<perlebcdic>, -L<perlfunc/open>, -L<perlunicode>, -L<utf8>, -the Perl Unicode Mailing List E<lt>perl-unicode@perl.orgE<gt> - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Encode/README.e2x b/Master/tlpkg/tlperl.old/lib/Encode/README.e2x deleted file mode 100644 index 28a31a655c2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/README.e2x +++ /dev/null @@ -1,31 +0,0 @@ -Encode::$_Name_ version 0.1 -======== - -NAME - Encode::$_Name_ - <describe encoding> - -SYNOPSIS - use Encode::$_Name_; - #<put more words here> -ABSTRACT - <fill this in> -INSTALLATION - -To install this module type the following: - - perl Makefile.PL - make - make test - make install - -DEPENDENCIES - -This module requires perl version 5.7.3 or later. - -COPYRIGHT AND LICENCE - -Copyright (C) 2002 Your Name <your@address.domain> - -This library is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - diff --git a/Master/tlpkg/tlperl.old/lib/Encode/Supported.pod b/Master/tlpkg/tlperl.old/lib/Encode/Supported.pod deleted file mode 100644 index 651f7e6ed4f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/Supported.pod +++ /dev/null @@ -1,890 +0,0 @@ -=head1 NAME - -Encode::Supported -- Encodings supported by Encode - -=head1 DESCRIPTION - -=head2 Encoding Names - -Encoding names are case insensitive. White space in names -is ignored. In addition, an encoding may have aliases. -Each encoding has one "canonical" name. The "canonical" -name is chosen from the names of the encoding by picking -the first in the following sequence (with a few exceptions). - -=over 4 - -=item * - -The name used by the Perl community. That includes 'utf8' and 'ascii'. -Unlike aliases, canonical names directly reach the method so such -frequently used words like 'utf8' don't need to do alias lookups. - -=item * - -The MIME name as defined in IETF RFCs. This includes all "iso-"s. - -=item * - -The name in the IANA registry. - -=item * - -The name used by the organization that defined it. - -=back - -In case I<de jure> canonical names differ from that of the Encode -module, they are always aliased if it ever be implemented. So you can -safely tell if a given encoding is implemented or not just by passing -the canonical name. - -Because of all the alias issues, and because in the general case -encodings have state, "Encode" uses an encoding object internally -once an operation is in progress. - -=head1 Supported Encodings - -As of Perl 5.8.0, at least the following encodings are recognized. -Note that unless otherwise specified, they are all case insensitive -(via alias) and all occurrence of spaces are replaced with '-'. -In other words, "ISO 8859 1" and "iso-8859-1" are identical. - -Encodings are categorized and implemented in several different modules -but you don't have to C<use Encode::XX> to make them available for -most cases. Encode.pm will automatically load those modules on demand. - -=head2 Built-in Encodings - -The following encodings are always available. - - Canonical Aliases Comments & References - ---------------------------------------------------------------- - ascii US-ascii ISO-646-US [ECMA] - ascii-ctrl Special Encoding - iso-8859-1 latin1 [ISO] - null Special Encoding - utf8 UTF-8 [RFC2279] - ---------------------------------------------------------------- - -I<null> and I<ascii-ctrl> are special. "null" fails for all character -so when you set fallback mode to PERLQQ, HTMLCREF or XMLCREF, ALL -CHARACTERS will fall back to character references. Ditto for -"ascii-ctrl" except for control characters. For fallback modes, see -L<Encode>. - -=head2 Encode::Unicode -- other Unicode encodings - -Unicode coding schemes other than native utf8 are supported by -Encode::Unicode, which will be autoloaded on demand. - - ---------------------------------------------------------------- - UCS-2BE UCS-2, iso-10646-1 [IANA, UC] - UCS-2LE [UC] - UTF-16 [UC] - UTF-16BE [UC] - UTF-16LE [UC] - UTF-32 [UC] - UTF-32BE UCS-4 [UC] - UTF-32LE [UC] - UTF-7 [RFC2152] - ---------------------------------------------------------------- - -To find how (UCS-2|UTF-(16|32))(LE|BE)? differ from one another, -see L<Encode::Unicode>. - -UTF-7 is a special encoding which "re-encodes" UTF-16BE into a 7-bit -encoding. It is implemented seperately by Encode::Unicode::UTF7. - -=head2 Encode::Byte -- Extended ASCII - -Encode::Byte implements most single-byte encodings except for -Symbols and EBCDIC. The following encodings are based on single-byte -encodings implemented as extended ASCII. Most of them map -\x80-\xff (upper half) to non-ASCII characters. - -=over 4 - -=item ISO-8859 and corresponding vendor mappings - -Since there are so many, they are presented in table format with -languages and corresponding encoding names by vendors. Note that -the table is sorted in order of ISO-8859 and the corresponding vendor -mappings are slightly different from that of ISO. See -L<http://czyborra.com/charsets/iso8859.html> for details. - - Lang/Regions ISO/Other Std. DOS Windows Macintosh Others - ---------------------------------------------------------------- - N. America (ASCII) cp437 AdobeStandardEncoding - cp863 (DOSCanadaF) - W. Europe iso-8859-1 cp850 cp1252 MacRoman nextstep - hp-roman8 - cp860 (DOSPortuguese) - Cntrl. Europe iso-8859-2 cp852 cp1250 MacCentralEurRoman - MacCroatian - MacRomanian - MacRumanian - Latin3[1] iso-8859-3 - Latin4[2] iso-8859-4 - Cyrillics iso-8859-5 cp855 cp1251 MacCyrillic - (See also next section) cp866 MacUkrainian - Arabic iso-8859-6 cp864 cp1256 MacArabic - cp1006 MacFarsi - Greek iso-8859-7 cp737 cp1253 MacGreek - cp869 (DOSGreek2) - Hebrew iso-8859-8 cp862 cp1255 MacHebrew - Turkish iso-8859-9 cp857 cp1254 MacTurkish - Nordics iso-8859-10 cp865 - cp861 MacIcelandic - MacSami - Thai iso-8859-11[3] cp874 MacThai - (iso-8859-12 is nonexistent. Reserved for Indics?) - Baltics iso-8859-13 cp775 cp1257 - Celtics iso-8859-14 - Latin9 [4] iso-8859-15 - Latin10 iso-8859-16 - Vietnamese viscii cp1258 MacVietnamese - ---------------------------------------------------------------- - - [1] Esperanto, Maltese, and Turkish. Turkish is now on 8859-9. - [2] Baltics. Now on 8859-10, except for Latvian. - [3] TIS 620 + Non-Breaking Space (0xA0 / U+00A0) - [4] Nicknamed Latin0; the Euro sign as well as French and Finnish - letters that are missing from 8859-1 were added. - -All cp* are also available as ibm-*, ms-*, and windows-* . See also -L<http://czyborra.com/charsets/codepages.html>. - -Macintosh encodings don't seem to be registered in such entities as -IANA. "Canonical" names in Encode are based upon Apple's Tech Note -1150. See L<http://developer.apple.com/technotes/tn/tn1150.html> -for details. - -=item KOI8 - De Facto Standard for the Cyrillic world - -Though ISO-8859 does have ISO-8859-5, the KOI8 series is far more -popular in the Net. L<Encode> comes with the following KOI charsets. -For gory details, see L<http://czyborra.com/charsets/cyrillic.html> - - ---------------------------------------------------------------- - koi8-f - koi8-r cp878 [RFC1489] - koi8-u [RFC2319] - ---------------------------------------------------------------- - -=item gsm0338 - Hentai Latin 1 - -GSM0338 is for GSM handsets. Though it shares alphanumerals with -ASCII, control character ranges and other parts are mapped very -differently, mainly to store Greek characters. There are also escape -sequences (starting with 0x1B) to cover e.g. the Euro sign. Some -special cases like a trailing 0x00 byte or a lone 0x1B byte are not -well-defined and decode() will return an empty string for them. -One possible workaround is - - $gsm =~ s/\x00\z/\x00\x00/; - $uni = decode("gsm0338", $gsm); - $uni .= "\xA0" if $gsm =~ /\x1B\z/; - -Note that the Encode implementation of GSM0338 does not implement the -reuse of Latin capital letters as Greek capital letters (for example, -the 0x5A is U+005A (LATIN CAPITAL LETTER Z), not U+0396 (GREEK CAPITAL -LETTER ZETA). - -The GSM0338 is also covered in Encode::Byte even though it is not -an "extended ASCII" encoding. - -=back - -=head2 CJK: Chinese, Japanese, Korean (Multibyte) - -Note that Vietnamese is listed above. Also read "Encoding vs Charset" -below. Also note that these are implemented in distinct modules by -countries, due to the size concerns (simplified Chinese is mapped -to 'CN', continental China, while traditional Chinese is mapped to -'TW', Taiwan). Please refer to their respective documentation pages. - -=over 4 - -=item Encode::CN -- Continental China - - Standard DOS/Win Macintosh Comment/Reference - ---------------------------------------------------------------- - euc-cn [1] MacChineseSimp - (gbk) cp936 [2] - gb12345-raw { GB12345 without CES } - gb2312-raw { GB2312 without CES } - hz - iso-ir-165 - ---------------------------------------------------------------- - - [1] GB2312 is aliased to this. See L<Microsoft-related naming mess> - [2] gbk is aliased to this. See L<Microsoft-related naming mess> - -=item Encode::JP -- Japan - - Standard DOS/Win Macintosh Comment/Reference - ---------------------------------------------------------------- - euc-jp - shiftjis cp932 macJapanese - 7bit-jis - iso-2022-jp [RFC1468] - iso-2022-jp-1 [RFC2237] - jis0201-raw { JIS X 0201 (roman + halfwidth kana) without CES } - jis0208-raw { JIS X 0208 (Kanji + fullwidth kana) without CES } - jis0212-raw { JIS X 0212 (Extended Kanji) without CES } - ---------------------------------------------------------------- - -=item Encode::KR -- Korea - - Standard DOS/Win Macintosh Comment/Reference - ---------------------------------------------------------------- - euc-kr MacKorean [RFC1557] - cp949 [1] - iso-2022-kr [RFC1557] - johab [KS X 1001:1998, Annex 3] - ksc5601-raw { KSC5601 without CES } - ---------------------------------------------------------------- - - [1] ks_c_5601-1987, (x-)?windows-949, and uhc are aliased to this. - See below. - -=item Encode::TW -- Taiwan - - Standard DOS/Win Macintosh Comment/Reference - ---------------------------------------------------------------- - big5-eten cp950 MacChineseTrad {big5 aliased to big5-eten} - big5-hkscs - ---------------------------------------------------------------- - -=item Encode::HanExtra -- More Chinese via CPAN - -Due to the size concerns, additional Chinese encodings below are -distributed separately on CPAN, under the name Encode::HanExtra. - - Standard DOS/Win Macintosh Comment/Reference - ---------------------------------------------------------------- - big5ext CMEX's Big5e Extension - big5plus CMEX's Big5+ Extension - cccii Chinese Character Code for Information Interchange - euc-tw EUC (Extended Unix Character) - gb18030 GBK with Traditional Characters - ---------------------------------------------------------------- - -=item Encode::JIS2K -- JIS X 0213 encodings via CPAN - -Due to size concerns, additional Japanese encodings below are -distributed separately on CPAN, under the name Encode::JIS2K. - - Standard DOS/Win Macintosh Comment/Reference - ---------------------------------------------------------------- - euc-jisx0213 - shiftjisx0123 - iso-2022-jp-3 - jis0213-1-raw - jis0213-2-raw - ---------------------------------------------------------------- - -=back - -=head2 Miscellaneous encodings - -=over 4 - -=item Encode::EBCDIC - -See L<perlebcdic> for details. - - ---------------------------------------------------------------- - cp37 - cp500 - cp875 - cp1026 - cp1047 - posix-bc - ---------------------------------------------------------------- - -=item Encode::Symbols - -For symbols and dingbats. - - ---------------------------------------------------------------- - symbol - dingbats - MacDingbats - AdobeZdingbat - AdobeSymbol - ---------------------------------------------------------------- - -=item Encode::MIME::Header - -Strictly speaking, MIME header encoding documented in RFC 2047 is more -of encapsulation than encoding. However, their support in modern -world is imperative so they are supported. - - ---------------------------------------------------------------- - MIME-Header [RFC2047] - MIME-B [RFC2047] - MIME-Q [RFC2047] - ---------------------------------------------------------------- - -=item Encode::Guess - -This one is not a name of encoding but a utility that lets you pick up -the most appropriate encoding for a data out of given I<suspects>. See -L<Encode::Guess> for details. - -=back - -=head1 Unsupported encodings - -The following encodings are not supported as yet; some because they -are rarely used, some because of technical difficulties. They may -be supported by external modules via CPAN in the future, however. - -=over 4 - -=item ISO-2022-JP-2 [RFC1554] - -Not very popular yet. Needs Unicode Database or equivalent to -implement encode() (because it includes JIS X 0208/0212, KSC5601, and -GB2312 simultaneously, whose code points in Unicode overlap. So you -need to lookup the database to determine to what character set a given -Unicode character should belong). - -=item ISO-2022-CN [RFC1922] - -Not very popular. Needs CNS 11643-1 and -2 which are not available in -this module. CNS 11643 is supported (via euc-tw) in Encode::HanExtra. -Autrijus Tang may add support for this encoding in his module in future. - -=item Various HP-UX encodings - -The following are unsupported due to the lack of mapping data. - - '8' - arabic8, greek8, hebrew8, kana8, thai8, and turkish8 - '15' - japanese15, korean15, and roi15 - -=item Cyrillic encoding ISO-IR-111 - -Anton Tagunov doubts its usefulness. - -=item ISO-8859-8-1 [Hebrew] - -None of the Encode team knows Hebrew enough (ISO-8859-8, cp1255 and -MacHebrew are supported because and just because there were mappings -available at L<http://www.unicode.org/>). Contributions welcome. - -=item ISIRI 3342, Iran System, ISIRI 2900 [Farsi] - -Ditto. - -=item Thai encoding TCVN - -Ditto. - -=item Vietnamese encodings VPS - -Though Jungshik Shin has reported that Mozilla supports this encoding, -it was too late before 5.8.0 for us to add it. In the future, it -may be available via a separate module. See -L<http://lxr.mozilla.org/seamonkey/source/intl/uconv/ucvlatin/vps.uf> -and -L<http://lxr.mozilla.org/seamonkey/source/intl/uconv/ucvlatin/vps.ut> -if you are interested in helping us. - -=item Various Mac encodings - -The following are unsupported due to the lack of mapping data. - - MacArmenian, MacBengali, MacBurmese, MacEthiopic - MacExtArabic, MacGeorgian, MacKannada, MacKhmer - MacLaotian, MacMalayalam, MacMongolian, MacOriya - MacSinhalese, MacTamil, MacTelugu, MacTibetan - MacVietnamese - -The rest which are already available are based upon the vendor mappings -at L<http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/> . - -=item (Mac) Indic encodings - -The maps for the following are available at L<http://www.unicode.org/> -but remain unsupport because those encodings need algorithmical -approach, currently unsupported by F<enc2xs>: - - MacDevanagari - MacGurmukhi - MacGujarati - -For details, please see C<Unicode mapping issues and notes:> at -L<http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/DEVANAGA.TXT> . - -I believe this issue is prevalent not only for Mac Indics but also in -other Indic encodings, but the above were the only Indic encodings -maps that I could find at L<http://www.unicode.org/> . - -=back - -=head1 Encoding vs. Charset -- terminology - -We are used to using the term (character) I<encoding> and I<character -set> interchangeably. But just as confusing the terms byte and -character is dangerous and the terms should be differentiated when -needed, we need to differentiate I<encoding> and I<character set>. - -To understand that, here is a description of how we make computers -grok our characters. - -=over 4 - -=item * - -First we start with which characters to include. We call this -collection of characters I<character repertoire>. - -=item * - -Then we have to give each character a unique ID so your computer can -tell the difference between 'a' and 'A'. This itemized character -repertoire is now a I<character set>. - -=item * - -If your computer can grow the character set without further -processing, you can go ahead and use it. This is called a I<coded -character set> (CCS) or I<raw character encoding>. ASCII is used this -way for most cases. - -=item * - -But in many cases, especially multi-byte CJK encodings, you have to -tweak a little more. Your network connection may not accept any data -with the Most Significant Bit set, and your computer may not be able to -tell if a given byte is a whole character or just half of it. So you -have to I<encode> the character set to use it. - -A I<character encoding scheme> (CES) determines how to encode a given -character set, or a set of multiple character sets. 7bit ISO-2022 is -an example of a CES. You switch between character sets via I<escape -sequences>. - -=back - -Technically, or mathematically, speaking, a character set encoded in -such a CES that maps character by character may form a CCS. EUC is such -an example. The CES of EUC is as follows: - -=over 4 - -=item * - -Map ASCII unchanged. - -=item * - -Map such a character set that consists of 94 or 96 powered by N -members by adding 0x80 to each byte. - -=item * - -You can also use 0x8e and 0x8f to indicate that the following sequence of -characters belongs to yet another character set. To each following byte -is added the value 0x80. - -=back - -By carefully looking at the encoded byte sequence, you can find that the -byte sequence conforms a unique number. In that sense, EUC is a CCS -generated by a CES above from up to four CCS (complicated?). UTF-8 -falls into this category. See L<perlUnicode/"UTF-8"> to find out how -UTF-8 maps Unicode to a byte sequence. - -You may also have found out by now why 7bit ISO-2022 cannot comprise -a CCS. If you look at a byte sequence \x21\x21, you can't tell if -it is two !'s or IDEOGRAPHIC SPACE. EUC maps the latter to \xA1\xA1 -so you have no trouble differentiating between "!!". and S<" ">. - -=head1 Encoding Classification (by Anton Tagunov and Dan Kogai) - -This section tries to classify the supported encodings by their -applicability for information exchange over the Internet and to -choose the most suitable aliases to name them in the context of -such communication. - -=over 4 - -=item * - -To (en|de)code encodings marked by C<(**)>, you need -C<Encode::HanExtra>, available from CPAN. - -=back - -Encoding names - - US-ASCII UTF-8 ISO-8859-* KOI8-R - Shift_JIS EUC-JP ISO-2022-JP ISO-2022-JP-1 - EUC-KR Big5 GB2312 - -are registered with IANA as preferred MIME names and may -be used over the Internet. - -C<Shift_JIS> has been officialized by JIS X 0208:1997. -L<Microsoft-related naming mess> gives details. - -C<GB2312> is the IANA name for C<EUC-CN>. -See L<Microsoft-related naming mess> for details. - -C<GB_2312-80> I<raw> encoding is available as C<gb2312-raw> -with Encode. See L<Encode::CN> for details. - - EUC-CN - KOI8-U [RFC2319] - -have not been registered with IANA (as of March 2002) but -seem to be supported by major web browsers. -The IANA name for C<EUC-CN> is C<GB2312>. - - KS_C_5601-1987 - -is heavily misused. -See L<Microsoft-related naming mess> for details. - -C<KS_C_5601-1987> I<raw> encoding is available as C<kcs5601-raw> -with Encode. See L<Encode::KR> for details. - - UTF-16 UTF-16BE UTF-16LE - -are IANA-registered C<charset>s. See [RFC 2781] for details. -Jungshik Shin reports that UTF-16 with a BOM is well accepted -by MS IE 5/6 and NS 4/6. Beware however that - -=over 4 - -=item * - -C<UTF-16> support in any software you're going to be -using/interoperating with has probably been less tested -then C<UTF-8> support - -=item * - -C<UTF-8> coded data seamlessly passes traditional -command piping (C<cat>, C<more>, etc.) while C<UTF-16> coded -data is likely to cause confusion (with its zero bytes, -for example) - -=item * - -it is beyond the power of words to describe the way HTML browsers -encode non-C<ASCII> form data. To get a general impression, visit -L<http://ppewww.ph.gla.ac.uk/~flavell/charset/form-i18n.html>. -While encoding of form data has stabilized for C<UTF-8> encoded pages -(at least IE 5/6, NS 6, and Opera 6 behave consistently), be sure to -expect fun (and cross-browser discrepancies) with C<UTF-16> encoded -pages! - -=back - -The rule of thumb is to use C<UTF-8> unless you know what -you're doing and unless you really benefit from using C<UTF-16>. - - ISO-IR-165 [RFC1345] - VISCII - GB 12345 - GB 18030 (**) (see links bellow) - EUC-TW (**) - -are totally valid encodings but not registered at IANA. -The names under which they are listed here are probably the -most widely-known names for these encodings and are recommended -names. - - BIG5PLUS (**) - -is a proprietary name. - -=head2 Microsoft-related naming mess - -Microsoft products misuse the following names: - -=over 4 - -=item KS_C_5601-1987 - -Microsoft extension to C<EUC-KR>. - -Proper names: C<CP949>, C<UHC>, C<x-windows-949> (as used by Mozilla). - -See L<http://lists.w3.org/Archives/Public/ietf-charsets/2001AprJun/0033.html> -for details. - -Encode aliases C<KS_C_5601-1987> to C<cp949> to reflect this common -misusage. I<Raw> C<KS_C_5601-1987> encoding is available as -C<kcs5601-raw>. - -See L<Encode::KR> for details. - -=item GB2312 - -Microsoft extension to C<EUC-CN>. - -Proper names: C<CP936>, C<GBK>. - -C<GB2312> has been registered in the C<EUC-CN> meaning at -IANA. This has partially repaired the situation: Microsoft's -C<GB2312> has become a superset of the official C<GB2312>. - -Encode aliases C<GB2312> to C<euc-cn> in full agreement with -IANA registration. C<cp936> is supported separately. -I<Raw> C<GB_2312-80> encoding is available as C<gb2312-raw>. - -See L<Encode::CN> for details. - -=item Big5 - -Microsoft extension to C<Big5>. - -Proper name: C<CP950>. - -Encode separately supports C<Big5> and C<cp950>. - -=item Shift_JIS - -Microsoft's understanding of C<Shift_JIS>. - -JIS has not endorsed the full Microsoft standard however. -The official C<Shift_JIS> includes only JIS X 0201 and JIS X 0208 -character sets, while Microsoft has always used C<Shift_JIS> -to encode a wider character repertoire. See C<IANA> registration for -C<Windows-31J>. - -As a historical predecessor, Microsoft's variant -probably has more rights for the name, though it may be objected -that Microsoft shouldn't have used JIS as part of the name -in the first place. - -Unambiguous name: C<CP932>. C<IANA> name (also used by Mozilla, and -provided as an alias by Encode): C<Windows-31J>. - -Encode separately supports C<Shift_JIS> and C<cp932>. - -=back - -=head1 Glossary - -=over 4 - -=item character repertoire - -A collection of unique characters. A I<character> set in the strictest -sense. At this stage, characters are not numbered. - -=item coded character set (CCS) - -A character set that is mapped in a way computers can use directly. -Many character encodings, including EUC, fall in this category. - -=item character encoding scheme (CES) - -An algorithm to map a character set to a byte sequence. You don't -have to be able to tell which character set a given byte sequence -belongs. 7-bit ISO-2022 is a CES but it cannot be a CCS. EUC is an -example of being both a CCS and CES. - -=item charset (in MIME context) - -has long been used in the meaning of C<encoding>, CES. - -While the word combination C<character set> has lost this meaning -in MIME context since [RFC 2130], the C<charset> abbreviation has -retained it. This is how [RFC 2277] and [RFC 2278] bless C<charset>: - - This document uses the term "charset" to mean a set of rules for - mapping from a sequence of octets to a sequence of characters, such - as the combination of a coded character set and a character encoding - scheme; this is also what is used as an identifier in MIME "charset=" - parameters, and registered in the IANA charset registry ... (Note - that this is NOT a term used by other standards bodies, such as ISO). - [RFC 2277] - -=item EUC - -Extended Unix Character. See ISO-2022. - -=item ISO-2022 - -A CES that was carefully designed to coexist with ASCII. There are a 7 -bit version and an 8 bit version. - -The 7 bit version switches character set via escape sequence so it -cannot form a CCS. Since this is more difficult to handle in programs -than the 8 bit version, the 7 bit version is not very popular except for -iso-2022-jp, the I<de facto> standard CES for e-mails. - -The 8 bit version can form a CCS. EUC and ISO-8859 are two examples -thereof. Pre-5.6 perl could use them as string literals. - -=item UCS - -Short for I<Universal Character Set>. When you say just UCS, it means -I<Unicode>. - -=item UCS-2 - -ISO/IEC 10646 encoding form: Universal Character Set coded in two -octets. - -=item Unicode - -A character set that aims to include all character repertoires of the -world. Many character sets in various national as well as industrial -standards have become, in a way, just subsets of Unicode. - -=item UTF - -Short for I<Unicode Transformation Format>. Determines how to map a -Unicode character into a byte sequence. - -=item UTF-16 - -A UTF in 16-bit encoding. Can either be in big endian or little -endian. The big endian version is called UTF-16BE (equal to UCS-2 + -surrogate support) and the little endian version is called UTF-16LE. - -=back - -=head1 See Also - -L<Encode>, -L<Encode::Byte>, -L<Encode::CN>, L<Encode::JP>, L<Encode::KR>, L<Encode::TW>, -L<Encode::EBCDIC>, L<Encode::Symbol> -L<Encode::MIME::Header>, L<Encode::Guess> - -=head1 References - -=over 4 - -=item ECMA - -European Computer Manufacturers Association -L<http://www.ecma.ch> - -=over 4 - -=item ECMA-035 (eq C<ISO-2022>) - -L<http://www.ecma.ch/ecma1/STAND/ECMA-035.HTM> - -The specification of ISO-2022 is available from the link above. - -=back - -=item IANA - -Internet Assigned Numbers Authority -L<http://www.iana.org/> - -=over 4 - -=item Assigned Charset Names by IANA - -L<http://www.iana.org/assignments/character-sets> - -Most of the C<canonical names> in Encode derive from this list -so you can directly apply the string you have extracted from MIME -header of mails and web pages. - -=back - -=item ISO - -International Organization for Standardization -L<http://www.iso.ch/> - -=item RFC - -Request For Comments -- need I say more? -L<http://www.rfc-editor.org/>, L<http://www.rfc.net/>, -L<http://www.faqs.org/rfcs/> - -=item UC - -Unicode Consortium -L<http://www.unicode.org/> - -=over 4 - -=item Unicode Glossary - -L<http://www.unicode.org/glossary/> - -The glossary of this document is based upon this site. - -=back - -=back - -=head2 Other Notable Sites - -=over 4 - -=item czyborra.com - -L<http://czyborra.com/> - -Contains a lot of useful information, especially gory details of ISO -vs. vendor mappings. - -=item CJK.inf - -L<http://www.oreilly.com/people/authors/lunde/cjk_inf.html> - -Somewhat obsolete (last update in 1996), but still useful. Also try - -L<ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/pdf/GB18030_Summary.pdf> - -You will find brief info on C<EUC-CN>, C<GBK> and mostly on C<GB 18030>. - -=item Jungshik Shin's Hangul FAQ - -L<http://jshin.net/faq> - -And especially its subject 8. - -L<http://jshin.net/faq/qa8.html> - -A comprehensive overview of the Korean (C<KS *>) standards. - -=item debian.org: "Introduction to i18n" - -A brief description for most of the mentioned CJK encodings is -contained in -L<http://www.debian.org/doc/manuals/intro-i18n/ch-codes.en.html> - -=back - -=head2 Offline sources - -=over 4 - -=item C<CJKV Information Processing> by Ken Lunde - -CJKV Information Processing -1999 O'Reilly & Associates, ISBN : 1-56592-224-7 - -The modern successor of C<CJK.inf>. - -Features a comprehensive coverage of CJKV character sets and -encodings along with many other issues faced by anyone trying -to better support CJKV languages/scripts in all the areas of -information processing. - -To purchase this book, visit -L<http://www.oreilly.com/catalog/cjkvinfo/> -or your favourite bookstore. - -=back - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/Symbol.pm b/Master/tlpkg/tlperl.old/lib/Encode/Symbol.pm deleted file mode 100644 index 7ad8ca92c7d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/Symbol.pm +++ /dev/null @@ -1,42 +0,0 @@ -package Encode::Symbol; -use Encode; -our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use XSLoader; -XSLoader::load(__PACKAGE__,$VERSION); - -1; -__END__ - -=head1 NAME - -Encode::Symbol - Symbol Encodings - -=head1 SYNOPSIS - - use Encode qw/encode decode/; - $symbol = encode("symbol", $utf8); # loads Encode::Symbol implicitly - $utf8 = decode("", $symbol); # ditto - -=head1 ABSTRACT - -This module implements symbol and dingbats encodings. Encodings -supported are as follows. - - Canonical Alias Description - -------------------------------------------------------------------- - symbol - dingbats - AdobeZDingbat - AdobeSymbol - MacDingbats - -=head1 DESCRIPTION - -To find out how to use this module in detail, see L<Encode>. - -=head1 SEE ALSO - -L<Encode> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/TW.pm b/Master/tlpkg/tlperl.old/lib/Encode/TW.pm deleted file mode 100644 index 2e1abc0c7f9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/TW.pm +++ /dev/null @@ -1,78 +0,0 @@ -package Encode::TW; -BEGIN { - if (ord("A") == 193) { - die "Encode::TW not supported on EBCDIC\n"; - } -} -our $VERSION = do { my @r = (q$Revision: 2.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use Encode; -use XSLoader; -XSLoader::load(__PACKAGE__,$VERSION); - -1; -__END__ - -=head1 NAME - -Encode::TW - Taiwan-based Chinese Encodings - -=head1 SYNOPSIS - - use Encode qw/encode decode/; - $big5 = encode("big5", $utf8); # loads Encode::TW implicitly - $utf8 = decode("big5", $big5); # ditto - -=head1 DESCRIPTION - -This module implements tradition Chinese charset encodings as used -in Taiwan and Hong Kong. -Encodings supported are as follows. - - Canonical Alias Description - -------------------------------------------------------------------- - big5-eten /\bbig-?5$/i Big5 encoding (with ETen extensions) - /\bbig5-?et(en)?$/i - /\btca-?big5$/i - big5-hkscs /\bbig5-?hk(scs)?$/i - /\bhk(scs)?-?big5$/i - Big5 + Cantonese characters in Hong Kong - MacChineseTrad Big5 + Apple Vendor Mappings - cp950 Code Page 950 - = Big5 + Microsoft vendor mappings - -------------------------------------------------------------------- - -To find out how to use this module in detail, see L<Encode>. - -=head1 NOTES - -Due to size concerns, C<EUC-TW> (Extended Unix Character), C<CCCII> -(Chinese Character Code for Information Interchange), C<BIG5PLUS> -(CMEX's Big5+) and C<BIG5EXT> (CMEX's Big5e) are distributed separately -on CPAN, under the name L<Encode::HanExtra>. That module also contains -extra China-based encodings. - -=head1 BUGS - -Since the original C<big5> encoding (1984) is not supported anywhere -(glibc and DOS-based systems uses C<big5> to mean C<big5-eten>; Microsoft -uses C<big5> to mean C<cp950>), a conscious decision was made to alias -C<big5> to C<big5-eten>, which is the de facto superset of the original -big5. - -The C<CNS11643> encoding files are not complete. For common C<CNS11643> -manipulation, please use C<EUC-TW> in L<Encode::HanExtra>, which contains -planes 1-7. - -The ASCII region (0x00-0x7f) is preserved for all encodings, even -though this conflicts with mappings by the Unicode Consortium. See - -L<http://www.debian.or.jp/~kubota/unicode-symbols.html.en> - -to find out why it is implemented that way. - -=head1 SEE ALSO - -L<Encode> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/Unicode.pm b/Master/tlpkg/tlperl.old/lib/Encode/Unicode.pm deleted file mode 100644 index 4d0c31d82d3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/Unicode.pm +++ /dev/null @@ -1,268 +0,0 @@ -package Encode::Unicode; - -use strict; -use warnings; -no warnings 'redefine'; - -our $VERSION = do { my @r = (q$Revision: 2.2 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; - -use XSLoader; -XSLoader::load(__PACKAGE__,$VERSION); - -# -# Object Generator 8 transcoders all at once! -# - -require Encode; - -our %BOM_Unknown = map {$_ => 1} qw(UTF-16 UTF-32); - -for my $name (qw(UTF-16 UTF-16BE UTF-16LE - UTF-32 UTF-32BE UTF-32LE - UCS-2BE UCS-2LE)) -{ - my ($size, $endian, $ucs2, $mask); - $name =~ /^(\w+)-(\d+)(\w*)$/o; - if ($ucs2 = ($1 eq 'UCS')){ - $size = 2; - }else{ - $size = $2/8; - } - $endian = ($3 eq 'BE') ? 'n' : ($3 eq 'LE') ? 'v' : '' ; - $size == 4 and $endian = uc($endian); - - $Encode::Encoding{$name} = - bless { - Name => $name, - size => $size, - endian => $endian, - ucs2 => $ucs2, - } => __PACKAGE__; -} - -use base qw(Encode::Encoding); - -sub renew { - my $self = shift; - $BOM_Unknown{$self->name} or return $self; - my $clone = bless { %$self } => ref($self); - $clone->{renewed}++; # so the caller knows it is renewed. - return $clone; -} - -# There used to be a perl implemntation of (en|de)code but with -# XS version is ripe, perl version is zapped for optimal speed - -*decode = \&decode_xs; -*encode = \&encode_xs; - -1; -__END__ - -=head1 NAME - -Encode::Unicode -- Various Unicode Transformation Formats - -=cut - -=head1 SYNOPSIS - - use Encode qw/encode decode/; - $ucs2 = encode("UCS-2BE", $utf8); - $utf8 = decode("UCS-2BE", $ucs2); - -=head1 ABSTRACT - -This module implements all Character Encoding Schemes of Unicode that -are officially documented by Unicode Consortium (except, of course, -for UTF-8, which is a native format in perl). - -=over 4 - -=item L<http://www.unicode.org/glossary/> says: - -I<Character Encoding Scheme> A character encoding form plus byte -serialization. There are Seven character encoding schemes in Unicode: -UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32 (UCS-4), UTF-32BE (UCS-4BE) and -UTF-32LE (UCS-4LE), and UTF-7. - -Since UTF-7 is a 7-bit (re)encoded version of UTF-16BE, It is not part of -Unicode's Character Encoding Scheme. It is separately implemented in -Encode::Unicode::UTF7. For details see L<Encode::Unicode::UTF7>. - -=item Quick Reference - - Decodes from ord(N) Encodes chr(N) to... - octet/char BOM S.P d800-dfff ord > 0xffff \x{1abcd} == - ---------------+-----------------+------------------------------ - UCS-2BE 2 N N is bogus Not Available - UCS-2LE 2 N N bogus Not Available - UTF-16 2/4 Y Y is S.P S.P BE/LE - UTF-16BE 2/4 N Y S.P S.P 0xd82a,0xdfcd - UTF-16LE 2 N Y S.P S.P 0x2ad8,0xcddf - UTF-32 4 Y - is bogus As is BE/LE - UTF-32BE 4 N - bogus As is 0x0001abcd - UTF-32LE 4 N - bogus As is 0xcdab0100 - UTF-8 1-4 - - bogus >= 4 octets \xf0\x9a\af\8d - ---------------+-----------------+------------------------------ - -=back - -=head1 Size, Endianness, and BOM - -You can categorize these CES by 3 criteria: size of each character, -endianness, and Byte Order Mark. - -=head2 by size - -UCS-2 is a fixed-length encoding with each character taking 16 bits. -It B<does not> support I<surrogate pairs>. When a surrogate pair -is encountered during decode(), its place is filled with \x{FFFD} -if I<CHECK> is 0, or the routine croaks if I<CHECK> is 1. When a -character whose ord value is larger than 0xFFFF is encountered, -its place is filled with \x{FFFD} if I<CHECK> is 0, or the routine -croaks if I<CHECK> is 1. - -UTF-16 is almost the same as UCS-2 but it supports I<surrogate pairs>. -When it encounters a high surrogate (0xD800-0xDBFF), it fetches the -following low surrogate (0xDC00-0xDFFF) and C<desurrogate>s them to -form a character. Bogus surrogates result in death. When \x{10000} -or above is encountered during encode(), it C<ensurrogate>s them and -pushes the surrogate pair to the output stream. - -UTF-32 (UCS-4) is a fixed-length encoding with each character taking 32 bits. -Since it is 32-bit, there is no need for I<surrogate pairs>. - -=head2 by endianness - -The first (and now failed) goal of Unicode was to map all character -repertoires into a fixed-length integer so that programmers are happy. -Since each character is either a I<short> or I<long> in C, you have to -pay attention to the endianness of each platform when you pass data -to one another. - -Anything marked as BE is Big Endian (or network byte order) and LE is -Little Endian (aka VAX byte order). For anything not marked either -BE or LE, a character called Byte Order Mark (BOM) indicating the -endianness is prepended to the string. - -CAVEAT: Though BOM in utf8 (\xEF\xBB\xBF) is valid, it is meaningless -and as of this writing Encode suite just leave it as is (\x{FeFF}). - -=over 4 - -=item BOM as integer when fetched in network byte order - - 16 32 bits/char - ------------------------- - BE 0xFeFF 0x0000FeFF - LE 0xFFeF 0xFFFe0000 - ------------------------- - -=back - -This modules handles the BOM as follows. - -=over 4 - -=item * - -When BE or LE is explicitly stated as the name of encoding, BOM is -simply treated as a normal character (ZERO WIDTH NO-BREAK SPACE). - -=item * - -When BE or LE is omitted during decode(), it checks if BOM is at the -beginning of the string; if one is found, the endianness is set to -what the BOM says. If no BOM is found, the routine dies. - -=item * - -When BE or LE is omitted during encode(), it returns a BE-encoded -string with BOM prepended. So when you want to encode a whole text -file, make sure you encode() the whole text at once, not line by line -or each line, not file, will have a BOM prepended. - -=item * - -C<UCS-2> is an exception. Unlike others, this is an alias of UCS-2BE. -UCS-2 is already registered by IANA and others that way. - -=back - -=head1 Surrogate Pairs - -To say the least, surrogate pairs were the biggest mistake of the -Unicode Consortium. But according to the late Douglas Adams in I<The -Hitchhiker's Guide to the Galaxy> Trilogy, C<In the beginning the -Universe was created. This has made a lot of people very angry and -been widely regarded as a bad move>. Their mistake was not of this -magnitude so let's forgive them. - -(I don't dare make any comparison with Unicode Consortium and the -Vogons here ;) Or, comparing Encode to Babel Fish is completely -appropriate -- if you can only stick this into your ear :) - -Surrogate pairs were born when the Unicode Consortium finally -admitted that 16 bits were not big enough to hold all the world's -character repertoires. But they already made UCS-2 16-bit. What -do we do? - -Back then, the range 0xD800-0xDFFF was not allocated. Let's split -that range in half and use the first half to represent the C<upper -half of a character> and the second half to represent the C<lower -half of a character>. That way, you can represent 1024 * 1024 = -1048576 more characters. Now we can store character ranges up to -\x{10ffff} even with 16-bit encodings. This pair of half-character is -now called a I<surrogate pair> and UTF-16 is the name of the encoding -that embraces them. - -Here is a formula to ensurrogate a Unicode character \x{10000} and -above; - - $hi = ($uni - 0x10000) / 0x400 + 0xD800; - $lo = ($uni - 0x10000) % 0x400 + 0xDC00; - -And to desurrogate; - - $uni = 0x10000 + ($hi - 0xD800) * 0x400 + ($lo - 0xDC00); - -Note this move has made \x{D800}-\x{DFFF} into a forbidden zone but -perl does not prohibit the use of characters within this range. To perl, -every one of \x{0000_0000} up to \x{ffff_ffff} (*) is I<a character>. - - (*) or \x{ffff_ffff_ffff_ffff} if your perl is compiled with 64-bit - integer support! - -=head1 Error Checking - -Unlike most encodings which accept various ways to handle errors, -Unicode encodings simply croaks. - - % perl -MEncode -e '$_ = "\xfe\xff\xd8\xd9\xda\xdb\0\n"' \ - -e 'Encode::from_to($_, "utf16","shift_jis", 0); print' - UTF-16:Malformed LO surrogate d8d9 at /path/to/Encode.pm line 184. - % perl -MEncode -e '$a = "BOM missing"' \ - -e ' Encode::from_to($a, "utf16", "shift_jis", 0); print' - UTF-16:Unrecognised BOM 424f at /path/to/Encode.pm line 184. - -Unlike other encodings where mappings are not one-to-one against -Unicode, UTFs are supposed to map 100% against one another. So Encode -is more strict on UTFs. - -Consider that "division by zero" of Encode :) - -=head1 SEE ALSO - -L<Encode>, L<Encode::Unicode::UTF7>, L<http://www.unicode.org/glossary/>, -L<http://www.unicode.org/unicode/faq/utf_bom.html>, - -RFC 2781 L<http://rfc.net/rfc2781.html>, - -The whole Unicode standard L<http://www.unicode.org/unicode/uni2book/u2.html> - -Ch. 15, pp. 403 of C<Programming Perl (3rd Edition)> -by Larry Wall, Tom Christiansen, Jon Orwant; -O'Reilly & Associates; ISBN 0-596-00027-8 - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/Unicode/UTF7.pm b/Master/tlpkg/tlperl.old/lib/Encode/Unicode/UTF7.pm deleted file mode 100644 index dc75ce37816..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/Unicode/UTF7.pm +++ /dev/null @@ -1,118 +0,0 @@ -# -# $Id: UTF7.pm,v 2.1 2004/05/25 16:27:14 dankogai Exp $ -# -package Encode::Unicode::UTF7; -use strict; -no warnings 'redefine'; -use base qw(Encode::Encoding); -__PACKAGE__->Define('UTF-7'); -our $VERSION = do { my @r = (q$Revision: 2.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; -use MIME::Base64; -use Encode; - -# -# Algorithms taken from Unicode::String by Gisle Aas -# - -our $OPTIONAL_DIRECT_CHARS = 1; -my $specials = quotemeta "\'(),-./:?"; -$OPTIONAL_DIRECT_CHARS and - $specials .= quotemeta "!\"#$%&*;<=>@[]^_`{|}"; -# \s will not work because it matches U+3000 DEOGRAPHIC SPACE -# We use qr/[\n\r\t\ ] instead -my $re_asis = qr/(?:[\n\r\t\ A-Za-z0-9$specials])/; -my $re_encoded = qr/(?:[^\n\r\t\ A-Za-z0-9$specials])/; -my $e_utf16 = find_encoding("UTF-16BE"); - -sub needs_lines { 1 }; - -sub encode($$;$){ - my ($obj, $str, $chk) = @_; - my $len = length($str); - pos($str) = 0; - my $bytes = ''; - while (pos($str) < $len){ - if ($str =~ /\G($re_asis+)/ogc){ - $bytes .= $1; - }elsif($str =~ /\G($re_encoded+)/ogsc){ - if ($1 eq "+"){ - $bytes .= "+-"; - }else{ - my $s = $1; - my $base64 = encode_base64($e_utf16->encode($s), ''); - $base64 =~ s/=+$//; - $bytes .= "+$base64-"; - } - }else{ - die "This should not happen! (pos=" . pos($str) . ")"; - } - } - $_[1] = '' if $chk; - return $bytes; -} - -sub decode{ - my ($obj, $bytes, $chk) = @_; - my $len = length($bytes); - my $str = ""; - while (pos($bytes) < $len) { - if ($bytes =~ /\G([^+]+)/ogc) { - $str .= $1; - }elsif($bytes =~ /\G\+-/ogc) { - $str .= "+"; - }elsif($bytes =~ /\G\+([A-Za-z0-9+\/]+)-?/ogsc) { - my $base64 = $1; - my $pad = length($base64) % 4; - $base64 .= "=" x (4 - $pad) if $pad; - $str .= $e_utf16->decode(decode_base64($base64)); - }elsif($bytes =~ /\G\+/ogc) { - $^W and warn "Bad UTF7 data escape"; - $str .= "+"; - }else{ - die "This should not happen " . pos($bytes); - } - } - $_[1] = '' if $chk; - return $str; -} -1; -__END__ - -=head1 NAME - -Encode::Unicode::UTF7 -- UTF-7 encoding - -=head1 SYNOPSIS - - use Encode qw/encode decode/; - $utf7 = encode("UTF-7", $utf8); - $utf8 = decode("UTF-7", $ucs2); - -=head1 ABSTRACT - -This module implements UTF-7 encoding documented in RFC 2152. UTF-7, -as its name suggests, is a 7-bit re-encoded version of UTF-16BE. It -is designed to be MTA-safe and expected to be a standard way to -exchange Unicoded mails via mails. But with the advent of UTF-8 and -8-bit compliant MTAs, UTF-7 is hardly ever used. - -UTF-7 was not supported by Encode until version 1.95 because of that. -But Unicode::String, a module by Gisle Aas which adds Unicode supports -to non-utf8-savvy perl did support UTF-7, the UTF-7 support was added -so Encode can supersede Unicode::String 100%. - -=head1 In Practice - -When you want to encode Unicode for mails and web pages, however, do -not use UTF-7 unless you are sure your recipients and readers can -handle it. Very few MUAs and WWW Browsers support these days (only -Mozilla seems to support one). For general cases, use UTF-8 for -message body and MIME-Header for header instead. - -=head1 SEE ALSO - -L<Encode>, L<Encode::Unicode>, L<Unicode::String> - -RFC 2781 L<http://www.ietf.org/rfc/rfc2152.txt> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/_PM.e2x b/Master/tlpkg/tlperl.old/lib/Encode/_PM.e2x deleted file mode 100644 index eb59cd1b520..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/_PM.e2x +++ /dev/null @@ -1,23 +0,0 @@ -package Encode::$_Name_; -our $VERSION = "0.01"; - -use Encode; -use XSLoader; -XSLoader::load(__PACKAGE__,$VERSION); - -1; -__END__ - -=head1 NAME - -Encode::$_Name_ - New Encoding - -=head1 SYNOPSIS - -You got to fill this in! - -=head1 SEE ALSO - -L<Encode> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Encode/_T.e2x b/Master/tlpkg/tlperl.old/lib/Encode/_T.e2x deleted file mode 100644 index 6cf5f293d54..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/_T.e2x +++ /dev/null @@ -1,7 +0,0 @@ -use strict; -# Adjust the number here! -use Test::More tests => 2; - -use_ok('Encode'); -use_ok('Encode::$_Name_'); -# Add more test here! diff --git a/Master/tlpkg/tlperl.old/lib/Encode/encode.h b/Master/tlpkg/tlperl.old/lib/Encode/encode.h deleted file mode 100644 index 94764a6a14c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Encode/encode.h +++ /dev/null @@ -1,111 +0,0 @@ -#ifndef ENCODE_H -#define ENCODE_H - -#ifndef U8 -/* - A tad devious this: - perl normally has a #define for U8 - if that isn't present then we - typedef it - leaving it #ifndef so we can do data parts without - getting extern references to the code parts -*/ -typedef unsigned char U8; -#endif - -typedef struct encpage_s encpage_t; - -struct encpage_s -{ - /* fields ordered to pack nicely on 32-bit machines */ - const U8 *seq; /* Packed output sequences we generate - if we match */ - encpage_t *next; /* Page to go to if we match */ - U8 min; /* Min value of octet to match this entry */ - U8 max; /* Max value of octet to match this entry */ - U8 dlen; /* destination length - - size of entries in seq */ - U8 slen; /* source length - - number of source octets needed */ -}; - -/* - At any point in a translation there is a page pointer which points - at an array of the above structures. - - Basic operation : - get octet from source stream. - if (octet >= min && octet < max) { - if slen is 0 then we cannot represent this character. - if we have less than slen octets (including this one) then - we have a partial character. - otherwise - copy dlen octets from seq + dlen*(octet-min) to output - (dlen may be zero if we don't know yet.) - load page pointer with next to continue. - (is slen is one this is end of a character) - get next octet. - } - else { - increment the page pointer to look at next slot in the array - } - - arrays SHALL be constructed so there is an entry which matches - ..0xFF at the end, and either maps it or indicates no - representation. - - if MSB of slen is set then mapping is an approximate "FALLBACK" entry. - -*/ - - -typedef struct encode_s encode_t; -struct encode_s -{ - encpage_t *t_utf8; /* Starting table for translation from - the encoding to UTF-8 form */ - encpage_t *f_utf8; /* Starting table for translation - from UTF-8 to the encoding */ - const U8 *rep; /* Replacement character in this encoding - e.g. "?" */ - int replen; /* Number of octets in rep */ - U8 min_el; /* Minimum octets to represent a character */ - U8 max_el; /* Maximum octets to represent a character */ - const char *name[2]; /* name(s) of this encoding */ -}; - -#ifdef U8 -/* See comment at top of file for deviousness */ - -extern int do_encode(encpage_t *enc, const U8 *src, STRLEN *slen, - U8 *dst, STRLEN dlen, STRLEN *dout, int approx, - const U8 *term, STRLEN tlen); - -extern void Encode_DefineEncoding(encode_t *enc); - -#endif /* U8 */ - -#define ENCODE_NOSPACE 1 -#define ENCODE_PARTIAL 2 -#define ENCODE_NOREP 3 -#define ENCODE_FALLBACK 4 -#define ENCODE_FOUND_TERM 5 - -#define FBCHAR_UTF8 "\xEF\xBF\xBD" - -#define ENCODE_DIE_ON_ERR 0x0001 /* croaks immediately */ -#define ENCODE_WARN_ON_ERR 0x0002 /* warn on error; may proceed */ -#define ENCODE_RETURN_ON_ERR 0x0004 /* immediately returns on NOREP */ -#define ENCODE_LEAVE_SRC 0x0008 /* $src updated unless set */ -#define ENCODE_PERLQQ 0x0100 /* perlqq fallback string */ -#define ENCODE_HTMLCREF 0x0200 /* HTML character ref. fb mode */ -#define ENCODE_XMLCREF 0x0400 /* XML character ref. fb mode */ -#define ENCODE_STOP_AT_PARTIAL 0x0800 /* stop at partial explicitly */ - -#define ENCODE_FB_DEFAULT 0x0000 -#define ENCODE_FB_CROAK 0x0001 -#define ENCODE_FB_QUIET ENCODE_RETURN_ON_ERR -#define ENCODE_FB_WARN (ENCODE_RETURN_ON_ERR|ENCODE_WARN_ON_ERR) -#define ENCODE_FB_PERLQQ (ENCODE_PERLQQ|ENCODE_LEAVE_SRC) -#define ENCODE_FB_HTMLCREF (ENCODE_HTMLCREF|ENCODE_LEAVE_SRC) -#define ENCODE_FB_XMLCREF (ENCODE_XMLCREF|ENCODE_LEAVE_SRC) - -#endif /* ENCODE_H */ diff --git a/Master/tlpkg/tlperl.old/lib/Errno.pm b/Master/tlpkg/tlperl.old/lib/Errno.pm deleted file mode 100644 index 23c07ea0482..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Errno.pm +++ /dev/null @@ -1,227 +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 strict; - -$VERSION = "1.09_01"; -$VERSION = eval $VERSION; -@ISA = qw(Exporter); - -@EXPORT_OK = qw(EBADR ENOMSG ENOTSUP ESTRPIPE EADDRINUSE EL3HLT EBADF - ENOTBLK ENAVAIL ECHRNG ENOTNAM ELNRNG ENOKEY EXDEV EBADE EBADSLT - ECONNREFUSED ENOSTR ENONET EOVERFLOW EISCONN EFBIG EKEYREVOKED - ECONNRESET EWOULDBLOCK ELIBMAX EREMOTEIO ENOPKG ELIBSCN EDESTADDRREQ - ENOTSOCK EIO EMEDIUMTYPE EINPROGRESS ERANGE EAFNOSUPPORT EADDRNOTAVAIL - EINTR EREMOTE EILSEQ ENOMEM EPIPE ENETUNREACH ENODATA EUSERS - EOPNOTSUPP EPROTO EISNAM ESPIPE EALREADY ENAMETOOLONG ENOEXEC EISDIR - EBADRQC EEXIST EDOTDOT ELIBBAD EOWNERDEAD ESRCH EFAULT EXFULL - EDEADLOCK EAGAIN ENOPROTOOPT ENETDOWN EPROTOTYPE EL2NSYNC ENETRESET - EUCLEAN EADV EROFS ESHUTDOWN EMULTIHOP EPROTONOSUPPORT ENFILE ENOLCK - ECONNABORTED ECANCELED EDEADLK ESRMNT ENOLINK ETIME ENOTDIR EINVAL - ENOTTY ENOANO ELOOP ENOENT EPFNOSUPPORT EBADMSG ENOMEDIUM EL2HLT EDOM - EBFONT EKEYEXPIRED EMSGSIZE ENOCSI EL3RST ENOSPC EIDRM ENOBUFS ENOSYS - EHOSTDOWN EBADFD ENOSR ENOTCONN ESTALE EDQUOT EKEYREJECTED EMFILE - ENOTRECOVERABLE EACCES EBUSY E2BIG EPERM ELIBEXEC ETOOMANYREFS ELIBACC - ENOTUNIQ ECOMM ERESTART ESOCKTNOSUPPORT EUNATCH ETIMEDOUT ENXIO ENODEV - ETXTBSY EMLINK ECHILD EHOSTUNREACH EREMCHG 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 ENOTBLK - ENOTCONN ENOTDIR ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM - EPFNOSUPPORT EPIPE EPROTONOSUPPORT EPROTOTYPE ERANGE EREMOTE ERESTART - EROFS ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESTALE ETIMEDOUT - ETOOMANYREFS ETXTBSY 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 EWOULDBLOCK () { 11 } -sub EAGAIN () { 11 } -sub ENOMEM () { 12 } -sub EACCES () { 13 } -sub EFAULT () { 14 } -sub ENOTBLK () { 15 } -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 ETXTBSY () { 26 } -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 EDEADLOCK () { 35 } -sub EDEADLK () { 35 } -sub ENAMETOOLONG () { 36 } -sub ENOLCK () { 37 } -sub ENOSYS () { 38 } -sub ENOTEMPTY () { 39 } -sub ELOOP () { 40 } -sub ENOMSG () { 42 } -sub EIDRM () { 43 } -sub ECHRNG () { 44 } -sub EL2NSYNC () { 45 } -sub EL3HLT () { 46 } -sub EL3RST () { 47 } -sub ELNRNG () { 48 } -sub EUNATCH () { 49 } -sub ENOCSI () { 50 } -sub EL2HLT () { 51 } -sub EBADE () { 52 } -sub EBADR () { 53 } -sub EXFULL () { 54 } -sub ENOANO () { 55 } -sub EBADRQC () { 56 } -sub EBADSLT () { 57 } -sub EBFONT () { 59 } -sub ENOSTR () { 60 } -sub ENODATA () { 61 } -sub ETIME () { 62 } -sub ENOSR () { 63 } -sub ENONET () { 64 } -sub ENOPKG () { 65 } -sub EREMOTE () { 66 } -sub ENOLINK () { 67 } -sub EADV () { 68 } -sub ESRMNT () { 69 } -sub ECOMM () { 70 } -sub EPROTO () { 71 } -sub EMULTIHOP () { 72 } -sub EDOTDOT () { 73 } -sub EBADMSG () { 74 } -sub EOVERFLOW () { 75 } -sub ENOTUNIQ () { 76 } -sub EBADFD () { 77 } -sub EREMCHG () { 78 } -sub ELIBACC () { 79 } -sub ELIBBAD () { 80 } -sub ELIBSCN () { 81 } -sub ELIBMAX () { 82 } -sub ELIBEXEC () { 83 } -sub EILSEQ () { 84 } -sub ERESTART () { 85 } -sub ESTRPIPE () { 86 } -sub EUSERS () { 87 } -sub ENOTSOCK () { 88 } -sub EDESTADDRREQ () { 89 } -sub EMSGSIZE () { 90 } -sub EPROTOTYPE () { 91 } -sub ENOPROTOOPT () { 92 } -sub EPROTONOSUPPORT () { 93 } -sub ESOCKTNOSUPPORT () { 94 } -sub ENOTSUP () { 95 } -sub EOPNOTSUPP () { 95 } -sub EPFNOSUPPORT () { 96 } -sub EAFNOSUPPORT () { 97 } -sub EADDRINUSE () { 98 } -sub EADDRNOTAVAIL () { 99 } -sub ENETDOWN () { 100 } -sub ENETUNREACH () { 101 } -sub ENETRESET () { 102 } -sub ECONNABORTED () { 103 } -sub ECONNRESET () { 104 } -sub ENOBUFS () { 105 } -sub EISCONN () { 106 } -sub ENOTCONN () { 107 } -sub ESHUTDOWN () { 108 } -sub ETOOMANYREFS () { 109 } -sub ETIMEDOUT () { 110 } -sub ECONNREFUSED () { 111 } -sub EHOSTDOWN () { 112 } -sub EHOSTUNREACH () { 113 } -sub EALREADY () { 114 } -sub EINPROGRESS () { 115 } -sub ESTALE () { 116 } -sub EUCLEAN () { 117 } -sub ENOTNAM () { 118 } -sub ENAVAIL () { 119 } -sub EISNAM () { 120 } -sub EREMOTEIO () { 121 } -sub EDQUOT () { 122 } -sub ENOMEDIUM () { 123 } -sub EMEDIUMTYPE () { 124 } -sub ECANCELED () { 125 } -sub ENOKEY () { 126 } -sub EKEYEXPIRED () { 127 } -sub EKEYREVOKED () { 128 } -sub EKEYREJECTED () { 129 } -sub EOWNERDEAD () { 130 } -sub ENOTRECOVERABLE () { 131 } - -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 $r = ref $errname; - my $proto = !$r || $r eq 'CODE' ? prototype($errname) : undef; - defined($proto) && $proto eq ""; -} - -tie %!, __PACKAGE__; - -1; -__END__ - diff --git a/Master/tlpkg/tlperl.old/lib/Exporter.pm b/Master/tlpkg/tlperl.old/lib/Exporter.pm deleted file mode 100644 index d9c22049776..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Exporter.pm +++ /dev/null @@ -1,440 +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.58'; -our (%Cache); -$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); - - if ($pkg eq "Exporter" and @_ and $_[0] eq "import") { - *{$callpkg."::import"} = \&import; - return; - } - - # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-( - my($exports, $fail) = (\@{"$pkg\::EXPORT"}, \@{"$pkg\::EXPORT_FAIL"}); - return export $pkg, $callpkg, @_ - if $Verbose or $Debug or @$fail > 1; - my $export_cache = ($Cache{$pkg} ||= {}); - 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 - -or - - package YourModule; - use Exporter 'import'; # gives you Exporter's import() method directly - @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 any of the entries 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 C<@_> at all before you call export_to_level -- or people using your package will get very unexplained results! - -=head2 Exporting without inheriting from Exporter - -By including Exporter in your @ISA you inherit an Exporter's import() method -but you also inherit several other helper methods which you probably don't -want. To avoid this you can do - - package YourModule; - use Exporter qw( import ); - -which will export Exporter's own import() method into YourModule. -Everything will work as before but you won't need to include Exporter in -@YourModule::ISA. - -=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/tlpkg/tlperl.old/lib/Exporter/Heavy.pm b/Master/tlpkg/tlperl.old/lib/Exporter/Heavy.pm deleted file mode 100644 index 2cc792288f0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Exporter/Heavy.pm +++ /dev/null @@ -1,248 +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; - -=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 _rebuild_cache { - my ($pkg, $exports, $cache) = @_; - s/^&// foreach @$exports; - @{$cache}{@$exports} = (1) x @$exports; - my $ok = \@{"${pkg}::EXPORT_OK"}; - if (@$ok) { - s/^&// foreach @$ok; - @{$cache}{@$ok} = (1) x @$ok; - } -} - -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, $cache_is_current, $oops); - my($exports, $export_cache) = (\@{"${pkg}::EXPORT"}, - $Exporter::Cache{$pkg} ||= {}); - - if (@imports) { - if (!%$export_cache) { - _rebuild_cache ($pkg, $exports, $export_cache); - $cache_is_current = 1; - } - - if (grep m{^[/!:]}, @imports) { - 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 $Exporter::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}) { - # Last chance - see if they've updated EXPORT_OK since we - # cached it. - - unless ($cache_is_current) { - %$export_cache = (); - _rebuild_cache ($pkg, $exports, $export_cache); - $cache_is_current = 1; - } - - if (!$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"}, - $Exporter::FailCache{$pkg} ||= {}); - - 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 $Exporter::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 $Exporter::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/tlpkg/tlperl.old/lib/Fcntl.pm b/Master/tlpkg/tlperl.old/lib/Fcntl.pm deleted file mode 100644 index 7ef0038bd18..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Fcntl.pm +++ /dev/null @@ -1,236 +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<fcntl.h> file. -Unlike the old mechanism of requiring a translated F<fcntl.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.05"; -# 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( - DN_ACCESS - DN_ATTRIB - DN_CREATE - DN_DELETE - DN_MODIFY - DN_MULTISHOT - DN_RENAME - FAPPEND - FASYNC - FCREAT - FDEFER - FDSYNC - FEXCL - FLARGEFILE - FNDELAY - FNONBLOCK - FRSYNC - FSYNC - FTRUNC - F_GETLEASE - F_GETSIG - F_NOTIFY - F_SETLEASE - F_SETSIG - LOCK_EX - LOCK_MAND - LOCK_NB - LOCK_READ - LOCK_RW - LOCK_SH - LOCK_UN - LOCK_WRITE - O_IGNORE_CTTY - O_NOATIME - O_NOLINK - O_NOTRANS - SEEK_CUR - SEEK_END - SEEK_SET - S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT - S_IREAD S_IWRITE S_IEXEC - S_IRGRP S_IWGRP S_IXGRP S_IRWXG - S_IROTH S_IWOTH S_IXOTH S_IRWXO - S_IRUSR S_IWUSR S_IXUSR S_IRWXU - S_ISUID S_ISGID S_ISVTX S_ISTXT - _S_IFMT S_IFREG S_IFDIR S_IFLNK - &S_ISREG &S_ISDIR &S_ISLNK &S_ISSOCK &S_ISBLK &S_ISCHR &S_ISFIFO - &S_ISWHT &S_ISENFMT &S_IFMT &S_IMODE -); -# 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/tlpkg/tlperl.old/lib/File/Basename.pm b/Master/tlpkg/tlperl.old/lib/File/Basename.pm deleted file mode 100644 index 837b753972a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Basename.pm +++ /dev/null @@ -1,398 +0,0 @@ -=head1 NAME - -File::Basename - Parse file paths into directory, filename and suffix. - -=head1 SYNOPSIS - - use File::Basename; - - ($name,$path,$suffix) = fileparse($fullname,@suffixlist); - $name = fileparse($fullname,@suffixlist); - - $basename = basename($fullname,@suffixlist); - $dirname = dirname($fullname); - - -=head1 DESCRIPTION - -These routines allow you to parse file paths into their directory, filename -and suffix. - -B<NOTE>: C<dirname()> and C<basename()> emulate the behaviours, and -quirks, of the shell and C functions of the same name. See each -function's documentation for details. If your concern is just parsing -paths it is safer to use L<File::Spec>'s C<splitpath()> and -C<splitdir()> methods. - -It is guaranteed that - - # Where $path_separator is / for Unix, \ for Windows, etc... - dirname($path) . $path_separator . basename($path); - -is equivalent to the original path for all systems but VMS. - - -=cut - - -package File::Basename; - -# 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; } ' } # HINT_RE_TAINT - import re 'taint'; -} - - -use strict; -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.74"; - -fileparse_set_fstype($^O); - - -=over 4 - -=item C<fileparse> - - my($filename, $directories, $suffix) = fileparse($path); - my($filename, $directories, $suffix) = fileparse($path, @suffixes); - my $filename = fileparse($path, @suffixes); - -The C<fileparse()> routine divides a file path into its $directories, $filename -and (optionally) the filename $suffix. - -$directories contains everything up to and including the last -directory separator in the $path including the volume (if applicable). -The remainder of the $path is the $filename. - - # On Unix returns ("baz", "/foo/bar/", "") - fileparse("/foo/bar/baz"); - - # On Windows returns ("baz", "C:\foo\bar\", "") - fileparse("C:\foo\bar\baz"); - - # On Unix returns ("", "/foo/bar/baz/", "") - fileparse("/foo/bar/baz/"); - -If @suffixes are given each element is a pattern (either a string or a -C<qr//>) matched against the end of the $filename. The matching -portion is removed and becomes the $suffix. - - # On Unix returns ("baz", "/foo/bar", ".txt") - fileparse("/foo/bar/baz", qr/\.[^.]*/); - -If type is non-Unix (see C<fileparse_set_fstype()>) then the pattern -matching for suffix removal is performed case-insensitively, since -those systems are not case-sensitive when opening existing files. - -You are guaranteed that C<$directories . $filename . $suffix> will -denote the same location as the original $path. - -=cut - - -sub fileparse { - my($fullname,@suffices) = @_; - - unless (defined $fullname) { - require Carp; - Carp::croak("fileparse(): need a valid pathname"); - } - - my $orig_type = ''; - my($type,$igncase) = ($Fileparse_fstype, $Fileparse_igncase); - - my($taint) = substr($fullname,0,0); # Is $fullname tainted? - - if ($type eq "VMS" and $fullname =~ m{/} ) { - # We're doing Unix emulation - $orig_type = $type; - $type = 'Unix'; - } - - my($dirpath, $basename); - - if (grep { $type eq $_ } qw(MSDOS DOS MSWin32 Epoc)) { - ($dirpath,$basename) = ($fullname =~ /^((?:.*[:\\\/])?)(.*)/s); - $dirpath .= '.\\' unless $dirpath =~ /[\\\/]\z/; - } - elsif ($type eq "OS2") { - ($dirpath,$basename) = ($fullname =~ m#^((?:.*[:\\/])?)(.*)#s); - $dirpath = './' unless $dirpath; # Can't be 0 - $dirpath .= '/' unless $dirpath =~ m#[\\/]\z#; - } - elsif ($type eq "MacOS") { - ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/s); - $dirpath = ':' unless $dirpath; - } - elsif ($type eq "AmigaOS") { - ($dirpath,$basename) = ($fullname =~ /(.*[:\/])?(.*)/s); - $dirpath = './' unless $dirpath; - } - elsif ($type eq 'VMS' ) { - ($dirpath,$basename) = ($fullname =~ /^(.*[:>\]])?(.*)/s); - $dirpath ||= ''; # should always be defined - } - else { # Default to Unix semantics. - ($dirpath,$basename) = ($fullname =~ m#^(.*/)?(.*)#s); - if ($orig_type 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; - } - - - my $tail = ''; - my $suffix = ''; - if (@suffices) { - foreach $suffix (@suffices) { - my $pat = ($igncase ? '(?i)' : '') . "($suffix)\$"; - if ($basename =~ s/$pat//s) { - $taint .= substr($suffix,0,0); - $tail = $1 . $tail; - } - } - } - - # Ensure taint is propgated from the path to its pieces. - $tail .= $taint; - wantarray ? ($basename .= $taint, $dirpath .= $taint, $tail) - : ($basename .= $taint); -} - - - -=item C<basename> - - my $filename = basename($path); - my $filename = basename($path, @suffixes); - -This function is provided for compatibility with the Unix shell command -C<basename(1)>. It does B<NOT> always return the file name portion of a -path as you might expect. To be safe, if you want the file name portion of -a path use C<fileparse()>. - -C<basename()> returns the last level of a filepath even if the last -level is clearly directory. In effect, it is acting like C<pop()> for -paths. This differs from C<fileparse()>'s behaviour. - - # Both return "bar" - basename("/foo/bar"); - basename("/foo/bar/"); - -@suffixes work as in C<fileparse()> except all regex metacharacters are -quoted. - - # These two function calls are equivalent. - my $filename = basename("/foo/bar/baz.txt", ".txt"); - my $filename = fileparse("/foo/bar/baz.txt", qr/\Q.txt\E/); - -Also note that in order to be compatible with the shell command, -C<basename()> does not strip off a suffix if it is identical to the -remaining characters in the filename. - -=cut - - -sub basename { - my($path) = shift; - - # From BSD basename(1) - # The basename utility deletes any prefix ending with the last slash `/' - # character present in string (after first stripping trailing slashes) - _strip_trailing_sep($path); - - my($basename, $dirname, $suffix) = fileparse( $path, map("\Q$_\E",@_) ); - - # From BSD basename(1) - # The suffix is not stripped if it is identical to the remaining - # characters in string. - if( length $suffix and !length $basename ) { - $basename = $suffix; - } - - # Ensure that basename '/' == '/' - if( !length $basename ) { - $basename = $dirname; - } - - return $basename; -} - - - -=item C<dirname> - -This function is provided for compatibility with the Unix shell -command C<dirname(1)> and has inherited some of its quirks. In spite of -its name it does B<NOT> always return the directory name as you might -expect. To be safe, if you want the directory name of a path use -C<fileparse()>. - -Only on VMS (where there is no ambiguity between the file and directory -portions of a path) and AmigaOS (possibly due to an implementation quirk in -this module) does C<dirname()> work like C<fileparse($path)>, returning just the -$directories. - - # On VMS and AmigaOS - my $directories = dirname($path); - -When using Unix or MSDOS syntax this emulates the C<dirname(1)> shell function -which is subtly different from how C<fileparse()> works. It returns all but -the last level of a file path even if the last level is clearly a directory. -In effect, it is not returning the directory portion but simply the path one -level up acting like C<chop()> for file paths. - -Also unlike C<fileparse()>, C<dirname()> does not include a trailing slash on -its returned path. - - # returns /foo/bar. fileparse() would return /foo/bar/ - dirname("/foo/bar/baz"); - - # also returns /foo/bar despite the fact that baz is clearly a - # directory. fileparse() would return /foo/bar/baz/ - dirname("/foo/bar/baz/"); - - # returns '.'. fileparse() would return 'foo/' - dirname("foo/"); - -Under VMS, if there is no directory information in the $path, then the -current default device and directory is used. - -=cut - - -sub dirname { - my $path = shift; - - my($type) = $Fileparse_fstype; - - if( $type eq 'VMS' and $path =~ m{/} ) { - # Parse as Unix - local($File::Basename::Fileparse_fstype) = ''; - return dirname($path); - } - - my($basename, $dirname) = fileparse($path); - - if ($type eq 'VMS') { - $dirname ||= $ENV{DEFAULT}; - } - elsif ($type eq 'MacOS') { - if( !length($basename) && $dirname !~ /^[^:]+:\z/) { - _strip_trailing_sep($dirname); - ($basename,$dirname) = fileparse $dirname; - } - $dirname .= ":" unless $dirname =~ /:\z/; - } - elsif (grep { $type eq $_ } qw(MSDOS DOS MSWin32 OS2)) { - _strip_trailing_sep($dirname); - unless( length($basename) ) { - ($basename,$dirname) = fileparse $dirname; - _strip_trailing_sep($dirname); - } - } - elsif ($type eq 'AmigaOS') { - if ( $dirname =~ /:\z/) { return $dirname } - chop $dirname; - $dirname =~ s#[^:/]+\z## unless length($basename); - } - else { - _strip_trailing_sep($dirname); - unless( length($basename) ) { - ($basename,$dirname) = fileparse $dirname; - _strip_trailing_sep($dirname); - } - } - - $dirname; -} - - -# Strip the trailing path separator. -sub _strip_trailing_sep { - my $type = $Fileparse_fstype; - - if ($type eq 'MacOS') { - $_[0] =~ s/([^:]):\z/$1/s; - } - elsif (grep { $type eq $_ } qw(MSDOS DOS MSWin32 OS2)) { - $_[0] =~ s/([^:])[\\\/]*\z/$1/; - } - else { - $_[0] =~ s{(.)/*\z}{$1}s; - } -} - - -=item C<fileparse_set_fstype> - - my $type = fileparse_set_fstype(); - my $previous_type = fileparse_set_fstype($type); - -Normally File::Basename will assume a file path type native to your current -operating system (ie. /foo/bar style on Unix, \foo\bar on Windows, etc...). -With this function you can override that assumption. - -Valid $types are "MacOS", "VMS", "AmigaOS", "OS2", "RISCOS", -"MSWin32", "DOS" (also "MSDOS" for backwards bug compatibility), -"Epoc" and "Unix" (all case-insensitive). If an unrecognized $type is -given "Unix" will be assumed. - -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. - -=back - -=cut - - -BEGIN { - -my @Ignore_Case = qw(MacOS VMS AmigaOS OS2 RISCOS MSWin32 MSDOS DOS Epoc); -my @Types = (@Ignore_Case, qw(Unix)); - -sub fileparse_set_fstype { - my $old = $Fileparse_fstype; - - if (@_) { - my $new_type = shift; - - $Fileparse_fstype = 'Unix'; # default - foreach my $type (@Types) { - $Fileparse_fstype = $type if $new_type =~ /^$type/i; - } - - $Fileparse_igncase = - (grep $Fileparse_fstype eq $_, @Ignore_Case) ? 1 : 0; - } - - return $old; -} - -} - - -1; - - -=head1 SEE ALSO - -L<dirname(1)>, L<basename(1)>, L<File::Spec> diff --git a/Master/tlpkg/tlperl.old/lib/File/CheckTree.pm b/Master/tlpkg/tlperl.old/lib/File/CheckTree.pm deleted file mode 100644 index 20ffd68124d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/CheckTree.pm +++ /dev/null @@ -1,229 +0,0 @@ -package File::CheckTree; - -use 5.006; -use Cwd; -use Exporter; -use File::Spec; -use warnings; -use strict; - -our $VERSION = '4.3'; -our @ISA = qw(Exporter); -our @EXPORT = qw(validate); - -=head1 NAME - -validate - run many filetest checks on a tree - -=head1 SYNOPSIS - - use File::CheckTree; - - $num_warnings = validate( q{ - /vmunix -e || die - /boot -e || die - /bin cd - csh -ex - csh !-ug - sh -ex - sh !-ug - /usr -d || warn "What happened to $file?\n" - }); - -=head1 DESCRIPTION - -The validate() routine takes a single multiline string consisting of -directives, each containing a filename plus a file test to try on it. -(The file test may also be a "cd", causing subsequent relative filenames -to be interpreted relative to that directory.) After the file test -you may put C<|| die> to make it a fatal error if the file test fails. -The default is C<|| warn>. The file test may optionally have a "!' prepended -to test for the opposite condition. If you do a cd and then list some -relative filenames, you may want to indent them slightly for readability. -If you supply your own die() or warn() message, you can use $file to -interpolate the filename. - -Filetests may be bunched: "-rwx" tests for all of C<-r>, C<-w>, and C<-x>. -Only the first failed test of the bunch will produce a warning. - -The routine returns the number of warnings issued. - -=head1 AUTHOR - -File::CheckTree was derived from lib/validate.pl which was -written by Larry Wall. -Revised by Paul Grassie <F<grassie@perl.com>> in 2002. - -=head1 HISTORY - -File::CheckTree used to not display fatal error messages. -It used to count only those warnings produced by a generic C<|| warn> -(and not those in which the user supplied the message). In addition, -the validate() routine would leave the user program in whatever -directory was last entered through the use of "cd" directives. -These bugs were fixed during the development of perl 5.8. -The first fixed version of File::CheckTree was 4.2. - -=cut - -my $Warnings; - -sub validate { - my ($starting_dir, $file, $test, $cwd, $oldwarnings); - - $starting_dir = cwd; - - $cwd = ""; - $Warnings = 0; - - foreach my $check (split /\n/, $_[0]) { - my ($testlist, @testlist); - - # skip blanks/comments - next if $check =~ /^\s*#/ || $check =~ /^\s*$/; - - # Todo: - # should probably check for invalid directives and die - # but earlier versions of File::CheckTree did not do this either - - # split a line like "/foo -r || die" - # so that $file is "/foo", $test is "-rwx || die" - ($file, $test) = split(' ', $check, 2); # special whitespace split - - # change a $test like "!-ug || die" to "!-Z || die", - # capturing the bundled tests (e.g. "ug") in $2 - if ($test =~ s/ ^ (!?-) (\w{2,}) \b /$1Z/x) { - $testlist = $2; - # split bundled tests, e.g. "ug" to 'u', 'g' - @testlist = split(//, $testlist); - } - else { - # put in placeholder Z for stand-alone test - @testlist = ('Z'); - } - - # will compare these two later to stop on 1st warning w/in a bundle - $oldwarnings = $Warnings; - - foreach my $one (@testlist) { - # examples of $test: "!-Z || die" or "-w || warn" - my $this = $test; - - # expand relative $file to full pathname if preceded by cd directive - $file = File::Spec->catfile($cwd, $file) - if $cwd && !File::Spec->file_name_is_absolute($file); - - # put filename in after the test operator - $this =~ s/(-\w\b)/$1 "\$file"/g; - - # change the "-Z" representing a bundle with the $one test - $this =~ s/-Z/-$one/; - - # if it's a "cd" directive... - if ($this =~ /^cd\b/) { - # add "|| die ..." - $this .= ' || die "cannot cd to $file\n"'; - # expand "cd" directive with directory name - $this =~ s/\bcd\b/chdir(\$cwd = '$file')/; - } - else { - # add "|| warn" as a default disposition - $this .= ' || warn' unless $this =~ /\|\|/; - - # change a generic ".. || die" or ".. || warn" - # to call valmess instead of die/warn directly - # valmess will look up the error message from %Val_Message - $this =~ s/ ^ ( (\S+) \s+ \S+ ) \s* \|\| \s* (die|warn) \s* $ - /$1 || valmess('$3', '$2', \$file)/x; - } - - { - # count warnings, either from valmess or '-r || warn "my msg"' - # also, call any pre-existing signal handler for __WARN__ - my $orig_sigwarn = $SIG{__WARN__}; - local $SIG{__WARN__} = sub { - ++$Warnings; - if ( $orig_sigwarn ) { - $orig_sigwarn->(@_); - } - else { - warn "@_"; - } - }; - - # do the test - eval $this; - - # re-raise an exception caused by a "... || die" test - if ($@) { - # in case of any cd directives, return from whence we came - if ($starting_dir ne cwd) { - chdir($starting_dir) || die "$starting_dir: $!"; - } - die $@ if $@; - } - } - - # stop on 1st warning within a bundle of tests - last if $Warnings > $oldwarnings; - } - } - - # in case of any cd directives, return from whence we came - if ($starting_dir ne cwd) { - chdir($starting_dir) || die "chdir $starting_dir: $!"; - } - - return $Warnings; -} - -my %Val_Message = ( - 'r' => "is not readable by uid $>.", - 'w' => "is not writable by uid $>.", - 'x' => "is not executable by uid $>.", - 'o' => "is not owned by uid $>.", - 'R' => "is not readable by you.", - 'W' => "is not writable by you.", - 'X' => "is not executable by you.", - 'O' => "is not owned by you.", - 'e' => "does not exist.", - 'z' => "does not have zero size.", - 's' => "does not have non-zero size.", - 'f' => "is not a plain file.", - 'd' => "is not a directory.", - 'l' => "is not a symbolic link.", - 'p' => "is not a named pipe (FIFO).", - 'S' => "is not a socket.", - 'b' => "is not a block special file.", - 'c' => "is not a character special file.", - 'u' => "does not have the setuid bit set.", - 'g' => "does not have the setgid bit set.", - 'k' => "does not have the sticky bit set.", - 'T' => "is not a text file.", - 'B' => "is not a binary file." -); - -sub valmess { - my ($disposition, $test, $file) = @_; - my $ferror; - - if ($test =~ / ^ (!?) -(\w) \s* $ /x) { - my ($neg, $ftype) = ($1, $2); - - $ferror = "$file $Val_Message{$ftype}"; - - if ($neg eq '!') { - $ferror =~ s/ is not / should not be / || - $ferror =~ s/ does not / should not / || - $ferror =~ s/ not / /; - } - } - else { - $ferror = "Can't do $test $file.\n"; - } - - die "$ferror\n" if $disposition eq 'die'; - warn "$ferror\n"; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/File/Compare.pm b/Master/tlpkg/tlperl.old/lib/File/Compare.pm deleted file mode 100644 index 0b73d7c7657..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/File/Copy.pm b/Master/tlpkg/tlperl.old/lib/File/Copy.pm deleted file mode 100644 index 52ba7c6d81a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Copy.pm +++ /dev/null @@ -1,459 +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.09'; - -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 - carp("'$from' and '$to' are identical (not copied)"); - # The "copy" was a success as the source and destination contain - # the same data. - return 1; - } - - if ((($Config{d_symlink} && $Config{d_readlink}) || $Config{d_link}) && - !($^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'vms')) { - my @fs = stat($from); - if (@fs) { - my @ts = stat($to); - if (@ts && $fs[0] == $ts[0] && $fs[1] == $ts[1]) { - carp("'$from' and '$to' are identical (not copied)"); - return 0; - } - } - } - - 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 { - croak("Usage: move(FROM, TO) ") unless @_ == 2; - - my($from,$to) = @_; - - my($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; - - # 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 - - { - local $@; - eval { - local $SIG{__DIE__}; - copy($from,$to) or die; - my($atime, $mtime) = (stat($from))[8,9]; - utime($atime, $mtime, $to); - unlink($from) or die; - }; - return 1 unless $@; - } - ($sts,$ossts) = ($! + 0, $^E + 0); - - ($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 = \© -*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 = \© - } -} - -1; - -__END__ - -=head1 NAME - -File::Copy - Copy files or filehandles - -=head1 SYNOPSIS - - use File::Copy; - - copy("file1","file2") or die "Copy failed: $!"; - copy("Copy.pm",\*STDOUT); - move("/dev1/fileA","/dev2/fileB"); - - 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/tlpkg/tlperl.old/lib/File/DosGlob.pm b/Master/tlpkg/tlperl.old/lib/File/DosGlob.pm deleted file mode 100644 index a1c27d5c32a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/DosGlob.pm +++ /dev/null @@ -1,571 +0,0 @@ -#!perl -w - -# use strict fails -#Can't use string ("main::glob") as a symbol ref while "strict refs" in use at /usr/lib/perl5/5.005/File/DosGlob.pm line 191. - -# -# Documentation at the __END__ -# - -package File::DosGlob; - -our $VERSION = '1.00'; -use strict; -use warnings; - -sub doglob { - my $cond = shift; - my @retval = (); - #print "doglob: ", join('|', @_), "\n"; - OUTER: - for my $pat (@_) { - my @matched = (); - my @globdirs = (); - my $head = '.'; - my $sepchr = '/'; - my $tail; - next OUTER unless defined $pat and $pat ne ''; - # if arg is within quotes strip em and do no globbing - if ($pat =~ /^"(.*)"\z/s) { - $pat = $1; - if ($cond eq 'd') { push(@retval, $pat) if -d $pat } - else { push(@retval, $pat) if -e $pat } - next OUTER; - } - # wildcards with a drive prefix such as h:*.pm must be changed - # to h:./*.pm to expand correctly - if ($pat =~ m|^([A-Za-z]:)[^/\\]|s) { - substr($_,0,2) = $1 . "./"; - } - if ($pat =~ m|^(.*)([\\/])([^\\/]*)\z|s) { - ($head, $sepchr, $tail) = ($1,$2,$3); - #print "div: |$head|$sepchr|$tail|\n"; - push (@retval, $pat), next OUTER if $tail eq ''; - if ($head =~ /[*?]/) { - @globdirs = doglob('d', $head); - push(@retval, doglob($cond, map {"$_$sepchr$tail"} @globdirs)), - next OUTER if @globdirs; - } - $head .= $sepchr if $head eq '' or $head =~ /^[A-Za-z]:\z/s; - $pat = $tail; - } - # - # If file component has no wildcards, we can avoid opendir - unless ($pat =~ /[*?]/) { - $head = '' if $head eq '.'; - $head .= $sepchr unless $head eq '' or substr($head,-1) eq $sepchr; - $head .= $pat; - if ($cond eq 'd') { push(@retval,$head) if -d $head } - else { push(@retval,$head) if -e $head } - next OUTER; - } - opendir(D, $head) or next OUTER; - my @leaves = readdir D; - closedir D; - $head = '' if $head eq '.'; - $head .= $sepchr unless $head eq '' or substr($head,-1) eq $sepchr; - - # escape regex metachars but not glob chars - $pat =~ s:([].+^\-\${}[|]):\\$1:g; - # and convert DOS-style wildcards to regex - $pat =~ s/\*/.*/g; - $pat =~ s/\?/.?/g; - - #print "regex: '$pat', head: '$head'\n"; - my $matchsub = sub { $_[0] =~ m|^$pat\z|is }; - INNER: - for my $e (@leaves) { - next INNER if $e eq '.' or $e eq '..'; - next INNER if $cond eq 'd' and ! -d "$head$e"; - push(@matched, "$head$e"), next INNER if &$matchsub($e); - # - # [DOS compatibility special case] - # Failed, add a trailing dot and try again, but only - # if name does not have a dot in it *and* pattern - # has a dot *and* name is shorter than 9 chars. - # - if (index($e,'.') == -1 and length($e) < 9 - and index($pat,'\\.') != -1) { - push(@matched, "$head$e"), next INNER if &$matchsub("$e."); - } - } - push @retval, @matched if @matched; - } - return @retval; -} - - -# -# Do DOS-like globbing on Mac OS -# -sub doglob_Mac { - my $cond = shift; - my @retval = (); - - #print "doglob_Mac: ", join('|', @_), "\n"; - OUTER: - for my $arg (@_) { - local $_ = $arg; - my @matched = (); - my @globdirs = (); - my $head = ':'; - my $not_esc_head = $head; - my $sepchr = ':'; - next OUTER unless defined $_ and $_ ne ''; - # if arg is within quotes strip em and do no globbing - if (/^"(.*)"\z/s) { - $_ = $1; - # $_ may contain escaped metachars '\*', '\?' and '\' - my $not_esc_arg = $_; - $not_esc_arg =~ s/\\([*?\\])/$1/g; - if ($cond eq 'd') { push(@retval, $not_esc_arg) if -d $not_esc_arg } - else { push(@retval, $not_esc_arg) if -e $not_esc_arg } - next OUTER; - } - - if (m|^(.*?)(:+)([^:]*)\z|s) { # note: $1 is not greedy - my $tail; - ($head, $sepchr, $tail) = ($1,$2,$3); - #print "div: |$head|$sepchr|$tail|\n"; - push (@retval, $_), next OUTER if $tail eq ''; - # - # $head may contain escaped metachars '\*' and '\?' - - my $tmp_head = $head; - # if a '*' or '?' is preceded by an odd count of '\', temporary delete - # it (and its preceding backslashes), i.e. don't treat '\*' and '\?' as - # wildcards - $tmp_head =~ s/(\\*)([*?])/$2 x ((length($1) + 1) % 2)/eg; - - if ($tmp_head =~ /[*?]/) { # if there are wildcards ... - @globdirs = doglob_Mac('d', $head); - push(@retval, doglob_Mac($cond, map {"$_$sepchr$tail"} @globdirs)), - next OUTER if @globdirs; - } - - $head .= $sepchr; - $not_esc_head = $head; - # unescape $head for file operations - $not_esc_head =~ s/\\([*?\\])/$1/g; - $_ = $tail; - } - # - # If file component has no wildcards, we can avoid opendir - - my $tmp_tail = $_; - # if a '*' or '?' is preceded by an odd count of '\', temporary delete - # it (and its preceding backslashes), i.e. don't treat '\*' and '\?' as - # wildcards - $tmp_tail =~ s/(\\*)([*?])/$2 x ((length($1) + 1) % 2)/eg; - - unless ($tmp_tail =~ /[*?]/) { # if there are wildcards ... - $not_esc_head = $head = '' if $head eq ':'; - my $not_esc_tail = $_; - # unescape $head and $tail for file operations - $not_esc_tail =~ s/\\([*?\\])/$1/g; - $head .= $_; - $not_esc_head .= $not_esc_tail; - if ($cond eq 'd') { push(@retval,$head) if -d $not_esc_head } - else { push(@retval,$head) if -e $not_esc_head } - next OUTER; - } - #print "opendir($not_esc_head)\n"; - opendir(D, $not_esc_head) or next OUTER; - my @leaves = readdir D; - closedir D; - - # escape regex metachars but not '\' and glob chars '*', '?' - $_ =~ s:([].+^\-\${}[|]):\\$1:g; - # and convert DOS-style wildcards to regex, - # but only if they are not escaped - $_ =~ s/(\\*)([*?])/$1 . ('.' x ((length($1) + 1) % 2)) . $2/eg; - - #print "regex: '$_', head: '$head', unescaped head: '$not_esc_head'\n"; - my $matchsub = eval 'sub { $_[0] =~ m|^' . $_ . '\\z|ios }'; - warn($@), next OUTER if $@; - INNER: - for my $e (@leaves) { - next INNER if $e eq '.' or $e eq '..'; - next INNER if $cond eq 'd' and ! -d "$not_esc_head$e"; - - if (&$matchsub($e)) { - my $leave = (($not_esc_head eq ':') && (-f "$not_esc_head$e")) ? - "$e" : "$not_esc_head$e"; - # - # On Mac OS, the two glob metachars '*' and '?' and the escape - # char '\' are valid characters for file and directory names. - # We have to escape and treat them specially. - $leave =~ s|([*?\\])|\\$1|g; - push(@matched, $leave); - next INNER; - } - } - push @retval, @matched if @matched; - } - return @retval; -} - -# -# _expand_volume() will only be used on Mac OS (Classic): -# Takes an array of original patterns as argument and returns an array of -# possibly modified patterns. Each original pattern is processed like -# that: -# + If there's a volume name in the pattern, we push a separate pattern -# for each mounted volume that matches (with '*', '?' and '\' escaped). -# + If there's no volume name in the original pattern, it is pushed -# unchanged. -# Note that the returned array of patterns may be empty. -# -sub _expand_volume { - - require MacPerl; # to be verbose - - my @pat = @_; - my @new_pat = (); - my @FSSpec_Vols = MacPerl::Volumes(); - my @mounted_volumes = (); - - foreach my $spec_vol (@FSSpec_Vols) { - # push all mounted volumes into array - push @mounted_volumes, MacPerl::MakePath($spec_vol); - } - #print "mounted volumes: |@mounted_volumes|\n"; - - while (@pat) { - my $pat = shift @pat; - if ($pat =~ /^([^:]+:)(.*)\z/) { # match a volume name? - my $vol_pat = $1; - my $tail = $2; - # - # escape regex metachars but not '\' and glob chars '*', '?' - $vol_pat =~ s:([].+^\-\${}[|]):\\$1:g; - # and convert DOS-style wildcards to regex, - # but only if they are not escaped - $vol_pat =~ s/(\\*)([*?])/$1 . ('.' x ((length($1) + 1) % 2)) . $2/eg; - #print "volume regex: '$vol_pat' \n"; - - foreach my $volume (@mounted_volumes) { - if ($volume =~ m|^$vol_pat\z|ios) { - # - # On Mac OS, the two glob metachars '*' and '?' and the - # escape char '\' are valid characters for volume names. - # We have to escape and treat them specially. - $volume =~ s|([*?\\])|\\$1|g; - push @new_pat, $volume . $tail; - } - } - } else { # no volume name in pattern, push original pattern - push @new_pat, $pat; - } - } - return @new_pat; -} - - -# -# _preprocess_pattern() will only be used on Mac OS (Classic): -# Resolves any updirs in the pattern. Removes a single trailing colon -# from the pattern, unless it's a volume name pattern like "*HD:" -# -sub _preprocess_pattern { - my @pat = @_; - - foreach my $p (@pat) { - my $proceed; - # resolve any updirs, e.g. "*HD:t?p::a*" -> "*HD:a*" - do { - $proceed = ($p =~ s/^(.*):[^:]+::(.*?)\z/$1:$2/); - } while ($proceed); - # remove a single trailing colon, e.g. ":*:" -> ":*" - $p =~ s/:([^:]+):\z/:$1/; - } - return @pat; -} - - -# -# _un_escape() will only be used on Mac OS (Classic): -# Unescapes a list of arguments which may contain escaped -# metachars '*', '?' and '\'. -# -sub _un_escape { - foreach (@_) { - s/\\([*?\\])/$1/g; - } - return @_; -} - -# -# this can be used to override CORE::glob in a specific -# package by saying C<use File::DosGlob 'glob';> in that -# namespace. -# - -# context (keyed by second cxix arg provided by core) -my %iter; -my %entries; - -sub glob { - my($pat,$cxix) = @_; - my @pat; - - # glob without args defaults to $_ - $pat = $_ unless defined $pat; - - # extract patterns - if ($pat =~ /\s/) { - require Text::ParseWords; - @pat = Text::ParseWords::parse_line('\s+',0,$pat); - } - else { - push @pat, $pat; - } - - # Mike Mestnik: made to do abc{1,2,3} == abc1 abc2 abc3. - # abc3 will be the original {3} (and drop the {}). - # abc1 abc2 will be put in @appendpat. - # This was just the esiest way, not nearly the best. - REHASH: { - my @appendpat = (); - for (@pat) { - # There must be a "," I.E. abc{efg} is not what we want. - while ( /^(.*)(?<!\\)\{(.*?)(?<!\\)\,.*?(?<!\\)\}(.*)$/ ) { - my ($start, $match, $end) = ($1, $2, $3); - #print "Got: \n\t$start\n\t$match\n\t$end\n"; - my $tmp = "$start$match$end"; - while ( $tmp =~ s/^(.*?)(?<!\\)\{(?:.*(?<!\\)\,)?(.*\Q$match\E.*?)(?:(?<!\\)\,.*)?(?<!\\)\}(.*)$/$1$2$3/ ) { - #print "Striped: $tmp\n"; - # these expanshions will be preformed by the original, - # when we call REHASH. - } - push @appendpat, ("$tmp"); - s/^\Q$start\E(?<!\\)\{\Q$match\E(?<!\\)\,/$start\{/; - if ( /^\Q$start\E(?<!\\)\{(?!.*?(?<!\\)\,.*?\Q$end\E$)(.*)(?<!\\)\}\Q$end\E$/ ) { - $match = $1; - #print "GOT: \n\t$start\n\t$match\n\t$end\n\n"; - $_ = "$start$match$end"; - } - } - #print "Sould have "GOT" vs "Got"!\n"; - #FIXME: There should be checking for this. - # How or what should be done about failure is beond me. - } - if ( $#appendpat != -1 - ) { - #print "LOOP\n"; - #FIXME: Max loop, no way! :") - for ( @appendpat ) { - push @pat, $_; - } - goto REHASH; - } - } - for ( @pat ) { - s/\\{/{/g; - s/\\}/}/g; - s/\\,/,/g; - } - #print join ("\n", @pat). "\n"; - - # 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 ($^O eq 'MacOS') { - # first, take care of updirs and trailing colons - @pat = _preprocess_pattern(@pat); - # expand volume names - @pat = _expand_volume(@pat); - $entries{$cxix} = (@pat) ? [_un_escape( doglob_Mac(1,@pat) )] : [()]; - } else { - $entries{$cxix} = [doglob(1,@pat)]; - } - } - - # chuck it all out, quick or slow - if (wantarray) { - delete $iter{$cxix}; - return @{delete $entries{$cxix}}; - } - else { - if ($iter{$cxix} = scalar @{$entries{$cxix}}) { - return shift @{$entries{$cxix}}; - } - else { - # return undef for EOL - delete $iter{$cxix}; - delete $entries{$cxix}; - return undef; - } - } -} - -{ - no strict 'refs'; - - sub import { - my $pkg = shift; - return unless @_; - my $sym = shift; - my $callpkg = ($sym =~ s/^GLOBAL_//s ? 'CORE::GLOBAL' : caller(0)); - *{$callpkg.'::'.$sym} = \&{$pkg.'::'.$sym} if $sym eq 'glob'; - } -} -1; - -__END__ - -=head1 NAME - -File::DosGlob - DOS like globbing and then some - -=head1 SYNOPSIS - - require 5.004; - - # override CORE::glob in current package - use File::DosGlob 'glob'; - - # override CORE::glob in ALL packages (use with extreme caution!) - use File::DosGlob 'GLOBAL_glob'; - - @perlfiles = glob "..\\pe?l/*.p?"; - print <..\\pe?l/*.p?>; - - # from the command line (overrides only in main::) - > perl -MFile::DosGlob=glob -e "print <../pe*/*p?>" - -=head1 DESCRIPTION - -A module that implements DOS-like globbing with a few enhancements. -It is largely compatible with perlglob.exe (the M$ setargv.obj -version) in all but one respect--it understands wildcards in -directory components. - -For example, C<<..\\l*b\\file/*glob.p?>> will work as expected (in -that it will find something like '..\lib\File/DosGlob.pm' alright). -Note that all path components are case-insensitive, and that -backslashes and forward slashes are both accepted, and preserved. -You may have to double the backslashes if you are putting them in -literally, due to double-quotish parsing of the pattern by perl. - -Spaces in the argument delimit distinct patterns, so -C<glob('*.exe *.dll')> globs all filenames that end in C<.exe> -or C<.dll>. If you want to put in literal spaces in the glob -pattern, you can escape them with either double quotes, or backslashes. -e.g. C<glob('c:/"Program Files"/*/*.dll')>, or -C<glob('c:/Program\ Files/*/*.dll')>. The argument is tokenized using -C<Text::ParseWords::parse_line()>, so see L<Text::ParseWords> for details -of the quoting rules used. - -Extending it to csh patterns is left as an exercise to the reader. - -=head1 NOTES - -=over 4 - -=item * - -Mac OS (Classic) users should note a few differences. The specification -of pathnames in glob patterns adheres to the usual Mac OS conventions: -The path separator is a colon ':', not a slash '/' or backslash '\'. 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 <:*:> will find both directories -I<and> files (and not, as one might expect, only directories). - -The metachars '*', '?' and the escape char '\' are valid characters in -volume, directory and file names on Mac OS. Hence, if you want to match -a '*', '?' or '\' literally, you have to escape these characters. Due to -perl's quoting rules, things may get a bit complicated, when you want to -match a string like '\*' literally, or when you want to match '\' literally, -but treat the immediately following character '*' as metachar. So, here's a -rule of thumb (applies to both single- and double-quoted strings): escape -each '*' or '?' or '\' with a backslash, if you want to treat them literally, -and then double each backslash and your are done. E.g. - -- Match '\*' literally - - escape both '\' and '*' : '\\\*' - double the backslashes : '\\\\\\*' - -(Internally, the glob routine sees a '\\\*', which means that both '\' and -'*' are escaped.) - - -- Match '\' literally, treat '*' as metachar - - escape '\' but not '*' : '\\*' - double the backslashes : '\\\\*' - -(Internally, the glob routine sees a '\\*', which means that '\' is escaped and -'*' is not.) - -Note that you also have to quote literal spaces in the glob pattern, as described -above. - -=back - -=head1 EXPORTS (by request only) - -glob() - -=head1 BUGS - -Should probably be built into the core, and needs to stop -pandering to DOS habits. Needs a dose of optimizium too. - -=head1 AUTHOR - -Gurusamy Sarathy <gsar@activestate.com> - -=head1 HISTORY - -=over 4 - -=item * - -Support for globally overriding glob() (GSAR 3-JUN-98) - -=item * - -Scalar context, independent iterator context fixes (GSAR 15-SEP-97) - -=item * - -A few dir-vs-file optimizations result in glob importation being -10 times faster than using perlglob.exe, and using perlglob.bat is -only twice as slow as perlglob.exe (GSAR 28-MAY-97) - -=item * - -Several cleanups prompted by lack of compatible perlglob.exe -under Borland (GSAR 27-MAY-97) - -=item * - -Initial version (GSAR 20-FEB-97) - -=back - -=head1 SEE ALSO - -perl - -perlglob.bat - -Text::ParseWords - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/File/Find.pm b/Master/tlpkg/tlperl.old/lib/File/Find.pm deleted file mode 100644 index 497051e0635..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Find.pm +++ /dev/null @@ -1,1275 +0,0 @@ -package File::Find; -use 5.006; -use strict; -use warnings; -use warnings::register; -our $VERSION = '1.10'; -require Exporter; -require Cwd; - -# -# Modified to ensure sub-directory traversal order is not inverded by stack -# push and pops. That is remains in the same order as in the directory file, -# or user pre-processing (EG:sorted). -# - -=head1 NAME - -File::Find - Traverse a directory tree. - -=head1 SYNOPSIS - - use File::Find; - find(\&wanted, @directories_to_search); - 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); - -C<find()> does a depth-first search over the given C<@directories> in -the order they are given. For each file or directory found, it calls -the C<&wanted> subroutine. (See below for details on how to use the -C<&wanted> function). Additionally, for each directory found, it will -C<chdir()> into that directory and continue the search, invoking the -C<&wanted> function on each file or subdirectory in the directory. - -=item B<finddepth> - - finddepth(\&wanted, @directories); - finddepth(\%options, @directories); - -C<finddepth()> works just like C<find()> except that is invokes the -C<&wanted> function for a directory I<after> invoking it for the -directory's contents. It does a postorder traversal instead of a -preorder traversal, working from the bottom of the directory tree up -where C<find()> works from the top of the tree down. - -=back - -=head2 %options - -The first argument to C<find()> is either a code reference to your -C<&wanted> function, or a hash reference describing the operations -to be performed for each file. 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 C<finddepth()> is a shortcut for -specifying C<<{ bydepth => 1 }>> in the first argument of C<find()>. - -=item C<preprocess> - -The value should be a code reference. This code reference is used to -preprocess the current directory. The name of the currently processed -directory is in C<$File::Find::dir>. Your preprocessing function is -called after C<readdir()>, but before the loop that calls the C<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 C<$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 -C<wanted()> function is called. This enables fast file checks involving S<_>. -Note that this guarantee no longer holds if I<follow> or I<follow_fast> -are not set. - -=item * - -There is a variable C<$File::Find::fullname> which holds the absolute -pathname of the file with all symbolic links resolved. If the link is -a dangling symbolic link, then fullname will be set to C<undef>. - -=back - -This is a no-op on Win32. - -=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 C<wanted()> function) -is worse than just taking time, the option I<follow> should be used. - -This is also a no-op on Win32. - -=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 C<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 C<wanted()> function does whatever verifications you want on -each file and directory. Note that despite its name, the C<wanted()> -function is a generic callback function, and does B<not> tell -File::Find if a file is "wanted" or not. In fact, its return value -is ignored. - -The wanted function 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 F</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 to C<$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 -C<stat()>, C<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 BUGS AND CAVEATS - -Despite the name of the C<finddepth()> function, both C<find()> and -C<finddepth()> perform a depth-first search of the directory -hierarchy. - -=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); - local *_ = \my $a; - - 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 = $^O eq 'MSWin32' ? 0 : $wanted->{follow}; - $follow = $^O eq 'MSWin32' ? 0 : - $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; - - ($topdev,$topino,$topmode,$topnlink) = $follow ? stat $top_item : lstat $top_item; - - if ($Is_MacOS) { - $top_item = ":$top_item" - if ( (-d _) && ( $top_item !~ /:/ ) ); - } elsif ($^O eq 'MSWin32') { - $top_item =~ s|/\z|| unless $top_item =~ m|\w:/$|; - } - else { - $top_item =~ s|/\z|| unless $top_item eq '/'; - } - - $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//i 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 - $_ = $name if $no_chdir; - - { $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 - } elsif ($^O eq 'MSWin32') { - $dir_pref = ($p_dir =~ m|\w:/$| ? $p_dir : "$p_dir/" ); - } - 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 ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $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 ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $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; - - # HACK: insert directories at this position. so as to preserve - # the user pre-processed ordering of files. - # EG: directory traversal is in user sorted order, not at random. - my $stack_top = @Stack; - - 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//i if $Is_VMS; - # HACK: replace push to preserve dir traversal order - #push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink]; - splice @Stack, $stack_top, 0, - [$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:"; - } - elsif ($^O eq 'MSWin32') { - $dir_name = ($p_dir =~ m|\w:/$| ? "$p_dir$dir_rel" : "$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 - unless (defined $new_loc) { - if ($dangling_symlinks) { - if (ref $dangling_symlinks eq 'CODE') { - $dangling_symlinks->($FN, $dir_pref); - } else { - warnings::warnif "$dir_pref$FN is a dangling symbolic link\n"; - } - } - - $fullname = undef; - $name = $dir_pref . $FN; - $_ = ($no_chdir ? $name : $FN); - { $wanted_callback->() }; - next; - } - - 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 'interix' || $^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/tlpkg/tlperl.old/lib/File/Glob.pm b/Master/tlpkg/tlperl.old/lib/File/Glob.pm deleted file mode 100644 index 133c650529b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Glob.pm +++ /dev/null @@ -1,496 +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.05'; - -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 { - splice @_, 1; # don't pass PL_glob_index as flags! - 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}>; - - ## glob on all files in home directory - use File::Glob ':globally'; - my @sources = <~gnat/*>; - -=head1 DESCRIPTION - -The glob angle-bracket operator C<< <> >> is a pathname generator that -implements the rules for file name pattern matching used by Unix-like shells -such as the Bourne shell or C shell. - -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. - -=head2 META CHARACTERS - - \ Quote the next metacharacter - [] Character class - {} Multiple pattern - * Match any string of characters - ? Match any single character - ~ User name home directory - -The metanotation C<a{b,c,d}e> is a shorthand for C<abe ace ade>. Left to -right order is preserved, with results of matches being sorted separately -at a low level to preserve this order. As a special case C<{>, C<}>, and -C<{}> are passed undisturbed. - -=head2 POSIX FLAGS - -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 SEE ALSO - -L<perlfunc/glob>, glob(3) - -=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/tlpkg/tlperl.old/lib/File/Path.pm b/Master/tlpkg/tlperl.old/lib/File/Path.pm deleted file mode 100644 index 2e41ff3f77f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Path.pm +++ /dev/null @@ -1,285 +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), to be modified by the current umask. - -=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:> There are race conditions internal to the implementation of -C<rmtree> making it unsafe to use on directory trees which may be -altered or moved while C<rmtree> is running, and in particular on any -directory trees with any path components or subdirectories potentially -writable by untrusted users. - -Additionally, if the third parameter is not TRUE and C<rmtree> is -interrupted, it may leave files and directories with permissions altered -to allow deletion (and older versions of this module would even set -files and directories to world-read/writable!) - -Note also that the occurrence of errors in C<rmtree> can be determined I<only> -by trapping diagnostic messages using C<$SIG{__WARN__}>; it is not apparent -from the return value. - -=head1 DIAGNOSTICS - -=over 4 - -=item * - -On Windows, if C<mkpath> gives you the warning: B<No such file or -directory>, this may mean that you've exceeded your filesystem's -maximum path length. - -=back - -=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.08"; -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 - $! = $e, 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: 0700 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($rp | 0700, ($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 $rp | 0700, $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 $rp | 0600, $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/tlpkg/tlperl.old/lib/File/Spec.pm b/Master/tlpkg/tlperl.old/lib/File/Spec.pm deleted file mode 100644 index 0c8cd21e057..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Spec.pm +++ /dev/null @@ -1,322 +0,0 @@ -package File::Spec; - -use strict; -use vars qw(@ISA $VERSION); - -$VERSION = '3.12'; -$VERSION = eval $VERSION; - -my %module = (MacOS => 'Mac', - MSWin32 => 'Win32', - os2 => 'OS2', - VMS => 'VMS', - epoc => 'Epoc', - NetWare => 'Win32', # Yes, File::Spec::Win32 works on NetWare. - symbian => 'Win32', # Yes, File::Spec::Win32 works on symbian. - 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 ) ; - -Note that this does *not* collapse F<x/../y> sections into F<y>. This -is by design. If F</foo> on your system is a symlink to F</bar/baz>, -then F</foo/../quux> is actually F</bar/quux>, not F</quux> as a naive -F<../>-removal would give you. If you want to do this kind of -processing, you probably want C<Cwd>'s C<realpath()> function to -actually traverse the filesystem cleaning up paths like this. - -=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 -OS/2. 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 the current directory -if no writable temporary directories are found. The list of directories -checked depends on the platform; e.g. File::Spec::Unix checks C<$ENV{TMPDIR}> -(unless taint is on) and F</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 -case is not or is significant when comparing file specifications. - - $is_case_tolerant = File::Spec->case_tolerant(); - -=item file_name_is_absolute - -Takes as its 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 C<PATH> (or the local -platform's equivalent) as a list. - - @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 '' 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 C<$no_file> is true or a -trailing separator or F</.> or F</..> is present. On Unix, this means that C<$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 ); - -C<$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 OSes. - -=item catpath() - -Takes volume, directory and file portions and returns an entire path. Under -Unix, C<$volume> is ignored, and directory and file are concatenated. A '/' is -inserted if need be. On other OSes, C<$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 C<$base> is not present or '', then L<cwd()|Cwd> is used. If C<$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 volume, if C<$path> and C<$base> appear to be -on two different volumes, we will not attempt to resolve the two -paths, and we will instead simply return C<$path>. Note that previous -versions of this module ignored the volume of C<$base>, which resulted in -garbage results part of the time. - -On systems that have a grammar that indicates filenames, this ignores the -C<$base> filename as well. Otherwise all path components are assumed to be -directories. - -If C<$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 C<$base> is not present or '', then L<cwd()|Cwd> is used. If C<$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 volume, if C<$path> and C<$base> appear to be -on two different volumes, we will not attempt to resolve the two -paths, and we will instead simply return C<$path>. Note that previous -versions of this module ignored the volume of C<$base>, which resulted in -garbage results part of the time. - -On systems that have a grammar that indicates filenames, this ignores the -C<$base> filename as well. Otherwise all path components are assumed to be -directories. - -If C<$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 AUTHOR - -Currently maintained by Ken Williams C<< <KWILLIAMS@cpan.org> >>. - -The vast majority of the code was written by -Kenneth Albanowski C<< <kjahds@kjahds.com> >>, -Andy Dougherty C<< <doughera@lafayette.edu> >>, -Andreas KE<ouml>nig C<< <A.Koenig@franz.ww.TU-Berlin.DE> >>, -Tim Bunce C<< <Tim.Bunce@ig.co.uk> >>. -VMS support by Charles Bailey C<< <bailey@newman.upenn.edu> >>. -OS/2 support by Ilya Zakharevich C<< <ilya@math.ohio-state.edu> >>. -Mac support by Paul Schinder C<< <schinder@pobox.com> >>, and -Thomas Wegner C<< <wegner_thomas@yahoo.com> >>. -abs2rel() and rel2abs() written by Shigio Yamaguchi C<< <shigio@tamacom.com> >>, -modified by Barrie Slaymaker C<< <barries@slaysys.com> >>. -splitpath(), splitdir(), catpath() and catdir() by Barrie Slaymaker. - -=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. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/File/Spec/Cygwin.pm b/Master/tlpkg/tlperl.old/lib/File/Spec/Cygwin.pm deleted file mode 100644 index 19a2937c6b9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Spec/Cygwin.pm +++ /dev/null @@ -1,93 +0,0 @@ -package File::Spec::Cygwin; - -use strict; -use vars qw(@ISA $VERSION); -require File::Spec::Unix; - -$VERSION = '1.1'; - -@ISA = qw(File::Spec::Unix); - -=head1 NAME - -File::Spec::Cygwin - methods for Cygwin file specs - -=head1 SYNOPSIS - - require File::Spec::Cygwin; # Done internally by File::Spec if needed - -=head1 DESCRIPTION - -See L<File::Spec> and L<File::Spec::Unix>. This package overrides the -implementation of these methods, not the semantics. - -This module is still in beta. Cygwin-knowledgeable folks are invited -to offer patches and suggestions. - -=cut - -=pod - -=over 4 - -=item canonpath - -Any C<\> (backslashes) are converted to C</> (forward slashes), -and then File::Spec::Unix canonpath() is called on the result. - -=cut - -sub canonpath { - my($self,$path) = @_; - $path =~ s|\\|/|g; - return $self->SUPER::canonpath($path); -} - -=pod - -=item file_name_is_absolute - -True is returned if the file name begins with C<drive_letter:>, -and if not, File::Spec::Unix file_name_is_absolute() is called. - -=cut - - -sub file_name_is_absolute { - my ($self,$file) = @_; - return 1 if $file =~ m{^([a-z]:)?[\\/]}is; # C:/test - return $self->SUPER::file_name_is_absolute($file); -} - -=item tmpdir (override) - -Returns a string representation of the first existing directory -from the following list: - - $ENV{TMPDIR} - /tmp - C:/temp - -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; - $tmpdir = $_[0]->_tmpdir( $ENV{TMPDIR}, "/tmp", 'C:/temp' ); -} - -=back - -=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. - -=cut - -1; diff --git a/Master/tlpkg/tlperl.old/lib/File/Spec/Epoc.pm b/Master/tlpkg/tlperl.old/lib/File/Spec/Epoc.pm deleted file mode 100644 index a7168f9e494..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Spec/Epoc.pm +++ /dev/null @@ -1,77 +0,0 @@ -package File::Spec::Epoc; - -use strict; -use vars qw($VERSION @ISA); - -$VERSION = '1.1'; - -require File::Spec::Unix; -@ISA = qw(File::Spec::Unix); - -=head1 NAME - -File::Spec::Epoc - methods for Epoc file specs - -=head1 SYNOPSIS - - require File::Spec::Epoc; # Done internally by File::Spec if needed - -=head1 DESCRIPTION - -See File::Spec::Unix for a documentation of the methods provided -there. This package overrides the implementation of these methods, not -the semantics. - -This package is still work in progress ;-) - -=cut - -sub case_tolerant { - return 1; -} - -=pod - -=over 4 - -=item canonpath() - -No physical check on the filesystem, but a logical cleanup of a -path. On UNIX eliminated successive slashes and successive "/.". - -=back - -=cut - -sub canonpath { - my ($self,$path) = @_; - - $path =~ s|/+|/|g; # xx////xx -> xx/xx - $path =~ s|(/\.)+/|/|g; # xx/././xx -> xx/xx - $path =~ s|^(\./)+||s unless $path eq "./"; # ./xx -> xx - $path =~ s|^/(\.\./)+|/|s; # /../../xx -> xx - $path =~ s|/\Z(?!\n)|| unless $path eq "/"; # xx/ -> xx - return $path; -} - -=pod - -=head1 AUTHOR - -o.flebbe@gmx.de - -=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 - -See L<File::Spec> and L<File::Spec::Unix>. This package overrides the -implementation of these methods, not the semantics. - -=cut - -1; diff --git a/Master/tlpkg/tlperl.old/lib/File/Spec/Functions.pm b/Master/tlpkg/tlperl.old/lib/File/Spec/Functions.pm deleted file mode 100644 index 38c898c5d8f..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/File/Spec/Mac.pm b/Master/tlpkg/tlperl.old/lib/File/Spec/Mac.pm deleted file mode 100644 index 8b51bd6c249..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Spec/Mac.pm +++ /dev/null @@ -1,780 +0,0 @@ -package File::Spec::Mac; - -use strict; -use vars qw(@ISA $VERSION); -require File::Spec::Unix; - -$VERSION = '1.4'; - -@ISA = qw(File::Spec::Unix); - -my $macfiles; -if ($^O eq 'MacOS') { - $macfiles = eval { require Mac::Files }; -} - -sub case_tolerant { 1 } - - -=head1 NAME - -File::Spec::Mac - File::Spec for Mac OS (Classic) - -=head1 SYNOPSIS - - require File::Spec::Mac; # Done internally by File::Spec if needed - -=head1 DESCRIPTION - -Methods for manipulating file specifications. - -=head1 METHODS - -=over 2 - -=item canonpath - -On Mac OS, there's nothing to be done. Returns what it's given. - -=cut - -sub canonpath { - my ($self,$path) = @_; - return $path; -} - -=item catdir() - -Concatenate two or more directory names to form a path separated by colons -(":") ending with a directory. Resulting paths are B<relative> by default, -but can be forced to be absolute (but avoid this, see below). Automatically -puts a trailing ":" on the end of the complete path, because that's what's -done in MacPerl's environment and helps to distinguish a file path from a -directory path. - -B<IMPORTANT NOTE:> Beginning with version 1.3 of this module, the resulting -path is relative by default and I<not> absolute. This decision was made due -to portability reasons. Since C<File::Spec-E<gt>catdir()> returns relative paths -on all other operating systems, it will now also follow this convention on Mac -OS. Note that this may break some existing scripts. - -The intended purpose of this routine is to concatenate I<directory names>. -But because of the nature of Macintosh paths, some additional possibilities -are allowed to make using this routine give reasonable results for some -common situations. In other words, you are also allowed to concatenate -I<paths> instead of directory names (strictly speaking, a string like ":a" -is a path, but not a name, since it contains a punctuation character ":"). - -So, beside calls like - - catdir("a") = ":a:" - catdir("a","b") = ":a:b:" - catdir() = "" (special case) - -calls like the following - - catdir(":a:") = ":a:" - catdir(":a","b") = ":a:b:" - catdir(":a:","b") = ":a:b:" - catdir(":a:",":b:") = ":a:b:" - catdir(":") = ":" - -are allowed. - -Here are the rules that are used in C<catdir()>; note that we try to be as -compatible as possible to Unix: - -=over 2 - -=item 1. - -The resulting path is relative by default, i.e. the resulting path will have a -leading colon. - -=item 2. - -A trailing colon is added automatically to the resulting path, to denote a -directory. - -=item 3. - -Generally, each argument has one leading ":" and one trailing ":" -removed (if any). They are then joined together by a ":". Special -treatment applies for arguments denoting updir paths like "::lib:", -see (4), or arguments consisting solely of colons ("colon paths"), -see (5). - -=item 4. - -When an updir path like ":::lib::" is passed as argument, the number -of directories to climb up is handled correctly, not removing leading -or trailing colons when necessary. E.g. - - catdir(":::a","::b","c") = ":::a::b:c:" - catdir(":::a::","::b","c") = ":::a:::b:c:" - -=item 5. - -Adding a colon ":" or empty string "" to a path at I<any> position -doesn't alter the path, i.e. these arguments are ignored. (When a "" -is passed as the first argument, it has a special meaning, see -(6)). This way, a colon ":" is handled like a "." (curdir) on Unix, -while an empty string "" is generally ignored (see -C<Unix-E<gt>canonpath()> ). Likewise, a "::" is handled like a ".." -(updir), and a ":::" is handled like a "../.." etc. E.g. - - catdir("a",":",":","b") = ":a:b:" - catdir("a",":","::",":b") = ":a::b:" - -=item 6. - -If the first argument is an empty string "" or is a volume name, i.e. matches -the pattern /^[^:]+:/, the resulting path is B<absolute>. - -=item 7. - -Passing an empty string "" as the first argument to C<catdir()> is -like passingC<File::Spec-E<gt>rootdir()> as the first argument, i.e. - - catdir("","a","b") is the same as - - catdir(rootdir(),"a","b"). - -This is true on Unix, where C<catdir("","a","b")> yields "/a/b" and -C<rootdir()> is "/". Note that C<rootdir()> on Mac OS is the startup -volume, which is the closest in concept to Unix' "/". This should help -to run existing scripts originally written for Unix. - -=item 8. - -For absolute paths, some cleanup is done, to ensure that the volume -name isn't immediately followed by updirs. This is invalid, because -this would go beyond "root". Generally, these cases are handled like -their Unix counterparts: - - Unix: - Unix->catdir("","") = "/" - Unix->catdir("",".") = "/" - Unix->catdir("","..") = "/" # can't go beyond root - Unix->catdir("",".","..","..","a") = "/a" - Mac: - Mac->catdir("","") = rootdir() # (e.g. "HD:") - Mac->catdir("",":") = rootdir() - Mac->catdir("","::") = rootdir() # can't go beyond root - Mac->catdir("",":","::","::","a") = rootdir() . "a:" # (e.g. "HD:a:") - -However, this approach is limited to the first arguments following -"root" (again, see C<Unix-E<gt>canonpath()> ). If there are more -arguments that move up the directory tree, an invalid path going -beyond root can be created. - -=back - -As you've seen, you can force C<catdir()> to create an absolute path -by passing either an empty string or a path that begins with a volume -name as the first argument. However, you are strongly encouraged not -to do so, since this is done only for backward compatibility. Newer -versions of File::Spec come with a method called C<catpath()> (see -below), that is designed to offer a portable solution for the creation -of absolute paths. It takes volume, directory and file portions and -returns an entire path. While C<catdir()> is still suitable for the -concatenation of I<directory names>, you are encouraged to use -C<catpath()> to concatenate I<volume names> and I<directory -paths>. E.g. - - $dir = File::Spec->catdir("tmp","sources"); - $abs_path = File::Spec->catpath("MacintoshHD:", $dir,""); - -yields - - "MacintoshHD:tmp:sources:" . - -=cut - -sub catdir { - my $self = shift; - return '' unless @_; - my @args = @_; - my $first_arg; - my $relative; - - # take care of the first argument - - if ($args[0] eq '') { # absolute path, rootdir - shift @args; - $relative = 0; - $first_arg = $self->rootdir; - - } elsif ($args[0] =~ /^[^:]+:/) { # absolute path, volume name - $relative = 0; - $first_arg = shift @args; - # add a trailing ':' if need be (may be it's a path like HD:dir) - $first_arg = "$first_arg:" unless ($first_arg =~ /:\Z(?!\n)/); - - } else { # relative path - $relative = 1; - if ( $args[0] =~ /^::+\Z(?!\n)/ ) { - # updir colon path ('::', ':::' etc.), don't shift - $first_arg = ':'; - } elsif ($args[0] eq ':') { - $first_arg = shift @args; - } else { - # add a trailing ':' if need be - $first_arg = shift @args; - $first_arg = "$first_arg:" unless ($first_arg =~ /:\Z(?!\n)/); - } - } - - # For all other arguments, - # (a) ignore arguments that equal ':' or '', - # (b) handle updir paths specially: - # '::' -> concatenate '::' - # '::' . '::' -> concatenate ':::' etc. - # (c) add a trailing ':' if need be - - my $result = $first_arg; - while (@args) { - my $arg = shift @args; - unless (($arg eq '') || ($arg eq ':')) { - if ($arg =~ /^::+\Z(?!\n)/ ) { # updir colon path like ':::' - my $updir_count = length($arg) - 1; - while ((@args) && ($args[0] =~ /^::+\Z(?!\n)/) ) { # while updir colon path - $arg = shift @args; - $updir_count += (length($arg) - 1); - } - $arg = (':' x $updir_count); - } else { - $arg =~ s/^://s; # remove a leading ':' if any - $arg = "$arg:" unless ($arg =~ /:\Z(?!\n)/); # ensure trailing ':' - } - $result .= $arg; - }#unless - } - - if ( ($relative) && ($result !~ /^:/) ) { - # add a leading colon if need be - $result = ":$result"; - } - - unless ($relative) { - # remove updirs immediately following the volume name - $result =~ s/([^:]+:)(:*)(.*)\Z(?!\n)/$1$3/; - } - - return $result; -} - -=item catfile - -Concatenate one or more directory names and a filename to form a -complete path ending with a filename. Resulting paths are B<relative> -by default, but can be forced to be absolute (but avoid this). - -B<IMPORTANT NOTE:> Beginning with version 1.3 of this module, the -resulting path is relative by default and I<not> absolute. This -decision was made due to portability reasons. Since -C<File::Spec-E<gt>catfile()> returns relative paths on all other -operating systems, it will now also follow this convention on Mac OS. -Note that this may break some existing scripts. - -The last argument is always considered to be the file portion. Since -C<catfile()> uses C<catdir()> (see above) for the concatenation of the -directory portions (if any), the following with regard to relative and -absolute paths is true: - - catfile("") = "" - catfile("file") = "file" - -but - - catfile("","") = rootdir() # (e.g. "HD:") - catfile("","file") = rootdir() . file # (e.g. "HD:file") - catfile("HD:","file") = "HD:file" - -This means that C<catdir()> is called only when there are two or more -arguments, as one might expect. - -Note that the leading ":" is removed from the filename, so that - - catfile("a","b","file") = ":a:b:file" and - - catfile("a","b",":file") = ":a:b:file" - -give the same answer. - -To concatenate I<volume names>, I<directory paths> and I<filenames>, -you are encouraged to use C<catpath()> (see below). - -=cut - -sub catfile { - my $self = shift; - return '' unless @_; - my $file = pop @_; - return $file unless @_; - my $dir = $self->catdir(@_); - $file =~ s/^://s; - return $dir.$file; -} - -=item curdir - -Returns a string representing the current directory. On Mac OS, this is ":". - -=cut - -sub curdir { - return ":"; -} - -=item devnull - -Returns a string representing the null device. On Mac OS, this is "Dev:Null". - -=cut - -sub devnull { - return "Dev:Null"; -} - -=item rootdir - -Returns a string representing the root directory. Under MacPerl, -returns the name of the startup volume, since that's the closest in -concept, although other volumes aren't rooted there. The name has a -trailing ":", because that's the correct specification for a volume -name on Mac OS. - -If Mac::Files could not be loaded, the empty string is returned. - -=cut - -sub rootdir { -# -# There's no real root directory on Mac OS. The name of the startup -# volume is returned, since that's the closest in concept. -# - return '' unless $macfiles; - my $system = Mac::Files::FindFolder(&Mac::Files::kOnSystemDisk, - &Mac::Files::kSystemFolderType); - $system =~ s/:.*\Z(?!\n)/:/s; - return $system; -} - -=item tmpdir - -Returns the contents of $ENV{TMPDIR}, if that directory exits or the -current working directory otherwise. Under MacPerl, $ENV{TMPDIR} will -contain a path like "MacintoshHD:Temporary Items:", which is a hidden -directory on your startup volume. - -=cut - -my $tmpdir; -sub tmpdir { - return $tmpdir if defined $tmpdir; - $tmpdir = $_[0]->_tmpdir( $ENV{TMPDIR} ); -} - -=item updir - -Returns a string representing the parent directory. On Mac OS, this is "::". - -=cut - -sub updir { - return "::"; -} - -=item file_name_is_absolute - -Takes as argument a path and returns true, if it is an absolute path. -If the path has a leading ":", it's a relative path. Otherwise, it's an -absolute path, unless the path doesn't contain any colons, i.e. it's a name -like "a". In this particular case, the path is considered to be relative -(i.e. it is considered to be a filename). Use ":" in the appropriate place -in the path if you want to distinguish unambiguously. As a special case, -the filename '' is always considered to be absolute. Note that with version -1.2 of File::Spec::Mac, this does no longer consult the local filesystem. - -E.g. - - File::Spec->file_name_is_absolute("a"); # false (relative) - File::Spec->file_name_is_absolute(":a:b:"); # false (relative) - File::Spec->file_name_is_absolute("MacintoshHD:"); # true (absolute) - File::Spec->file_name_is_absolute(""); # true (absolute) - - -=cut - -sub file_name_is_absolute { - my ($self,$file) = @_; - if ($file =~ /:/) { - return (! ($file =~ m/^:/s) ); - } elsif ( $file eq '' ) { - return 1 ; - } else { - return 0; # i.e. a file like "a" - } -} - -=item path - -Returns the null list for the MacPerl application, since the concept is -usually meaningless under Mac OS. But if you're using the MacPerl tool under -MPW, it gives back $ENV{Commands} suitably split, as is done in -:lib:ExtUtils:MM_Mac.pm. - -=cut - -sub path { -# -# The concept is meaningless under the MacPerl application. -# Under MPW, it has a meaning. -# - return unless exists $ENV{Commands}; - return split(/,/, $ENV{Commands}); -} - -=item splitpath - - ($volume,$directories,$file) = File::Spec->splitpath( $path ); - ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file ); - -Splits a path into volume, directory, and filename portions. - -On Mac OS, assumes that the last part of the path is a filename unless -$no_file is true or a trailing separator ":" is present. - -The volume portion is always returned with a trailing ":". The directory portion -is always returned with a leading (to denote a relative path) and a trailing ":" -(to denote a directory). The file portion is always returned I<without> a leading ":". -Empty portions are returned as empty string ''. - -The results can be passed to C<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 ) { - ( $volume, $directory ) = $path =~ m|^((?:[^:]+:)?)(.*)|s; - } - else { - $path =~ - m|^( (?: [^:]+: )? ) - ( (?: .*: )? ) - ( .* ) - |xs; - $volume = $1; - $directory = $2; - $file = $3; - } - - $volume = '' unless defined($volume); - $directory = ":$directory" if ( $volume && $directory ); # take care of "HD::dir" - if ($directory) { - # Make sure non-empty directories begin and end in ':' - $directory .= ':' unless (substr($directory,-1) eq ':'); - $directory = ":$directory" unless (substr($directory,0,1) eq ':'); - } else { - $directory = ''; - } - $file = '' unless defined($file); - - return ($volume,$directory,$file); -} - - -=item splitdir - -The opposite of C<catdir()>. - - @dirs = File::Spec->splitdir( $directories ); - -$directories should 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. Consider using C<splitpath()> otherwise. - -Unlike just splitting the directories on the separator, empty directory names -(C<"">) can be returned. Since C<catdir()> on Mac OS always appends a trailing -colon to distinguish a directory path from a file path, a single trailing colon -will be ignored, i.e. there's no empty directory name after it. - -Hence, on Mac OS, both - - File::Spec->splitdir( ":a:b::c:" ); and - File::Spec->splitdir( ":a:b::c" ); - -yield: - - ( "a", "b", "::", "c") - -while - - File::Spec->splitdir( ":a:b::c::" ); - -yields: - - ( "a", "b", "::", "c", "::") - - -=cut - -sub splitdir { - my ($self, $path) = @_; - my @result = (); - my ($head, $sep, $tail, $volume, $directories); - - return ('') if ( (!defined($path)) || ($path eq '') ); - return (':') if ($path eq ':'); - - ( $volume, $sep, $directories ) = $path =~ m|^((?:[^:]+:)?)(:*)(.*)|s; - - # deprecated, but handle it correctly - if ($volume) { - push (@result, $volume); - $sep .= ':'; - } - - while ($sep || $directories) { - if (length($sep) > 1) { - my $updir_count = length($sep) - 1; - for (my $i=0; $i<$updir_count; $i++) { - # push '::' updir_count times; - # simulate Unix '..' updirs - push (@result, '::'); - } - } - $sep = ''; - if ($directories) { - ( $head, $sep, $tail ) = $directories =~ m|^((?:[^:]+)?)(:*)(.*)|s; - push (@result, $head); - $directories = $tail; - } - } - return @result; -} - - -=item catpath - - $path = File::Spec->catpath($volume,$directory,$file); - -Takes volume, directory and file portions and returns an entire path. On Mac OS, -$volume, $directory and $file are concatenated. A ':' is inserted if need be. You -may pass an empty string for each portion. If all portions are empty, the empty -string is returned. If $volume is empty, the result will be a relative path, -beginning with a ':'. If $volume and $directory are empty, a leading ":" (if any) -is removed form $file and the remainder is returned. If $file is empty, the -resulting path will have a trailing ':'. - - -=cut - -sub catpath { - my ($self,$volume,$directory,$file) = @_; - - if ( (! $volume) && (! $directory) ) { - $file =~ s/^:// if $file; - return $file ; - } - - # We look for a volume in $volume, then in $directory, but not both - - my ($dir_volume, $dir_dirs) = $self->splitpath($directory, 1); - - $volume = $dir_volume unless length $volume; - my $path = $volume; # may be '' - $path .= ':' unless (substr($path, -1) eq ':'); # ensure trailing ':' - - if ($directory) { - $directory = $dir_dirs if $volume; - $directory =~ s/^://; # remove leading ':' if any - $path .= $directory; - $path .= ':' unless (substr($path, -1) eq ':'); # ensure trailing ':' - } - - if ($file) { - $file =~ s/^://; # remove leading ':' if any - $path .= $file; - } - - return $path; -} - -=item abs2rel - -Takes a destination path and an optional base path and 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 ) ; - -Note that both paths are assumed to have a notation that distinguishes a -directory path (with trailing ':') from a file path (without trailing ':'). - -If $base is not present or '', then the current working directory is used. -If $base is relative, then it is converted to absolute form using C<rel2abs()>. -This means that it is taken to be relative to the current working directory. - -If $path and $base appear to be on two different volumes, we will not -attempt to resolve the two paths, and we will instead simply return -$path. Note that previous versions of this module ignored the volume -of $base, which resulted in garbage results part of the time. - -If $base doesn't have a trailing colon, the last element of $base is -assumed to be a filename. This filename is ignored. Otherwise all path -components are assumed to be directories. - -If $path is relative, it is converted to absolute form using C<rel2abs()>. -This means that it is taken to be relative to the current working directory. - -Based on code written by Shigio Yamaguchi. - - -=cut - -# maybe this should be done in canonpath() ? -sub _resolve_updirs { - my $path = shift @_; - my $proceed; - - # resolve any updirs, e.g. "HD:tmp::file" -> "HD:file" - do { - $proceed = ($path =~ s/^(.*):[^:]+::(.*?)\z/$1:$2/); - } while ($proceed); - - return $path; -} - - -sub abs2rel { - my($self,$path,$base) = @_; - - # Clean up $path - if ( ! $self->file_name_is_absolute( $path ) ) { - $path = $self->rel2abs( $path ) ; - } - - # Figure out the effective $base and clean it up. - if ( !defined( $base ) || $base eq '' ) { - $base = $self->_cwd(); - } - elsif ( ! $self->file_name_is_absolute( $base ) ) { - $base = $self->rel2abs( $base ) ; - $base = _resolve_updirs( $base ); # resolve updirs in $base - } - else { - $base = _resolve_updirs( $base ); - } - - # Split up paths - ignore $base's file - my ( $path_vol, $path_dirs, $path_file ) = $self->splitpath( $path ); - my ( $base_vol, $base_dirs ) = $self->splitpath( $base ); - - return $path unless lc( $path_vol ) eq lc( $base_vol ); - - # Now, remove all leading components that are the same - my @pathchunks = $self->splitdir( $path_dirs ); - my @basechunks = $self->splitdir( $base_dirs ); - - while ( @pathchunks && - @basechunks && - lc( $pathchunks[0] ) eq lc( $basechunks[0] ) ) { - shift @pathchunks ; - shift @basechunks ; - } - - # @pathchunks now has the directories to descend in to. - # ensure relative path, even if @pathchunks is empty - $path_dirs = $self->catdir( ':', @pathchunks ); - - # @basechunks now contains the number of directories to climb out of. - $base_dirs = (':' x @basechunks) . ':' ; - - return $self->catpath( '', $self->catdir( $base_dirs, $path_dirs ), $path_file ) ; -} - -=item rel2abs - -Converts a relative path to an absolute path: - - $abs_path = File::Spec->rel2abs( $path ) ; - $abs_path = File::Spec->rel2abs( $path, $base ) ; - -Note that both paths are assumed to have a notation that distinguishes a -directory path (with trailing ':') from a file path (without trailing ':'). - -If $base is not present or '', then $base is set to the current working -directory. If $base is relative, then it is converted to absolute form -using C<rel2abs()>. This means that it is taken to be relative to the -current working directory. - -If $base doesn't have a trailing colon, the last element of $base is -assumed to be a filename. This filename is ignored. Otherwise all path -components are assumed to be directories. - -If $path is already absolute, it is returned and $base is ignored. - -Based on code written by Shigio Yamaguchi. - -=cut - -sub rel2abs { - my ($self,$path,$base) = @_; - - if ( ! $self->file_name_is_absolute($path) ) { - # Figure out the effective $base and clean it up. - if ( !defined( $base ) || $base eq '' ) { - $base = $self->_cwd(); - } - elsif ( ! $self->file_name_is_absolute($base) ) { - $base = $self->rel2abs($base) ; - } - - # Split up paths - - # igonore $path's volume - my ( $path_dirs, $path_file ) = ($self->splitpath($path))[1,2] ; - - # ignore $base's file part - my ( $base_vol, $base_dirs ) = $self->splitpath($base) ; - - # Glom them together - $path_dirs = ':' if ($path_dirs eq ''); - $base_dirs =~ s/:$//; # remove trailing ':', if any - $base_dirs = $base_dirs . $path_dirs; - - $path = $self->catpath( $base_vol, $base_dirs, $path_file ); - } - return $path; -} - - -=back - -=head1 AUTHORS - -See the authors list in I<File::Spec>. Mac OS support by Paul Schinder -<schinder@pobox.com> and Thomas Wegner <wegner_thomas@yahoo.com>. - -=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 - -See L<File::Spec> and L<File::Spec::Unix>. This package overrides the -implementation of these methods, not the semantics. - -=cut - -1; diff --git a/Master/tlpkg/tlperl.old/lib/File/Spec/OS2.pm b/Master/tlpkg/tlperl.old/lib/File/Spec/OS2.pm deleted file mode 100644 index ec308f3b6f3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Spec/OS2.pm +++ /dev/null @@ -1,272 +0,0 @@ -package File::Spec::OS2; - -use strict; -use vars qw(@ISA $VERSION); -require File::Spec::Unix; - -$VERSION = '1.2'; - -@ISA = qw(File::Spec::Unix); - -sub devnull { - return "/dev/nul"; -} - -sub case_tolerant { - return 1; -} - -sub file_name_is_absolute { - my ($self,$file) = @_; - return scalar($file =~ m{^([a-z]:)?[\\/]}is); -} - -sub path { - my $path = $ENV{PATH}; - $path =~ s:\\:/:g; - my @path = split(';',$path); - foreach (@path) { $_ = '.' if $_ eq '' } - return @path; -} - -sub _cwd { - # In OS/2 the "require Cwd" is unnecessary bloat. - return Cwd::sys_cwd(); -} - -my $tmpdir; -sub tmpdir { - return $tmpdir if defined $tmpdir; - $tmpdir = $_[0]->_tmpdir( @ENV{qw(TMPDIR TEMP TMP)}, - '/tmp', - '/' ); -} - -sub catdir { - my $self = shift; - my @args = @_; - foreach (@args) { - tr[\\][/]; - # append a backslash to each argument unless it has one there - $_ .= "/" unless m{/$}; - } - return $self->canonpath(join('', @args)); -} - -sub canonpath { - my ($self,$path) = @_; - $path =~ s/^([a-z]:)/\l$1/s; - $path =~ s|\\|/|g; - $path =~ s|([^/])/+|$1/|g; # xx////xx -> xx/xx - $path =~ s|(/\.)+/|/|g; # xx/././xx -> xx/xx - $path =~ s|^(\./)+(?=[^/])||s; # ./xx -> xx - $path =~ s|/\Z(?!\n)|| - unless $path =~ m#^([a-z]:)?/\Z(?!\n)#si;# xx/ -> xx - $path =~ s{^/\.\.$}{/}; # /.. -> / - 1 while $path =~ s{^/\.\.}{}; # /../xx -> /xx - return $path; -} - - -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); -} - - -sub splitdir { - my ($self,$directories) = @_ ; - split m|[\\/]|, $directories, -1; -} - - -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 = $self->_cwd(); - } elsif ( ! $self->file_name_is_absolute( $base ) ) { - $base = $self->rel2abs( $base ) ; - } else { - $base = $self->canonpath( $base ) ; - } - - # Split up paths - my ( $path_volume, $path_directories, $path_file ) = $self->splitpath( $path, 1 ) ; - my ( $base_volume, $base_directories ) = $self->splitpath( $base, 1 ) ; - return $path unless $path_volume eq $base_volume; - - # 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 = $self->_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 ) ; -} - -1; -__END__ - -=head1 NAME - -File::Spec::OS2 - methods for OS/2 file specs - -=head1 SYNOPSIS - - require File::Spec::OS2; # Done internally by File::Spec if needed - -=head1 DESCRIPTION - -See L<File::Spec> and L<File::Spec::Unix>. This package overrides the -implementation of these methods, not the semantics. - -Amongst the changes made for OS/2 are... - -=over 4 - -=item tmpdir - -Modifies the list of places temp directory information is looked for. - - $ENV{TMPDIR} - $ENV{TEMP} - $ENV{TMP} - /tmp - / - -=item splitpath - -Volumes can be drive letters or UNC sharenames (\\server\share). - -=back - -=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. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/File/Spec/Unix.pm b/Master/tlpkg/tlperl.old/lib/File/Spec/Unix.pm deleted file mode 100644 index 4a25fe632f2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Spec/Unix.pm +++ /dev/null @@ -1,510 +0,0 @@ -package File::Spec::Unix; - -use strict; -use vars qw($VERSION); - -$VERSION = '1.5'; - -=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 ) ; - -Note that this does *not* collapse F<x/../y> sections into F<y>. This -is by design. If F</foo> on your system is a symlink to F</bar/baz>, -then F</foo/../quux> is actually F</bar/quux>, not F</quux> as a naive -F<../>-removal would give you. If you want to do this kind of -processing, you probably want C<Cwd>'s C<realpath()> function to -actually traverse the filesystem cleaning up paths like this. - -=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|^/(\.\./)+|/|; # /../../xx -> xx - $path =~ s|^/\.\.$|/|; # /.. -> / - $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; - - $self->canonpath(join('/', @_, '')); # '' because need a trailing '/' -} - -=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 = $self->canonpath(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 () { '.' } - -=item devnull - -Returns a string representation of the null device. "/dev/null" on UNIX. - -=cut - -sub devnull () { '/dev/null' } - -=item rootdir - -Returns a string representation of the root directory. "/" on UNIX. - -=cut - -sub rootdir () { '/' } - -=item tmpdir - -Returns a string representation of the first writable directory from -the following list or the current directory if none from the list 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 $self = shift; - my @dirlist = @_; - { - 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 && -w _; - $tmpdir = $_; - last; - } - $tmpdir = $self->curdir unless defined $tmpdir; - $tmpdir = defined $tmpdir && $self->canonpath($tmpdir); - return $tmpdir; -} - -sub tmpdir { - return $tmpdir if defined $tmpdir; - $tmpdir = $_[0]->_tmpdir( $ENV{TMPDIR}, "/tmp" ); -} - -=item updir - -Returns a string representation of the parent directory. ".." on UNIX. - -=cut - -sub 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.) - -=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 () { 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 { - return () unless exists $ENV{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 into volume, directory, and filename portions. On systems -with no concept of volume, returns '' 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 { - return split m|/|, $_[1], -1; # Preserve trailing fields -} - - -=item catpath() - -Takes volume, directory and file portions and returns an entire path. Under -Unix, $volume is ignored, and directory and file are concatenated. 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 that have a grammar that indicates filenames, this ignores the -$base filename. 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 = $self->_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 that have a grammar that indicates filenames, this ignores -the $base filename. 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 = $self->_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 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 - -L<File::Spec> - -=cut - -# Internal routine to File::Spec, no point in making this public since -# it is the standard Cwd interface. Most of the platform-specific -# File::Spec subclasses use this. -sub _cwd { - require Cwd; - Cwd::cwd(); -} - - -# Internal method to reduce xx\..\yy -> yy -sub _collapse { - my($fs, $path) = @_; - - my $updir = $fs->updir; - my $curdir = $fs->curdir; - - my($vol, $dirs, $file) = $fs->splitpath($path); - my @dirs = $fs->splitdir($dirs); - - my @collapsed; - foreach my $dir (@dirs) { - if( $dir eq $updir and # if we have an updir - @collapsed and # and something to collapse - length $collapsed[-1] and # and its not the rootdir - $collapsed[-1] ne $updir and # nor another updir - $collapsed[-1] ne $curdir # nor the curdir - ) - { # then - pop @collapsed; # collapse - } - else { # else - push @collapsed, $dir; # just hang onto it - } - } - - return $fs->catpath($vol, - $fs->catdir(@collapsed), - $file - ); -} - - -1; diff --git a/Master/tlpkg/tlperl.old/lib/File/Spec/VMS.pm b/Master/tlpkg/tlperl.old/lib/File/Spec/VMS.pm deleted file mode 100644 index f8923f25fb2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Spec/VMS.pm +++ /dev/null @@ -1,521 +0,0 @@ -package File::Spec::VMS; - -use strict; -use vars qw(@ISA $VERSION); -require File::Spec::Unix; - -$VERSION = '1.4'; - -@ISA = qw(File::Spec::Unix); - -use File::Basename; -use VMS::Filespec; - -=head1 NAME - -File::Spec::VMS - methods for VMS file specs - -=head1 SYNOPSIS - - require File::Spec::VMS; # Done internally by File::Spec if needed - -=head1 DESCRIPTION - -See File::Spec::Unix for a documentation of the methods provided -there. This package overrides the implementation of these methods, not -the semantics. - -=over 4 - -=item canonpath (override) - -Removes redundant portions of file specifications according to VMS syntax. - -=cut - -sub canonpath { - my($self,$path) = @_; - - if ($path =~ m|/|) { # Fake Unix - my $pathify = $path =~ m|/\Z(?!\n)|; - $path = $self->SUPER::canonpath($path); - if ($pathify) { return vmspath($path); } - else { return vmsify($path); } - } - else { - $path =~ tr/<>/[]/; # < and > ==> [ and ] - $path =~ s/\]\[\./\.\]\[/g; # ][. ==> .][ - $path =~ s/\[000000\.\]\[/\[/g; # [000000.][ ==> [ - $path =~ s/\[000000\./\[/g; # [000000. ==> [ - $path =~ s/\.\]\[000000\]/\]/g; # .][000000] ==> ] - $path =~ s/\.\]\[/\./g; # foo.][bar ==> foo.bar - 1 while ($path =~ s/([\[\.])(-+)\.(-+)([\.\]])/$1$2$3$4/); - # That loop does the following - # with any amount of dashes: - # .-.-. ==> .--. - # [-.-. ==> [--. - # .-.-] ==> .--] - # [-.-] ==> [--] - 1 while ($path =~ s/([\[\.])[^\]\.]+\.-(-+)([\]\.])/$1$2$3/); - # That loop does the following - # with any amount (minimum 2) - # of dashes: - # .foo.--. ==> .-. - # .foo.--] ==> .-] - # [foo.--. ==> [-. - # [foo.--] ==> [-] - # - # And then, the remaining cases - $path =~ s/\[\.-/[-/; # [.- ==> [- - $path =~ s/\.[^\]\.]+\.-\./\./g; # .foo.-. ==> . - $path =~ s/\[[^\]\.]+\.-\./\[/g; # [foo.-. ==> [ - $path =~ s/\.[^\]\.]+\.-\]/\]/g; # .foo.-] ==> ] - $path =~ s/\[[^\]\.]+\.-\]/\[000000\]/g;# [foo.-] ==> [000000] - $path =~ s/\[\]//; # [] ==> - return $path; - } -} - -=item catdir (override) - -Concatenates a list of file specifications, and returns the result as a -VMS-syntax directory specification. No check is made for "impossible" -cases (e.g. elements other than the first being absolute filespecs). - -=cut - -sub catdir { - my ($self,@dirs) = @_; - my $dir = pop @dirs; - @dirs = grep($_,@dirs); - my $rslt; - if (@dirs) { - my $path = (@dirs == 1 ? $dirs[0] : $self->catdir(@dirs)); - my ($spath,$sdir) = ($path,$dir); - $spath =~ s/\.dir\Z(?!\n)//; $sdir =~ s/\.dir\Z(?!\n)//; - $sdir = $self->eliminate_macros($sdir) unless $sdir =~ /^[\w\-]+\Z(?!\n)/s; - $rslt = $self->fixpath($self->eliminate_macros($spath)."/$sdir",1); - - # Special case for VMS absolute directory specs: these will have had device - # prepended during trip through Unix syntax in eliminate_macros(), since - # Unix syntax has no way to express "absolute from the top of this device's - # directory tree". - if ($spath =~ /^[\[<][^.\-]/s) { $rslt =~ s/^[^\[<]+//s; } - } - else { - if (not defined $dir or not length $dir) { $rslt = ''; } - elsif ($dir =~ /^\$\([^\)]+\)\Z(?!\n)/s) { $rslt = $dir; } - else { $rslt = vmspath($dir); } - } - return $self->canonpath($rslt); -} - -=item catfile (override) - -Concatenates a list of file specifications, and returns the result as a -VMS-syntax file specification. - -=cut - -sub catfile { - my ($self,@files) = @_; - my $file = $self->canonpath(pop @files); - @files = grep($_,@files); - my $rslt; - if (@files) { - my $path = (@files == 1 ? $files[0] : $self->catdir(@files)); - my $spath = $path; - $spath =~ s/\.dir\Z(?!\n)//; - if ($spath =~ /^[^\)\]\/:>]+\)\Z(?!\n)/s && basename($file) eq $file) { - $rslt = "$spath$file"; - } - else { - $rslt = $self->eliminate_macros($spath); - $rslt = vmsify($rslt.($rslt ? '/' : '').unixify($file)); - } - } - else { $rslt = (defined($file) && length($file)) ? vmsify($file) : ''; } - return $self->canonpath($rslt); -} - - -=item curdir (override) - -Returns a string representation of the current directory: '[]' - -=cut - -sub curdir { - return '[]'; -} - -=item devnull (override) - -Returns a string representation of the null device: '_NLA0:' - -=cut - -sub devnull { - return "_NLA0:"; -} - -=item rootdir (override) - -Returns a string representation of the root directory: 'SYS$DISK:[000000]' - -=cut - -sub rootdir { - return 'SYS$DISK:[000000]'; -} - -=item tmpdir (override) - -Returns a string representation of the first writable directory -from the following list or '' if none are writable: - - sys$scratch: - $ENV{TMPDIR} - -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; - $tmpdir = $_[0]->_tmpdir( 'sys$scratch:', $ENV{TMPDIR} ); -} - -=item updir (override) - -Returns a string representation of the parent directory: '[-]' - -=cut - -sub updir { - return '[-]'; -} - -=item case_tolerant (override) - -VMS file specification syntax is case-tolerant. - -=cut - -sub case_tolerant { - return 1; -} - -=item path (override) - -Translate logical name DCL$PATH as a searchlist, rather than trying -to C<split> string value of C<$ENV{'PATH'}>. - -=cut - -sub path { - my (@dirs,$dir,$i); - while ($dir = $ENV{'DCL$PATH;' . $i++}) { push(@dirs,$dir); } - return @dirs; -} - -=item file_name_is_absolute (override) - -Checks for VMS directory spec as well as Unix separators. - -=cut - -sub file_name_is_absolute { - my ($self,$file) = @_; - # If it's a logical name, expand it. - $file = $ENV{$file} while $file =~ /^[\w\$\-]+\Z(?!\n)/s && $ENV{$file}; - return scalar($file =~ m!^/!s || - $file =~ m![<\[][^.\-\]>]! || - $file =~ /:[^<\[]/); -} - -=item splitpath (override) - -Splits using VMS syntax. - -=cut - -sub splitpath { - my($self,$path) = @_; - my($dev,$dir,$file) = ('','',''); - - vmsify($path) =~ /(.+:)?([\[<].*[\]>])?(.*)/s; - return ($1 || '',$2 || '',$3); -} - -=item splitdir (override) - -Split dirspec using VMS syntax. - -=cut - -sub splitdir { - my($self,$dirspec) = @_; - $dirspec =~ tr/<>/[]/; # < and > ==> [ and ] - $dirspec =~ s/\]\[\./\.\]\[/g; # ][. ==> .][ - $dirspec =~ s/\[000000\.\]\[/\[/g; # [000000.][ ==> [ - $dirspec =~ s/\[000000\./\[/g; # [000000. ==> [ - $dirspec =~ s/\.\]\[000000\]/\]/g; # .][000000] ==> ] - $dirspec =~ s/\.\]\[/\./g; # foo.][bar ==> foo.bar - while ($dirspec =~ s/(^|[\[\<\.])\-(\-+)($|[\]\>\.])/$1-.$2$3/g) {} - # That loop does the following - # with any amount of dashes: - # .--. ==> .-.-. - # [--. ==> [-.-. - # .--] ==> .-.-] - # [--] ==> [-.-] - $dirspec = "[$dirspec]" unless $dirspec =~ /[\[<]/; # make legal - my(@dirs) = split('\.', vmspath($dirspec)); - $dirs[0] =~ s/^[\[<]//s; $dirs[-1] =~ s/[\]>]\Z(?!\n)//s; - @dirs; -} - - -=item catpath (override) - -Construct a complete filespec using VMS syntax - -=cut - -sub catpath { - my($self,$dev,$dir,$file) = @_; - - # We look for a volume in $dev, then in $dir, but not both - my ($dir_volume, $dir_dir, $dir_file) = $self->splitpath($dir); - $dev = $dir_volume unless length $dev; - $dir = length $dir_file ? $self->catfile($dir_dir, $dir_file) : $dir_dir; - - if ($dev =~ m|^/+([^/]+)|) { $dev = "$1:"; } - else { $dev .= ':' unless $dev eq '' or $dev =~ /:\Z(?!\n)/; } - if (length($dev) or length($dir)) { - $dir = "[$dir]" unless $dir =~ /[\[<\/]/; - $dir = vmspath($dir); - } - "$dev$dir$file"; -} - -=item abs2rel (override) - -Use VMS syntax when converting filespecs. - -=cut - -sub abs2rel { - my $self = shift; - return vmspath(File::Spec::Unix::abs2rel( $self, @_ )) - if grep m{/}, @_; - - my($path,$base) = @_; - $base = $self->_cwd() unless defined $base and length $base; - - for ($path, $base) { $_ = $self->canonpath($_) } - - # Are we even starting $path on the same (node::)device as $base? Note that - # logical paths or nodename differences may be on the "same device" - # but the comparison that ignores device differences so as to concatenate - # [---] up directory specs is not even a good idea in cases where there is - # a logical path difference between $path and $base nodename and/or device. - # Hence we fall back to returning the absolute $path spec - # if there is a case blind device (or node) difference of any sort - # and we do not even try to call $parse() or consult %ENV for $trnlnm() - # (this module needs to run on non VMS platforms after all). - - my ($path_volume, $path_directories, $path_file) = $self->splitpath($path); - my ($base_volume, $base_directories, $base_file) = $self->splitpath($base); - return $path unless lc($path_volume) eq lc($base_volume); - - for ($path, $base) { $_ = $self->rel2abs($_) } - - # Now, remove all leading components that are the same - my @pathchunks = $self->splitdir( $path_directories ); - unshift(@pathchunks,'000000') unless $pathchunks[0] eq '000000'; - my @basechunks = $self->splitdir( $base_directories ); - unshift(@basechunks,'000000') unless $basechunks[0] eq '000000'; - - while ( @pathchunks && - @basechunks && - lc( $pathchunks[0] ) eq lc( $basechunks[0] ) - ) { - shift @pathchunks ; - shift @basechunks ; - } - - # @basechunks now contains the directories to climb out of, - # @pathchunks now has the directories to descend in to. - $path_directories = join '.', ('-' x @basechunks, @pathchunks) ; - return $self->canonpath( $self->catpath( '', $path_directories, $path_file ) ) ; -} - - -=item rel2abs (override) - -Use VMS syntax when converting filespecs. - -=cut - -sub rel2abs { - my $self = shift ; - my ($path,$base ) = @_; - return undef unless defined $path; - if ($path =~ m/\//) { - $path = ( -d $path || $path =~ m/\/\z/ # educated guessing about - ? vmspath($path) # whether it's a directory - : vmsify($path) ); - } - $base = vmspath($base) if defined $base && $base =~ m/\//; - # Clean up and split up $path - if ( ! $self->file_name_is_absolute( $path ) ) { - # Figure out the effective $base and clean it up. - if ( !defined( $base ) || $base eq '' ) { - $base = $self->_cwd; - } - elsif ( ! $self->file_name_is_absolute( $base ) ) { - $base = $self->rel2abs( $base ) ; - } - else { - $base = $self->canonpath( $base ) ; - } - - # Split up paths - my ( $path_directories, $path_file ) = - ($self->splitpath( $path ))[1,2] ; - - my ( $base_volume, $base_directories ) = - $self->splitpath( $base ) ; - - $path_directories = '' if $path_directories eq '[]' || - $path_directories eq '<>'; - my $sep = '' ; - $sep = '.' - if ( $base_directories =~ m{[^.\]>]\Z(?!\n)} && - $path_directories =~ m{^[^.\[<]}s - ) ; - $base_directories = "$base_directories$sep$path_directories"; - $base_directories =~ s{\.?[\]>][\[<]\.?}{.}; - - $path = $self->catpath( $base_volume, $base_directories, $path_file ); - } - - return $self->canonpath( $path ) ; -} - - -# eliminate_macros() and fixpath() are MakeMaker-specific methods -# which are used inside catfile() and catdir(). MakeMaker has its own -# copies as of 6.06_03 which are the canonical ones. We leave these -# here, in peace, so that File::Spec continues to work with MakeMakers -# prior to 6.06_03. -# -# Please consider these two methods deprecated. Do not patch them, -# patch the ones in ExtUtils::MM_VMS instead. -sub eliminate_macros { - my($self,$path) = @_; - return '' unless $path; - $self = {} unless ref $self; - - if ($path =~ /\s/) { - return join ' ', map { $self->eliminate_macros($_) } split /\s+/, $path; - } - - my($npath) = unixify($path); - my($complex) = 0; - my($head,$macro,$tail); - - # perform m##g in scalar context so it acts as an iterator - while ($npath =~ m#(.*?)\$\((\S+?)\)(.*)#gs) { - if ($self->{$2}) { - ($head,$macro,$tail) = ($1,$2,$3); - if (ref $self->{$macro}) { - if (ref $self->{$macro} eq 'ARRAY') { - $macro = join ' ', @{$self->{$macro}}; - } - else { - print "Note: can't expand macro \$($macro) containing ",ref($self->{$macro}), - "\n\t(using MMK-specific deferred substitutuon; MMS will break)\n"; - $macro = "\cB$macro\cB"; - $complex = 1; - } - } - else { ($macro = unixify($self->{$macro})) =~ s#/\Z(?!\n)##; } - $npath = "$head$macro$tail"; - } - } - if ($complex) { $npath =~ s#\cB(.*?)\cB#\${$1}#gs; } - $npath; -} - -# Deprecated. See the note above for eliminate_macros(). -sub fixpath { - my($self,$path,$force_path) = @_; - return '' unless $path; - $self = bless {} unless ref $self; - my($fixedpath,$prefix,$name); - - if ($path =~ /\s/) { - return join ' ', - map { $self->fixpath($_,$force_path) } - split /\s+/, $path; - } - - if ($path =~ m#^\$\([^\)]+\)\Z(?!\n)#s || $path =~ m#[/:>\]]#) { - if ($force_path or $path =~ /(?:DIR\)|\])\Z(?!\n)/) { - $fixedpath = vmspath($self->eliminate_macros($path)); - } - else { - $fixedpath = vmsify($self->eliminate_macros($path)); - } - } - elsif ((($prefix,$name) = ($path =~ m#^\$\(([^\)]+)\)(.+)#s)) && $self->{$prefix}) { - my($vmspre) = $self->eliminate_macros("\$($prefix)"); - # is it a dir or just a name? - $vmspre = ($vmspre =~ m|/| or $prefix =~ /DIR\Z(?!\n)/) ? vmspath($vmspre) : ''; - $fixedpath = ($vmspre ? $vmspre : $self->{$prefix}) . $name; - $fixedpath = vmspath($fixedpath) if $force_path; - } - else { - $fixedpath = $path; - $fixedpath = vmspath($fixedpath) if $force_path; - } - # No hints, so we try to guess - if (!defined($force_path) and $fixedpath !~ /[:>(.\]]/) { - $fixedpath = vmspath($fixedpath) if -d $fixedpath; - } - - # Trim off root dirname if it's had other dirs inserted in front of it. - $fixedpath =~ s/\.000000([\]>])/$1/; - # Special case for VMS absolute directory specs: these will have had device - # prepended during trip through Unix syntax in eliminate_macros(), since - # Unix syntax has no way to express "absolute from the top of this device's - # directory tree". - if ($path =~ /^[\[>][^.\-]/) { $fixedpath =~ s/^[^\[<]+//; } - $fixedpath; -} - - -=back - -=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 - -See L<File::Spec> and L<File::Spec::Unix>. This package overrides the -implementation of these methods, not the semantics. - -An explanation of VMS file specs can be found at -L<"http://h71000.www7.hp.com/doc/731FINAL/4506/4506pro_014.html#apps_locating_naming_files">. - -=cut - -1; diff --git a/Master/tlpkg/tlperl.old/lib/File/Spec/Win32.pm b/Master/tlpkg/tlperl.old/lib/File/Spec/Win32.pm deleted file mode 100644 index a324306a74b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Spec/Win32.pm +++ /dev/null @@ -1,369 +0,0 @@ -package File::Spec::Win32; - -use strict; - -use vars qw(@ISA $VERSION); -require File::Spec::Unix; - -$VERSION = '1.6'; - -@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"; -} - -sub rootdir () { '\\' } - - -=item tmpdir - -Returns a string representation of the first existing directory -from the following list: - - $ENV{TMPDIR} - $ENV{TEMP} - $ENV{TMP} - SYS:/temp - C:\system\temp - C:/temp - /tmp - / - -The SYS:/temp is preferred in Novell NetWare and the C:\system\temp -for Symbian (the File::Spec::Win32 is used also for those platforms). - -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; - $tmpdir = $_[0]->_tmpdir( @ENV{qw(TMPDIR TEMP TMP)}, - 'SYS:/temp', - 'C:\system\temp', - 'C:/temp', - '/tmp', - '/' ); -} - -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 = $self->canonpath(pop @_); - return $file unless @_; - my $dir = $self->catdir(@_); - $dir .= "\\" unless substr($dir,-1) eq "\\"; - return $dir.$file; -} - -sub catdir { - my $self = shift; - my @args = @_; - foreach (@args) { - tr[/][\\]; - # append a backslash to each argument unless it has one there - $_ .= "\\" unless m{\\$}; - } - return $self->canonpath(join('', @args)); -} - -sub path { - my @path = split(';', $ENV{PATH}); - s/"//g for @path; - @path = grep length, @path; - unshift(@path, "."); - return @path; -} - -=item canonpath - -No physical check on the filesystem, but a logical cleanup of a -path. On UNIX eliminated successive slashes and successive "/.". -On Win32 makes - - dir1\dir2\dir3\..\..\dir4 -> \dir\dir4 and even - dir1\dir2\dir3\...\dir4 -> \dir\dir4 - -=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 - # xx1/xx2/xx3/../../xx -> xx1/xx - $path =~ s|\\\.\.\.\\|\\\.\.\\\.\.\\|g; # \...\ is 2 levels up - $path =~ s|^\.\.\.\\|\.\.\\\.\.\\|g; # ...\ is 2 levels up - return $path if $path =~ m|^\.\.|; # skip relative paths - return $path unless $path =~ /\.\./; # too few .'s to cleanup - return $path if $path =~ /\.\.\.\./; # too many .'s to cleanup - $path =~ s{^\\\.\.$}{\\}; # \.. -> \ - 1 while $path =~ s{^\\\.\.}{}; # \..\xx -> \xx - - return $self->_collapse($path); -} - -=item splitpath - - ($volume,$directories,$file) = File::Spec->splitpath( $path ); - ($volume,$directories,$file) = File::Spec->splitpath( $path, $no_file ); - -Splits a path into 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, '' ). - -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 - my $v; - $volume .= $v - if ( (($v) = $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) = @_; - $base = $self->_cwd() unless defined $base and length $base; - - for ($path, $base) { $_ = $self->canonpath($_) } - - my ($path_volume) = $self->splitpath($path, 1); - my ($base_volume) = $self->splitpath($base, 1); - - # Can't relativize across volumes - return $path unless $path_volume eq $base_volume; - - for ($path, $base) { $_ = $self->rel2abs($_) } - - my $path_directories = ($self->splitpath($path, 1))[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 ; - } - - my $result_dirs = $self->catdir( ($self->updir) x @basechunks, @pathchunks ); - - return $self->canonpath( $self->catpath('', $result_dirs, '') ); -} - - -sub rel2abs { - my ($self,$path,$base ) = @_; - - if ( ! $self->file_name_is_absolute( $path ) ) { - - if ( !defined( $base ) || $base eq '' ) { - require Cwd ; - $base = Cwd::getdcwd( ($self->splitpath( $path ))[0] ) if defined &Cwd::getdcwd ; - $base = $self->_cwd() unless defined $base ; - } - 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 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 - -See L<File::Spec> and L<File::Spec::Unix>. This package overrides the -implementation of these methods, not the semantics. - -=cut - -1; diff --git a/Master/tlpkg/tlperl.old/lib/File/Temp.pm b/Master/tlpkg/tlperl.old/lib/File/Temp.pm deleted file mode 100644 index 6ddcb3619a7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/Temp.pm +++ /dev/null @@ -1,2244 +0,0 @@ -package File::Temp; - -=head1 NAME - -File::Temp - return name and handle of a temporary file safely - -=begin __INTERNALS - -=head1 PORTABILITY - -This section is at the top in order to provide easier access to -porters. It is not expected to be rendered by a standard pod -formatting tool. Please skip straight to the SYNOPSIS section if you -are not trying to port this module to a new platform. - -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 /; - - $fh = tempfile(); - ($fh, $filename) = tempfile(); - - ($fh, $filename) = tempfile( $template, DIR => $dir); - ($fh, $filename) = tempfile( $template, SUFFIX => '.dat'); - - - $dir = tempdir( CLEANUP => 1 ); - ($fh, $filename) = tempfile( DIR => $dir ); - -Object interface: - - require File::Temp; - use File::Temp (); - - $fh = new File::Temp($template); - $fname = $fh->filename; - - $tmp = new File::Temp( UNLINK => 0, SUFFIX => '.dat' ); - print $tmp "Some data\n"; - print "Filename is $tmp\n"; - -The following interfaces are provided for compatibility with -existing APIs. They should not be used in new code. - -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(); - -Compatibility functions: - - $unopened_file = File::Temp::tempnam( $dir, $pfx ); - -=head1 DESCRIPTION - -C<File::Temp> can be used to create and open temporary files in a safe -way. There is both a function interface and an object-oriented -interface. The File::Temp constructor or 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; - -### For the OO interface -use base qw/ IO::Handle /; -use overload '""' => "STRINGIFY"; - - -# use 'our' on v5.6.0 -use vars qw($VERSION @EXPORT_OK %EXPORT_TAGS $DEBUG $KEEP_ALL); - -$DEBUG = 0; -$KEEP_ALL = 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 - cleanup - }; - -# 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.16'; - -# 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 => 1000; - -# 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/ NOFOLLOW 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 end with 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 $parent) { - ${$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"} && !$KEEP_ALL) { - # 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"} && !$KEEP_ALL) ? - $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 force a temp file to be writable after -# it is created so that we can unlink it. Windows seems to occassionally -# force a file to be readonly when written to certain temp locations -sub _force_writable { - my $file = shift; - my $umask = umask(); - umask(066); - chmod 0600, $file; - umask($umask) if defined $umask; -} - - -# 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 $path) { - $$err_ref = "Path ($path) is not a directory" - if ref($err_ref); - return 0; - } - # Must have sticky bit set - unless (-k $path) { - $$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' || $^O eq 'mpeix') { - 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. - - # in order to prevent child processes inadvertently deleting the parent - # temp files we use a hash to store the temp files and directories - # created by a particular process id. - - # %files_to_unlink contains values that are references to an array of - # array references containing the filehandle and filename associated with - # the temp file. - my (%files_to_unlink, %dirs_to_unlink); - - # Set up an end block to use these arrays - END { - cleanup(); - } - - # Cleanup function. Always triggered on END but can be invoked - # manually. - sub cleanup { - if (!$KEEP_ALL) { - # Files - my @files = (exists $files_to_unlink{$$} ? - @{ $files_to_unlink{$$} } : () ); - foreach my $file (@files) { - # 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] - _force_writable( $file->[1] ); # for windows - unlink $file->[1] or warn "Error removing ".$file->[1]; - } - } - # Dirs - my @dirs = (exists $dirs_to_unlink{$$} ? - @{ $dirs_to_unlink{$$} } : () ); - foreach my $dir (@dirs) { - if (-d $dir) { - rmtree($dir, $DEBUG, 0); - } - } - - # clear the arrays - @{ $files_to_unlink{$$} } = () - if exists $files_to_unlink{$$}; - @{ $dirs_to_unlink{$$} } = () - if exists $dirs_to_unlink{$$}; - } - } - - - # 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'; - $dirs_to_unlink{$$} = [] - unless exists $dirs_to_unlink{$$}; - 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 - $files_to_unlink{$$} = [] - unless exists $files_to_unlink{$$}; - 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 OBJECT-ORIENTED INTERFACE - -This is the primary interface for interacting with -C<File::Temp>. Using the OO interface a temporary file can be created -when the object is constructed and the file can be removed when the -object is no longer required. - -Note that there is no method to obtain the filehandle from the -C<File::Temp> object. The object itself acts as a filehandle. Also, -the object is configured such that it stringifies to the name of the -temporary file. - -=over 4 - -=item B<new> - -Create a temporary file object. - - my $tmp = new File::Temp(); - -by default the object is constructed as if C<tempfile> -was called without options, but with the additional behaviour -that the temporary file is removed by the object destructor -if UNLINK is set to true (the default). - -Supported arguments are the same as for C<tempfile>: UNLINK -(defaulting to true), DIR and SUFFIX. Additionally, the filename -template is specified using the TEMPLATE option. The OPEN option -is not supported (the file is always opened). - - $tmp = new File::Temp( TEMPLATE => 'tempXXXXX', - DIR => 'mydir', - SUFFIX => '.dat'); - -Arguments are case insensitive. - -=cut - -sub new { - my $proto = shift; - my $class = ref($proto) || $proto; - - # read arguments and convert keys to upper case - my %args = @_; - %args = map { uc($_), $args{$_} } keys %args; - - # see if they are unlinking (defaulting to yes) - my $unlink = (exists $args{UNLINK} ? $args{UNLINK} : 1 ); - delete $args{UNLINK}; - - # template (store it in an error so that it will - # disappear from the arg list of tempfile - my @template = ( exists $args{TEMPLATE} ? $args{TEMPLATE} : () ); - delete $args{TEMPLATE}; - - # Protect OPEN - delete $args{OPEN}; - - # Open the file and retain file handle and file name - my ($fh, $path) = tempfile( @template, %args ); - - print "Tmp: $fh - $path\n" if $DEBUG; - - # Store the filename in the scalar slot - ${*$fh} = $path; - - # Store unlink information in hash slot (plus other constructor info) - %{*$fh} = %args; - - # create the object - bless $fh, $class; - - # final method-based configuration - $fh->unlink_on_destroy( $unlink ); - - return $fh; -} - -=item B<filename> - -Return the name of the temporary file associated with this object. - - $filename = $tmp->filename; - -This method is called automatically when the object is used as -a string. - -=cut - -sub filename { - my $self = shift; - return ${*$self}; -} - -sub STRINGIFY { - my $self = shift; - return $self->filename; -} - -=item B<unlink_on_destroy> - -Control whether the file is unlinked when the object goes out of scope. -The file is removed if this value is true and $KEEP_ALL is not. - - $fh->unlink_on_destroy( 1 ); - -Default is for the file to be removed. - -=cut - -sub unlink_on_destroy { - my $self = shift; - if (@_) { - ${*$self}{UNLINK} = shift; - } - return ${*$self}{UNLINK}; -} - -=item B<DESTROY> - -When the object goes out of scope, the destructor is called. This -destructor will attempt to unlink the file (using C<unlink1>) -if the constructor was called with UNLINK set to 1 (the default state -if UNLINK is not specified). - -No error is given if the unlink fails. - -If the global variable $KEEP_ALL is true, the file will not be removed. - -=cut - -sub DESTROY { - my $self = shift; - if (${*$self}{UNLINK} && !$KEEP_ALL) { - print "# ---------> Unlinking $self\n" if $DEBUG; - - # The unlink1 may fail if the file has been closed - # by the caller. This leaves us with the decision - # of whether to refuse to remove the file or simply - # do an unlink without test. Seems to be silly - # to do this when we are trying to be careful - # about security - _force_writable( $self->filename ); # for windows - unlink1( $self, $self->filename ) - or unlink($self->filename); - } -} - -=back - -=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 = tempfile(); - ($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 -at the end of 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 (dependent on -$KEEP_ALL). 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 (depending on the operating system) on exit or when it is -closed (unless $KEEP_ALL is true when the temp file is created). - -Use the object-oriented interface if fine-grained control of when -a file is removed is required. - -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 on operating systems -that support this (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 (which may be - # important if they want a child process to use the file) - # 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> - -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. - -This function is disabled if the global variable $KEEP_ALL is true -and an unlink on open file is supported. If the unlink is to be deferred -to the END block, the file is still registered for removal. - -=cut - -sub unlink0 { - - croak 'Usage: unlink0(filehandle, filename)' - unless scalar(@_) == 2; - - # Read args - my ($fh, $path) = @_; - - cmpstat($fh, $path) or return 0; - - # attempt remove the file (does not work on some platforms) - if (_can_unlink_opened_file()) { - - # return early (Without unlink) if we have been instructed to retain files. - return 1 if $KEEP_ALL; - - # 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 - my @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; - } - -} - -=item B<cmpstat> - -Compare C<stat> of filehandle with C<stat> of provided filename. This -can be used to check 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). - - cmpstat($fh, $path) - or die "Error comparing handle with file"; - -Returns false if the stat information differs or if the link count is -greater than 1. - -On certain platofms, eg Windows, not all the fields returned by stat() -can be compared. For example, the C<dev> and C<rdev> fields seem to be -different in Windows. 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). - -Not exported by default. - -=cut - -sub cmpstat { - - croak 'Usage: cmpstat(filehandle, filename)' - unless scalar(@_) == 2; - - # Read args - my ($fh, $path) = @_; - - warn "Comparing stat\n" - if $DEBUG; - - # Stat the filehandle - which may be closed if someone has manually - # closed the file. Can not turn off warnings without using $^W - # unless we upgrade to 5.006 minimum requirement - my @fh; - { - local ($^W) = 0; - @fh = stat $fh; - } - return unless @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 $path) { - 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); - } elsif ($^O eq 'mpeix') { - @okstat = (0..4,8..10); - } - - # 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; - } - } - - return 1; -} - -=item B<unlink1> - -Similar to C<unlink0> except after file comparison using cmpstat, the -filehandle is closed prior to attempting to unlink the file. This -allows the file to be removed without using an END block, but does -mean that the post-unlink comparison of the filehandle state provided -by C<unlink0> is not available. - - unlink1($fh, $path) - or die "Error closing and unlinking file"; - -Usually called from the object destructor when using the OO interface. - -Not exported by default. - -This function is disabled if the global variable $KEEP_ALL is true. - -=cut - -sub unlink1 { - croak 'Usage: unlink1(filehandle, filename)' - unless scalar(@_) == 2; - - # Read args - my ($fh, $path) = @_; - - cmpstat($fh, $path) or return 0; - - # Close the file - close( $fh ) or return 0; - - # Make sure the file is writable (for windows) - _force_writable( $path ); - - # return early (without unlink) if we have been instructed to retain files. - return 1 if $KEEP_ALL; - - # remove the file - return unlink($path); -} - -=item B<cleanup> - -Calling this function will cause any temp files or temp directories -that are registered for removal to be removed. This happens automatically -when the process exits but can be triggered manually if the caller is sure -that none of the temp files are required. This method can be registered as -an Apache callback. - -On OSes where temp files are automatically removed when the temp file -is closed, calling this function will have no effect other than to remove -temporary directories (which may include temporary files). - - File::Temp::cleanup(); - -Not exported by default. - -=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. - -=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; - } -} - -=item B<$KEEP_ALL> - -Controls whether temporary files and directories should be retained -regardless of any instructions in the program to remove them -automatically. This is useful for debugging but should not be used in -production code. - - $File::Temp::KEEP_ALL = 1; - -Default is for files to be removed as requested by the caller. - -In some cases, files will only be retained if this variable is true -when the file is created. This means that you can not create a temporary -file, set this variable and expect the temp file to still be around -when the program exits. - -=item B<$DEBUG> - -Controls whether debugging messages should be enabled. - - $File::Temp::DEBUG = 1; - -Default is for debugging mode to be disabled. - -=back - -=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. - -=head2 Forking - -In some cases files created by File::Temp are removed from within an -END block. Since END blocks are triggered when a child process exits -(unless C<POSIX::_exit()> is used by the child) File::Temp takes care -to only remove those temp files created by a particular process ID. This -means that a child will not attempt to remove temp files created by the -parent process. - -=head2 BINMODE - -The file returned by File::Temp will have been opened in binary mode -if such a mode is available. If that is not correct, use the binmode() -function to change the mode of the filehandle. - -=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. The module was shipped -as a standard part of perl from v5.6.1. - -=head1 SEE ALSO - -L<POSIX/tmpnam>, L<POSIX/tmpfile>, L<File::Spec>, L<File::Path> - -See L<IO::File> and L<File::MkTemp>, L<Apachae::TempFile> for -different implementations of temporary file handling. - -=head1 AUTHOR - -Tim Jenness E<lt>tjenness@cpan.orgE<gt> - -Copyright (C) 1999-2005 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/tlpkg/tlperl.old/lib/File/stat.pm b/Master/tlpkg/tlperl.old/lib/File/stat.pm deleted file mode 100644 index 132cbee27ad..00000000000 --- a/Master/tlpkg/tlperl.old/lib/File/stat.pm +++ /dev/null @@ -1,139 +0,0 @@ -package File::stat; -use 5.006; - -use strict; -use warnings; - -our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS); - -our $VERSION = '1.00'; - -BEGIN { - use Exporter (); - @EXPORT = qw(stat lstat); - @EXPORT_OK = qw( $st_dev $st_ino $st_mode - $st_nlink $st_uid $st_gid - $st_rdev $st_size - $st_atime $st_mtime $st_ctime - $st_blksize $st_blocks - ); - %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] ); -} -use vars @EXPORT_OK; - -# Class::Struct forbids use of @ISA -sub import { goto &Exporter::import } - -use Class::Struct qw(struct); -struct 'File::stat' => [ - map { $_ => '$' } qw{ - dev ino mode nlink uid gid rdev size - atime mtime ctime blksize blocks - } -]; - -sub populate (@) { - return unless @_; - my $stob = new(); - @$stob = ( - $st_dev, $st_ino, $st_mode, $st_nlink, $st_uid, $st_gid, $st_rdev, - $st_size, $st_atime, $st_mtime, $st_ctime, $st_blksize, $st_blocks ) - = @_; - return $stob; -} - -sub lstat ($) { populate(CORE::lstat(shift)) } - -sub stat ($) { - my $arg = shift; - my $st = populate(CORE::stat $arg); - return $st if $st; - my $fh; - { - local $!; - no strict 'refs'; - require Symbol; - $fh = \*{ Symbol::qualify( $arg, caller() )}; - return unless defined fileno $fh; - } - return populate(CORE::stat $fh); -} - -1; -__END__ - -=head1 NAME - -File::stat - by-name interface to Perl's built-in stat() functions - -=head1 SYNOPSIS - - use File::stat; - $st = stat($file) or die "No $file: $!"; - if ( ($st->mode & 0111) && $st->nlink > 1) ) { - print "$file is executable with lotsa links\n"; - } - - use File::stat qw(:FIELDS); - stat($file) or die "No $file: $!"; - if ( ($st_mode & 0111) && $st_nlink > 1) ) { - print "$file is executable with lotsa links\n"; - } - -=head1 DESCRIPTION - -This module's default exports override the core stat() -and lstat() functions, replacing them with versions that return -"File::stat" objects. This object has methods that -return the similarly named structure field name from the -stat(2) function; namely, -dev, -ino, -mode, -nlink, -uid, -gid, -rdev, -size, -atime, -mtime, -ctime, -blksize, -and -blocks. - -You may also import all the structure fields directly into your namespace -as regular variables using the :FIELDS import tag. (Note that this still -overrides your stat() and lstat() functions.) Access these fields as -variables named with a preceding C<st_> in front their method names. -Thus, C<$stat_obj-E<gt>dev()> corresponds to $st_dev if you import -the fields. - -To access this functionality without the core overrides, -pass the C<use> an empty import list, and then access -function functions with their full qualified names. -On the other hand, the built-ins are still available -via the C<CORE::> pseudo-package. - -=head1 BUGS - -As of Perl 5.8.0 after using this module you cannot use the implicit -C<$_> or the special filehandle C<_> with stat() or lstat(), trying -to do so leads into strange errors. The workaround is for C<$_> to -be explicit - - my $stat_obj = stat $_; - -and for C<_> to explicitly populate the object using the unexported -and undocumented populate() function with CORE::stat(): - - my $stat_obj = File::stat::populate(CORE::stat(_)); - -=head1 NOTE - -While this class is currently implemented using the Class::Struct -module to build a struct-like class, you shouldn't rely upon this. - -=head1 AUTHOR - -Tom Christiansen diff --git a/Master/tlpkg/tlperl.old/lib/FileHandle.pm b/Master/tlpkg/tlperl.old/lib/FileHandle.pm deleted file mode 100644 index 6be22429440..00000000000 --- a/Master/tlpkg/tlperl.old/lib/FileHandle.pm +++ /dev/null @@ -1,262 +0,0 @@ -package FileHandle; - -use 5.006; -use strict; -our($VERSION, @ISA, @EXPORT, @EXPORT_OK); - -$VERSION = "2.01"; - -require IO::File; -@ISA = qw(IO::File); - -@EXPORT = qw(_IOFBF _IOLBF _IONBF); - -@EXPORT_OK = qw( - pipe - - autoflush - output_field_separator - output_record_separator - input_record_separator - input_line_number - format_page_number - format_lines_per_page - format_lines_left - format_name - format_top_name - format_line_break_characters - format_formfeed - - print - printf - getline - getlines -); - -# -# Everything we're willing to export, we must first import. -# -import IO::Handle grep { !defined(&$_) } @EXPORT, @EXPORT_OK; - -# -# Some people call "FileHandle::function", so all the functions -# that were in the old FileHandle class must be imported, too. -# -{ - no strict 'refs'; - - my %import = ( - 'IO::Handle' => - [qw(DESTROY new_from_fd fdopen close fileno getc ungetc gets - eof flush error clearerr setbuf setvbuf _open_mode_string)], - 'IO::Seekable' => - [qw(seek tell getpos setpos)], - 'IO::File' => - [qw(new new_tmpfile open)] - ); - for my $pkg (keys %import) { - for my $func (@{$import{$pkg}}) { - my $c = *{"${pkg}::$func"}{CODE} - or die "${pkg}::$func missing"; - *$func = $c; - } - } -} - -# -# Specialized importer for Fcntl magic. -# -sub import { - my $pkg = shift; - my $callpkg = caller; - require Exporter; - Exporter::export($pkg, $callpkg, @_); - - # - # If the Fcntl extension is available, - # export its constants. - # - eval { - require Fcntl; - Exporter::export('Fcntl', $callpkg); - }; -} - -################################################ -# This is the only exported function we define; -# the rest come from other classes. -# - -sub pipe { - my $r = new IO::Handle; - my $w = new IO::Handle; - CORE::pipe($r, $w) or return undef; - ($r, $w); -} - -# Rebless standard file handles -bless *STDIN{IO}, "FileHandle" if ref *STDIN{IO} eq "IO::Handle"; -bless *STDOUT{IO}, "FileHandle" if ref *STDOUT{IO} eq "IO::Handle"; -bless *STDERR{IO}, "FileHandle" if ref *STDERR{IO} eq "IO::Handle"; - -1; - -__END__ - -=head1 NAME - -FileHandle - supply object methods for filehandles - -=head1 SYNOPSIS - - use FileHandle; - - $fh = new FileHandle; - if ($fh->open("< file")) { - print <$fh>; - $fh->close; - } - - $fh = new FileHandle "> FOO"; - if (defined $fh) { - print $fh "bar\n"; - $fh->close; - } - - $fh = new FileHandle "file", "r"; - if (defined $fh) { - print <$fh>; - undef $fh; # automatically closes the file - } - - $fh = new FileHandle "file", O_WRONLY|O_APPEND; - if (defined $fh) { - print $fh "corge\n"; - undef $fh; # automatically closes the file - } - - $pos = $fh->getpos; - $fh->setpos($pos); - - $fh->setvbuf($buffer_var, _IOLBF, 1024); - - ($readfh, $writefh) = FileHandle::pipe; - - autoflush STDOUT 1; - -=head1 DESCRIPTION - -NOTE: This class is now a front-end to the IO::* classes. - -C<FileHandle::new> creates a C<FileHandle>, which is a reference to a -newly created symbol (see the C<Symbol> package). If it receives any -parameters, they are passed to C<FileHandle::open>; if the open fails, -the C<FileHandle> object is destroyed. Otherwise, it is returned to -the caller. - -C<FileHandle::new_from_fd> creates a C<FileHandle> like C<new> does. -It requires two parameters, which are passed to C<FileHandle::fdopen>; -if the fdopen fails, the C<FileHandle> object is destroyed. -Otherwise, it is returned to the caller. - -C<FileHandle::open> accepts one parameter or two. With one parameter, -it is just a front end for the built-in C<open> function. With two -parameters, the first parameter is a filename that may include -whitespace or other special characters, and the second parameter is -the open mode, optionally followed by a file permission value. - -If C<FileHandle::open> receives a Perl mode string (">", "+<", etc.) -or a POSIX fopen() mode string ("w", "r+", etc.), it uses the basic -Perl C<open> operator. - -If C<FileHandle::open> is given a numeric mode, it passes that mode -and the optional permissions value to the Perl C<sysopen> operator. -For convenience, C<FileHandle::import> tries to import the O_XXX -constants from the Fcntl module. If dynamic loading is not available, -this may fail, but the rest of FileHandle will still work. - -C<FileHandle::fdopen> is like C<open> except that its first parameter -is not a filename but rather a file handle name, a FileHandle object, -or a file descriptor number. - -If the C functions fgetpos() and fsetpos() are available, then -C<FileHandle::getpos> returns an opaque value that represents the -current position of the FileHandle, and C<FileHandle::setpos> uses -that value to return to a previously visited position. - -If the C function setvbuf() is available, then C<FileHandle::setvbuf> -sets the buffering policy for the FileHandle. The calling sequence -for the Perl function is the same as its C counterpart, including the -macros C<_IOFBF>, C<_IOLBF>, and C<_IONBF>, except that the buffer -parameter specifies a scalar variable to use as a buffer. WARNING: A -variable used as a buffer by C<FileHandle::setvbuf> must not be -modified in any way until the FileHandle is closed or until -C<FileHandle::setvbuf> is called again, or memory corruption may -result! - -See L<perlfunc> for complete descriptions of each of the following -supported C<FileHandle> methods, which are just front ends for the -corresponding built-in functions: - - close - fileno - getc - gets - eof - clearerr - seek - tell - -See L<perlvar> for complete descriptions of each of the following -supported C<FileHandle> methods: - - autoflush - output_field_separator - output_record_separator - input_record_separator - input_line_number - format_page_number - format_lines_per_page - format_lines_left - format_name - format_top_name - format_line_break_characters - format_formfeed - -Furthermore, for doing normal I/O you might need these: - -=over 4 - -=item $fh->print - -See L<perlfunc/print>. - -=item $fh->printf - -See L<perlfunc/printf>. - -=item $fh->getline - -This works like <$fh> described in L<perlop/"I/O Operators"> -except that it's more readable and can be safely called in a -list context but still returns just one line. - -=item $fh->getlines - -This works like <$fh> when called in a list context to -read all the remaining lines in a file, except that it's more readable. -It will also croak() if accidentally called in a scalar context. - -=back - -There are many other functions available since FileHandle is descended -from IO::File, IO::Seekable, and IO::Handle. Please see those -respective pages for documentation on more functions. - -=head1 SEE ALSO - -The B<IO> extension, -L<perlfunc>, -L<perlop/"I/O Operators">. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Getopt/Long.pm b/Master/tlpkg/tlperl.old/lib/Getopt/Long.pm deleted file mode 100644 index 04038db58e3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Getopt/Long.pm +++ /dev/null @@ -1,2504 +0,0 @@ -# Getopt::Long.pm -- Universal options parsing - -package Getopt::Long; - -# RCS Status : $Id: GetoptLong.pm,v 2.72 2005-04-28 21:18:33+02 jv Exp $ -# Author : Johan Vromans -# Created On : Tue Sep 11 15:00:12 1990 -# Last Modified By: Johan Vromans -# Last Modified On: Wed Dec 14 21:17:21 2005 -# Update Count : 1458 -# Status : Released - -################ Copyright ################ - -# This program is Copyright 1990,2005 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.35; -# For testing versions only. -#use vars qw($VERSION_STRING); -#$VERSION_STRING = "2.35"; - -use Exporter; -use vars qw(@ISA @EXPORT @EXPORT_OK); -@ISA = qw(Exporter); - -# Exported subroutines. -sub GetOptions(@); # always -sub Configure(@); # on demand -sub HelpMessage(@); # on demand -sub VersionMessage(@); # in demand - -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(&HelpMessage &VersionMessage &Configure); -} - -# 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 $auto_help $auto_version $longprefix); - -# Public subroutines. -sub config(@); # deprecated name - -# Private subroutines. -sub ConfigDefaults(); -sub ParseOptionSpec($$); -sub OptCtl($); -sub FindOption($$$$); -sub ValidValue ($$$$$); - -################ Local Variables ################ - -# $requested_version holds the version that was mentioned in the 'use' -# or 'require', if any. It can be used to enable or disable specific -# features. -my $requested_version = 0; - -################ 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 - $longprefix = "(--)"; # what does a long prefix look like -} - -# 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; - push(@syms, qw(&GetOptions)) if @syms; # always export GetOptions - $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; - -################ Back to Normal ################ - -# 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_DEFAULT => 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_AMIN => 4; -use constant CTL_AMAX => 5; - -# 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 = ''; - - if ( $debug ) { - # Avoid some warnings if debugging. - local ($^W) = 0; - print STDERR - ("Getopt::Long $Getopt::Long::VERSION (", - '$Revision: 2.72 $', ") ", - "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,", - "requested_version=$requested_version,", - "passthrough=$passthrough,", - "genprefix=\"$genprefix\",", - "longprefix=\"$longprefix\".", - "\n"); - } - - # 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 - UNIVERSAL::isa($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); - - unless ( defined($opt) ) { - $error .= "Undefined argument in option spec\n"; - next; - } - - # 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" ) { -# if ( $opctl{$name}[CTL_DEST] == CTL_DEST_ARRAY ) { -# my $t = $linkage{$orig}; -# $$t = $linkage{$orig} = []; -# } -# elsif ( $opctl{$name}[CTL_DEST] == CTL_DEST_HASH ) { -# } -# else { - # Ok. -# } - } - elsif ( $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; - - # Supply --version and --help support, if needed and allowed. - if ( defined($auto_version) ? $auto_version : ($requested_version >= 2.3203) ) { - if ( !defined($opctl{version}) ) { - $opctl{version} = ['','version',0,CTL_DEST_CODE,undef]; - $linkage{version} = \&VersionMessage; - } - $auto_version = 1; - } - if ( defined($auto_help) ? $auto_help : ($requested_version >= 2.3203) ) { - if ( !defined($opctl{help}) && !defined($opctl{'?'}) ) { - $opctl{help} = $opctl{'?'} = ['','help',0,CTL_DEST_CODE,undef]; - $linkage{help} = \&HelpMessage; - } - $auto_help = 1; - } - - # 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. - if ( $opt eq $argend ) { - push (@ret, $argend) if $passthrough; - last; - } - - # 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; - - my $argcnt = 0; - while ( 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; - } - } - elsif ( $ctl->[CTL_DEST] == CTL_DEST_ARRAY ) { - print STDERR ("=> ref(\$L{$opt}) auto-vivified", - " to ARRAY\n") - if $debug; - my $t = $linkage{$opt}; - $$t = $linkage{$opt} = []; - print STDERR ("=> push(\@{\$L{$opt}, \"$arg\")\n") - if $debug; - push (@{$linkage{$opt}}, $arg); - } - elsif ( $ctl->[CTL_DEST] == CTL_DEST_HASH ) { - print STDERR ("=> ref(\$L{$opt}) auto-vivified", - " to HASH\n") - if $debug; - my $t = $linkage{$opt}; - $$t = $linkage{$opt} = {}; - print STDERR ("=> \$\$L{$opt}->{$key} = \"$arg\"\n") - if $debug; - $linkage{$opt}->{$key} = $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; - } - } - - $argcnt++; - last if $argcnt >= $ctl->[CTL_AMAX] && $ctl->[CTL_AMAX] != -1; - undef($arg); - - # Need more args? - if ( $argcnt < $ctl->[CTL_AMIN] ) { - if ( @ARGV ) { - if ( ValidValue($ctl, $ARGV[0], 1, $argend, $prefix) ) { - $arg = shift(@ARGV); - ($key,$arg) = $arg =~ /^([^=]+)=(.*)/ - if $ctl->[CTL_DEST] == CTL_DEST_HASH; - next; - } - warn("Value \"$ARGV[0]\" invalid for option $opt\n"); - $error++; - } - else { - warn("Insufficient arguments for option $opt\n"); - $error++; - } - } - - # Any more args? - if ( @ARGV && ValidValue($ctl, $ARGV[0], 0, $argend, $prefix) ) { - $arg = shift(@ARGV); - ($key,$arg) = $arg =~ /^([^=]+)=(.*)/ - if $ctl->[CTL_DEST] == CTL_DEST_HASH; - next; - } - } - } - - # 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_DEFAULT]\"", - ("\$","\@","\%","\&")[$v[CTL_DEST] || 0], - $v[CTL_AMIN] || '', - $v[CTL_AMAX] || '', -# $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/repeat specification - [=:] [ionfs] [@%]? (?: \{\d*,?\d*\} )? - | - # ... 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,undef,CTL_DEST_SCALAR,0,0]; - } - 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,$def eq '+' ? undef : $def, - $dest,0,1]; - } - else { - my ($mand, $type, $dest) = - $spec =~ /^([=:])([ionfs])([@%])?(\{(\d+)?(,)?(\d+)?\})?$/; - return (undef, "Cannot repeat while bundling: \"$opt\"\n") - if $bundling && defined($4); - my ($mi, $cm, $ma) = ($5, $6, $7); - return (undef, "{0} is useless in option spec: \"$opt\"\n") - if defined($mi) && !$mi && !defined($ma) && !defined($cm); - - $type = 'i' if $type eq 'n'; - $dest ||= '$'; - $dest = $dest eq '@' ? CTL_DEST_ARRAY - : $dest eq '%' ? CTL_DEST_HASH : CTL_DEST_SCALAR; - # Default minargs to 1/0 depending on mand status. - $mi = $mand eq '=' ? 1 : 0 unless defined $mi; - # Adjust mand status according to minargs. - $mand = $mi ? '=' : ':'; - # Adjust maxargs. - $ma = $mi ? $mi : 1 unless defined $ma || defined $cm; - return (undef, "Max must be greater than zero in option spec: \"$opt\"\n") - if defined($ma) && !$ma; - return (undef, "Max less than min in option spec: \"$opt\"\n") - if defined($ma) && $ma < $mi; - - # Fields are hard-wired here. - $entry = [$type,$orig,undef,$dest,$mi,$ma||-1]; - } - - # 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->{"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=~/^$longprefix$/ - || ($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 ) { - my $hit = $_; - $hit = $opctl->{$hit}->[CTL_CNAME] - if defined $opctl->{$hit}->[CTL_CNAME]; - $hit{$hit} = 1; - } - # Remove auto-supplied options (version, help). - if ( keys(%hit) == 2 ) { - if ( $auto_version && exists($hit{version}) ) { - delete $hit{version}; - } - elsif ( $auto_help && exists($hit{help}) ) { - delete $hit{help}; - } - } - # 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; - # Pretend one char when bundling. - if ( $bundling == 1 && length($starter) == 1 ) { - $opt = substr($opt,0,1); - unshift (@ARGV, $starter.$rest) if defined $rest; - } - 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_AMIN]; - - # 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] : - ($mand ? undef : ($type eq 's' ? "" : 1))); - if (! defined $arg) { - warn ("Option $opt, key \"$key\", requires a value\n"); - $error++; - # Push back. - unshift (@ARGV, $starter.$rest) if defined $rest; - return (1, undef); - } - } - - #### Check if the argument is valid for this option #### - - my $key_valid = $ctl->[CTL_DEST] == CTL_DEST_HASH ? "[^=]+=" : ""; - - 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 =~ /^($key_valid)($o_valid)(.*)$/si ) { - ($key, $arg, $rest) = ($1, $2, $+); - chop($key) if $key; - $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 =~ /^($key_valid)([-+]?[0-9]+(\.[0-9]+)?([eE][-+]?[0-9]+)?)(.*)$/s ) { - ($key, $arg, $rest) = ($1, $2, $+); - chop($key) if $key; - 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); -} - -sub ValidValue ($$$$$) { - my ($ctl, $arg, $mand, $argend, $prefix) = @_; - - if ( $ctl->[CTL_DEST] == CTL_DEST_HASH ) { - return 0 unless $arg =~ /[^=]+=(.*)/; - $arg = $1; - } - - my $type = $ctl->[CTL_TYPE]; - - if ( $type eq 's' ) { # string - # A mandatory string takes anything. - return (1) if $mand; - - return (1) if $arg eq "-"; - - # Check for option or option list terminator. - return 0 if $arg eq $argend || $arg =~ /^$prefix.+/; - return 1; - } - - 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]+"; - - return $arg =~ /^$o_valid$/si; - } - - 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] - return $arg =~ /^[-+]?[0-9.]+(\.[0-9]+)?([eE][-+]?[0-9]+)?$/; - } - die("ValidValue: Cannot happen\n"); -} - -# 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, $auto_version, $auto_help, - $longprefix ]; - - if ( ref($options[0]) eq 'ARRAY' ) { - ( $error, $debug, $major_version, $minor_version, - $autoabbrev, $getopt_compat, $ignorecase, $bundling, $order, - $gnu_compat, $passthrough, $genprefix, $auto_version, $auto_help, - $longprefix ) = @{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 =~ /^(auto_?)?version$/ ) { - $auto_version = $action; - } - elsif ( $try =~ /^(auto_?)?help$/ ) { - $auto_help = $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 { '' =~ m"$genprefix"; }; - die("Getopt::Long: invalid pattern \"$genprefix\"") if $@; - } - elsif ( $try =~ /^long_prefix_pattern=(.+)$/ && $action ) { - $longprefix = $1; - # Parenthesize if needed. - $longprefix = "(" . $longprefix . ")" - unless $longprefix =~ /^\(.*\)$/; - eval { '' =~ m"$longprefix"; }; - die("Getopt::Long: invalid long prefix pattern \"$longprefix\"") if $@; - } - elsif ( $try eq 'debug' ) { - $debug = $action; - } - else { - die("Getopt::Long: unknown config parameter \"$opt\"") - } - } - $prevconfig; -} - -# Deprecated name. -sub config (@) { - Configure (@_); -} - -# Issue a standard message for --version. -# -# The arguments are mostly the same as for Pod::Usage::pod2usage: -# -# - a number (exit value) -# - a string (lead in message) -# - a hash with options. See Pod::Usage for details. -# -sub VersionMessage(@) { - # Massage args. - my $pa = setup_pa_args("version", @_); - - my $v = $main::VERSION; - my $fh = $pa->{-output} || - ($pa->{-exitval} eq "NOEXIT" || $pa->{-exitval} < 2) ? \*STDOUT : \*STDERR; - - print $fh (defined($pa->{-message}) ? $pa->{-message} : (), - $0, defined $v ? " version $v" : (), - "\n", - "(", __PACKAGE__, "::", "GetOptions", - " version ", - defined($Getopt::Long::VERSION_STRING) - ? $Getopt::Long::VERSION_STRING : $VERSION, ";", - " Perl version ", - $] >= 5.006 ? sprintf("%vd", $^V) : $], - ")\n"); - exit($pa->{-exitval}) unless $pa->{-exitval} eq "NOEXIT"; -} - -# Issue a standard message for --help. -# -# The arguments are the same as for Pod::Usage::pod2usage: -# -# - a number (exit value) -# - a string (lead in message) -# - a hash with options. See Pod::Usage for details. -# -sub HelpMessage(@) { - eval { - require Pod::Usage; - import Pod::Usage; - 1; - } || die("Cannot provide help: cannot load Pod::Usage\n"); - - # Note that pod2usage will issue a warning if -exitval => NOEXIT. - pod2usage(setup_pa_args("help", @_)); - -} - -# Helper routine to set up a normalized hash ref to be used as -# argument to pod2usage. -sub setup_pa_args($@) { - my $tag = shift; # who's calling - - # If called by direct binding to an option, it will get the option - # name and value as arguments. Remove these, if so. - @_ = () if @_ == 2 && $_[0] eq $tag; - - my $pa; - if ( @_ > 1 ) { - $pa = { @_ }; - } - else { - $pa = shift || {}; - } - - # At this point, $pa can be a number (exit value), string - # (message) or hash with options. - - if ( UNIVERSAL::isa($pa, 'HASH') ) { - # Get rid of -msg vs. -message ambiguity. - $pa->{-message} = $pa->{-msg}; - delete($pa->{-msg}); - } - elsif ( $pa =~ /^-?\d+$/ ) { - $pa = { -exitval => $pa }; - } - else { - $pa = { -message => $pa }; - } - - # These are _our_ defaults. - $pa->{-verbose} = 0 unless exists($pa->{-verbose}); - $pa->{-exitval} = 0 unless exists($pa->{-exitval}); - $pa; -} - -# Sneak way to know what version the user requested. -sub VERSION { - $requested_version = $_[1]; - shift->SUPER::VERSION(@_); -} - -1; - -################ 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. Single character -options may be any alphabetic character, a question mark, and a dash. -Long options may consist of a series of letters, digits, and dashes. -Although this is currently not enforced by Getopt::Long, multiple -consecutive dashes are not allowed, and the option name must not end -with a dash. - -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: - - GetOptions ("library=s" => \@libfiles); - -Alternatively, you can specify that the option can have multiple -values by adding a "@", and pass a scalar reference as the -destination: - - GetOptions ("library=s@" => \$libfiles); - -Used with the example above, C<@libfiles> (or 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 acceptable 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: - - GetOptions ("library=s" => \@libfiles); - @libfiles = split(/,/,join(',',@libfiles)); - -Of course, it is important to choose the right separator string for -each purpose. - -Warning: What follows is an experimental feature. - -Options can take multiple values at once, for example - - --coordinates 52.2 16.4 --rgbcolor 255 255 149 - -This can be accomplished by adding a repeat specifier to the option -specification. Repeat specifiers are very similar to the C<{...}> -repeat specifiers that can be used with regular expression patterns. -For example, the above command line would be handled as follows: - - GetOptions('coordinates=f{2}' => \@coor, 'rgbcolor=i{3}' => \@color); - -The destination for the option must be an array or array reference. - -It is also possible to specify the minimal and maximal number of -arguments an option takes. C<foo=s{2,4}> indicates an option that -takes at least two and at most 4 arguments. C<foo=s{,}> indicates one -or more values; C<foo:s{,}> indicates zero or more option values. - -=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. - - GetOptions ("define=s" => \%defines); - -Alternatively you can use: - - GetOptions ("define=s%" => \$defines); - -When used with command line options: - - --define os=linux --define vendor=redhat - -the hash C<%defines> (or 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 acceptable 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 exclamation 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>. When using a hash to store options, the key will -always be the primary name. - -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 by prefixing -it with "no" or "no-". E.g. C<"foo!"> will allow C<--foo> (a value of -1 will be assigned) as well as C<--nofoo> and C<--no-foo> (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> ] [ I<repeat> ] - -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. - -The I<repeat> specifies the number of values this option takes per -occurrence on the command line. It has the format C<{> [ I<min> ] [ C<,> [ I<max> ] ] C<}>. - -I<min> denotes the minimal number of arguments. It defaults to 1 for -options with C<=> and to 0 for options with C<:>, see below. Note that -I<min> overrules the C<=> / C<:> semantics. - -I<max> denotes the maximum number of arguments. It must be at least -I<min>. If I<max> is omitted, I<but the comma is not>, there is no -upper bound to the number of argument values taken. - -=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 something - useful with the contents thereof. - - =cut - -See L<Pod::Usage> for details. - -=head2 Storing option values 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 -ambiguity. 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 successful 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 surprising 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 auto_version (default:disabled) - -Automatically provide support for the B<--version> option if -the application did not specify a handler for this option itself. - -Getopt::Long will provide a standard version message that includes the -program name, its version (if $main::VERSION is defined), and the -versions of Getopt::Long and Perl. The message will be written to -standard output and processing will terminate. - -C<auto_version> will be enabled if the calling program explicitly -specified a version number higher than 2.32 in the C<use> or -C<require> statement. - -=item auto_help (default:disabled) - -Automatically provide support for the B<--help> and B<-?> options if -the application did not specify a handler for this option itself. - -Getopt::Long will provide a help message using module L<Pod::Usage>. The -message, derived from the SYNOPSIS POD section, will be written to -standard output and processing will terminate. - -C<auto_help> will be enabled if the calling program explicitly -specified a version number higher than 2.32 in the C<use> or -C<require> statement. - -=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. - -Note that the options terminator (default C<-->), if present, will -also be passed through in C<@ARGV>. - -=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 long_prefix_pattern - -A Perl pattern that allows the disambiguation of long and short -prefixes. Default is C<-->. - -Typically you only need to set this if you are using nonstandard -prefixes and want some or all of them to have the same semantics as -'--' does under normal circumstances. - -For example, setting prefix_pattern to C<--|-|\+|\/> and -long_prefix_pattern to C<--|\/> would add Win32 style argument -handling. - -=item debug (default: disabled) - -Enable debugging output. - -=back - -=head1 Exportable Methods - -=over - -=item VersionMessage - -This subroutine provides a standard version message. Its argument can be: - -=over 4 - -=item * - -A string containing the text of a message to print I<before> printing -the standard message. - -=item * - -A numeric value corresponding to the desired exit status. - -=item * - -A reference to a hash. - -=back - -If more than one argument is given then the entire argument list is -assumed to be a hash. If a hash is supplied (either as a reference or -as a list) it should contain one or more elements with the following -keys: - -=over 4 - -=item C<-message> - -=item C<-msg> - -The text of a message to print immediately prior to printing the -program's usage message. - -=item C<-exitval> - -The desired exit status to pass to the B<exit()> function. -This should be an integer, or else the string "NOEXIT" to -indicate that control should simply be returned without -terminating the invoking process. - -=item C<-output> - -A reference to a filehandle, or the pathname of a file to which the -usage message should be written. The default is C<\*STDERR> unless the -exit value is less than 2 (in which case the default is C<\*STDOUT>). - -=back - -You cannot tie this routine directly to an option, e.g.: - - GetOptions("version" => \&VersionMessage); - -Use this instead: - - GetOptions("version" => sub { VersionMessage() }); - -=item HelpMessage - -This subroutine produces a standard help message, derived from the -program's POD section SYNOPSIS using L<Pod::Usage>. It takes the same -arguments as VersionMessage(). In particular, you cannot tie it -directly to an option, e.g.: - - GetOptions("help" => \&HelpMessage); - -Use this instead: - - GetOptions("help" => sub { HelpMessage() }); - -=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__}>. - -=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 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 Undefined subroutine &main::GetOptions called - -Are you running Windows, and did you write - - use GetOpt::Long; - -(note the capital 'O')? - -=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 1990,2005 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/tlpkg/tlperl.old/lib/Getopt/Std.pm b/Master/tlpkg/tlperl.old/lib/Getopt/Std.pm deleted file mode 100644 index 99f93590622..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Getopt/Std.pm +++ /dev/null @@ -1,294 +0,0 @@ -package Getopt::Std; -require 5.000; -require Exporter; - -=head1 NAME - -getopt, getopts - Process single-character switches with switch clustering - -=head1 SYNOPSIS - - use Getopt::Std; - - getopt('oDI'); # -o, -D & -I take arg. Sets $opt_* as a side effect. - getopt('oDI', \%opts); # -o, -D & -I take arg. Values in %opts - getopts('oif:'); # -o & -i are boolean flags, -f takes an argument - # Sets $opt_* as a side effect. - getopts('oif:', \%opts); # options as above. Values in %opts - -=head1 DESCRIPTION - -The getopt() function processes single-character switches with switch -clustering. Pass one argument which is a string containing all switches -that take an argument. For each switch found, sets $opt_x (where x is the -switch name) to the value of the argument if an argument is expected, -or 1 otherwise. Switches which take an argument don't care whether -there is a space between the switch and the argument. - -The getopts() function is similar, but you should pass to it the list of all -switches to be recognized. If unspecified switches are found on the -command-line, the user will be warned that an unknown option was given. - -Note that, if your code is running under the recommended C<use strict -'vars'> pragma, you will need to declare these package variables -with "our": - - our($opt_x, $opt_y); - -For those of you who don't like additional global variables being created, getopt() -and getopts() will also accept a hash reference as an optional second argument. -Hash keys will be x (where x is the switch name) with key values the value of -the argument or 1 if no argument is specified. - -To allow programs to process arguments that look like switches, but aren't, -both functions will stop processing switches when they see the argument -C<-->. The C<--> will be removed from @ARGV. - -=head1 C<--help> and C<--version> - -If C<-> is not a recognized switch letter, getopts() supports arguments -C<--help> and C<--version>. If C<main::HELP_MESSAGE()> and/or -C<main::VERSION_MESSAGE()> are defined, they are called; the arguments are -the output file handle, the name of option-processing package, its version, -and the switches string. If the subroutines are not defined, an attempt is -made to generate intelligent messages; for best results, define $main::VERSION. - -If embedded documentation (in pod format, see L<perlpod>) is detected -in the script, C<--help> will also show how to access the documentation. - -Note that due to excessive paranoia, if $Getopt::Std::STANDARD_HELP_VERSION -isn't true (the default is false), then the messages are printed on STDERR, -and the processing continues after the messages are printed. This being -the opposite of the standard-conforming behaviour, it is strongly recommended -to set $Getopt::Std::STANDARD_HELP_VERSION to true. - -One can change the output file handle of the messages by setting -$Getopt::Std::OUTPUT_HELP_VERSION. One can print the messages of C<--help> -(without the C<Usage:> line) and C<--version> by calling functions help_mess() -and version_mess() with the switches string as an argument. - -=cut - -@ISA = qw(Exporter); -@EXPORT = qw(getopt getopts); -$VERSION = '1.05'; -# uncomment the next line to disable 1.03-backward compatibility paranoia -# $STANDARD_HELP_VERSION = 1; - -# Process single-character switches with switch clustering. Pass one argument -# which is a string containing all switches that take an argument. For each -# switch found, sets $opt_x (where x is the switch name) to the value of the -# argument, or 1 if no argument. Switches which take an argument don't care -# whether there is a space between the switch and the argument. - -# Usage: -# getopt('oDI'); # -o, -D & -I take arg. Sets opt_* as a side effect. - -sub getopt (;$$) { - my ($argumentative, $hash) = @_; - $argumentative = '' if !defined $argumentative; - my ($first,$rest); - local $_; - local @EXPORT; - - while (@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) { - ($first,$rest) = ($1,$2); - if (/^--$/) { # early exit if -- - shift @ARGV; - last; - } - if (index($argumentative,$first) >= 0) { - if ($rest ne '') { - shift(@ARGV); - } - else { - shift(@ARGV); - $rest = shift(@ARGV); - } - if (ref $hash) { - $$hash{$first} = $rest; - } - else { - ${"opt_$first"} = $rest; - push( @EXPORT, "\$opt_$first" ); - } - } - else { - if (ref $hash) { - $$hash{$first} = 1; - } - else { - ${"opt_$first"} = 1; - push( @EXPORT, "\$opt_$first" ); - } - if ($rest ne '') { - $ARGV[0] = "-$rest"; - } - else { - shift(@ARGV); - } - } - } - unless (ref $hash) { - local $Exporter::ExportLevel = 1; - import Getopt::Std; - } -} - -sub output_h () { - return $OUTPUT_HELP_VERSION if defined $OUTPUT_HELP_VERSION; - return \*STDOUT if $STANDARD_HELP_VERSION; - return \*STDERR; -} - -sub try_exit () { - exit 0 if $STANDARD_HELP_VERSION; - my $p = __PACKAGE__; - print {output_h()} <<EOM; - [Now continuing due to backward compatibility and excessive paranoia. - See ``perldoc $p'' about \$$p\::STANDARD_HELP_VERSION.] -EOM -} - -sub version_mess ($;$) { - my $args = shift; - my $h = output_h; - if (@_ and defined &main::VERSION_MESSAGE) { - main::VERSION_MESSAGE($h, __PACKAGE__, $VERSION, $args); - } else { - my $v = $main::VERSION; - $v = '[unknown]' unless defined $v; - my $myv = $VERSION; - $myv .= ' [paranoid]' unless $STANDARD_HELP_VERSION; - my $perlv = $]; - $perlv = sprintf "%vd", $^V if $] >= 5.006; - print $h <<EOH; -$0 version $v calling Getopt::Std::getopts (version $myv), -running under Perl version $perlv. -EOH - } -} - -sub help_mess ($;$) { - my $args = shift; - my $h = output_h; - if (@_ and defined &main::HELP_MESSAGE) { - main::HELP_MESSAGE($h, __PACKAGE__, $VERSION, $args); - } else { - my (@witharg) = ($args =~ /(\S)\s*:/g); - my (@rest) = ($args =~ /([^\s:])(?!\s*:)/g); - my ($help, $arg) = ('', ''); - if (@witharg) { - $help .= "\n\tWith arguments: -" . join " -", @witharg; - $arg = "\nSpace is not required between options and their arguments."; - } - if (@rest) { - $help .= "\n\tBoolean (without arguments): -" . join " -", @rest; - } - my ($scr) = ($0 =~ m,([^/\\]+)$,); - print $h <<EOH if @_; # Let the script override this - -Usage: $scr [-OPTIONS [-MORE_OPTIONS]] [--] [PROGRAM_ARG1 ...] -EOH - print $h <<EOH; - -The following single-character options are accepted:$help - -Options may be merged together. -- stops processing of options.$arg -EOH - my $has_pod; - if ( defined $0 and $0 ne '-e' and -f $0 and -r $0 - and open my $script, '<', $0 ) { - while (<$script>) { - $has_pod = 1, last if /^=(pod|head1)/; - } - } - print $h <<EOH if $has_pod; - -For more details run - perldoc -F $0 -EOH - } -} - -# Usage: -# getopts('a:bc'); # -a takes arg. -b & -c not. Sets opt_* as a -# # side effect. - -sub getopts ($;$) { - my ($argumentative, $hash) = @_; - my (@args,$first,$rest,$exit); - my $errs = 0; - local $_; - local @EXPORT; - - @args = split( / */, $argumentative ); - while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/s) { - ($first,$rest) = ($1,$2); - if (/^--$/) { # early exit if -- - shift @ARGV; - last; - } - my $pos = index($argumentative,$first); - if ($pos >= 0) { - if (defined($args[$pos+1]) and ($args[$pos+1] eq ':')) { - shift(@ARGV); - if ($rest eq '') { - ++$errs unless @ARGV; - $rest = shift(@ARGV); - } - if (ref $hash) { - $$hash{$first} = $rest; - } - else { - ${"opt_$first"} = $rest; - push( @EXPORT, "\$opt_$first" ); - } - } - else { - if (ref $hash) { - $$hash{$first} = 1; - } - else { - ${"opt_$first"} = 1; - push( @EXPORT, "\$opt_$first" ); - } - if ($rest eq '') { - shift(@ARGV); - } - else { - $ARGV[0] = "-$rest"; - } - } - } - else { - if ($first eq '-' and $rest eq 'help') { - version_mess($argumentative, 'main'); - help_mess($argumentative, 'main'); - try_exit(); - shift(@ARGV); - next; - } elsif ($first eq '-' and $rest eq 'version') { - version_mess($argumentative, 'main'); - try_exit(); - shift(@ARGV); - next; - } - warn "Unknown option: $first\n"; - ++$errs; - if ($rest ne '') { - $ARGV[0] = "-$rest"; - } - else { - shift(@ARGV); - } - } - } - unless (ref $hash) { - local $Exporter::ExportLevel = 1; - import Getopt::Std; - } - $errs == 0; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/IO.pm b/Master/tlpkg/tlperl.old/lib/IO.pm deleted file mode 100644 index 9fccc3a7356..00000000000 --- a/Master/tlpkg/tlperl.old/lib/IO.pm +++ /dev/null @@ -1,68 +0,0 @@ -# - -package IO; - -use XSLoader (); -use Carp; -use strict; -use warnings; - -our $VERSION = "1.22"; -XSLoader::load 'IO', $VERSION; - -sub import { - shift; - - warnings::warnif('deprecated', qq{Parameterless "use IO" deprecated}) - if @_ == 0 ; - - 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 qw(Handle File); # loads IO modules, here IO::Handle, IO::File - use IO; # DEPRECATED - -=head1 DESCRIPTION - -C<IO> provides a simple mechanism to load several of the IO modules -in one go. The IO modules belonging to the core are: - - IO::Handle - IO::Seekable - IO::File - IO::Pipe - IO::Socket - IO::Dir - IO::Select - IO::Poll - -Some other IO modules don't belong to the perl core but can be loaded -as well if they have been installed from CPAN. You can discover which -ones exist by searching for "^IO::" on http://search.cpan.org. - -For more information on any of these modules, please see its respective -documentation. - -=head1 DEPRECATED - - use IO; # loads all the modules listed below - -The loaded modules are IO::Handle, IO::Seekable, IO::File, IO::Pipe, -IO::Socket, IO::Dir. You should instead explicitly import the IO -modules you want. - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/IO/Dir.pm b/Master/tlpkg/tlperl.old/lib/IO/Dir.pm deleted file mode 100644 index fccd02c088a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/IO/Dir.pm +++ /dev/null @@ -1,246 +0,0 @@ -# IO::Dir.pm -# -# Copyright (c) 1997-8 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 IO::Dir; - -use 5.006; - -use strict; -use Carp; -use Symbol; -use Exporter; -use IO::File; -our(@ISA, $VERSION, @EXPORT_OK); -use Tie::Hash; -use File::stat; -use File::Spec; - -@ISA = qw(Tie::Hash Exporter); -$VERSION = "1.05"; -$VERSION = eval $VERSION; -@EXPORT_OK = qw(DIR_UNLINK); - -sub DIR_UNLINK () { 1 } - -sub new { - @_ >= 1 && @_ <= 2 or croak 'usage: new IO::Dir [DIRNAME]'; - my $class = shift; - my $dh = gensym; - if (@_) { - IO::Dir::open($dh, $_[0]) - or return undef; - } - bless $dh, $class; -} - -sub DESTROY { - my ($dh) = @_; - closedir($dh); -} - -sub open { - @_ == 2 or croak 'usage: $dh->open(DIRNAME)'; - my ($dh, $dirname) = @_; - return undef - unless opendir($dh, $dirname); - # a dir name should always have a ":" in it; assume dirname is - # in current directory - $dirname = ':' . $dirname if ( ($^O eq 'MacOS') && ($dirname !~ /:/) ); - ${*$dh}{io_dir_path} = $dirname; - 1; -} - -sub close { - @_ == 1 or croak 'usage: $dh->close()'; - my ($dh) = @_; - closedir($dh); -} - -sub read { - @_ == 1 or croak 'usage: $dh->read()'; - my ($dh) = @_; - readdir($dh); -} - -sub seek { - @_ == 2 or croak 'usage: $dh->seek(POS)'; - my ($dh,$pos) = @_; - seekdir($dh,$pos); -} - -sub tell { - @_ == 1 or croak 'usage: $dh->tell()'; - my ($dh) = @_; - telldir($dh); -} - -sub rewind { - @_ == 1 or croak 'usage: $dh->rewind()'; - my ($dh) = @_; - rewinddir($dh); -} - -sub TIEHASH { - my($class,$dir,$options) = @_; - - my $dh = $class->new($dir) - or return undef; - - $options ||= 0; - - ${*$dh}{io_dir_unlink} = $options & DIR_UNLINK; - $dh; -} - -sub FIRSTKEY { - my($dh) = @_; - $dh->rewind; - scalar $dh->read; -} - -sub NEXTKEY { - my($dh) = @_; - scalar $dh->read; -} - -sub EXISTS { - my($dh,$key) = @_; - -e File::Spec->catfile(${*$dh}{io_dir_path}, $key); -} - -sub FETCH { - my($dh,$key) = @_; - &lstat(File::Spec->catfile(${*$dh}{io_dir_path}, $key)); -} - -sub STORE { - my($dh,$key,$data) = @_; - my($atime,$mtime) = ref($data) ? @$data : ($data,$data); - my $file = File::Spec->catfile(${*$dh}{io_dir_path}, $key); - unless(-e $file) { - my $io = IO::File->new($file,O_CREAT | O_RDWR); - $io->close if $io; - } - utime($atime,$mtime, $file); -} - -sub DELETE { - my($dh,$key) = @_; - - # Only unlink if unlink-ing is enabled - return 0 - unless ${*$dh}{io_dir_unlink}; - - my $file = File::Spec->catfile(${*$dh}{io_dir_path}, $key); - - -d $file - ? rmdir($file) - : unlink($file); -} - -1; - -__END__ - -=head1 NAME - -IO::Dir - supply object methods for directory handles - -=head1 SYNOPSIS - - use IO::Dir; - $d = IO::Dir->new("."); - if (defined $d) { - while (defined($_ = $d->read)) { something($_); } - $d->rewind; - while (defined($_ = $d->read)) { something_else($_); } - undef $d; - } - - tie %dir, 'IO::Dir', "."; - foreach (keys %dir) { - print $_, " " , $dir{$_}->size,"\n"; - } - -=head1 DESCRIPTION - -The C<IO::Dir> package provides two interfaces to perl's directory reading -routines. - -The first interface is an object approach. C<IO::Dir> provides an object -constructor and methods, which are just wrappers around perl's built in -directory reading routines. - -=over 4 - -=item new ( [ DIRNAME ] ) - -C<new> is the constructor for C<IO::Dir> objects. It accepts one optional -argument which, if given, C<new> will pass to C<open> - -=back - -The following methods are wrappers for the directory related functions built -into perl (the trailing `dir' has been removed from the names). See L<perlfunc> -for details of these functions. - -=over 4 - -=item open ( DIRNAME ) - -=item read () - -=item seek ( POS ) - -=item tell () - -=item rewind () - -=item close () - -=back - -C<IO::Dir> also provides an interface to reading directories via a tied -hash. The tied hash extends the interface beyond just the directory -reading routines by the use of C<lstat>, from the C<File::stat> package, -C<unlink>, C<rmdir> and C<utime>. - -=over 4 - -=item tie %hash, 'IO::Dir', DIRNAME [, OPTIONS ] - -=back - -The keys of the hash will be the names of the entries in the directory. -Reading a value from the hash will be the result of calling -C<File::stat::lstat>. Deleting an element from the hash will -delete the corresponding file or subdirectory, -provided that C<DIR_UNLINK> is included in the C<OPTIONS>. - -Assigning to an entry in the hash will cause the time stamps of the file -to be modified. If the file does not exist then it will be created. Assigning -a single integer to a hash element will cause both the access and -modification times to be changed to that value. Alternatively a reference to -an array of two values can be passed. The first array element will be used to -set the access time and the second element will be used to set the modification -time. - -=head1 SEE ALSO - -L<File::stat> - -=head1 AUTHOR - -Graham Barr. Currently maintained by the Perl Porters. Please report all -bugs to <perl5-porters@perl.org>. - -=head1 COPYRIGHT - -Copyright (c) 1997-2003 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/tlpkg/tlperl.old/lib/IO/File.pm b/Master/tlpkg/tlperl.old/lib/IO/File.pm deleted file mode 100644 index e7cdbbed6d7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/IO/File.pm +++ /dev/null @@ -1,208 +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]] ) - -=item open( FILENAME, IOLAYERS ) - -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. - -If C<IO::File::open> is given a mode that includes the C<:> character, -it passes all the three arguments to the three-argument C<open> operator. - -For convenience, C<IO::File> exports the O_XXX constants from the -Fcntl module, if this module is available. - -=item binmode( [LAYER] ) - -C<binmode> sets C<binmode> on the underlying C<IO> object, as documented -in C<perldoc -f binmode>. - -C<binmode> accepts one optional parameter, which is the layer to be -passed on to the C<binmode> call. - -=back - -=head1 NOTE - -Some operating systems may perform C<IO::File::new()> or C<IO::File::open()> -on a directory without errors. This behavior is not portable and not -suggested for use. Using C<opendir()> and C<readdir()> or C<IO::Dir> are -suggested instead. - -=head1 SEE ALSO - -L<perlfunc>, -L<perlop/"I/O Operators">, -L<IO::Handle>, -L<IO::Seekable>, -L<IO::Dir> - -=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.13"; - -@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); - } elsif ($mode =~ /:/) { - return open($fh, $mode, $file) if @_ == 3; - croak 'usage: $fh->open(FILENAME, IOLAYERS)'; - } - if (defined($file) && length($file) - && ! File::Spec->file_name_is_absolute($file)) - { - $file = File::Spec->rel2abs($file); - } - $file = IO::Handle::_open_mode_string($mode) . " $file\0"; - } - open($fh, $file); -} - -################################################ -## Binmode -## - -sub binmode { - ( @_ == 1 or @_ == 2 ) or croak 'usage $fh->binmode([LAYER])'; - - my($fh, $layer) = @_; - - return binmode $$fh unless $layer; - return binmode $$fh, $layer; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/IO/Handle.pm b/Master/tlpkg/tlperl.old/lib/IO/Handle.pm deleted file mode 100644 index 329d26ad198..00000000000 --- a/Master/tlpkg/tlperl.old/lib/IO/Handle.pm +++ /dev/null @@ -1,625 +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"); - } - - # setvbuf is not available by default on Perls 5.8.0 and later. - 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. If used as the conditional -+within a C<while> or C-style C<for> loop, however, you will need to -+emulate the functionality of <$io> with C<< defined($_ = $io->getline) >>. - -=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: The IO::Handle::setvbuf() is not available by default on -Perls 5.8.0 and later because setvbuf() is rather specific to using -the stdio library, while Perl prefers the new perlio subsystem instead. - -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.25"; -$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 $.; - () = tell qualify($_[0], caller) if ref($_[0]); - my $prev = $.; - $. = $_[1] if @_ > 1; - $prev; -} - -sub format_page_number { - my $old; - $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); - my $prev = $%; - $% = $_[1] if @_ > 1; - $prev; -} - -sub format_lines_per_page { - my $old; - $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); - my $prev = $=; - $= = $_[1] if @_ > 1; - $prev; -} - -sub format_lines_left { - my $old; - $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); - my $prev = $-; - $- = $_[1] if @_ > 1; - $prev; -} - -sub format_name { - my $old; - $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); - my $prev = $~; - $~ = qualify($_[1], caller) if @_ > 1; - $prev; -} - -sub format_top_name { - my $old; - $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; - $old = new SelectSaver qualify($io, caller) if ref($io); - local $| = 1; - if(ref($io)) { - print $io @_; - } - else { - print @_; - } -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/IO/Pipe.pm b/Master/tlpkg/tlperl.old/lib/IO/Pipe.pm deleted file mode 100644 index 827cc48bfcd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/IO/Pipe.pm +++ /dev/null @@ -1,257 +0,0 @@ -# IO::Pipe.pm -# -# Copyright (c) 1996-8 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 IO::Pipe; - -use 5.006_001; - -use IO::Handle; -use strict; -our($VERSION); -use Carp; -use Symbol; - -$VERSION = "1.13"; - -sub new { - my $type = shift; - my $class = ref($type) || $type || "IO::Pipe"; - @_ == 0 || @_ == 2 or croak "usage: new $class [READFH, WRITEFH]"; - - my $me = bless gensym(), $class; - - my($readfh,$writefh) = @_ ? @_ : $me->handles; - - pipe($readfh, $writefh) - or return undef; - - @{*$me} = ($readfh, $writefh); - - $me; -} - -sub handles { - @_ == 1 or croak 'usage: $pipe->handles()'; - (IO::Pipe::End->new(), IO::Pipe::End->new()); -} - -my $do_spawn = $^O eq 'os2' || $^O eq 'MSWin32'; - -sub _doit { - my $me = shift; - my $rw = shift; - - my $pid = $do_spawn ? 0 : fork(); - - if($pid) { # Parent - return $pid; - } - elsif(defined $pid) { # Child or spawn - my $fh; - my $io = $rw ? \*STDIN : \*STDOUT; - my ($mode, $save) = $rw ? "r" : "w"; - if ($do_spawn) { - require Fcntl; - $save = IO::Handle->new_from_fd($io, $mode); - my $handle = shift; - # Close in child: - unless ($^O eq 'MSWin32') { - fcntl($handle, Fcntl::F_SETFD(), 1) or croak "fcntl: $!"; - } - $fh = $rw ? ${*$me}[0] : ${*$me}[1]; - } else { - shift; - $fh = $rw ? $me->reader() : $me->writer(); # close the other end - } - bless $io, "IO::Handle"; - $io->fdopen($fh, $mode); - $fh->close; - - if ($do_spawn) { - $pid = eval { system 1, @_ }; # 1 == P_NOWAIT - my $err = $!; - - $io->fdopen($save, $mode); - $save->close or croak "Cannot close $!"; - croak "IO::Pipe: Cannot spawn-NOWAIT: $err" if not $pid or $pid < 0; - return $pid; - } else { - exec @_ or - croak "IO::Pipe: Cannot exec: $!"; - } - } - else { - croak "IO::Pipe: Cannot fork: $!"; - } - - # NOT Reached -} - -sub reader { - @_ >= 1 or croak 'usage: $pipe->reader( [SUB_COMMAND_ARGS] )'; - my $me = shift; - - return undef - unless(ref($me) || ref($me = $me->new)); - - my $fh = ${*$me}[0]; - my $pid; - $pid = $me->_doit(0, $fh, @_) - if(@_); - - close ${*$me}[1]; - bless $me, ref($fh); - *$me = *$fh; # Alias self to handle - $me->fdopen($fh->fileno,"r") - unless defined($me->fileno); - bless $fh; # Really wan't un-bless here - ${*$me}{'io_pipe_pid'} = $pid - if defined $pid; - - $me; -} - -sub writer { - @_ >= 1 or croak 'usage: $pipe->writer( [SUB_COMMAND_ARGS] )'; - my $me = shift; - - return undef - unless(ref($me) || ref($me = $me->new)); - - my $fh = ${*$me}[1]; - my $pid; - $pid = $me->_doit(1, $fh, @_) - if(@_); - - close ${*$me}[0]; - bless $me, ref($fh); - *$me = *$fh; # Alias self to handle - $me->fdopen($fh->fileno,"w") - unless defined($me->fileno); - bless $fh; # Really wan't un-bless here - ${*$me}{'io_pipe_pid'} = $pid - if defined $pid; - - $me; -} - -package IO::Pipe::End; - -our(@ISA); - -@ISA = qw(IO::Handle); - -sub close { - my $fh = shift; - my $r = $fh->SUPER::close(@_); - - waitpid(${*$fh}{'io_pipe_pid'},0) - if(defined ${*$fh}{'io_pipe_pid'}); - - $r; -} - -1; - -__END__ - -=head1 NAME - -IO::Pipe - supply object methods for pipes - -=head1 SYNOPSIS - - use IO::Pipe; - - $pipe = new IO::Pipe; - - if($pid = fork()) { # Parent - $pipe->reader(); - - while(<$pipe>) { - ... - } - - } - elsif(defined $pid) { # Child - $pipe->writer(); - - print $pipe ... - } - - or - - $pipe = new IO::Pipe; - - $pipe->reader(qw(ls -l)); - - while(<$pipe>) { - ... - } - -=head1 DESCRIPTION - -C<IO::Pipe> provides an interface to creating pipes between -processes. - -=head1 CONSTRUCTOR - -=over 4 - -=item new ( [READER, WRITER] ) - -Creates an C<IO::Pipe>, which is a reference to a newly created symbol -(see the C<Symbol> package). C<IO::Pipe::new> optionally takes two -arguments, which should be objects blessed into C<IO::Handle>, or a -subclass thereof. These two objects will be used for the system call -to C<pipe>. If no arguments are given then method C<handles> is called -on the new C<IO::Pipe> object. - -These two handles are held in the array part of the GLOB until either -C<reader> or C<writer> is called. - -=back - -=head1 METHODS - -=over 4 - -=item reader ([ARGS]) - -The object is re-blessed into a sub-class of C<IO::Handle>, and becomes a -handle at the reading end of the pipe. If C<ARGS> are given then C<fork> -is called and C<ARGS> are passed to exec. - -=item writer ([ARGS]) - -The object is re-blessed into a sub-class of C<IO::Handle>, and becomes a -handle at the writing end of the pipe. If C<ARGS> are given then C<fork> -is called and C<ARGS> are passed to exec. - -=item handles () - -This method is called during construction by C<IO::Pipe::new> -on the newly created C<IO::Pipe> object. It returns an array of two objects -blessed into C<IO::Pipe::End>, or a subclass thereof. - -=back - -=head1 SEE ALSO - -L<IO::Handle> - -=head1 AUTHOR - -Graham Barr. Currently maintained by the Perl Porters. Please report all -bugs to <perl5-porters@perl.org>. - -=head1 COPYRIGHT - -Copyright (c) 1996-8 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/tlpkg/tlperl.old/lib/IO/Poll.pm b/Master/tlpkg/tlperl.old/lib/IO/Poll.pm deleted file mode 100644 index e7fb0135069..00000000000 --- a/Master/tlpkg/tlperl.old/lib/IO/Poll.pm +++ /dev/null @@ -1,209 +0,0 @@ - -# IO::Poll.pm -# -# Copyright (c) 1997-8 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 IO::Poll; - -use strict; -use IO::Handle; -use Exporter (); -our(@ISA, @EXPORT_OK, @EXPORT, $VERSION); - -@ISA = qw(Exporter); -$VERSION = "0.07"; - -@EXPORT = qw( POLLIN - POLLOUT - POLLERR - POLLHUP - POLLNVAL - ); - -@EXPORT_OK = qw( - POLLPRI - POLLRDNORM - POLLWRNORM - POLLRDBAND - POLLWRBAND - POLLNORM - ); - -# [0] maps fd's to requested masks -# [1] maps fd's to returned masks -# [2] maps fd's to handles -sub new { - my $class = shift; - - my $self = bless [{},{},{}], $class; - - $self; -} - -sub mask { - my $self = shift; - my $io = shift; - my $fd = fileno($io); - return unless defined $fd; - if (@_) { - my $mask = shift; - if($mask) { - $self->[0]{$fd}{$io} = $mask; # the error events are always returned - $self->[1]{$fd} = 0; # output mask - $self->[2]{$io} = $io; # remember handle - } else { - delete $self->[0]{$fd}{$io}; - unless(%{$self->[0]{$fd}}) { - # We no longer have any handles for this FD - delete $self->[1]{$fd}; - delete $self->[0]{$fd}; - } - delete $self->[2]{$io}; - } - } - - return unless exists $self->[0]{$fd} and exists $self->[0]{$fd}{$io}; - return $self->[0]{$fd}{$io}; -} - - -sub poll { - my($self,$timeout) = @_; - - $self->[1] = {}; - - my($fd,$mask,$iom); - my @poll = (); - - while(($fd,$iom) = each %{$self->[0]}) { - $mask = 0; - $mask |= $_ for values(%$iom); - push(@poll,$fd => $mask); - } - - my $ret = @poll ? _poll(defined($timeout) ? $timeout * 1000 : -1,@poll) : 0; - - return $ret - unless $ret > 0; - - while(@poll) { - my($fd,$got) = splice(@poll,0,2); - $self->[1]{$fd} = $got if $got; - } - - return $ret; -} - -sub events { - my $self = shift; - my $io = shift; - my $fd = fileno($io); - exists $self->[1]{$fd} and exists $self->[0]{$fd}{$io} - ? $self->[1]{$fd} & ($self->[0]{$fd}{$io}|POLLHUP|POLLERR|POLLNVAL) - : 0; -} - -sub remove { - my $self = shift; - my $io = shift; - $self->mask($io,0); -} - -sub handles { - my $self = shift; - return values %{$self->[2]} unless @_; - - my $events = shift || 0; - my($fd,$ev,$io,$mask); - my @handles = (); - - while(($fd,$ev) = each %{$self->[1]}) { - while (($io,$mask) = each %{$self->[0]{$fd}}) { - $mask |= POLLHUP|POLLERR|POLLNVAL; # must allow these - push @handles,$self->[2]{$io} if ($ev & $mask) & $events; - } - } - return @handles; -} - -1; - -__END__ - -=head1 NAME - -IO::Poll - Object interface to system poll call - -=head1 SYNOPSIS - - use IO::Poll qw(POLLRDNORM POLLWRNORM POLLIN POLLHUP); - - $poll = new IO::Poll; - - $poll->mask($input_handle => POLLIN); - $poll->mask($output_handle => POLLOUT); - - $poll->poll($timeout); - - $ev = $poll->events($input); - -=head1 DESCRIPTION - -C<IO::Poll> is a simple interface to the system level poll routine. - -=head1 METHODS - -=over 4 - -=item mask ( IO [, EVENT_MASK ] ) - -If EVENT_MASK is given, then, if EVENT_MASK is non-zero, IO is added to the -list of file descriptors and the next call to poll will check for -any event specified in EVENT_MASK. If EVENT_MASK is zero then IO will be -removed from the list of file descriptors. - -If EVENT_MASK is not given then the return value will be the current -event mask value for IO. - -=item poll ( [ TIMEOUT ] ) - -Call the system level poll routine. If TIMEOUT is not specified then the -call will block. Returns the number of handles which had events -happen, or -1 on error. - -=item events ( IO ) - -Returns the event mask which represents the events that happened on IO -during the last call to C<poll>. - -=item remove ( IO ) - -Remove IO from the list of file descriptors for the next poll. - -=item handles( [ EVENT_MASK ] ) - -Returns a list of handles. If EVENT_MASK is not given then a list of all -handles known will be returned. If EVENT_MASK is given then a list -of handles will be returned which had one of the events specified by -EVENT_MASK happen during the last call ti C<poll> - -=back - -=head1 SEE ALSO - -L<poll(2)>, L<IO::Handle>, L<IO::Select> - -=head1 AUTHOR - -Graham Barr. Currently maintained by the Perl Porters. Please report all -bugs to <perl5-porters@perl.org>. - -=head1 COPYRIGHT - -Copyright (c) 1997-8 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/tlpkg/tlperl.old/lib/IO/Seekable.pm b/Master/tlpkg/tlperl.old/lib/IO/Seekable.pm deleted file mode 100644 index db1effda287..00000000000 --- a/Master/tlpkg/tlperl.old/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.10"; -$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/tlpkg/tlperl.old/lib/IO/Select.pm b/Master/tlpkg/tlperl.old/lib/IO/Select.pm deleted file mode 100644 index fc05fe70e9c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/IO/Select.pm +++ /dev/null @@ -1,381 +0,0 @@ -# IO::Select.pm -# -# Copyright (c) 1997-8 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 IO::Select; - -use strict; -use warnings::register; -use vars qw($VERSION @ISA); -require Exporter; - -$VERSION = "1.17"; - -@ISA = qw(Exporter); # This is only so we can do version checking - -sub VEC_BITS () {0} -sub FD_COUNT () {1} -sub FIRST_FD () {2} - -sub new -{ - my $self = shift; - my $type = ref($self) || $self; - - my $vec = bless [undef,0], $type; - - $vec->add(@_) - if @_; - - $vec; -} - -sub add -{ - shift->_update('add', @_); -} - - -sub remove -{ - shift->_update('remove', @_); -} - - -sub exists -{ - my $vec = shift; - my $fno = $vec->_fileno(shift); - return undef unless defined $fno; - $vec->[$fno + FIRST_FD]; -} - - -sub _fileno -{ - my($self, $f) = @_; - return unless defined $f; - $f = $f->[0] if ref($f) eq 'ARRAY'; - ($f =~ /^\d+$/) ? $f : fileno($f); -} - -sub _update -{ - my $vec = shift; - my $add = shift eq 'add'; - - my $bits = $vec->[VEC_BITS]; - $bits = '' unless defined $bits; - - my $count = 0; - my $f; - foreach $f (@_) - { - my $fn = $vec->_fileno($f); - next unless defined $fn; - my $i = $fn + FIRST_FD; - if ($add) { - if (defined $vec->[$i]) { - $vec->[$i] = $f; # if array rest might be different, so we update - next; - } - $vec->[FD_COUNT]++; - vec($bits, $fn, 1) = 1; - $vec->[$i] = $f; - } else { # remove - next unless defined $vec->[$i]; - $vec->[FD_COUNT]--; - vec($bits, $fn, 1) = 0; - $vec->[$i] = undef; - } - $count++; - } - $vec->[VEC_BITS] = $vec->[FD_COUNT] ? $bits : undef; - $count; -} - -sub can_read -{ - my $vec = shift; - my $timeout = shift; - my $r = $vec->[VEC_BITS]; - - defined($r) && (select($r,undef,undef,$timeout) > 0) - ? handles($vec, $r) - : (); -} - -sub can_write -{ - my $vec = shift; - my $timeout = shift; - my $w = $vec->[VEC_BITS]; - - defined($w) && (select(undef,$w,undef,$timeout) > 0) - ? handles($vec, $w) - : (); -} - -sub has_exception -{ - my $vec = shift; - my $timeout = shift; - my $e = $vec->[VEC_BITS]; - - defined($e) && (select(undef,undef,$e,$timeout) > 0) - ? handles($vec, $e) - : (); -} - -sub has_error -{ - warnings::warn("Call to deprecated method 'has_error', use 'has_exception'") - if warnings::enabled(); - goto &has_exception; -} - -sub count -{ - my $vec = shift; - $vec->[FD_COUNT]; -} - -sub bits -{ - my $vec = shift; - $vec->[VEC_BITS]; -} - -sub as_string # for debugging -{ - my $vec = shift; - my $str = ref($vec) . ": "; - my $bits = $vec->bits; - my $count = $vec->count; - $str .= defined($bits) ? unpack("b*", $bits) : "undef"; - $str .= " $count"; - my @handles = @$vec; - splice(@handles, 0, FIRST_FD); - for (@handles) { - $str .= " " . (defined($_) ? "$_" : "-"); - } - $str; -} - -sub _max -{ - my($a,$b,$c) = @_; - $a > $b - ? $a > $c - ? $a - : $c - : $b > $c - ? $b - : $c; -} - -sub select -{ - shift - if defined $_[0] && !ref($_[0]); - - my($r,$w,$e,$t) = @_; - my @result = (); - - my $rb = defined $r ? $r->[VEC_BITS] : undef; - my $wb = defined $w ? $w->[VEC_BITS] : undef; - my $eb = defined $e ? $e->[VEC_BITS] : undef; - - if(select($rb,$wb,$eb,$t) > 0) - { - my @r = (); - my @w = (); - my @e = (); - my $i = _max(defined $r ? scalar(@$r)-1 : 0, - defined $w ? scalar(@$w)-1 : 0, - defined $e ? scalar(@$e)-1 : 0); - - for( ; $i >= FIRST_FD ; $i--) - { - my $j = $i - FIRST_FD; - push(@r, $r->[$i]) - if defined $rb && defined $r->[$i] && vec($rb, $j, 1); - push(@w, $w->[$i]) - if defined $wb && defined $w->[$i] && vec($wb, $j, 1); - push(@e, $e->[$i]) - if defined $eb && defined $e->[$i] && vec($eb, $j, 1); - } - - @result = (\@r, \@w, \@e); - } - @result; -} - - -sub handles -{ - my $vec = shift; - my $bits = shift; - my @h = (); - my $i; - my $max = scalar(@$vec) - 1; - - for ($i = FIRST_FD; $i <= $max; $i++) - { - next unless defined $vec->[$i]; - push(@h, $vec->[$i]) - if !defined($bits) || vec($bits, $i - FIRST_FD, 1); - } - - @h; -} - -1; -__END__ - -=head1 NAME - -IO::Select - OO interface to the select system call - -=head1 SYNOPSIS - - use IO::Select; - - $s = IO::Select->new(); - - $s->add(\*STDIN); - $s->add($some_handle); - - @ready = $s->can_read($timeout); - - @ready = IO::Select->new(@handles)->can_read(0); - -=head1 DESCRIPTION - -The C<IO::Select> package implements an object approach to the system C<select> -function call. It allows the user to see what IO handles, see L<IO::Handle>, -are ready for reading, writing or have an exception pending. - -=head1 CONSTRUCTOR - -=over 4 - -=item new ( [ HANDLES ] ) - -The constructor creates a new object and optionally initialises it with a set -of handles. - -=back - -=head1 METHODS - -=over 4 - -=item add ( HANDLES ) - -Add the list of handles to the C<IO::Select> object. It is these values that -will be returned when an event occurs. C<IO::Select> keeps these values in a -cache which is indexed by the C<fileno> of the handle, so if more than one -handle with the same C<fileno> is specified then only the last one is cached. - -Each handle can be an C<IO::Handle> object, an integer or an array -reference where the first element is an C<IO::Handle> or an integer. - -=item remove ( HANDLES ) - -Remove all the given handles from the object. This method also works -by the C<fileno> of the handles. So the exact handles that were added -need not be passed, just handles that have an equivalent C<fileno> - -=item exists ( HANDLE ) - -Returns a true value (actually the handle itself) if it is present. -Returns undef otherwise. - -=item handles - -Return an array of all registered handles. - -=item can_read ( [ TIMEOUT ] ) - -Return an array of handles that are ready for reading. C<TIMEOUT> is -the maximum amount of time to wait before returning an empty list, in -seconds, possibly fractional. If C<TIMEOUT> is not given and any -handles are registered then the call will block. - -=item can_write ( [ TIMEOUT ] ) - -Same as C<can_read> except check for handles that can be written to. - -=item has_exception ( [ TIMEOUT ] ) - -Same as C<can_read> except check for handles that have an exception -condition, for example pending out-of-band data. - -=item count () - -Returns the number of handles that the object will check for when -one of the C<can_> methods is called or the object is passed to -the C<select> static method. - -=item bits() - -Return the bit string suitable as argument to the core select() call. - -=item select ( READ, WRITE, EXCEPTION [, TIMEOUT ] ) - -C<select> is a static method, that is you call it with the package name -like C<new>. C<READ>, C<WRITE> and C<EXCEPTION> are either C<undef> or -C<IO::Select> objects. C<TIMEOUT> is optional and has the same effect as -for the core select call. - -The result will be an array of 3 elements, each a reference to an array -which will hold the handles that are ready for reading, writing and have -exceptions respectively. Upon error an empty list is returned. - -=back - -=head1 EXAMPLE - -Here is a short example which shows how C<IO::Select> could be used -to write a server which communicates with several sockets while also -listening for more connections on a listen socket - - use IO::Select; - use IO::Socket; - - $lsn = new IO::Socket::INET(Listen => 1, LocalPort => 8080); - $sel = new IO::Select( $lsn ); - - while(@ready = $sel->can_read) { - foreach $fh (@ready) { - if($fh == $lsn) { - # Create a new socket - $new = $lsn->accept; - $sel->add($new); - } - else { - # Process socket - - # Maybe we have finished with the socket - $sel->remove($fh); - $fh->close; - } - } - } - -=head1 AUTHOR - -Graham Barr. Currently maintained by the Perl Porters. Please report all -bugs to <perl5-porters@perl.org>. - -=head1 COPYRIGHT - -Copyright (c) 1997-8 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/tlpkg/tlperl.old/lib/IO/Socket.pm b/Master/tlpkg/tlperl.old/lib/IO/Socket.pm deleted file mode 100644 index 4429f2bb3e6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/IO/Socket.pm +++ /dev/null @@ -1,476 +0,0 @@ -# IO::Socket.pm -# -# Copyright (c) 1997-8 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 IO::Socket; - -require 5.006; - -use IO::Handle; -use Socket 1.3; -use Carp; -use strict; -our(@ISA, $VERSION, @EXPORT_OK); -use Exporter; -use Errno; - -# legacy - -require IO::Socket::INET; -require IO::Socket::UNIX if ($^O ne 'epoc' && $^O ne 'symbian'); - -@ISA = qw(IO::Handle); - -$VERSION = "1.29"; - -@EXPORT_OK = qw(sockatmark); - -sub import { - my $pkg = shift; - if (@_ && $_[0] eq 'sockatmark') { # not very extensible but for now, fast - Exporter::export_to_level('IO::Socket', 1, $pkg, 'sockatmark'); - } else { - my $callpkg = caller; - Exporter::export 'Socket', $callpkg, @_; - } -} - -sub new { - my($class,%arg) = @_; - my $sock = $class->SUPER::new(); - - $sock->autoflush(1); - - ${*$sock}{'io_socket_timeout'} = delete $arg{Timeout}; - - return scalar(%arg) ? $sock->configure(\%arg) - : $sock; -} - -my @domain2pkg; - -sub register_domain { - my($p,$d) = @_; - $domain2pkg[$d] = $p; -} - -sub configure { - my($sock,$arg) = @_; - my $domain = delete $arg->{Domain}; - - croak 'IO::Socket: Cannot configure a generic socket' - unless defined $domain; - - croak "IO::Socket: Unsupported socket domain" - unless defined $domain2pkg[$domain]; - - croak "IO::Socket: Cannot configure socket in domain '$domain'" - unless ref($sock) eq "IO::Socket"; - - bless($sock, $domain2pkg[$domain]); - $sock->configure($arg); -} - -sub socket { - @_ == 4 or croak 'usage: $sock->socket(DOMAIN, TYPE, PROTOCOL)'; - my($sock,$domain,$type,$protocol) = @_; - - socket($sock,$domain,$type,$protocol) or - return undef; - - ${*$sock}{'io_socket_domain'} = $domain; - ${*$sock}{'io_socket_type'} = $type; - ${*$sock}{'io_socket_proto'} = $protocol; - - $sock; -} - -sub socketpair { - @_ == 4 || croak 'usage: IO::Socket->socketpair(DOMAIN, TYPE, PROTOCOL)'; - my($class,$domain,$type,$protocol) = @_; - my $sock1 = $class->new(); - my $sock2 = $class->new(); - - socketpair($sock1,$sock2,$domain,$type,$protocol) or - return (); - - ${*$sock1}{'io_socket_type'} = ${*$sock2}{'io_socket_type'} = $type; - ${*$sock1}{'io_socket_proto'} = ${*$sock2}{'io_socket_proto'} = $protocol; - - ($sock1,$sock2); -} - -sub connect { - @_ == 2 or croak 'usage: $sock->connect(NAME)'; - my $sock = shift; - my $addr = shift; - my $timeout = ${*$sock}{'io_socket_timeout'}; - my $err; - my $blocking; - - $blocking = $sock->blocking(0) if $timeout; - if (!connect($sock, $addr)) { - if (defined $timeout && $!{EINPROGRESS}) { - require IO::Select; - - my $sel = new IO::Select $sock; - - if (!$sel->can_write($timeout)) { - $err = $! || (exists &Errno::ETIMEDOUT ? &Errno::ETIMEDOUT : 1); - $@ = "connect: timeout"; - } - elsif (!connect($sock,$addr) && not $!{EISCONN}) { - # Some systems refuse to re-connect() to - # an already open socket and set errno to EISCONN. - $err = $!; - $@ = "connect: $!"; - } - } - elsif ($blocking || !$!{EINPROGRESS}) { - $err = $!; - $@ = "connect: $!"; - } - } - - $sock->blocking(1) if $blocking; - - $! = $err if $err; - - $err ? undef : $sock; -} - -sub bind { - @_ == 2 or croak 'usage: $sock->bind(NAME)'; - my $sock = shift; - my $addr = shift; - - return bind($sock, $addr) ? $sock - : undef; -} - -sub listen { - @_ >= 1 && @_ <= 2 or croak 'usage: $sock->listen([QUEUE])'; - my($sock,$queue) = @_; - $queue = 5 - unless $queue && $queue > 0; - - return listen($sock, $queue) ? $sock - : undef; -} - -sub accept { - @_ == 1 || @_ == 2 or croak 'usage $sock->accept([PKG])'; - my $sock = shift; - my $pkg = shift || $sock; - my $timeout = ${*$sock}{'io_socket_timeout'}; - my $new = $pkg->new(Timeout => $timeout); - my $peer = undef; - - if(defined $timeout) { - require IO::Select; - - my $sel = new IO::Select $sock; - - unless ($sel->can_read($timeout)) { - $@ = 'accept: timeout'; - $! = (exists &Errno::ETIMEDOUT ? &Errno::ETIMEDOUT : 1); - return; - } - } - - $peer = accept($new,$sock) - or return; - - return wantarray ? ($new, $peer) - : $new; -} - -sub sockname { - @_ == 1 or croak 'usage: $sock->sockname()'; - getsockname($_[0]); -} - -sub peername { - @_ == 1 or croak 'usage: $sock->peername()'; - my($sock) = @_; - getpeername($sock) - || ${*$sock}{'io_socket_peername'} - || undef; -} - -sub connected { - @_ == 1 or croak 'usage: $sock->connected()'; - my($sock) = @_; - getpeername($sock); -} - -sub send { - @_ >= 2 && @_ <= 4 or croak 'usage: $sock->send(BUF, [FLAGS, [TO]])'; - my $sock = $_[0]; - my $flags = $_[2] || 0; - my $peer = $_[3] || $sock->peername; - - croak 'send: Cannot determine peer address' - unless($peer); - - my $r = defined(getpeername($sock)) - ? send($sock, $_[1], $flags) - : send($sock, $_[1], $flags, $peer); - - # remember who we send to, if it was successful - ${*$sock}{'io_socket_peername'} = $peer - if(@_ == 4 && defined $r); - - $r; -} - -sub recv { - @_ == 3 || @_ == 4 or croak 'usage: $sock->recv(BUF, LEN [, FLAGS])'; - my $sock = $_[0]; - my $len = $_[2]; - my $flags = $_[3] || 0; - - # remember who we recv'd from - ${*$sock}{'io_socket_peername'} = recv($sock, $_[1]='', $len, $flags); -} - -sub shutdown { - @_ == 2 or croak 'usage: $sock->shutdown(HOW)'; - my($sock, $how) = @_; - shutdown($sock, $how); -} - -sub setsockopt { - @_ == 4 or croak '$sock->setsockopt(LEVEL, OPTNAME)'; - setsockopt($_[0],$_[1],$_[2],$_[3]); -} - -my $intsize = length(pack("i",0)); - -sub getsockopt { - @_ == 3 or croak '$sock->getsockopt(LEVEL, OPTNAME)'; - my $r = getsockopt($_[0],$_[1],$_[2]); - # Just a guess - $r = unpack("i", $r) - if(defined $r && length($r) == $intsize); - $r; -} - -sub sockopt { - my $sock = shift; - @_ == 1 ? $sock->getsockopt(SOL_SOCKET,@_) - : $sock->setsockopt(SOL_SOCKET,@_); -} - -sub atmark { - @_ == 1 or croak 'usage: $sock->atmark()'; - my($sock) = @_; - sockatmark($sock); -} - -sub timeout { - @_ == 1 || @_ == 2 or croak 'usage: $sock->timeout([VALUE])'; - my($sock,$val) = @_; - my $r = ${*$sock}{'io_socket_timeout'}; - - ${*$sock}{'io_socket_timeout'} = defined $val ? 0 + $val : $val - if(@_ == 2); - - $r; -} - -sub sockdomain { - @_ == 1 or croak 'usage: $sock->sockdomain()'; - my $sock = shift; - ${*$sock}{'io_socket_domain'}; -} - -sub socktype { - @_ == 1 or croak 'usage: $sock->socktype()'; - my $sock = shift; - ${*$sock}{'io_socket_type'} -} - -sub protocol { - @_ == 1 or croak 'usage: $sock->protocol()'; - my($sock) = @_; - ${*$sock}{'io_socket_proto'}; -} - -1; - -__END__ - -=head1 NAME - -IO::Socket - Object interface to socket communications - -=head1 SYNOPSIS - - use IO::Socket; - -=head1 DESCRIPTION - -C<IO::Socket> provides an object interface to creating and using sockets. It -is built upon the L<IO::Handle> interface and inherits all the methods defined -by L<IO::Handle>. - -C<IO::Socket> only defines methods for those operations which are common to all -types of socket. Operations which are specified to a socket in a particular -domain have methods defined in sub classes of C<IO::Socket> - -C<IO::Socket> will export all functions (and constants) defined by L<Socket>. - -=head1 CONSTRUCTOR - -=over 4 - -=item new ( [ARGS] ) - -Creates an C<IO::Socket>, which is a reference to a -newly created symbol (see the C<Symbol> package). C<new> -optionally takes arguments, these arguments are in key-value pairs. -C<new> only looks for one key C<Domain> which tells new which domain -the socket will be in. All other arguments will be passed to the -configuration method of the package for that domain, See below. - - NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE - -As of VERSION 1.18 all IO::Socket objects have autoflush turned on -by default. This was not the case with earlier releases. - - NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE - -=back - -=head1 METHODS - -See L<perlfunc> for complete descriptions of each of the following -supported C<IO::Socket> methods, which are just front ends for the -corresponding built-in functions: - - socket - socketpair - bind - listen - accept - send - recv - peername (getpeername) - sockname (getsockname) - shutdown - -Some methods take slightly different arguments to those defined in L<perlfunc> -in attempt to make the interface more flexible. These are - -=over 4 - -=item accept([PKG]) - -perform the system call C<accept> on the socket and return a new -object. The new object will be created in the same class as the listen -socket, unless C<PKG> is specified. This object can be used to -communicate with the client that was trying to connect. - -In a scalar context the new socket is returned, or undef upon -failure. In a list context a two-element array is returned containing -the new socket and the peer address; the list will be empty upon -failure. - -The timeout in the [PKG] can be specified as zero to effect a "poll", -but you shouldn't do that because a new IO::Select object will be -created behind the scenes just to do the single poll. This is -horrendously inefficient. Use rather true select() with a zero -timeout on the handle, or non-blocking IO. - -=item socketpair(DOMAIN, TYPE, PROTOCOL) - -Call C<socketpair> and return a list of two sockets created, or an -empty list on failure. - -=back - -Additional methods that are provided are: - -=over 4 - -=item atmark - -True if the socket is currently positioned at the urgent data mark, -false otherwise. - - use IO::Socket; - - my $sock = IO::Socket::INET->new('some_server'); - $sock->read($data, 1024) until $sock->atmark; - -Note: this is a reasonably new addition to the family of socket -functions, so all systems may not support this yet. If it is -unsupported by the system, an attempt to use this method will -abort the program. - -The atmark() functionality is also exportable as sockatmark() function: - - use IO::Socket 'sockatmark'; - -This allows for a more traditional use of sockatmark() as a procedural -socket function. If your system does not support sockatmark(), the -C<use> declaration will fail at compile time. - -=item connected - -If the socket is in a connected state the peer address is returned. -If the socket is not in a connected state then undef will be returned. - -=item protocol - -Returns the numerical number for the protocol being used on the socket, if -known. If the protocol is unknown, as with an AF_UNIX socket, zero -is returned. - -=item sockdomain - -Returns the numerical number for the socket domain type. For example, for -an AF_INET socket the value of &AF_INET will be returned. - -=item sockopt(OPT [, VAL]) - -Unified method to both set and get options in the SOL_SOCKET level. If called -with one argument then getsockopt is called, otherwise setsockopt is called. - -=item socktype - -Returns the numerical number for the socket type. For example, for -a SOCK_STREAM socket the value of &SOCK_STREAM will be returned. - -=item timeout([VAL]) - -Set or get the timeout value associated with this socket. If called without -any arguments then the current setting is returned. If called with an argument -the current setting is changed and the previous value returned. - -=back - -=head1 SEE ALSO - -L<Socket>, L<IO::Handle>, L<IO::Socket::INET>, L<IO::Socket::UNIX> - -=head1 AUTHOR - -Graham Barr. atmark() by Lincoln Stein. Currently maintained by the -Perl Porters. Please report all bugs to <perl5-porters@perl.org>. - -=head1 COPYRIGHT - -Copyright (c) 1997-8 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. - -The atmark() implementation: Copyright 2001, Lincoln Stein <lstein@cshl.org>. -This module is distributed under the same terms as Perl itself. -Feel free to use, modify and redistribute it as long as you retain -the correct attribution. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/IO/Socket/INET.pm b/Master/tlpkg/tlperl.old/lib/IO/Socket/INET.pm deleted file mode 100644 index 96b49911d81..00000000000 --- a/Master/tlpkg/tlperl.old/lib/IO/Socket/INET.pm +++ /dev/null @@ -1,431 +0,0 @@ -# IO::Socket::INET.pm -# -# Copyright (c) 1997-8 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 IO::Socket::INET; - -use strict; -our(@ISA, $VERSION); -use IO::Socket; -use Socket; -use Carp; -use Exporter; -use Errno; - -@ISA = qw(IO::Socket); -$VERSION = "1.29"; - -my $EINVAL = exists(&Errno::EINVAL) ? Errno::EINVAL() : 1; - -IO::Socket::INET->register_domain( AF_INET ); - -my %socket_type = ( tcp => SOCK_STREAM, - udp => SOCK_DGRAM, - icmp => SOCK_RAW - ); - -sub new { - my $class = shift; - unshift(@_, "PeerAddr") if @_ == 1; - return $class->SUPER::new(@_); -} - -sub _sock_info { - my($addr,$port,$proto) = @_; - my $origport = $port; - my @proto = (); - my @serv = (); - - $port = $1 - if(defined $addr && $addr =~ s,:([\w\(\)/]+)$,,); - - if(defined $proto && $proto =~ /\D/) { - if(@proto = getprotobyname($proto)) { - $proto = $proto[2] || undef; - } - else { - $@ = "Bad protocol '$proto'"; - return; - } - } - - if(defined $port) { - my $defport = ($port =~ s,\((\d+)\)$,,) ? $1 : undef; - my $pnum = ($port =~ m,^(\d+)$,)[0]; - - @serv = getservbyname($port, $proto[0] || "") - if ($port =~ m,\D,); - - $port = $serv[2] || $defport || $pnum; - unless (defined $port) { - $@ = "Bad service '$origport'"; - return; - } - - $proto = (getprotobyname($serv[3]))[2] || undef - if @serv && !$proto; - } - - return ($addr || undef, - $port || undef, - $proto || undef - ); -} - -sub _error { - my $sock = shift; - my $err = shift; - { - local($!); - my $title = ref($sock).": "; - $@ = join("", $_[0] =~ /^$title/ ? "" : $title, @_); - close($sock) - if(defined fileno($sock)); - } - $! = $err; - return undef; -} - -sub _get_addr { - my($sock,$addr_str, $multi) = @_; - my @addr; - if ($multi && $addr_str !~ /^\d+(?:\.\d+){3}$/) { - (undef, undef, undef, undef, @addr) = gethostbyname($addr_str); - } else { - my $h = inet_aton($addr_str); - push(@addr, $h) if defined $h; - } - @addr; -} - -sub configure { - my($sock,$arg) = @_; - my($lport,$rport,$laddr,$raddr,$proto,$type); - - - $arg->{LocalAddr} = $arg->{LocalHost} - if exists $arg->{LocalHost} && !exists $arg->{LocalAddr}; - - ($laddr,$lport,$proto) = _sock_info($arg->{LocalAddr}, - $arg->{LocalPort}, - $arg->{Proto}) - or return _error($sock, $!, $@); - - $laddr = defined $laddr ? inet_aton($laddr) - : INADDR_ANY; - - return _error($sock, $EINVAL, "Bad hostname '",$arg->{LocalAddr},"'") - unless(defined $laddr); - - $arg->{PeerAddr} = $arg->{PeerHost} - if exists $arg->{PeerHost} && !exists $arg->{PeerAddr}; - - unless(exists $arg->{Listen}) { - ($raddr,$rport,$proto) = _sock_info($arg->{PeerAddr}, - $arg->{PeerPort}, - $proto) - or return _error($sock, $!, $@); - } - - $proto ||= (getprotobyname('tcp'))[2]; - - my $pname = (getprotobynumber($proto))[0]; - $type = $arg->{Type} || $socket_type{lc $pname}; - - my @raddr = (); - - if(defined $raddr) { - @raddr = $sock->_get_addr($raddr, $arg->{MultiHomed}); - return _error($sock, $EINVAL, "Bad hostname '",$arg->{PeerAddr},"'") - unless @raddr; - } - - while(1) { - - $sock->socket(AF_INET, $type, $proto) or - return _error($sock, $!, "$!"); - - if (defined $arg->{Blocking}) { - defined $sock->blocking($arg->{Blocking}) - or return _error($sock, $!, "$!"); - } - - if ($arg->{Reuse} || $arg->{ReuseAddr}) { - $sock->sockopt(SO_REUSEADDR,1) or - return _error($sock, $!, "$!"); - } - - if ($arg->{ReusePort}) { - $sock->sockopt(SO_REUSEPORT,1) or - return _error($sock, $!, "$!"); - } - - if ($arg->{Broadcast}) { - $sock->sockopt(SO_BROADCAST,1) or - return _error($sock, $!, "$!"); - } - - if($lport || ($laddr ne INADDR_ANY) || exists $arg->{Listen}) { - $sock->bind($lport || 0, $laddr) or - return _error($sock, $!, "$!"); - } - - if(exists $arg->{Listen}) { - $sock->listen($arg->{Listen} || 5) or - return _error($sock, $!, "$!"); - last; - } - - # don't try to connect unless we're given a PeerAddr - last unless exists($arg->{PeerAddr}); - - $raddr = shift @raddr; - - return _error($sock, $EINVAL, 'Cannot determine remote port') - unless($rport || $type == SOCK_DGRAM || $type == SOCK_RAW); - - last - unless($type == SOCK_STREAM || defined $raddr); - - return _error($sock, $EINVAL, "Bad hostname '",$arg->{PeerAddr},"'") - unless defined $raddr; - -# my $timeout = ${*$sock}{'io_socket_timeout'}; -# my $before = time() if $timeout; - - undef $@; - if ($sock->connect(pack_sockaddr_in($rport, $raddr))) { -# ${*$sock}{'io_socket_timeout'} = $timeout; - return $sock; - } - - return _error($sock, $!, $@ || "Timeout") - unless @raddr; - -# if ($timeout) { -# my $new_timeout = $timeout - (time() - $before); -# return _error($sock, -# (exists(&Errno::ETIMEDOUT) ? Errno::ETIMEDOUT() : $EINVAL), -# "Timeout") if $new_timeout <= 0; -# ${*$sock}{'io_socket_timeout'} = $new_timeout; -# } - - } - - $sock; -} - -sub connect { - @_ == 2 || @_ == 3 or - croak 'usage: $sock->connect(NAME) or $sock->connect(PORT, ADDR)'; - my $sock = shift; - return $sock->SUPER::connect(@_ == 1 ? shift : pack_sockaddr_in(@_)); -} - -sub bind { - @_ == 2 || @_ == 3 or - croak 'usage: $sock->bind(NAME) or $sock->bind(PORT, ADDR)'; - my $sock = shift; - return $sock->SUPER::bind(@_ == 1 ? shift : pack_sockaddr_in(@_)) -} - -sub sockaddr { - @_ == 1 or croak 'usage: $sock->sockaddr()'; - my($sock) = @_; - my $name = $sock->sockname; - $name ? (sockaddr_in($name))[1] : undef; -} - -sub sockport { - @_ == 1 or croak 'usage: $sock->sockport()'; - my($sock) = @_; - my $name = $sock->sockname; - $name ? (sockaddr_in($name))[0] : undef; -} - -sub sockhost { - @_ == 1 or croak 'usage: $sock->sockhost()'; - my($sock) = @_; - my $addr = $sock->sockaddr; - $addr ? inet_ntoa($addr) : undef; -} - -sub peeraddr { - @_ == 1 or croak 'usage: $sock->peeraddr()'; - my($sock) = @_; - my $name = $sock->peername; - $name ? (sockaddr_in($name))[1] : undef; -} - -sub peerport { - @_ == 1 or croak 'usage: $sock->peerport()'; - my($sock) = @_; - my $name = $sock->peername; - $name ? (sockaddr_in($name))[0] : undef; -} - -sub peerhost { - @_ == 1 or croak 'usage: $sock->peerhost()'; - my($sock) = @_; - my $addr = $sock->peeraddr; - $addr ? inet_ntoa($addr) : undef; -} - -1; - -__END__ - -=head1 NAME - -IO::Socket::INET - Object interface for AF_INET domain sockets - -=head1 SYNOPSIS - - use IO::Socket::INET; - -=head1 DESCRIPTION - -C<IO::Socket::INET> provides an object interface to creating and using sockets -in the AF_INET domain. It is built upon the L<IO::Socket> interface and -inherits all the methods defined by L<IO::Socket>. - -=head1 CONSTRUCTOR - -=over 4 - -=item new ( [ARGS] ) - -Creates an C<IO::Socket::INET> object, which is a reference to a -newly created symbol (see the C<Symbol> package). C<new> -optionally takes arguments, these arguments are in key-value pairs. - -In addition to the key-value pairs accepted by L<IO::Socket>, -C<IO::Socket::INET> provides. - - - PeerAddr Remote host address <hostname>[:<port>] - PeerHost Synonym for PeerAddr - PeerPort Remote port or service <service>[(<no>)] | <no> - LocalAddr Local host bind address hostname[:port] - LocalHost Synonym for LocalAddr - LocalPort Local host bind port <service>[(<no>)] | <no> - Proto Protocol name (or number) "tcp" | "udp" | ... - Type Socket type SOCK_STREAM | SOCK_DGRAM | ... - Listen Queue size for listen - ReuseAddr Set SO_REUSEADDR before binding - Reuse Set SO_REUSEADDR before binding (deprecated, prefer ReuseAddr) - ReusePort Set SO_REUSEPORT before binding - Broadcast Set SO_BROADCAST before binding - Timeout Timeout value for various operations - MultiHomed Try all addresses for multi-homed hosts - Blocking Determine if connection will be blocking mode - -If C<Listen> is defined then a listen socket is created, else if the -socket type, which is derived from the protocol, is SOCK_STREAM then -connect() is called. - -Although it is not illegal, the use of C<MultiHomed> on a socket -which is in non-blocking mode is of little use. This is because the -first connect will never fail with a timeout as the connect call -will not block. - -The C<PeerAddr> can be a hostname or the IP-address on the -"xx.xx.xx.xx" form. The C<PeerPort> can be a number or a symbolic -service name. The service name might be followed by a number in -parenthesis which is used if the service is not known by the system. -The C<PeerPort> specification can also be embedded in the C<PeerAddr> -by preceding it with a ":". - -If C<Proto> is not given and you specify a symbolic C<PeerPort> port, -then the constructor will try to derive C<Proto> from the service -name. As a last resort C<Proto> "tcp" is assumed. The C<Type> -parameter will be deduced from C<Proto> if not specified. - -If the constructor is only passed a single argument, it is assumed to -be a C<PeerAddr> specification. - -If C<Blocking> is set to 0, the connection will be in nonblocking mode. -If not specified it defaults to 1 (blocking mode). - -Examples: - - $sock = IO::Socket::INET->new(PeerAddr => 'www.perl.org', - PeerPort => 'http(80)', - Proto => 'tcp'); - - $sock = IO::Socket::INET->new(PeerAddr => 'localhost:smtp(25)'); - - $sock = IO::Socket::INET->new(Listen => 5, - LocalAddr => 'localhost', - LocalPort => 9000, - Proto => 'tcp'); - - $sock = IO::Socket::INET->new('127.0.0.1:25'); - - $sock = IO::Socket::INET->new(PeerPort => 9999, - PeerAddr => inet_ntoa(INADDR_BROADCAST), - Proto => udp, - LocalAddr => 'localhost', - Broadcast => 1 ) - or die "Can't bind : $@\n"; - - NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE - -As of VERSION 1.18 all IO::Socket objects have autoflush turned on -by default. This was not the case with earlier releases. - - NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE - -=back - -=head2 METHODS - -=over 4 - -=item sockaddr () - -Return the address part of the sockaddr structure for the socket - -=item sockport () - -Return the port number that the socket is using on the local host - -=item sockhost () - -Return the address part of the sockaddr structure for the socket in a -text form xx.xx.xx.xx - -=item peeraddr () - -Return the address part of the sockaddr structure for the socket on -the peer host - -=item peerport () - -Return the port number for the socket on the peer host. - -=item peerhost () - -Return the address part of the sockaddr structure for the socket on the -peer host in a text form xx.xx.xx.xx - -=back - -=head1 SEE ALSO - -L<Socket>, L<IO::Socket> - -=head1 AUTHOR - -Graham Barr. Currently maintained by the Perl Porters. Please report all -bugs to <perl5-porters@perl.org>. - -=head1 COPYRIGHT - -Copyright (c) 1996-8 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/tlpkg/tlperl.old/lib/IO/Socket/UNIX.pm b/Master/tlpkg/tlperl.old/lib/IO/Socket/UNIX.pm deleted file mode 100644 index 952a0f41f0c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/IO/Socket/UNIX.pm +++ /dev/null @@ -1,144 +0,0 @@ -# IO::Socket::UNIX.pm -# -# Copyright (c) 1997-8 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 IO::Socket::UNIX; - -use strict; -our(@ISA, $VERSION); -use IO::Socket; -use Socket; -use Carp; - -@ISA = qw(IO::Socket); -$VERSION = "1.22"; -$VERSION = eval $VERSION; - -IO::Socket::UNIX->register_domain( AF_UNIX ); - -sub new { - my $class = shift; - unshift(@_, "Peer") if @_ == 1; - return $class->SUPER::new(@_); -} - -sub configure { - my($sock,$arg) = @_; - my($bport,$cport); - - my $type = $arg->{Type} || SOCK_STREAM; - - $sock->socket(AF_UNIX, $type, 0) or - return undef; - - if(exists $arg->{Local}) { - my $addr = sockaddr_un($arg->{Local}); - $sock->bind($addr) or - return undef; - } - if(exists $arg->{Listen} && $type != SOCK_DGRAM) { - $sock->listen($arg->{Listen} || 5) or - return undef; - } - elsif(exists $arg->{Peer}) { - my $addr = sockaddr_un($arg->{Peer}); - $sock->connect($addr) or - return undef; - } - - $sock; -} - -sub hostpath { - @_ == 1 or croak 'usage: $sock->hostpath()'; - my $n = $_[0]->sockname || return undef; - (sockaddr_un($n))[0]; -} - -sub peerpath { - @_ == 1 or croak 'usage: $sock->peerpath()'; - my $n = $_[0]->peername || return undef; - (sockaddr_un($n))[0]; -} - -1; # Keep require happy - -__END__ - -=head1 NAME - -IO::Socket::UNIX - Object interface for AF_UNIX domain sockets - -=head1 SYNOPSIS - - use IO::Socket::UNIX; - -=head1 DESCRIPTION - -C<IO::Socket::UNIX> provides an object interface to creating and using sockets -in the AF_UNIX domain. It is built upon the L<IO::Socket> interface and -inherits all the methods defined by L<IO::Socket>. - -=head1 CONSTRUCTOR - -=over 4 - -=item new ( [ARGS] ) - -Creates an C<IO::Socket::UNIX> object, which is a reference to a -newly created symbol (see the C<Symbol> package). C<new> -optionally takes arguments, these arguments are in key-value pairs. - -In addition to the key-value pairs accepted by L<IO::Socket>, -C<IO::Socket::UNIX> provides. - - Type Type of socket (eg SOCK_STREAM or SOCK_DGRAM) - Local Path to local fifo - Peer Path to peer fifo - Listen Create a listen socket - -If the constructor is only passed a single argument, it is assumed to -be a C<Peer> specification. - - - NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE - -As of VERSION 1.18 all IO::Socket objects have autoflush turned on -by default. This was not the case with earlier releases. - - NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE - -=back - -=head1 METHODS - -=over 4 - -=item hostpath() - -Returns the pathname to the fifo at the local end - -=item peerpath() - -Returns the pathanme to the fifo at the peer end - -=back - -=head1 SEE ALSO - -L<Socket>, L<IO::Socket> - -=head1 AUTHOR - -Graham Barr. Currently maintained by the Perl Porters. Please report all -bugs to <perl5-porters@perl.org>. - -=head1 COPYRIGHT - -Copyright (c) 1996-8 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/tlpkg/tlperl.old/lib/IO/String.pm b/Master/tlpkg/tlperl.old/lib/IO/String.pm deleted file mode 100755 index 4bc8e719601..00000000000 --- a/Master/tlpkg/tlperl.old/lib/IO/String.pm +++ /dev/null @@ -1,551 +0,0 @@ -package IO::String; - -# Copyright 1998-2005 Gisle Aas. -# -# This library is free software; you can redistribute it and/or -# modify it under the same terms as Perl itself. - -require 5.005_03; -use strict; -use vars qw($VERSION $DEBUG $IO_CONSTANTS); -$VERSION = "1.08"; # $Date: 2005/12/05 12:00:47 $ - -use Symbol (); - -sub new -{ - my $class = shift; - my $self = bless Symbol::gensym(), ref($class) || $class; - tie *$self, $self; - $self->open(@_); - return $self; -} - -sub open -{ - my $self = shift; - return $self->new(@_) unless ref($self); - - if (@_) { - my $bufref = ref($_[0]) ? $_[0] : \$_[0]; - $$bufref = "" unless defined $$bufref; - *$self->{buf} = $bufref; - } - else { - my $buf = ""; - *$self->{buf} = \$buf; - } - *$self->{pos} = 0; - *$self->{lno} = 0; - return $self; -} - -sub pad -{ - my $self = shift; - my $old = *$self->{pad}; - *$self->{pad} = substr($_[0], 0, 1) if @_; - return "\0" unless defined($old) && length($old); - return $old; -} - -sub dump -{ - require Data::Dumper; - my $self = shift; - print Data::Dumper->Dump([$self], ['*self']); - print Data::Dumper->Dump([*$self{HASH}], ['$self{HASH}']); - return; -} - -sub TIEHANDLE -{ - print "TIEHANDLE @_\n" if $DEBUG; - return $_[0] if ref($_[0]); - my $class = shift; - my $self = bless Symbol::gensym(), $class; - $self->open(@_); - return $self; -} - -sub DESTROY -{ - print "DESTROY @_\n" if $DEBUG; -} - -sub close -{ - my $self = shift; - delete *$self->{buf}; - delete *$self->{pos}; - delete *$self->{lno}; - undef *$self if $] eq "5.008"; # workaround for some bug - return 1; -} - -sub opened -{ - my $self = shift; - return defined *$self->{buf}; -} - -sub binmode -{ - my $self = shift; - return 1 unless @_; - # XXX don't know much about layers yet :-( - return 0; -} - -sub getc -{ - my $self = shift; - my $buf; - return $buf if $self->read($buf, 1); - return undef; -} - -sub ungetc -{ - my $self = shift; - $self->setpos($self->getpos() - 1); - return 1; -} - -sub eof -{ - my $self = shift; - return length(${*$self->{buf}}) <= *$self->{pos}; -} - -sub print -{ - my $self = shift; - if (defined $\) { - if (defined $,) { - $self->write(join($,, @_).$\); - } - else { - $self->write(join("",@_).$\); - } - } - else { - if (defined $,) { - $self->write(join($,, @_)); - } - else { - $self->write(join("",@_)); - } - } - return 1; -} -*printflush = \*print; - -sub printf -{ - my $self = shift; - print "PRINTF(@_)\n" if $DEBUG; - my $fmt = shift; - $self->write(sprintf($fmt, @_)); - return 1; -} - - -my($SEEK_SET, $SEEK_CUR, $SEEK_END); - -sub _init_seek_constants -{ - if ($IO_CONSTANTS) { - require IO::Handle; - $SEEK_SET = &IO::Handle::SEEK_SET; - $SEEK_CUR = &IO::Handle::SEEK_CUR; - $SEEK_END = &IO::Handle::SEEK_END; - } - else { - $SEEK_SET = 0; - $SEEK_CUR = 1; - $SEEK_END = 2; - } -} - - -sub seek -{ - my($self,$off,$whence) = @_; - my $buf = *$self->{buf} || return 0; - my $len = length($$buf); - my $pos = *$self->{pos}; - - _init_seek_constants() unless defined $SEEK_SET; - - if ($whence == $SEEK_SET) { $pos = $off } - elsif ($whence == $SEEK_CUR) { $pos += $off } - elsif ($whence == $SEEK_END) { $pos = $len + $off } - else { die "Bad whence ($whence)" } - print "SEEK(POS=$pos,OFF=$off,LEN=$len)\n" if $DEBUG; - - $pos = 0 if $pos < 0; - $self->truncate($pos) if $pos > $len; # extend file - *$self->{pos} = $pos; - return 1; -} - -sub pos -{ - my $self = shift; - my $old = *$self->{pos}; - if (@_) { - my $pos = shift || 0; - my $buf = *$self->{buf}; - my $len = $buf ? length($$buf) : 0; - $pos = $len if $pos > $len; - *$self->{pos} = $pos; - } - return $old; -} - -sub getpos { shift->pos; } - -*sysseek = \&seek; -*setpos = \&pos; -*tell = \&getpos; - - - -sub getline -{ - my $self = shift; - my $buf = *$self->{buf} || return; - my $len = length($$buf); - my $pos = *$self->{pos}; - return if $pos >= $len; - - unless (defined $/) { # slurp - *$self->{pos} = $len; - return substr($$buf, $pos); - } - - unless (length $/) { # paragraph mode - # XXX slow&lazy implementation using getc() - my $para = ""; - my $eol = 0; - my $c; - while (defined($c = $self->getc)) { - if ($c eq "\n") { - $eol++; - next if $eol > 2; - } - elsif ($eol > 1) { - $self->ungetc($c); - last; - } - else { - $eol = 0; - } - $para .= $c; - } - return $para; # XXX wantarray - } - - my $idx = index($$buf,$/,$pos); - if ($idx < 0) { - # return rest of it - *$self->{pos} = $len; - $. = ++ *$self->{lno}; - return substr($$buf, $pos); - } - $len = $idx - $pos + length($/); - *$self->{pos} += $len; - $. = ++ *$self->{lno}; - return substr($$buf, $pos, $len); -} - -sub getlines -{ - die "getlines() called in scalar context\n" unless wantarray; - my $self = shift; - my($line, @lines); - push(@lines, $line) while defined($line = $self->getline); - return @lines; -} - -sub READLINE -{ - goto &getlines if wantarray; - goto &getline; -} - -sub input_line_number -{ - my $self = shift; - my $old = *$self->{lno}; - *$self->{lno} = shift if @_; - return $old; -} - -sub truncate -{ - my $self = shift; - my $len = shift || 0; - my $buf = *$self->{buf}; - if (length($$buf) >= $len) { - substr($$buf, $len) = ''; - *$self->{pos} = $len if $len < *$self->{pos}; - } - else { - $$buf .= ($self->pad x ($len - length($$buf))); - } - return 1; -} - -sub read -{ - my $self = shift; - my $buf = *$self->{buf}; - return undef unless $buf; - - my $pos = *$self->{pos}; - my $rem = length($$buf) - $pos; - my $len = $_[1]; - $len = $rem if $len > $rem; - return undef if $len < 0; - if (@_ > 2) { # read offset - substr($_[0],$_[2]) = substr($$buf, $pos, $len); - } - else { - $_[0] = substr($$buf, $pos, $len); - } - *$self->{pos} += $len; - return $len; -} - -sub write -{ - my $self = shift; - my $buf = *$self->{buf}; - return unless $buf; - - my $pos = *$self->{pos}; - my $slen = length($_[0]); - my $len = $slen; - my $off = 0; - if (@_ > 1) { - $len = $_[1] if $_[1] < $len; - if (@_ > 2) { - $off = $_[2] || 0; - die "Offset outside string" if $off > $slen; - if ($off < 0) { - $off += $slen; - die "Offset outside string" if $off < 0; - } - my $rem = $slen - $off; - $len = $rem if $rem < $len; - } - } - substr($$buf, $pos, $len) = substr($_[0], $off, $len); - *$self->{pos} += $len; - return $len; -} - -*sysread = \&read; -*syswrite = \&write; - -sub stat -{ - my $self = shift; - return unless $self->opened; - return 1 unless wantarray; - my $len = length ${*$self->{buf}}; - - return ( - undef, undef, # dev, ino - 0666, # filemode - 1, # links - $>, # user id - $), # group id - undef, # device id - $len, # size - undef, # atime - undef, # mtime - undef, # ctime - 512, # blksize - int(($len+511)/512) # blocks - ); -} - -sub FILENO { - return undef; # XXX perlfunc says this means the file is closed -} - -sub blocking { - my $self = shift; - my $old = *$self->{blocking} || 0; - *$self->{blocking} = shift if @_; - return $old; -} - -my $notmuch = sub { return }; - -*fileno = $notmuch; -*error = $notmuch; -*clearerr = $notmuch; -*sync = $notmuch; -*flush = $notmuch; -*setbuf = $notmuch; -*setvbuf = $notmuch; - -*untaint = $notmuch; -*autoflush = $notmuch; -*fcntl = $notmuch; -*ioctl = $notmuch; - -*GETC = \&getc; -*PRINT = \&print; -*PRINTF = \&printf; -*READ = \&read; -*WRITE = \&write; -*SEEK = \&seek; -*TELL = \&getpos; -*EOF = \&eof; -*CLOSE = \&close; -*BINMODE = \&binmode; - - -sub string_ref -{ - my $self = shift; - return *$self->{buf}; -} -*sref = \&string_ref; - -1; - -__END__ - -=head1 NAME - -IO::String - Emulate file interface for in-core strings - -=head1 SYNOPSIS - - use IO::String; - $io = IO::String->new; - $io = IO::String->new($var); - tie *IO, 'IO::String'; - - # read data - <$io>; - $io->getline; - read($io, $buf, 100); - - # write data - print $io "string\n"; - $io->print(@data); - syswrite($io, $buf, 100); - - select $io; - printf "Some text %s\n", $str; - - # seek - $pos = $io->getpos; - $io->setpos(0); # rewind - $io->seek(-30, -1); - seek($io, 0, 0); - -=head1 DESCRIPTION - -The C<IO::String> module provides the C<IO::File> interface for in-core -strings. An C<IO::String> object can be attached to a string, and -makes it possible to use the normal file operations for reading or -writing data, as well as for seeking to various locations of the string. -This is useful when you want to use a library module that only -provides an interface to file handles on data that you have in a string -variable. - -Note that perl-5.8 and better has built-in support for "in memory" -files, which are set up by passing a reference instead of a filename -to the open() call. The reason for using this module is that it -makes the code backwards compatible with older versions of Perl. - -The C<IO::String> module provides an interface compatible with -C<IO::File> as distributed with F<IO-1.20>, but the following methods -are not available: new_from_fd, fdopen, format_write, -format_page_number, format_lines_per_page, format_lines_left, -format_name, format_top_name. - -The following methods are specific to the C<IO::String> class: - -=over 4 - -=item $io = IO::String->new - -=item $io = IO::String->new( $string ) - -The constructor returns a newly-created C<IO::String> object. It -takes an optional argument, which is the string to read from or write -into. If no $string argument is given, then an internal buffer -(initially empty) is allocated. - -The C<IO::String> object returned is tied to itself. This means -that you can use most Perl I/O built-ins on it too: readline, <>, getc, -print, printf, syswrite, sysread, close. - -=item $io->open - -=item $io->open( $string ) - -Attaches an existing IO::String object to some other $string, or -allocates a new internal buffer (if no argument is given). The -position is reset to 0. - -=item $io->string_ref - -Returns a reference to the string that is attached to -the C<IO::String> object. Most useful when you let the C<IO::String> -create an internal buffer to write into. - -=item $io->pad - -=item $io->pad( $char ) - -Specifies the padding to use if -the string is extended by either the seek() or truncate() methods. It -is a single character and defaults to "\0". - -=item $io->pos - -=item $io->pos( $newpos ) - -Yet another interface for reading and setting the current read/write -position within the string (the normal getpos/setpos/tell/seek -methods are also available). The pos() method always returns the -old position, and if you pass it an argument it sets the new -position. - -There is (deliberately) a difference between the setpos() and seek() -methods in that seek() extends the string (with the specified -padding) if you go to a location past the end, whereas setpos() -just snaps back to the end. If truncate() is used to extend the string, -then it works as seek(). - -=back - -=head1 BUGS - -In Perl versions < 5.6, the TIEHANDLE interface was incomplete. -If you use such a Perl, then seek(), tell(), eof(), fileno(), binmode() will -not do anything on an C<IO::String> handle. See L<perltie> for -details. - -=head1 SEE ALSO - -L<IO::File>, L<IO::Stringy>, L<perlfunc/open> - -=head1 COPYRIGHT - -Copyright 1998-2005 Gisle Aas. - -This library is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/List/Util.pm b/Master/tlpkg/tlperl.old/lib/List/Util.pm deleted file mode 100644 index cfe31f70123..00000000000 --- a/Master/tlpkg/tlperl.old/lib/List/Util.pm +++ /dev/null @@ -1,277 +0,0 @@ -# List::Util.pm -# -# Copyright (c) 1997-2005 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; - -use strict; -use vars qw(@ISA @EXPORT_OK $VERSION $XS_VERSION $TESTING_PERL_ONLY); -require Exporter; - -@ISA = qw(Exporter); -@EXPORT_OK = qw(first min max minstr maxstr reduce sum shuffle); -$VERSION = "1.18"; -$XS_VERSION = $VERSION; -$VERSION = eval $VERSION; - -eval { - # PERL_DL_NONLAZY must be false, or any errors in loading will just - # cause the perl code to be tested - local $ENV{PERL_DL_NONLAZY} = 0 if $ENV{PERL_DL_NONLAZY}; - eval { - require XSLoader; - XSLoader::load('List::Util', $XS_VERSION); - 1; - } or do { - require DynaLoader; - local @ISA = qw(DynaLoader); - bootstrap List::Util $XS_VERSION; - }; -} unless $TESTING_PERL_ONLY; - - -# This code is only compiled if the XS did not load -# of for perl < 5.6.0 - -if (!defined &reduce) { -eval <<'ESQ' - -sub reduce (&@) { - my $code = shift; - no strict 'refs'; - - return shift unless @_ > 1; - - use vars qw($a $b); - - my $caller = caller; - local(*{$caller."::a"}) = \my $a; - local(*{$caller."::b"}) = \my $b; - - $a = shift; - foreach (@_) { - $b = $_; - $a = &{$code}(); - } - - $a; -} - -sub first (&@) { - my $code = shift; - - foreach (@_) { - return $_ if &{$code}(); - } - - undef; -} - -ESQ -} - -# This code is only compiled if the XS did not load -eval <<'ESQ' if !defined ∑ - -use vars qw($a $b); - -sub sum (@) { reduce { $a + $b } @_ } - -sub min (@) { reduce { $a < $b ? $a : $b } @_ } - -sub max (@) { reduce { $a > $b ? $a : $b } @_ } - -sub minstr (@) { reduce { $a lt $b ? $a : $b } @_ } - -sub maxstr (@) { reduce { $a gt $b ? $a : $b } @_ } - -sub shuffle (@) { - my @a=\(@_); - my $n; - my $i=@_; - map { - $n = rand($i--); - (${$a[$n]}, $a[$n] = $a[$i])[0]; - } @_; -} - -ESQ - -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. If LIST is empty then -C<undef> is returned. - - $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-2005 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/tlpkg/tlperl.old/lib/Opcode.pm b/Master/tlpkg/tlperl.old/lib/Opcode.pm deleted file mode 100644 index 2987b9952e0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Opcode.pm +++ /dev/null @@ -1,578 +0,0 @@ -package Opcode; - -use 5.006_001; - -use strict; - -our($VERSION, $XS_VERSION, @ISA, @EXPORT_OK); - -$VERSION = "1.06"; -$XS_VERSION = "1.03"; - -use Carp; -use Exporter (); -use XSLoader (); - -BEGIN { - @ISA = qw(Exporter); - @EXPORT_OK = qw( - opset ops_to_opset - opset_to_ops opset_to_hex invert_opset - empty_opset full_opset - opdesc opcodes opmask define_optag - opmask_add verify_opset opdump - ); -} - -sub opset (;@); -sub opset_to_hex ($); -sub opdump (;$); -use subs @EXPORT_OK; - -XSLoader::load 'Opcode', $XS_VERSION; - -_init_optags(); - -sub ops_to_opset { opset @_ } # alias for old name - -sub opset_to_hex ($) { - return "(invalid opset)" unless verify_opset($_[0]); - unpack("h*",$_[0]); -} - -sub opdump (;$) { - my $pat = shift; - # handy utility: perl -MOpcode=opdump -e 'opdump File' - foreach(opset_to_ops(full_opset)) { - my $op = sprintf " %12s %s\n", $_, opdesc($_); - next if defined $pat and $op !~ m/$pat/i; - print $op; - } -} - - - -sub _init_optags { - my(%all, %seen); - @all{opset_to_ops(full_opset)} = (); # keys only - - local($_); - local($/) = "\n=cut"; # skip to optags definition section - <DATA>; - $/ = "\n="; # now read in 'pod section' chunks - while(<DATA>) { - next unless m/^item\s+(:\w+)/; - my $tag = $1; - - # Split into lines, keep only indented lines - my @lines = grep { m/^\s/ } split(/\n/); - foreach (@lines) { s/--.*// } # delete comments - my @ops = map { split ' ' } @lines; # get op words - - foreach(@ops) { - warn "$tag - $_ already tagged in $seen{$_}\n" if $seen{$_}; - $seen{$_} = $tag; - delete $all{$_}; - } - # opset will croak on invalid names - define_optag($tag, opset(@ops)); - } - close(DATA); - warn "Untagged opnames: ".join(' ',keys %all)."\n" if %all; -} - - -1; - -__DATA__ - -=head1 NAME - -Opcode - Disable named opcodes when compiling perl code - -=head1 SYNOPSIS - - use Opcode; - - -=head1 DESCRIPTION - -Perl code is always compiled into an internal format before execution. - -Evaluating perl code (e.g. via "eval" or "do 'file'") causes -the code to be compiled into an internal format and then, -provided there was no error in the compilation, executed. -The internal format is based on many distinct I<opcodes>. - -By default no opmask is in effect and any code can be compiled. - -The Opcode module allow you to define an I<operator mask> to be in -effect when perl I<next> compiles any code. Attempting to compile code -which contains a masked opcode will cause the compilation to fail -with an error. The code will not be executed. - -=head1 NOTE - -The Opcode module is not usually used directly. See the ops pragma and -Safe modules for more typical uses. - -=head1 WARNING - -The authors make B<no warranty>, implied or otherwise, about the -suitability of this software for safety or security purposes. - -The authors shall not in any case be liable for special, incidental, -consequential, indirect or other similar damages arising from the use -of this software. - -Your mileage will vary. If in any doubt B<do not use it>. - - -=head1 Operator Names and Operator Lists - -The canonical list of operator names is the contents of the array -PL_op_name defined and initialised in file F<opcode.h> of the Perl -source distribution (and installed into the perl library). - -Each operator has both a terse name (its opname) and a more verbose or -recognisable descriptive name. The opdesc function can be used to -return a list of descriptions for a list of operators. - -Many of the functions and methods listed below take a list of -operators as parameters. Most operator lists can be made up of several -types of element. Each element can be one of - -=over 8 - -=item an operator name (opname) - -Operator names are typically small lowercase words like enterloop, -leaveloop, last, next, redo etc. Sometimes they are rather cryptic -like gv2cv, i_ncmp and ftsvtx. - -=item an operator tag name (optag) - -Operator tags can be used to refer to groups (or sets) of operators. -Tag names always begin with a colon. The Opcode module defines several -optags and the user can define others using the define_optag function. - -=item a negated opname or optag - -An opname or optag can be prefixed with an exclamation mark, e.g., !mkdir. -Negating an opname or optag means remove the corresponding ops from the -accumulated set of ops at that point. - -=item an operator set (opset) - -An I<opset> as a binary string of approximately 44 bytes which holds a -set or zero or more operators. - -The opset and opset_to_ops functions can be used to convert from -a list of operators to an opset and I<vice versa>. - -Wherever a list of operators can be given you can use one or more opsets. -See also Manipulating Opsets below. - -=back - - -=head1 Opcode Functions - -The Opcode package contains functions for manipulating operator names -tags and sets. All are available for export by the package. - -=over 8 - -=item opcodes - -In a scalar context opcodes returns the number of opcodes in this -version of perl (around 350 for perl-5.7.0). - -In a list context it returns a list of all the operator names. -(Not yet implemented, use @names = opset_to_ops(full_opset).) - -=item opset (OP, ...) - -Returns an opset containing the listed operators. - -=item opset_to_ops (OPSET) - -Returns a list of operator names corresponding to those operators in -the set. - -=item opset_to_hex (OPSET) - -Returns a string representation of an opset. Can be handy for debugging. - -=item full_opset - -Returns an opset which includes all operators. - -=item empty_opset - -Returns an opset which contains no operators. - -=item invert_opset (OPSET) - -Returns an opset which is the inverse set of the one supplied. - -=item verify_opset (OPSET, ...) - -Returns true if the supplied opset looks like a valid opset (is the -right length etc) otherwise it returns false. If an optional second -parameter is true then verify_opset will croak on an invalid opset -instead of returning false. - -Most of the other Opcode functions call verify_opset automatically -and will croak if given an invalid opset. - -=item define_optag (OPTAG, OPSET) - -Define OPTAG as a symbolic name for OPSET. Optag names always start -with a colon C<:>. - -The optag name used must not be defined already (define_optag will -croak if it is already defined). Optag names are global to the perl -process and optag definitions cannot be altered or deleted once -defined. - -It is strongly recommended that applications using Opcode should use a -leading capital letter on their tag names since lowercase names are -reserved for use by the Opcode module. If using Opcode within a module -you should prefix your tags names with the name of your module to -ensure uniqueness and thus avoid clashes with other modules. - -=item opmask_add (OPSET) - -Adds the supplied opset to the current opmask. Note that there is -currently I<no> mechanism for unmasking ops once they have been masked. -This is intentional. - -=item opmask - -Returns an opset corresponding to the current opmask. - -=item opdesc (OP, ...) - -This takes a list of operator names and returns the corresponding list -of operator descriptions. - -=item opdump (PAT) - -Dumps to STDOUT a two column list of op names and op descriptions. -If an optional pattern is given then only lines which match the -(case insensitive) pattern will be output. - -It's designed to be used as a handy command line utility: - - perl -MOpcode=opdump -e opdump - perl -MOpcode=opdump -e 'opdump Eval' - -=back - -=head1 Manipulating Opsets - -Opsets may be manipulated using the perl bit vector operators & (and), | (or), -^ (xor) and ~ (negate/invert). - -However you should never rely on the numerical position of any opcode -within the opset. In other words both sides of a bit vector operator -should be opsets returned from Opcode functions. - -Also, since the number of opcodes in your current version of perl might -not be an exact multiple of eight, there may be unused bits in the last -byte of an upset. This should not cause any problems (Opcode functions -ignore those extra bits) but it does mean that using the ~ operator -will typically not produce the same 'physical' opset 'string' as the -invert_opset function. - - -=head1 TO DO (maybe) - - $bool = opset_eq($opset1, $opset2) true if opsets are logically eqiv - - $yes = opset_can($opset, @ops) true if $opset has all @ops set - - @diff = opset_diff($opset1, $opset2) => ('foo', '!bar', ...) - -=cut - -# the =cut above is used by _init_optags() to get here quickly - -=head1 Predefined Opcode Tags - -=over 5 - -=item :base_core - - null stub scalar pushmark wantarray const defined undef - - rv2sv sassign - - rv2av aassign aelem aelemfast aslice av2arylen - - rv2hv helem hslice each values keys exists delete - - preinc i_preinc predec i_predec postinc i_postinc postdec i_postdec - int hex oct abs pow multiply i_multiply divide i_divide - modulo i_modulo add i_add subtract i_subtract - - left_shift right_shift bit_and bit_xor bit_or negate i_negate - not complement - - lt i_lt gt i_gt le i_le ge i_ge eq i_eq ne i_ne ncmp i_ncmp - slt sgt sle sge seq sne scmp - - substr vec stringify study pos length index rindex ord chr - - ucfirst lcfirst uc lc quotemeta trans chop schop chomp schomp - - match split qr - - list lslice splice push pop shift unshift reverse - - cond_expr flip flop andassign orassign and or xor - - warn die lineseq nextstate scope enter leave setstate - - rv2cv anoncode prototype - - entersub leavesub leavesublv return method method_named -- XXX loops via recursion? - - leaveeval -- needed for Safe to operate, is safe without entereval - -=item :base_mem - -These memory related ops are not included in :base_core because they -can easily be used to implement a resource attack (e.g., consume all -available memory). - - concat repeat join range - - anonlist anonhash - -Note that despite the existence of this optag a memory resource attack -may still be possible using only :base_core ops. - -Disabling these ops is a I<very> heavy handed way to attempt to prevent -a memory resource attack. It's probable that a specific memory limit -mechanism will be added to perl in the near future. - -=item :base_loop - -These loop ops are not included in :base_core because they can easily be -used to implement a resource attack (e.g., consume all available CPU time). - - grepstart grepwhile - mapstart mapwhile - enteriter iter - enterloop leaveloop unstack - last next redo - goto - -=item :base_io - -These ops enable I<filehandle> (rather than filename) based input and -output. These are safe on the assumption that only pre-existing -filehandles are available for use. To create new filehandles other ops -such as open would need to be enabled. - - readline rcatline getc read - - formline enterwrite leavewrite - - print sysread syswrite send recv - - eof tell seek sysseek - - readdir telldir seekdir rewinddir - -=item :base_orig - -These are a hotchpotch of opcodes still waiting to be considered - - gvsv gv gelem - - padsv padav padhv padany - - rv2gv refgen srefgen ref - - bless -- could be used to change ownership of objects (reblessing) - - pushre regcmaybe regcreset regcomp subst substcont - - sprintf prtf -- can core dump - - crypt - - tie untie - - dbmopen dbmclose - sselect select - pipe_op sockpair - - getppid getpgrp setpgrp getpriority setpriority localtime gmtime - - entertry leavetry -- can be used to 'hide' fatal errors - - custom -- where should this go - -=item :base_math - -These ops are not included in :base_core because of the risk of them being -used to generate floating point exceptions (which would have to be caught -using a $SIG{FPE} handler). - - atan2 sin cos exp log sqrt - -These ops are not included in :base_core because they have an effect -beyond the scope of the compartment. - - rand srand - -=item :base_thread - -These ops are related to multi-threading. - - lock threadsv - -=item :default - -A handy tag name for a I<reasonable> default set of ops. (The current ops -allowed are unstable while development continues. It will change.) - - :base_core :base_mem :base_loop :base_io :base_orig :base_thread - -If safety matters to you (and why else would you be using the Opcode module?) -then you should not rely on the definition of this, or indeed any other, optag! - - -=item :filesys_read - - stat lstat readlink - - ftatime ftblk ftchr ftctime ftdir fteexec fteowned fteread - ftewrite ftfile ftis ftlink ftmtime ftpipe ftrexec ftrowned - ftrread ftsgid ftsize ftsock ftsuid fttty ftzero ftrwrite ftsvtx - - fttext ftbinary - - fileno - -=item :sys_db - - ghbyname ghbyaddr ghostent shostent ehostent -- hosts - gnbyname gnbyaddr gnetent snetent enetent -- networks - gpbyname gpbynumber gprotoent sprotoent eprotoent -- protocols - gsbyname gsbyport gservent sservent eservent -- services - - gpwnam gpwuid gpwent spwent epwent getlogin -- users - ggrnam ggrgid ggrent sgrent egrent -- groups - -=item :browse - -A handy tag name for a I<reasonable> default set of ops beyond the -:default optag. Like :default (and indeed all the other optags) its -current definition is unstable while development continues. It will change. - -The :browse tag represents the next step beyond :default. It it a -superset of the :default ops and adds :filesys_read the :sys_db. -The intent being that scripts can access more (possibly sensitive) -information about your system but not be able to change it. - - :default :filesys_read :sys_db - -=item :filesys_open - - sysopen open close - umask binmode - - open_dir closedir -- other dir ops are in :base_io - -=item :filesys_write - - link unlink rename symlink truncate - - mkdir rmdir - - utime chmod chown - - fcntl -- not strictly filesys related, but possibly as dangerous? - -=item :subprocess - - backtick system - - fork - - wait waitpid - - glob -- access to Cshell via <`rm *`> - -=item :ownprocess - - exec exit kill - - time tms -- could be used for timing attacks (paranoid?) - -=item :others - -This tag holds groups of assorted specialist opcodes that don't warrant -having optags defined for them. - -SystemV Interprocess Communications: - - msgctl msgget msgrcv msgsnd - - semctl semget semop - - shmctl shmget shmread shmwrite - -=item :still_to_be_decided - - chdir - flock ioctl - - socket getpeername ssockopt - bind connect listen accept shutdown gsockopt getsockname - - sleep alarm -- changes global timer state and signal handling - sort -- assorted problems including core dumps - tied -- can be used to access object implementing a tie - pack unpack -- can be used to create/use memory pointers - - entereval -- can be used to hide code from initial compile - require dofile - - caller -- get info about calling environment and args - - reset - - dbstate -- perl -d version of nextstate(ment) opcode - -=item :dangerous - -This tag is simply a bucket for opcodes that are unlikely to be used via -a tag name but need to be tagged for completeness and documentation. - - syscall dump chroot - - -=back - -=head1 SEE ALSO - -ops(3) -- perl pragma interface to Opcode module. - -Safe(3) -- Opcode and namespace limited execution compartments - -=head1 AUTHORS - -Originally designed and implemented by Malcolm Beattie, -mbeattie@sable.ox.ac.uk as part of Safe version 1. - -Split out from Safe module version 1, named opcode tags and other -changes added by Tim Bunce. - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/POSIX.pm b/Master/tlpkg/tlperl.old/lib/POSIX.pm deleted file mode 100644 index 87676215e73..00000000000 --- a/Master/tlpkg/tlperl.old/lib/POSIX.pm +++ /dev/null @@ -1,965 +0,0 @@ -package POSIX; - -our(@ISA, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD) = (); - -our $VERSION = "1.09"; - -use AutoLoader; - -use XSLoader (); - -# 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; -} - -package POSIX::SigAction; - -use AutoLoader 'AUTOLOAD'; -sub new { bless {HANDLER => $_[1], MASK => $_[2], FLAGS => $_[3] || 0, SAFE => 0}, $_[0] } - -package POSIX; - -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 fsync { - redef "IO::Handle::sync()"; -} - -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, use /, % and int instead"; -} - -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(uid, gid, filename)" 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 fsync 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 - lchown - 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; -} - -package POSIX::SigAction; - -sub handler { $_[0]->{HANDLER} = $_[1] if @_ > 1; $_[0]->{HANDLER} }; -sub mask { $_[0]->{MASK} = $_[1] if @_ > 1; $_[0]->{MASK} }; -sub flags { $_[0]->{FLAGS} = $_[1] if @_ > 1; $_[0]->{FLAGS} }; -sub safe { $_[0]->{SAFE} = $_[1] if @_ > 1; $_[0]->{SAFE} }; diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Checker.pm b/Master/tlpkg/tlperl.old/lib/Pod/Checker.pm deleted file mode 100644 index 49162da4a27..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Checker.pm +++ /dev/null @@ -1,1270 +0,0 @@ -############################################################################# -# Pod/Checker.pm -- check pod documents for syntax errors -# -# Copyright (C) 1994-2000 by Bradford Appleton. All rights reserved. -# This file is part of "PodParser". PodParser is free software; -# you can redistribute it and/or modify it under the same terms -# as Perl itself. -############################################################################# - -package Pod::Checker; - -use vars qw($VERSION); -$VERSION = 1.43; ## Current version of this package -require 5.005; ## requires this Perl version or later - -use Pod::ParseUtils; ## for hyperlinks and lists - -=head1 NAME - -Pod::Checker, podchecker() - check pod documents for syntax errors - -=head1 SYNOPSIS - - use Pod::Checker; - - $syntax_okay = podchecker($filepath, $outputpath, %options); - - my $checker = new Pod::Checker %options; - $checker->parse_from_file($filepath, \*STDERR); - -=head1 OPTIONS/ARGUMENTS - -C<$filepath> is the input POD to read and C<$outputpath> is -where to write POD syntax error messages. Either argument may be a scalar -indicating a file-path, or else a reference to an open filehandle. -If unspecified, the input-file it defaults to C<\*STDIN>, and -the output-file defaults to C<\*STDERR>. - -=head2 podchecker() - -This function can take a hash of options: - -=over 4 - -=item B<-warnings> =E<gt> I<val> - -Turn warnings on/off. I<val> is usually 1 for on, but higher values -trigger additional warnings. See L<"Warnings">. - -=back - -=head1 DESCRIPTION - -B<podchecker> will perform syntax checking of Perl5 POD format documentation. - -Curious/ambitious users are welcome to propose additional features they wish -to see in B<Pod::Checker> and B<podchecker> and verify that the checks are -consistent with L<perlpod>. - -The following checks are currently performed: - -=over 4 - -=item * - -Unknown '=xxxx' commands, unknown 'XE<lt>...E<gt>' interior-sequences, -and unterminated interior sequences. - -=item * - -Check for proper balancing of C<=begin> and C<=end>. The contents of such -a block are generally ignored, i.e. no syntax checks are performed. - -=item * - -Check for proper nesting and balancing of C<=over>, C<=item> and C<=back>. - -=item * - -Check for same nested interior-sequences (e.g. -C<LE<lt>...LE<lt>...E<gt>...E<gt>>). - -=item * - -Check for malformed or nonexisting entities C<EE<lt>...E<gt>>. - -=item * - -Check for correct syntax of hyperlinks C<LE<lt>...E<gt>>. See L<perlpod> -for details. - -=item * - -Check for unresolved document-internal links. This check may also reveal -misspelled links that seem to be internal links but should be links -to something else. - -=back - -=head1 DIAGNOSTICS - -=head2 Errors - -=over 4 - -=item * empty =headn - -A heading (C<=head1> or C<=head2>) without any text? That ain't no -heading! - -=item * =over on line I<N> without closing =back - -The C<=over> command does not have a corresponding C<=back> before the -next heading (C<=head1> or C<=head2>) or the end of the file. - -=item * =item without previous =over - -=item * =back without previous =over - -An C<=item> or C<=back> command has been found outside a -C<=over>/C<=back> block. - -=item * No argument for =begin - -A C<=begin> command was found that is not followed by the formatter -specification. - -=item * =end without =begin - -A standalone C<=end> command was found. - -=item * Nested =begin's - -There were at least two consecutive C<=begin> commands without -the corresponding C<=end>. Only one C<=begin> may be active at -a time. - -=item * =for without formatter specification - -There is no specification of the formatter after the C<=for> command. - -=item * unresolved internal link I<NAME> - -The given link to I<NAME> does not have a matching node in the current -POD. This also happend when a single word node name is not enclosed in -C<"">. - -=item * Unknown command "I<CMD>" - -An invalid POD command has been found. Valid are C<=head1>, C<=head2>, -C<=head3>, C<=head4>, C<=over>, C<=item>, C<=back>, C<=begin>, C<=end>, -C<=for>, C<=pod>, C<=cut> - -=item * Unknown interior-sequence "I<SEQ>" - -An invalid markup command has been encountered. Valid are: -C<BE<lt>E<gt>>, C<CE<lt>E<gt>>, C<EE<lt>E<gt>>, C<FE<lt>E<gt>>, -C<IE<lt>E<gt>>, C<LE<lt>E<gt>>, C<SE<lt>E<gt>>, C<XE<lt>E<gt>>, -C<ZE<lt>E<gt>> - -=item * nested commands I<CMD>E<lt>...I<CMD>E<lt>...E<gt>...E<gt> - -Two nested identical markup commands have been found. Generally this -does not make sense. - -=item * garbled entity I<STRING> - -The I<STRING> found cannot be interpreted as a character entity. - -=item * Entity number out of range - -An entity specified by number (dec, hex, oct) is out of range (1-255). - -=item * malformed link LE<lt>E<gt> - -The link found cannot be parsed because it does not conform to the -syntax described in L<perlpod>. - -=item * nonempty ZE<lt>E<gt> - -The C<ZE<lt>E<gt>> sequence is supposed to be empty. - -=item * empty XE<lt>E<gt> - -The index entry specified contains nothing but whitespace. - -=item * Spurious text after =pod / =cut - -The commands C<=pod> and C<=cut> do not take any arguments. - -=item * Spurious character(s) after =back - -The C<=back> command does not take any arguments. - -=back - -=head2 Warnings - -These may not necessarily cause trouble, but indicate mediocre style. - -=over 4 - -=item * multiple occurrence of link target I<name> - -The POD file has some C<=item> and/or C<=head> commands that have -the same text. Potential hyperlinks to such a text cannot be unique then. -This warning is printed only with warning level greater than one. - -=item * line containing nothing but whitespace in paragraph - -There is some whitespace on a seemingly empty line. POD is very sensitive -to such things, so this is flagged. B<vi> users switch on the B<list> -option to avoid this problem. - -=begin _disabled_ - -=item * file does not start with =head - -The file starts with a different POD directive than head. -This is most probably something you do not want. - -=end _disabled_ - -=item * previous =item has no contents - -There is a list C<=item> right above the flagged line that has no -text contents. You probably want to delete empty items. - -=item * preceding non-item paragraph(s) - -A list introduced by C<=over> starts with a text or verbatim paragraph, -but continues with C<=item>s. Move the non-item paragraph out of the -C<=over>/C<=back> block. - -=item * =item type mismatch (I<one> vs. I<two>) - -A list started with e.g. a bulletted C<=item> and continued with a -numbered one. This is obviously inconsistent. For most translators the -type of the I<first> C<=item> determines the type of the list. - -=item * I<N> unescaped C<E<lt>E<gt>> in paragraph - -Angle brackets not written as C<E<lt>ltE<gt>> and C<E<lt>gtE<gt>> -can potentially cause errors as they could be misinterpreted as -markup commands. This is only printed when the -warnings level is -greater than 1. - -=item * Unknown entity - -A character entity was found that does not belong to the standard -ISO set or the POD specials C<verbar> and C<sol>. - -=item * No items in =over - -The list opened with C<=over> does not contain any items. - -=item * No argument for =item - -C<=item> without any parameters is deprecated. It should either be followed -by C<*> to indicate an unordered list, by a number (optionally followed -by a dot) to indicate an ordered (numbered) list or simple text for a -definition list. - -=item * empty section in previous paragraph - -The previous section (introduced by a C<=head> command) does not contain -any text. This usually indicates that something is missing. Note: A -C<=head1> followed immediately by C<=head2> does not trigger this warning. - -=item * Verbatim paragraph in NAME section - -The NAME section (C<=head1 NAME>) should consist of a single paragraph -with the script/module name, followed by a dash `-' and a very short -description of what the thing is good for. - -=item * =headI<n> without preceding higher level - -For example if there is a C<=head2> in the POD file prior to a -C<=head1>. - -=back - -=head2 Hyperlinks - -There are some warnings wrt. malformed hyperlinks. - -=over 4 - -=item * ignoring leading/trailing whitespace in link - -There is whitespace at the beginning or the end of the contents of -LE<lt>...E<gt>. - -=item * (section) in '$page' deprecated - -There is a section detected in the page name of LE<lt>...E<gt>, e.g. -C<LE<lt>passwd(2)E<gt>>. POD hyperlinks may point to POD documents only. -Please write C<CE<lt>passwd(2)E<gt>> instead. Some formatters are able -to expand this to appropriate code. For links to (builtin) functions, -please say C<LE<lt>perlfunc/mkdirE<gt>>, without (). - -=item * alternative text/node '%s' contains non-escaped | or / - -The characters C<|> and C</> are special in the LE<lt>...E<gt> context. -Although the hyperlink parser does its best to determine which "/" is -text and which is a delimiter in case of doubt, one ought to escape -these literal characters like this: - - / E<sol> - | E<verbar> - -=back - -=head1 RETURN VALUE - -B<podchecker> returns the number of POD syntax errors found or -1 if -there were no POD commands at all found in the file. - -=head1 EXAMPLES - -See L</SYNOPSIS> - -=head1 INTERFACE - -While checking, this module collects document properties, e.g. the nodes -for hyperlinks (C<=headX>, C<=item>) and index entries (C<XE<lt>E<gt>>). -POD translators can use this feature to syntax-check and get the nodes in -a first pass before actually starting to convert. This is expensive in terms -of execution time, but allows for very robust conversions. - -Since PodParser-1.24 the B<Pod::Checker> module uses only the B<poderror> -method to print errors and warnings. The summary output (e.g. -"Pod syntax OK") has been dropped from the module and has been included in -B<podchecker> (the script). This allows users of B<Pod::Checker> to -control completely the output behaviour. Users of B<podchecker> (the script) -get the well-known behaviour. - -=cut - -############################################################################# - -use strict; -#use diagnostics; -use Carp; -use Exporter; -use Pod::Parser; - -use vars qw(@ISA @EXPORT); -@ISA = qw(Pod::Parser); -@EXPORT = qw(&podchecker); - -use vars qw(%VALID_COMMANDS %VALID_SEQUENCES); - -my %VALID_COMMANDS = ( - 'pod' => 1, - 'cut' => 1, - 'head1' => 1, - 'head2' => 1, - 'head3' => 1, - 'head4' => 1, - 'over' => 1, - 'back' => 1, - 'item' => 1, - 'for' => 1, - 'begin' => 1, - 'end' => 1, -); - -my %VALID_SEQUENCES = ( - 'I' => 1, - 'B' => 1, - 'S' => 1, - 'C' => 1, - 'L' => 1, - 'F' => 1, - 'X' => 1, - 'Z' => 1, - 'E' => 1, -); - -# stolen from HTML::Entities -my %ENTITIES = ( - # Some normal chars that have special meaning in SGML context - amp => '&', # ampersand -'gt' => '>', # greater than -'lt' => '<', # less than - quot => '"', # double quote - - # PUBLIC ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML - AElig => 'Æ', # capital AE diphthong (ligature) - Aacute => 'Á', # capital A, acute accent - Acirc => 'Â', # capital A, circumflex accent - Agrave => 'À', # capital A, grave accent - Aring => 'Å', # capital A, ring - Atilde => 'Ã', # capital A, tilde - Auml => 'Ä', # capital A, dieresis or umlaut mark - Ccedil => 'Ç', # capital C, cedilla - ETH => 'Ð', # capital Eth, Icelandic - Eacute => 'É', # capital E, acute accent - Ecirc => 'Ê', # capital E, circumflex accent - Egrave => 'È', # capital E, grave accent - Euml => 'Ë', # capital E, dieresis or umlaut mark - Iacute => 'Í', # capital I, acute accent - Icirc => 'Î', # capital I, circumflex accent - Igrave => 'Ì', # capital I, grave accent - Iuml => 'Ï', # capital I, dieresis or umlaut mark - Ntilde => 'Ñ', # capital N, tilde - Oacute => 'Ó', # capital O, acute accent - Ocirc => 'Ô', # capital O, circumflex accent - Ograve => 'Ò', # capital O, grave accent - Oslash => 'Ø', # capital O, slash - Otilde => 'Õ', # capital O, tilde - Ouml => 'Ö', # capital O, dieresis or umlaut mark - THORN => 'Þ', # capital THORN, Icelandic - Uacute => 'Ú', # capital U, acute accent - Ucirc => 'Û', # capital U, circumflex accent - Ugrave => 'Ù', # capital U, grave accent - Uuml => 'Ü', # capital U, dieresis or umlaut mark - Yacute => 'Ý', # capital Y, acute accent - aacute => 'á', # small a, acute accent - acirc => 'â', # small a, circumflex accent - aelig => 'æ', # small ae diphthong (ligature) - agrave => 'à', # small a, grave accent - aring => 'å', # small a, ring - atilde => 'ã', # small a, tilde - auml => 'ä', # small a, dieresis or umlaut mark - ccedil => 'ç', # small c, cedilla - eacute => 'é', # small e, acute accent - ecirc => 'ê', # small e, circumflex accent - egrave => 'è', # small e, grave accent - eth => 'ð', # small eth, Icelandic - euml => 'ë', # small e, dieresis or umlaut mark - iacute => 'í', # small i, acute accent - icirc => 'î', # small i, circumflex accent - igrave => 'ì', # small i, grave accent - iuml => 'ï', # small i, dieresis or umlaut mark - ntilde => 'ñ', # small n, tilde - oacute => 'ó', # small o, acute accent - ocirc => 'ô', # small o, circumflex accent - ograve => 'ò', # small o, grave accent - oslash => 'ø', # small o, slash - otilde => 'õ', # small o, tilde - ouml => 'ö', # small o, dieresis or umlaut mark - szlig => 'ß', # small sharp s, German (sz ligature) - thorn => 'þ', # small thorn, Icelandic - uacute => 'ú', # small u, acute accent - ucirc => 'û', # small u, circumflex accent - ugrave => 'ù', # small u, grave accent - uuml => 'ü', # small u, dieresis or umlaut mark - yacute => 'ý', # small y, acute accent - yuml => 'ÿ', # small y, dieresis or umlaut mark - - # Some extra Latin 1 chars that are listed in the HTML3.2 draft (21-May-96) - copy => '©', # copyright sign - reg => '®', # registered sign - nbsp => "\240", # non breaking space - - # Additional ISO-8859/1 entities listed in rfc1866 (section 14) - iexcl => '¡', - cent => '¢', - pound => '£', - curren => '¤', - yen => '¥', - brvbar => '¦', - sect => '§', - uml => '¨', - ordf => 'ª', - laquo => '«', -'not' => '¬', # not is a keyword in perl - shy => '', - macr => '¯', - deg => '°', - plusmn => '±', - sup1 => '¹', - sup2 => '²', - sup3 => '³', - acute => '´', - micro => 'µ', - para => '¶', - middot => '·', - cedil => '¸', - ordm => 'º', - raquo => '»', - frac14 => '¼', - frac12 => '½', - frac34 => '¾', - iquest => '¿', -'times' => '×', # times is a keyword in perl - divide => '÷', - -# some POD special entities - verbar => '|', - sol => '/' -); - -##--------------------------------------------------------------------------- - -##--------------------------------- -## Function definitions begin here -##--------------------------------- - -sub podchecker( $ ; $ % ) { - my ($infile, $outfile, %options) = @_; - local $_; - - ## Set defaults - $infile ||= \*STDIN; - $outfile ||= \*STDERR; - - ## Now create a pod checker - my $checker = new Pod::Checker(%options); - - ## Now check the pod document for errors - $checker->parse_from_file($infile, $outfile); - - ## Return the number of errors found - return $checker->num_errors(); -} - -##--------------------------------------------------------------------------- - -##------------------------------- -## Method definitions begin here -##------------------------------- - -################################## - -=over 4 - -=item C<Pod::Checker-E<gt>new( %options )> - -Return a reference to a new Pod::Checker object that inherits from -Pod::Parser and is used for calling the required methods later. The -following options are recognized: - -C<-warnings =E<gt> num> - Print warnings if C<num> is true. The higher the value of C<num>, -the more warnings are printed. Currently there are only levels 1 and 2. - -C<-quiet =E<gt> num> - If C<num> is true, do not print any errors/warnings. This is useful -when Pod::Checker is used to munge POD code into plain text from within -POD formatters. - -=cut - -## sub new { -## my $this = shift; -## my $class = ref($this) || $this; -## my %params = @_; -## my $self = {%params}; -## bless $self, $class; -## $self->initialize(); -## return $self; -## } - -sub initialize { - my $self = shift; - ## Initialize number of errors, and setup an error function to - ## increment this number and then print to the designated output. - $self->{_NUM_ERRORS} = 0; - $self->{_NUM_WARNINGS} = 0; - $self->{-quiet} ||= 0; - # set the error handling subroutine - $self->errorsub($self->{-quiet} ? sub { 1; } : 'poderror'); - $self->{_commands} = 0; # total number of POD commands encountered - $self->{_list_stack} = []; # stack for nested lists - $self->{_have_begin} = ''; # stores =begin - $self->{_links} = []; # stack for internal hyperlinks - $self->{_nodes} = []; # stack for =head/=item nodes - $self->{_index} = []; # text in X<> - # print warnings? - $self->{-warnings} = 1 unless(defined $self->{-warnings}); - $self->{_current_head1} = ''; # the current =head1 block - $self->parseopts(-process_cut_cmd => 1, -warnings => $self->{-warnings}); -} - -################################## - -=item C<$checker-E<gt>poderror( @args )> - -=item C<$checker-E<gt>poderror( {%opts}, @args )> - -Internal method for printing errors and warnings. If no options are -given, simply prints "@_". The following options are recognized and used -to form the output: - - -msg - -A message to print prior to C<@args>. - - -line - -The line number the error occurred in. - - -file - -The file (name) the error occurred in. - - -severity - -The error level, should be 'WARNING' or 'ERROR'. - -=cut - -# Invoked as $self->poderror( @args ), or $self->poderror( {%opts}, @args ) -sub poderror { - my $self = shift; - my %opts = (ref $_[0]) ? %{shift()} : (); - - ## Retrieve options - chomp( my $msg = ($opts{-msg} || "")."@_" ); - my $line = (exists $opts{-line}) ? " at line $opts{-line}" : ""; - my $file = (exists $opts{-file}) ? " in file $opts{-file}" : ""; - unless (exists $opts{-severity}) { - ## See if can find severity in message prefix - $opts{-severity} = $1 if ( $msg =~ s/^\**\s*([A-Z]{3,}):\s+// ); - } - my $severity = (exists $opts{-severity}) ? "*** $opts{-severity}: " : ""; - - ## Increment error count and print message " - ++($self->{_NUM_ERRORS}) - if(!%opts || ($opts{-severity} && $opts{-severity} eq 'ERROR')); - ++($self->{_NUM_WARNINGS}) - if(!%opts || ($opts{-severity} && $opts{-severity} eq 'WARNING')); - unless($self->{-quiet}) { - my $out_fh = $self->output_handle() || \*STDERR; - print $out_fh ($severity, $msg, $line, $file, "\n") - if($self->{-warnings} || !%opts || $opts{-severity} ne 'WARNING'); - } -} - -################################## - -=item C<$checker-E<gt>num_errors()> - -Set (if argument specified) and retrieve the number of errors found. - -=cut - -sub num_errors { - return (@_ > 1) ? ($_[0]->{_NUM_ERRORS} = $_[1]) : $_[0]->{_NUM_ERRORS}; -} - -################################## - -=item C<$checker-E<gt>num_warnings()> - -Set (if argument specified) and retrieve the number of warnings found. - -=cut - -sub num_warnings { - return (@_ > 1) ? ($_[0]->{_NUM_WARNINGS} = $_[1]) : $_[0]->{_NUM_WARNINGS}; -} - -################################## - -=item C<$checker-E<gt>name()> - -Set (if argument specified) and retrieve the canonical name of POD as -found in the C<=head1 NAME> section. - -=cut - -sub name { - return (@_ > 1 && $_[1]) ? - ($_[0]->{-name} = $_[1]) : $_[0]->{-name}; -} - -################################## - -=item C<$checker-E<gt>node()> - -Add (if argument specified) and retrieve the nodes (as defined by C<=headX> -and C<=item>) of the current POD. The nodes are returned in the order of -their occurrence. They consist of plain text, each piece of whitespace is -collapsed to a single blank. - -=cut - -sub node { - my ($self,$text) = @_; - if(defined $text) { - $text =~ s/\s+$//s; # strip trailing whitespace - $text =~ s/\s+/ /gs; # collapse whitespace - # add node, order important! - push(@{$self->{_nodes}}, $text); - # keep also a uniqueness counter - $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s); - return $text; - } - @{$self->{_nodes}}; -} - -################################## - -=item C<$checker-E<gt>idx()> - -Add (if argument specified) and retrieve the index entries (as defined by -C<XE<lt>E<gt>>) of the current POD. They consist of plain text, each piece -of whitespace is collapsed to a single blank. - -=cut - -# set/return index entries of current POD -sub idx { - my ($self,$text) = @_; - if(defined $text) { - $text =~ s/\s+$//s; # strip trailing whitespace - $text =~ s/\s+/ /gs; # collapse whitespace - # add node, order important! - push(@{$self->{_index}}, $text); - # keep also a uniqueness counter - $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s); - return $text; - } - @{$self->{_index}}; -} - -################################## - -=item C<$checker-E<gt>hyperlink()> - -Add (if argument specified) and retrieve the hyperlinks (as defined by -C<LE<lt>E<gt>>) of the current POD. They consist of a 2-item array: line -number and C<Pod::Hyperlink> object. - -=back - -=cut - -# set/return hyperlinks of the current POD -sub hyperlink { - my $self = shift; - if($_[0]) { - push(@{$self->{_links}}, $_[0]); - return $_[0]; - } - @{$self->{_links}}; -} - -## overrides for Pod::Parser - -sub end_pod { - ## Do some final checks and - ## print the number of errors found - my $self = shift; - my $infile = $self->input_file(); - - if(@{$self->{_list_stack}}) { - my $list; - while(($list = $self->_close_list('EOF',$infile)) && - $list->indent() ne 'auto') { - $self->poderror({ -line => 'EOF', -file => $infile, - -severity => 'ERROR', -msg => "=over on line " . - $list->start() . " without closing =back" }); #" - } - } - - # check validity of document internal hyperlinks - # first build the node names from the paragraph text - my %nodes; - foreach($self->node()) { - $nodes{$_} = 1; - if(/^(\S+)\s+\S/) { - # we have more than one word. Use the first as a node, too. - # This is used heavily in perlfunc.pod - $nodes{$1} ||= 2; # derived node - } - } - foreach($self->idx()) { - $nodes{$_} = 3; # index node - } - foreach($self->hyperlink()) { - my ($line,$link) = @$_; - # _TODO_ what if there is a link to the page itself by the name, - # e.g. in Tk::Pod : L<Tk::Pod/"DESCRIPTION"> - if($link->node() && !$link->page() && $link->type() ne 'hyperlink') { - my $node = $self->_check_ptree($self->parse_text($link->node(), - $line), $line, $infile, 'L'); - if($node && !$nodes{$node}) { - $self->poderror({ -line => $line || '', -file => $infile, - -severity => 'ERROR', - -msg => "unresolved internal link '$node'"}); - } - } - } - - # check the internal nodes for uniqueness. This pertains to - # =headX, =item and X<...> - if($self->{-warnings} && $self->{-warnings}>1) { - foreach(grep($self->{_unique_nodes}->{$_} > 1, - keys %{$self->{_unique_nodes}})) { - $self->poderror({ -line => '-', -file => $infile, - -severity => 'WARNING', - -msg => "multiple occurrence of link target '$_'"}); - } - } - - # no POD found here - $self->num_errors(-1) if($self->{_commands} == 0); -} - -# check a POD command directive -sub command { - my ($self, $cmd, $paragraph, $line_num, $pod_para) = @_; - my ($file, $line) = $pod_para->file_line; - ## Check the command syntax - my $arg; # this will hold the command argument - if (! $VALID_COMMANDS{$cmd}) { - $self->poderror({ -line => $line, -file => $file, -severity => 'ERROR', - -msg => "Unknown command '$cmd'" }); - } - else { # found a valid command - $self->{_commands}++; # delete this line if below is enabled again - - ##### following check disabled due to strong request - #if(!$self->{_commands}++ && $cmd !~ /^head/) { - # $self->poderror({ -line => $line, -file => $file, - # -severity => 'WARNING', - # -msg => "file does not start with =head" }); - #} - - # check syntax of particular command - if($cmd eq 'over') { - # check for argument - $arg = $self->interpolate_and_check($paragraph, $line,$file); - my $indent = 4; # default - if($arg && $arg =~ /^\s*(\d+)\s*$/) { - $indent = $1; - } - # start a new list - $self->_open_list($indent,$line,$file); - } - elsif($cmd eq 'item') { - # are we in a list? - unless(@{$self->{_list_stack}}) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "=item without previous =over" }); - # auto-open in case we encounter many more - $self->_open_list('auto',$line,$file); - } - my $list = $self->{_list_stack}->[0]; - # check whether the previous item had some contents - if(defined $self->{_list_item_contents} && - $self->{_list_item_contents} == 0) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'WARNING', - -msg => "previous =item has no contents" }); - } - if($list->{_has_par}) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'WARNING', - -msg => "preceding non-item paragraph(s)" }); - delete $list->{_has_par}; - } - # check for argument - $arg = $self->interpolate_and_check($paragraph, $line, $file); - if($arg && $arg =~ /(\S+)/) { - $arg =~ s/[\s\n]+$//; - my $type; - if($arg =~ /^[*]\s*(\S*.*)/) { - $type = 'bullet'; - $self->{_list_item_contents} = $1 ? 1 : 0; - $arg = $1; - } - elsif($arg =~ /^\d+\.?\s*(\S*)/) { - $type = 'number'; - $self->{_list_item_contents} = $1 ? 1 : 0; - $arg = $1; - } - else { - $type = 'definition'; - $self->{_list_item_contents} = 1; - } - my $first = $list->type(); - if($first && $first ne $type) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'WARNING', - -msg => "=item type mismatch ('$first' vs. '$type')"}); - } - else { # first item - $list->type($type); - } - } - else { - $self->poderror({ -line => $line, -file => $file, - -severity => 'WARNING', - -msg => "No argument for =item" }); - $arg = ' '; # empty - $self->{_list_item_contents} = 0; - } - # add this item - $list->item($arg); - # remember this node - $self->node($arg); - } - elsif($cmd eq 'back') { - # check if we have an open list - unless(@{$self->{_list_stack}}) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "=back without previous =over" }); - } - else { - # check for spurious characters - $arg = $self->interpolate_and_check($paragraph, $line,$file); - if($arg && $arg =~ /\S/) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "Spurious character(s) after =back" }); - } - # close list - my $list = $self->_close_list($line,$file); - # check for empty lists - if(!$list->item() && $self->{-warnings}) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'WARNING', - -msg => "No items in =over (at line " . - $list->start() . ") / =back list"}); #" - } - } - } - elsif($cmd =~ /^head(\d+)/) { - my $hnum = $1; - $self->{"_have_head_$hnum"}++; # count head types - if($hnum > 1 && !$self->{"_have_head_".($hnum -1)}) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'WARNING', - -msg => "=head$hnum without preceding higher level"}); - } - # check whether the previous =head section had some contents - if(defined $self->{_commands_in_head} && - $self->{_commands_in_head} == 0 && - defined $self->{_last_head} && - $self->{_last_head} >= $hnum) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'WARNING', - -msg => "empty section in previous paragraph"}); - } - $self->{_commands_in_head} = -1; - $self->{_last_head} = $hnum; - # check if there is an open list - if(@{$self->{_list_stack}}) { - my $list; - while(($list = $self->_close_list($line,$file)) && - $list->indent() ne 'auto') { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "=over on line ". $list->start() . - " without closing =back (at $cmd)" }); - } - } - # remember this node - $arg = $self->interpolate_and_check($paragraph, $line,$file); - $arg =~ s/[\s\n]+$//s; - $self->node($arg); - unless(length($arg)) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "empty =$cmd"}); - } - if($cmd eq 'head1') { - $self->{_current_head1} = $arg; - } else { - $self->{_current_head1} = ''; - } - } - elsif($cmd eq 'begin') { - if($self->{_have_begin}) { - # already have a begin - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "Nested =begin's (first at line " . - $self->{_have_begin} . ")"}); - } - else { - # check for argument - $arg = $self->interpolate_and_check($paragraph, $line,$file); - unless($arg && $arg =~ /(\S+)/) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "No argument for =begin"}); - } - # remember the =begin - $self->{_have_begin} = "$line:$1"; - } - } - elsif($cmd eq 'end') { - if($self->{_have_begin}) { - # close the existing =begin - $self->{_have_begin} = ''; - # check for spurious characters - $arg = $self->interpolate_and_check($paragraph, $line,$file); - # the closing argument is optional - #if($arg && $arg =~ /\S/) { - # $self->poderror({ -line => $line, -file => $file, - # -severity => 'WARNING', - # -msg => "Spurious character(s) after =end" }); - #} - } - else { - # don't have a matching =begin - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "=end without =begin" }); - } - } - elsif($cmd eq 'for') { - unless($paragraph =~ /\s*(\S+)\s*/) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "=for without formatter specification" }); - } - $arg = ''; # do not expand paragraph below - } - elsif($cmd =~ /^(pod|cut)$/) { - # check for argument - $arg = $self->interpolate_and_check($paragraph, $line,$file); - if($arg && $arg =~ /(\S+)/) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "Spurious text after =$cmd"}); - } - } - $self->{_commands_in_head}++; - ## Check the interior sequences in the command-text - $self->interpolate_and_check($paragraph, $line,$file) - unless(defined $arg); - } -} - -sub _open_list -{ - my ($self,$indent,$line,$file) = @_; - my $list = Pod::List->new( - -indent => $indent, - -start => $line, - -file => $file); - unshift(@{$self->{_list_stack}}, $list); - undef $self->{_list_item_contents}; - $list; -} - -sub _close_list -{ - my ($self,$line,$file) = @_; - my $list = shift(@{$self->{_list_stack}}); - if(defined $self->{_list_item_contents} && - $self->{_list_item_contents} == 0) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'WARNING', - -msg => "previous =item has no contents" }); - } - undef $self->{_list_item_contents}; - $list; -} - -# process a block of some text -sub interpolate_and_check { - my ($self, $paragraph, $line, $file) = @_; - ## Check the interior sequences in the command-text - # and return the text - $self->_check_ptree( - $self->parse_text($paragraph,$line), $line, $file, ''); -} - -sub _check_ptree { - my ($self,$ptree,$line,$file,$nestlist) = @_; - local($_); - my $text = ''; - # process each node in the parse tree - foreach(@$ptree) { - # regular text chunk - unless(ref) { - # count the unescaped angle brackets - # complain only when warning level is greater than 1 - if($self->{-warnings} && $self->{-warnings}>1) { - my $count; - if($count = tr/<>/<>/) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'WARNING', - -msg => "$count unescaped <> in paragraph" }); - } - } - $text .= $_; - next; - } - # have an interior sequence - my $cmd = $_->cmd_name(); - my $contents = $_->parse_tree(); - ($file,$line) = $_->file_line(); - # check for valid tag - if (! $VALID_SEQUENCES{$cmd}) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => qq(Unknown interior-sequence '$cmd')}); - # expand it anyway - $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd"); - next; - } - if($nestlist =~ /$cmd/) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'WARNING', - -msg => "nested commands $cmd<...$cmd<...>...>"}); - # _TODO_ should we add the contents anyway? - # expand it anyway, see below - } - if($cmd eq 'E') { - # preserve entities - if(@$contents > 1 || ref $$contents[0] || $$contents[0] !~ /^\w+$/) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "garbled entity " . $_->raw_text()}); - next; - } - my $ent = $$contents[0]; - my $val; - if($ent =~ /^0x[0-9a-f]+$/i) { - # hexadec entity - $val = hex($ent); - } - elsif($ent =~ /^0\d+$/) { - # octal - $val = oct($ent); - } - elsif($ent =~ /^\d+$/) { - # numeric entity - $val = $ent; - } - if(defined $val) { - if($val>0 && $val<256) { - $text .= chr($val); - } - else { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "Entity number out of range " . $_->raw_text()}); - } - } - elsif($ENTITIES{$ent}) { - # known ISO entity - $text .= $ENTITIES{$ent}; - } - else { - $self->poderror({ -line => $line, -file => $file, - -severity => 'WARNING', - -msg => "Unknown entity " . $_->raw_text()}); - $text .= "E<$ent>"; - } - } - elsif($cmd eq 'L') { - # try to parse the hyperlink - my $link = Pod::Hyperlink->new($contents->raw_text()); - unless(defined $link) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "malformed link " . $_->raw_text() ." : $@"}); - next; - } - $link->line($line); # remember line - if($self->{-warnings}) { - foreach my $w ($link->warning()) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'WARNING', - -msg => $w }); - } - } - # check the link text - $text .= $self->_check_ptree($self->parse_text($link->text(), - $line), $line, $file, "$nestlist$cmd"); - # remember link - $self->hyperlink([$line,$link]); - } - elsif($cmd =~ /[BCFIS]/) { - # add the guts - $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd"); - } - elsif($cmd eq 'Z') { - if(length($contents->raw_text())) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "Nonempty Z<>"}); - } - } - elsif($cmd eq 'X') { - my $idx = $self->_check_ptree($contents, $line, $file, "$nestlist$cmd"); - if($idx =~ /^\s*$/s) { - $self->poderror({ -line => $line, -file => $file, - -severity => 'ERROR', - -msg => "Empty X<>"}); - } - else { - # remember this node - $self->idx($idx); - } - } - else { - # not reached - die "internal error"; - } - } - $text; -} - -# process a block of verbatim text -sub verbatim { - ## Nothing particular to check - my ($self, $paragraph, $line_num, $pod_para) = @_; - - $self->_preproc_par($paragraph); - - if($self->{_current_head1} eq 'NAME') { - my ($file, $line) = $pod_para->file_line; - $self->poderror({ -line => $line, -file => $file, - -severity => 'WARNING', - -msg => 'Verbatim paragraph in NAME section' }); - } -} - -# process a block of regular text -sub textblock { - my ($self, $paragraph, $line_num, $pod_para) = @_; - my ($file, $line) = $pod_para->file_line; - - $self->_preproc_par($paragraph); - - # skip this paragraph if in a =begin block - unless($self->{_have_begin}) { - my $block = $self->interpolate_and_check($paragraph, $line,$file); - if($self->{_current_head1} eq 'NAME') { - if($block =~ /^\s*(\S+?)\s*[,-]/) { - # this is the canonical name - $self->{-name} = $1 unless(defined $self->{-name}); - } - } - } -} - -sub _preproc_par -{ - my $self = shift; - $_[0] =~ s/[\s\n]+$//; - if($_[0]) { - $self->{_commands_in_head}++; - $self->{_list_item_contents}++ if(defined $self->{_list_item_contents}); - if(@{$self->{_list_stack}} && !$self->{_list_stack}->[0]->item()) { - $self->{_list_stack}->[0]->{_has_par} = 1; - } - } -} - -1; - -__END__ - -=head1 AUTHOR - -Please report bugs using L<http://rt.cpan.org>. - -Brad Appleton E<lt>bradapp@enteract.comE<gt> (initial version), -Marek Rouchal E<lt>marekr@cpan.orgE<gt> - -Based on code for B<Pod::Text::pod2text()> written by -Tom Christiansen E<lt>tchrist@mox.perl.comE<gt> - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Find.pm b/Master/tlpkg/tlperl.old/lib/Pod/Find.pm deleted file mode 100644 index 0b085b8c9e3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Find.pm +++ /dev/null @@ -1,523 +0,0 @@ -############################################################################# -# Pod/Find.pm -- finds files containing POD documentation -# -# Author: Marek Rouchal <marekr@cpan.org> -# -# Copyright (C) 1999-2000 by Marek Rouchal (and borrowing code -# from Nick Ing-Simmon's PodToHtml). All rights reserved. -# This file is part of "PodParser". Pod::Find is free software; -# you can redistribute it and/or modify it under the same terms -# as Perl itself. -############################################################################# - -package Pod::Find; - -use vars qw($VERSION); -$VERSION = 1.34; ## Current version of this package -require 5.005; ## requires this Perl version or later -use Carp; - -############################################################################# - -=head1 NAME - -Pod::Find - find POD documents in directory trees - -=head1 SYNOPSIS - - use Pod::Find qw(pod_find simplify_name); - my %pods = pod_find({ -verbose => 1, -inc => 1 }); - foreach(keys %pods) { - print "found library POD `$pods{$_}' in $_\n"; - } - - print "podname=",simplify_name('a/b/c/mymodule.pod'),"\n"; - - $location = pod_where( { -inc => 1 }, "Pod::Find" ); - -=head1 DESCRIPTION - -B<Pod::Find> provides a set of functions to locate POD files. Note that -no function is exported by default to avoid pollution of your namespace, -so be sure to specify them in the B<use> statement if you need them: - - use Pod::Find qw(pod_find); - -From this version on the typical SCM (software configuration management) -files/directories like RCS, CVS, SCCS, .svn are ignored. - -=cut - -use strict; -#use diagnostics; -use Exporter; -use File::Spec; -use File::Find; -use Cwd; - -use vars qw(@ISA @EXPORT_OK $VERSION); -@ISA = qw(Exporter); -@EXPORT_OK = qw(&pod_find &simplify_name &pod_where &contains_pod); - -# package global variables -my $SIMPLIFY_RX; - -=head2 C<pod_find( { %opts } , @directories )> - -The function B<pod_find> searches for POD documents in a given set of -files and/or directories. It returns a hash with the file names as keys -and the POD name as value. The POD name is derived from the file name -and its position in the directory tree. - -E.g. when searching in F<$HOME/perl5lib>, the file -F<$HOME/perl5lib/MyModule.pm> would get the POD name I<MyModule>, -whereas F<$HOME/perl5lib/Myclass/Subclass.pm> would be -I<Myclass::Subclass>. The name information can be used for POD -translators. - -Only text files containing at least one valid POD command are found. - -A warning is printed if more than one POD file with the same POD name -is found, e.g. F<CPAN.pm> in different directories. This usually -indicates duplicate occurrences of modules in the I<@INC> search path. - -B<OPTIONS> The first argument for B<pod_find> may be a hash reference -with options. The rest are either directories that are searched -recursively or files. The POD names of files are the plain basenames -with any Perl-like extension (.pm, .pl, .pod) stripped. - -=over 4 - -=item C<-verbose =E<gt> 1> - -Print progress information while scanning. - -=item C<-perl =E<gt> 1> - -Apply Perl-specific heuristics to find the correct PODs. This includes -stripping Perl-like extensions, omitting subdirectories that are numeric -but do I<not> match the current Perl interpreter's version id, suppressing -F<site_perl> as a module hierarchy name etc. - -=item C<-script =E<gt> 1> - -Search for PODs in the current Perl interpreter's installation -B<scriptdir>. This is taken from the local L<Config|Config> module. - -=item C<-inc =E<gt> 1> - -Search for PODs in the current Perl interpreter's I<@INC> paths. This -automatically considers paths specified in the C<PERL5LIB> environment -as this is prepended to I<@INC> by the Perl interpreter itself. - -=back - -=cut - -# return a hash of the POD files found -# first argument may be a hashref (options), -# rest is a list of directories to search recursively -sub pod_find -{ - my %opts; - if(ref $_[0]) { - %opts = %{shift()}; - } - - $opts{-verbose} ||= 0; - $opts{-perl} ||= 0; - - my (@search) = @_; - - if($opts{-script}) { - require Config; - push(@search, $Config::Config{scriptdir}) - if -d $Config::Config{scriptdir}; - $opts{-perl} = 1; - } - - if($opts{-inc}) { - if ($^O eq 'MacOS') { - # tolerate '.', './some_dir' and '(../)+some_dir' on Mac OS - my @new_INC = @INC; - for (@new_INC) { - if ( $_ eq '.' ) { - $_ = ':'; - } elsif ( $_ =~ s|^((?:\.\./)+)|':' x (length($1)/3)|e ) { - $_ = ':'. $_; - } else { - $_ =~ s|^\./|:|; - } - } - push(@search, grep($_ ne File::Spec->curdir, @new_INC)); - } else { - push(@search, grep($_ ne File::Spec->curdir, @INC)); - } - - $opts{-perl} = 1; - } - - if($opts{-perl}) { - require Config; - # this code simplifies the POD name for Perl modules: - # * remove "site_perl" - # * remove e.g. "i586-linux" (from 'archname') - # * remove e.g. 5.00503 - # * remove pod/ if followed by *.pod (e.g. in pod/perlfunc.pod) - - # Mac OS: - # * remove ":?site_perl:" - # * remove :?pod: if followed by *.pod (e.g. in :pod:perlfunc.pod) - - if ($^O eq 'MacOS') { - $SIMPLIFY_RX = - qq!^(?i:\:?site_perl\:|\:?pod\:(?=.*?\\.pod\\z))*!; - } else { - $SIMPLIFY_RX = - qq!^(?i:site(_perl)?/|\Q$Config::Config{archname}\E/|\\d+\\.\\d+([_.]?\\d+)?/|pod/(?=.*?\\.pod\\z))*!; - } - } - - my %dirs_visited; - my %pods; - my %names; - my $pwd = cwd(); - - foreach my $try (@search) { - unless(File::Spec->file_name_is_absolute($try)) { - # make path absolute - $try = File::Spec->catfile($pwd,$try); - } - # simplify path - # on VMS canonpath will vmsify:[the.path], but File::Find::find - # wants /unixy/paths - $try = File::Spec->canonpath($try) if ($^O ne 'VMS'); - $try = VMS::Filespec::unixify($try) if ($^O eq 'VMS'); - my $name; - if(-f $try) { - if($name = _check_and_extract_name($try, $opts{-verbose})) { - _check_for_duplicates($try, $name, \%names, \%pods); - } - next; - } - my $root_rx = $^O eq 'MacOS' ? qq!^\Q$try\E! : qq!^\Q$try\E/!; - File::Find::find( sub { - my $item = $File::Find::name; - if(-d) { - if($item =~ m{/(?:RCS|CVS|SCCS|\.svn)$}) { - $File::Find::prune = 1; - return; - } - elsif($dirs_visited{$item}) { - warn "Directory '$item' already seen, skipping.\n" - if($opts{-verbose}); - $File::Find::prune = 1; - return; - } - else { - $dirs_visited{$item} = 1; - } - if($opts{-perl} && /^(\d+\.[\d_]+)\z/s && eval "$1" != $]) { - $File::Find::prune = 1; - warn "Perl $] version mismatch on $_, skipping.\n" - if($opts{-verbose}); - } - return; - } - if($name = _check_and_extract_name($item, $opts{-verbose}, $root_rx)) { - _check_for_duplicates($item, $name, \%names, \%pods); - } - }, $try); # end of File::Find::find - } - chdir $pwd; - %pods; -} - -sub _check_for_duplicates { - my ($file, $name, $names_ref, $pods_ref) = @_; - if($$names_ref{$name}) { - warn "Duplicate POD found (shadowing?): $name ($file)\n"; - warn " Already seen in ", - join(' ', grep($$pods_ref{$_} eq $name, keys %$pods_ref)),"\n"; - } - else { - $$names_ref{$name} = 1; - } - $$pods_ref{$file} = $name; -} - -sub _check_and_extract_name { - my ($file, $verbose, $root_rx) = @_; - - # check extension or executable flag - # this involves testing the .bat extension on Win32! - unless(-f $file && -T $file && ($file =~ /\.(pod|pm|plx?)\z/i || -x $file )) { - return undef; - } - - return undef unless contains_pod($file,$verbose); - - # strip non-significant path components - # TODO what happens on e.g. Win32? - my $name = $file; - if(defined $root_rx) { - $name =~ s!$root_rx!!s; - $name =~ s!$SIMPLIFY_RX!!os if(defined $SIMPLIFY_RX); - } - else { - if ($^O eq 'MacOS') { - $name =~ s/^.*://s; - } else { - $name =~ s:^.*/::s; - } - } - _simplify($name); - $name =~ s!/+!::!g; #/ - if ($^O eq 'MacOS') { - $name =~ s!:+!::!g; # : -> :: - } else { - $name =~ s!/+!::!g; # / -> :: - } - $name; -} - -=head2 C<simplify_name( $str )> - -The function B<simplify_name> is equivalent to B<basename>, but also -strips Perl-like extensions (.pm, .pl, .pod) and extensions like -F<.bat>, F<.cmd> on Win32 and OS/2, or F<.com> on VMS, respectively. - -=cut - -# basic simplification of the POD name: -# basename & strip extension -sub simplify_name { - my ($str) = @_; - # remove all path components - if ($^O eq 'MacOS') { - $str =~ s/^.*://s; - } else { - $str =~ s:^.*/::s; - } - _simplify($str); - $str; -} - -# internal sub only -sub _simplify { - # strip Perl's own extensions - $_[0] =~ s/\.(pod|pm|plx?)\z//i; - # strip meaningless extensions on Win32 and OS/2 - $_[0] =~ s/\.(bat|exe|cmd)\z//i if($^O =~ /mswin|os2/i); - # strip meaningless extensions on VMS - $_[0] =~ s/\.(com)\z//i if($^O eq 'VMS'); -} - -# contribution from Tim Jenness <t.jenness@jach.hawaii.edu> - -=head2 C<pod_where( { %opts }, $pod )> - -Returns the location of a pod document given a search directory -and a module (e.g. C<File::Find>) or script (e.g. C<perldoc>) name. - -Options: - -=over 4 - -=item C<-inc =E<gt> 1> - -Search @INC for the pod and also the C<scriptdir> defined in the -L<Config|Config> module. - -=item C<-dirs =E<gt> [ $dir1, $dir2, ... ]> - -Reference to an array of search directories. These are searched in order -before looking in C<@INC> (if B<-inc>). Current directory is used if -none are specified. - -=item C<-verbose =E<gt> 1> - -List directories as they are searched - -=back - -Returns the full path of the first occurrence to the file. -Package names (eg 'A::B') are automatically converted to directory -names in the selected directory. (eg on unix 'A::B' is converted to -'A/B'). Additionally, '.pm', '.pl' and '.pod' are appended to the -search automatically if required. - -A subdirectory F<pod/> is also checked if it exists in any of the given -search directories. This ensures that e.g. L<perlfunc|perlfunc> is -found. - -It is assumed that if a module name is supplied, that that name -matches the file name. Pods are not opened to check for the 'NAME' -entry. - -A check is made to make sure that the file that is found does -contain some pod documentation. - -=cut - -sub pod_where { - - # default options - my %options = ( - '-inc' => 0, - '-verbose' => 0, - '-dirs' => [ File::Spec->curdir ], - ); - - # Check for an options hash as first argument - if (defined $_[0] && ref($_[0]) eq 'HASH') { - my $opt = shift; - - # Merge default options with supplied options - %options = (%options, %$opt); - } - - # Check usage - carp 'Usage: pod_where({options}, $pod)' unless (scalar(@_)); - - # Read argument - my $pod = shift; - - # Split on :: and then join the name together using File::Spec - my @parts = split (/::/, $pod); - - # Get full directory list - my @search_dirs = @{ $options{'-dirs'} }; - - if ($options{'-inc'}) { - - require Config; - - # Add @INC - if ($^O eq 'MacOS' && $options{'-inc'}) { - # tolerate '.', './some_dir' and '(../)+some_dir' on Mac OS - my @new_INC = @INC; - for (@new_INC) { - if ( $_ eq '.' ) { - $_ = ':'; - } elsif ( $_ =~ s|^((?:\.\./)+)|':' x (length($1)/3)|e ) { - $_ = ':'. $_; - } else { - $_ =~ s|^\./|:|; - } - } - push (@search_dirs, @new_INC); - } elsif ($options{'-inc'}) { - push (@search_dirs, @INC); - } - - # Add location of pod documentation for perl man pages (eg perlfunc) - # This is a pod directory in the private install tree - #my $perlpoddir = File::Spec->catdir($Config::Config{'installprivlib'}, - # 'pod'); - #push (@search_dirs, $perlpoddir) - # if -d $perlpoddir; - - # Add location of binaries such as pod2text - push (@search_dirs, $Config::Config{'scriptdir'}) - if -d $Config::Config{'scriptdir'}; - } - - warn "Search path is: ".join(' ', @search_dirs)."\n" - if $options{'-verbose'}; - - # Loop over directories - Dir: foreach my $dir ( @search_dirs ) { - - # Don't bother if can't find the directory - if (-d $dir) { - warn "Looking in directory $dir\n" - if $options{'-verbose'}; - - # Now concatenate this directory with the pod we are searching for - my $fullname = File::Spec->catfile($dir, @parts); - warn "Filename is now $fullname\n" - if $options{'-verbose'}; - - # Loop over possible extensions - foreach my $ext ('', '.pod', '.pm', '.pl') { - my $fullext = $fullname . $ext; - if (-f $fullext && - contains_pod($fullext, $options{'-verbose'}) ) { - warn "FOUND: $fullext\n" if $options{'-verbose'}; - return $fullext; - } - } - } else { - warn "Directory $dir does not exist\n" - if $options{'-verbose'}; - next Dir; - } - # for some strange reason the path on MacOS/darwin/cygwin is - # 'pods' not 'pod' - # this could be the case also for other systems that - # have a case-tolerant file system, but File::Spec - # does not recognize 'darwin' yet. And cygwin also has "pods", - # but is not case tolerant. Oh well... - if((File::Spec->case_tolerant || $^O =~ /macos|darwin|cygwin/i) - && -d File::Spec->catdir($dir,'pods')) { - $dir = File::Spec->catdir($dir,'pods'); - redo Dir; - } - if(-d File::Spec->catdir($dir,'pod')) { - $dir = File::Spec->catdir($dir,'pod'); - redo Dir; - } - } - # No match; - return undef; -} - -=head2 C<contains_pod( $file , $verbose )> - -Returns true if the supplied filename (not POD module) contains some pod -information. - -=cut - -sub contains_pod { - my $file = shift; - my $verbose = 0; - $verbose = shift if @_; - - # check for one line of POD - unless(open(POD,"<$file")) { - warn "Error: $file is unreadable: $!\n"; - return undef; - } - - local $/ = undef; - my $pod = <POD>; - close(POD) || die "Error closing $file: $!\n"; - unless($pod =~ /^=(head\d|pod|over|item)\b/m) { - warn "No POD in $file, skipping.\n" - if($verbose); - return 0; - } - - return 1; -} - -=head1 AUTHOR - -Please report bugs using L<http://rt.cpan.org>. - -Marek Rouchal E<lt>marekr@cpan.orgE<gt>, -heavily borrowing code from Nick Ing-Simmons' PodToHtml. - -Tim Jenness E<lt>t.jenness@jach.hawaii.eduE<gt> provided -C<pod_where> and C<contains_pod>. - -=head1 SEE ALSO - -L<Pod::Parser>, L<Pod::Checker>, L<perldoc> - -=cut - -1; - diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Functions.pm b/Master/tlpkg/tlperl.old/lib/Pod/Functions.pm deleted file mode 100644 index 0e250cf0b50..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Functions.pm +++ /dev/null @@ -1,376 +0,0 @@ -package Pod::Functions; -use strict; - -=head1 NAME - -Pod::Functions - Group Perl's functions a la perlfunc.pod - -=head1 SYNOPSIS - - use Pod::Functions; - - my @misc_ops = @{ $Kinds{ 'Misc' } }; - my $misc_dsc = $Type_Description{ 'Misc' }; - -or - - perl /path/to/lib/Pod/Functions.pm - -This will print a grouped list of Perl's functions, like the -L<perlfunc/"Perl Functions by Category"> section. - -=head1 DESCRIPTION - -It exports the following variables: - -=over 4 - -=item %Kinds - -This holds a hash-of-lists. Each list contains the functions in the category -the key denotes. - -=item %Type - -In this hash each key represents a function and the value is the category. -The category can be a comma separated list. - -=item %Flavor - -In this hash each key represents a function and the value is a short -description of that function. - -=item %Type_Description - -In this hash each key represents a category of functions and the value is -a short description of that category. - -=item @Type_Order - -This list of categories is used to produce the same order as the -L<perlfunc/"Perl Functions by Category"> section. - -=back - -=head1 CHANGES - -1.02 20020813 <abe@ztreet.demon.nl> - de-typo in the SYNOPSIS section (thanks Mike Castle for noticing) - -1.01 20011229 <abe@ztreet.demon.nl> - fixed some bugs that slipped in after 5.6.1 - added the pod - finished making it strict safe - -1.00 ?? - first numbered version - -=cut - -our $VERSION = '1.03'; - -require Exporter; - -our @ISA = qw(Exporter); -our @EXPORT = qw(%Kinds %Type %Flavor %Type_Description @Type_Order); - -our(%Kinds, %Type, %Flavor); - -our %Type_Description = ( - 'ARRAY' => 'Functions for real @ARRAYs', - 'Binary' => 'Functions for fixed length data or records', - 'File' => 'Functions for filehandles, files, or directories', - 'Flow' => 'Keywords related to control flow of your perl program', - 'HASH' => 'Functions for real %HASHes', - 'I/O' => 'Input and output functions', - 'LIST' => 'Functions for list data', - 'Math' => 'Numeric functions', - 'Misc' => 'Miscellaneous functions', - 'Modules' => 'Keywords related to perl modules', - 'Network' => 'Fetching network info', - 'Objects' => 'Keywords related to classes and object-orientedness', - 'Process' => 'Functions for processes and process groups', - 'Regexp' => 'Regular expressions and pattern matching', - 'Socket' => 'Low-level socket functions', - 'String' => 'Functions for SCALARs or strings', - 'SysV' => 'System V interprocess communication functions', - 'Time' => 'Time-related functions', - 'User' => 'Fetching user and group info', - 'Namespace' => 'Keywords altering or affecting scoping of identifiers', -); - -our @Type_Order = qw{ - String - Regexp - Math - ARRAY - LIST - HASH - I/O - Binary - File - Flow - Namespace - Misc - Process - Modules - Objects - Socket - SysV - User - Network - Time -}; - -while (<DATA>) { - chomp; - s/#.*//; - next unless $_; - my($name, $type, $text) = split " ", $_, 3; - $Type{$name} = $type; - $Flavor{$name} = $text; - for my $t ( split /[,\s]+/, $type ) { - push @{$Kinds{$t}}, $name; - } -} - -close DATA; - -my( $typedesc, $list ); -unless (caller) { - foreach my $type ( @Type_Order ) { - $list = join(", ", sort @{$Kinds{$type}}); - $typedesc = $Type_Description{$type} . ":"; - write; - } -} - -format = - -^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - $typedesc -~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - $typedesc - ~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - $list -. - -1; - -__DATA__ --X File a file test (-r, -x, etc) -abs Math absolute value function -accept Socket accept an incoming socket connect -alarm Process schedule a SIGALRM -atan2 Math arctangent of Y/X in the range -PI to PI -bind Socket binds an address to a socket -binmode I/O prepare binary files for I/O -bless Objects create an object -caller Flow,Namespace get context of the current subroutine call -chdir File change your current working directory -chmod File changes the permissions on a list of files -chomp String remove a trailing record separator from a string -chop String remove the last character from a string -chown File change the owership on a list of files -chr String get character this number represents -chroot File make directory new root for path lookups -close I/O close file (or pipe or socket) handle -closedir I/O close directory handle -connect Socket connect to a remote socket -continue Flow optional trailing block in a while or foreach -cos Math cosine function -crypt String one-way passwd-style encryption -dbmclose Objects,I/O breaks binding on a tied dbm file -dbmopen Objects,I/O create binding on a tied dbm file -defined Misc test whether a value, variable, or function is defined -delete HASH deletes a value from a hash -die I/O,Flow raise an exception or bail out -do Flow,Modules turn a BLOCK into a TERM -dump Misc,Flow create an immediate core dump -each HASH retrieve the next key/value pair from a hash -endgrent User be done using group file -endhostent User be done using hosts file -endnetent User be done using networks file -endprotoent Network be done using protocols file -endpwent User be done using passwd file -endservent Network be done using services file -eof I/O test a filehandle for its end -eval Flow,Misc catch exceptions or compile and run code -exec Process abandon this program to run another -exists HASH test whether a hash key is present -exit Flow terminate this program -exp Math raise I<e> to a power -fcntl File file control system call -fileno I/O return file descriptor from filehandle -flock I/O lock an entire file with an advisory lock -fork Process create a new process just like this one -format I/O declare a picture format with use by the write() function -formline Misc internal function used for formats -getc I/O get the next character from the filehandle -getgrent User get next group record -getgrgid User get group record given group user ID -getgrnam User get group record given group name -gethostbyaddr Network get host record given its address -gethostbyname Network get host record given name -gethostent Network get next hosts record -getlogin User return who logged in at this tty -getnetbyaddr Network get network record given its address -getnetbyname Network get networks record given name -getnetent Network get next networks record -getpeername Socket find the other end of a socket connection -getpgrp Process get process group -getppid Process get parent process ID -getpriority Process get current nice value -getprotobyname Network get protocol record given name -getprotobynumber Network get protocol record numeric protocol -getprotoent Network get next protocols record -getpwent User get next passwd record -getpwnam User get passwd record given user login name -getpwuid User get passwd record given user ID -getservbyname Network get services record given its name -getservbyport Network get services record given numeric port -getservent Network get next services record -getsockname Socket retrieve the sockaddr for a given socket -getsockopt Socket get socket options on a given socket -glob File expand filenames using wildcards -gmtime Time convert UNIX time into record or string using Greenwich time -goto Flow create spaghetti code -grep LIST locate elements in a list test true against a given criterion -hex Math,String convert a string to a hexadecimal number -import Modules,Namespace patch a module's namespace into your own -index String find a substring within a string -int Math get the integer portion of a number -ioctl File system-dependent device control system call -join LIST join a list into a string using a separator -keys HASH retrieve list of indices from a hash -kill Process send a signal to a process or process group -last Flow exit a block prematurely -lc String return lower-case version of a string -lcfirst String return a string with just the next letter in lower case -length String return the number of bytes in a string -link File create a hard link in the filesytem -listen Socket register your socket as a server -local Misc,Namespace create a temporary value for a global variable (dynamic scoping) -localtime Time convert UNIX time into record or string using local time -lock Threads get a thread lock on a variable, subroutine, or method -log Math retrieve the natural logarithm for a number -lstat File stat a symbolic link -m// Regexp match a string with a regular expression pattern -map LIST apply a change to a list to get back a new list with the changes -mkdir File create a directory -msgctl SysV SysV IPC message control operations -msgget SysV get SysV IPC message queue -msgrcv SysV receive a SysV IPC message from a message queue -msgsnd SysV send a SysV IPC message to a message queue -my Misc,Namespace declare and assign a local variable (lexical scoping) -next Flow iterate a block prematurely -no Modules unimport some module symbols or semantics at compile time -package Modules,Objects,Namespace declare a separate global namespace -prototype Flow,Misc get the prototype (if any) of a subroutine -oct String,Math convert a string to an octal number -open File open a file, pipe, or descriptor -opendir File open a directory -ord String find a character's numeric representation -our Misc,Namespace declare and assign a package variable (lexical scoping) -pack Binary,String convert a list into a binary representation -pipe Process open a pair of connected filehandles -pop ARRAY remove the last element from an array and return it -pos Regexp find or set the offset for the last/next m//g search -print I/O output a list to a filehandle -printf I/O output a formatted list to a filehandle -push ARRAY append one or more elements to an array -q/STRING/ String singly quote a string -qq/STRING/ String doubly quote a string -quotemeta Regexp quote regular expression magic characters -qw/STRING/ LIST quote a list of words -qx/STRING/ Process backquote quote a string -qr/STRING/ Regexp Compile pattern -rand Math retrieve the next pseudorandom number -read I/O,Binary fixed-length buffered input from a filehandle -readdir I/O get a directory from a directory handle -readline I/O fetch a record from a file -readlink File determine where a symbolic link is pointing -readpipe Process execute a system command and collect standard output -recv Socket receive a message over a Socket -redo Flow start this loop iteration over again -ref Objects find out the type of thing being referenced -rename File change a filename -require Modules load in external functions from a library at runtime -reset Misc clear all variables of a given name -return Flow get out of a function early -reverse String,LIST flip a string or a list -rewinddir I/O reset directory handle -rindex String right-to-left substring search -rmdir File remove a directory -s/// Regexp replace a pattern with a string -scalar Misc force a scalar context -seek I/O reposition file pointer for random-access I/O -seekdir I/O reposition directory pointer -select I/O reset default output or do I/O multiplexing -semctl SysV SysV semaphore control operations -semget SysV get set of SysV semaphores -semop SysV SysV semaphore operations -send Socket send a message over a socket -setgrent User prepare group file for use -sethostent Network prepare hosts file for use -setnetent Network prepare networks file for use -setpgrp Process set the process group of a process -setpriority Process set a process's nice value -setprotoent Network prepare protocols file for use -setpwent User prepare passwd file for use -setservent Network prepare services file for use -setsockopt Socket set some socket options -shift ARRAY remove the first element of an array, and return it -shmctl SysV SysV shared memory operations -shmget SysV get SysV shared memory segment identifier -shmread SysV read SysV shared memory -shmwrite SysV write SysV shared memory -shutdown Socket close down just half of a socket connection -sin Math return the sine of a number -sleep Process block for some number of seconds -socket Socket create a socket -socketpair Socket create a pair of sockets -sort LIST sort a list of values -splice ARRAY add or remove elements anywhere in an array -split Regexp split up a string using a regexp delimiter -sprintf String formatted print into a string -sqrt Math square root function -srand Math seed the random number generator -stat File get a file's status information -study Regexp optimize input data for repeated searches -sub Flow declare a subroutine, possibly anonymously -substr String get or alter a portion of a stirng -symlink File create a symbolic link to a file -syscall I/O,Binary execute an arbitrary system call -sysopen File open a file, pipe, or descriptor -sysread I/O,Binary fixed-length unbuffered input from a filehandle -sysseek I/O,Binary position I/O pointer on handle used with sysread and syswrite -system Process run a separate program -syswrite I/O,Binary fixed-length unbuffered output to a filehandle -tell I/O get current seekpointer on a filehandle -telldir I/O get current seekpointer on a directory handle -tie Objects bind a variable to an object class -tied Objects get a reference to the object underlying a tied variable -time Time return number of seconds since 1970 -times Process,Time return elapsed time for self and child processes -tr/// String transliterate a string -truncate I/O shorten a file -uc String return upper-case version of a string -ucfirst String return a string with just the next letter in upper case -umask File set file creation mode mask -undef Misc remove a variable or function definition -unlink File remove one link to a file -unpack Binary,LIST convert binary structure into normal perl variables -unshift ARRAY prepend more elements to the beginning of a list -untie Objects break a tie binding to a variable -use Modules,Namespace load a module and import its namespace -use Objects load in a module at compile time -utime File set a file's last access and modify times -values HASH return a list of the values in a hash -vec Binary test or set particular bits in a string -wait Process wait for any child process to die -waitpid Process wait for a particular child process to die -wantarray Misc,Flow get void vs scalar vs list context of current subroutine call -warn I/O print debugging info -write I/O print a picture record -y/// String transliterate a string diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Html.pm b/Master/tlpkg/tlperl.old/lib/Pod/Html.pm deleted file mode 100644 index 4b9752bc6fc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Html.pm +++ /dev/null @@ -1,2123 +0,0 @@ -package Pod::Html; -use strict; -require Exporter; - -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); -$VERSION = 1.0504; -@ISA = qw(Exporter); -@EXPORT = qw(pod2html htmlify); -@EXPORT_OK = qw(anchorify); - -use Carp; -use Config; -use Cwd; -use File::Spec; -use File::Spec::Unix; -use Getopt::Long; - -use locale; # make \w work right in non-ASCII lands - -=head1 NAME - -Pod::Html - module to convert pod files to HTML - -=head1 SYNOPSIS - - use Pod::Html; - pod2html([options]); - -=head1 DESCRIPTION - -Converts files from pod format (see L<perlpod>) to HTML format. It -can automatically generate indexes and cross-references, and it keeps -a cache of things it knows how to cross-reference. - -=head1 ARGUMENTS - -Pod::Html takes the following arguments: - -=over 4 - -=item backlink - - --backlink="Back to Top" - -Adds "Back to Top" links in front of every C<head1> heading (except for -the first). By default, no backlinks are generated. - -=item cachedir - - --cachedir=name - -Creates the item and directory caches in the given directory. - -=item css - - --css=stylesheet - -Specify the URL of a cascading style sheet. Also disables all HTML/CSS -C<style> attributes that are output by default (to avoid conflicts). - -=item flush - - --flush - -Flushes the item and directory caches. - -=item header - - --header - --noheader - -Creates header and footer blocks containing the text of the C<NAME> -section. By default, no headers are generated. - -=item help - - --help - -Displays the usage message. - -=item hiddendirs - - --hiddendirs - --nohiddendirs - -Include hidden directories in the search for POD's in podpath if recurse -is set. -The default is not to traverse any directory whose name begins with C<.>. -See L</"podpath"> and L</"recurse">. - -[This option is for backward compatibility only. -It's hard to imagine that one would usefully create a module with a -name component beginning with C<.>.] - -=item htmldir - - --htmldir=name - -Sets the directory in which the resulting HTML file is placed. This -is used to generate relative links to other files. Not passing this -causes all links to be absolute, since this is the value that tells -Pod::Html the root of the documentation tree. - -=item htmlroot - - --htmlroot=name - -Sets the base URL for the HTML files. When cross-references are made, -the HTML root is prepended to the URL. - -=item index - - --index - --noindex - -Generate an index at the top of the HTML file. This is the default -behaviour. - -=item infile - - --infile=name - -Specify the pod file to convert. Input is taken from STDIN if no -infile is specified. - -=item libpods - - --libpods=name:...:name - -List of page names (eg, "perlfunc") which contain linkable C<=item>s. - -=item netscape - - --netscape - --nonetscape - -B<Deprecated>, has no effect. For backwards compatibility only. - -=item outfile - - --outfile=name - -Specify the HTML file to create. Output goes to STDOUT if no outfile -is specified. - -=item podpath - - --podpath=name:...:name - -Specify which subdirectories of the podroot contain pod files whose -HTML converted forms can be linked to in cross references. - -=item podroot - - --podroot=name - -Specify the base directory for finding library pods. - -=item quiet - - --quiet - --noquiet - -Don't display I<mostly harmless> warning messages. These messages -will be displayed by default. But this is not the same as C<verbose> -mode. - -=item recurse - - --recurse - --norecurse - -Recurse into subdirectories specified in podpath (default behaviour). - -=item title - - --title=title - -Specify the title of the resulting HTML file. - -=item verbose - - --verbose - --noverbose - -Display progress messages. By default, they won't be displayed. - -=back - -=head1 EXAMPLE - - pod2html("pod2html", - "--podpath=lib:ext:pod:vms", - "--podroot=/usr/src/perl", - "--htmlroot=/perl/nmanual", - "--libpods=perlfunc:perlguts:perlvar:perlrun:perlop", - "--recurse", - "--infile=foo.pod", - "--outfile=/perl/nmanual/foo.html"); - -=head1 ENVIRONMENT - -Uses C<$Config{pod2html}> to setup default options. - -=head1 AUTHOR - -Tom Christiansen, E<lt>tchrist@perl.comE<gt>. - -=head1 SEE ALSO - -L<perlpod> - -=head1 COPYRIGHT - -This program is distributed under the Artistic License. - -=cut - - -my($Cachedir); -my($Dircache, $Itemcache); -my @Begin_Stack; -my @Libpods; -my($Htmlroot, $Htmldir, $Htmlfile, $Htmlfileurl); -my($Podfile, @Podpath, $Podroot); -my $Css; - -my $Recurse; -my $Quiet; -my $HiddenDirs; -my $Verbose; -my $Doindex; - -my $Backlink; -my($Listlevel, @Listtype); -my $ListNewTerm; -use vars qw($Ignore); # need to localize it later. - -my(%Items_Named, @Items_Seen); -my($Title, $Header); - -my $Top; -my $Paragraph; - -my %Sections; - -# Caches -my %Pages = (); # associative array used to find the location - # of pages referenced by L<> links. -my %Items = (); # associative array used to find the location - # of =item directives referenced by C<> links - -my %Local_Items; -my $Is83; -my $PTQuote; - -my $Curdir = File::Spec->curdir; - -init_globals(); - -sub init_globals { - $Cachedir = "."; # The directory to which item and directory - # caches will be written. - - $Dircache = "pod2htmd.tmp"; - $Itemcache = "pod2htmi.tmp"; - - @Begin_Stack = (); # begin/end stack - - @Libpods = (); # files to search for links from C<> directives - $Htmlroot = "/"; # http-server base directory from which all - # relative paths in $podpath stem. - $Htmldir = ""; # The directory to which the html pages - # will (eventually) be written. - $Htmlfile = ""; # write to stdout by default - $Htmlfileurl = ""; # The url that other files would use to - # refer to this file. This is only used - # to make relative urls that point to - # other files. - - $Podfile = ""; # read from stdin by default - @Podpath = (); # list of directories containing library pods. - $Podroot = $Curdir; # filesystem base directory from which all - # relative paths in $podpath stem. - $Css = ''; # Cascading style sheet - $Recurse = 1; # recurse on subdirectories in $podpath. - $Quiet = 0; # not quiet by default - $Verbose = 0; # not verbose by default - $Doindex = 1; # non-zero if we should generate an index - $Backlink = ''; # text for "back to top" links - $Listlevel = 0; # current list depth - @Listtype = (); # list types for open lists - $ListNewTerm = 0; # indicates new term in definition list; used - # to correctly open/close <dd> tags - $Ignore = 1; # whether or not to format text. we don't - # format text until we hit our first pod - # directive. - - @Items_Seen = (); # for multiples of the same item in perlfunc - %Items_Named = (); - $Header = 0; # produce block header/footer - $Title = ''; # title to give the pod(s) - $Top = 1; # true if we are at the top of the doc. used - # to prevent the first <hr /> directive. - $Paragraph = ''; # which paragraph we're processing (used - # for error messages) - $PTQuote = 0; # status of double-quote conversion - %Sections = (); # sections within this page - - %Local_Items = (); - $Is83 = $^O eq 'dos'; # Is it an 8.3 filesystem? -} - -# -# clean_data: global clean-up of pod data -# -sub clean_data($){ - my( $dataref ) = @_; - for my $i ( 0..$#{$dataref} ) { - ${$dataref}[$i] =~ s/\s+\Z//; - - # have a look for all-space lines - if( ${$dataref}[$i] =~ /^\s+$/m and $dataref->[$i] !~ /^\s/ ){ - my @chunks = split( /^\s+$/m, ${$dataref}[$i] ); - splice( @$dataref, $i, 1, @chunks ); - } - } -} - - -sub pod2html { - local(@ARGV) = @_; - local($/); - local $_; - - init_globals(); - - $Is83 = 0 if (defined (&Dos::UseLFN) && Dos::UseLFN()); - - # cache of %Pages and %Items from last time we ran pod2html - - #undef $opt_help if defined $opt_help; - - # parse the command-line parameters - parse_command_line(); - - # escape the backlink argument (same goes for title but is done later...) - $Backlink = html_escape($Backlink) if defined $Backlink; - - # set some variables to their default values if necessary - local *POD; - unless (@ARGV && $ARGV[0]) { - $Podfile = "-" unless $Podfile; # stdin - open(POD, "<$Podfile") - || die "$0: cannot open $Podfile file for input: $!\n"; - } else { - $Podfile = $ARGV[0]; # XXX: might be more filenames - *POD = *ARGV; - } - $Htmlfile = "-" unless $Htmlfile; # stdout - $Htmlroot = "" if $Htmlroot eq "/"; # so we don't get a // - $Htmldir =~ s#/\z## ; # so we don't get a // - if ( $Htmlroot eq '' - && defined( $Htmldir ) - && $Htmldir ne '' - && substr( $Htmlfile, 0, length( $Htmldir ) ) eq $Htmldir - ) - { - # Set the 'base' url for this file, so that we can use it - # as the location from which to calculate relative links - # to other files. If this is '', then absolute links will - # be used throughout. - $Htmlfileurl= "$Htmldir/" . substr( $Htmlfile, length( $Htmldir ) + 1); - } - - # read the pod a paragraph at a time - warn "Scanning for sections in input file(s)\n" if $Verbose; - $/ = ""; - my @poddata = <POD>; - close(POD); - - # be eol agnostic - for (@poddata) { - if (/\r/) { - if (/\r\n/) { - @poddata = map { s/\r\n/\n/g; - /\n\n/ ? - map { "$_\n\n" } split /\n\n/ : - $_ } @poddata; - } else { - @poddata = map { s/\r/\n/g; - /\n\n/ ? - map { "$_\n\n" } split /\n\n/ : - $_ } @poddata; - } - last; - } - } - - clean_data( \@poddata ); - - # scan the pod for =head[1-6] directives and build an index - my $index = scan_headings(\%Sections, @poddata); - - unless($index) { - warn "No headings in $Podfile\n" if $Verbose; - } - - # open the output file - open(HTML, ">$Htmlfile") - || die "$0: cannot open $Htmlfile file for output: $!\n"; - - # put a title in the HTML file if one wasn't specified - if ($Title eq '') { - TITLE_SEARCH: { - for (my $i = 0; $i < @poddata; $i++) { - if ($poddata[$i] =~ /^=head1\s*NAME\b/m) { - for my $para ( @poddata[$i, $i+1] ) { - last TITLE_SEARCH - if ($Title) = $para =~ /(\S+\s+-+.*\S)/s; - } - } - - } - } - } - if (!$Title and $Podfile =~ /\.pod\z/) { - # probably a split pod so take first =head[12] as title - for (my $i = 0; $i < @poddata; $i++) { - last if ($Title) = $poddata[$i] =~ /^=head[12]\s*(.*)/; - } - warn "adopted '$Title' as title for $Podfile\n" - if $Verbose and $Title; - } - if ($Title) { - $Title =~ s/\s*\(.*\)//; - } else { - warn "$0: no title for $Podfile.\n" unless $Quiet; - $Podfile =~ /^(.*)(\.[^.\/]+)?\z/s; - $Title = ($Podfile eq "-" ? 'No Title' : $1); - warn "using $Title" if $Verbose; - } - $Title = html_escape($Title); - - my $csslink = ''; - my $bodystyle = ' style="background-color: white"'; - my $tdstyle = ' style="background-color: #cccccc"'; - - if ($Css) { - $csslink = qq(\n<link rel="stylesheet" href="$Css" type="text/css" />); - $csslink =~ s,\\,/,g; - $csslink =~ s,(/.):,$1|,; - $bodystyle = ''; - $tdstyle = ''; - } - - my $block = $Header ? <<END_OF_BLOCK : ''; -<table border="0" width="100%" cellspacing="0" cellpadding="3"> -<tr><td class="block"$tdstyle valign="middle"> -<big><strong><span class="block"> $Title</span></strong></big> -</td></tr> -</table> -END_OF_BLOCK - - print HTML <<END_OF_HEAD; -<?xml version="1.0" ?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<title>$Title</title>$csslink -<meta http-equiv="content-type" content="text/html; charset=utf-8" /> -<link rev="made" href="mailto:$Config{perladmin}" /> -</head> - -<body$bodystyle> -$block -END_OF_HEAD - - # load/reload/validate/cache %Pages and %Items - get_cache($Dircache, $Itemcache, \@Podpath, $Podroot, $Recurse); - - # scan the pod for =item directives - scan_items( \%Local_Items, "", @poddata); - - # put an index at the top of the file. note, if $Doindex is 0 we - # still generate an index, but surround it with an html comment. - # that way some other program can extract it if desired. - $index =~ s/--+/-/g; - print HTML "<p><a name=\"__index__\"></a></p>\n"; - print HTML "<!-- INDEX BEGIN -->\n"; - print HTML "<!--\n" unless $Doindex; - print HTML $index; - print HTML "-->\n" unless $Doindex; - print HTML "<!-- INDEX END -->\n\n"; - print HTML "<hr />\n" if $Doindex and $index; - - # now convert this file - my $after_item; # set to true after an =item - warn "Converting input file $Podfile\n" if $Verbose; - foreach my $i (0..$#poddata){ - $PTQuote = 0; # status of quote conversion - - $_ = $poddata[$i]; - $Paragraph = $i+1; - if (/^(=.*)/s) { # is it a pod directive? - $Ignore = 0; - $after_item = 0; - $_ = $1; - if (/^=begin\s+(\S+)\s*(.*)/si) {# =begin - process_begin($1, $2); - } elsif (/^=end\s+(\S+)\s*(.*)/si) {# =end - process_end($1, $2); - } elsif (/^=cut/) { # =cut - process_cut(); - } elsif (/^=pod/) { # =pod - process_pod(); - } else { - next if @Begin_Stack && $Begin_Stack[-1] ne 'html'; - - if (/^=(head[1-6])\s+(.*\S)/s) { # =head[1-6] heading - process_head( $1, $2, $Doindex && $index ); - } elsif (/^=item\s*(.*\S)?/sm) { # =item text - process_item( $1 ); - $after_item = 1; - } elsif (/^=over\s*(.*)/) { # =over N - process_over(); - } elsif (/^=back/) { # =back - process_back(); - } elsif (/^=for\s+(\S+)\s*(.*)/si) {# =for - process_for($1,$2); - } else { - /^=(\S*)\s*/; - warn "$0: $Podfile: unknown pod directive '$1' in " - . "paragraph $Paragraph. ignoring.\n" unless $Quiet; - } - } - $Top = 0; - } - else { - next if $Ignore; - next if @Begin_Stack && $Begin_Stack[-1] ne 'html'; - print HTML and next if @Begin_Stack && $Begin_Stack[-1] eq 'html'; - my $text = $_; - - # Open tag for definition list as we have something to put in it - if( $ListNewTerm ){ - print HTML "<dd>\n"; - $ListNewTerm = 0; - } - - if( $text =~ /\A\s+/ ){ - process_pre( \$text ); - print HTML "<pre>\n$text</pre>\n"; - - } else { - process_text( \$text ); - - # experimental: check for a paragraph where all lines - # have some ...\t...\t...\n pattern - if( $text =~ /\t/ ){ - my @lines = split( "\n", $text ); - if( @lines > 1 ){ - my $all = 2; - foreach my $line ( @lines ){ - if( $line =~ /\S/ && $line !~ /\t/ ){ - $all--; - last if $all == 0; - } - } - if( $all > 0 ){ - $text =~ s/\t+/<td>/g; - $text =~ s/^/<tr><td>/gm; - $text = '<table cellspacing="0" cellpadding="0">' . - $text . '</table>'; - } - } - } - ## end of experimental - - print HTML "<p>$text</p>\n"; - } - $after_item = 0; - } - } - - # finish off any pending directives - finish_list(); - - # link to page index - print HTML "<p><a href=\"#__index__\"><small>$Backlink</small></a></p>\n" - if $Doindex and $index and $Backlink; - - print HTML <<END_OF_TAIL; -$block -</body> - -</html> -END_OF_TAIL - - # close the html file - close(HTML); - - warn "Finished\n" if $Verbose; -} - -############################################################################## - -sub usage { - my $podfile = shift; - warn "$0: $podfile: @_\n" if @_; - die <<END_OF_USAGE; -Usage: $0 --help --htmlroot=<name> --infile=<name> --outfile=<name> - --podpath=<name>:...:<name> --podroot=<name> - --libpods=<name>:...:<name> --recurse --verbose --index - --netscape --norecurse --noindex --cachedir=<name> - - --backlink - set text for "back to top" links (default: none). - --cachedir - directory for the item and directory cache files. - --css - stylesheet URL - --flush - flushes the item and directory caches. - --[no]header - produce block header/footer (default is no headers). - --help - prints this message. - --hiddendirs - search hidden directories in podpath - --htmldir - directory for resulting HTML files. - --htmlroot - http-server base directory from which all relative paths - in podpath stem (default is /). - --[no]index - generate an index at the top of the resulting html - (default behaviour). - --infile - filename for the pod to convert (input taken from stdin - by default). - --libpods - colon-separated list of pages to search for =item pod - directives in as targets of C<> and implicit links (empty - by default). note, these are not filenames, but rather - page names like those that appear in L<> links. - --outfile - filename for the resulting html file (output sent to - stdout by default). - --podpath - colon-separated list of directories containing library - pods (empty by default). - --podroot - filesystem base directory from which all relative paths - in podpath stem (default is .). - --[no]quiet - suppress some benign warning messages (default is off). - --[no]recurse - recurse on those subdirectories listed in podpath - (default behaviour). - --title - title that will appear in resulting html file. - --[no]verbose - self-explanatory (off by default). - --[no]netscape - deprecated, has no effect. for backwards compatibility only. - -END_OF_USAGE - -} - -sub parse_command_line { - my ($opt_backlink,$opt_cachedir,$opt_css,$opt_flush,$opt_header,$opt_help, - $opt_htmldir,$opt_htmlroot,$opt_index,$opt_infile,$opt_libpods, - $opt_netscape,$opt_outfile,$opt_podpath,$opt_podroot,$opt_quiet, - $opt_recurse,$opt_title,$opt_verbose,$opt_hiddendirs); - - unshift @ARGV, split ' ', $Config{pod2html} if $Config{pod2html}; - my $result = GetOptions( - 'backlink=s' => \$opt_backlink, - 'cachedir=s' => \$opt_cachedir, - 'css=s' => \$opt_css, - 'flush' => \$opt_flush, - 'header!' => \$opt_header, - 'help' => \$opt_help, - 'hiddendirs!'=> \$opt_hiddendirs, - 'htmldir=s' => \$opt_htmldir, - 'htmlroot=s' => \$opt_htmlroot, - 'index!' => \$opt_index, - 'infile=s' => \$opt_infile, - 'libpods=s' => \$opt_libpods, - 'netscape!' => \$opt_netscape, - 'outfile=s' => \$opt_outfile, - 'podpath=s' => \$opt_podpath, - 'podroot=s' => \$opt_podroot, - 'quiet!' => \$opt_quiet, - 'recurse!' => \$opt_recurse, - 'title=s' => \$opt_title, - 'verbose!' => \$opt_verbose, - ); - usage("-", "invalid parameters") if not $result; - - usage("-") if defined $opt_help; # see if the user asked for help - $opt_help = ""; # just to make -w shut-up. - - @Podpath = split(":", $opt_podpath) if defined $opt_podpath; - @Libpods = split(":", $opt_libpods) if defined $opt_libpods; - - $Backlink = $opt_backlink if defined $opt_backlink; - $Cachedir = $opt_cachedir if defined $opt_cachedir; - $Css = $opt_css if defined $opt_css; - $Header = $opt_header if defined $opt_header; - $Htmldir = $opt_htmldir if defined $opt_htmldir; - $Htmlroot = $opt_htmlroot if defined $opt_htmlroot; - $Doindex = $opt_index if defined $opt_index; - $Podfile = $opt_infile if defined $opt_infile; - $HiddenDirs = $opt_hiddendirs if defined $opt_hiddendirs; - $Htmlfile = $opt_outfile if defined $opt_outfile; - $Podroot = $opt_podroot if defined $opt_podroot; - $Quiet = $opt_quiet if defined $opt_quiet; - $Recurse = $opt_recurse if defined $opt_recurse; - $Title = $opt_title if defined $opt_title; - $Verbose = $opt_verbose if defined $opt_verbose; - - warn "Flushing item and directory caches\n" - if $opt_verbose && defined $opt_flush; - $Dircache = "$Cachedir/pod2htmd.tmp"; - $Itemcache = "$Cachedir/pod2htmi.tmp"; - if (defined $opt_flush) { - 1 while unlink($Dircache, $Itemcache); - } -} - - -my $Saved_Cache_Key; - -sub get_cache { - my($dircache, $itemcache, $podpath, $podroot, $recurse) = @_; - my @cache_key_args = @_; - - # A first-level cache: - # Don't bother reading the cache files if they still apply - # and haven't changed since we last read them. - - my $this_cache_key = cache_key(@cache_key_args); - - return if $Saved_Cache_Key and $this_cache_key eq $Saved_Cache_Key; - - # load the cache of %Pages and %Items if possible. $tests will be - # non-zero if successful. - my $tests = 0; - if (-f $dircache && -f $itemcache) { - warn "scanning for item cache\n" if $Verbose; - $tests = load_cache($dircache, $itemcache, $podpath, $podroot); - } - - # if we didn't succeed in loading the cache then we must (re)build - # %Pages and %Items. - if (!$tests) { - warn "scanning directories in pod-path\n" if $Verbose; - scan_podpath($podroot, $recurse, 0); - } - $Saved_Cache_Key = cache_key(@cache_key_args); -} - -sub cache_key { - my($dircache, $itemcache, $podpath, $podroot, $recurse) = @_; - return join('!', $dircache, $itemcache, $recurse, - @$podpath, $podroot, stat($dircache), stat($itemcache)); -} - -# -# load_cache - tries to find if the caches stored in $dircache and $itemcache -# are valid caches of %Pages and %Items. if they are valid then it loads -# them and returns a non-zero value. -# -sub load_cache { - my($dircache, $itemcache, $podpath, $podroot) = @_; - my($tests); - local $_; - - $tests = 0; - - open(CACHE, "<$itemcache") || - die "$0: error opening $itemcache for reading: $!\n"; - $/ = "\n"; - - # is it the same podpath? - $_ = <CACHE>; - chomp($_); - $tests++ if (join(":", @$podpath) eq $_); - - # is it the same podroot? - $_ = <CACHE>; - chomp($_); - $tests++ if ($podroot eq $_); - - # load the cache if its good - if ($tests != 2) { - close(CACHE); - return 0; - } - - warn "loading item cache\n" if $Verbose; - while (<CACHE>) { - /(.*?) (.*)$/; - $Items{$1} = $2; - } - close(CACHE); - - warn "scanning for directory cache\n" if $Verbose; - open(CACHE, "<$dircache") || - die "$0: error opening $dircache for reading: $!\n"; - $/ = "\n"; - $tests = 0; - - # is it the same podpath? - $_ = <CACHE>; - chomp($_); - $tests++ if (join(":", @$podpath) eq $_); - - # is it the same podroot? - $_ = <CACHE>; - chomp($_); - $tests++ if ($podroot eq $_); - - # load the cache if its good - if ($tests != 2) { - close(CACHE); - return 0; - } - - warn "loading directory cache\n" if $Verbose; - while (<CACHE>) { - /(.*?) (.*)$/; - $Pages{$1} = $2; - } - - close(CACHE); - - return 1; -} - -# -# scan_podpath - scans the directories specified in @podpath for directories, -# .pod files, and .pm files. it also scans the pod files specified in -# @Libpods for =item directives. -# -sub scan_podpath { - my($podroot, $recurse, $append) = @_; - my($pwd, $dir); - my($libpod, $dirname, $pod, @files, @poddata); - - unless($append) { - %Items = (); - %Pages = (); - } - - # scan each directory listed in @Podpath - $pwd = getcwd(); - chdir($podroot) - || die "$0: error changing to directory $podroot: $!\n"; - foreach $dir (@Podpath) { - scan_dir($dir, $recurse); - } - - # scan the pods listed in @Libpods for =item directives - foreach $libpod (@Libpods) { - # if the page isn't defined then we won't know where to find it - # on the system. - next unless defined $Pages{$libpod} && $Pages{$libpod}; - - # if there is a directory then use the .pod and .pm files within it. - # NOTE: Only finds the first so-named directory in the tree. -# if ($Pages{$libpod} =~ /([^:]*[^(\.pod|\.pm)]):/) { - if ($Pages{$libpod} =~ /([^:]*(?<!\.pod)(?<!\.pm)):/) { - # find all the .pod and .pm files within the directory - $dirname = $1; - opendir(DIR, $dirname) || - die "$0: error opening directory $dirname: $!\n"; - @files = grep(/(\.pod|\.pm)\z/ && ! -d $_, readdir(DIR)); - closedir(DIR); - - # scan each .pod and .pm file for =item directives - foreach $pod (@files) { - open(POD, "<$dirname/$pod") || - die "$0: error opening $dirname/$pod for input: $!\n"; - @poddata = <POD>; - close(POD); - clean_data( \@poddata ); - - scan_items( \%Items, "$dirname/$pod", @poddata); - } - - # use the names of files as =item directives too. -### Don't think this should be done this way - confuses issues.(WL) -### foreach $pod (@files) { -### $pod =~ /^(.*)(\.pod|\.pm)$/; -### $Items{$1} = "$dirname/$1.html" if $1; -### } - } elsif ($Pages{$libpod} =~ /([^:]*\.pod):/ || - $Pages{$libpod} =~ /([^:]*\.pm):/) { - # scan the .pod or .pm file for =item directives - $pod = $1; - open(POD, "<$pod") || - die "$0: error opening $pod for input: $!\n"; - @poddata = <POD>; - close(POD); - clean_data( \@poddata ); - - scan_items( \%Items, "$pod", @poddata); - } else { - warn "$0: shouldn't be here (line ".__LINE__."\n" unless $Quiet; - } - } - @poddata = (); # clean-up a bit - - chdir($pwd) - || die "$0: error changing to directory $pwd: $!\n"; - - # cache the item list for later use - warn "caching items for later use\n" if $Verbose; - open(CACHE, ">$Itemcache") || - die "$0: error open $Itemcache for writing: $!\n"; - - print CACHE join(":", @Podpath) . "\n$podroot\n"; - foreach my $key (keys %Items) { - print CACHE "$key $Items{$key}\n"; - } - - close(CACHE); - - # cache the directory list for later use - warn "caching directories for later use\n" if $Verbose; - open(CACHE, ">$Dircache") || - die "$0: error open $Dircache for writing: $!\n"; - - print CACHE join(":", @Podpath) . "\n$podroot\n"; - foreach my $key (keys %Pages) { - print CACHE "$key $Pages{$key}\n"; - } - - close(CACHE); -} - -# -# scan_dir - scans the directory specified in $dir for subdirectories, .pod -# files, and .pm files. notes those that it finds. this information will -# be used later in order to figure out where the pages specified in L<> -# links are on the filesystem. -# -sub scan_dir { - my($dir, $recurse) = @_; - my($t, @subdirs, @pods, $pod, $dirname, @dirs); - local $_; - - @subdirs = (); - @pods = (); - - opendir(DIR, $dir) || - die "$0: error opening directory $dir: $!\n"; - while (defined($_ = readdir(DIR))) { - if (-d "$dir/$_" && $_ ne "." && $_ ne ".." - && ($HiddenDirs || !/^\./) - ) { # directory - $Pages{$_} = "" unless defined $Pages{$_}; - $Pages{$_} .= "$dir/$_:"; - push(@subdirs, $_); - } elsif (/\.pod\z/) { # .pod - s/\.pod\z//; - $Pages{$_} = "" unless defined $Pages{$_}; - $Pages{$_} .= "$dir/$_.pod:"; - push(@pods, "$dir/$_.pod"); - } elsif (/\.html\z/) { # .html - s/\.html\z//; - $Pages{$_} = "" unless defined $Pages{$_}; - $Pages{$_} .= "$dir/$_.pod:"; - } elsif (/\.pm\z/) { # .pm - s/\.pm\z//; - $Pages{$_} = "" unless defined $Pages{$_}; - $Pages{$_} .= "$dir/$_.pm:"; - push(@pods, "$dir/$_.pm"); - } elsif (-T "$dir/$_") { # script(?) - local *F; - if (open(F, "$dir/$_")) { - my $line; - while (defined($line = <F>)) { - if ($line =~ /^=(?:pod|head1)/) { - $Pages{$_} = "" unless defined $Pages{$_}; - $Pages{$_} .= "$dir/$_.pod:"; - last; - } - } - close(F); - } - } - } - closedir(DIR); - - # recurse on the subdirectories if necessary - if ($recurse) { - foreach my $subdir (@subdirs) { - scan_dir("$dir/$subdir", $recurse); - } - } -} - -# -# scan_headings - scan a pod file for head[1-6] tags, note the tags, and -# build an index. -# -sub scan_headings { - my($sections, @data) = @_; - my($tag, $which_head, $otitle, $listdepth, $index); - - local $Ignore = 0; - - $listdepth = 0; - $index = ""; - - # scan for =head directives, note their name, and build an index - # pointing to each of them. - foreach my $line (@data) { - if ($line =~ /^=(head)([1-6])\s+(.*)/) { - ($tag, $which_head, $otitle) = ($1,$2,$3); - - my $title = depod( $otitle ); - my $name = anchorify( $title ); - $$sections{$name} = 1; - $title = process_text( \$otitle ); - - while ($which_head != $listdepth) { - if ($which_head > $listdepth) { - $index .= "\n" . ("\t" x $listdepth) . "<ul>\n"; - $listdepth++; - } elsif ($which_head < $listdepth) { - $listdepth--; - $index .= "\n" . ("\t" x $listdepth) . "</ul>\n"; - } - } - - $index .= "\n" . ("\t" x $listdepth) . "<li>" . - "<a href=\"#" . $name . "\">" . - $title . "</a></li>"; - } - } - - # finish off the lists - while ($listdepth--) { - $index .= "\n" . ("\t" x $listdepth) . "</ul>\n"; - } - - # get rid of bogus lists - $index =~ s,\t*<ul>\s*</ul>\n,,g; - - return $index; -} - -# -# scan_items - scans the pod specified by $pod for =item directives. we -# will use this information later on in resolving C<> links. -# -sub scan_items { - my( $itemref, $pod, @poddata ) = @_; - my($i, $item); - local $_; - - $pod =~ s/\.pod\z//; - $pod .= ".html" if $pod; - - foreach $i (0..$#poddata) { - my $txt = depod( $poddata[$i] ); - - # figure out what kind of item it is. - # Build string for referencing this item. - if ( $txt =~ /\A=item\s+\*\s*(.*)\Z/s ) { # bulleted list - next unless $1; - $item = $1; - } elsif( $txt =~ /\A=item\s+(?>\d+\.?)\s*(.*)\Z/s ) { # numbered list - $item = $1; - } elsif( $txt =~ /\A=item\s+(.*)\Z/s ) { # definition list - $item = $1; - } else { - next; - } - my $fid = fragment_id( $item ); - $$itemref{$fid} = "$pod" if $fid; - } -} - -# -# process_head - convert a pod head[1-6] tag and convert it to HTML format. -# -sub process_head { - my($tag, $heading, $hasindex) = @_; - - # figure out the level of the =head - $tag =~ /head([1-6])/; - my $level = $1; - - finish_list(); - - print HTML "<p>\n"; - if( $level == 1 && ! $Top ){ - print HTML "<a href=\"#__index__\"><small>$Backlink</small></a>\n" - if $hasindex and $Backlink; - print HTML "</p>\n<hr />\n" - } else { - print HTML "</p>\n"; - } - - my $name = anchorify( depod( $heading ) ); - my $convert = process_text( \$heading ); - print HTML "<h$level><a name=\"$name\">$convert</a></h$level>\n"; -} - - -# -# emit_item_tag - print an =item's text -# Note: The global $EmittedItem is used for inhibiting self-references. -# -my $EmittedItem; - -sub emit_item_tag($$$){ - my( $otext, $text, $compact ) = @_; - my $item = fragment_id( $text ); - - $EmittedItem = $item; - ### print STDERR "emit_item_tag=$item ($text)\n"; - - print HTML '<strong>'; - if ($Items_Named{$item}++) { - print HTML process_text( \$otext ); - } else { - my $name = 'item_' . $item; - $name = anchorify($name); - print HTML qq{<a name="$name">}, process_text( \$otext ), '</a>'; - } - print HTML "</strong>"; - undef( $EmittedItem ); -} - -sub new_listitem { - my( $tag ) = @_; - # Open tag for definition list as we have something to put in it - if( ($tag ne 'dl') && ($ListNewTerm) ){ - print HTML "<dd>\n"; - $ListNewTerm = 0; - } - - if( $Items_Seen[$Listlevel]++ == 0 ){ - # start of new list - push( @Listtype, "$tag" ); - print HTML "<$tag>\n"; - } else { - # if this is not the first item, close the previous one - if ( $tag eq 'dl' ){ - print HTML "</dd>\n" unless $ListNewTerm; - } else { - print HTML "</li>\n"; - } - } - my $opentag = $tag eq 'dl' ? 'dt' : 'li'; - print HTML "<$opentag>"; -} - -# -# process_item - convert a pod item tag and convert it to HTML format. -# -sub process_item { - my( $otext ) = @_; - - # lots of documents start a list without doing an =over. this is - # bad! but, the proper thing to do seems to be to just assume - # they did do an =over. so warn them once and then continue. - if( $Listlevel == 0 ){ - warn "$0: $Podfile: unexpected =item directive in paragraph $Paragraph. ignoring.\n" unless $Quiet; - process_over(); - } - - # remove formatting instructions from the text - my $text = depod( $otext ); - - # all the list variants: - if( $text =~ /\A\*/ ){ # bullet - new_listitem( 'ul' ); - if ($text =~ /\A\*\s+(.+)\Z/s ) { # with additional text - my $tag = $1; - $otext =~ s/\A\*\s+//; - emit_item_tag( $otext, $tag, 1 ); - print HTML "\n"; - } - - } elsif( $text =~ /\A\d+/ ){ # numbered list - new_listitem( 'ol' ); - if ($text =~ /\A(?>\d+\.?)\s*(.+)\Z/s ) { # with additional text - my $tag = $1; - $otext =~ s/\A\d+\.?\s*//; - emit_item_tag( $otext, $tag, 1 ); - print HTML "\n"; - } - - } else { # definition list - # new_listitem takes care of opening the <dt> tag - new_listitem( 'dl' ); - if( $text =~ /\A(.+)\Z/s ){ # should have text - emit_item_tag( $otext, $text, 1 ); - } else { - warn "$0: $Podfile: no term text provided for definition list in paragraph $Paragraph. ignoring.\n" unless $Quiet; - } - # write the definition term and close <dt> tag - print HTML "</dt>\n"; - # trigger opening a <dd> tag for the actual definition; will not - # happen if next paragraph is also a definition term (=item) - $ListNewTerm = 1; - } - print HTML "\n"; -} - -# -# process_over - process a pod over tag and start a corresponding HTML list. -# -sub process_over { - # start a new list - $Listlevel++; - push( @Items_Seen, 0 ); -} - -# -# process_back - process a pod back tag and convert it to HTML format. -# -sub process_back { - if( $Listlevel == 0 ){ - warn "$0: $Podfile: unexpected =back directive in paragraph $Paragraph. ignoring.\n" unless $Quiet; - return; - } - - # close off the list. note, I check to see if $Listtype[$Listlevel] is - # defined because an =item directive may have never appeared and thus - # $Listtype[$Listlevel] may have never been initialized. - $Listlevel--; - if( defined $Listtype[$Listlevel] ){ - if ( $Listtype[$Listlevel] eq 'dl' ){ - print HTML "</dd>\n" unless $ListNewTerm; - } else { - print HTML "</li>\n"; - } - print HTML "</$Listtype[$Listlevel]>\n"; - pop( @Listtype ); - $ListNewTerm = 0; - } - - # clean up item count - pop( @Items_Seen ); -} - -# -# process_cut - process a pod cut tag, thus start ignoring pod directives. -# -sub process_cut { - $Ignore = 1; -} - -# -# process_pod - process a pod tag, thus stop ignoring pod directives -# until we see a corresponding cut. -# -sub process_pod { - # no need to set $Ignore to 0 cause the main loop did it -} - -# -# process_for - process a =for pod tag. if it's for html, spit -# it out verbatim, if illustration, center it, otherwise ignore it. -# -sub process_for { - my($whom, $text) = @_; - if ( $whom =~ /^(pod2)?html$/i) { - print HTML $text; - } elsif ($whom =~ /^illustration$/i) { - 1 while chomp $text; - for my $ext (qw[.png .gif .jpeg .jpg .tga .pcl .bmp]) { - $text .= $ext, last if -r "$text$ext"; - } - print HTML qq{<p align="center"><img src="$text" alt="$text illustration" /></p>}; - } -} - -# -# process_begin - process a =begin pod tag. this pushes -# whom we're beginning on the begin stack. if there's a -# begin stack, we only print if it us. -# -sub process_begin { - my($whom, $text) = @_; - $whom = lc($whom); - push (@Begin_Stack, $whom); - if ( $whom =~ /^(pod2)?html$/) { - print HTML $text if $text; - } -} - -# -# process_end - process a =end pod tag. pop the -# begin stack. die if we're mismatched. -# -sub process_end { - my($whom, $text) = @_; - $whom = lc($whom); - if ($Begin_Stack[-1] ne $whom ) { - die "Unmatched begin/end at chunk $Paragraph\n" - } - pop( @Begin_Stack ); -} - -# -# process_pre - indented paragraph, made into <pre></pre> -# -sub process_pre { - my( $text ) = @_; - my( $rest ); - return if $Ignore; - - $rest = $$text; - - # insert spaces in place of tabs - $rest =~ s#(.+)# - my $line = $1; - 1 while $line =~ s/(\t+)/' ' x ((length($1) * 8) - $-[0] % 8)/e; - $line; - #eg; - - # convert some special chars to HTML escapes - $rest = html_escape($rest); - - # try and create links for all occurrences of perl.* within - # the preformatted text. - $rest =~ s{ - (\s*)(perl\w+) - }{ - if ( defined $Pages{$2} ){ # is a link - qq($1<a href="$Htmlroot/$Pages{$2}">$2</a>); - } elsif (defined $Pages{dosify($2)}) { # is a link - qq($1<a href="$Htmlroot/$Pages{dosify($2)}">$2</a>); - } else { - "$1$2"; - } - }xeg; - $rest =~ s{ - (<a\ href="?) ([^>:]*:)? ([^>:]*) \.pod: ([^>:]*:)? - }{ - my $url ; - if ( $Htmlfileurl ne '' ){ - # Here, we take advantage of the knowledge - # that $Htmlfileurl ne '' implies $Htmlroot eq ''. - # Since $Htmlroot eq '', we need to prepend $Htmldir - # on the fron of the link to get the absolute path - # of the link's target. We check for a leading '/' - # to avoid corrupting links that are #, file:, etc. - my $old_url = $3 ; - $old_url = "$Htmldir$old_url" if $old_url =~ m{^\/}; - $url = relativize_url( "$old_url.html", $Htmlfileurl ); - } else { - $url = "$3.html" ; - } - "$1$url" ; - }xeg; - - # Look for embedded URLs and make them into links. We don't - # relativize them since they are best left as the author intended. - - my $urls = '(' . join ('|', qw{ - http - telnet - mailto - news - gopher - file - wais - ftp - } ) - . ')'; - - my $ltrs = '\w'; - my $gunk = '/#~:.?+=&%@!\-'; - my $punc = '.:!?\-;'; - my $any = "${ltrs}${gunk}${punc}"; - - $rest =~ s{ - \b # start at word boundary - ( # begin $1 { - $urls : # need resource and a colon - (?!:) # Ignore File::, among others. - [$any] +? # followed by one or more of any valid - # character, but be conservative and - # take only what you need to.... - ) # end $1 } - (?= - " > # maybe pre-quoted '<a href="...">' - | # or: - [$punc]* # 0 or more punctuation - (?: # followed - [^$any] # by a non-url char - | # or - $ # end of the string - ) # - | # or else - $ # then end of the string - ) - }{<a href="$1">$1</a>}igox; - - # text should be as it is (verbatim) - $$text = $rest; -} - - -# -# pure text processing -# -# pure_text/inIS_text: differ with respect to automatic C<> recognition. -# we don't want this to happen within IS -# -sub pure_text($){ - my $text = shift(); - process_puretext( $text, \$PTQuote, 1 ); -} - -sub inIS_text($){ - my $text = shift(); - process_puretext( $text, \$PTQuote, 0 ); -} - -# -# process_puretext - process pure text (without pod-escapes) converting -# double-quotes and handling implicit C<> links. -# -sub process_puretext { - my($text, $quote, $notinIS) = @_; - - ## Guessing at func() or [\$\@%&]*var references in plain text is destined - ## to produce some strange looking ref's. uncomment to disable: - ## $notinIS = 0; - - my(@words, $lead, $trail); - - # convert double-quotes to single-quotes - if( $$quote && $text =~ s/"/''/s ){ - $$quote = 0; - } - while ($text =~ s/"([^"]*)"/``$1''/sg) {}; - $$quote = 1 if $text =~ s/"/``/s; - - # keep track of leading and trailing white-space - $lead = ($text =~ s/\A(\s+)//s ? $1 : ""); - $trail = ($text =~ s/(\s+)\Z//s ? $1 : ""); - - # split at space/non-space boundaries - @words = split( /(?<=\s)(?=\S)|(?<=\S)(?=\s)/, $text ); - - # process each word individually - foreach my $word (@words) { - # skip space runs - next if $word =~ /^\s*$/; - # see if we can infer a link - if( $notinIS && $word =~ /^(\w+)\((.*)\)$/ ) { - # has parenthesis so should have been a C<> ref - ## try for a pagename (perlXXX(1))? - my( $func, $args ) = ( $1, $2 ); - if( $args =~ /^\d+$/ ){ - my $url = page_sect( $word, '' ); - if( defined $url ){ - $word = "<a href=\"$url\">the $word manpage</a>"; - next; - } - } - ## try function name for a link, append tt'ed argument list - $word = emit_C( $func, '', "($args)"); - -#### disabled. either all (including $\W, $\w+{.*} etc.) or nothing. -## } elsif( $notinIS && $word =~ /^[\$\@%&*]+\w+$/) { -## # perl variables, should be a C<> ref -## $word = emit_C( $word ); - - } elsif ($word =~ m,^\w+://\w,) { - # looks like a URL - # Don't relativize it: leave it as the author intended - $word = qq(<a href="$word">$word</a>); - } elsif ($word =~ /[\w.-]+\@[\w-]+\.\w/) { - # looks like an e-mail address - my ($w1, $w2, $w3) = ("", $word, ""); - ($w1, $w2, $w3) = ("(", $1, ")$2") if $word =~ /^\((.*?)\)(,?)/; - ($w1, $w2, $w3) = ("<", $1, ">$2") if $word =~ /^<(.*?)>(,?)/; - $word = qq($w1<a href="mailto:$w2">$w2</a>$w3); - } else { - $word = html_escape($word) if $word =~ /["&<>]/; - } - } - - # put everything back together - return $lead . join( '', @words ) . $trail; -} - - -# -# process_text - handles plaintext that appears in the input pod file. -# there may be pod commands embedded within the text so those must be -# converted to html commands. -# - -sub process_text1($$;$$); -sub pattern ($) { $_[0] ? '[^\S\n]+'.('>' x ($_[0] + 1)) : '>' } -sub closing ($) { local($_) = shift; (defined && s/\s+$//) ? length : 0 } - -sub process_text { - return if $Ignore; - my( $tref ) = @_; - my $res = process_text1( 0, $tref ); - $$tref = $res; -} - -sub process_text1($$;$$){ - my( $lev, $rstr, $func, $closing ) = @_; - my $res = ''; - - unless (defined $func) { - $func = ''; - $lev++; - } - - if( $func eq 'B' ){ - # B<text> - boldface - $res = '<strong>' . process_text1( $lev, $rstr ) . '</strong>'; - - } elsif( $func eq 'C' ){ - # C<code> - can be a ref or <code></code> - # need to extract text - my $par = go_ahead( $rstr, 'C', $closing ); - - ## clean-up of the link target - my $text = depod( $par ); - - ### my $x = $par =~ /[BI]</ ? 'yes' : 'no' ; - ### print STDERR "-->call emit_C($par) lev=$lev, par with BI=$x\n"; - - $res = emit_C( $text, $lev > 1 || ($par =~ /[BI]</) ); - - } elsif( $func eq 'E' ){ - # E<x> - convert to character - $$rstr =~ s/^([^>]*)>//; - my $escape = $1; - $escape =~ s/^(\d+|X[\dA-F]+)$/#$1/i; - $res = "&$escape;"; - - } elsif( $func eq 'F' ){ - # F<filename> - italizice - $res = '<em>' . process_text1( $lev, $rstr ) . '</em>'; - - } elsif( $func eq 'I' ){ - # I<text> - italizice - $res = '<em>' . process_text1( $lev, $rstr ) . '</em>'; - - } elsif( $func eq 'L' ){ - # L<link> - link - ## L<text|cross-ref> => produce text, use cross-ref for linking - ## L<cross-ref> => make text from cross-ref - ## need to extract text - my $par = go_ahead( $rstr, 'L', $closing ); - - # some L<>'s that shouldn't be: - # a) full-blown URL's are emitted as-is - if( $par =~ m{^\w+://}s ){ - return make_URL_href( $par ); - } - # b) C<...> is stripped and treated as C<> - if( $par =~ /^C<(.*)>$/ ){ - my $text = depod( $1 ); - return emit_C( $text, $lev > 1 || ($par =~ /[BI]</) ); - } - - # analyze the contents - $par =~ s/\n/ /g; # undo word-wrapped tags - my $opar = $par; - my $linktext; - if( $par =~ s{^([^|]+)\|}{} ){ - $linktext = $1; - } - - # make sure sections start with a / - $par =~ s{^"}{/"}; - - my( $page, $section, $ident ); - - # check for link patterns - if( $par =~ m{^([^/]+?)/(?!")(.*?)$} ){ # name/ident - # we've got a name/ident (no quotes) - ( $page, $ident ) = ( $1, $2 ); - ### print STDERR "--> L<$par> to page $page, ident $ident\n"; - - } elsif( $par =~ m{^(.*?)/"?(.*?)"?$} ){ # [name]/"section" - # even though this should be a "section", we go for ident first - ( $page, $ident ) = ( $1, $2 ); - ### print STDERR "--> L<$par> to page $page, section $section\n"; - - } elsif( $par =~ /\s/ ){ # this must be a section with missing quotes - ( $page, $section ) = ( '', $par ); - ### print STDERR "--> L<$par> to void page, section $section\n"; - - } else { - ( $page, $section ) = ( $par, '' ); - ### print STDERR "--> L<$par> to page $par, void section\n"; - } - - # now, either $section or $ident is defined. the convoluted logic - # below tries to resolve L<> according to what the user specified. - # failing this, we try to find the next best thing... - my( $url, $ltext, $fid ); - - RESOLVE: { - if( defined $ident ){ - ## try to resolve $ident as an item - ( $url, $fid ) = coderef( $page, $ident ); - if( $url ){ - if( ! defined( $linktext ) ){ - $linktext = $ident; - $linktext .= " in " if $ident && $page; - $linktext .= "the $page manpage" if $page; - } - ### print STDERR "got coderef url=$url\n"; - last RESOLVE; - } - ## no luck: go for a section (auto-quoting!) - $section = $ident; - } - ## now go for a section - my $htmlsection = htmlify( $section ); - $url = page_sect( $page, $htmlsection ); - if( $url ){ - if( ! defined( $linktext ) ){ - $linktext = $section; - $linktext .= " in " if $section && $page; - $linktext .= "the $page manpage" if $page; - } - ### print STDERR "got page/section url=$url\n"; - last RESOLVE; - } - ## no luck: go for an ident - if( $section ){ - $ident = $section; - } else { - $ident = $page; - $page = undef(); - } - ( $url, $fid ) = coderef( $page, $ident ); - if( $url ){ - if( ! defined( $linktext ) ){ - $linktext = $ident; - $linktext .= " in " if $ident && $page; - $linktext .= "the $page manpage" if $page; - } - ### print STDERR "got section=>coderef url=$url\n"; - last RESOLVE; - } - - # warning; show some text. - $linktext = $opar unless defined $linktext; - warn "$0: $Podfile: cannot resolve L<$opar> in paragraph $Paragraph.\n" unless $Quiet; - } - - # now we have a URL or just plain code - $$rstr = $linktext . '>' . $$rstr; - if( defined( $url ) ){ - $res = "<a href=\"$url\">" . process_text1( $lev, $rstr ) . '</a>'; - } else { - $res = '<em>' . process_text1( $lev, $rstr ) . '</em>'; - } - - } elsif( $func eq 'S' ){ - # S<text> - non-breaking spaces - $res = process_text1( $lev, $rstr ); - $res =~ s/ / /g; - - } elsif( $func eq 'X' ){ - # X<> - ignore - $$rstr =~ s/^[^>]*>//; - - } elsif( $func eq 'Z' ){ - # Z<> - empty - warn "$0: $Podfile: invalid X<> in paragraph $Paragraph.\n" - unless $$rstr =~ s/^>// or $Quiet; - - } else { - my $term = pattern $closing; - while( $$rstr =~ s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|$term)//s ){ - # all others: either recurse into new function or - # terminate at closing angle bracket(s) - my $pt = $1; - $pt .= $2 if !$3 && $lev == 1; - $res .= $lev == 1 ? pure_text( $pt ) : inIS_text( $pt ); - return $res if !$3 && $lev > 1; - if( $3 ){ - $res .= process_text1( $lev, $rstr, $3, closing $4 ); - } - } - if( $lev == 1 ){ - $res .= pure_text( $$rstr ); - } else { - warn "$0: $Podfile: undelimited $func<> in paragraph $Paragraph.\n" unless $Quiet; - } - } - return $res; -} - -# -# go_ahead: extract text of an IS (can be nested) -# -sub go_ahead($$$){ - my( $rstr, $func, $closing ) = @_; - my $res = ''; - my @closing = ($closing); - while( $$rstr =~ - s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|@{[pattern $closing[0]]})//s ){ - $res .= $1; - unless( $3 ){ - shift @closing; - return $res unless @closing; - } else { - unshift @closing, closing $4; - } - $res .= $2; - } - warn "$0: $Podfile: undelimited $func<> in paragraph $Paragraph.\n" unless $Quiet; - return $res; -} - -# -# emit_C - output result of C<text> -# $text is the depod-ed text -# -sub emit_C($;$$){ - my( $text, $nocode, $args ) = @_; - $args = '' unless defined $args; - my $res; - my( $url, $fid ) = coderef( undef(), $text ); - - # need HTML-safe text - my $linktext = html_escape( "$text$args" ); - - if( defined( $url ) && - (!defined( $EmittedItem ) || $EmittedItem ne $fid ) ){ - $res = "<a href=\"$url\"><code>$linktext</code></a>"; - } elsif( 0 && $nocode ){ - $res = $linktext; - } else { - $res = "<code>$linktext</code>"; - } - return $res; -} - -# -# html_escape: make text safe for HTML -# -sub html_escape { - my $rest = $_[0]; - $rest =~ s/&/&/g; - $rest =~ s/</</g; - $rest =~ s/>/>/g; - $rest =~ s/"/"/g; - # ' is only in XHTML, not HTML4. Be conservative - #$rest =~ s/'/'/g; - return $rest; -} - - -# -# dosify - convert filenames to 8.3 -# -sub dosify { - my($str) = @_; - return lc($str) if $^O eq 'VMS'; # VMS just needs casing - if ($Is83) { - $str = lc $str; - $str =~ s/(\.\w+)/substr ($1,0,4)/ge; - $str =~ s/(\w+)/substr ($1,0,8)/ge; - } - return $str; -} - -# -# page_sect - make a URL from the text of a L<> -# -sub page_sect($$) { - my( $page, $section ) = @_; - my( $linktext, $page83, $link); # work strings - - # check if we know that this is a section in this page - if (!defined $Pages{$page} && defined $Sections{$page}) { - $section = $page; - $page = ""; - ### print STDERR "reset page='', section=$section\n"; - } - - $page83=dosify($page); - $page=$page83 if (defined $Pages{$page83}); - if ($page eq "") { - $link = "#" . anchorify( $section ); - } elsif ( $page =~ /::/ ) { - $page =~ s,::,/,g; - # Search page cache for an entry keyed under the html page name, - # then look to see what directory that page might be in. NOTE: - # this will only find one page. A better solution might be to produce - # an intermediate page that is an index to all such pages. - my $page_name = $page ; - $page_name =~ s,^.*/,,s ; - if ( defined( $Pages{ $page_name } ) && - $Pages{ $page_name } =~ /([^:]*$page)\.(?:pod|pm):/ - ) { - $page = $1 ; - } - else { - # NOTE: This branch assumes that all A::B pages are located in - # $Htmlroot/A/B.html . This is often incorrect, since they are - # often in $Htmlroot/lib/A/B.html or such like. Perhaps we could - # analyze the contents of %Pages and figure out where any - # cousins of A::B are, then assume that. So, if A::B isn't found, - # but A::C is found in lib/A/C.pm, then A::B is assumed to be in - # lib/A/B.pm. This is also limited, but it's an improvement. - # Maybe a hints file so that the links point to the correct places - # nonetheless? - - } - $link = "$Htmlroot/$page.html"; - $link .= "#" . anchorify( $section ) if ($section); - } elsif (!defined $Pages{$page}) { - $link = ""; - } else { - $section = anchorify( $section ) if $section ne ""; - ### print STDERR "...section=$section\n"; - - # if there is a directory by the name of the page, then assume that an - # appropriate section will exist in the subdirectory -# if ($section ne "" && $Pages{$page} =~ /([^:]*[^(\.pod|\.pm)]):/) { - if ($section ne "" && $Pages{$page} =~ /([^:]*(?<!\.pod)(?<!\.pm)):/) { - $link = "$Htmlroot/$1/$section.html"; - ### print STDERR "...link=$link\n"; - - # since there is no directory by the name of the page, the section will - # have to exist within a .html of the same name. thus, make sure there - # is a .pod or .pm that might become that .html - } else { - $section = "#$section" if $section; - ### print STDERR "...section=$section\n"; - - # check if there is a .pod with the page name - if ($Pages{$page} =~ /([^:]*)\.pod:/) { - $link = "$Htmlroot/$1.html$section"; - } elsif ($Pages{$page} =~ /([^:]*)\.pm:/) { - $link = "$Htmlroot/$1.html$section"; - } else { - $link = ""; - } - } - } - - if ($link) { - # Here, we take advantage of the knowledge that $Htmlfileurl ne '' - # implies $Htmlroot eq ''. This means that the link in question - # needs a prefix of $Htmldir if it begins with '/'. The test for - # the initial '/' is done to avoid '#'-only links, and to allow - # for other kinds of links, like file:, ftp:, etc. - my $url ; - if ( $Htmlfileurl ne '' ) { - $link = "$Htmldir$link" if $link =~ m{^/}s; - $url = relativize_url( $link, $Htmlfileurl ); -# print( " b: [$link,$Htmlfileurl,$url]\n" ); - } - else { - $url = $link ; - } - return $url; - - } else { - return undef(); - } -} - -# -# relativize_url - convert an absolute URL to one relative to a base URL. -# Assumes both end in a filename. -# -sub relativize_url { - my ($dest,$source) = @_ ; - - my ($dest_volume,$dest_directory,$dest_file) = - File::Spec::Unix->splitpath( $dest ) ; - $dest = File::Spec::Unix->catpath( $dest_volume, $dest_directory, '' ) ; - - my ($source_volume,$source_directory,$source_file) = - File::Spec::Unix->splitpath( $source ) ; - $source = File::Spec::Unix->catpath( $source_volume, $source_directory, '' ) ; - - my $rel_path = '' ; - if ( $dest ne '' ) { - $rel_path = File::Spec::Unix->abs2rel( $dest, $source ) ; - } - - if ( $rel_path ne '' && - substr( $rel_path, -1 ) ne '/' && - substr( $dest_file, 0, 1 ) ne '#' - ) { - $rel_path .= "/$dest_file" ; - } - else { - $rel_path .= "$dest_file" ; - } - - return $rel_path ; -} - - -# -# coderef - make URL from the text of a C<> -# -sub coderef($$){ - my( $page, $item ) = @_; - my( $url ); - - my $fid = fragment_id( $item ); - if( defined( $page ) && $page ne "" ){ - # we have been given a $page... - $page =~ s{::}{/}g; - - # Do we take it? Item could be a section! - my $base = $Items{$fid} || ""; - $base =~ s{[^/]*/}{}; - if( $base ne "$page.html" ){ - ### print STDERR "coderef( $page, $item ): items{$fid} = $Items{$fid} = $base => discard page!\n"; - $page = undef(); - } - - } else { - # no page - local items precede cached items - if( defined( $fid ) ){ - if( exists $Local_Items{$fid} ){ - $page = $Local_Items{$fid}; - } else { - $page = $Items{$fid}; - } - } - } - - # if there was a pod file that we found earlier with an appropriate - # =item directive, then create a link to that page. - if( defined $page ){ - if( $page ){ - if( exists $Pages{$page} and $Pages{$page} =~ /([^:.]*)\.[^:]*:/){ - $page = $1 . '.html'; - } - my $link = "$Htmlroot/$page#item_" . anchorify($fid); - - # Here, we take advantage of the knowledge that $Htmlfileurl - # ne '' implies $Htmlroot eq ''. - if ( $Htmlfileurl ne '' ) { - $link = "$Htmldir$link" ; - $url = relativize_url( $link, $Htmlfileurl ) ; - } else { - $url = $link ; - } - } else { - $url = "#item_" . anchorify($fid); - } - - confess "url has space: $url" if $url =~ /"[^"]*\s[^"]*"/; - } - return( $url, $fid ); -} - - - -# -# Adapted from Nick Ing-Simmons' PodToHtml package. -sub relative_url { - my $source_file = shift ; - my $destination_file = shift; - - my $source = URI::file->new_abs($source_file); - my $uo = URI::file->new($destination_file,$source)->abs; - return $uo->rel->as_string; -} - - -# -# finish_list - finish off any pending HTML lists. this should be called -# after the entire pod file has been read and converted. -# -sub finish_list { - if( $Listlevel ){ - warn "$0: $Podfile: unterminated list(s) at =head in paragraph $Paragraph. ignoring.\n" unless $Quiet; - while( $Listlevel ){ - process_back(); - } - } -} - -# -# htmlify - converts a pod section specification to a suitable section -# specification for HTML. Note that we keep spaces and special characters -# except ", ? (Netscape problem) and the hyphen (writer's problem...). -# -sub htmlify { - my( $heading) = @_; - $heading =~ s/(\s+)/ /g; - $heading =~ s/\s+\Z//; - $heading =~ s/\A\s+//; - # The hyphen is a disgrace to the English language. - $heading =~ s/[-"?]//g; - $heading = lc( $heading ); - return $heading; -} - -# -# similar to htmlify, but turns non-alphanumerics into underscores -# -sub anchorify { - my ($anchor) = @_; - $anchor = htmlify($anchor); - $anchor =~ s/\W/_/g; - return $anchor; -} - -# -# depod - convert text by eliminating all interior sequences -# Note: can be called with copy or modify semantics -# -my %E2c; -$E2c{lt} = '<'; -$E2c{gt} = '>'; -$E2c{sol} = '/'; -$E2c{verbar} = '|'; -$E2c{amp} = '&'; # in Tk's pods - -sub depod1($;$$); - -sub depod($){ - my $string; - if( ref( $_[0] ) ){ - $string = ${$_[0]}; - ${$_[0]} = depod1( \$string ); - } else { - $string = $_[0]; - depod1( \$string ); - } -} - -sub depod1($;$$){ - my( $rstr, $func, $closing ) = @_; - my $res = ''; - return $res unless defined $$rstr; - if( ! defined( $func ) ){ - # skip to next begin of an interior sequence - while( $$rstr =~ s/\A(.*?)([BCEFILSXZ])<(<+[^\S\n]+)?// ){ - # recurse into its text - $res .= $1 . depod1( $rstr, $2, closing $3); - } - $res .= $$rstr; - } elsif( $func eq 'E' ){ - # E<x> - convert to character - $$rstr =~ s/^([^>]*)>//; - $res .= $E2c{$1} || ""; - } elsif( $func eq 'X' ){ - # X<> - ignore - $$rstr =~ s/^[^>]*>//; - } elsif( $func eq 'Z' ){ - # Z<> - empty - $$rstr =~ s/^>//; - } else { - # all others: either recurse into new function or - # terminate at closing angle bracket - my $term = pattern $closing; - while( $$rstr =~ s/\A(.*?)(([BCEFILSXZ])<(<+[^\S\n]+)?|$term)// ){ - $res .= $1; - last unless $3; - $res .= depod1( $rstr, $3, closing $4 ); - } - ## If we're here and $2 ne '>': undelimited interior sequence. - ## Ignored, as this is called without proper indication of where we are. - ## Rely on process_text to produce diagnostics. - } - return $res; -} - -# -# fragment_id - construct a fragment identifier from: -# a) =item text -# b) contents of C<...> -# -my @HC; -sub fragment_id { - my $text = shift(); - $text =~ s/\s+\Z//s; - if( $text ){ - # a method or function? - return $1 if $text =~ /(\w+)\s*\(/; - return $1 if $text =~ /->\s*(\w+)\s*\(?/; - - # a variable name? - return $1 if $text =~ /^([\$\@%*]\S+)/; - - # some pattern matching operator? - return $1 if $text =~ m|^(\w+/).*/\w*$|; - - # fancy stuff... like "do { }" - return $1 if $text =~ m|^(\w+)\s*{.*}$|; - - # honour the perlfunc manpage: func [PAR[,[ ]PAR]...] - # and some funnies with ... Module ... - return $1 if $text =~ m{^([a-z\d_]+)(\s+[A-Z\d,/& ]+)?$}; - return $1 if $text =~ m{^([a-z\d]+)\s+Module(\s+[A-Z\d,/& ]+)?$}; - - # text? normalize! - $text =~ s/\s+/_/sg; - $text =~ s{(\W)}{ - defined( $HC[ord($1)] ) ? $HC[ord($1)] - : ( $HC[ord($1)] = sprintf( "%%%02X", ord($1) ) ) }gxe; - $text = substr( $text, 0, 50 ); - } else { - return undef(); - } -} - -# -# make_URL_href - generate HTML href from URL -# Special treatment for CGI queries. -# -sub make_URL_href($){ - my( $url ) = @_; - if( $url !~ - s{^(http:[-\w/#~:.+=&%@!]+)(\?.*)$}{<a href="$1$2">$1</a>}i ){ - $url = "<a href=\"$url\">$url</a>"; - } - return $url; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Pod/InputObjects.pm b/Master/tlpkg/tlperl.old/lib/Pod/InputObjects.pm deleted file mode 100644 index fa5f61f9a70..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/InputObjects.pm +++ /dev/null @@ -1,941 +0,0 @@ -############################################################################# -# Pod/InputObjects.pm -- package which defines objects for input streams -# and paragraphs and commands when parsing POD docs. -# -# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved. -# This file is part of "PodParser". PodParser is free software; -# you can redistribute it and/or modify it under the same terms -# as Perl itself. -############################################################################# - -package Pod::InputObjects; - -use vars qw($VERSION); -$VERSION = 1.30; ## Current version of this package -require 5.005; ## requires this Perl version or later - -############################################################################# - -=head1 NAME - -Pod::InputObjects - objects representing POD input paragraphs, commands, etc. - -=head1 SYNOPSIS - - use Pod::InputObjects; - -=head1 REQUIRES - -perl5.004, Carp - -=head1 EXPORTS - -Nothing. - -=head1 DESCRIPTION - -This module defines some basic input objects used by B<Pod::Parser> when -reading and parsing POD text from an input source. The following objects -are defined: - -=over 4 - -=begin __PRIVATE__ - -=item package B<Pod::InputSource> - -An object corresponding to a source of POD input text. It is mostly a -wrapper around a filehandle or C<IO::Handle>-type object (or anything -that implements the C<getline()> method) which keeps track of some -additional information relevant to the parsing of PODs. - -=end __PRIVATE__ - -=item package B<Pod::Paragraph> - -An object corresponding to a paragraph of POD input text. It may be a -plain paragraph, a verbatim paragraph, or a command paragraph (see -L<perlpod>). - -=item package B<Pod::InteriorSequence> - -An object corresponding to an interior sequence command from the POD -input text (see L<perlpod>). - -=item package B<Pod::ParseTree> - -An object corresponding to a tree of parsed POD text. Each "node" in -a parse-tree (or I<ptree>) is either a text-string or a reference to -a B<Pod::InteriorSequence> object. The nodes appear in the parse-tree -in the order in which they were parsed from left-to-right. - -=back - -Each of these input objects are described in further detail in the -sections which follow. - -=cut - -############################################################################# - -use strict; -#use diagnostics; -#use Carp; - -############################################################################# - -package Pod::InputSource; - -##--------------------------------------------------------------------------- - -=begin __PRIVATE__ - -=head1 B<Pod::InputSource> - -This object corresponds to an input source or stream of POD -documentation. When parsing PODs, it is necessary to associate and store -certain context information with each input source. All of this -information is kept together with the stream itself in one of these -C<Pod::InputSource> objects. Each such object is merely a wrapper around -an C<IO::Handle> object of some kind (or at least something that -implements the C<getline()> method). They have the following -methods/attributes: - -=end __PRIVATE__ - -=cut - -##--------------------------------------------------------------------------- - -=begin __PRIVATE__ - -=head2 B<new()> - - my $pod_input1 = Pod::InputSource->new(-handle => $filehandle); - my $pod_input2 = new Pod::InputSource(-handle => $filehandle, - -name => $name); - my $pod_input3 = new Pod::InputSource(-handle => \*STDIN); - my $pod_input4 = Pod::InputSource->new(-handle => \*STDIN, - -name => "(STDIN)"); - -This is a class method that constructs a C<Pod::InputSource> object and -returns a reference to the new input source object. It takes one or more -keyword arguments in the form of a hash. The keyword C<-handle> is -required and designates the corresponding input handle. The keyword -C<-name> is optional and specifies the name associated with the input -handle (typically a file name). - -=end __PRIVATE__ - -=cut - -sub new { - ## Determine if we were called via an object-ref or a classname - my $this = shift; - my $class = ref($this) || $this; - - ## Any remaining arguments are treated as initial values for the - ## hash that is used to represent this object. Note that we default - ## certain values by specifying them *before* the arguments passed. - ## If they are in the argument list, they will override the defaults. - my $self = { -name => '(unknown)', - -handle => undef, - -was_cutting => 0, - @_ }; - - ## Bless ourselves into the desired class and perform any initialization - bless $self, $class; - return $self; -} - -##--------------------------------------------------------------------------- - -=begin __PRIVATE__ - -=head2 B<name()> - - my $filename = $pod_input->name(); - $pod_input->name($new_filename_to_use); - -This method gets/sets the name of the input source (usually a filename). -If no argument is given, it returns a string containing the name of -the input source; otherwise it sets the name of the input source to the -contents of the given argument. - -=end __PRIVATE__ - -=cut - -sub name { - (@_ > 1) and $_[0]->{'-name'} = $_[1]; - return $_[0]->{'-name'}; -} - -## allow 'filename' as an alias for 'name' -*filename = \&name; - -##--------------------------------------------------------------------------- - -=begin __PRIVATE__ - -=head2 B<handle()> - - my $handle = $pod_input->handle(); - -Returns a reference to the handle object from which input is read (the -one used to contructed this input source object). - -=end __PRIVATE__ - -=cut - -sub handle { - return $_[0]->{'-handle'}; -} - -##--------------------------------------------------------------------------- - -=begin __PRIVATE__ - -=head2 B<was_cutting()> - - print "Yes.\n" if ($pod_input->was_cutting()); - -The value of the C<cutting> state (that the B<cutting()> method would -have returned) immediately before any input was read from this input -stream. After all input from this stream has been read, the C<cutting> -state is restored to this value. - -=end __PRIVATE__ - -=cut - -sub was_cutting { - (@_ > 1) and $_[0]->{-was_cutting} = $_[1]; - return $_[0]->{-was_cutting}; -} - -##--------------------------------------------------------------------------- - -############################################################################# - -package Pod::Paragraph; - -##--------------------------------------------------------------------------- - -=head1 B<Pod::Paragraph> - -An object representing a paragraph of POD input text. -It has the following methods/attributes: - -=cut - -##--------------------------------------------------------------------------- - -=head2 Pod::Paragraph-E<gt>B<new()> - - my $pod_para1 = Pod::Paragraph->new(-text => $text); - my $pod_para2 = Pod::Paragraph->new(-name => $cmd, - -text => $text); - my $pod_para3 = new Pod::Paragraph(-text => $text); - my $pod_para4 = new Pod::Paragraph(-name => $cmd, - -text => $text); - my $pod_para5 = Pod::Paragraph->new(-name => $cmd, - -text => $text, - -file => $filename, - -line => $line_number); - -This is a class method that constructs a C<Pod::Paragraph> object and -returns a reference to the new paragraph object. It may be given one or -two keyword arguments. The C<-text> keyword indicates the corresponding -text of the POD paragraph. The C<-name> keyword indicates the name of -the corresponding POD command, such as C<head1> or C<item> (it should -I<not> contain the C<=> prefix); this is needed only if the POD -paragraph corresponds to a command paragraph. The C<-file> and C<-line> -keywords indicate the filename and line number corresponding to the -beginning of the paragraph - -=cut - -sub new { - ## Determine if we were called via an object-ref or a classname - my $this = shift; - my $class = ref($this) || $this; - - ## Any remaining arguments are treated as initial values for the - ## hash that is used to represent this object. Note that we default - ## certain values by specifying them *before* the arguments passed. - ## If they are in the argument list, they will override the defaults. - my $self = { - -name => undef, - -text => (@_ == 1) ? shift : undef, - -file => '<unknown-file>', - -line => 0, - -prefix => '=', - -separator => ' ', - -ptree => [], - @_ - }; - - ## Bless ourselves into the desired class and perform any initialization - bless $self, $class; - return $self; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_para-E<gt>B<cmd_name()> - - my $para_cmd = $pod_para->cmd_name(); - -If this paragraph is a command paragraph, then this method will return -the name of the command (I<without> any leading C<=> prefix). - -=cut - -sub cmd_name { - (@_ > 1) and $_[0]->{'-name'} = $_[1]; - return $_[0]->{'-name'}; -} - -## let name() be an alias for cmd_name() -*name = \&cmd_name; - -##--------------------------------------------------------------------------- - -=head2 $pod_para-E<gt>B<text()> - - my $para_text = $pod_para->text(); - -This method will return the corresponding text of the paragraph. - -=cut - -sub text { - (@_ > 1) and $_[0]->{'-text'} = $_[1]; - return $_[0]->{'-text'}; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_para-E<gt>B<raw_text()> - - my $raw_pod_para = $pod_para->raw_text(); - -This method will return the I<raw> text of the POD paragraph, exactly -as it appeared in the input. - -=cut - -sub raw_text { - return $_[0]->{'-text'} unless (defined $_[0]->{'-name'}); - return $_[0]->{'-prefix'} . $_[0]->{'-name'} . - $_[0]->{'-separator'} . $_[0]->{'-text'}; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_para-E<gt>B<cmd_prefix()> - - my $prefix = $pod_para->cmd_prefix(); - -If this paragraph is a command paragraph, then this method will return -the prefix used to denote the command (which should be the string "=" -or "=="). - -=cut - -sub cmd_prefix { - return $_[0]->{'-prefix'}; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_para-E<gt>B<cmd_separator()> - - my $separator = $pod_para->cmd_separator(); - -If this paragraph is a command paragraph, then this method will return -the text used to separate the command name from the rest of the -paragraph (if any). - -=cut - -sub cmd_separator { - return $_[0]->{'-separator'}; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_para-E<gt>B<parse_tree()> - - my $ptree = $pod_parser->parse_text( $pod_para->text() ); - $pod_para->parse_tree( $ptree ); - $ptree = $pod_para->parse_tree(); - -This method will get/set the corresponding parse-tree of the paragraph's text. - -=cut - -sub parse_tree { - (@_ > 1) and $_[0]->{'-ptree'} = $_[1]; - return $_[0]->{'-ptree'}; -} - -## let ptree() be an alias for parse_tree() -*ptree = \&parse_tree; - -##--------------------------------------------------------------------------- - -=head2 $pod_para-E<gt>B<file_line()> - - my ($filename, $line_number) = $pod_para->file_line(); - my $position = $pod_para->file_line(); - -Returns the current filename and line number for the paragraph -object. If called in a list context, it returns a list of two -elements: first the filename, then the line number. If called in -a scalar context, it returns a string containing the filename, followed -by a colon (':'), followed by the line number. - -=cut - -sub file_line { - my @loc = ($_[0]->{'-file'} || '<unknown-file>', - $_[0]->{'-line'} || 0); - return (wantarray) ? @loc : join(':', @loc); -} - -##--------------------------------------------------------------------------- - -############################################################################# - -package Pod::InteriorSequence; - -##--------------------------------------------------------------------------- - -=head1 B<Pod::InteriorSequence> - -An object representing a POD interior sequence command. -It has the following methods/attributes: - -=cut - -##--------------------------------------------------------------------------- - -=head2 Pod::InteriorSequence-E<gt>B<new()> - - my $pod_seq1 = Pod::InteriorSequence->new(-name => $cmd - -ldelim => $delimiter); - my $pod_seq2 = new Pod::InteriorSequence(-name => $cmd, - -ldelim => $delimiter); - my $pod_seq3 = new Pod::InteriorSequence(-name => $cmd, - -ldelim => $delimiter, - -file => $filename, - -line => $line_number); - - my $pod_seq4 = new Pod::InteriorSequence(-name => $cmd, $ptree); - my $pod_seq5 = new Pod::InteriorSequence($cmd, $ptree); - -This is a class method that constructs a C<Pod::InteriorSequence> object -and returns a reference to the new interior sequence object. It should -be given two keyword arguments. The C<-ldelim> keyword indicates the -corresponding left-delimiter of the interior sequence (e.g. 'E<lt>'). -The C<-name> keyword indicates the name of the corresponding interior -sequence command, such as C<I> or C<B> or C<C>. The C<-file> and -C<-line> keywords indicate the filename and line number corresponding -to the beginning of the interior sequence. If the C<$ptree> argument is -given, it must be the last argument, and it must be either string, or -else an array-ref suitable for passing to B<Pod::ParseTree::new> (or -it may be a reference to a Pod::ParseTree object). - -=cut - -sub new { - ## Determine if we were called via an object-ref or a classname - my $this = shift; - my $class = ref($this) || $this; - - ## See if first argument has no keyword - if (((@_ <= 2) or (@_ % 2)) and $_[0] !~ /^-\w/) { - ## Yup - need an implicit '-name' before first parameter - unshift @_, '-name'; - } - - ## See if odd number of args - if ((@_ % 2) != 0) { - ## Yup - need an implicit '-ptree' before the last parameter - splice @_, $#_, 0, '-ptree'; - } - - ## Any remaining arguments are treated as initial values for the - ## hash that is used to represent this object. Note that we default - ## certain values by specifying them *before* the arguments passed. - ## If they are in the argument list, they will override the defaults. - my $self = { - -name => (@_ == 1) ? $_[0] : undef, - -file => '<unknown-file>', - -line => 0, - -ldelim => '<', - -rdelim => '>', - @_ - }; - - ## Initialize contents if they havent been already - my $ptree = $self->{'-ptree'} || new Pod::ParseTree(); - if ( ref $ptree =~ /^(ARRAY)?$/ ) { - ## We have an array-ref, or a normal scalar. Pass it as an - ## an argument to the ptree-constructor - $ptree = new Pod::ParseTree($1 ? [$ptree] : $ptree); - } - $self->{'-ptree'} = $ptree; - - ## Bless ourselves into the desired class and perform any initialization - bless $self, $class; - return $self; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-E<gt>B<cmd_name()> - - my $seq_cmd = $pod_seq->cmd_name(); - -The name of the interior sequence command. - -=cut - -sub cmd_name { - (@_ > 1) and $_[0]->{'-name'} = $_[1]; - return $_[0]->{'-name'}; -} - -## let name() be an alias for cmd_name() -*name = \&cmd_name; - -##--------------------------------------------------------------------------- - -## Private subroutine to set the parent pointer of all the given -## children that are interior-sequences to be $self - -sub _set_child2parent_links { - my ($self, @children) = @_; - ## Make sure any sequences know who their parent is - for (@children) { - next unless (length and ref and ref ne 'SCALAR'); - if (UNIVERSAL::isa($_, 'Pod::InteriorSequence') or - UNIVERSAL::can($_, 'nested')) - { - $_->nested($self); - } - } -} - -## Private subroutine to unset child->parent links - -sub _unset_child2parent_links { - my $self = shift; - $self->{'-parent_sequence'} = undef; - my $ptree = $self->{'-ptree'}; - for (@$ptree) { - next unless (length and ref and ref ne 'SCALAR'); - $_->_unset_child2parent_links() - if UNIVERSAL::isa($_, 'Pod::InteriorSequence'); - } -} - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-E<gt>B<prepend()> - - $pod_seq->prepend($text); - $pod_seq1->prepend($pod_seq2); - -Prepends the given string or parse-tree or sequence object to the parse-tree -of this interior sequence. - -=cut - -sub prepend { - my $self = shift; - $self->{'-ptree'}->prepend(@_); - _set_child2parent_links($self, @_); - return $self; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-E<gt>B<append()> - - $pod_seq->append($text); - $pod_seq1->append($pod_seq2); - -Appends the given string or parse-tree or sequence object to the parse-tree -of this interior sequence. - -=cut - -sub append { - my $self = shift; - $self->{'-ptree'}->append(@_); - _set_child2parent_links($self, @_); - return $self; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-E<gt>B<nested()> - - $outer_seq = $pod_seq->nested || print "not nested"; - -If this interior sequence is nested inside of another interior -sequence, then the outer/parent sequence that contains it is -returned. Otherwise C<undef> is returned. - -=cut - -sub nested { - my $self = shift; - (@_ == 1) and $self->{'-parent_sequence'} = shift; - return $self->{'-parent_sequence'} || undef; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-E<gt>B<raw_text()> - - my $seq_raw_text = $pod_seq->raw_text(); - -This method will return the I<raw> text of the POD interior sequence, -exactly as it appeared in the input. - -=cut - -sub raw_text { - my $self = shift; - my $text = $self->{'-name'} . $self->{'-ldelim'}; - for ( $self->{'-ptree'}->children ) { - $text .= (ref $_) ? $_->raw_text : $_; - } - $text .= $self->{'-rdelim'}; - return $text; -} - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-E<gt>B<left_delimiter()> - - my $ldelim = $pod_seq->left_delimiter(); - -The leftmost delimiter beginning the argument text to the interior -sequence (should be "<"). - -=cut - -sub left_delimiter { - (@_ > 1) and $_[0]->{'-ldelim'} = $_[1]; - return $_[0]->{'-ldelim'}; -} - -## let ldelim() be an alias for left_delimiter() -*ldelim = \&left_delimiter; - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-E<gt>B<right_delimiter()> - -The rightmost delimiter beginning the argument text to the interior -sequence (should be ">"). - -=cut - -sub right_delimiter { - (@_ > 1) and $_[0]->{'-rdelim'} = $_[1]; - return $_[0]->{'-rdelim'}; -} - -## let rdelim() be an alias for right_delimiter() -*rdelim = \&right_delimiter; - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-E<gt>B<parse_tree()> - - my $ptree = $pod_parser->parse_text($paragraph_text); - $pod_seq->parse_tree( $ptree ); - $ptree = $pod_seq->parse_tree(); - -This method will get/set the corresponding parse-tree of the interior -sequence's text. - -=cut - -sub parse_tree { - (@_ > 1) and $_[0]->{'-ptree'} = $_[1]; - return $_[0]->{'-ptree'}; -} - -## let ptree() be an alias for parse_tree() -*ptree = \&parse_tree; - -##--------------------------------------------------------------------------- - -=head2 $pod_seq-E<gt>B<file_line()> - - my ($filename, $line_number) = $pod_seq->file_line(); - my $position = $pod_seq->file_line(); - -Returns the current filename and line number for the interior sequence -object. If called in a list context, it returns a list of two -elements: first the filename, then the line number. If called in -a scalar context, it returns a string containing the filename, followed -by a colon (':'), followed by the line number. - -=cut - -sub file_line { - my @loc = ($_[0]->{'-file'} || '<unknown-file>', - $_[0]->{'-line'} || 0); - return (wantarray) ? @loc : join(':', @loc); -} - -##--------------------------------------------------------------------------- - -=head2 Pod::InteriorSequence::B<DESTROY()> - -This method performs any necessary cleanup for the interior-sequence. -If you override this method then it is B<imperative> that you invoke -the parent method from within your own method, otherwise -I<interior-sequence storage will not be reclaimed upon destruction!> - -=cut - -sub DESTROY { - ## We need to get rid of all child->parent pointers throughout the - ## tree so their reference counts will go to zero and they can be - ## garbage-collected - _unset_child2parent_links(@_); -} - -##--------------------------------------------------------------------------- - -############################################################################# - -package Pod::ParseTree; - -##--------------------------------------------------------------------------- - -=head1 B<Pod::ParseTree> - -This object corresponds to a tree of parsed POD text. As POD text is -scanned from left to right, it is parsed into an ordered list of -text-strings and B<Pod::InteriorSequence> objects (in order of -appearance). A B<Pod::ParseTree> object corresponds to this list of -strings and sequences. Each interior sequence in the parse-tree may -itself contain a parse-tree (since interior sequences may be nested). - -=cut - -##--------------------------------------------------------------------------- - -=head2 Pod::ParseTree-E<gt>B<new()> - - my $ptree1 = Pod::ParseTree->new; - my $ptree2 = new Pod::ParseTree; - my $ptree4 = Pod::ParseTree->new($array_ref); - my $ptree3 = new Pod::ParseTree($array_ref); - -This is a class method that constructs a C<Pod::Parse_tree> object and -returns a reference to the new parse-tree. If a single-argument is given, -it must be a reference to an array, and is used to initialize the root -(top) of the parse tree. - -=cut - -sub new { - ## Determine if we were called via an object-ref or a classname - my $this = shift; - my $class = ref($this) || $this; - - my $self = (@_ == 1 and ref $_[0]) ? $_[0] : []; - - ## Bless ourselves into the desired class and perform any initialization - bless $self, $class; - return $self; -} - -##--------------------------------------------------------------------------- - -=head2 $ptree-E<gt>B<top()> - - my $top_node = $ptree->top(); - $ptree->top( $top_node ); - $ptree->top( @children ); - -This method gets/sets the top node of the parse-tree. If no arguments are -given, it returns the topmost node in the tree (the root), which is also -a B<Pod::ParseTree>. If it is given a single argument that is a reference, -then the reference is assumed to a parse-tree and becomes the new top node. -Otherwise, if arguments are given, they are treated as the new list of -children for the top node. - -=cut - -sub top { - my $self = shift; - if (@_ > 0) { - @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_; - } - return $self; -} - -## let parse_tree() & ptree() be aliases for the 'top' method -*parse_tree = *ptree = \⊤ - -##--------------------------------------------------------------------------- - -=head2 $ptree-E<gt>B<children()> - -This method gets/sets the children of the top node in the parse-tree. -If no arguments are given, it returns the list (array) of children -(each of which should be either a string or a B<Pod::InteriorSequence>. -Otherwise, if arguments are given, they are treated as the new list of -children for the top node. - -=cut - -sub children { - my $self = shift; - if (@_ > 0) { - @{ $self } = (@_ == 1 and ref $_[0]) ? ${ @_ } : @_; - } - return @{ $self }; -} - -##--------------------------------------------------------------------------- - -=head2 $ptree-E<gt>B<prepend()> - -This method prepends the given text or parse-tree to the current parse-tree. -If the first item on the parse-tree is text and the argument is also text, -then the text is prepended to the first item (not added as a separate string). -Otherwise the argument is added as a new string or parse-tree I<before> -the current one. - -=cut - -use vars qw(@ptree); ## an alias used for performance reasons - -sub prepend { - my $self = shift; - local *ptree = $self; - for (@_) { - next unless length; - if (@ptree and !(ref $ptree[0]) and !(ref $_)) { - $ptree[0] = $_ . $ptree[0]; - } - else { - unshift @ptree, $_; - } - } -} - -##--------------------------------------------------------------------------- - -=head2 $ptree-E<gt>B<append()> - -This method appends the given text or parse-tree to the current parse-tree. -If the last item on the parse-tree is text and the argument is also text, -then the text is appended to the last item (not added as a separate string). -Otherwise the argument is added as a new string or parse-tree I<after> -the current one. - -=cut - -sub append { - my $self = shift; - local *ptree = $self; - my $can_append = @ptree && !(ref $ptree[-1]); - for (@_) { - if (ref) { - push @ptree, $_; - } - elsif(!length) { - next; - } - elsif ($can_append) { - $ptree[-1] .= $_; - } - else { - push @ptree, $_; - } - } -} - -=head2 $ptree-E<gt>B<raw_text()> - - my $ptree_raw_text = $ptree->raw_text(); - -This method will return the I<raw> text of the POD parse-tree -exactly as it appeared in the input. - -=cut - -sub raw_text { - my $self = shift; - my $text = ""; - for ( @$self ) { - $text .= (ref $_) ? $_->raw_text : $_; - } - return $text; -} - -##--------------------------------------------------------------------------- - -## Private routines to set/unset child->parent links - -sub _unset_child2parent_links { - my $self = shift; - local *ptree = $self; - for (@ptree) { - next unless (defined and length and ref and ref ne 'SCALAR'); - $_->_unset_child2parent_links() - if UNIVERSAL::isa($_, 'Pod::InteriorSequence'); - } -} - -sub _set_child2parent_links { - ## nothing to do, Pod::ParseTrees cant have parent pointers -} - -=head2 Pod::ParseTree::B<DESTROY()> - -This method performs any necessary cleanup for the parse-tree. -If you override this method then it is B<imperative> -that you invoke the parent method from within your own method, -otherwise I<parse-tree storage will not be reclaimed upon destruction!> - -=cut - -sub DESTROY { - ## We need to get rid of all child->parent pointers throughout the - ## tree so their reference counts will go to zero and they can be - ## garbage-collected - _unset_child2parent_links(@_); -} - -############################################################################# - -=head1 SEE ALSO - -See L<Pod::Parser>, L<Pod::Select> - -=head1 AUTHOR - -Please report bugs using L<http://rt.cpan.org>. - -Brad Appleton E<lt>bradapp@enteract.comE<gt> - -=cut - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Pod/LaTeX.pm b/Master/tlpkg/tlperl.old/lib/Pod/LaTeX.pm deleted file mode 100644 index 9d3a905258f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/LaTeX.pm +++ /dev/null @@ -1,1876 +0,0 @@ -package Pod::LaTeX; - -=head1 NAME - -Pod::LaTeX - Convert Pod data to formatted Latex - -=head1 SYNOPSIS - - use Pod::LaTeX; - my $parser = Pod::LaTeX->new ( ); - - $parser->parse_from_filehandle; - - $parser->parse_from_file ('file.pod', 'file.tex'); - -=head1 DESCRIPTION - -C<Pod::LaTeX> is a module to convert documentation in the Pod format -into Latex. The L<B<pod2latex>|pod2latex> X<pod2latex> command uses -this module for translation. - -C<Pod::LaTeX> is a derived class from L<Pod::Select|Pod::Select>. - -=cut - - -use strict; -require Pod::ParseUtils; -use base qw/ Pod::Select /; - -# use Data::Dumper; # for debugging -use Carp; - -use vars qw/ $VERSION %HTML_Escapes @LatexSections /; - -$VERSION = '0.58'; - -# Definitions of =headN -> latex mapping -@LatexSections = (qw/ - chapter - section - subsection - subsubsection - paragraph - subparagraph - /); - -# Standard escape sequences converted to Latex. -# The Unicode name of each character is given in the comments. -# Complete LaTeX set added by Peter Acklam. - -%HTML_Escapes = ( - 'sol' => '\textfractionsolidus{}', # xxx - or should it be just '/' - 'verbar' => '|', - - # The stuff below is based on the information available at - # http://www.w3.org/TR/html401/sgml/entities.html - - # All characters in the range 0xA0-0xFF of the ISO 8859-1 character set. - # Several of these characters require the `textcomp' LaTeX package. - 'nbsp' => q|~|, # 0xA0 - no-break space = non-breaking space - 'iexcl' => q|\textexclamdown{}|, # 0xA1 - inverted exclamation mark - 'cent' => q|\textcent{}|, # 0xA2 - cent sign - 'pound' => q|\textsterling{}|, # 0xA3 - pound sign - 'curren' => q|\textcurrency{}|, # 0xA4 - currency sign - 'yen' => q|\textyen{}|, # 0xA5 - yen sign = yuan sign - 'brvbar' => q|\textbrokenbar{}|, # 0xA6 - broken bar = broken vertical bar - 'sect' => q|\textsection{}|, # 0xA7 - section sign - 'uml' => q|\textasciidieresis{}|, # 0xA8 - diaeresis = spacing diaeresis - 'copy' => q|\textcopyright{}|, # 0xA9 - copyright sign - 'ordf' => q|\textordfeminine{}|, # 0xAA - feminine ordinal indicator - 'laquo' => q|\guillemotleft{}|, # 0xAB - left-pointing double angle quotation mark = left pointing guillemet - 'not' => q|\textlnot{}|, # 0xAC - not sign - 'shy' => q|\-|, # 0xAD - soft hyphen = discretionary hyphen - 'reg' => q|\textregistered{}|, # 0xAE - registered sign = registered trade mark sign - 'macr' => q|\textasciimacron{}|, # 0xAF - macron = spacing macron = overline = APL overbar - 'deg' => q|\textdegree{}|, # 0xB0 - degree sign - 'plusmn' => q|\textpm{}|, # 0xB1 - plus-minus sign = plus-or-minus sign - 'sup2' => q|\texttwosuperior{}|, # 0xB2 - superscript two = superscript digit two = squared - 'sup3' => q|\textthreesuperior{}|, # 0xB3 - superscript three = superscript digit three = cubed - 'acute' => q|\textasciiacute{}|, # 0xB4 - acute accent = spacing acute - 'micro' => q|\textmu{}|, # 0xB5 - micro sign - 'para' => q|\textparagraph{}|, # 0xB6 - pilcrow sign = paragraph sign - 'middot' => q|\textperiodcentered{}|, # 0xB7 - middle dot = Georgian comma = Greek middle dot - 'cedil' => q|\c{}|, # 0xB8 - cedilla = spacing cedilla - 'sup1' => q|\textonesuperior{}|, # 0xB9 - superscript one = superscript digit one - 'ordm' => q|\textordmasculine{}|, # 0xBA - masculine ordinal indicator - 'raquo' => q|\guillemotright{}|, # 0xBB - right-pointing double angle quotation mark = right pointing guillemet - 'frac14' => q|\textonequarter{}|, # 0xBC - vulgar fraction one quarter = fraction one quarter - 'frac12' => q|\textonehalf{}|, # 0xBD - vulgar fraction one half = fraction one half - 'frac34' => q|\textthreequarters{}|, # 0xBE - vulgar fraction three quarters = fraction three quarters - 'iquest' => q|\textquestiondown{}|, # 0xBF - inverted question mark = turned question mark - 'Agrave' => q|\`A|, # 0xC0 - latin capital letter A with grave = latin capital letter A grave - 'Aacute' => q|\'A|, # 0xC1 - latin capital letter A with acute - 'Acirc' => q|\^A|, # 0xC2 - latin capital letter A with circumflex - 'Atilde' => q|\~A|, # 0xC3 - latin capital letter A with tilde - 'Auml' => q|\"A|, # 0xC4 - latin capital letter A with diaeresis - 'Aring' => q|\AA{}|, # 0xC5 - latin capital letter A with ring above = latin capital letter A ring - 'AElig' => q|\AE{}|, # 0xC6 - latin capital letter AE = latin capital ligature AE - 'Ccedil' => q|\c{C}|, # 0xC7 - latin capital letter C with cedilla - 'Egrave' => q|\`E|, # 0xC8 - latin capital letter E with grave - 'Eacute' => q|\'E|, # 0xC9 - latin capital letter E with acute - 'Ecirc' => q|\^E|, # 0xCA - latin capital letter E with circumflex - 'Euml' => q|\"E|, # 0xCB - latin capital letter E with diaeresis - 'Igrave' => q|\`I|, # 0xCC - latin capital letter I with grave - 'Iacute' => q|\'I|, # 0xCD - latin capital letter I with acute - 'Icirc' => q|\^I|, # 0xCE - latin capital letter I with circumflex - 'Iuml' => q|\"I|, # 0xCF - latin capital letter I with diaeresis - 'ETH' => q|\DH{}|, # 0xD0 - latin capital letter ETH - 'Ntilde' => q|\~N|, # 0xD1 - latin capital letter N with tilde - 'Ograve' => q|\`O|, # 0xD2 - latin capital letter O with grave - 'Oacute' => q|\'O|, # 0xD3 - latin capital letter O with acute - 'Ocirc' => q|\^O|, # 0xD4 - latin capital letter O with circumflex - 'Otilde' => q|\~O|, # 0xD5 - latin capital letter O with tilde - 'Ouml' => q|\"O|, # 0xD6 - latin capital letter O with diaeresis - 'times' => q|\texttimes{}|, # 0xD7 - multiplication sign - 'Oslash' => q|\O{}|, # 0xD8 - latin capital letter O with stroke = latin capital letter O slash - 'Ugrave' => q|\`U|, # 0xD9 - latin capital letter U with grave - 'Uacute' => q|\'U|, # 0xDA - latin capital letter U with acute - 'Ucirc' => q|\^U|, # 0xDB - latin capital letter U with circumflex - 'Uuml' => q|\"U|, # 0xDC - latin capital letter U with diaeresis - 'Yacute' => q|\'Y|, # 0xDD - latin capital letter Y with acute - 'THORN' => q|\TH{}|, # 0xDE - latin capital letter THORN - 'szlig' => q|\ss{}|, # 0xDF - latin small letter sharp s = ess-zed - 'agrave' => q|\`a|, # 0xE0 - latin small letter a with grave = latin small letter a grave - 'aacute' => q|\'a|, # 0xE1 - latin small letter a with acute - 'acirc' => q|\^a|, # 0xE2 - latin small letter a with circumflex - 'atilde' => q|\~a|, # 0xE3 - latin small letter a with tilde - 'auml' => q|\"a|, # 0xE4 - latin small letter a with diaeresis - 'aring' => q|\aa{}|, # 0xE5 - latin small letter a with ring above = latin small letter a ring - 'aelig' => q|\ae{}|, # 0xE6 - latin small letter ae = latin small ligature ae - 'ccedil' => q|\c{c}|, # 0xE7 - latin small letter c with cedilla - 'egrave' => q|\`e|, # 0xE8 - latin small letter e with grave - 'eacute' => q|\'e|, # 0xE9 - latin small letter e with acute - 'ecirc' => q|\^e|, # 0xEA - latin small letter e with circumflex - 'euml' => q|\"e|, # 0xEB - latin small letter e with diaeresis - 'igrave' => q|\`i|, # 0xEC - latin small letter i with grave - 'iacute' => q|\'i|, # 0xED - latin small letter i with acute - 'icirc' => q|\^i|, # 0xEE - latin small letter i with circumflex - 'iuml' => q|\"i|, # 0xEF - latin small letter i with diaeresis - 'eth' => q|\dh{}|, # 0xF0 - latin small letter eth - 'ntilde' => q|\~n|, # 0xF1 - latin small letter n with tilde - 'ograve' => q|\`o|, # 0xF2 - latin small letter o with grave - 'oacute' => q|\'o|, # 0xF3 - latin small letter o with acute - 'ocirc' => q|\^o|, # 0xF4 - latin small letter o with circumflex - 'otilde' => q|\~o|, # 0xF5 - latin small letter o with tilde - 'ouml' => q|\"o|, # 0xF6 - latin small letter o with diaeresis - 'divide' => q|\textdiv{}|, # 0xF7 - division sign - 'oslash' => q|\o{}|, # 0xF8 - latin small letter o with stroke, = latin small letter o slash - 'ugrave' => q|\`u|, # 0xF9 - latin small letter u with grave - 'uacute' => q|\'u|, # 0xFA - latin small letter u with acute - 'ucirc' => q|\^u|, # 0xFB - latin small letter u with circumflex - 'uuml' => q|\"u|, # 0xFC - latin small letter u with diaeresis - 'yacute' => q|\'y|, # 0xFD - latin small letter y with acute - 'thorn' => q|\th{}|, # 0xFE - latin small letter thorn - 'yuml' => q|\"y|, # 0xFF - latin small letter y with diaeresis - - # Latin Extended-B - 'fnof' => q|\textflorin{}|, # latin small f with hook = function = florin - - # Greek - 'Alpha' => q|$\mathrm{A}$|, # greek capital letter alpha - 'Beta' => q|$\mathrm{B}$|, # greek capital letter beta - 'Gamma' => q|$\Gamma$|, # greek capital letter gamma - 'Delta' => q|$\Delta$|, # greek capital letter delta - 'Epsilon' => q|$\mathrm{E}$|, # greek capital letter epsilon - 'Zeta' => q|$\mathrm{Z}$|, # greek capital letter zeta - 'Eta' => q|$\mathrm{H}$|, # greek capital letter eta - 'Theta' => q|$\Theta$|, # greek capital letter theta - 'Iota' => q|$\mathrm{I}$|, # greek capital letter iota - 'Kappa' => q|$\mathrm{K}$|, # greek capital letter kappa - 'Lambda' => q|$\Lambda$|, # greek capital letter lambda - 'Mu' => q|$\mathrm{M}$|, # greek capital letter mu - 'Nu' => q|$\mathrm{N}$|, # greek capital letter nu - 'Xi' => q|$\Xi$|, # greek capital letter xi - 'Omicron' => q|$\mathrm{O}$|, # greek capital letter omicron - 'Pi' => q|$\Pi$|, # greek capital letter pi - 'Rho' => q|$\mathrm{R}$|, # greek capital letter rho - 'Sigma' => q|$\Sigma$|, # greek capital letter sigma - 'Tau' => q|$\mathrm{T}$|, # greek capital letter tau - 'Upsilon' => q|$\Upsilon$|, # greek capital letter upsilon - 'Phi' => q|$\Phi$|, # greek capital letter phi - 'Chi' => q|$\mathrm{X}$|, # greek capital letter chi - 'Psi' => q|$\Psi$|, # greek capital letter psi - 'Omega' => q|$\Omega$|, # greek capital letter omega - - 'alpha' => q|$\alpha$|, # greek small letter alpha - 'beta' => q|$\beta$|, # greek small letter beta - 'gamma' => q|$\gamma$|, # greek small letter gamma - 'delta' => q|$\delta$|, # greek small letter delta - 'epsilon' => q|$\epsilon$|, # greek small letter epsilon - 'zeta' => q|$\zeta$|, # greek small letter zeta - 'eta' => q|$\eta$|, # greek small letter eta - 'theta' => q|$\theta$|, # greek small letter theta - 'iota' => q|$\iota$|, # greek small letter iota - 'kappa' => q|$\kappa$|, # greek small letter kappa - 'lambda' => q|$\lambda$|, # greek small letter lambda - 'mu' => q|$\mu$|, # greek small letter mu - 'nu' => q|$\nu$|, # greek small letter nu - 'xi' => q|$\xi$|, # greek small letter xi - 'omicron' => q|$o$|, # greek small letter omicron - 'pi' => q|$\pi$|, # greek small letter pi - 'rho' => q|$\rho$|, # greek small letter rho -# 'sigmaf' => q||, # greek small letter final sigma - 'sigma' => q|$\sigma$|, # greek small letter sigma - 'tau' => q|$\tau$|, # greek small letter tau - 'upsilon' => q|$\upsilon$|, # greek small letter upsilon - 'phi' => q|$\phi$|, # greek small letter phi - 'chi' => q|$\chi$|, # greek small letter chi - 'psi' => q|$\psi$|, # greek small letter psi - 'omega' => q|$\omega$|, # greek small letter omega -# 'thetasym' => q||, # greek small letter theta symbol -# 'upsih' => q||, # greek upsilon with hook symbol -# 'piv' => q||, # greek pi symbol - - # General Punctuation - 'bull' => q|\textbullet{}|, # bullet = black small circle - # bullet is NOT the same as bullet operator - 'hellip' => q|\textellipsis{}|, # horizontal ellipsis = three dot leader - 'prime' => q|\textquotesingle{}|, # prime = minutes = feet - 'Prime' => q|\textquotedbl{}|, # double prime = seconds = inches - 'oline' => q|\textasciimacron{}|, # overline = spacing overscore - 'frasl' => q|\textfractionsolidus{}|, # fraction slash - - # Letterlike Symbols - 'weierp' => q|$\wp$|, # script capital P = power set = Weierstrass p - 'image' => q|$\Re$|, # blackletter capital I = imaginary part - 'real' => q|$\Im$|, # blackletter capital R = real part symbol - 'trade' => q|\texttrademark{}|, # trade mark sign -# 'alefsym' => q||, # alef symbol = first transfinite cardinal - # alef symbol is NOT the same as hebrew letter alef, although the same - # glyph could be used to depict both characters - - # Arrows - 'larr' => q|\textleftarrow{}|, # leftwards arrow - 'uarr' => q|\textuparrow{}|, # upwards arrow - 'rarr' => q|\textrightarrow{}|, # rightwards arrow - 'darr' => q|\textdownarrow{}|, # downwards arrow - 'harr' => q|$\leftrightarrow$|, # left right arrow -# 'crarr' => q||, # downwards arrow with corner leftwards = carriage return - 'lArr' => q|$\Leftarrow$|, # leftwards double arrow - # ISO 10646 does not say that lArr is the same as the 'is implied by' - # arrow but also does not have any other character for that function. So - # lArr can be used for 'is implied by' as ISOtech suggests - 'uArr' => q|$\Uparrow$|, # upwards double arrow - 'rArr' => q|$\Rightarrow$|, # rightwards double arrow - # ISO 10646 does not say this is the 'implies' character but does not - # have another character with this function so ? rArr can be used for - # 'implies' as ISOtech suggests - 'dArr' => q|$\Downarrow$|, # downwards double arrow - 'hArr' => q|$\Leftrightarrow$|, # left right double arrow - - # Mathematical Operators. - # Some of these require the `amssymb' package. - 'forall' => q|$\forall$|, # for all - 'part' => q|$\partial$|, # partial differential - 'exist' => q|$\exists$|, # there exists - 'empty' => q|$\emptyset$|, # empty set = null set = diameter - 'nabla' => q|$\nabla$|, # nabla = backward difference - 'isin' => q|$\in$|, # element of - 'notin' => q|$\notin$|, # not an element of - 'ni' => q|$\ni$|, # contains as member - 'prod' => q|$\prod$|, # n-ary product = product sign - # prod is NOT the same character as 'greek capital letter pi' though the - # same glyph might be used for both - 'sum' => q|$\sum$|, # n-ary sumation - # sum is NOT the same character as 'greek capital letter sigma' though - # the same glyph might be used for both - 'minus' => q|$-$|, # minus sign - 'lowast' => q|$\ast$|, # asterisk operator - 'radic' => q|$\surd$|, # square root = radical sign - 'prop' => q|$\propto$|, # proportional to - 'infin' => q|$\infty$|, # infinity - 'ang' => q|$\angle$|, # angle - 'and' => q|$\wedge$|, # logical and = wedge - 'or' => q|$\vee$|, # logical or = vee - 'cap' => q|$\cap$|, # intersection = cap - 'cup' => q|$\cup$|, # union = cup - 'int' => q|$\int$|, # integral - 'there4' => q|$\therefore$|, # therefore - 'sim' => q|$\sim$|, # tilde operator = varies with = similar to - # tilde operator is NOT the same character as the tilde - 'cong' => q|$\cong$|, # approximately equal to - 'asymp' => q|$\asymp$|, # almost equal to = asymptotic to - 'ne' => q|$\neq$|, # not equal to - 'equiv' => q|$\equiv$|, # identical to - 'le' => q|$\leq$|, # less-than or equal to - 'ge' => q|$\geq$|, # greater-than or equal to - 'sub' => q|$\subset$|, # subset of - 'sup' => q|$\supset$|, # superset of - # note that nsup, 'not a superset of' is not covered by the Symbol font - # encoding and is not included. - 'nsub' => q|$\not\subset$|, # not a subset of - 'sube' => q|$\subseteq$|, # subset of or equal to - 'supe' => q|$\supseteq$|, # superset of or equal to - 'oplus' => q|$\oplus$|, # circled plus = direct sum - 'otimes' => q|$\otimes$|, # circled times = vector product - 'perp' => q|$\perp$|, # up tack = orthogonal to = perpendicular - 'sdot' => q|$\cdot$|, # dot operator - # dot operator is NOT the same character as middle dot - - # Miscellaneous Technical - 'lceil' => q|$\lceil$|, # left ceiling = apl upstile - 'rceil' => q|$\rceil$|, # right ceiling - 'lfloor' => q|$\lfloor$|, # left floor = apl downstile - 'rfloor' => q|$\rfloor$|, # right floor - 'lang' => q|$\langle$|, # left-pointing angle bracket = bra - # lang is NOT the same character as 'less than' or 'single left-pointing - # angle quotation mark' - 'rang' => q|$\rangle$|, # right-pointing angle bracket = ket - # rang is NOT the same character as 'greater than' or 'single - # right-pointing angle quotation mark' - - # Geometric Shapes - 'loz' => q|$\lozenge$|, # lozenge - - # Miscellaneous Symbols - 'spades' => q|$\spadesuit$|, # black spade suit - 'clubs' => q|$\clubsuit$|, # black club suit = shamrock - 'hearts' => q|$\heartsuit$|, # black heart suit = valentine - 'diams' => q|$\diamondsuit$|, # black diamond suit - - # C0 Controls and Basic Latin - 'quot' => q|"|, # quotation mark = APL quote ["] - 'amp' => q|\&|, # ampersand - 'lt' => q|<|, # less-than sign - 'gt' => q|>|, # greater-than sign - 'OElig' => q|\OE{}|, # latin capital ligature OE - 'oelig' => q|\oe{}|, # latin small ligature oe - 'Scaron' => q|\v{S}|, # latin capital letter S with caron - 'scaron' => q|\v{s}|, # latin small letter s with caron - 'Yuml' => q|\"Y|, # latin capital letter Y with diaeresis - 'circ' => q|\textasciicircum{}|, # modifier letter circumflex accent - 'tilde' => q|\textasciitilde{}|, # small tilde - 'ensp' => q|\phantom{n}|, # en space - 'emsp' => q|\hspace{1em}|, # em space - 'thinsp' => q|\,|, # thin space - 'zwnj' => q|{}|, # zero width non-joiner -# 'zwj' => q||, # zero width joiner -# 'lrm' => q||, # left-to-right mark -# 'rlm' => q||, # right-to-left mark - 'ndash' => q|--|, # en dash - 'mdash' => q|---|, # em dash - 'lsquo' => q|\textquoteleft{}|, # left single quotation mark - 'rsquo' => q|\textquoteright{}|, # right single quotation mark - 'sbquo' => q|\quotesinglbase{}|, # single low-9 quotation mark - 'ldquo' => q|\textquotedblleft{}|, # left double quotation mark - 'rdquo' => q|\textquotedblright{}|, # right double quotation mark - 'bdquo' => q|\quotedblbase{}|, # double low-9 quotation mark - 'dagger' => q|\textdagger{}|, # dagger - 'Dagger' => q|\textdaggerdbl{}|, # double dagger - 'permil' => q|\textperthousand{}|, # per mille sign - 'lsaquo' => q|\guilsinglleft{}|, # single left-pointing angle quotation mark - 'rsaquo' => q|\guilsinglright{}|, # single right-pointing angle quotation mark - 'euro' => q|\texteuro{}|, # euro sign -); - -=head1 OBJECT METHODS - -The following methods are provided in this module. Methods inherited -from C<Pod::Select> are not described in the public interface. - -=over 4 - -=begin __PRIVATE__ - -=item C<initialize> - -Initialise the object. This method is subclassed from C<Pod::Parser>. -The base class method is invoked. This method defines the default -behaviour of the object unless overridden by supplying arguments to -the constructor. - -Internal settings are defaulted as well as the public instance data. -Internal hash values are accessed directly (rather than through -a method) and start with an underscore. - -This method should not be invoked by the user directly. - -=end __PRIVATE__ - -=cut - - - -# - An array for nested lists - -# Arguments have already been read by this point - -sub initialize { - my $self = shift; - - # print Dumper($self); - - # Internals - $self->{_Lists} = []; # For nested lists - $self->{_suppress_all_para} = 0; # For =begin blocks - $self->{_dont_modify_any_para}=0; # For =begin blocks - $self->{_CURRENT_HEAD1} = ''; # Name of current HEAD1 section - - # Options - only initialise if not already set - - # Cause the '=head1 NAME' field to be treated specially - # The contents of the NAME paragraph will be converted - # to a section title. All subsequent =head1 will be converted - # to =head2 and down. Will not affect =head1's prior to NAME - # Assumes: 'Module - purpose' format - # Also creates a purpose field - # The name is used for Labeling of the subsequent subsections - $self->{ReplaceNAMEwithSection} = 0 - unless exists $self->{ReplaceNAMEwithSection}; - $self->{AddPreamble} = 1 # make full latex document - unless exists $self->{AddPreamble}; - $self->{StartWithNewPage} = 0 # Start new page for pod section - unless exists $self->{StartWithNewPage}; - $self->{TableOfContents} = 0 # Add table of contents - unless exists $self->{TableOfContents}; # only relevent if AddPreamble=1 - $self->{AddPostamble} = 1 # Add closing latex code at end - unless exists $self->{AddPostamble}; # effectively end{document} and index - $self->{MakeIndex} = 1 # Add index (only relevant AddPostamble - unless exists $self->{MakeIndex}; # and AddPreamble) - - $self->{UniqueLabels} = 1 # Use label unique for each pod - unless exists $self->{UniqueLabels}; # either based on the filename - # or supplied - - # Control the level of =head1. default is \section - # - $self->{Head1Level} = 1 # Offset in latex sections - unless exists $self->{Head1Level}; # 0 is chapter, 2 is subsection - - # Control at which level numbering of sections is turned off - # ie subsection becomes subsection* - # The numbering is relative to the latex sectioning commands - # and is independent of Pod heading level - # default is to number \section but not \subsection - $self->{LevelNoNum} = 2 - unless exists $self->{LevelNoNum}; - - # Label to be used as prefix to all internal section names - # If not defined will attempt to derive it from the filename - # This can not happen when running parse_from_filehandle though - # hence the ability to set the label externally - # The label could then be Pod::Parser_DESCRIPTION or somesuch - - $self->{Label} = undef # label to be used as prefix - unless exists $self->{Label}; # to all internal section names - - # These allow the caller to add arbritrary latex code to - # start and end of document. AddPreamble and AddPostamble are ignored - # if these are set. - # Also MakeIndex and TableOfContents are also ignored. - $self->{UserPreamble} = undef # User supplied start (AddPreamble =1) - unless exists $self->{Label}; - $self->{UserPostamble} = undef # Use supplied end (AddPostamble=1) - unless exists $self->{Label}; - - # Run base initialize - $self->SUPER::initialize; - -} - -=back - -=head2 Data Accessors - -The following methods are provided for accessing instance data. These -methods should be used for accessing configuration parameters rather -than assuming the object is a hash. - -Default values can be supplied by using these names as keys to a hash -of arguments when using the C<new()> constructor. - -=over 4 - -=item B<AddPreamble> - -Logical to control whether a C<latex> preamble is to be written. -If true, a valid C<latex> preamble is written before the pod data is written. -This is similar to: - - \documentclass{article} - \usepackage[T1]{fontenc} - \usepackage{textcomp} - \begin{document} - -but will be more complicated if table of contents and indexing are required. -Can be used to set or retrieve the current value. - - $add = $parser->AddPreamble(); - $parser->AddPreamble(1); - -If used in conjunction with C<AddPostamble> a full latex document will -be written that could be immediately processed by C<latex>. - -For some pod escapes it may be necessary to include the amsmath -package. This is not yet added to the preamble automaatically. - -=cut - -sub AddPreamble { - my $self = shift; - if (@_) { - $self->{AddPreamble} = shift; - } - return $self->{AddPreamble}; -} - -=item B<AddPostamble> - -Logical to control whether a standard C<latex> ending is written to the output -file after the document has been processed. -In its simplest form this is simply: - - \end{document} - -but can be more complicated if a index is required. -Can be used to set or retrieve the current value. - - $add = $parser->AddPostamble(); - $parser->AddPostamble(1); - -If used in conjunction with C<AddPreaamble> a full latex document will -be written that could be immediately processed by C<latex>. - -=cut - -sub AddPostamble { - my $self = shift; - if (@_) { - $self->{AddPostamble} = shift; - } - return $self->{AddPostamble}; -} - -=item B<Head1Level> - -The C<latex> sectioning level that should be used to correspond to -a pod C<=head1> directive. This can be used, for example, to turn -a C<=head1> into a C<latex> C<subsection>. This should hold a number -corresponding to the required position in an array containing the -following elements: - - [0] chapter - [1] section - [2] subsection - [3] subsubsection - [4] paragraph - [5] subparagraph - -Can be used to set or retrieve the current value: - - $parser->Head1Level(2); - $sect = $parser->Head1Level; - -Setting this number too high can result in sections that may not be reproducible -in the expected way. For example, setting this to 4 would imply that C<=head3> -do not have a corresponding C<latex> section (C<=head1> would correspond to -a C<paragraph>). - -A check is made to ensure that the supplied value is an integer in the -range 0 to 5. - -Default is for a value of 1 (i.e. a C<section>). - -=cut - -sub Head1Level { - my $self = shift; - if (@_) { - my $arg = shift; - if ($arg =~ /^\d$/ && $arg <= $#LatexSections) { - $self->{Head1Level} = $arg; - } else { - carp "Head1Level supplied ($arg) must be integer in range 0 to ".$#LatexSections . "- Ignoring\n"; - } - } - return $self->{Head1Level}; -} - -=item B<Label> - -This is the label that is prefixed to all C<latex> label and index -entries to make them unique. In general, pods have similarly titled -sections (NAME, DESCRIPTION etc) and a C<latex> label will be multiply -defined if more than one pod document is to be included in a single -C<latex> file. To overcome this, this label is prefixed to a label -whenever a label is required (joined with an underscore) or to an -index entry (joined by an exclamation mark which is the normal index -separator). For example, C<\label{text}> becomes C<\label{Label_text}>. - -Can be used to set or retrieve the current value: - - $label = $parser->Label; - $parser->Label($label); - -This label is only used if C<UniqueLabels> is true. -Its value is set automatically from the C<NAME> field -if C<ReplaceNAMEwithSection> is true. If this is not the case -it must be set manually before starting the parse. - -Default value is C<undef>. - -=cut - -sub Label { - my $self = shift; - if (@_) { - $self->{Label} = shift; - } - return $self->{Label}; -} - -=item B<LevelNoNum> - -Control the point at which C<latex> section numbering is turned off. -For example, this can be used to make sure that C<latex> sections -are numbered but subsections are not. - -Can be used to set or retrieve the current value: - - $lev = $parser->LevelNoNum; - $parser->LevelNoNum(2); - -The argument must be an integer between 0 and 5 and is the same as the -number described in C<Head1Level> method description. The number has -nothing to do with the pod heading number, only the C<latex> sectioning. - -Default is 2. (i.e. C<latex> subsections are written as C<subsection*> -but sections are numbered). - -=cut - -sub LevelNoNum { - my $self = shift; - if (@_) { - $self->{LevelNoNum} = shift; - } - return $self->{LevelNoNum}; -} - -=item B<MakeIndex> - -Controls whether C<latex> commands for creating an index are to be inserted -into the preamble and postamble - - $makeindex = $parser->MakeIndex; - $parser->MakeIndex(0); - -Irrelevant if both C<AddPreamble> and C<AddPostamble> are false (or equivalently, -C<UserPreamble> and C<UserPostamble> are set). - -Default is for an index to be created. - -=cut - -sub MakeIndex { - my $self = shift; - if (@_) { - $self->{MakeIndex} = shift; - } - return $self->{MakeIndex}; -} - -=item B<ReplaceNAMEwithSection> - -This controls whether the C<NAME> section in the pod is to be translated -literally or converted to a slightly modified output where the section -name is the pod name rather than "NAME". - -If true, the pod segment - - =head1 NAME - - pod::name - purpose - - =head1 SYNOPSIS - -is converted to the C<latex> - - \section{pod::name\label{pod_name}\index{pod::name}} - - Purpose - - \subsection*{SYNOPSIS\label{pod_name_SYNOPSIS}% - \index{pod::name!SYNOPSIS}} - -(dependent on the value of C<Head1Level> and C<LevelNoNum>). Note that -subsequent C<head1> directives translate to subsections rather than -sections and that the labels and index now include the pod name (dependent -on the value of C<UniqueLabels>). - -The C<Label> is set from the pod name regardless of any current value -of C<Label>. - - $mod = $parser->ReplaceNAMEwithSection; - $parser->ReplaceNAMEwithSection(0); - -Default is to translate the pod literally. - -=cut - -sub ReplaceNAMEwithSection { - my $self = shift; - if (@_) { - $self->{ReplaceNAMEwithSection} = shift; - } - return $self->{ReplaceNAMEwithSection}; -} - -=item B<StartWithNewPage> - -If true, each pod translation will begin with a C<latex> -C<\clearpage>. - - $parser->StartWithNewPage(1); - $newpage = $parser->StartWithNewPage; - -Default is false. - -=cut - -sub StartWithNewPage { - my $self = shift; - if (@_) { - $self->{StartWithNewPage} = shift; - } - return $self->{StartWithNewPage}; -} - -=item B<TableOfContents> - -If true, a table of contents will be created. -Irrelevant if C<AddPreamble> is false or C<UserPreamble> -is set. - - $toc = $parser->TableOfContents; - $parser->TableOfContents(1); - -Default is false. - -=cut - -sub TableOfContents { - my $self = shift; - if (@_) { - $self->{TableOfContents} = shift; - } - return $self->{TableOfContents}; -} - -=item B<UniqueLabels> - -If true, the translator will attempt to make sure that -each C<latex> label or index entry will be uniquely identified -by prefixing the contents of C<Label>. This allows -multiple documents to be combined without clashing -common labels such as C<DESCRIPTION> and C<SYNOPSIS> - - $parser->UniqueLabels(1); - $unq = $parser->UniqueLabels; - -Default is true. - -=cut - -sub UniqueLabels { - my $self = shift; - if (@_) { - $self->{UniqueLabels} = shift; - } - return $self->{UniqueLabels}; -} - -=item B<UserPreamble> - -User supplied C<latex> preamble. Added before the pod translation -data. - -If set, the contents will be prepended to the output file before the translated -data regardless of the value of C<AddPreamble>. -C<MakeIndex> and C<TableOfContents> will also be ignored. - -=cut - -sub UserPreamble { - my $self = shift; - if (@_) { - $self->{UserPreamble} = shift; - } - return $self->{UserPreamble}; -} - -=item B<UserPostamble> - -User supplied C<latex> postamble. Added after the pod translation -data. - -If set, the contents will be prepended to the output file after the translated -data regardless of the value of C<AddPostamble>. -C<MakeIndex> will also be ignored. - -=cut - -sub UserPostamble { - my $self = shift; - if (@_) { - $self->{UserPostamble} = shift; - } - return $self->{UserPostamble}; -} - -=begin __PRIVATE__ - -=item B<Lists> - -Contains details of the currently active lists. - The array contains C<Pod::List> objects. A new C<Pod::List> -object is created each time a list is encountered and it is -pushed onto this stack. When the list context ends, it -is popped from the stack. The array will be empty if no -lists are active. - -Returns array of list information in list context -Returns array ref in scalar context - -=cut - - - -sub lists { - my $self = shift; - return @{ $self->{_Lists} } if wantarray(); - return $self->{_Lists}; -} - -=end __PRIVATE__ - -=back - -=begin __PRIVATE__ - -=head2 Subclassed methods - -The following methods override methods provided in the C<Pod::Select> -base class. See C<Pod::Parser> and C<Pod::Select> for more information -on what these methods require. - -=over 4 - -=cut - -######### END ACCESSORS ################### - -# Opening pod - -=item B<begin_pod> - -Writes the C<latex> preamble if requested. Only writes something -if AddPreamble is true. Writes a standard header unless a UserPreamble -is defined. - -=cut - -sub begin_pod { - my $self = shift; - - # Get the pod identification - # This should really come from the '=head1 NAME' paragraph - - my $infile = $self->input_file; - my $class = ref($self); - my $date = gmtime(time); - - # Comment message to say where this came from - my $comment = << "__TEX_COMMENT__"; -%% Latex generated from POD in document $infile -%% Using the perl module $class -%% Converted on $date -__TEX_COMMENT__ - - # Write the preamble - # If the caller has supplied one then we just use that - - my $preamble = ''; - - if ($self->AddPreamble) { - - if (defined $self->UserPreamble) { - - $preamble = $self->UserPreamble; - - # Add the description of where this came from - $preamble .= "\n$comment\n%% Preamble supplied by user.\n\n"; - - } else { - - # Write our own preamble - - # Code to initialise index making - # Use an array so that we can prepend comment if required - my @makeidx = ( - '\usepackage{makeidx}', - '\makeindex', - ); - - unless ($self->MakeIndex) { - foreach (@makeidx) { - $_ = '%% ' . $_; - } - } - my $makeindex = join("\n",@makeidx) . "\n"; - - # Table of contents - my $tableofcontents = '\tableofcontents'; - - $tableofcontents = '%% ' . $tableofcontents - unless $self->TableOfContents; - - # Roll our own - $preamble = << "__TEX_HEADER__"; -\\documentclass{article} -\\usepackage[T1]{fontenc} -\\usepackage{textcomp} - -$comment - -$makeindex - -\\begin{document} - -$tableofcontents - -__TEX_HEADER__ - - } - } - - # Write the header (blank if none) - $self->_output($preamble); - - # Start on new page if requested - $self->_output("\\clearpage\n") if $self->StartWithNewPage; - -} - - -=item B<end_pod> - -Write the closing C<latex> code. Only writes something if AddPostamble -is true. Writes a standard header unless a UserPostamble is defined. - -=cut - -sub end_pod { - my $self = shift; - - # End string - my $end = ''; - - # Use the user version of the postamble if defined - if ($self->AddPostamble) { - - if (defined $self->UserPostamble) { - $end = $self->UserPostamble; - - } else { - - # Check for index - my $makeindex = '\printindex'; - - $makeindex = '%% '. $makeindex unless $self->MakeIndex; - - $end = "$makeindex\n\n\\end{document}\n"; - } - } - - $self->_output($end); - -} - -=item B<command> - -Process basic pod commands. - -=cut - -sub command { - my $self = shift; - my ($command, $paragraph, $line_num, $parobj) = @_; - - # return if we dont care - return if $command eq 'pod'; - - # Store a copy of the raw text in case we are in a =for - # block and need to preserve the existing latex - my $rawpara = $paragraph; - - # Do the latex escapes - $paragraph = $self->_replace_special_chars($paragraph); - - # Interpolate pod sequences in paragraph - $paragraph = $self->interpolate($paragraph, $line_num); - $paragraph =~ s/\s+$//; - - # Replace characters that can only be done after - # interpolation of interior sequences - $paragraph = $self->_replace_special_chars_late($paragraph); - - # Now run the command - if ($command eq 'over') { - - $self->begin_list($paragraph, $line_num); - - } elsif ($command eq 'item') { - - $self->add_item($paragraph, $line_num); - - } elsif ($command eq 'back') { - - $self->end_list($line_num); - - } elsif ($command eq 'head1') { - - # Store the name of the section - $self->{_CURRENT_HEAD1} = $paragraph; - - # Print it - $self->head(1, $paragraph, $parobj); - - } elsif ($command eq 'head2') { - - $self->head(2, $paragraph, $parobj); - - } elsif ($command eq 'head3') { - - $self->head(3, $paragraph, $parobj); - - } elsif ($command eq 'head4') { - - $self->head(4, $paragraph, $parobj); - - } elsif ($command eq 'head5') { - - $self->head(5, $paragraph, $parobj); - - } elsif ($command eq 'head6') { - - $self->head(6, $paragraph, $parobj); - - } elsif ($command eq 'begin') { - - # pass through if latex - if ($paragraph =~ /^latex/i) { - # Make sure that subsequent paragraphs are not modfied before printing - $self->{_dont_modify_any_para} = 1; - - } else { - # Suppress all subsequent paragraphs unless - # it is explcitly intended for latex - $self->{_suppress_all_para} = 1; - } - - } elsif ($command eq 'for') { - - # =for latex - # some latex - - # With =for we will get the text for the full paragraph - # as well as the format name. - # We do not get an additional paragraph later on. The next - # paragraph is not governed by the =for - - # The first line contains the format and the rest is the - # raw code. - my ($format, $chunk) = split(/\n/, $rawpara, 2); - - # If we have got some latex code print it out immediately - # unmodified. Else do nothing. - if ($format =~ /^latex/i) { - # Make sure that next paragraph is not modfied before printing - $self->_output( $chunk ); - - } - - } elsif ($command eq 'end') { - - # Reset suppression - $self->{_suppress_all_para} = 0; - $self->{_dont_modify_any_para} = 0; - - } elsif ($command eq 'pod') { - - # Do nothing - - } else { - carp "Command $command not recognised at line $line_num\n"; - } - -} - -=item B<verbatim> - -Verbatim text - -=cut - -sub verbatim { - my $self = shift; - my ($paragraph, $line_num, $parobj) = @_; - - # Expand paragraph unless in =begin block - if ($self->{_dont_modify_any_para}) { - # Just print as is - $self->_output($paragraph); - - } else { - - return if $paragraph =~ /^\s+$/; - - # Clean trailing space - $paragraph =~ s/\s+$//; - - # Clean tabs. Routine taken from Tabs.pm - # by David Muir Sharnoff muir@idiom.com, - # slightly modified by hsmyers@sdragons.com 10/22/01 - my @l = split("\n",$paragraph); - foreach (@l) { - 1 while s/(^|\n)([^\t\n]*)(\t+)/ - $1. $2 . (" " x - (8 * length($3) - - (length($2) % 8))) - /sex; - } - $paragraph = join("\n",@l); - # End of change. - - - - $self->_output('\begin{verbatim}' . "\n$paragraph\n". '\end{verbatim}'."\n"); - } -} - -=item B<textblock> - -Plain text paragraph. - -=cut - -sub textblock { - my $self = shift; - my ($paragraph, $line_num, $parobj) = @_; - - # print Dumper($self); - - # Expand paragraph unless in =begin block - if ($self->{_dont_modify_any_para}) { - # Just print as is - $self->_output($paragraph); - - return; - } - - - # Escape latex special characters - $paragraph = $self->_replace_special_chars($paragraph); - - # Interpolate interior sequences - my $expansion = $self->interpolate($paragraph, $line_num); - $expansion =~ s/\s+$//; - - # Escape special characters that can not be done earlier - $expansion = $self->_replace_special_chars_late($expansion); - - # If we are replacing 'head1 NAME' with a section - # we need to look in the paragraph and rewrite things - # Need to make sure this is called only on the first paragraph - # following 'head1 NAME' and not on subsequent paragraphs that may be - # present. - if ($self->{_CURRENT_HEAD1} =~ /^NAME/i && $self->ReplaceNAMEwithSection()) { - - # Strip white space from start and end - $paragraph =~ s/^\s+//; - $paragraph =~ s/\s$//; - - # Split the string into 2 parts - my ($name, $purpose) = split(/\s+-\s+/, $expansion,2); - - # Now prevent this from triggering until a new head1 NAME is set - $self->{_CURRENT_HEAD1} = '_NAME'; - - # Might want to clear the Label() before doing this (CHECK) - - # Print the heading - $self->head(1, $name, $parobj); - - # Set the labeling in case we want unique names later - $self->Label( $self->_create_label( $name, 1 ) ); - - # Raise the Head1Level by one so that subsequent =head1 appear - # as subsections of the main name section unless we are already - # at maximum [Head1Level() could check this itself - CHECK] - $self->Head1Level( $self->Head1Level() + 1) - unless $self->Head1Level == $#LatexSections; - - # Now write out the new latex paragraph - $purpose = ucfirst($purpose); - $self->_output("\n\n$purpose\n\n"); - - } else { - # Just write the output - $self->_output("\n\n$expansion\n\n"); - } - -} - -=item B<interior_sequence> - -Interior sequence expansion - -=cut - -sub interior_sequence { - my $self = shift; - - my ($seq_command, $seq_argument, $pod_seq) = @_; - - if ($seq_command eq 'B') { - return "\\textbf{$seq_argument}"; - - } elsif ($seq_command eq 'I') { - return "\\textit{$seq_argument}"; - - } elsif ($seq_command eq 'E') { - - # If it is simply a number - if ($seq_argument =~ /^\d+$/) { - return chr($seq_argument); - # Look up escape in hash table - } elsif (exists $HTML_Escapes{$seq_argument}) { - return $HTML_Escapes{$seq_argument}; - - } else { - my ($file, $line) = $pod_seq->file_line(); - warn "Escape sequence $seq_argument not recognised at line $line of file $file\n"; - return; - } - - } elsif ($seq_command eq 'Z') { - - # Zero width space - return '{}'; - - } elsif ($seq_command eq 'C') { - return "\\texttt{$seq_argument}"; - - } elsif ($seq_command eq 'F') { - return "\\emph{$seq_argument}"; - - } elsif ($seq_command eq 'S') { - # non breakable spaces - my $nbsp = '~'; - - $seq_argument =~ s/\s/$nbsp/g; - return $seq_argument; - - } elsif ($seq_command eq 'L') { - my $link = new Pod::Hyperlink($seq_argument); - - # undef on failure - unless (defined $link) { - carp $@; - return; - } - - # Handle internal links differently - my $type = $link->type; - my $page = $link->page; - - if ($type eq 'section' && $page eq '') { - # Use internal latex reference - my $node = $link->node; - - # Convert to a label - $node = $self->_create_label($node); - - return "\\S\\ref{$node}"; - - } else { - # Use default markup for external references - # (although Starlink would use \xlabel) - my $markup = $link->markup; - my ($file, $line) = $pod_seq->file_line(); - - return $self->interpolate($link->markup, $line); - } - - - - } elsif ($seq_command eq 'P') { - # Special markup for Pod::Hyperlink - # Replace :: with / - but not sure if I want to do this - # any more. - my $link = $seq_argument; - $link =~ s|::|/|g; - - my $ref = "\\emph{$seq_argument}"; - return $ref; - - } elsif ($seq_command eq 'Q') { - # Special markup for Pod::Hyperlink - return "\\textsf{$seq_argument}"; - - } elsif ($seq_command eq 'X') { - # Index entries - - # use \index command - # I will let '!' go through for now - # not sure how sub categories are handled in X<> - my $index = $self->_create_index($seq_argument); - return "\\index{$index}\n"; - - } else { - carp "Unknown sequence $seq_command<$seq_argument>"; - } - -} - -=back - -=head2 List Methods - -Methods used to handle lists. - -=over 4 - -=item B<begin_list> - -Called when a new list is found (via the C<over> directive). -Creates a new C<Pod::List> object and stores it on the -list stack. - - $parser->begin_list($indent, $line_num); - -=cut - -sub begin_list { - my $self = shift; - my $indent = shift; - my $line_num = shift; - - # Indicate that a list should be started for the next item - # need to do this to work out the type of list - push ( @{$self->lists}, new Pod::List(-indent => $indent, - -start => $line_num, - -file => $self->input_file, - ) - ); - -} - -=item B<end_list> - -Called when the end of a list is found (the C<back> directive). -Pops the C<Pod::List> object off the stack of lists and writes -the C<latex> code required to close a list. - - $parser->end_list($line_num); - -=cut - -sub end_list { - my $self = shift; - my $line_num = shift; - - unless (defined $self->lists->[-1]) { - my $file = $self->input_file; - warn "No list is active at line $line_num (file=$file). Missing =over?\n"; - return; - } - - # What to write depends on list type - my $type = $self->lists->[-1]->type; - - # Dont write anything if the list type is not set - # iomplying that a list was created but no entries were - # placed in it (eg because of a =begin/=end combination) - $self->_output("\\end{$type}\n") - if (defined $type && length($type) > 0); - - # Clear list - pop(@{ $self->lists}); - -} - -=item B<add_item> - -Add items to the list. The first time an item is encountered -(determined from the state of the current C<Pod::List> object) -the type of list is determined (ordered, unnumbered or description) -and the relevant latex code issued. - - $parser->add_item($paragraph, $line_num); - -=cut - -sub add_item { - my $self = shift; - my $paragraph = shift; - my $line_num = shift; - - unless (defined $self->lists->[-1]) { - my $file = $self->input_file; - warn "List has already ended by line $line_num of file $file. Missing =over?\n"; - # Replace special chars -# $paragraph = $self->_replace_special_chars($paragraph); - $self->_output("$paragraph\n\n"); - return; - } - - # If paragraphs printing is turned off via =begin/=end or whatver - # simply return immediately - return if $self->{_suppress_all_para}; - - # Check to see whether we are starting a new lists - if (scalar($self->lists->[-1]->item) == 0) { - - # Examine the paragraph to determine what type of list - # we have - $paragraph =~ s/\s+$//; - $paragraph =~ s/^\s+//; - - my $type; - if (substr($paragraph, 0,1) eq '*') { - $type = 'itemize'; - } elsif ($paragraph =~ /^\d/) { - $type = 'enumerate'; - } else { - $type = 'description'; - } - $self->lists->[-1]->type($type); - - $self->_output("\\begin{$type}\n"); - - } - - my $type = $self->lists->[-1]->type; - - if ($type eq 'description') { - # Handle long items - long items do not wrap - # If the string is longer than 40 characters we split - # it into a real item header and some bold text. - my $maxlen = 40; - my ($hunk1, $hunk2) = $self->_split_delimited( $paragraph, $maxlen ); - - # Print the first hunk - $self->_output("\n\\item[{$hunk1}] "); - - # and the second hunk if it is defined - if ($hunk2) { - $self->_output("\\textbf{$hunk2}"); - } else { - # Not there so make sure we have a new line - $self->_output("\\mbox{}"); - } - - } else { - # If the item was '* Something' or '\d+ something' we still need to write - # out the something. Also allow 1) and 1. - my $extra_info = $paragraph; - $extra_info =~ s/^(\*|\d+[\.\)]?)\s*//; - $self->_output("\n\\item $extra_info"); - } - - # Store the item name in the object. Required so that - # we can tell if the list is new or not - $self->lists->[-1]->item($paragraph); - -} - -=back - -=head2 Methods for headings - -=over 4 - -=item B<head> - -Print a heading of the required level. - - $parser->head($level, $paragraph, $parobj); - -The first argument is the pod heading level. The second argument -is the contents of the heading. The 3rd argument is a Pod::Paragraph -object so that the line number can be extracted. - -=cut - -sub head { - my $self = shift; - my $num = shift; - my $paragraph = shift; - my $parobj = shift; - - # If we are replace 'head1 NAME' with a section - # we return immediately if we get it - return - if ($self->{_CURRENT_HEAD1} =~ /^NAME/i && $self->ReplaceNAMEwithSection()); - - # Create a label - my $label = $self->_create_label($paragraph); - - # Create an index entry - my $index = $self->_create_index($paragraph); - - # Work out position in the above array taking into account - # that =head1 is equivalent to $self->Head1Level - - my $level = $self->Head1Level() - 1 + $num; - - # Warn if heading to large - if ($num > $#LatexSections) { - my $line = $parobj->file_line; - my $file = $self->input_file; - warn "Heading level too large ($level) for LaTeX at line $line of file $file\n"; - $level = $#LatexSections; - } - - # Check to see whether section should be unnumbered - my $star = ($level >= $self->LevelNoNum ? '*' : ''); - - # Section - $self->_output("\\" .$LatexSections[$level] .$star ."{$paragraph\\label{".$label ."}\\index{".$index."}}\n"); - -} - - -=back - -=end __PRIVATE__ - -=begin __PRIVATE__ - -=head2 Internal methods - -Internal routines are described in this section. They do not form part of the -public interface. All private methods start with an underscore. - -=over 4 - -=item B<_output> - -Output text to the output filehandle. This method must be always be called -to output parsed text. - - $parser->_output($text); - -Does not write anything if a =begin is active that should be -ignored. - -=cut - -sub _output { - my $self = shift; - my $text = shift; - - print { $self->output_handle } $text - unless $self->{_suppress_all_para}; - -} - - -=item B<_replace_special_chars> - -Subroutine to replace characters that are special in C<latex> -with the escaped forms - - $escaped = $parser->_replace_special_chars($paragraph); - -Need to call this routine before interior_sequences are munged but not -if verbatim. It must be called before interpolation of interior -sequences so that curly brackets and special latex characters inserted -during interpolation are not themselves escaped. This means that < and -> can not be modified here since the text still contains interior -sequences. - -Special characters and the C<latex> equivalents are: - - } \} - { \{ - _ \_ - $ \$ - % \% - & \& - \ $\backslash$ - ^ \^{} - ~ \~{} - # \# - -=cut - -sub _replace_special_chars { - my $self = shift; - my $paragraph = shift; - - # Replace a \ with $\backslash$ - # This is made more complicated because the dollars will be escaped - # by the subsequent replacement. Easiest to add \backslash - # now and then add the dollars - $paragraph =~ s/\\/\\backslash/g; - - # Must be done after escape of \ since this command adds latex escapes - # Replace characters that can be escaped - $paragraph =~ s/([\$\#&%_{}])/\\$1/g; - - # Replace ^ characters with \^{} so that $^F works okay - $paragraph =~ s/(\^)/\\$1\{\}/g; - - # Replace tilde (~) with \texttt{\~{}} - $paragraph =~ s/~/\\texttt\{\\~\{\}\}/g; - - # Now add the dollars around each \backslash - $paragraph =~ s/(\\backslash)/\$$1\$/g; - return $paragraph; -} - -=item B<_replace_special_chars_late> - -Replace special characters that can not be replaced before interior -sequence interpolation. See C<_replace_special_chars> for a routine -to replace special characters prior to interpolation of interior -sequences. - -Does the following transformation: - - < $<$ - > $>$ - | $|$ - - -=cut - -sub _replace_special_chars_late { - my $self = shift; - my $paragraph = shift; - - # < and > - $paragraph =~ s/(<|>)/\$$1\$/g; - - # Replace | with $|$ - $paragraph =~ s'\|'$|$'g; - - - return $paragraph; -} - - -=item B<_create_label> - -Return a string that can be used as an internal reference -in a C<latex> document (i.e. accepted by the C<\label> command) - - $label = $parser->_create_label($string) - -If UniqueLabels is true returns a label prefixed by Label() -This can be suppressed with an optional second argument. - - $label = $parser->_create_label($string, $suppress); - -If a second argument is supplied (of any value including undef) -the Label() is never prefixed. This means that this routine can -be called to create a Label() without prefixing a previous setting. - -=cut - -sub _create_label { - my $self = shift; - my $paragraph = shift; - my $suppress = (@_ ? 1 : 0 ); - - # Remove latex commands - $paragraph = $self->_clean_latex_commands($paragraph); - - # Remove non alphanumerics from the label and replace with underscores - # want to protect '-' though so use negated character classes - $paragraph =~ s/[^-:\w]/_/g; - - # Multiple underscores will look unsightly so remove repeats - # This will also have the advantage of tidying up the end and - # start of string - $paragraph =~ s/_+/_/g; - - # If required need to make sure that the label is unique - # since it is possible to have multiple pods in a single - # document - if (!$suppress && $self->UniqueLabels() && defined $self->Label) { - $paragraph = $self->Label() .'_'. $paragraph; - } - - return $paragraph; -} - - -=item B<_create_index> - -Similar to C<_create_label> except an index entry is created. -If C<UniqueLabels> is true, the index entry is prefixed by -the current C<Label> and an exclamation mark. - - $ind = $parser->_create_index($paragraph); - -An exclamation mark is used by C<makeindex> to generate -sub-entries in an index. - -=cut - -sub _create_index { - my $self = shift; - my $paragraph = shift; - my $suppress = (@_ ? 1 : 0 ); - - # Remove latex commands - $paragraph = $self->_clean_latex_commands($paragraph); - - # If required need to make sure that the index entry is unique - # since it is possible to have multiple pods in a single - # document - if (!$suppress && $self->UniqueLabels() && defined $self->Label) { - $paragraph = $self->Label() .'!'. $paragraph; - } - - # Need to replace _ with space - $paragraph =~ s/_/ /g; - - return $paragraph; - -} - -=item B<_clean_latex_commands> - -Removes latex commands from text. The latex command is assumed to be of the -form C<\command{ text }>. "C<text>" is retained - - $clean = $parser->_clean_latex_commands($text); - -=cut - -sub _clean_latex_commands { - my $self = shift; - my $paragraph = shift; - - # Remove latex commands of the form \text{ } - # and replace with the contents of the { } - # need to make this non-greedy so that it can handle - # "\text{a} and \text2{b}" - # without converting it to - # "a} and \text2{b" - # This match will still get into trouble if \} is present - # This is not vital since the subsequent replacement of non-alphanumeric - # characters will tidy it up anyway - $paragraph =~ s/\\\w+{(.*?)}/$1/g; - - return $paragraph -} - -=item B<_split_delimited> - -Split the supplied string into two parts at approximately the -specified word boundary. Special care is made to make sure that it -does not split in the middle of some curly brackets. - -e.g. "this text is \textbf{very bold}" would not be split into -"this text is \textbf{very" and " bold". - - ($hunk1, $hunk2) = $self->_split_delimited( $para, $length); - -The length indicates the maximum length of hunk1. - -=cut - -# initially Supplied by hsmyers@sdragons.com -# 10/25/01, utility to split \hbox -# busting lines. Reformatted by TimJ to match module style. -sub _split_delimited { - my $self = shift; - my $input = shift; - my $limit = shift; - - # Return immediately if already small - return ($input, '') if length($input) < $limit; - - my @output; - my $s = ''; - my $t = ''; - my $depth = 0; - my $token; - - $input =~ s/\n/ /gm; - $input .= ' '; - foreach ( split ( //, $input ) ) { - $token .= $_; - if (/\{/) { - $depth++; - } elsif ( /}/ ) { - $depth--; - } elsif ( / / and $depth == 0) { - push @output, $token if ( $token and $token ne ' ' ); - $token = ''; - } - } - - foreach (@output) { - if (length($s) < $limit) { - $s .= $_; - } else { - $t .= $_; - } - } - - # Tidy up - $s =~ s/\s+$//; - $t =~ s/\s+$//; - return ($s,$t); -} - -=back - -=end __PRIVATE__ - -=head1 NOTES - -Compatible with C<latex2e> only. Can not be used with C<latex> v2.09 -or earlier. - -A subclass of C<Pod::Select> so that specific pod sections can be -converted to C<latex> by using the C<select> method. - -Some HTML escapes are missing and many have not been tested. - -=head1 SEE ALSO - -L<Pod::Parser>, L<Pod::Select>, L<pod2latex> - -=head1 AUTHORS - -Tim Jenness E<lt>tjenness@cpan.orgE<gt> - -Bug fixes and improvements have been received from: Simon Cozens -E<lt>simon@cozens.netE<gt>, Mark A. Hershberger -E<lt>mah@everybody.orgE<gt>, Marcel Grunauer -E<lt>marcel@codewerk.comE<gt>, Hugh S Myers -E<lt>hsmyers@sdragons.comE<gt>, Peter J Acklam -E<lt>jacklam@math.uio.noE<gt>, Sudhi Herle E<lt>sudhi@herle.netE<gt>, -Ariel Scolnicov E<lt>ariels@compugen.co.ilE<gt>, -Adriano Rodrigues Ferreira E<lt>ferreira@triang.com.brE<gt> and -R. de Vries E<lt>r.de.vries@dutchspace.nlE<gt>. - - -=head1 COPYRIGHT - -Copyright (C) 2000-2004 Tim Jenness. All Rights Reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=begin __PRIVATE__ - -=head1 REVISION - -$Id: LaTeX.pm,v 1.19 2004/12/30 01:40:44 timj Exp $ - -=end __PRIVATE__ - -=cut - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Man.pm b/Master/tlpkg/tlperl.old/lib/Pod/Man.pm deleted file mode 100644 index 693e4c46896..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Man.pm +++ /dev/null @@ -1,1413 +0,0 @@ -# Pod::Man -- Convert POD data to formatted *roff input. -# $Id: Man.pm,v 1.37 2003/03/30 22:34:11 eagle Exp $ -# -# Copyright 1999, 2000, 2001, 2002, 2003 by Russ Allbery <rra@stanford.edu> -# -# This program is free software; you may redistribute it and/or modify it -# under the same terms as Perl itself. -# -# This module translates POD documentation into *roff markup using the man -# macro set, and is intended for converting POD documents written as Unix -# manual pages to manual pages that can be read by the man(1) command. It is -# a replacement for the pod2man command distributed with versions of Perl -# prior to 5.6. -# -# Perl core hackers, please note that this module is also separately -# maintained outside of the Perl core as part of the podlators. Please send -# me any patches at the address above in addition to sending them to the -# standard Perl mailing lists. - -############################################################################## -# Modules and declarations -############################################################################## - -package Pod::Man; - -require 5.005; - -use Carp qw(carp croak); -use Pod::ParseLink qw(parselink); -use Pod::Parser (); - -use strict; -use subs qw(makespace); -use vars qw(@ISA %ESCAPES $PREAMBLE $VERSION); - -@ISA = qw(Pod::Parser); - -# Don't use the CVS revision as the version, since this module is also in Perl -# core and too many things could munge CVS magic revision strings. This -# number should ideally be the same as the CVS revision in podlators, however. -$VERSION = 1.37; - - -############################################################################## -# Preamble and *roff output tables -############################################################################## - -# The following is the static preamble which starts all *roff output we -# generate. It's completely static except for the font to use as a -# fixed-width font, which is designed by @CFONT@, and the left and right -# quotes to use for C<> text, designated by @LQOUTE@ and @RQUOTE@. $PREAMBLE -# should therefore be run through s/\@CFONT\@/<font>/g before output. -$PREAMBLE = <<'----END OF PREAMBLE----'; -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp \" Vertical space (when we can't use .PP) -.if t .sp .5v -.if n .sp -.. -.de Vb \" Begin verbatim text -.ft @CFONT@ -.nf -.ne \\$1 -.. -.de Ve \" End verbatim text -.ft R -.fi -.. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. \*(C+ will -.\" give a nicer C++. Capital omega is used to do unbreakable dashes and -.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, -.\" nothing in troff, for use with C<>. -.tr \(*W- -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" -. ds C` @LQUOTE@ -. ds C' @RQUOTE@ -'br\} -.el\{\ -. ds -- \|\(em\| -. ds PI \(*p -. ds L" `` -. ds R" '' -'br\} -.\" -.\" If the F register is turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index -.\" entries marked with X<> in POD. Of course, you'll have to process the -.\" output yourself in some meaningful fashion. -.if \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" -.. -. nr % 0 -. rr F -.\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na -.\" -.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). -.\" Fear. Run. Save yourself. No user-serviceable parts. -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds / -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -.\} -.rm #[ #] #H #V #F C -----END OF PREAMBLE---- -#`# for cperl-mode - -# This table is taken nearly verbatim from Tom Christiansen's pod2man. It -# assumes that the standard preamble has already been printed, since that's -# what defines all of the accent marks. Note that some of these are quoted -# with double quotes since they contain embedded single quotes, so use \\ -# uniformly for backslash for readability. -%ESCAPES = ( - 'amp' => '&', # ampersand - 'apos' => "'", # apostrophe - 'lt' => '<', # left chevron, less-than - 'gt' => '>', # right chevron, greater-than - 'quot' => '"', # double quote - 'sol' => '/', # solidus (forward slash) - 'verbar' => '|', # vertical bar - - 'Aacute' => "A\\*'", # capital A, acute accent - 'aacute' => "a\\*'", # small a, acute accent - 'Acirc' => 'A\\*^', # capital A, circumflex accent - 'acirc' => 'a\\*^', # small a, circumflex accent - 'AElig' => '\*(AE', # capital AE diphthong (ligature) - 'aelig' => '\*(ae', # small ae diphthong (ligature) - 'Agrave' => "A\\*`", # capital A, grave accent - 'agrave' => "A\\*`", # small a, grave accent - 'Aring' => 'A\\*o', # capital A, ring - 'aring' => 'a\\*o', # small a, ring - 'Atilde' => 'A\\*~', # capital A, tilde - 'atilde' => 'a\\*~', # small a, tilde - 'Auml' => 'A\\*:', # capital A, dieresis or umlaut mark - 'auml' => 'a\\*:', # small a, dieresis or umlaut mark - 'Ccedil' => 'C\\*,', # capital C, cedilla - 'ccedil' => 'c\\*,', # small c, cedilla - 'Eacute' => "E\\*'", # capital E, acute accent - 'eacute' => "e\\*'", # small e, acute accent - 'Ecirc' => 'E\\*^', # capital E, circumflex accent - 'ecirc' => 'e\\*^', # small e, circumflex accent - 'Egrave' => 'E\\*`', # capital E, grave accent - 'egrave' => 'e\\*`', # small e, grave accent - 'ETH' => '\\*(D-', # capital Eth, Icelandic - 'eth' => '\\*(d-', # small eth, Icelandic - 'Euml' => 'E\\*:', # capital E, dieresis or umlaut mark - 'euml' => 'e\\*:', # small e, dieresis or umlaut mark - 'Iacute' => "I\\*'", # capital I, acute accent - 'iacute' => "i\\*'", # small i, acute accent - 'Icirc' => 'I\\*^', # capital I, circumflex accent - 'icirc' => 'i\\*^', # small i, circumflex accent - 'Igrave' => 'I\\*`', # capital I, grave accent - 'igrave' => 'i\\*`', # small i, grave accent - 'Iuml' => 'I\\*:', # capital I, dieresis or umlaut mark - 'iuml' => 'i\\*:', # small i, dieresis or umlaut mark - 'Ntilde' => 'N\*~', # capital N, tilde - 'ntilde' => 'n\*~', # small n, tilde - 'Oacute' => "O\\*'", # capital O, acute accent - 'oacute' => "o\\*'", # small o, acute accent - 'Ocirc' => 'O\\*^', # capital O, circumflex accent - 'ocirc' => 'o\\*^', # small o, circumflex accent - 'Ograve' => 'O\\*`', # capital O, grave accent - 'ograve' => 'o\\*`', # small o, grave accent - 'Oslash' => 'O\\*/', # capital O, slash - 'oslash' => 'o\\*/', # small o, slash - 'Otilde' => 'O\\*~', # capital O, tilde - 'otilde' => 'o\\*~', # small o, tilde - 'Ouml' => 'O\\*:', # capital O, dieresis or umlaut mark - 'ouml' => 'o\\*:', # small o, dieresis or umlaut mark - 'szlig' => '\*8', # small sharp s, German (sz ligature) - 'THORN' => '\\*(Th', # capital THORN, Icelandic - 'thorn' => '\\*(th', # small thorn, Icelandic - 'Uacute' => "U\\*'", # capital U, acute accent - 'uacute' => "u\\*'", # small u, acute accent - 'Ucirc' => 'U\\*^', # capital U, circumflex accent - 'ucirc' => 'u\\*^', # small u, circumflex accent - 'Ugrave' => 'U\\*`', # capital U, grave accent - 'ugrave' => 'u\\*`', # small u, grave accent - 'Uuml' => 'U\\*:', # capital U, dieresis or umlaut mark - 'uuml' => 'u\\*:', # small u, dieresis or umlaut mark - 'Yacute' => "Y\\*'", # capital Y, acute accent - 'yacute' => "y\\*'", # small y, acute accent - 'yuml' => 'y\\*:', # small y, dieresis or umlaut mark - - 'nbsp' => '\\ ', # non-breaking space - 'shy' => '', # soft (discretionary) hyphen -); - - -############################################################################## -# Static helper functions -############################################################################## - -# Protect leading quotes and periods against interpretation as commands. Also -# protect anything starting with a backslash, since it could expand or hide -# something that *roff would interpret as a command. This is overkill, but -# it's much simpler than trying to parse *roff here. -sub protect { - local $_ = shift; - s/^([.\'\\])/\\&$1/mg; - $_; -} - -# Translate a font string into an escape. -sub toescape { (length ($_[0]) > 1 ? '\f(' : '\f') . $_[0] } - - -############################################################################## -# Initialization -############################################################################## - -# Initialize the object. Here, we also process any additional options passed -# to the constructor or set up defaults if none were given. center is the -# centered title, release is the version number, and date is the date for the -# documentation. Note that we can't know what file name we're processing due -# to the architecture of Pod::Parser, so that *has* to either be passed to the -# constructor or set separately with Pod::Man::name(). -sub initialize { - my $self = shift; - - # Figure out the fixed-width font. If user-supplied, make sure that they - # are the right length. - for (qw/fixed fixedbold fixeditalic fixedbolditalic/) { - if (defined $$self{$_}) { - if (length ($$self{$_}) < 1 || length ($$self{$_}) > 2) { - croak qq(roff font should be 1 or 2 chars,) - . qq( not "$$self{$_}"); - } - } else { - $$self{$_} = ''; - } - } - - # Set the default fonts. We can't be sure what fixed bold-italic is going - # to be called, so default to just bold. - $$self{fixed} ||= 'CW'; - $$self{fixedbold} ||= 'CB'; - $$self{fixeditalic} ||= 'CI'; - $$self{fixedbolditalic} ||= 'CB'; - - # Set up a table of font escapes. First number is fixed-width, second is - # bold, third is italic. - $$self{FONTS} = { '000' => '\fR', '001' => '\fI', - '010' => '\fB', '011' => '\f(BI', - '100' => toescape ($$self{fixed}), - '101' => toescape ($$self{fixeditalic}), - '110' => toescape ($$self{fixedbold}), - '111' => toescape ($$self{fixedbolditalic})}; - - # Extra stuff for page titles. - $$self{center} = 'User Contributed Perl Documentation' - unless defined $$self{center}; - $$self{indent} = 4 unless defined $$self{indent}; - - # We used to try first to get the version number from a local binary, but - # we shouldn't need that any more. Get the version from the running Perl. - # Work a little magic to handle subversions correctly under both the - # pre-5.6 and the post-5.6 version numbering schemes. - if (!defined $$self{release}) { - my @version = ($] =~ /^(\d+)\.(\d{3})(\d{0,3})$/); - $version[2] ||= 0; - $version[2] *= 10 ** (3 - length $version[2]); - for (@version) { $_ += 0 } - $$self{release} = 'perl v' . join ('.', @version); - } - - # Double quotes in things that will be quoted. - for (qw/center date release/) { - $$self{$_} =~ s/\"/\"\"/g if $$self{$_}; - } - - # Figure out what quotes we'll be using for C<> text. - $$self{quotes} ||= '"'; - if ($$self{quotes} eq 'none') { - $$self{LQUOTE} = $$self{RQUOTE} = ''; - } elsif (length ($$self{quotes}) == 1) { - $$self{LQUOTE} = $$self{RQUOTE} = $$self{quotes}; - } elsif ($$self{quotes} =~ /^(.)(.)$/ - || $$self{quotes} =~ /^(..)(..)$/) { - $$self{LQUOTE} = $1; - $$self{RQUOTE} = $2; - } else { - croak qq(Invalid quote specification "$$self{quotes}"); - } - - # Double the first quote; note that this should not be s///g as two double - # quotes is represented in *roff as three double quotes, not four. Weird, - # I know. - $$self{LQUOTE} =~ s/\"/\"\"/; - $$self{RQUOTE} =~ s/\"/\"\"/; - - $self->SUPER::initialize; -} - -# For each document we process, output the preamble first. -sub begin_pod { - my $self = shift; - - # Try to figure out the name and section from the file name. - my $section = $$self{section} || 1; - my $name = $$self{name}; - if (!defined $name) { - $name = $self->input_file; - $section = 3 if (!$$self{section} && $name =~ /\.pm\z/i); - $name =~ s/\.p(od|[lm])\z//i; - if ($section !~ /^3/) { - require File::Basename; - $name = uc File::Basename::basename ($name); - } else { - # Assume that we're dealing with a module. We want to figure out - # the full module name from the path to the file, but we don't - # want to include too much of the path into the module name. Lose - # everything up to the first of: - # - # */lib/*perl*/ standard or site_perl module - # */*perl*/lib/ from -Dprefix=/opt/perl - # */*perl*/ random module hierarchy - # - # which works. Also strip off a leading site or site_perl - # component, any OS-specific component, and any version number - # component, and strip off an initial component of "lib" or - # "blib/lib" since that's what ExtUtils::MakeMaker creates. - # splitdir requires at least File::Spec 0.8. - require File::Spec; - my ($volume, $dirs, $file) = File::Spec->splitpath ($name); - my @dirs = File::Spec->splitdir ($dirs); - my $cut = 0; - my $i; - for ($i = 0; $i < scalar @dirs; $i++) { - if ($dirs[$i] eq 'lib' && $dirs[$i + 1] =~ /perl/) { - $cut = $i + 2; - last; - } elsif ($dirs[$i] =~ /perl/) { - $cut = $i + 1; - $cut++ if $dirs[$i + 1] eq 'lib'; - last; - } - } - if ($cut > 0) { - splice (@dirs, 0, $cut); - shift @dirs if ($dirs[0] =~ /^site(_perl)?$/); - shift @dirs if ($dirs[0] =~ /^[\d.]+$/); - shift @dirs if ($dirs[0] =~ /^(.*-$^O|$^O-.*|$^O)$/); - } - shift @dirs if $dirs[0] eq 'lib'; - splice (@dirs, 0, 2) if ($dirs[0] eq 'blib' && $dirs[1] eq 'lib'); - - # Remove empty directories when building the module name; they - # occur too easily on Unix by doubling slashes. - $name = join ('::', (grep { $_ ? $_ : () } @dirs), $file); - } - } - - # If $name contains spaces, quote it; this mostly comes up in the case of - # input from stdin. - $name = '"' . $name . '"' if ($name =~ /\s/); - - # Modification date header. Try to use the modification time of our - # input. - if (!defined $$self{date}) { - my $time = (stat $self->input_file)[9] || time; - my ($day, $month, $year) = (localtime $time)[3,4,5]; - $month++; - $year += 1900; - $$self{date} = sprintf ('%4d-%02d-%02d', $year, $month, $day); - } - - # Now, print out the preamble and the title. The meaning of the arguments - # to .TH unfortunately vary by system; some systems consider the fourth - # argument to be a "source" and others use it as a version number. - # Generally it's just presented as the left-side footer, though, so it - # doesn't matter too much if a particular system gives it another - # interpretation. - # - # The order of date and release used to be reversed in older versions of - # this module, but this order is correct for both Solaris and Linux. - local $_ = $PREAMBLE; - s/\@CFONT\@/$$self{fixed}/; - s/\@LQUOTE\@/$$self{LQUOTE}/; - s/\@RQUOTE\@/$$self{RQUOTE}/; - chomp $_; - my $pversion = $Pod::Parser::VERSION; - print { $self->output_handle } <<"----END OF HEADER----"; -.\\" Automatically generated by Pod::Man v$VERSION, Pod::Parser v$pversion -.\\" -.\\" Standard preamble: -.\\" ======================================================================== -$_ -.\\" ======================================================================== -.\\" -.IX Title "$name $section" -.TH $name $section "$$self{date}" "$$self{release}" "$$self{center}" -----END OF HEADER---- - - # Initialize a few per-file variables. - $$self{INDENT} = 0; # Current indentation level. - $$self{INDENTS} = []; # Stack of indentations. - $$self{INDEX} = []; # Index keys waiting to be printed. - $$self{IN_NAME} = 0; # Whether processing the NAME section. - $$self{ITEMS} = 0; # The number of consecutive =items. - $$self{ITEMTYPES} = []; # Stack of =item types, one per list. - $$self{SHIFTWAIT} = 0; # Whether there is a shift waiting. - $$self{SHIFTS} = []; # Stack of .RS shifts. -} - - -############################################################################## -# Core overrides -############################################################################## - -# Called for each command paragraph. Gets the command, the associated -# paragraph, the line number, and a Pod::Paragraph object. Just dispatches -# the command to a method named the same as the command. =cut is handled -# internally by Pod::Parser. -sub command { - my $self = shift; - my $command = shift; - return if $command eq 'pod'; - return if ($$self{EXCLUDE} && $command ne 'end'); - if ($self->can ('cmd_' . $command)) { - $command = 'cmd_' . $command; - $self->$command (@_); - } else { - my ($text, $line, $paragraph) = @_; - my $file; - ($file, $line) = $paragraph->file_line; - $text =~ s/\n+\z//; - $text = " $text" if ($text =~ /^\S/); - warn qq($file:$line: Unknown command paragraph "=$command$text"\n); - return; - } -} - -# Called for a verbatim paragraph. Gets the paragraph, the line number, and a -# Pod::Paragraph object. Rofficate backslashes, untabify, put a zero-width -# character at the beginning of each line to protect against commands, and -# wrap in .Vb/.Ve. -sub verbatim { - my $self = shift; - return if $$self{EXCLUDE}; - local $_ = shift; - return if /^\s+$/; - s/\s+$/\n/; - my $lines = tr/\n/\n/; - 1 while s/^(.*?)(\t+)/$1 . ' ' x (length ($2) * 8 - length ($1) % 8)/me; - s/\\/\\e/g; - s/-/\\-/g; - s/'/\\(aq/g; - s/^(\s*\S)/'\&' . $1/gme; - $self->makespace; - $self->output (".Vb $lines\n$_.Ve\n"); - $$self{NEEDSPACE} = 1; -} - -# Called for a regular text block. Gets the paragraph, the line number, and a -# Pod::Paragraph object. Perform interpolation and output the results. -sub textblock { - my $self = shift; - return if $$self{EXCLUDE}; - $self->output ($_[0]), return if $$self{VERBATIM}; - - # Parse the tree. collapse knows about references to scalars as well as - # scalars and does the right thing with them. Tidy up any trailing - # whitespace. - my $text = shift; - $text = $self->parse ($text, @_); - $text =~ s/\n\s*$/\n/; - - # Output the paragraph. We also have to handle =over without =item. If - # there's an =over without =item, SHIFTWAIT will be set, and we need to - # handle creation of the indent here. Add the shift to SHIFTS so that it - # will be cleaned up on =back. - $self->makespace; - if ($$self{SHIFTWAIT}) { - $self->output (".RS $$self{INDENT}\n"); - push (@{ $$self{SHIFTS} }, $$self{INDENT}); - $$self{SHIFTWAIT} = 0; - } - $self->output (protect $self->textmapfonts ($text)); - $self->outindex; - $$self{NEEDSPACE} = 1; -} - -# Called for a formatting code. Takes a Pod::InteriorSequence object and -# returns a reference to a scalar. This scalar is the final formatted text. -# It's returned as a reference to an array so that other formatting codes -# above us know that the text has already been processed. -sub sequence { - my ($self, $seq) = @_; - my $command = $seq->cmd_name; - - # We have to defer processing of the inside of an L<> formatting code. If - # this code is nested inside an L<> code, return the literal raw text of - # it. - my $parent = $seq->nested; - while (defined $parent) { - return $seq->raw_text if ($parent->cmd_name eq 'L'); - $parent = $parent->nested; - } - - # Zero-width characters. - return [ '\&' ] if ($command eq 'Z'); - - # C<>, L<>, X<>, and E<> don't apply guesswork to their contents. C<> - # needs some additional special handling. - my $literal = ($command =~ /^[CELX]$/); - local $_ = $self->collapse ($seq->parse_tree, $literal, $command eq 'C'); - - # Handle E<> escapes. Numeric escapes that match one of the supported ISO - # 8859-1 characters don't work at present. - if ($command eq 'E') { - if (/^\d+$/) { - return [ chr ($_) ]; - } elsif (exists $ESCAPES{$_}) { - return [ $ESCAPES{$_} ]; - } else { - my ($file, $line) = $seq->file_line; - warn "$file:$line: Unknown escape E<$_>\n"; - return [ "E<$_>" ]; - } - } - - # For all the other codes, empty content produces no output. - return '' if $_ eq ''; - - # Handle simple formatting codes. - if ($command eq 'B') { - return [ '\f(BS' . $_ . '\f(BE' ]; - } elsif ($command eq 'F' || $command eq 'I') { - return [ '\f(IS' . $_ . '\f(IE' ]; - } elsif ($command eq 'C') { - return [ $self->quote_literal ($_) ]; - } - - # Handle links. - if ($command eq 'L') { - my ($text, $type) = (parselink ($_))[1,4]; - return '' unless $text; - my ($file, $line) = $seq->file_line; - $text = $self->parse ($text, $line); - $text = '<' . $text . '>' if $type eq 'url'; - return [ $text ]; - } - - # Whitespace protection replaces whitespace with "\ ". - if ($command eq 'S') { - s/\s+/\\ /g; - return [ $_ ]; - } - - # Add an index entry to the list of ones waiting to be output. - if ($command eq 'X') { - push (@{ $$self{INDEX} }, $_); - return ''; - } - - # Anything else is unknown. - my ($file, $line) = $seq->file_line; - warn "$file:$line: Unknown formatting code $command<$_>\n"; -} - - -############################################################################## -# Command paragraphs -############################################################################## - -# All command paragraphs take the paragraph and the line number. - -# First level heading. We can't output .IX in the NAME section due to a bug -# in some versions of catman, so don't output a .IX for that section. .SH -# already uses small caps, so remove \s1 and \s-1. Maintain IN_NAME as -# appropriate, but don't leave it set while calling parse() so as to not -# override guesswork on section headings after NAME. -sub cmd_head1 { - my $self = shift; - $$self{IN_NAME} = 0; - local $_ = $self->parse (@_); - s/\s+$//; - s/\\s-?\d//g; - s/\s*\n\s*/ /g; - if ($$self{ITEMS} > 1) { - $$self{ITEMS} = 0; - $self->output (".PD\n"); - } - $self->output ($self->switchquotes ('.SH', $self->mapfonts ($_))); - $self->outindex (($_ eq 'NAME') ? () : ('Header', $_)); - $$self{NEEDSPACE} = 0; - $$self{IN_NAME} = ($_ eq 'NAME'); -} - -# Second level heading. -sub cmd_head2 { - my $self = shift; - local $_ = $self->parse (@_); - s/\s+$//; - s/\s*\n\s*/ /g; - if ($$self{ITEMS} > 1) { - $$self{ITEMS} = 0; - $self->output (".PD\n"); - } - $self->output ($self->switchquotes ('.Sh', $self->mapfonts ($_))); - $self->outindex ('Subsection', $_); - $$self{NEEDSPACE} = 0; -} - -# Third level heading. -sub cmd_head3 { - my $self = shift; - local $_ = $self->parse (@_); - s/\s+$//; - s/\s*\n\s*/ /g; - if ($$self{ITEMS} > 1) { - $$self{ITEMS} = 0; - $self->output (".PD\n"); - } - $self->makespace; - $self->output ($self->textmapfonts ('\f(IS' . $_ . '\f(IE') . "\n"); - $self->outindex ('Subsection', $_); - $$self{NEEDSPACE} = 1; -} - -# Fourth level heading. -sub cmd_head4 { - my $self = shift; - local $_ = $self->parse (@_); - s/\s+$//; - s/\s*\n\s*/ /g; - if ($$self{ITEMS} > 1) { - $$self{ITEMS} = 0; - $self->output (".PD\n"); - } - $self->makespace; - $self->output ($self->textmapfonts ($_) . "\n"); - $self->outindex ('Subsection', $_); - $$self{NEEDSPACE} = 1; -} - -# Start a list. For indents after the first, wrap the outside indent in .RS -# so that hanging paragraph tags will be correct. -sub cmd_over { - my $self = shift; - local $_ = shift; - unless (/^[-+]?\d+\s+$/) { $_ = $$self{indent} } - if (@{ $$self{SHIFTS} } < @{ $$self{INDENTS} }) { - $self->output (".RS $$self{INDENT}\n"); - push (@{ $$self{SHIFTS} }, $$self{INDENT}); - } - push (@{ $$self{INDENTS} }, $$self{INDENT}); - push (@{ $$self{ITEMTYPES} }, 'unknown'); - $$self{INDENT} = ($_ + 0); - $$self{SHIFTWAIT} = 1; -} - -# End a list. If we've closed an embedded indent, we've mangled the hanging -# paragraph indent, so temporarily replace it with .RS and set WEIRDINDENT. -# We'll close that .RS at the next =back or =item. -sub cmd_back { - my $self = shift; - $$self{INDENT} = pop @{ $$self{INDENTS} }; - if (defined $$self{INDENT}) { - pop @{ $$self{ITEMTYPES} }; - } else { - my ($file, $line, $paragraph) = @_; - ($file, $line) = $paragraph->file_line; - warn "$file:$line: Unmatched =back\n"; - $$self{INDENT} = 0; - } - if (@{ $$self{SHIFTS} } > @{ $$self{INDENTS} }) { - $self->output (".RE\n"); - pop @{ $$self{SHIFTS} }; - } - if (@{ $$self{INDENTS} } > 0) { - $self->output (".RE\n"); - $self->output (".RS $$self{INDENT}\n"); - } - $$self{NEEDSPACE} = 1; - $$self{SHIFTWAIT} = 0; -} - -# An individual list item. Emit an index entry for anything that's -# interesting, but don't emit index entries for things like bullets and -# numbers. rofficate bullets too while we're at it (so for nice output, use * -# for your lists rather than o or . or - or some other thing). Newlines in an -# item title are turned into spaces since *roff can't handle them embedded. -sub cmd_item { - my $self = shift; - local $_ = $self->parse (@_); - s/\s+$//; - s/\s*\n\s*/ /g; - my $index; - if (/\w/ && !/^\w[.\)]\s*$/) { - $index = $_; - $index =~ s/^\s*[-*+o.]?(?:\s+|\Z)//; - } - $_ = '*' unless length ($_) > 0; - my $type = $$self{ITEMTYPES}[0]; - unless (defined $type) { - my ($file, $line, $paragraph) = @_; - ($file, $line) = $paragraph->file_line; - $type = 'unknown'; - } - if ($type eq 'unknown') { - $type = /^\*\s*\Z/ ? 'bullet' : 'text'; - $$self{ITEMTYPES}[0] = $type if $$self{ITEMTYPES}[0]; - } - s/^\*\s*\Z/\\\(bu/ if $type eq 'bullet'; - if (@{ $$self{SHIFTS} } == @{ $$self{INDENTS} }) { - $self->output (".RE\n"); - pop @{ $$self{SHIFTS} }; - } - $_ = $self->textmapfonts ($_); - $self->output (".PD 0\n") if ($$self{ITEMS} == 1); - $self->output ($self->switchquotes ('.IP', $_, $$self{INDENT})); - $self->outindex ($index ? ('Item', $index) : ()); - $$self{NEEDSPACE} = 0; - $$self{ITEMS}++; - $$self{SHIFTWAIT} = 0; -} - -# Begin a block for a particular translator. Setting VERBATIM triggers -# special handling in textblock(). -sub cmd_begin { - my $self = shift; - local $_ = shift; - my ($kind) = /^(\S+)/ or return; - if ($kind eq 'man' || $kind eq 'roff') { - $$self{VERBATIM} = 1; - } else { - $$self{EXCLUDE} = 1; - } -} - -# End a block for a particular translator. We assume that all =begin/=end -# pairs are properly closed. -sub cmd_end { - my $self = shift; - $$self{EXCLUDE} = 0; - $$self{VERBATIM} = 0; -} - -# One paragraph for a particular translator. Ignore it unless it's intended -# for man or roff, in which case we output it verbatim. -sub cmd_for { - my $self = shift; - local $_ = shift; - return unless s/^(?:man|roff)\b[ \t]*\n?//; - $self->output ($_); -} - - -############################################################################## -# Escaping and fontification -############################################################################## - -# At this point, we'll have embedded font codes of the form \f(<font>[SE] -# where <font> is one of B, I, or F. Turn those into the right font start or -# end codes. The old pod2man didn't get B<someI<thing> else> right; after I<> -# it switched back to normal text rather than bold. We take care of this by -# using variables as a combined pointer to our current font sequence, and set -# each to the number of current nestings of start tags for that font. Use -# them as a vector to look up what font sequence to use. -# -# \fP changes to the previous font, but only one previous font is kept. We -# don't know what the outside level font is; normally it's R, but if we're -# inside a heading it could be something else. So arrange things so that the -# outside font is always the "previous" font and end with \fP instead of \fR. -# Idea from Zack Weinberg. -sub mapfonts { - my $self = shift; - local $_ = shift; - - my ($fixed, $bold, $italic) = (0, 0, 0); - my %magic = (F => \$fixed, B => \$bold, I => \$italic); - my $last = '\fR'; - s { \\f\((.)(.) } { - my $sequence = ''; - my $f; - if ($last ne '\fR') { $sequence = '\fP' } - ${ $magic{$1} } += ($2 eq 'S') ? 1 : -1; - $f = $$self{FONTS}{($fixed && 1) . ($bold && 1) . ($italic && 1)}; - if ($f eq $last) { - ''; - } else { - if ($f ne '\fR') { $sequence .= $f } - $last = $f; - $sequence; - } - }gxe; - $_; -} - -# Unfortunately, there is a bug in Solaris 2.6 nroff (not present in GNU -# groff) where the sequence \fB\fP\f(CW\fP leaves the font set to B rather -# than R, presumably because \f(CW doesn't actually do a font change. To work -# around this, use a separate textmapfonts for text blocks where the default -# font is always R and only use the smart mapfonts for headings. -sub textmapfonts { - my $self = shift; - local $_ = shift; - - my ($fixed, $bold, $italic) = (0, 0, 0); - my %magic = (F => \$fixed, B => \$bold, I => \$italic); - s { \\f\((.)(.) } { - ${ $magic{$1} } += ($2 eq 'S') ? 1 : -1; - $$self{FONTS}{($fixed && 1) . ($bold && 1) . ($italic && 1)}; - }gxe; - $_; -} - - -############################################################################## -# *roff-specific parsing and magic -############################################################################## - -# Called instead of parse_text, calls parse_text with the right flags. -sub parse { - my $self = shift; - $self->parse_text ({ -expand_seq => 'sequence', - -expand_ptree => 'collapse' }, @_); -} - -# Takes a parse tree, a flag saying whether or not to treat it as literal text -# (not call guesswork on it), and a flag saying whether or not to clean some -# things up for *roff, and returns the concatenation of all of the text -# strings in that parse tree. If the literal flag isn't true, guesswork() -# will be called on all plain scalars in the parse tree. Otherwise, if -# collapse is being called on a C<> code, $cleanup should be set to true and -# some additional cleanup will be done. Assumes that everything in the parse -# tree is either a scalar or a reference to a scalar. -sub collapse { - my ($self, $ptree, $literal, $cleanup) = @_; - - # If we're processing the NAME section, don't do normal guesswork. This - # is because NAME lines are often extracted by utilities like catman that - # require plain text and don't understand *roff markup. We still need to - # escape backslashes and hyphens for *roff (and catman expects \- instead - # of -). - if ($$self{IN_NAME}) { - $literal = 1; - $cleanup = 1; - } - - # Do the collapse of the parse tree as described above. - return join ('', map { - if (ref $_) { - join ('', @$_); - } elsif ($literal) { - if ($cleanup) { - s/\\/\\e/g; - s/-/\\-/g; - s/__/_\\|_/g; - } - $_; - } else { - $self->guesswork ($_); - } - } $ptree->children); -} - -# Takes a text block to perform guesswork on; this is guaranteed not to -# contain any formatting codes. Returns the text block with remapping done. -sub guesswork { - my $self = shift; - local $_ = shift; - - # rofficate backslashes. - s/\\/\\e/g; - - # Ensure double underbars have a tiny space between them. - s/__/_\\|_/g; - - # Leave hyphens only if they're part of regular words and there is only - # one dash at a time. Leave a dash after the first character as a regular - # non-breaking dash, but don't let it mark the rest of the word invalid - # for hyphenation. - s/-/\\-/g; - s{ - ( (?:\G|^|\s) [a-zA-Z] ) ( \\- )? - ( (?: [a-zA-Z]+ \\-)+ ) - ( [a-zA-Z]+ ) (?=\s|\Z) - \b - } { - my ($prefix, $hyphen, $main, $suffix) = ($1, $2, $3, $4); - $hyphen ||= ''; - $main =~ s/\\-/-/g; - $prefix . $hyphen . $main . $suffix; - }egx; - - # Translate -- into a real em dash if it's used like one. - s{ (\s) \\-\\- (\s) } { $1 . '\*(--' . $2 }egx; - s{ (\b[a-zA-Z]+) \\-\\- (\s|\Z|[a-zA-Z]+\b) } { $1 . '\*(--' . $2 }egx; - - # Make all caps a little smaller. Be careful here, since we don't want to - # make @ARGV into small caps, nor do we want to fix the MIME in - # MIME-Version, since it looks weird with the full-height V. - s{ - ( ^ | [\s\(\"\'\`\[\{<>] ) - ( [A-Z] [A-Z] (?: [/A-Z+:\d_\$&] | \\- )* ) - (?= [\s>\}\]\(\)\'\".?!,;] | \\*\(-- | $ ) - } { $1 . '\s-1' . $2 . '\s0' }egx; - - # Italize functions in the form func(). - s{ - ( \b | \\s-1 ) - ( - [A-Za-z_] ([:\w]|\\s-?[01])+ \(\) - ) - } { $1 . '\f(IS' . $2 . '\f(IE' }egx; - - # func(n) is a reference to a manual page. Make it \fIfunc\fR\|(n). - s{ - ( \b | \\s-1 ) - ( [A-Za-z_] (?:[.:\w]|\\-|\\s-?[01])+ ) - ( - \( \d [a-z]* \) - ) - } { $1 . '\f(IS' . $2 . '\f(IE\|' . $3 }egx; - - # Convert simple Perl variable references to a fixed-width font. - s{ - ( \s+ ) - ( [\$\@%] [\w:]+ ) - (?! \( ) - } { $1 . '\f(FS' . $2 . '\f(FE'}egx; - - # Fix up double quotes. - s{ \" ([^\"]+) \" } { '\*(L"' . $1 . '\*(R"' }egx; - - # Make C++ into \*(C+, which is a squinched version. - s{ \b C\+\+ } {\\*\(C+}gx; - - # All done. - $_; -} - -# Handles C<> text, deciding whether to put \*C` around it or not. This is a -# whole bunch of messy heuristics to try to avoid overquoting, originally from -# Barrie Slaymaker. This largely duplicates similar code in Pod::Text. -sub quote_literal { - my $self = shift; - local $_ = shift; - - # A regex that matches the portion of a variable reference that's the - # array or hash index, separated out just because we want to use it in - # several places in the following regex. - my $index = '(?: \[.*\] | \{.*\} )?'; - - # Check for things that we don't want to quote, and if we find any of - # them, return the string with just a font change and no quoting. - m{ - ^\s* - (?: - ( [\'\`\"] ) .* \1 # already quoted - | \` .* \' # `quoted' - | \$+ [\#^]? \S $index # special ($^Foo, $") - | [\$\@%&*]+ \#? [:\'\w]+ $index # plain var or func - | [\$\@%&*]* [:\'\w]+ (?: -> )? \(\s*[^\s,]\s*\) # 0/1-arg func call - | [+-]? ( \d[\d.]* | \.\d+ ) (?: [eE][+-]?\d+ )? # a number - | 0x [a-fA-F\d]+ # a hex constant - ) - \s*\z - }xo && return '\f(FS' . $_ . '\f(FE'; - - # If we didn't return, go ahead and quote the text. - return '\f(FS\*(C`' . $_ . "\\*(C'\\f(FE"; -} - - -############################################################################## -# Output formatting -############################################################################## - -# Make vertical whitespace. -sub makespace { - my $self = shift; - $self->output (".PD\n") if ($$self{ITEMS} > 1); - $$self{ITEMS} = 0; - $self->output ($$self{INDENT} > 0 ? ".Sp\n" : ".PP\n") - if $$self{NEEDSPACE}; -} - -# Output any pending index entries, and optionally an index entry given as an -# argument. Support multiple index entries in X<> separated by slashes, and -# strip special escapes from index entries. -sub outindex { - my ($self, $section, $index) = @_; - my @entries = map { split m%\s*/\s*% } @{ $$self{INDEX} }; - return unless ($section || @entries); - $$self{INDEX} = []; - my @output; - if (@entries) { - push (@output, [ 'Xref', join (' ', @entries) ]); - } - if ($section) { - $index =~ s/\\-/-/g; - $index =~ s/\\(?:s-?\d|.\(..|.)//g; - push (@output, [ $section, $index ]); - } - for (@output) { - my ($type, $entry) = @$_; - $entry =~ s/\"/\"\"/g; - $entry =~ s/\\/\\e/g; - $self->output (".IX $type " . '"' . $entry . '"' . "\n"); - } -} - -# Output text to the output device. -sub output { print { $_[0]->output_handle } $_[1] } - -# Given a command and a single argument that may or may not contain double -# quotes, handle double-quote formatting for it. If there are no double -# quotes, just return the command followed by the argument in double quotes. -# If there are double quotes, use an if statement to test for nroff, and for -# nroff output the command followed by the argument in double quotes with -# embedded double quotes doubled. For other formatters, remap paired double -# quotes to LQUOTE and RQUOTE. -sub switchquotes { - my $self = shift; - my $command = shift; - local $_ = shift; - my $extra = shift; - s/\\\*\([LR]\"/\"/g; - - # We also have to deal with \*C` and \*C', which are used to add the - # quotes around C<> text, since they may expand to " and if they do this - # confuses the .SH macros and the like no end. Expand them ourselves. - # Also separate troff from nroff if there are any fixed-width fonts in use - # to work around problems with Solaris nroff. - my $c_is_quote = ($$self{LQUOTE} =~ /\"/) || ($$self{RQUOTE} =~ /\"/); - my $fixedpat = join ('|', @{ $$self{FONTS} }{'100', '101', '110', '111'}); - $fixedpat =~ s/\\/\\\\/g; - $fixedpat =~ s/\(/\\\(/g; - if (/\"/ || /$fixedpat/) { - s/\"/\"\"/g; - my $nroff = $_; - my $troff = $_; - $troff =~ s/\"\"([^\"]*)\"\"/\`\`$1\'\'/g; - if ($c_is_quote && /\\\*\(C[\'\`]/) { - $nroff =~ s/\\\*\(C\`/$$self{LQUOTE}/g; - $nroff =~ s/\\\*\(C\'/$$self{RQUOTE}/g; - $troff =~ s/\\\*\(C[\'\`]//g; - } - $nroff = qq("$nroff") . ($extra ? " $extra" : ''); - $troff = qq("$troff") . ($extra ? " $extra" : ''); - - # Work around the Solaris nroff bug where \f(CW\fP leaves the font set - # to Roman rather than the actual previous font when used in headings. - # troff output may still be broken, but at least we can fix nroff by - # just switching the font changes to the non-fixed versions. - $nroff =~ s/\Q$$self{FONTS}{100}\E(.*)\\f[PR]/$1/g; - $nroff =~ s/\Q$$self{FONTS}{101}\E(.*)\\f([PR])/\\fI$1\\f$2/g; - $nroff =~ s/\Q$$self{FONTS}{110}\E(.*)\\f([PR])/\\fB$1\\f$2/g; - $nroff =~ s/\Q$$self{FONTS}{111}\E(.*)\\f([PR])/\\f\(BI$1\\f$2/g; - - # Now finally output the command. Only bother with .ie if the nroff - # and troff output isn't the same. - if ($nroff ne $troff) { - return ".ie n $command $nroff\n.el $command $troff\n"; - } else { - return "$command $nroff\n"; - } - } else { - $_ = qq("$_") . ($extra ? " $extra" : ''); - return "$command $_\n"; - } -} - -############################################################################## -# Module return value and documentation -############################################################################## - -1; -__END__ - -=head1 NAME - -Pod::Man - Convert POD data to formatted *roff input - -=head1 SYNOPSIS - - use Pod::Man; - my $parser = Pod::Man->new (release => $VERSION, section => 8); - - # Read POD from STDIN and write to STDOUT. - $parser->parse_from_filehandle; - - # Read POD from file.pod and write to file.1. - $parser->parse_from_file ('file.pod', 'file.1'); - -=head1 DESCRIPTION - -Pod::Man is a module to convert documentation in the POD format (the -preferred language for documenting Perl) into *roff input using the man -macro set. The resulting *roff code is suitable for display on a terminal -using L<nroff(1)>, normally via L<man(1)>, or printing using L<troff(1)>. -It is conventionally invoked using the driver script B<pod2man>, but it can -also be used directly. - -As a derived class from Pod::Parser, Pod::Man supports the same methods and -interfaces. See L<Pod::Parser> for all the details; briefly, one creates a -new parser with C<< Pod::Man->new() >> and then calls either -parse_from_filehandle() or parse_from_file(). - -new() can take options, in the form of key/value pairs that control the -behavior of the parser. See below for details. - -If no options are given, Pod::Man uses the name of the input file with any -trailing C<.pod>, C<.pm>, or C<.pl> stripped as the man page title, to -section 1 unless the file ended in C<.pm> in which case it defaults to -section 3, to a centered title of "User Contributed Perl Documentation", to -a centered footer of the Perl version it is run with, and to a left-hand -footer of the modification date of its input (or the current date if given -STDIN for input). - -Pod::Man assumes that your *roff formatters have a fixed-width font named -CW. If yours is called something else (like CR), use the C<fixed> option to -specify it. This generally only matters for troff output for printing. -Similarly, you can set the fonts used for bold, italic, and bold italic -fixed-width output. - -Besides the obvious pod conversions, Pod::Man also takes care of formatting -func(), func(3), and simple variable references like $foo or @bar so you -don't have to use code escapes for them; complex expressions like -C<$fred{'stuff'}> will still need to be escaped, though. It also translates -dashes that aren't used as hyphens into en dashes, makes long dashes--like -this--into proper em dashes, fixes "paired quotes," makes C++ look right, -puts a little space between double underbars, makes ALLCAPS a teeny bit -smaller in B<troff>, and escapes stuff that *roff treats as special so that -you don't have to. - -The recognized options to new() are as follows. All options take a single -argument. - -=over 4 - -=item center - -Sets the centered page header to use instead of "User Contributed Perl -Documentation". - -=item date - -Sets the left-hand footer. By default, the modification date of the input -file will be used, or the current date if stat() can't find that file (the -case if the input is from STDIN), and the date will be formatted as -YYYY-MM-DD. - -=item fixed - -The fixed-width font to use for vertabim text and code. Defaults to CW. -Some systems may want CR instead. Only matters for B<troff> output. - -=item fixedbold - -Bold version of the fixed-width font. Defaults to CB. Only matters for -B<troff> output. - -=item fixeditalic - -Italic version of the fixed-width font (actually, something of a misnomer, -since most fixed-width fonts only have an oblique version, not an italic -version). Defaults to CI. Only matters for B<troff> output. - -=item fixedbolditalic - -Bold italic (probably actually oblique) version of the fixed-width font. -Pod::Man doesn't assume you have this, and defaults to CB. Some systems -(such as Solaris) have this font available as CX. Only matters for B<troff> -output. - -=item name - -Set the name of the manual page. Without this option, the manual name is -set to the uppercased base name of the file being converted unless the -manual section is 3, in which case the path is parsed to see if it is a Perl -module path. If it is, a path like C<.../lib/Pod/Man.pm> is converted into -a name like C<Pod::Man>. This option, if given, overrides any automatic -determination of the name. - -=item quotes - -Sets the quote marks used to surround CE<lt>> text. If the value is a -single character, it is used as both the left and right quote; if it is two -characters, the first character is used as the left quote and the second as -the right quoted; and if it is four characters, the first two are used as -the left quote and the second two as the right quote. - -This may also be set to the special value C<none>, in which case no quote -marks are added around CE<lt>> text (but the font is still changed for troff -output). - -=item release - -Set the centered footer. By default, this is the version of Perl you run -Pod::Man under. Note that some system an macro sets assume that the -centered footer will be a modification date and will prepend something like -"Last modified: "; if this is the case, you may want to set C<release> to -the last modified date and C<date> to the version number. - -=item section - -Set the section for the C<.TH> macro. The standard section numbering -convention is to use 1 for user commands, 2 for system calls, 3 for -functions, 4 for devices, 5 for file formats, 6 for games, 7 for -miscellaneous information, and 8 for administrator commands. There is a lot -of variation here, however; some systems (like Solaris) use 4 for file -formats, 5 for miscellaneous information, and 7 for devices. Still others -use 1m instead of 8, or some mix of both. About the only section numbers -that are reliably consistent are 1, 2, and 3. - -By default, section 1 will be used unless the file ends in .pm in which case -section 3 will be selected. - -=back - -The standard Pod::Parser method parse_from_filehandle() takes up to two -arguments, the first being the file handle to read POD from and the second -being the file handle to write the formatted output to. The first defaults -to STDIN if not given, and the second defaults to STDOUT. The method -parse_from_file() is almost identical, except that its two arguments are the -input and output disk files instead. See L<Pod::Parser> for the specific -details. - -=head1 DIAGNOSTICS - -=over 4 - -=item roff font should be 1 or 2 chars, not "%s" - -(F) You specified a *roff font (using C<fixed>, C<fixedbold>, etc.) that -wasn't either one or two characters. Pod::Man doesn't support *roff fonts -longer than two characters, although some *roff extensions do (the canonical -versions of B<nroff> and B<troff> don't either). - -=item Invalid link %s - -(W) The POD source contained a C<LE<lt>E<gt>> formatting code that -Pod::Man was unable to parse. You should never see this error message; it -probably indicates a bug in Pod::Man. - -=item Invalid quote specification "%s" - -(F) The quote specification given (the quotes option to the constructor) was -invalid. A quote specification must be one, two, or four characters long. - -=item %s:%d: Unknown command paragraph "%s". - -(W) The POD source contained a non-standard command paragraph (something of -the form C<=command args>) that Pod::Man didn't know about. It was ignored. - -=item %s:%d: Unknown escape EE<lt>%sE<gt> - -(W) The POD source contained an C<EE<lt>E<gt>> escape that Pod::Man didn't -know about. C<EE<lt>%sE<gt>> was printed verbatim in the output. - -=item %s:%d: Unknown formatting code %s - -(W) The POD source contained a non-standard formatting code (something of -the form C<XE<lt>E<gt>>) that Pod::Man didn't know about. It was ignored. - -=item %s:%d: Unmatched =back - -(W) Pod::Man encountered a C<=back> command that didn't correspond to an -C<=over> command. - -=back - -=head1 BUGS - -Eight-bit input data isn't handled at all well at present. The correct -approach would be to map EE<lt>E<gt> escapes to the appropriate UTF-8 -characters and then do a translation pass on the output according to the -user-specified output character set. Unfortunately, we can't send eight-bit -data directly to the output unless the user says this is okay, since some -vendor *roff implementations can't handle eight-bit data. If the *roff -implementation can, however, that's far superior to the current hacked -characters that only work under troff. - -There is currently no way to turn off the guesswork that tries to format -unmarked text appropriately, and sometimes it isn't wanted (particularly -when using POD to document something other than Perl). - -The NAME section should be recognized specially and index entries emitted -for everything in that section. This would have to be deferred until the -next section, since extraneous things in NAME tends to confuse various man -page processors. - -Pod::Man doesn't handle font names longer than two characters. Neither do -most B<troff> implementations, but GNU troff does as an extension. It would -be nice to support as an option for those who want to use it. - -The preamble added to each output file is rather verbose, and most of it is -only necessary in the presence of EE<lt>E<gt> escapes for non-ASCII -characters. It would ideally be nice if all of those definitions were only -output if needed, perhaps on the fly as the characters are used. - -Pod::Man is excessively slow. - -=head1 CAVEATS - -The handling of hyphens and em dashes is somewhat fragile, and one may get -the wrong one under some circumstances. This should only matter for -B<troff> output. - -When and whether to use small caps is somewhat tricky, and Pod::Man doesn't -necessarily get it right. - -=head1 SEE ALSO - -L<Pod::Parser>, L<perlpod(1)>, L<pod2man(1)>, L<nroff(1)>, L<troff(1)>, -L<man(1)>, L<man(7)> - -Ossanna, Joseph F., and Brian W. Kernighan. "Troff User's Manual," -Computing Science Technical Report No. 54, AT&T Bell Laboratories. This is -the best documentation of standard B<nroff> and B<troff>. At the time of -this writing, it's available at -L<http://www.cs.bell-labs.com/cm/cs/cstr.html>. - -The man page documenting the man macro set may be L<man(5)> instead of -L<man(7)> on your system. Also, please see L<pod2man(1)> for extensive -documentation on writing manual pages if you've not done it before and -aren't familiar with the conventions. - -The current version of this module is always available from its web site at -L<http://www.eyrie.org/~eagle/software/podlators/>. It is also part of the -Perl core distribution as of 5.6.0. - -=head1 AUTHOR - -Russ Allbery <rra@stanford.edu>, based I<very> heavily on the original -B<pod2man> by Tom Christiansen <tchrist@mox.perl.com>. - -=head1 COPYRIGHT AND LICENSE - -Copyright 1999, 2000, 2001, 2002, 2003 by Russ Allbery <rra@stanford.edu>. - -This program is free software; you may redistribute it and/or modify it -under the same terms as Perl itself. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Pod/ParseLink.pm b/Master/tlpkg/tlperl.old/lib/Pod/ParseLink.pm deleted file mode 100644 index 7e4153da3d0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/ParseLink.pm +++ /dev/null @@ -1,184 +0,0 @@ -# Pod::ParseLink -- Parse an L<> formatting code in POD text. -# $Id: ParseLink.pm,v 1.6 2002/07/15 05:46:00 eagle Exp $ -# -# Copyright 2001 by Russ Allbery <rra@stanford.edu> -# -# This program is free software; you may redistribute it and/or modify it -# under the same terms as Perl itself. -# -# This module implements parsing of the text of an L<> formatting code as -# defined in perlpodspec. It should be suitable for any POD formatter. It -# exports only one function, parselink(), which returns the five-item parse -# defined in perlpodspec. -# -# Perl core hackers, please note that this module is also separately -# maintained outside of the Perl core as part of the podlators. Please send -# me any patches at the address above in addition to sending them to the -# standard Perl mailing lists. - -############################################################################## -# Modules and declarations -############################################################################## - -package Pod::ParseLink; - -require 5.004; - -use strict; -use vars qw(@EXPORT @ISA $VERSION); - -use Exporter; -@ISA = qw(Exporter); -@EXPORT = qw(parselink); - -# Don't use the CVS revision as the version, since this module is also in Perl -# core and too many things could munge CVS magic revision strings. This -# number should ideally be the same as the CVS revision in podlators, however. -$VERSION = 1.06; - - -############################################################################## -# Implementation -############################################################################## - -# Parse the name and section portion of a link into a name and section. -sub _parse_section { - my ($link) = @_; - $link =~ s/^\s+//; - $link =~ s/\s+$//; - - # If the whole link is enclosed in quotes, interpret it all as a section - # even if it contains a slash. - return (undef, $1) if ($link =~ /^"\s*(.*?)\s*"$/); - - # Split into page and section on slash, and then clean up quoting in the - # section. If there is no section and the name contains spaces, also - # guess that it's an old section link. - my ($page, $section) = split (/\s*\/\s*/, $link, 2); - $section =~ s/^"\s*(.*?)\s*"$/$1/ if $section; - if ($page && $page =~ / / && !defined ($section)) { - $section = $page; - $page = undef; - } else { - $page = undef unless $page; - $section = undef unless $section; - } - return ($page, $section); -} - -# Infer link text from the page and section. -sub _infer_text { - my ($page, $section) = @_; - my $inferred; - if ($page && !$section) { - $inferred = $page; - } elsif (!$page && $section) { - $inferred = '"' . $section . '"'; - } elsif ($page && $section) { - $inferred = '"' . $section . '" in ' . $page; - } - return $inferred; -} - -# Given the contents of an L<> formatting code, parse it into the link text, -# the possibly inferred link text, the name or URL, the section, and the type -# of link (pod, man, or url). -sub parselink { - my ($link) = @_; - $link =~ s/\s+/ /g; - if ($link =~ /\A\w+:[^:\s]\S*\Z/) { - return (undef, $link, $link, undef, 'url'); - } else { - my $text; - if ($link =~ /\|/) { - ($text, $link) = split (/\|/, $link, 2); - } - my ($name, $section) = _parse_section ($link); - my $inferred = $text || _infer_text ($name, $section); - my $type = ($name && $name =~ /\(\S*\)/) ? 'man' : 'pod'; - return ($text, $inferred, $name, $section, $type); - } -} - - -############################################################################## -# Module return value and documentation -############################################################################## - -# Ensure we evaluate to true. -1; -__END__ - -=head1 NAME - -Pod::ParseLink - Parse an LE<lt>E<gt> formatting code in POD text - -=head1 SYNOPSIS - - use Pod::ParseLink; - my ($text, $inferred, $name, $section, $type) = parselink ($link); - -=head1 DESCRIPTION - -This module only provides a single function, parselink(), which takes the -text of an LE<lt>E<gt> formatting code and parses it. It returns the anchor -text for the link (if any was given), the anchor text possibly inferred from -the name and section, the name or URL, the section if any, and the type of -link. The type will be one of 'url', 'pod', or 'man', indicating a URL, a -link to a POD page, or a link to a Unix manual page. - -Parsing is implemented per L<perlpodspec>. For backward compatibility, -links where there is no section and name contains spaces, or links where the -entirety of the link (except for the anchor text if given) is enclosed in -double-quotes are interpreted as links to a section (LE<lt>/sectionE<gt>). - -The inferred anchor text is implemented per L<perlpodspec>: - - L<name> => L<name|name> - L</section> => L<"section"|/section> - L<name/section> => L<"section" in name|name/section> - -The name may contain embedded EE<lt>E<gt> and ZE<lt>E<gt> formatting codes, -and the section, anchor text, and inferred anchor text may contain any -formatting codes. Any double quotes around the section are removed as part -of the parsing, as is any leading or trailing whitespace. - -If the text of the LE<lt>E<gt> escape is entirely enclosed in double quotes, -it's interpreted as a link to a section for backwards compatibility. - -No attempt is made to resolve formatting codes. This must be done after -calling parselink (since EE<lt>E<gt> formatting codes can be used to escape -characters that would otherwise be significant to the parser and resolving -them before parsing would result in an incorrect parse of a formatting code -like: - - L<verticalE<verbar>barE<sol>slash> - -which should be interpreted as a link to the C<vertical|bar/slash> POD page -and not as a link to the C<slash> section of the C<bar> POD page with an -anchor text of C<vertical>. Note that not only the anchor text will need to -have formatting codes expanded, but so will the target of the link (to deal -with EE<lt>E<gt> and ZE<lt>E<gt> formatting codes), and special handling of -the section may be necessary depending on whether the translator wants to -consider markup in sections to be significant when resolving links. See -L<perlpodspec> for more information. - -=head1 SEE ALSO - -L<Pod::Parser> - -The current version of this module is always available from its web site at -L<http://www.eyrie.org/~eagle/software/podlators/>. - -=head1 AUTHOR - -Russ Allbery <rra@stanford.edu>. - -=head1 COPYRIGHT AND LICENSE - -Copyright 2001 by Russ Allbery <rra@stanford.edu>. - -This program is free software; you may redistribute it and/or modify it -under the same terms as Perl itself. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Pod/ParseUtils.pm b/Master/tlpkg/tlperl.old/lib/Pod/ParseUtils.pm deleted file mode 100644 index 878860121d3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/ParseUtils.pm +++ /dev/null @@ -1,852 +0,0 @@ -############################################################################# -# Pod/ParseUtils.pm -- helpers for POD parsing and conversion -# -# Copyright (C) 1999-2000 by Marek Rouchal. All rights reserved. -# This file is part of "PodParser". PodParser is free software; -# you can redistribute it and/or modify it under the same terms -# as Perl itself. -############################################################################# - -package Pod::ParseUtils; - -use vars qw($VERSION); -$VERSION = 1.33; ## Current version of this package -require 5.005; ## requires this Perl version or later - -=head1 NAME - -Pod::ParseUtils - helpers for POD parsing and conversion - -=head1 SYNOPSIS - - use Pod::ParseUtils; - - my $list = new Pod::List; - my $link = Pod::Hyperlink->new('Pod::Parser'); - -=head1 DESCRIPTION - -B<Pod::ParseUtils> contains a few object-oriented helper packages for -POD parsing and processing (i.e. in POD formatters and translators). - -=cut - -#----------------------------------------------------------------------------- -# Pod::List -# -# class to hold POD list info (=over, =item, =back) -#----------------------------------------------------------------------------- - -package Pod::List; - -use Carp; - -=head2 Pod::List - -B<Pod::List> can be used to hold information about POD lists -(written as =over ... =item ... =back) for further processing. -The following methods are available: - -=over 4 - -=item Pod::List-E<gt>new() - -Create a new list object. Properties may be specified through a hash -reference like this: - - my $list = Pod::List->new({ -start => $., -indent => 4 }); - -See the individual methods/properties for details. - -=cut - -sub new { - my $this = shift; - my $class = ref($this) || $this; - my %params = @_; - my $self = {%params}; - bless $self, $class; - $self->initialize(); - return $self; -} - -sub initialize { - my $self = shift; - $self->{-file} ||= 'unknown'; - $self->{-start} ||= 'unknown'; - $self->{-indent} ||= 4; # perlpod: "should be the default" - $self->{_items} = []; - $self->{-type} ||= ''; -} - -=item $list-E<gt>file() - -Without argument, retrieves the file name the list is in. This must -have been set before by either specifying B<-file> in the B<new()> -method or by calling the B<file()> method with a scalar argument. - -=cut - -# The POD file name the list appears in -sub file { - return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file}; -} - -=item $list-E<gt>start() - -Without argument, retrieves the line number where the list started. -This must have been set before by either specifying B<-start> in the -B<new()> method or by calling the B<start()> method with a scalar -argument. - -=cut - -# The line in the file the node appears -sub start { - return (@_ > 1) ? ($_[0]->{-start} = $_[1]) : $_[0]->{-start}; -} - -=item $list-E<gt>indent() - -Without argument, retrieves the indent level of the list as specified -in C<=over n>. This must have been set before by either specifying -B<-indent> in the B<new()> method or by calling the B<indent()> method -with a scalar argument. - -=cut - -# indent level -sub indent { - return (@_ > 1) ? ($_[0]->{-indent} = $_[1]) : $_[0]->{-indent}; -} - -=item $list-E<gt>type() - -Without argument, retrieves the list type, which can be an arbitrary value, -e.g. C<OL>, C<UL>, ... when thinking the HTML way. -This must have been set before by either specifying -B<-type> in the B<new()> method or by calling the B<type()> method -with a scalar argument. - -=cut - -# The type of the list (UL, OL, ...) -sub type { - return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type}; -} - -=item $list-E<gt>rx() - -Without argument, retrieves a regular expression for simplifying the -individual item strings once the list type has been determined. Usage: -E.g. when converting to HTML, one might strip the leading number in -an ordered list as C<E<lt>OLE<gt>> already prints numbers itself. -This must have been set before by either specifying -B<-rx> in the B<new()> method or by calling the B<rx()> method -with a scalar argument. - -=cut - -# The regular expression to simplify the items -sub rx { - return (@_ > 1) ? ($_[0]->{-rx} = $_[1]) : $_[0]->{-rx}; -} - -=item $list-E<gt>item() - -Without argument, retrieves the array of the items in this list. -The items may be represented by any scalar. -If an argument has been given, it is pushed on the list of items. - -=cut - -# The individual =items of this list -sub item { - my ($self,$item) = @_; - if(defined $item) { - push(@{$self->{_items}}, $item); - return $item; - } - else { - return @{$self->{_items}}; - } -} - -=item $list-E<gt>parent() - -Without argument, retrieves information about the parent holding this -list, which is represented as an arbitrary scalar. -This must have been set before by either specifying -B<-parent> in the B<new()> method or by calling the B<parent()> method -with a scalar argument. - -=cut - -# possibility for parsers/translators to store information about the -# lists's parent object -sub parent { - return (@_ > 1) ? ($_[0]->{-parent} = $_[1]) : $_[0]->{-parent}; -} - -=item $list-E<gt>tag() - -Without argument, retrieves information about the list tag, which can be -any scalar. -This must have been set before by either specifying -B<-tag> in the B<new()> method or by calling the B<tag()> method -with a scalar argument. - -=back - -=cut - -# possibility for parsers/translators to store information about the -# list's object -sub tag { - return (@_ > 1) ? ($_[0]->{-tag} = $_[1]) : $_[0]->{-tag}; -} - -#----------------------------------------------------------------------------- -# Pod::Hyperlink -# -# class to manipulate POD hyperlinks (L<>) -#----------------------------------------------------------------------------- - -package Pod::Hyperlink; - -=head2 Pod::Hyperlink - -B<Pod::Hyperlink> is a class for manipulation of POD hyperlinks. Usage: - - my $link = Pod::Hyperlink->new('alternative text|page/"section in page"'); - -The B<Pod::Hyperlink> class is mainly designed to parse the contents of the -C<LE<lt>...E<gt>> sequence, providing a simple interface for accessing the -different parts of a POD hyperlink for further processing. It can also be -used to construct hyperlinks. - -=over 4 - -=item Pod::Hyperlink-E<gt>new() - -The B<new()> method can either be passed a set of key/value pairs or a single -scalar value, namely the contents of a C<LE<lt>...E<gt>> sequence. An object -of the class C<Pod::Hyperlink> is returned. The value C<undef> indicates a -failure, the error message is stored in C<$@>. - -=cut - -use Carp; - -sub new { - my $this = shift; - my $class = ref($this) || $this; - my $self = +{}; - bless $self, $class; - $self->initialize(); - if(defined $_[0]) { - if(ref($_[0])) { - # called with a list of parameters - %$self = %{$_[0]}; - $self->_construct_text(); - } - else { - # called with L<> contents - return undef unless($self->parse($_[0])); - } - } - return $self; -} - -sub initialize { - my $self = shift; - $self->{-line} ||= 'undef'; - $self->{-file} ||= 'undef'; - $self->{-page} ||= ''; - $self->{-node} ||= ''; - $self->{-alttext} ||= ''; - $self->{-type} ||= 'undef'; - $self->{_warnings} = []; -} - -=item $link-E<gt>parse($string) - -This method can be used to (re)parse a (new) hyperlink, i.e. the contents -of a C<LE<lt>...E<gt>> sequence. The result is stored in the current object. -Warnings are stored in the B<warnings> property. -E.g. sections like C<LE<lt>open(2)E<gt>> are deprecated, as they do not point -to Perl documents. C<LE<lt>DBI::foo(3p)E<gt>> is wrong as well, the manpage -section can simply be dropped. - -=cut - -sub parse { - my $self = shift; - local($_) = $_[0]; - # syntax check the link and extract destination - my ($alttext,$page,$node,$type,$quoted) = (undef,'','','',0); - - $self->{_warnings} = []; - - # collapse newlines with whitespace - s/\s*\n+\s*/ /g; - - # strip leading/trailing whitespace - if(s/^[\s\n]+//) { - $self->warning("ignoring leading whitespace in link"); - } - if(s/[\s\n]+$//) { - $self->warning("ignoring trailing whitespace in link"); - } - unless(length($_)) { - _invalid_link("empty link"); - return undef; - } - - ## Check for different possibilities. This is tedious and error-prone - # we match all possibilities (alttext, page, section/item) - #warn "DEBUG: link=$_\n"; - - # only page - # problem: a lot of people use (), or (1) or the like to indicate - # man page sections. But this collides with L<func()> that is supposed - # to point to an internal funtion... - my $page_rx = '[\w.-]+(?:::[\w.-]+)*(?:[(](?:\d\w*|)[)]|)'; - # page name only - if(m!^($page_rx)$!o) { - $page = $1; - $type = 'page'; - } - # alttext, page and "section" - elsif(m!^(.*?)\s*[|]\s*($page_rx)\s*/\s*"(.+)"$!o) { - ($alttext, $page, $node) = ($1, $2, $3); - $type = 'section'; - $quoted = 1; #... therefore | and / are allowed - } - # alttext and page - elsif(m!^(.*?)\s*[|]\s*($page_rx)$!o) { - ($alttext, $page) = ($1, $2); - $type = 'page'; - } - # alttext and "section" - elsif(m!^(.*?)\s*[|]\s*(?:/\s*|)"(.+)"$!) { - ($alttext, $node) = ($1,$2); - $type = 'section'; - $quoted = 1; - } - # page and "section" - elsif(m!^($page_rx)\s*/\s*"(.+)"$!o) { - ($page, $node) = ($1, $2); - $type = 'section'; - $quoted = 1; - } - # page and item - elsif(m!^($page_rx)\s*/\s*(.+)$!o) { - ($page, $node) = ($1, $2); - $type = 'item'; - } - # only "section" - elsif(m!^/?"(.+)"$!) { - $node = $1; - $type = 'section'; - $quoted = 1; - } - # only item - elsif(m!^\s*/(.+)$!) { - $node = $1; - $type = 'item'; - } - # non-standard: Hyperlink - elsif(m!^(\w+:[^:\s]\S*)$!i) { - $node = $1; - $type = 'hyperlink'; - } - # alttext, page and item - elsif(m!^(.*?)\s*[|]\s*($page_rx)\s*/\s*(.+)$!o) { - ($alttext, $page, $node) = ($1, $2, $3); - $type = 'item'; - } - # alttext and item - elsif(m!^(.*?)\s*[|]\s*/(.+)$!) { - ($alttext, $node) = ($1,$2); - } - # nonstandard: alttext and hyperlink - elsif(m!^(.*?)\s*[|]\s*(\w+:[^:\s]\S*)$!) { - ($alttext, $node) = ($1,$2); - $type = 'hyperlink'; - } - # must be an item or a "malformed" section (without "") - else { - $node = $_; - $type = 'item'; - } - # collapse whitespace in nodes - $node =~ s/\s+/ /gs; - - # empty alternative text expands to node name - if(defined $alttext) { - if(!length($alttext)) { - $alttext = $node | $page; - } - } - else { - $alttext = ''; - } - - if($page =~ /[(]\w*[)]$/) { - $self->warning("(section) in '$page' deprecated"); - } - if(!$quoted && $node =~ m:[|/]: && $type ne 'hyperlink') { - $self->warning("node '$node' contains non-escaped | or /"); - } - if($alttext =~ m:[|/]:) { - $self->warning("alternative text '$node' contains non-escaped | or /"); - } - $self->{-page} = $page; - $self->{-node} = $node; - $self->{-alttext} = $alttext; - #warn "DEBUG: page=$page section=$section item=$item alttext=$alttext\n"; - $self->{-type} = $type; - $self->_construct_text(); - 1; -} - -sub _construct_text { - my $self = shift; - my $alttext = $self->alttext(); - my $type = $self->type(); - my $section = $self->node(); - my $page = $self->page(); - my $page_ext = ''; - $page =~ s/([(]\w*[)])$// && ($page_ext = $1); - if($alttext) { - $self->{_text} = $alttext; - } - elsif($type eq 'hyperlink') { - $self->{_text} = $section; - } - else { - $self->{_text} = ($section || '') . - (($page && $section) ? ' in ' : '') . - "$page$page_ext"; - } - # for being marked up later - # use the non-standard markers P<> and Q<>, so that the resulting - # text can be parsed by the translators. It's their job to put - # the correct hypertext around the linktext - if($alttext) { - $self->{_markup} = "Q<$alttext>"; - } - elsif($type eq 'hyperlink') { - $self->{_markup} = "Q<$section>"; - } - else { - $self->{_markup} = (!$section ? '' : "Q<$section>") . - ($page ? ($section ? ' in ':'') . "P<$page>$page_ext" : ''); - } -} - -=item $link-E<gt>markup($string) - -Set/retrieve the textual value of the link. This string contains special -markers C<PE<lt>E<gt>> and C<QE<lt>E<gt>> that should be expanded by the -translator's interior sequence expansion engine to the -formatter-specific code to highlight/activate the hyperlink. The details -have to be implemented in the translator. - -=cut - -#' retrieve/set markuped text -sub markup { - return (@_ > 1) ? ($_[0]->{_markup} = $_[1]) : $_[0]->{_markup}; -} - -=item $link-E<gt>text() - -This method returns the textual representation of the hyperlink as above, -but without markers (read only). Depending on the link type this is one of -the following alternatives (the + and * denote the portions of the text -that are marked up): - - +perl+ L<perl> - *$|* in +perlvar+ L<perlvar/$|> - *OPTIONS* in +perldoc+ L<perldoc/"OPTIONS"> - *DESCRIPTION* L<"DESCRIPTION"> - -=cut - -# The complete link's text -sub text { - $_[0]->{_text}; -} - -=item $link-E<gt>warning() - -After parsing, this method returns any warnings encountered during the -parsing process. - -=cut - -# Set/retrieve warnings -sub warning { - my $self = shift; - if(@_) { - push(@{$self->{_warnings}}, @_); - return @_; - } - return @{$self->{_warnings}}; -} - -=item $link-E<gt>file() - -=item $link-E<gt>line() - -Just simple slots for storing information about the line and the file -the link was encountered in. Has to be filled in manually. - -=cut - -# The line in the file the link appears -sub line { - return (@_ > 1) ? ($_[0]->{-line} = $_[1]) : $_[0]->{-line}; -} - -# The POD file name the link appears in -sub file { - return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file}; -} - -=item $link-E<gt>page() - -This method sets or returns the POD page this link points to. - -=cut - -# The POD page the link appears on -sub page { - if (@_ > 1) { - $_[0]->{-page} = $_[1]; - $_[0]->_construct_text(); - } - $_[0]->{-page}; -} - -=item $link-E<gt>node() - -As above, but the destination node text of the link. - -=cut - -# The link destination -sub node { - if (@_ > 1) { - $_[0]->{-node} = $_[1]; - $_[0]->_construct_text(); - } - $_[0]->{-node}; -} - -=item $link-E<gt>alttext() - -Sets or returns an alternative text specified in the link. - -=cut - -# Potential alternative text -sub alttext { - if (@_ > 1) { - $_[0]->{-alttext} = $_[1]; - $_[0]->_construct_text(); - } - $_[0]->{-alttext}; -} - -=item $link-E<gt>type() - -The node type, either C<section> or C<item>. As an unofficial type, -there is also C<hyperlink>, derived from e.g. C<LE<lt>http://perl.comE<gt>> - -=cut - -# The type: item or headn -sub type { - return (@_ > 1) ? ($_[0]->{-type} = $_[1]) : $_[0]->{-type}; -} - -=item $link-E<gt>link() - -Returns the link as contents of C<LE<lt>E<gt>>. Reciprocal to B<parse()>. - -=back - -=cut - -# The link itself -sub link { - my $self = shift; - my $link = $self->page() || ''; - if($self->node()) { - my $node = $self->node(); - $text =~ s/\|/E<verbar>/g; - $text =~ s:/:E<sol>:g; - if($self->type() eq 'section') { - $link .= ($link ? '/' : '') . '"' . $node . '"'; - } - elsif($self->type() eq 'hyperlink') { - $link = $self->node(); - } - else { # item - $link .= '/' . $node; - } - } - if($self->alttext()) { - my $text = $self->alttext(); - $text =~ s/\|/E<verbar>/g; - $text =~ s:/:E<sol>:g; - $link = "$text|$link"; - } - $link; -} - -sub _invalid_link { - my ($msg) = @_; - # this sets @_ - #eval { die "$msg\n" }; - #chomp $@; - $@ = $msg; # this seems to work, too! - undef; -} - -#----------------------------------------------------------------------------- -# Pod::Cache -# -# class to hold POD page details -#----------------------------------------------------------------------------- - -package Pod::Cache; - -=head2 Pod::Cache - -B<Pod::Cache> holds information about a set of POD documents, -especially the nodes for hyperlinks. -The following methods are available: - -=over 4 - -=item Pod::Cache-E<gt>new() - -Create a new cache object. This object can hold an arbitrary number of -POD documents of class Pod::Cache::Item. - -=cut - -sub new { - my $this = shift; - my $class = ref($this) || $this; - my $self = []; - bless $self, $class; - return $self; -} - -=item $cache-E<gt>item() - -Add a new item to the cache. Without arguments, this method returns a -list of all cache elements. - -=cut - -sub item { - my ($self,%param) = @_; - if(%param) { - my $item = Pod::Cache::Item->new(%param); - push(@$self, $item); - return $item; - } - else { - return @{$self}; - } -} - -=item $cache-E<gt>find_page($name) - -Look for a POD document named C<$name> in the cache. Returns the -reference to the corresponding Pod::Cache::Item object or undef if -not found. - -=back - -=cut - -sub find_page { - my ($self,$page) = @_; - foreach(@$self) { - if($_->page() eq $page) { - return $_; - } - } - undef; -} - -package Pod::Cache::Item; - -=head2 Pod::Cache::Item - -B<Pod::Cache::Item> holds information about individual POD documents, -that can be grouped in a Pod::Cache object. -It is intended to hold information about the hyperlink nodes of POD -documents. -The following methods are available: - -=over 4 - -=item Pod::Cache::Item-E<gt>new() - -Create a new object. - -=cut - -sub new { - my $this = shift; - my $class = ref($this) || $this; - my %params = @_; - my $self = {%params}; - bless $self, $class; - $self->initialize(); - return $self; -} - -sub initialize { - my $self = shift; - $self->{-nodes} = [] unless(defined $self->{-nodes}); -} - -=item $cacheitem-E<gt>page() - -Set/retrieve the POD document name (e.g. "Pod::Parser"). - -=cut - -# The POD page -sub page { - return (@_ > 1) ? ($_[0]->{-page} = $_[1]) : $_[0]->{-page}; -} - -=item $cacheitem-E<gt>description() - -Set/retrieve the POD short description as found in the C<=head1 NAME> -section. - -=cut - -# The POD description, taken out of NAME if present -sub description { - return (@_ > 1) ? ($_[0]->{-description} = $_[1]) : $_[0]->{-description}; -} - -=item $cacheitem-E<gt>path() - -Set/retrieve the POD file storage path. - -=cut - -# The file path -sub path { - return (@_ > 1) ? ($_[0]->{-path} = $_[1]) : $_[0]->{-path}; -} - -=item $cacheitem-E<gt>file() - -Set/retrieve the POD file name. - -=cut - -# The POD file name -sub file { - return (@_ > 1) ? ($_[0]->{-file} = $_[1]) : $_[0]->{-file}; -} - -=item $cacheitem-E<gt>nodes() - -Add a node (or a list of nodes) to the document's node list. Note that -the order is kept, i.e. start with the first node and end with the last. -If no argument is given, the current list of nodes is returned in the -same order the nodes have been added. -A node can be any scalar, but usually is a pair of node string and -unique id for the C<find_node> method to work correctly. - -=cut - -# The POD nodes -sub nodes { - my ($self,@nodes) = @_; - if(@nodes) { - push(@{$self->{-nodes}}, @nodes); - return @nodes; - } - else { - return @{$self->{-nodes}}; - } -} - -=item $cacheitem-E<gt>find_node($name) - -Look for a node or index entry named C<$name> in the object. -Returns the unique id of the node (i.e. the second element of the array -stored in the node arry) or undef if not found. - -=cut - -sub find_node { - my ($self,$node) = @_; - my @search; - push(@search, @{$self->{-nodes}}) if($self->{-nodes}); - push(@search, @{$self->{-idx}}) if($self->{-idx}); - foreach(@search) { - if($_->[0] eq $node) { - return $_->[1]; # id - } - } - undef; -} - -=item $cacheitem-E<gt>idx() - -Add an index entry (or a list of them) to the document's index list. Note that -the order is kept, i.e. start with the first node and end with the last. -If no argument is given, the current list of index entries is returned in the -same order the entries have been added. -An index entry can be any scalar, but usually is a pair of string and -unique id. - -=back - -=cut - -# The POD index entries -sub idx { - my ($self,@idx) = @_; - if(@idx) { - push(@{$self->{-idx}}, @idx); - return @idx; - } - else { - return @{$self->{-idx}}; - } -} - -=head1 AUTHOR - -Please report bugs using L<http://rt.cpan.org>. - -Marek Rouchal E<lt>marekr@cpan.orgE<gt>, borrowing -a lot of things from L<pod2man> and L<pod2roff> as well as other POD -processing tools by Tom Christiansen, Brad Appleton and Russ Allbery. - -=head1 SEE ALSO - -L<pod2man>, L<pod2roff>, L<Pod::Parser>, L<Pod::Checker>, -L<pod2html> - -=cut - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Parser.pm b/Master/tlpkg/tlperl.old/lib/Pod/Parser.pm deleted file mode 100644 index a5fde848503..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Parser.pm +++ /dev/null @@ -1,1799 +0,0 @@ -############################################################################# -# Pod/Parser.pm -- package which defines a base class for parsing POD docs. -# -# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved. -# This file is part of "PodParser". PodParser is free software; -# you can redistribute it and/or modify it under the same terms -# as Perl itself. -############################################################################# - -package Pod::Parser; - -use vars qw($VERSION); -$VERSION = 1.32; ## Current version of this package -require 5.005; ## requires this Perl version or later - -############################################################################# - -=head1 NAME - -Pod::Parser - base class for creating POD filters and translators - -=head1 SYNOPSIS - - use Pod::Parser; - - package MyParser; - @ISA = qw(Pod::Parser); - - sub command { - my ($parser, $command, $paragraph, $line_num) = @_; - ## Interpret the command and its text; sample actions might be: - if ($command eq 'head1') { ... } - elsif ($command eq 'head2') { ... } - ## ... other commands and their actions - my $out_fh = $parser->output_handle(); - my $expansion = $parser->interpolate($paragraph, $line_num); - print $out_fh $expansion; - } - - sub verbatim { - my ($parser, $paragraph, $line_num) = @_; - ## Format verbatim paragraph; sample actions might be: - my $out_fh = $parser->output_handle(); - print $out_fh $paragraph; - } - - sub textblock { - my ($parser, $paragraph, $line_num) = @_; - ## Translate/Format this block of text; sample actions might be: - my $out_fh = $parser->output_handle(); - my $expansion = $parser->interpolate($paragraph, $line_num); - print $out_fh $expansion; - } - - sub interior_sequence { - my ($parser, $seq_command, $seq_argument) = @_; - ## Expand an interior sequence; sample actions might be: - return "*$seq_argument*" if ($seq_command eq 'B'); - return "`$seq_argument'" if ($seq_command eq 'C'); - return "_${seq_argument}_'" if ($seq_command eq 'I'); - ## ... other sequence commands and their resulting text - } - - package main; - - ## Create a parser object and have it parse file whose name was - ## given on the command-line (use STDIN if no files were given). - $parser = new MyParser(); - $parser->parse_from_filehandle(\*STDIN) if (@ARGV == 0); - for (@ARGV) { $parser->parse_from_file($_); } - -=head1 REQUIRES - -perl5.005, Pod::InputObjects, Exporter, Symbol, Carp - -=head1 EXPORTS - -Nothing. - -=head1 DESCRIPTION - -B<Pod::Parser> is a base class for creating POD filters and translators. -It handles most of the effort involved with parsing the POD sections -from an input stream, leaving subclasses free to be concerned only with -performing the actual translation of text. - -B<Pod::Parser> parses PODs, and makes method calls to handle the various -components of the POD. Subclasses of B<Pod::Parser> override these methods -to translate the POD into whatever output format they desire. - -=head1 QUICK OVERVIEW - -To create a POD filter for translating POD documentation into some other -format, you create a subclass of B<Pod::Parser> which typically overrides -just the base class implementation for the following methods: - -=over 2 - -=item * - -B<command()> - -=item * - -B<verbatim()> - -=item * - -B<textblock()> - -=item * - -B<interior_sequence()> - -=back - -You may also want to override the B<begin_input()> and B<end_input()> -methods for your subclass (to perform any needed per-file and/or -per-document initialization or cleanup). - -If you need to perform any preprocesssing of input before it is parsed -you may want to override one or more of B<preprocess_line()> and/or -B<preprocess_paragraph()>. - -Sometimes it may be necessary to make more than one pass over the input -files. If this is the case you have several options. You can make the -first pass using B<Pod::Parser> and override your methods to store the -intermediate results in memory somewhere for the B<end_pod()> method to -process. You could use B<Pod::Parser> for several passes with an -appropriate state variable to control the operation for each pass. If -your input source can't be reset to start at the beginning, you can -store it in some other structure as a string or an array and have that -structure implement a B<getline()> method (which is all that -B<parse_from_filehandle()> uses to read input). - -Feel free to add any member data fields you need to keep track of things -like current font, indentation, horizontal or vertical position, or -whatever else you like. Be sure to read L<"PRIVATE METHODS AND DATA"> -to avoid name collisions. - -For the most part, the B<Pod::Parser> base class should be able to -do most of the input parsing for you and leave you free to worry about -how to intepret the commands and translate the result. - -Note that all we have described here in this quick overview is the -simplest most straightforward use of B<Pod::Parser> to do stream-based -parsing. It is also possible to use the B<Pod::Parser::parse_text> function -to do more sophisticated tree-based parsing. See L<"TREE-BASED PARSING">. - -=head1 PARSING OPTIONS - -A I<parse-option> is simply a named option of B<Pod::Parser> with a -value that corresponds to a certain specified behavior. These various -behaviors of B<Pod::Parser> may be enabled/disabled by setting -or unsetting one or more I<parse-options> using the B<parseopts()> method. -The set of currently accepted parse-options is as follows: - -=over 3 - -=item B<-want_nonPODs> (default: unset) - -Normally (by default) B<Pod::Parser> will only provide access to -the POD sections of the input. Input paragraphs that are not part -of the POD-format documentation are not made available to the caller -(not even using B<preprocess_paragraph()>). Setting this option to a -non-empty, non-zero value will allow B<preprocess_paragraph()> to see -non-POD sections of the input as well as POD sections. The B<cutting()> -method can be used to determine if the corresponding paragraph is a POD -paragraph, or some other input paragraph. - -=item B<-process_cut_cmd> (default: unset) - -Normally (by default) B<Pod::Parser> handles the C<=cut> POD directive -by itself and does not pass it on to the caller for processing. Setting -this option to a non-empty, non-zero value will cause B<Pod::Parser> to -pass the C<=cut> directive to the caller just like any other POD command -(and hence it may be processed by the B<command()> method). - -B<Pod::Parser> will still interpret the C<=cut> directive to mean that -"cutting mode" has been (re)entered, but the caller will get a chance -to capture the actual C<=cut> paragraph itself for whatever purpose -it desires. - -=item B<-warnings> (default: unset) - -Normally (by default) B<Pod::Parser> recognizes a bare minimum of -pod syntax errors and warnings and issues diagnostic messages -for errors, but not for warnings. (Use B<Pod::Checker> to do more -thorough checking of POD syntax.) Setting this option to a non-empty, -non-zero value will cause B<Pod::Parser> to issue diagnostics for -the few warnings it recognizes as well as the errors. - -=back - -Please see L<"parseopts()"> for a complete description of the interface -for the setting and unsetting of parse-options. - -=cut - -############################################################################# - -use vars qw(@ISA); -use strict; -#use diagnostics; -use Pod::InputObjects; -use Carp; -use Exporter; -BEGIN { - if ($] < 5.6) { - require Symbol; - import Symbol; - } -} -@ISA = qw(Exporter); - -## These "variables" are used as local "glob aliases" for performance -use vars qw(%myData %myOpts @input_stack); - -############################################################################# - -=head1 RECOMMENDED SUBROUTINE/METHOD OVERRIDES - -B<Pod::Parser> provides several methods which most subclasses will probably -want to override. These methods are as follows: - -=cut - -##--------------------------------------------------------------------------- - -=head1 B<command()> - - $parser->command($cmd,$text,$line_num,$pod_para); - -This method should be overridden by subclasses to take the appropriate -action when a POD command paragraph (denoted by a line beginning with -"=") is encountered. When such a POD directive is seen in the input, -this method is called and is passed: - -=over 3 - -=item C<$cmd> - -the name of the command for this POD paragraph - -=item C<$text> - -the paragraph text for the given POD paragraph command. - -=item C<$line_num> - -the line-number of the beginning of the paragraph - -=item C<$pod_para> - -a reference to a C<Pod::Paragraph> object which contains further -information about the paragraph command (see L<Pod::InputObjects> -for details). - -=back - -B<Note> that this method I<is> called for C<=pod> paragraphs. - -The base class implementation of this method simply treats the raw POD -command as normal block of paragraph text (invoking the B<textblock()> -method with the command paragraph). - -=cut - -sub command { - my ($self, $cmd, $text, $line_num, $pod_para) = @_; - ## Just treat this like a textblock - $self->textblock($pod_para->raw_text(), $line_num, $pod_para); -} - -##--------------------------------------------------------------------------- - -=head1 B<verbatim()> - - $parser->verbatim($text,$line_num,$pod_para); - -This method may be overridden by subclasses to take the appropriate -action when a block of verbatim text is encountered. It is passed the -following parameters: - -=over 3 - -=item C<$text> - -the block of text for the verbatim paragraph - -=item C<$line_num> - -the line-number of the beginning of the paragraph - -=item C<$pod_para> - -a reference to a C<Pod::Paragraph> object which contains further -information about the paragraph (see L<Pod::InputObjects> -for details). - -=back - -The base class implementation of this method simply prints the textblock -(unmodified) to the output filehandle. - -=cut - -sub verbatim { - my ($self, $text, $line_num, $pod_para) = @_; - my $out_fh = $self->{_OUTPUT}; - print $out_fh $text; -} - -##--------------------------------------------------------------------------- - -=head1 B<textblock()> - - $parser->textblock($text,$line_num,$pod_para); - -This method may be overridden by subclasses to take the appropriate -action when a normal block of POD text is encountered (although the base -class method will usually do what you want). It is passed the following -parameters: - -=over 3 - -=item C<$text> - -the block of text for the a POD paragraph - -=item C<$line_num> - -the line-number of the beginning of the paragraph - -=item C<$pod_para> - -a reference to a C<Pod::Paragraph> object which contains further -information about the paragraph (see L<Pod::InputObjects> -for details). - -=back - -In order to process interior sequences, subclasses implementations of -this method will probably want to invoke either B<interpolate()> or -B<parse_text()>, passing it the text block C<$text>, and the corresponding -line number in C<$line_num>, and then perform any desired processing upon -the returned result. - -The base class implementation of this method simply prints the text block -as it occurred in the input stream). - -=cut - -sub textblock { - my ($self, $text, $line_num, $pod_para) = @_; - my $out_fh = $self->{_OUTPUT}; - print $out_fh $self->interpolate($text, $line_num); -} - -##--------------------------------------------------------------------------- - -=head1 B<interior_sequence()> - - $parser->interior_sequence($seq_cmd,$seq_arg,$pod_seq); - -This method should be overridden by subclasses to take the appropriate -action when an interior sequence is encountered. An interior sequence is -an embedded command within a block of text which appears as a command -name (usually a single uppercase character) followed immediately by a -string of text which is enclosed in angle brackets. This method is -passed the sequence command C<$seq_cmd> and the corresponding text -C<$seq_arg>. It is invoked by the B<interpolate()> method for each interior -sequence that occurs in the string that it is passed. It should return -the desired text string to be used in place of the interior sequence. -The C<$pod_seq> argument is a reference to a C<Pod::InteriorSequence> -object which contains further information about the interior sequence. -Please see L<Pod::InputObjects> for details if you need to access this -additional information. - -Subclass implementations of this method may wish to invoke the -B<nested()> method of C<$pod_seq> to see if it is nested inside -some other interior-sequence (and if so, which kind). - -The base class implementation of the B<interior_sequence()> method -simply returns the raw text of the interior sequence (as it occurred -in the input) to the caller. - -=cut - -sub interior_sequence { - my ($self, $seq_cmd, $seq_arg, $pod_seq) = @_; - ## Just return the raw text of the interior sequence - return $pod_seq->raw_text(); -} - -############################################################################# - -=head1 OPTIONAL SUBROUTINE/METHOD OVERRIDES - -B<Pod::Parser> provides several methods which subclasses may want to override -to perform any special pre/post-processing. These methods do I<not> have to -be overridden, but it may be useful for subclasses to take advantage of them. - -=cut - -##--------------------------------------------------------------------------- - -=head1 B<new()> - - my $parser = Pod::Parser->new(); - -This is the constructor for B<Pod::Parser> and its subclasses. You -I<do not> need to override this method! It is capable of constructing -subclass objects as well as base class objects, provided you use -any of the following constructor invocation styles: - - my $parser1 = MyParser->new(); - my $parser2 = new MyParser(); - my $parser3 = $parser2->new(); - -where C<MyParser> is some subclass of B<Pod::Parser>. - -Using the syntax C<MyParser::new()> to invoke the constructor is I<not> -recommended, but if you insist on being able to do this, then the -subclass I<will> need to override the B<new()> constructor method. If -you do override the constructor, you I<must> be sure to invoke the -B<initialize()> method of the newly blessed object. - -Using any of the above invocations, the first argument to the -constructor is always the corresponding package name (or object -reference). No other arguments are required, but if desired, an -associative array (or hash-table) my be passed to the B<new()> -constructor, as in: - - my $parser1 = MyParser->new( MYDATA => $value1, MOREDATA => $value2 ); - my $parser2 = new MyParser( -myflag => 1 ); - -All arguments passed to the B<new()> constructor will be treated as -key/value pairs in a hash-table. The newly constructed object will be -initialized by copying the contents of the given hash-table (which may -have been empty). The B<new()> constructor for this class and all of its -subclasses returns a blessed reference to the initialized object (hash-table). - -=cut - -sub new { - ## Determine if we were called via an object-ref or a classname - my $this = shift; - my $class = ref($this) || $this; - ## Any remaining arguments are treated as initial values for the - ## hash that is used to represent this object. - my %params = @_; - my $self = { %params }; - ## Bless ourselves into the desired class and perform any initialization - bless $self, $class; - $self->initialize(); - return $self; -} - -##--------------------------------------------------------------------------- - -=head1 B<initialize()> - - $parser->initialize(); - -This method performs any necessary object initialization. It takes no -arguments (other than the object instance of course, which is typically -copied to a local variable named C<$self>). If subclasses override this -method then they I<must> be sure to invoke C<$self-E<gt>SUPER::initialize()>. - -=cut - -sub initialize { - #my $self = shift; - #return; -} - -##--------------------------------------------------------------------------- - -=head1 B<begin_pod()> - - $parser->begin_pod(); - -This method is invoked at the beginning of processing for each POD -document that is encountered in the input. Subclasses should override -this method to perform any per-document initialization. - -=cut - -sub begin_pod { - #my $self = shift; - #return; -} - -##--------------------------------------------------------------------------- - -=head1 B<begin_input()> - - $parser->begin_input(); - -This method is invoked by B<parse_from_filehandle()> immediately I<before> -processing input from a filehandle. The base class implementation does -nothing, however, subclasses may override it to perform any per-file -initializations. - -Note that if multiple files are parsed for a single POD document -(perhaps the result of some future C<=include> directive) this method -is invoked for every file that is parsed. If you wish to perform certain -initializations once per document, then you should use B<begin_pod()>. - -=cut - -sub begin_input { - #my $self = shift; - #return; -} - -##--------------------------------------------------------------------------- - -=head1 B<end_input()> - - $parser->end_input(); - -This method is invoked by B<parse_from_filehandle()> immediately I<after> -processing input from a filehandle. The base class implementation does -nothing, however, subclasses may override it to perform any per-file -cleanup actions. - -Please note that if multiple files are parsed for a single POD document -(perhaps the result of some kind of C<=include> directive) this method -is invoked for every file that is parsed. If you wish to perform certain -cleanup actions once per document, then you should use B<end_pod()>. - -=cut - -sub end_input { - #my $self = shift; - #return; -} - -##--------------------------------------------------------------------------- - -=head1 B<end_pod()> - - $parser->end_pod(); - -This method is invoked at the end of processing for each POD document -that is encountered in the input. Subclasses should override this method -to perform any per-document finalization. - -=cut - -sub end_pod { - #my $self = shift; - #return; -} - -##--------------------------------------------------------------------------- - -=head1 B<preprocess_line()> - - $textline = $parser->preprocess_line($text, $line_num); - -This method should be overridden by subclasses that wish to perform -any kind of preprocessing for each I<line> of input (I<before> it has -been determined whether or not it is part of a POD paragraph). The -parameter C<$text> is the input line; and the parameter C<$line_num> is -the line number of the corresponding text line. - -The value returned should correspond to the new text to use in its -place. If the empty string or an undefined value is returned then no -further processing will be performed for this line. - -Please note that the B<preprocess_line()> method is invoked I<before> -the B<preprocess_paragraph()> method. After all (possibly preprocessed) -lines in a paragraph have been assembled together and it has been -determined that the paragraph is part of the POD documentation from one -of the selected sections, then B<preprocess_paragraph()> is invoked. - -The base class implementation of this method returns the given text. - -=cut - -sub preprocess_line { - my ($self, $text, $line_num) = @_; - return $text; -} - -##--------------------------------------------------------------------------- - -=head1 B<preprocess_paragraph()> - - $textblock = $parser->preprocess_paragraph($text, $line_num); - -This method should be overridden by subclasses that wish to perform any -kind of preprocessing for each block (paragraph) of POD documentation -that appears in the input stream. The parameter C<$text> is the POD -paragraph from the input file; and the parameter C<$line_num> is the -line number for the beginning of the corresponding paragraph. - -The value returned should correspond to the new text to use in its -place If the empty string is returned or an undefined value is -returned, then the given C<$text> is ignored (not processed). - -This method is invoked after gathering up all the lines in a paragraph -and after determining the cutting state of the paragraph, -but before trying to further parse or interpret them. After -B<preprocess_paragraph()> returns, the current cutting state (which -is returned by C<$self-E<gt>cutting()>) is examined. If it evaluates -to true then input text (including the given C<$text>) is cut (not -processed) until the next POD directive is encountered. - -Please note that the B<preprocess_line()> method is invoked I<before> -the B<preprocess_paragraph()> method. After all (possibly preprocessed) -lines in a paragraph have been assembled together and either it has been -determined that the paragraph is part of the POD documentation from one -of the selected sections or the C<-want_nonPODs> option is true, -then B<preprocess_paragraph()> is invoked. - -The base class implementation of this method returns the given text. - -=cut - -sub preprocess_paragraph { - my ($self, $text, $line_num) = @_; - return $text; -} - -############################################################################# - -=head1 METHODS FOR PARSING AND PROCESSING - -B<Pod::Parser> provides several methods to process input text. These -methods typically won't need to be overridden (and in some cases they -can't be overridden), but subclasses may want to invoke them to exploit -their functionality. - -=cut - -##--------------------------------------------------------------------------- - -=head1 B<parse_text()> - - $ptree1 = $parser->parse_text($text, $line_num); - $ptree2 = $parser->parse_text({%opts}, $text, $line_num); - $ptree3 = $parser->parse_text(\%opts, $text, $line_num); - -This method is useful if you need to perform your own interpolation -of interior sequences and can't rely upon B<interpolate> to expand -them in simple bottom-up order. - -The parameter C<$text> is a string or block of text to be parsed -for interior sequences; and the parameter C<$line_num> is the -line number curresponding to the beginning of C<$text>. - -B<parse_text()> will parse the given text into a parse-tree of "nodes." -and interior-sequences. Each "node" in the parse tree is either a -text-string, or a B<Pod::InteriorSequence>. The result returned is a -parse-tree of type B<Pod::ParseTree>. Please see L<Pod::InputObjects> -for more information about B<Pod::InteriorSequence> and B<Pod::ParseTree>. - -If desired, an optional hash-ref may be specified as the first argument -to customize certain aspects of the parse-tree that is created and -returned. The set of recognized option keywords are: - -=over 3 - -=item B<-expand_seq> =E<gt> I<code-ref>|I<method-name> - -Normally, the parse-tree returned by B<parse_text()> will contain an -unexpanded C<Pod::InteriorSequence> object for each interior-sequence -encountered. Specifying B<-expand_seq> tells B<parse_text()> to "expand" -every interior-sequence it sees by invoking the referenced function -(or named method of the parser object) and using the return value as the -expanded result. - -If a subroutine reference was given, it is invoked as: - - &$code_ref( $parser, $sequence ) - -and if a method-name was given, it is invoked as: - - $parser->method_name( $sequence ) - -where C<$parser> is a reference to the parser object, and C<$sequence> -is a reference to the interior-sequence object. -[I<NOTE>: If the B<interior_sequence()> method is specified, then it is -invoked according to the interface specified in L<"interior_sequence()">]. - -=item B<-expand_text> =E<gt> I<code-ref>|I<method-name> - -Normally, the parse-tree returned by B<parse_text()> will contain a -text-string for each contiguous sequence of characters outside of an -interior-sequence. Specifying B<-expand_text> tells B<parse_text()> to -"preprocess" every such text-string it sees by invoking the referenced -function (or named method of the parser object) and using the return value -as the preprocessed (or "expanded") result. [Note that if the result is -an interior-sequence, then it will I<not> be expanded as specified by the -B<-expand_seq> option; Any such recursive expansion needs to be handled by -the specified callback routine.] - -If a subroutine reference was given, it is invoked as: - - &$code_ref( $parser, $text, $ptree_node ) - -and if a method-name was given, it is invoked as: - - $parser->method_name( $text, $ptree_node ) - -where C<$parser> is a reference to the parser object, C<$text> is the -text-string encountered, and C<$ptree_node> is a reference to the current -node in the parse-tree (usually an interior-sequence object or else the -top-level node of the parse-tree). - -=item B<-expand_ptree> =E<gt> I<code-ref>|I<method-name> - -Rather than returning a C<Pod::ParseTree>, pass the parse-tree as an -argument to the referenced subroutine (or named method of the parser -object) and return the result instead of the parse-tree object. - -If a subroutine reference was given, it is invoked as: - - &$code_ref( $parser, $ptree ) - -and if a method-name was given, it is invoked as: - - $parser->method_name( $ptree ) - -where C<$parser> is a reference to the parser object, and C<$ptree> -is a reference to the parse-tree object. - -=back - -=cut - -sub parse_text { - my $self = shift; - local $_ = ''; - - ## Get options and set any defaults - my %opts = (ref $_[0]) ? %{ shift() } : (); - my $expand_seq = $opts{'-expand_seq'} || undef; - my $expand_text = $opts{'-expand_text'} || undef; - my $expand_ptree = $opts{'-expand_ptree'} || undef; - - my $text = shift; - my $line = shift; - my $file = $self->input_file(); - my $cmd = ""; - - ## Convert method calls into closures, for our convenience - my $xseq_sub = $expand_seq; - my $xtext_sub = $expand_text; - my $xptree_sub = $expand_ptree; - if (defined $expand_seq and $expand_seq eq 'interior_sequence') { - ## If 'interior_sequence' is the method to use, we have to pass - ## more than just the sequence object, we also need to pass the - ## sequence name and text. - $xseq_sub = sub { - my ($self, $iseq) = @_; - my $args = join("", $iseq->parse_tree->children); - return $self->interior_sequence($iseq->name, $args, $iseq); - }; - } - ref $xseq_sub or $xseq_sub = sub { shift()->$expand_seq(@_) }; - ref $xtext_sub or $xtext_sub = sub { shift()->$expand_text(@_) }; - ref $xptree_sub or $xptree_sub = sub { shift()->$expand_ptree(@_) }; - - ## Keep track of the "current" interior sequence, and maintain a stack - ## of "in progress" sequences. - ## - ## NOTE that we push our own "accumulator" at the very beginning of the - ## stack. It's really a parse-tree, not a sequence; but it implements - ## the methods we need so we can use it to gather-up all the sequences - ## and strings we parse. Thus, by the end of our parsing, it should be - ## the only thing left on our stack and all we have to do is return it! - ## - my $seq = Pod::ParseTree->new(); - my @seq_stack = ($seq); - my ($ldelim, $rdelim) = ('', ''); - - ## Iterate over all sequence starts text (NOTE: split with - ## capturing parens keeps the delimiters) - $_ = $text; - my @tokens = split /([A-Z]<(?:<+\s)?)/; - while ( @tokens ) { - $_ = shift @tokens; - ## Look for the beginning of a sequence - if ( /^([A-Z])(<(?:<+\s)?)$/ ) { - ## Push a new sequence onto the stack of those "in-progress" - my $ldelim_orig; - ($cmd, $ldelim_orig) = ($1, $2); - ($ldelim = $ldelim_orig) =~ s/\s+$//; - ($rdelim = $ldelim) =~ tr/</>/; - $seq = Pod::InteriorSequence->new( - -name => $cmd, - -ldelim => $ldelim_orig, -rdelim => $rdelim, - -file => $file, -line => $line - ); - (@seq_stack > 1) and $seq->nested($seq_stack[-1]); - push @seq_stack, $seq; - } - ## Look for sequence ending - elsif ( @seq_stack > 1 ) { - ## Make sure we match the right kind of closing delimiter - my ($seq_end, $post_seq) = ("", ""); - if ( ($ldelim eq '<' and /\A(.*?)(>)/s) - or /\A(.*?)(\s+$rdelim)/s ) - { - ## Found end-of-sequence, capture the interior and the - ## closing the delimiter, and put the rest back on the - ## token-list - $post_seq = substr($_, length($1) + length($2)); - ($_, $seq_end) = ($1, $2); - (length $post_seq) and unshift @tokens, $post_seq; - } - if (length) { - ## In the middle of a sequence, append this text to it, and - ## dont forget to "expand" it if that's what the caller wanted - $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_); - $_ .= $seq_end; - } - if (length $seq_end) { - ## End of current sequence, record terminating delimiter - $seq->rdelim($seq_end); - ## Pop it off the stack of "in progress" sequences - pop @seq_stack; - ## Append result to its parent in current parse tree - $seq_stack[-1]->append($expand_seq ? &$xseq_sub($self,$seq) - : $seq); - ## Remember the current cmd-name and left-delimiter - if(@seq_stack > 1) { - $cmd = $seq_stack[-1]->name; - $ldelim = $seq_stack[-1]->ldelim; - $rdelim = $seq_stack[-1]->rdelim; - } else { - $cmd = $ldelim = $rdelim = ''; - } - } - } - elsif (length) { - ## In the middle of a sequence, append this text to it, and - ## dont forget to "expand" it if that's what the caller wanted - $seq->append($expand_text ? &$xtext_sub($self,$_,$seq) : $_); - } - ## Keep track of line count - $line += tr/\n//; - ## Remember the "current" sequence - $seq = $seq_stack[-1]; - } - - ## Handle unterminated sequences - my $errorsub = (@seq_stack > 1) ? $self->errorsub() : undef; - while (@seq_stack > 1) { - ($cmd, $file, $line) = ($seq->name, $seq->file_line); - $ldelim = $seq->ldelim; - ($rdelim = $ldelim) =~ tr/</>/; - $rdelim =~ s/^(\S+)(\s*)$/$2$1/; - pop @seq_stack; - my $errmsg = "*** ERROR: unterminated ${cmd}${ldelim}...${rdelim}". - " at line $line in file $file\n"; - (ref $errorsub) and &{$errorsub}($errmsg) - or (defined $errorsub) and $self->$errorsub($errmsg) - or warn($errmsg); - $seq_stack[-1]->append($expand_seq ? &$xseq_sub($self,$seq) : $seq); - $seq = $seq_stack[-1]; - } - - ## Return the resulting parse-tree - my $ptree = (pop @seq_stack)->parse_tree; - return $expand_ptree ? &$xptree_sub($self, $ptree) : $ptree; -} - -##--------------------------------------------------------------------------- - -=head1 B<interpolate()> - - $textblock = $parser->interpolate($text, $line_num); - -This method translates all text (including any embedded interior sequences) -in the given text string C<$text> and returns the interpolated result. The -parameter C<$line_num> is the line number corresponding to the beginning -of C<$text>. - -B<interpolate()> merely invokes a private method to recursively expand -nested interior sequences in bottom-up order (innermost sequences are -expanded first). If there is a need to expand nested sequences in -some alternate order, use B<parse_text> instead. - -=cut - -sub interpolate { - my($self, $text, $line_num) = @_; - my %parse_opts = ( -expand_seq => 'interior_sequence' ); - my $ptree = $self->parse_text( \%parse_opts, $text, $line_num ); - return join "", $ptree->children(); -} - -##--------------------------------------------------------------------------- - -=begin __PRIVATE__ - -=head1 B<parse_paragraph()> - - $parser->parse_paragraph($text, $line_num); - -This method takes the text of a POD paragraph to be processed, along -with its corresponding line number, and invokes the appropriate method -(one of B<command()>, B<verbatim()>, or B<textblock()>). - -For performance reasons, this method is invoked directly without any -dynamic lookup; Hence subclasses may I<not> override it! - -=end __PRIVATE__ - -=cut - -sub parse_paragraph { - my ($self, $text, $line_num) = @_; - local *myData = $self; ## alias to avoid deref-ing overhead - local *myOpts = ($myData{_PARSEOPTS} ||= {}); ## get parse-options - local $_; - - ## See if we want to preprocess nonPOD paragraphs as well as POD ones. - my $wantNonPods = $myOpts{'-want_nonPODs'}; - - ## Update cutting status - $myData{_CUTTING} = 0 if $text =~ /^={1,2}\S/; - - ## Perform any desired preprocessing if we wanted it this early - $wantNonPods and $text = $self->preprocess_paragraph($text, $line_num); - - ## Ignore up until next POD directive if we are cutting - return if $myData{_CUTTING}; - - ## Now we know this is block of text in a POD section! - - ##----------------------------------------------------------------- - ## This is a hook (hack ;-) for Pod::Select to do its thing without - ## having to override methods, but also without Pod::Parser assuming - ## $self is an instance of Pod::Select (if the _SELECTED_SECTIONS - ## field exists then we assume there is an is_selected() method for - ## us to invoke (calling $self->can('is_selected') could verify this - ## but that is more overhead than I want to incur) - ##----------------------------------------------------------------- - - ## Ignore this block if it isnt in one of the selected sections - if (exists $myData{_SELECTED_SECTIONS}) { - $self->is_selected($text) or return ($myData{_CUTTING} = 1); - } - - ## If we havent already, perform any desired preprocessing and - ## then re-check the "cutting" state - unless ($wantNonPods) { - $text = $self->preprocess_paragraph($text, $line_num); - return 1 unless ((defined $text) and (length $text)); - return 1 if ($myData{_CUTTING}); - } - - ## Look for one of the three types of paragraphs - my ($pfx, $cmd, $arg, $sep) = ('', '', '', ''); - my $pod_para = undef; - if ($text =~ /^(={1,2})(?=\S)/) { - ## Looks like a command paragraph. Capture the command prefix used - ## ("=" or "=="), as well as the command-name, its paragraph text, - ## and whatever sequence of characters was used to separate them - $pfx = $1; - $_ = substr($text, length $pfx); - ($cmd, $sep, $text) = split /(\s+)/, $_, 2; - ## If this is a "cut" directive then we dont need to do anything - ## except return to "cutting" mode. - if ($cmd eq 'cut') { - $myData{_CUTTING} = 1; - return unless $myOpts{'-process_cut_cmd'}; - } - } - ## Save the attributes indicating how the command was specified. - $pod_para = new Pod::Paragraph( - -name => $cmd, - -text => $text, - -prefix => $pfx, - -separator => $sep, - -file => $myData{_INFILE}, - -line => $line_num - ); - # ## Invoke appropriate callbacks - # if (exists $myData{_CALLBACKS}) { - # ## Look through the callback list, invoke callbacks, - # ## then see if we need to do the default actions - # ## (invoke_callbacks will return true if we do). - # return 1 unless $self->invoke_callbacks($cmd, $text, $line_num, $pod_para); - # } - if (length $cmd) { - ## A command paragraph - $self->command($cmd, $text, $line_num, $pod_para); - } - elsif ($text =~ /^\s+/) { - ## Indented text - must be a verbatim paragraph - $self->verbatim($text, $line_num, $pod_para); - } - else { - ## Looks like an ordinary block of text - $self->textblock($text, $line_num, $pod_para); - } - return 1; -} - -##--------------------------------------------------------------------------- - -=head1 B<parse_from_filehandle()> - - $parser->parse_from_filehandle($in_fh,$out_fh); - -This method takes an input filehandle (which is assumed to already be -opened for reading) and reads the entire input stream looking for blocks -(paragraphs) of POD documentation to be processed. If no first argument -is given the default input filehandle C<STDIN> is used. - -The C<$in_fh> parameter may be any object that provides a B<getline()> -method to retrieve a single line of input text (hence, an appropriate -wrapper object could be used to parse PODs from a single string or an -array of strings). - -Using C<$in_fh-E<gt>getline()>, input is read line-by-line and assembled -into paragraphs or "blocks" (which are separated by lines containing -nothing but whitespace). For each block of POD documentation -encountered it will invoke a method to parse the given paragraph. - -If a second argument is given then it should correspond to a filehandle where -output should be sent (otherwise the default output filehandle is -C<STDOUT> if no output filehandle is currently in use). - -B<NOTE:> For performance reasons, this method caches the input stream at -the top of the stack in a local variable. Any attempts by clients to -change the stack contents during processing when in the midst executing -of this method I<will not affect> the input stream used by the current -invocation of this method. - -This method does I<not> usually need to be overridden by subclasses. - -=cut - -sub parse_from_filehandle { - my $self = shift; - my %opts = (ref $_[0] eq 'HASH') ? %{ shift() } : (); - my ($in_fh, $out_fh) = @_; - $in_fh = \*STDIN unless ($in_fh); - local *myData = $self; ## alias to avoid deref-ing overhead - local *myOpts = ($myData{_PARSEOPTS} ||= {}); ## get parse-options - local $_; - - ## Put this stream at the top of the stack and do beginning-of-input - ## processing. NOTE that $in_fh might be reset during this process. - my $topstream = $self->_push_input_stream($in_fh, $out_fh); - (exists $opts{-cutting}) and $self->cutting( $opts{-cutting} ); - - ## Initialize line/paragraph - my ($textline, $paragraph) = ('', ''); - my ($nlines, $plines) = (0, 0); - - ## Use <$fh> instead of $fh->getline where possible (for speed) - $_ = ref $in_fh; - my $tied_fh = (/^(?:GLOB|FileHandle|IO::\w+)$/ or tied $in_fh); - - ## Read paragraphs line-by-line - while (defined ($textline = $tied_fh ? <$in_fh> : $in_fh->getline)) { - $textline = $self->preprocess_line($textline, ++$nlines); - next unless ((defined $textline) && (length $textline)); - - if ((! length $paragraph) && ($textline =~ /^==/)) { - ## '==' denotes a one-line command paragraph - $paragraph = $textline; - $plines = 1; - $textline = ''; - } else { - ## Append this line to the current paragraph - $paragraph .= $textline; - ++$plines; - } - - ## See if this line is blank and ends the current paragraph. - ## If it isnt, then keep iterating until it is. - next unless (($textline =~ /^([^\S\r\n]*)[\r\n]*$/) - && (length $paragraph)); - - ## Issue a warning about any non-empty blank lines - if (length($1) > 0 and $myOpts{'-warnings'} and ! $myData{_CUTTING}) { - my $errorsub = $self->errorsub(); - my $file = $self->input_file(); - my $errmsg = "*** WARNING: line containing nothing but whitespace". - " in paragraph at line $nlines in file $file\n"; - (ref $errorsub) and &{$errorsub}($errmsg) - or (defined $errorsub) and $self->$errorsub($errmsg) - or warn($errmsg); - } - - ## Now process the paragraph - parse_paragraph($self, $paragraph, ($nlines - $plines) + 1); - $paragraph = ''; - $plines = 0; - } - ## Dont forget about the last paragraph in the file - if (length $paragraph) { - parse_paragraph($self, $paragraph, ($nlines - $plines) + 1) - } - - ## Now pop the input stream off the top of the input stack. - $self->_pop_input_stream(); -} - -##--------------------------------------------------------------------------- - -=head1 B<parse_from_file()> - - $parser->parse_from_file($filename,$outfile); - -This method takes a filename and does the following: - -=over 2 - -=item * - -opens the input and output files for reading -(creating the appropriate filehandles) - -=item * - -invokes the B<parse_from_filehandle()> method passing it the -corresponding input and output filehandles. - -=item * - -closes the input and output files. - -=back - -If the special input filename "-" or "<&STDIN" is given then the STDIN -filehandle is used for input (and no open or close is performed). If no -input filename is specified then "-" is implied. - -If a second argument is given then it should be the name of the desired -output file. If the special output filename "-" or ">&STDOUT" is given -then the STDOUT filehandle is used for output (and no open or close is -performed). If the special output filename ">&STDERR" is given then the -STDERR filehandle is used for output (and no open or close is -performed). If no output filehandle is currently in use and no output -filename is specified, then "-" is implied. -Alternatively, an L<IO::String> object is also accepted as an output -file handle. - -This method does I<not> usually need to be overridden by subclasses. - -=cut - -sub parse_from_file { - my $self = shift; - my %opts = (ref $_[0] eq 'HASH') ? %{ shift() } : (); - my ($infile, $outfile) = @_; - my ($in_fh, $out_fh) = (gensym(), gensym()) if ($] < 5.006); - my ($close_input, $close_output) = (0, 0); - local *myData = $self; - local *_; - - ## Is $infile a filename or a (possibly implied) filehandle - if (defined $infile && ref $infile) { - if (ref($infile) =~ /^(SCALAR|ARRAY|HASH|CODE|REF)$/) { - croak "Input from $1 reference not supported!\n"; - } - ## Must be a filehandle-ref (or else assume its a ref to an object - ## that supports the common IO read operations). - $myData{_INFILE} = ${$infile}; - $in_fh = $infile; - } - elsif (!defined($infile) || !length($infile) || ($infile eq '-') - || ($infile =~ /^<&(?:STDIN|0)$/i)) - { - ## Not a filename, just a string implying STDIN - $infile ||= '-'; - $myData{_INFILE} = "<standard input>"; - $in_fh = \*STDIN; - } - else { - ## We have a filename, open it for reading - $myData{_INFILE} = $infile; - open($in_fh, "< $infile") or - croak "Can't open $infile for reading: $!\n"; - $close_input = 1; - } - - ## NOTE: we need to be *very* careful when "defaulting" the output - ## file. We only want to use a default if this is the beginning of - ## the entire document (but *not* if this is an included file). We - ## determine this by seeing if the input stream stack has been set-up - ## already - - ## Is $outfile a filename, a (possibly implied) filehandle, maybe a ref? - if (ref $outfile) { - ## we need to check for ref() first, as other checks involve reading - if (ref($outfile) =~ /^(ARRAY|HASH|CODE)$/) { - croak "Output to $1 reference not supported!\n"; - } - elsif (ref($outfile) eq 'SCALAR') { -# # NOTE: IO::String isn't a part of the perl distribution, -# # so probably we shouldn't support this case... -# require IO::String; -# $myData{_OUTFILE} = "$outfile"; -# $out_fh = IO::String->new($outfile); - croak "Output to SCALAR reference not supported!\n"; - } - else { - ## Must be a filehandle-ref (or else assume its a ref to an - ## object that supports the common IO write operations). - $myData{_OUTFILE} = ${$outfile}; - $out_fh = $outfile; - } - } - elsif (!defined($outfile) || !length($outfile) || ($outfile eq '-') - || ($outfile =~ /^>&?(?:STDOUT|1)$/i)) - { - if (defined $myData{_TOP_STREAM}) { - $out_fh = $myData{_OUTPUT}; - } - else { - ## Not a filename, just a string implying STDOUT - $outfile ||= '-'; - $myData{_OUTFILE} = "<standard output>"; - $out_fh = \*STDOUT; - } - } - elsif ($outfile =~ /^>&(STDERR|2)$/i) { - ## Not a filename, just a string implying STDERR - $myData{_OUTFILE} = "<standard error>"; - $out_fh = \*STDERR; - } - else { - ## We have a filename, open it for writing - $myData{_OUTFILE} = $outfile; - (-d $outfile) and croak "$outfile is a directory, not POD input!\n"; - open($out_fh, "> $outfile") or - croak "Can't open $outfile for writing: $!\n"; - $close_output = 1; - } - - ## Whew! That was a lot of work to set up reasonably/robust behavior - ## in the case of a non-filename for reading and writing. Now we just - ## have to parse the input and close the handles when we're finished. - $self->parse_from_filehandle(\%opts, $in_fh, $out_fh); - - $close_input and - close($in_fh) || croak "Can't close $infile after reading: $!\n"; - $close_output and - close($out_fh) || croak "Can't close $outfile after writing: $!\n"; -} - -############################################################################# - -=head1 ACCESSOR METHODS - -Clients of B<Pod::Parser> should use the following methods to access -instance data fields: - -=cut - -##--------------------------------------------------------------------------- - -=head1 B<errorsub()> - - $parser->errorsub("method_name"); - $parser->errorsub(\&warn_user); - $parser->errorsub(sub { print STDERR, @_ }); - -Specifies the method or subroutine to use when printing error messages -about POD syntax. The supplied method/subroutine I<must> return TRUE upon -successful printing of the message. If C<undef> is given, then the B<warn> -builtin is used to issue error messages (this is the default behavior). - - my $errorsub = $parser->errorsub() - my $errmsg = "This is an error message!\n" - (ref $errorsub) and &{$errorsub}($errmsg) - or (defined $errorsub) and $parser->$errorsub($errmsg) - or warn($errmsg); - -Returns a method name, or else a reference to the user-supplied subroutine -used to print error messages. Returns C<undef> if the B<warn> builtin -is used to issue error messages (this is the default behavior). - -=cut - -sub errorsub { - return (@_ > 1) ? ($_[0]->{_ERRORSUB} = $_[1]) : $_[0]->{_ERRORSUB}; -} - -##--------------------------------------------------------------------------- - -=head1 B<cutting()> - - $boolean = $parser->cutting(); - -Returns the current C<cutting> state: a boolean-valued scalar which -evaluates to true if text from the input file is currently being "cut" -(meaning it is I<not> considered part of the POD document). - - $parser->cutting($boolean); - -Sets the current C<cutting> state to the given value and returns the -result. - -=cut - -sub cutting { - return (@_ > 1) ? ($_[0]->{_CUTTING} = $_[1]) : $_[0]->{_CUTTING}; -} - -##--------------------------------------------------------------------------- - -##--------------------------------------------------------------------------- - -=head1 B<parseopts()> - -When invoked with no additional arguments, B<parseopts> returns a hashtable -of all the current parsing options. - - ## See if we are parsing non-POD sections as well as POD ones - my %opts = $parser->parseopts(); - $opts{'-want_nonPODs}' and print "-want_nonPODs\n"; - -When invoked using a single string, B<parseopts> treats the string as the -name of a parse-option and returns its corresponding value if it exists -(returns C<undef> if it doesn't). - - ## Did we ask to see '=cut' paragraphs? - my $want_cut = $parser->parseopts('-process_cut_cmd'); - $want_cut and print "-process_cut_cmd\n"; - -When invoked with multiple arguments, B<parseopts> treats them as -key/value pairs and the specified parse-option names are set to the -given values. Any unspecified parse-options are unaffected. - - ## Set them back to the default - $parser->parseopts(-warnings => 0); - -When passed a single hash-ref, B<parseopts> uses that hash to completely -reset the existing parse-options, all previous parse-option values -are lost. - - ## Reset all options to default - $parser->parseopts( { } ); - -See L<"PARSING OPTIONS"> for more information on the name and meaning of each -parse-option currently recognized. - -=cut - -sub parseopts { - local *myData = shift; - local *myOpts = ($myData{_PARSEOPTS} ||= {}); - return %myOpts if (@_ == 0); - if (@_ == 1) { - local $_ = shift; - return ref($_) ? $myData{_PARSEOPTS} = $_ : $myOpts{$_}; - } - my @newOpts = (%myOpts, @_); - $myData{_PARSEOPTS} = { @newOpts }; -} - -##--------------------------------------------------------------------------- - -=head1 B<output_file()> - - $fname = $parser->output_file(); - -Returns the name of the output file being written. - -=cut - -sub output_file { - return $_[0]->{_OUTFILE}; -} - -##--------------------------------------------------------------------------- - -=head1 B<output_handle()> - - $fhandle = $parser->output_handle(); - -Returns the output filehandle object. - -=cut - -sub output_handle { - return $_[0]->{_OUTPUT}; -} - -##--------------------------------------------------------------------------- - -=head1 B<input_file()> - - $fname = $parser->input_file(); - -Returns the name of the input file being read. - -=cut - -sub input_file { - return $_[0]->{_INFILE}; -} - -##--------------------------------------------------------------------------- - -=head1 B<input_handle()> - - $fhandle = $parser->input_handle(); - -Returns the current input filehandle object. - -=cut - -sub input_handle { - return $_[0]->{_INPUT}; -} - -##--------------------------------------------------------------------------- - -=begin __PRIVATE__ - -=head1 B<input_streams()> - - $listref = $parser->input_streams(); - -Returns a reference to an array which corresponds to the stack of all -the input streams that are currently in the middle of being parsed. - -While parsing an input stream, it is possible to invoke -B<parse_from_file()> or B<parse_from_filehandle()> to parse a new input -stream and then return to parsing the previous input stream. Each input -stream to be parsed is pushed onto the end of this input stack -before any of its input is read. The input stream that is currently -being parsed is always at the end (or top) of the input stack. When an -input stream has been exhausted, it is popped off the end of the -input stack. - -Each element on this input stack is a reference to C<Pod::InputSource> -object. Please see L<Pod::InputObjects> for more details. - -This method might be invoked when printing diagnostic messages, for example, -to obtain the name and line number of the all input files that are currently -being processed. - -=end __PRIVATE__ - -=cut - -sub input_streams { - return $_[0]->{_INPUT_STREAMS}; -} - -##--------------------------------------------------------------------------- - -=begin __PRIVATE__ - -=head1 B<top_stream()> - - $hashref = $parser->top_stream(); - -Returns a reference to the hash-table that represents the element -that is currently at the top (end) of the input stream stack -(see L<"input_streams()">). The return value will be the C<undef> -if the input stack is empty. - -This method might be used when printing diagnostic messages, for example, -to obtain the name and line number of the current input file. - -=end __PRIVATE__ - -=cut - -sub top_stream { - return $_[0]->{_TOP_STREAM} || undef; -} - -############################################################################# - -=head1 PRIVATE METHODS AND DATA - -B<Pod::Parser> makes use of several internal methods and data fields -which clients should not need to see or use. For the sake of avoiding -name collisions for client data and methods, these methods and fields -are briefly discussed here. Determined hackers may obtain further -information about them by reading the B<Pod::Parser> source code. - -Private data fields are stored in the hash-object whose reference is -returned by the B<new()> constructor for this class. The names of all -private methods and data-fields used by B<Pod::Parser> begin with a -prefix of "_" and match the regular expression C</^_\w+$/>. - -=cut - -##--------------------------------------------------------------------------- - -=begin _PRIVATE_ - -=head1 B<_push_input_stream()> - - $hashref = $parser->_push_input_stream($in_fh,$out_fh); - -This method will push the given input stream on the input stack and -perform any necessary beginning-of-document or beginning-of-file -processing. The argument C<$in_fh> is the input stream filehandle to -push, and C<$out_fh> is the corresponding output filehandle to use (if -it is not given or is undefined, then the current output stream is used, -which defaults to standard output if it doesnt exist yet). - -The value returned will be reference to the hash-table that represents -the new top of the input stream stack. I<Please Note> that it is -possible for this method to use default values for the input and output -file handles. If this happens, you will need to look at the C<INPUT> -and C<OUTPUT> instance data members to determine their new values. - -=end _PRIVATE_ - -=cut - -sub _push_input_stream { - my ($self, $in_fh, $out_fh) = @_; - local *myData = $self; - - ## Initialize stuff for the entire document if this is *not* - ## an included file. - ## - ## NOTE: we need to be *very* careful when "defaulting" the output - ## filehandle. We only want to use a default value if this is the - ## beginning of the entire document (but *not* if this is an included - ## file). - unless (defined $myData{_TOP_STREAM}) { - $out_fh = \*STDOUT unless (defined $out_fh); - $myData{_CUTTING} = 1; ## current "cutting" state - $myData{_INPUT_STREAMS} = []; ## stack of all input streams - } - - ## Initialize input indicators - $myData{_OUTFILE} = '(unknown)' unless (defined $myData{_OUTFILE}); - $myData{_OUTPUT} = $out_fh if (defined $out_fh); - $in_fh = \*STDIN unless (defined $in_fh); - $myData{_INFILE} = '(unknown)' unless (defined $myData{_INFILE}); - $myData{_INPUT} = $in_fh; - my $input_top = $myData{_TOP_STREAM} - = new Pod::InputSource( - -name => $myData{_INFILE}, - -handle => $in_fh, - -was_cutting => $myData{_CUTTING} - ); - local *input_stack = $myData{_INPUT_STREAMS}; - push(@input_stack, $input_top); - - ## Perform beginning-of-document and/or beginning-of-input processing - $self->begin_pod() if (@input_stack == 1); - $self->begin_input(); - - return $input_top; -} - -##--------------------------------------------------------------------------- - -=begin _PRIVATE_ - -=head1 B<_pop_input_stream()> - - $hashref = $parser->_pop_input_stream(); - -This takes no arguments. It will perform any necessary end-of-file or -end-of-document processing and then pop the current input stream from -the top of the input stack. - -The value returned will be reference to the hash-table that represents -the new top of the input stream stack. - -=end _PRIVATE_ - -=cut - -sub _pop_input_stream { - my ($self) = @_; - local *myData = $self; - local *input_stack = $myData{_INPUT_STREAMS}; - - ## Perform end-of-input and/or end-of-document processing - $self->end_input() if (@input_stack > 0); - $self->end_pod() if (@input_stack == 1); - - ## Restore cutting state to whatever it was before we started - ## parsing this file. - my $old_top = pop(@input_stack); - $myData{_CUTTING} = $old_top->was_cutting(); - - ## Dont forget to reset the input indicators - my $input_top = undef; - if (@input_stack > 0) { - $input_top = $myData{_TOP_STREAM} = $input_stack[-1]; - $myData{_INFILE} = $input_top->name(); - $myData{_INPUT} = $input_top->handle(); - } else { - delete $myData{_TOP_STREAM}; - delete $myData{_INPUT_STREAMS}; - } - - return $input_top; -} - -############################################################################# - -=head1 TREE-BASED PARSING - -If straightforward stream-based parsing wont meet your needs (as is -likely the case for tasks such as translating PODs into structured -markup languages like HTML and XML) then you may need to take the -tree-based approach. Rather than doing everything in one pass and -calling the B<interpolate()> method to expand sequences into text, it -may be desirable to instead create a parse-tree using the B<parse_text()> -method to return a tree-like structure which may contain an ordered -list of children (each of which may be a text-string, or a similar -tree-like structure). - -Pay special attention to L<"METHODS FOR PARSING AND PROCESSING"> and -to the objects described in L<Pod::InputObjects>. The former describes -the gory details and parameters for how to customize and extend the -parsing behavior of B<Pod::Parser>. B<Pod::InputObjects> provides -several objects that may all be used interchangeably as parse-trees. The -most obvious one is the B<Pod::ParseTree> object. It defines the basic -interface and functionality that all things trying to be a POD parse-tree -should do. A B<Pod::ParseTree> is defined such that each "node" may be a -text-string, or a reference to another parse-tree. Each B<Pod::Paragraph> -object and each B<Pod::InteriorSequence> object also supports the basic -parse-tree interface. - -The B<parse_text()> method takes a given paragraph of text, and -returns a parse-tree that contains one or more children, each of which -may be a text-string, or an InteriorSequence object. There are also -callback-options that may be passed to B<parse_text()> to customize -the way it expands or transforms interior-sequences, as well as the -returned result. These callbacks can be used to create a parse-tree -with custom-made objects (which may or may not support the parse-tree -interface, depending on how you choose to do it). - -If you wish to turn an entire POD document into a parse-tree, that process -is fairly straightforward. The B<parse_text()> method is the key to doing -this successfully. Every paragraph-callback (i.e. the polymorphic methods -for B<command()>, B<verbatim()>, and B<textblock()> paragraphs) takes -a B<Pod::Paragraph> object as an argument. Each paragraph object has a -B<parse_tree()> method that can be used to get or set a corresponding -parse-tree. So for each of those paragraph-callback methods, simply call -B<parse_text()> with the options you desire, and then use the returned -parse-tree to assign to the given paragraph object. - -That gives you a parse-tree for each paragraph - so now all you need is -an ordered list of paragraphs. You can maintain that yourself as a data -element in the object/hash. The most straightforward way would be simply -to use an array-ref, with the desired set of custom "options" for each -invocation of B<parse_text>. Let's assume the desired option-set is -given by the hash C<%options>. Then we might do something like the -following: - - package MyPodParserTree; - - @ISA = qw( Pod::Parser ); - - ... - - sub begin_pod { - my $self = shift; - $self->{'-paragraphs'} = []; ## initialize paragraph list - } - - sub command { - my ($parser, $command, $paragraph, $line_num, $pod_para) = @_; - my $ptree = $parser->parse_text({%options}, $paragraph, ...); - $pod_para->parse_tree( $ptree ); - push @{ $self->{'-paragraphs'} }, $pod_para; - } - - sub verbatim { - my ($parser, $paragraph, $line_num, $pod_para) = @_; - push @{ $self->{'-paragraphs'} }, $pod_para; - } - - sub textblock { - my ($parser, $paragraph, $line_num, $pod_para) = @_; - my $ptree = $parser->parse_text({%options}, $paragraph, ...); - $pod_para->parse_tree( $ptree ); - push @{ $self->{'-paragraphs'} }, $pod_para; - } - - ... - - package main; - ... - my $parser = new MyPodParserTree(...); - $parser->parse_from_file(...); - my $paragraphs_ref = $parser->{'-paragraphs'}; - -Of course, in this module-author's humble opinion, I'd be more inclined to -use the existing B<Pod::ParseTree> object than a simple array. That way -everything in it, paragraphs and sequences, all respond to the same core -interface for all parse-tree nodes. The result would look something like: - - package MyPodParserTree2; - - ... - - sub begin_pod { - my $self = shift; - $self->{'-ptree'} = new Pod::ParseTree; ## initialize parse-tree - } - - sub parse_tree { - ## convenience method to get/set the parse-tree for the entire POD - (@_ > 1) and $_[0]->{'-ptree'} = $_[1]; - return $_[0]->{'-ptree'}; - } - - sub command { - my ($parser, $command, $paragraph, $line_num, $pod_para) = @_; - my $ptree = $parser->parse_text({<<options>>}, $paragraph, ...); - $pod_para->parse_tree( $ptree ); - $parser->parse_tree()->append( $pod_para ); - } - - sub verbatim { - my ($parser, $paragraph, $line_num, $pod_para) = @_; - $parser->parse_tree()->append( $pod_para ); - } - - sub textblock { - my ($parser, $paragraph, $line_num, $pod_para) = @_; - my $ptree = $parser->parse_text({<<options>>}, $paragraph, ...); - $pod_para->parse_tree( $ptree ); - $parser->parse_tree()->append( $pod_para ); - } - - ... - - package main; - ... - my $parser = new MyPodParserTree2(...); - $parser->parse_from_file(...); - my $ptree = $parser->parse_tree; - ... - -Now you have the entire POD document as one great big parse-tree. You -can even use the B<-expand_seq> option to B<parse_text> to insert -whole different kinds of objects. Just don't expect B<Pod::Parser> -to know what to do with them after that. That will need to be in your -code. Or, alternatively, you can insert any object you like so long as -it conforms to the B<Pod::ParseTree> interface. - -One could use this to create subclasses of B<Pod::Paragraphs> and -B<Pod::InteriorSequences> for specific commands (or to create your own -custom node-types in the parse-tree) and add some kind of B<emit()> -method to each custom node/subclass object in the tree. Then all you'd -need to do is recursively walk the tree in the desired order, processing -the children (most likely from left to right) by formatting them if -they are text-strings, or by calling their B<emit()> method if they -are objects/references. - -=head1 SEE ALSO - -L<Pod::InputObjects>, L<Pod::Select> - -B<Pod::InputObjects> defines POD input objects corresponding to -command paragraphs, parse-trees, and interior-sequences. - -B<Pod::Select> is a subclass of B<Pod::Parser> which provides the ability -to selectively include and/or exclude sections of a POD document from being -translated based upon the current heading, subheading, subsubheading, etc. - -=for __PRIVATE__ -B<Pod::Callbacks> is a subclass of B<Pod::Parser> which gives its users -the ability the employ I<callback functions> instead of, or in addition -to, overriding methods of the base class. - -=for __PRIVATE__ -B<Pod::Select> and B<Pod::Callbacks> do not override any -methods nor do they define any new methods with the same name. Because -of this, they may I<both> be used (in combination) as a base class of -the same subclass in order to combine their functionality without -causing any namespace clashes due to multiple inheritance. - -=head1 AUTHOR - -Please report bugs using L<http://rt.cpan.org>. - -Brad Appleton E<lt>bradapp@enteract.comE<gt> - -Based on code for B<Pod::Text> written by -Tom Christiansen E<lt>tchrist@mox.perl.comE<gt> - -=cut - -1; -# vim: ts=4 sw=4 et diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc.pm b/Master/tlpkg/tlperl.old/lib/Pod/Perldoc.pm deleted file mode 100644 index 8f9614838fb..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc.pm +++ /dev/null @@ -1,1762 +0,0 @@ - -require 5; -use 5.006; # we use some open(X, "<", $y) syntax -package Pod::Perldoc; -use strict; -use warnings; -use Config '%Config'; - -use Fcntl; # for sysopen -use File::Spec::Functions qw(catfile catdir splitdir); - -use vars qw($VERSION @Pagers $Bindir $Pod2man - $Temp_Files_Created $Temp_File_Lifetime -); -$VERSION = '3.14'; -#.......................................................................... - -BEGIN { # Make a DEBUG constant very first thing... - unless(defined &DEBUG) { - if(($ENV{'PERLDOCDEBUG'} || '') =~ m/^(\d+)/) { # untaint - eval("sub DEBUG () {$1}"); - die "WHAT? Couldn't eval-up a DEBUG constant!? $@" if $@; - } else { - *DEBUG = sub () {0}; - } - } -} - -use Pod::Perldoc::GetOptsOO; # uses the DEBUG. - -#.......................................................................... - -sub TRUE () {1} -sub FALSE () {return} - -BEGIN { - *IS_VMS = $^O eq 'VMS' ? \&TRUE : \&FALSE unless defined &IS_VMS; - *IS_MSWin32 = $^O eq 'MSWin32' ? \&TRUE : \&FALSE unless defined &IS_MSWin32; - *IS_Dos = $^O eq 'dos' ? \&TRUE : \&FALSE unless defined &IS_Dos; - *IS_OS2 = $^O eq 'os2' ? \&TRUE : \&FALSE unless defined &IS_OS2; - *IS_Cygwin = $^O eq 'cygwin' ? \&TRUE : \&FALSE unless defined &IS_Cygwin; - *IS_Linux = $^O eq 'linux' ? \&TRUE : \&FALSE unless defined &IS_Linux; - *IS_HPUX = $^O =~ m/hpux/ ? \&TRUE : \&FALSE unless defined &IS_HPUX; -} - -$Temp_File_Lifetime ||= 60 * 60 * 24 * 5; - # If it's older than five days, it's quite unlikely - # that anyone's still looking at it!! - # (Currently used only by the MSWin cleanup routine) - - -#.......................................................................... -{ my $pager = $Config{'pager'}; - push @Pagers, $pager if -x (split /\s+/, $pager)[0] or IS_VMS; -} -$Bindir = $Config{'scriptdirexp'}; -$Pod2man = "pod2man" . ( $Config{'versiononly'} ? $Config{'version'} : '' ); - -# End of class-init stuff -# -########################################################################### -# -# Option accessors... - -foreach my $subname (map "opt_$_", split '', q{mhlvriFfXqnTdU}) { - no strict 'refs'; - *$subname = do{ use strict 'refs'; sub () { shift->_elem($subname, @_) } }; -} - -# And these are so that GetOptsOO knows they take options: -sub opt_f_with { shift->_elem('opt_f', @_) } -sub opt_q_with { shift->_elem('opt_q', @_) } -sub opt_d_with { shift->_elem('opt_d', @_) } - -sub opt_w_with { # Specify an option for the formatter subclass - my($self, $value) = @_; - if($value =~ m/^([-_a-zA-Z][-_a-zA-Z0-9]*)(?:[=\:](.*?))?$/s) { - my $option = $1; - my $option_value = defined($2) ? $2 : "TRUE"; - $option =~ tr/\-/_/s; # tolerate "foo-bar" for "foo_bar" - $self->add_formatter_option( $option, $option_value ); - } else { - warn "\"$value\" isn't a good formatter option name. I'm ignoring it!\n"; - } - return; -} - -sub opt_M_with { # specify formatter class name(s) - my($self, $classes) = @_; - return unless defined $classes and length $classes; - DEBUG > 4 and print "Considering new formatter classes -M$classes\n"; - my @classes_to_add; - foreach my $classname (split m/[,;]+/s, $classes) { - next unless $classname =~ m/\S/; - if( $classname =~ m/^(\w+(::\w+)+)$/s ) { - # A mildly restrictive concept of what modulenames are valid. - push @classes_to_add, $1; # untaint - } else { - warn "\"$classname\" isn't a valid classname. Ignoring.\n"; - } - } - - unshift @{ $self->{'formatter_classes'} }, @classes_to_add; - - DEBUG > 3 and print( - "Adding @classes_to_add to the list of formatter classes, " - . "making them @{ $self->{'formatter_classes'} }.\n" - ); - - return; -} - -sub opt_V { # report version and exit - print join '', - "Perldoc v$VERSION, under perl v$] for $^O", - - (defined(&Win32::BuildNumber) and defined &Win32::BuildNumber()) - ? (" (win32 build ", &Win32::BuildNumber(), ")") : (), - - (chr(65) eq 'A') ? () : " (non-ASCII)", - - "\n", - ; - exit; -} - -sub opt_t { # choose plaintext as output format - my $self = shift; - $self->opt_o_with('text') if @_ and $_[0]; - return $self->_elem('opt_t', @_); -} - -sub opt_u { # choose raw pod as output format - my $self = shift; - $self->opt_o_with('pod') if @_ and $_[0]; - return $self->_elem('opt_u', @_); -} - -sub opt_n_with { - # choose man as the output format, and specify the proggy to run - my $self = shift; - $self->opt_o_with('man') if @_ and $_[0]; - $self->_elem('opt_n', @_); -} - -sub opt_o_with { # "o" for output format - my($self, $rest) = @_; - return unless defined $rest and length $rest; - if($rest =~ m/^(\w+)$/s) { - $rest = $1; #untaint - } else { - warn "\"$rest\" isn't a valid output format. Skipping.\n"; - return; - } - - $self->aside("Noting \"$rest\" as desired output format...\n"); - - # Figure out what class(es) that could actually mean... - - my @classes; - foreach my $prefix ("Pod::Perldoc::To", "Pod::Simple::", "Pod::") { - # Messy but smart: - foreach my $stem ( - $rest, # Yes, try it first with the given capitalization - "\L$rest", "\L\u$rest", "\U$rest" # And then try variations - - ) { - push @classes, $prefix . $stem; - #print "Considering $prefix$stem\n"; - } - - # Tidier, but misses too much: - #push @classes, $prefix . ucfirst(lc($rest)); - } - $self->opt_M_with( join ";", @classes ); - return; -} - -########################################################################### -# % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % - -sub run { # to be called by the "perldoc" executable - my $class = shift; - if(DEBUG > 3) { - print "Parameters to $class\->run:\n"; - my @x = @_; - while(@x) { - $x[1] = '<undef>' unless defined $x[1]; - $x[1] = "@{$x[1]}" if ref( $x[1] ) eq 'ARRAY'; - print " [$x[0]] => [$x[1]]\n"; - splice @x,0,2; - } - print "\n"; - } - return $class -> new(@_) -> process() || 0; -} - -# % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % -########################################################################### - -sub new { # yeah, nothing fancy - my $class = shift; - my $new = bless {@_}, (ref($class) || $class); - DEBUG > 1 and print "New $class object $new\n"; - $new->init(); - $new; -} - -#.......................................................................... - -sub aside { # If we're in -v or DEBUG mode, say this. - my $self = shift; - if( DEBUG or $self->opt_v ) { - my $out = join( '', - DEBUG ? do { - my $callsub = (caller(1))[3]; - my $package = quotemeta(__PACKAGE__ . '::'); - $callsub =~ s/^$package/'/os; - # the o is justified, as $package really won't change. - $callsub . ": "; - } : '', - @_, - ); - if(DEBUG) { print $out } else { print STDERR $out } - } - return; -} - -#.......................................................................... - -sub usage { - my $self = shift; - warn "@_\n" if @_; - - # Erase evidence of previous errors (if any), so exit status is simple. - $! = 0; - - die <<EOF; -perldoc [options] PageName|ModuleName|ProgramName... -perldoc [options] -f BuiltinFunction -perldoc [options] -q FAQRegex - -Options: - -h Display this help message - -V report version - -r Recursive search (slow) - -i Ignore case - -t Display pod using pod2text instead of pod2man and nroff - (-t is the default on win32 unless -n is specified) - -u Display unformatted pod text - -m Display module's file in its entirety - -n Specify replacement for nroff - -l Display the module's file name - -F Arguments are file names, not modules - -v Verbosely describe what's going on - -T Send output to STDOUT without any pager - -d output_filename_to_send_to - -o output_format_name - -M FormatterModuleNameToUse - -w formatter_option:option_value - -X use index if present (looks for pod.idx at $Config{archlib}) - -q Search the text of questions (not answers) in perlfaq[1-9] - -PageName|ModuleName... - is the name of a piece of documentation that you want to look at. You - may either give a descriptive name of the page (as in the case of - `perlfunc') the name of a module, either like `Term::Info' or like - `Term/Info', or the name of a program, like `perldoc'. - -BuiltinFunction - is the name of a perl function. Will extract documentation from - `perlfunc'. - -FAQRegex - is a regex. Will search perlfaq[1-9] for and extract any - questions that match. - -Any switches in the PERLDOC environment variable will be used before the -command line arguments. The optional pod index file contains a list of -filenames, one per line. - [Perldoc v$VERSION] -EOF - -} - -#.......................................................................... - -sub usage_brief { - my $me = $0; # Editing $0 is unportable - - $me =~ s,.*[/\\],,; # get basename - - die <<"EOUSAGE"; -Usage: $me [-h] [-V] [-r] [-i] [-v] [-t] [-u] [-m] [-n nroffer_program] [-l] [-T] [-d output_filename] [-o output_format] [-M FormatterModuleNameToUse] [-w formatter_option:option_value] [-F] [-X] PageName|ModuleName|ProgramName - $me -f PerlFunc - $me -q FAQKeywords - -The -h option prints more help. Also try "perldoc perldoc" to get -acquainted with the system. [Perldoc v$VERSION] -EOUSAGE - -} - -#.......................................................................... - -sub pagers { @{ shift->{'pagers'} } } - -#.......................................................................... - -sub _elem { # handy scalar meta-accessor: shift->_elem("foo", @_) - if(@_ > 2) { return $_[0]{ $_[1] } = $_[2] } - else { return $_[0]{ $_[1] } } -} -#.......................................................................... -########################################################################### -# -# Init formatter switches, and start it off with __bindir and all that -# other stuff that ToMan.pm needs. -# - -sub init { - my $self = shift; - - # Make sure creat()s are neither too much nor too little - eval { umask(0077) }; # doubtless someone has no mask - - $self->{'args'} ||= \@ARGV; - $self->{'found'} ||= []; - $self->{'temp_file_list'} ||= []; - - - $self->{'target'} = undef; - - $self->init_formatter_class_list; - - $self->{'pagers' } = [@Pagers] unless exists $self->{'pagers'}; - $self->{'bindir' } = $Bindir unless exists $self->{'bindir'}; - $self->{'pod2man'} = $Pod2man unless exists $self->{'pod2man'}; - - push @{ $self->{'formatter_switches'} = [] }, ( - # Yeah, we could use a hashref, but maybe there's some class where options - # have to be ordered; so we'll use an arrayref. - - [ '__bindir' => $self->{'bindir' } ], - [ '__pod2man' => $self->{'pod2man'} ], - ); - - DEBUG > 3 and printf "Formatter switches now: [%s]\n", - join ' ', map "[@$_]", @{ $self->{'formatter_switches'} }; - - return; -} - -#.......................................................................... - -sub init_formatter_class_list { - my $self = shift; - $self->{'formatter_classes'} ||= []; - - # Remember, no switches have been read yet, when - # we've started this routine. - - $self->opt_M_with('Pod::Perldoc::ToPod'); # the always-there fallthru - $self->opt_o_with('text'); - $self->opt_o_with('man') unless IS_MSWin32 || IS_Dos - || !($ENV{TERM} && ( - ($ENV{TERM} || '') !~ /dumb|emacs|none|unknown/i - )); - - return; -} - -#.......................................................................... - -sub process { - # if this ever returns, its retval will be used for exit(RETVAL) - - my $self = shift; - DEBUG > 1 and print " Beginning process.\n"; - DEBUG > 1 and print " Args: @{$self->{'args'}}\n\n"; - if(DEBUG > 3) { - print "Object contents:\n"; - my @x = %$self; - while(@x) { - $x[1] = '<undef>' unless defined $x[1]; - $x[1] = "@{$x[1]}" if ref( $x[1] ) eq 'ARRAY'; - print " [$x[0]] => [$x[1]]\n"; - splice @x,0,2; - } - print "\n"; - } - - # TODO: make it deal with being invoked as various different things - # such as perlfaq". - - return $self->usage_brief unless @{ $self->{'args'} }; - $self->pagers_guessing; - $self->options_reading; - $self->aside(sprintf "$0 => %s v%s\n", ref($self), $self->VERSION); - $self->drop_privs_maybe; - $self->options_processing; - - # Hm, we have @pages and @found, but we only really act on one - # file per call, with the exception of the opt_q hack, and with - # -l things - - $self->aside("\n"); - - my @pages; - $self->{'pages'} = \@pages; - if( $self->opt_f) { @pages = ("perlfunc") } - elsif( $self->opt_q) { @pages = ("perlfaq1" .. "perlfaq9") } - else { @pages = @{$self->{'args'}}; - # @pages = __FILE__ - # if @pages == 1 and $pages[0] eq 'perldoc'; - } - - return $self->usage_brief unless @pages; - - $self->find_good_formatter_class(); - $self->formatter_sanity_check(); - - $self->maybe_diddle_INC(); - # for when we're apparently in a module or extension directory - - my @found = $self->grand_search_init(\@pages); - exit (IS_VMS ? 98962 : 1) unless @found; - - if ($self->opt_l) { - DEBUG and print "We're in -l mode, so byebye after this:\n"; - print join("\n", @found), "\n"; - return; - } - - $self->tweak_found_pathnames(\@found); - $self->assert_closing_stdout; - return $self->page_module_file(@found) if $self->opt_m; - DEBUG > 2 and print "Found: [@found]\n"; - - return $self->render_and_page(\@found); -} - -#.......................................................................... -{ - -my( %class_seen, %class_loaded ); -sub find_good_formatter_class { - my $self = $_[0]; - my @class_list = @{ $self->{'formatter_classes'} || [] }; - die "WHAT? Nothing in the formatter class list!?" unless @class_list; - - my $good_class_found; - foreach my $c (@class_list) { - DEBUG > 4 and print "Trying to load $c...\n"; - if($class_loaded{$c}) { - DEBUG > 4 and print "OK, the already-loaded $c it is!\n"; - $good_class_found = $c; - last; - } - - if($class_seen{$c}) { - DEBUG > 4 and print - "I've tried $c before, and it's no good. Skipping.\n"; - next; - } - - $class_seen{$c} = 1; - - if( $c->can('parse_from_file') ) { - DEBUG > 4 and print - "Interesting, the formatter class $c is already loaded!\n"; - - } elsif( - (IS_VMS or IS_MSWin32 or IS_Dos or IS_OS2) - # the alway case-insensitive fs's - and $class_seen{lc("~$c")}++ - ) { - DEBUG > 4 and print - "We already used something quite like \"\L$c\E\", so no point using $c\n"; - # This avoids redefining the package. - } else { - DEBUG > 4 and print "Trying to eval 'require $c'...\n"; - - local $^W = $^W; - if(DEBUG() or $self->opt_v) { - # feh, let 'em see it - } else { - $^W = 0; - # The average user just has no reason to be seeing - # $^W-suppressable warnings from the the require! - } - - eval "require $c"; - if($@) { - DEBUG > 4 and print "Couldn't load $c: $!\n"; - next; - } - } - - if( $c->can('parse_from_file') ) { - DEBUG > 4 and print "Settling on $c\n"; - my $v = $c->VERSION; - $v = ( defined $v and length $v ) ? " version $v" : ''; - $self->aside("Formatter class $c$v successfully loaded!\n"); - $good_class_found = $c; - last; - } else { - DEBUG > 4 and print "Class $c isn't a formatter?! Skipping.\n"; - } - } - - die "Can't find any loadable formatter class in @class_list?!\nAborting" - unless $good_class_found; - - $self->{'formatter_class'} = $good_class_found; - $self->aside("Will format with the class $good_class_found\n"); - - return; -} - -} -#.......................................................................... - -sub formatter_sanity_check { - my $self = shift; - my $formatter_class = $self->{'formatter_class'} - || die "NO FORMATTER CLASS YET!?"; - - if(!$self->opt_T # so -T can FORCE sending to STDOUT - and $formatter_class->can('is_pageable') - and !$formatter_class->is_pageable - and !$formatter_class->can('page_for_perldoc') - ) { - my $ext = - ($formatter_class->can('output_extension') - && $formatter_class->output_extension - ) || ''; - $ext = ".$ext" if length $ext; - - die - "When using Perldoc to format with $formatter_class, you have to\n" - . "specify -T or -dsomefile$ext\n" - . "See `perldoc perldoc' for more information on those switches.\n" - ; - } -} - -#.......................................................................... - -sub render_and_page { - my($self, $found_list) = @_; - - $self->maybe_generate_dynamic_pod($found_list); - - my($out, $formatter) = $self->render_findings($found_list); - - if($self->opt_d) { - printf "Perldoc (%s) output saved to %s\n", - $self->{'formatter_class'} || ref($self), - $out; - print "But notice that it's 0 bytes long!\n" unless -s $out; - - - } elsif( # Allow the formatter to "page" itself, if it wants. - $formatter->can('page_for_perldoc') - and do { - $self->aside("Going to call $formatter\->page_for_perldoc(\"$out\")\n"); - if( $formatter->page_for_perldoc($out, $self) ) { - $self->aside("page_for_perldoc returned true, so NOT paging with $self.\n"); - 1; - } else { - $self->aside("page_for_perldoc returned false, so paging with $self instead.\n"); - ''; - } - } - ) { - # Do nothing, since the formatter has "paged" it for itself. - - } else { - # Page it normally (internally) - - if( -s $out ) { # Usual case: - $self->page($out, $self->{'output_to_stdout'}, $self->pagers); - - } else { - # Odd case: - $self->aside("Skipping $out (from $$found_list[0] " - . "via $$self{'formatter_class'}) as it is 0-length.\n"); - - push @{ $self->{'temp_file_list'} }, $out; - $self->unlink_if_temp_file($out); - } - } - - $self->after_rendering(); # any extra cleanup or whatever - - return; -} - -#.......................................................................... - -sub options_reading { - my $self = shift; - - if( defined $ENV{"PERLDOC"} and length $ENV{"PERLDOC"} ) { - require Text::ParseWords; - $self->aside("Noting env PERLDOC setting of $ENV{'PERLDOC'}\n"); - # Yes, appends to the beginning - unshift @{ $self->{'args'} }, - Text::ParseWords::shellwords( $ENV{"PERLDOC"} ) - ; - DEBUG > 1 and print " Args now: @{$self->{'args'}}\n\n"; - } else { - DEBUG > 1 and print " Okay, no PERLDOC setting in ENV.\n"; - } - - DEBUG > 1 - and print " Args right before switch processing: @{$self->{'args'}}\n"; - - Pod::Perldoc::GetOptsOO::getopts( $self, $self->{'args'}, 'YES' ) - or return $self->usage; - - DEBUG > 1 - and print " Args after switch processing: @{$self->{'args'}}\n"; - - return $self->usage if $self->opt_h; - - return; -} - -#.......................................................................... - -sub options_processing { - my $self = shift; - - if ($self->opt_X) { - my $podidx = "$Config{'archlib'}/pod.idx"; - $podidx = "" unless -f $podidx && -r _ && -M _ <= 7; - $self->{'podidx'} = $podidx; - } - - $self->{'output_to_stdout'} = 1 if $self->opt_T or ! -t STDOUT; - - $self->options_sanity; - - $self->opt_n("nroff") unless $self->opt_n; - $self->add_formatter_option( '__nroffer' => $self->opt_n ); - - return; -} - -#.......................................................................... - -sub options_sanity { - my $self = shift; - - # The opts-counting stuff interacts quite badly with - # the $ENV{"PERLDOC"} stuff. I.e., if I have $ENV{"PERLDOC"} - # set to -t, and I specify -u on the command line, I don't want - # to be hectored at that -u and -t don't make sense together. - - #my $opts = grep $_ && 1, # yes, the count of the set ones - # $self->opt_t, $self->opt_u, $self->opt_m, $self->opt_l - #; - # - #$self->usage("only one of -t, -u, -m or -l") if $opts > 1; - - - # Any sanity-checking need doing here? - - return; -} - -#.......................................................................... - -sub grand_search_init { - my($self, $pages, @found) = @_; - - foreach (@$pages) { - if ($self->{'podidx'} && open(PODIDX, $self->{'podidx'})) { - my $searchfor = catfile split '::', $_; - $self->aside( "Searching for '$searchfor' in $self->{'podidx'}\n" ); - local $_; - while (<PODIDX>) { - chomp; - push(@found, $_) if m,/$searchfor(?:\.(?:pod|pm))?\z,i; - } - close(PODIDX) or die "Can't close $$self{'podidx'}: $!"; - next; - } - - $self->aside( "Searching for $_\n" ); - - if ($self->opt_F) { - next unless -r; - push @found, $_ if $self->opt_m or $self->containspod($_); - next; - } - - # We must look both in @INC for library modules and in $bindir - # for executables, like h2xs or perldoc itself. - - my @searchdirs = ($self->{'bindir'}, @INC); - unless ($self->opt_m) { - if (IS_VMS) { - my($i,$trn); - for ($i = 0; $trn = $ENV{'DCL$PATH;'.$i}; $i++) { - push(@searchdirs,$trn); - } - push(@searchdirs,'perl_root:[lib.pod]') # installed pods - } - else { - push(@searchdirs, grep(-d, split($Config{path_sep}, - $ENV{'PATH'}))); - } - } - my @files = $self->searchfor(0,$_,@searchdirs); - if (@files) { - $self->aside( "Found as @files\n" ); - } - else { - # no match, try recursive search - @searchdirs = grep(!/^\.\z/s,@INC); - @files= $self->searchfor(1,$_,@searchdirs) if $self->opt_r; - if (@files) { - $self->aside( "Loosely found as @files\n" ); - } - else { - print STDERR "No " . - ($self->opt_m ? "module" : "documentation") . " found for \"$_\".\n"; - if ( @{ $self->{'found'} } ) { - print STDERR "However, try\n"; - for my $dir (@{ $self->{'found'} }) { - opendir(DIR, $dir) or die "opendir $dir: $!"; - while (my $file = readdir(DIR)) { - next if ($file =~ /^\./s); - $file =~ s/\.(pm|pod)\z//; # XXX: badfs - print STDERR "\tperldoc $_\::$file\n"; - } - closedir(DIR) or die "closedir $dir: $!"; - } - } - } - } - push(@found,@files); - } - return @found; -} - -#.......................................................................... - -sub maybe_generate_dynamic_pod { - my($self, $found_things) = @_; - my @dynamic_pod; - - $self->search_perlfunc($found_things, \@dynamic_pod) if $self->opt_f; - - $self->search_perlfaqs($found_things, \@dynamic_pod) if $self->opt_q; - - if( ! $self->opt_f and ! $self->opt_q ) { - DEBUG > 4 and print "That's a non-dynamic pod search.\n"; - } elsif ( @dynamic_pod ) { - $self->aside("Hm, I found some Pod from that search!\n"); - my ($buffd, $buffer) = $self->new_tempfile('pod', 'dyn'); - - push @{ $self->{'temp_file_list'} }, $buffer; - # I.e., it MIGHT be deleted at the end. - - my $in_list = $self->opt_f; - - print $buffd "=over 8\n\n" if $in_list; - print $buffd @dynamic_pod or die "Can't print $buffer: $!"; - print $buffd "=back\n" if $in_list; - - close $buffd or die "Can't close $buffer: $!"; - - @$found_things = $buffer; - # Yes, so found_things never has more than one thing in - # it, by time we leave here - - $self->add_formatter_option('__filter_nroff' => 1); - - } else { - @$found_things = (); - $self->aside("I found no Pod from that search!\n"); - } - - return; -} - -#.......................................................................... - -sub add_formatter_option { # $self->add_formatter_option('key' => 'value'); - my $self = shift; - push @{ $self->{'formatter_switches'} }, [ @_ ] if @_; - - DEBUG > 3 and printf "Formatter switches now: [%s]\n", - join ' ', map "[@$_]", @{ $self->{'formatter_switches'} }; - - return; -} - -#.......................................................................... - -sub search_perlfunc { - my($self, $found_things, $pod) = @_; - - DEBUG > 2 and print "Search: @$found_things\n"; - - my $perlfunc = shift @$found_things; - open(PFUNC, "<", $perlfunc) # "Funk is its own reward" - or die("Can't open $perlfunc: $!"); - - # Functions like -r, -e, etc. are listed under `-X'. - my $search_re = ($self->opt_f =~ /^-[rwxoRWXOeszfdlpSbctugkTBMAC]$/) - ? '(?:I<)?-X' : quotemeta($self->opt_f) ; - - DEBUG > 2 and - print "Going to perlfunc-scan for $search_re in $perlfunc\n"; - - # Skip introduction - local $_; - while (<PFUNC>) { - last if /^=head2 Alphabetical Listing of Perl Functions/; - } - - # Look for our function - my $found = 0; - my $inlist = 0; - while (<PFUNC>) { # "The Mothership Connection is here!" - if ( m/^=item\s+$search_re\b/ ) { - $found = 1; - } - elsif (/^=item/) { - last if $found > 1 and not $inlist; - } - next unless $found; - if (/^=over/) { - ++$inlist; - } - elsif (/^=back/) { - --$inlist; - } - push @$pod, $_; - ++$found if /^\w/; # found descriptive text - } - if (!@$pod) { - die sprintf - "No documentation for perl function `%s' found\n", - $self->opt_f - ; - } - close PFUNC or die "Can't open $perlfunc: $!"; - - return; -} - -#.......................................................................... - -sub search_perlfaqs { - my( $self, $found_things, $pod) = @_; - - my $found = 0; - my %found_in; - my $search_key = $self->opt_q; - - my $rx = eval { qr/$search_key/ } - or die <<EOD; -Invalid regular expression '$search_key' given as -q pattern: -$@ -Did you mean \\Q$search_key ? - -EOD - - local $_; - foreach my $file (@$found_things) { - die "invalid file spec: $!" if $file =~ /[<>|]/; - open(INFAQ, "<", $file) # XXX 5.6ism - or die "Can't read-open $file: $!\nAborting"; - while (<INFAQ>) { - if ( m/^=head2\s+.*(?:$search_key)/i ) { - $found = 1; - push @$pod, "=head1 Found in $file\n\n" unless $found_in{$file}++; - } - elsif (/^=head[12]/) { - $found = 0; - } - next unless $found; - push @$pod, $_; - } - close(INFAQ); - } - die("No documentation for perl FAQ keyword `$search_key' found\n") - unless @$pod; - - return; -} - - -#.......................................................................... - -sub render_findings { - # Return the filename to open - - my($self, $found_things) = @_; - - my $formatter_class = $self->{'formatter_class'} - || die "No formatter class set!?"; - my $formatter = $formatter_class->can('new') - ? $formatter_class->new - : $formatter_class - ; - - if(! @$found_things) { - die "Nothing found?!"; - # should have been caught before here - } elsif(@$found_things > 1) { - warn join '', - "Perldoc is only really meant for reading one document at a time.\n", - "So these parameters are being ignored: ", - join(' ', @$found_things[1 .. $#$found_things] ), - "\n" - } - - my $file = $found_things->[0]; - - DEBUG > 3 and printf "Formatter switches now: [%s]\n", - join ' ', map "[@$_]", @{ $self->{'formatter_switches'} }; - - # Set formatter options: - if( ref $formatter ) { - foreach my $f (@{ $self->{'formatter_switches'} || [] }) { - my($switch, $value, $silent_fail) = @$f; - if( $formatter->can($switch) ) { - eval { $formatter->$switch( defined($value) ? $value : () ) }; - warn "Got an error when setting $formatter_class\->$switch:\n$@\n" - if $@; - } else { - if( $silent_fail or $switch =~ m/^__/s ) { - DEBUG > 2 and print "Formatter $formatter_class doesn't support $switch\n"; - } else { - warn "$formatter_class doesn't recognize the $switch switch.\n"; - } - } - } - } - - $self->{'output_is_binary'} = - $formatter->can('write_with_binmode') && $formatter->write_with_binmode; - - my ($out_fh, $out) = $self->new_output_file( - ( $formatter->can('output_extension') && $formatter->output_extension ) - || undef, - $self->useful_filename_bit, - ); - - # Now, finally, do the formatting! - { - local $^W = $^W; - if(DEBUG() or $self->opt_v) { - # feh, let 'em see it - } else { - $^W = 0; - # The average user just has no reason to be seeing - # $^W-suppressable warnings from the formatting! - } - - eval { $formatter->parse_from_file( $file, $out_fh ) }; - } - - warn "Error while formatting with $formatter_class:\n $@\n" if $@; - DEBUG > 2 and print "Back from formatting with $formatter_class\n"; - - close $out_fh - or warn "Can't close $out: $!\n(Did $formatter already close it?)"; - sleep 0; sleep 0; sleep 0; - # Give the system a few timeslices to meditate on the fact - # that the output file does in fact exist and is closed. - - $self->unlink_if_temp_file($file); - - unless( -s $out ) { - if( $formatter->can( 'if_zero_length' ) ) { - # Basically this is just a hook for Pod::Simple::Checker; since - # what other class could /happily/ format an input file with Pod - # as a 0-length output file? - $formatter->if_zero_length( $file, $out, $out_fh ); - } else { - warn "Got a 0-length file from $$found_things[0] via $formatter_class!?\n" - } - } - - DEBUG and print "Finished writing to $out.\n"; - return($out, $formatter) if wantarray; - return $out; -} - -#.......................................................................... - -sub unlink_if_temp_file { - # Unlink the specified file IFF it's in the list of temp files. - # Really only used in the case of -f / -q things when we can - # throw away the dynamically generated source pod file once - # we've formatted it. - # - my($self, $file) = @_; - return unless defined $file and length $file; - - my $temp_file_list = $self->{'temp_file_list'} || return; - if(grep $_ eq $file, @$temp_file_list) { - $self->aside("Unlinking $file\n"); - unlink($file) or warn "Odd, couldn't unlink $file: $!"; - } else { - DEBUG > 1 and print "$file isn't a temp file, so not unlinking.\n"; - } - return; -} - -#.......................................................................... - -sub MSWin_temp_cleanup { - - # Nothing particularly MSWin-specific in here, but I don't know if any - # other OS needs its temp dir policed like MSWin does! - - my $self = shift; - - my $tempdir = $ENV{'TEMP'}; - return unless defined $tempdir and length $tempdir - and -e $tempdir and -d _ and -w _; - - $self->aside( - "Considering whether any old files of mine in $tempdir need unlinking.\n" - ); - - opendir(TMPDIR, $tempdir) || return; - my @to_unlink; - - my $limit = time() - $Temp_File_Lifetime; - - DEBUG > 5 and printf "Looking for things pre-dating %s (%x)\n", - ($limit) x 2; - - my $filespec; - - while(defined($filespec = readdir(TMPDIR))) { - if( - $filespec =~ m{^perldoc_[a-zA-Z0-9]+_T([a-fA-F0-9]{7,})_[a-fA-F0-9]{3,}}s - ) { - if( hex($1) < $limit ) { - push @to_unlink, "$tempdir/$filespec"; - $self->aside( "Will unlink my old temp file $to_unlink[-1]\n" ); - } else { - DEBUG > 5 and - printf " $tempdir/$filespec is too recent (after %x)\n", $limit; - } - } else { - DEBUG > 5 and - print " $tempdir/$filespec doesn't look like a perldoc temp file.\n"; - } - } - closedir(TMPDIR); - $self->aside(sprintf "Unlinked %s items of mine in %s\n", - scalar(unlink(@to_unlink)), - $tempdir - ); - return; -} - -# . . . . . . . . . . . . . . . . . . . . . . . . . - -sub MSWin_perldoc_tempfile { - my($self, $suffix, $infix) = @_; - - my $tempdir = $ENV{'TEMP'}; - return unless defined $tempdir and length $tempdir - and -e $tempdir and -d _ and -w _; - - my $spec; - - do { - $spec = sprintf "%s\\perldoc_%s_T%x_%x%02x.%s", # used also in MSWin_temp_cleanup - # Yes, we embed the create-time in the filename! - $tempdir, - $infix || 'x', - time(), - $$, - defined( &Win32::GetTickCount ) - ? (Win32::GetTickCount() & 0xff) - : int(rand 256) - # Under MSWin, $$ values get reused quickly! So if we ran - # perldoc foo and then perldoc bar before there was time for - # time() to increment time."_$$" would likely be the same - # for each process! So we tack on the tick count's lower - # bits (or, in a pinch, rand) - , - $suffix || 'txt'; - ; - } while( -e $spec ); - - my $counter = 0; - - while($counter < 50) { - my $fh; - # If we are running before perl5.6.0, we can't autovivify - if ($] < 5.006) { - require Symbol; - $fh = Symbol::gensym(); - } - DEBUG > 3 and print "About to try making temp file $spec\n"; - return($fh, $spec) if open($fh, ">", $spec); # XXX 5.6ism - $self->aside("Can't create temp file $spec: $!\n"); - } - - $self->aside("Giving up on making a temp file!\n"); - die "Can't make a tempfile!?"; -} - -#.......................................................................... - - -sub after_rendering { - my $self = $_[0]; - $self->after_rendering_VMS if IS_VMS; - $self->after_rendering_MSWin32 if IS_MSWin32; - $self->after_rendering_Dos if IS_Dos; - $self->after_rendering_OS2 if IS_OS2; - return; -} - -sub after_rendering_VMS { return } -sub after_rendering_Dos { return } -sub after_rendering_OS2 { return } - -sub after_rendering_MSWin32 { - shift->MSWin_temp_cleanup() if $Temp_Files_Created; -} - -#.......................................................................... -# : : : : : : : : : -#.......................................................................... - - -sub minus_f_nocase { # i.e., do like -f, but without regard to case - - my($self, $dir, $file) = @_; - my $path = catfile($dir,$file); - return $path if -f $path and -r _; - - if(!$self->opt_i - or IS_VMS or IS_MSWin32 - or IS_Dos or IS_OS2 - ) { - # On a case-forgiving file system, or if case is important, - # that is it, all we can do. - warn "Ignored $path: unreadable\n" if -f _; - return ''; - } - - local *DIR; - my @p = ($dir); - my($p,$cip); - foreach $p (splitdir $file){ - my $try = catfile @p, $p; - $self->aside("Scrutinizing $try...\n"); - stat $try; - if (-d _) { - push @p, $p; - if ( $p eq $self->{'target'} ) { - my $tmp_path = catfile @p; - my $path_f = 0; - for (@{ $self->{'found'} }) { - $path_f = 1 if $_ eq $tmp_path; - } - push (@{ $self->{'found'} }, $tmp_path) unless $path_f; - $self->aside( "Found as $tmp_path but directory\n" ); - } - } - elsif (-f _ && -r _) { - return $try; - } - elsif (-f _) { - warn "Ignored $try: unreadable\n"; - } - elsif (-d catdir(@p)) { # at least we see the containing directory! - my $found = 0; - my $lcp = lc $p; - my $p_dirspec = catdir(@p); - opendir DIR, $p_dirspec or die "opendir $p_dirspec: $!"; - while(defined( $cip = readdir(DIR) )) { - if (lc $cip eq $lcp){ - $found++; - last; # XXX stop at the first? what if there's others? - } - } - closedir DIR or die "closedir $p_dirspec: $!"; - return "" unless $found; - - push @p, $cip; - my $p_filespec = catfile(@p); - return $p_filespec if -f $p_filespec and -r _; - warn "Ignored $p_filespec: unreadable\n" if -f _; - } - } - return ""; -} - -#.......................................................................... - -sub pagers_guessing { - my $self = shift; - - my @pagers; - push @pagers, $self->pagers; - $self->{'pagers'} = \@pagers; - - if (IS_MSWin32) { - push @pagers, qw( more< less notepad ); - unshift @pagers, $ENV{PAGER} if $ENV{PAGER}; - } - elsif (IS_VMS) { - push @pagers, qw( most more less type/page ); - } - elsif (IS_Dos) { - push @pagers, qw( less.exe more.com< ); - unshift @pagers, $ENV{PAGER} if $ENV{PAGER}; - } - else { - if (IS_OS2) { - unshift @pagers, 'less', 'cmd /c more <'; - } - push @pagers, qw( more less pg view cat ); - unshift @pagers, $ENV{PAGER} if $ENV{PAGER}; - } - - if (IS_Cygwin) { - if (($pagers[0] eq 'less') || ($pagers[0] eq '/usr/bin/less')) { - unshift @pagers, '/usr/bin/less -isrR'; - } - } - - unshift @pagers, $ENV{PERLDOC_PAGER} if $ENV{PERLDOC_PAGER}; - - return; -} - -#.......................................................................... - -sub page_module_file { - my($self, @found) = @_; - - # Security note: - # Don't ever just pass this off to anything like MSWin's "start.exe", - # since we might be calling on a .pl file, and we wouldn't want that - # to actually /execute/ the file that we just want to page thru! - # Also a consideration if one were to use a web browser as a pager; - # doing so could trigger the browser's MIME mapping for whatever - # it thinks .pm/.pl/whatever is. Probably just a (useless and - # annoying) "Save as..." dialog, but potentially executing the file - # in question -- particularly in the case of MSIE and it's, ahem, - # occasionally hazy distinction between OS-local extension - # associations, and browser-specific MIME mappings. - - if ($self->{'output_to_stdout'}) { - $self->aside("Sending unpaged output to STDOUT.\n"); - local $_; - my $any_error = 0; - foreach my $output (@found) { - unless( open(TMP, "<", $output) ) { # XXX 5.6ism - warn("Can't open $output: $!"); - $any_error = 1; - next; - } - while (<TMP>) { - print or die "Can't print to stdout: $!"; - } - close TMP or die "Can't close while $output: $!"; - $self->unlink_if_temp_file($output); - } - return $any_error; # successful - } - - foreach my $pager ( $self->pagers ) { - $self->aside("About to try calling $pager @found\n"); - if (system($pager, @found) == 0) { - $self->aside("Yay, it worked.\n"); - return 0; - } - $self->aside("That didn't work.\n"); - - # Odd -- when it fails, under Win32, this seems to neither - # return with a fail nor return with a success!! - # That's discouraging! - } - - $self->aside( - sprintf "Can't manage to find a way to page [%s] via pagers [%s]\n", - join(' ', @found), - join(' ', $self->pagers), - ); - - if (IS_VMS) { - DEBUG > 1 and print "Bailing out in a VMSish way.\n"; - eval q{ - use vmsish qw(status exit); - exit $?; - 1; - } or die; - } - - return 1; - # i.e., an UNSUCCESSFUL return value! -} - -#.......................................................................... - -sub check_file { - my($self, $dir, $file) = @_; - - unless( ref $self ) { - # Should never get called: - $Carp::Verbose = 1; - require Carp; - Carp::croak( join '', - "Crazy ", __PACKAGE__, " error:\n", - "check_file must be an object_method!\n", - "Aborting" - ); - } - - if(length $dir and not -d $dir) { - DEBUG > 3 and print " No dir $dir -- skipping.\n"; - return ""; - } - - if ($self->opt_m) { - return $self->minus_f_nocase($dir,$file); - } - - else { - my $path = $self->minus_f_nocase($dir,$file); - if( length $path and $self->containspod($path) ) { - DEBUG > 3 and print - " The file $path indeed looks promising!\n"; - return $path; - } - } - DEBUG > 3 and print " No good: $file in $dir\n"; - - return ""; -} - -#.......................................................................... - -sub containspod { - my($self, $file, $readit) = @_; - return 1 if !$readit && $file =~ /\.pod\z/i; - - - # Under cygwin the /usr/bin/perl is legal executable, but - # you cannot open a file with that name. It must be spelled - # out as "/usr/bin/perl.exe". - # - # The following if-case under cygwin prevents error - # - # $ perldoc perl - # Cannot open /usr/bin/perl: no such file or directory - # - # This would work though - # - # $ perldoc perl.pod - - if ( IS_Cygwin and -x $file and -f "$file.exe" ) - { - warn "Cygwin $file.exe search skipped\n" if DEBUG or $self->opt_v; - return 0; - } - - local($_); - open(TEST,"<", $file) or die "Can't open $file: $!"; # XXX 5.6ism - while (<TEST>) { - if (/^=head/) { - close(TEST) or die "Can't close $file: $!"; - return 1; - } - } - close(TEST) or die "Can't close $file: $!"; - return 0; -} - -#.......................................................................... - -sub maybe_diddle_INC { - my $self = shift; - - # Does this look like a module or extension directory? - - if (-f "Makefile.PL") { - - # Add "." and "lib" to @INC (if they exist) - eval q{ use lib qw(. lib); 1; } or die; - - # don't add if superuser - if ($< && $> && -f "blib") { # don't be looking too hard now! - eval q{ use blib; 1 }; - warn $@ if $@ && $self->opt_v; - } - } - - return; -} - -#.......................................................................... - -sub new_output_file { - my $self = shift; - my $outspec = $self->opt_d; # Yes, -d overrides all else! - # So don't call this twice per format-job! - - return $self->new_tempfile(@_) unless defined $outspec and length $outspec; - - # Otherwise open a write-handle on opt_d!f - - my $fh; - # If we are running before perl5.6.0, we can't autovivify - if ($] < 5.006) { - require Symbol; - $fh = Symbol::gensym(); - } - DEBUG > 3 and print "About to try writing to specified output file $outspec\n"; - die "Can't write-open $outspec: $!" - unless open($fh, ">", $outspec); # XXX 5.6ism - - DEBUG > 3 and print "Successfully opened $outspec\n"; - binmode($fh) if $self->{'output_is_binary'}; - return($fh, $outspec); -} - -#.......................................................................... - -sub useful_filename_bit { - # This tries to provide a meaningful bit of text to do with the query, - # such as can be used in naming the file -- since if we're going to be - # opening windows on temp files (as a "pager" may well do!) then it's - # better if the temp file's name (which may well be used as the window - # title) isn't ALL just random garbage! - # In other words "perldoc_LWPSimple_2371981429" is a better temp file - # name than "perldoc_2371981429". So this routine is what tries to - # provide the "LWPSimple" bit. - # - my $self = shift; - my $pages = $self->{'pages'} || return undef; - return undef unless @$pages; - - my $chunk = $pages->[0]; - return undef unless defined $chunk; - $chunk =~ s/:://g; - $chunk =~ s/\.\w+$//g; # strip any extension - if( $chunk =~ m/([^\#\\:\/\$]+)$/s ) { # get basename, if it's a file - $chunk = $1; - } else { - return undef; - } - $chunk =~ s/[^a-zA-Z0-9]+//g; # leave ONLY a-zA-Z0-9 things! - $chunk = substr($chunk, -10) if length($chunk) > 10; - return $chunk; -} - -#.......................................................................... - -sub new_tempfile { # $self->new_tempfile( [$suffix, [$infix] ] ) - my $self = shift; - - ++$Temp_Files_Created; - - if( IS_MSWin32 ) { - my @out = $self->MSWin_perldoc_tempfile(@_); - return @out if @out; - # otherwise fall thru to the normal stuff below... - } - - require File::Temp; - return File::Temp::tempfile(UNLINK => 1); -} - -#.......................................................................... - -sub page { # apply a pager to the output file - my ($self, $output, $output_to_stdout, @pagers) = @_; - if ($output_to_stdout) { - $self->aside("Sending unpaged output to STDOUT.\n"); - open(TMP, "<", $output) or die "Can't open $output: $!"; # XXX 5.6ism - local $_; - while (<TMP>) { - print or die "Can't print to stdout: $!"; - } - close TMP or die "Can't close while $output: $!"; - $self->unlink_if_temp_file($output); - } else { - # On VMS, quoting prevents logical expansion, and temp files with no - # extension get the wrong default extension (such as .LIS for TYPE) - - $output = VMS::Filespec::rmsexpand($output, '.') if IS_VMS; - - $output =~ s{/}{\\}g if IS_MSWin32 || IS_Dos; - # Altho "/" under MSWin is in theory good as a pathsep, - # many many corners of the OS don't like it. So we - # have to force it to be "\" to make everyone happy. - - foreach my $pager (@pagers) { - $self->aside("About to try calling $pager $output\n"); - if (IS_VMS) { - last if system("$pager $output") == 0; - } else { - last if system("$pager \"$output\"") == 0; - } - } - } - return; -} - -#.......................................................................... - -sub searchfor { - my($self, $recurse,$s,@dirs) = @_; - $s =~ s!::!/!g; - $s = VMS::Filespec::unixify($s) if IS_VMS; - return $s if -f $s && $self->containspod($s); - $self->aside( "Looking for $s in @dirs\n" ); - my $ret; - my $i; - my $dir; - $self->{'target'} = (splitdir $s)[-1]; # XXX: why not use File::Basename? - for ($i=0; $i<@dirs; $i++) { - $dir = $dirs[$i]; - next unless -d $dir; # some dirs in @INC are optional - ($dir = VMS::Filespec::unixpath($dir)) =~ s!/\z!! if IS_VMS; - if ( (! $self->opt_m && ( $ret = $self->check_file($dir,"$s.pod"))) - or ( $ret = $self->check_file($dir,"$s.pm")) - or ( $ret = $self->check_file($dir,$s)) - or ( IS_VMS and - $ret = $self->check_file($dir,"$s.com")) - or ( IS_OS2 and - $ret = $self->check_file($dir,"$s.cmd")) - or ( (IS_MSWin32 or IS_Dos or IS_OS2) and - $ret = $self->check_file($dir,"$s.bat")) - or ( $ret = $self->check_file("$dir/pod","$s.pod")) - or ( $ret = $self->check_file("$dir/pod",$s)) - or ( $ret = $self->check_file("$dir/pods","$s.pod")) - or ( $ret = $self->check_file("$dir/pods",$s)) - ) { - DEBUG > 1 and print " Found $ret\n"; - return $ret; - } - - if ($recurse) { - opendir(D,$dir) or die "Can't opendir $dir: $!"; - my @newdirs = map catfile($dir, $_), grep { - not /^\.\.?\z/s and - not /^auto\z/s and # save time! don't search auto dirs - -d catfile($dir, $_) - } readdir D; - closedir(D) or die "Can't closedir $dir: $!"; - next unless @newdirs; - # what a wicked map! - @newdirs = map((s/\.dir\z//,$_)[1],@newdirs) if IS_VMS; - $self->aside( "Also looking in @newdirs\n" ); - push(@dirs,@newdirs); - } - } - return (); -} - -#.......................................................................... -{ - my $already_asserted; - sub assert_closing_stdout { - my $self = shift; - - return if $already_asserted; - - eval q~ END { close(STDOUT) || die "Can't close STDOUT: $!" } ~; - # What for? to let the pager know that nothing more will come? - - die $@ if $@; - $already_asserted = 1; - return; - } -} - -#.......................................................................... - -sub tweak_found_pathnames { - my($self, $found) = @_; - if (IS_MSWin32) { - foreach (@$found) { s,/,\\,g } - } - return; -} - -#.......................................................................... -# : : : : : : : : : -#.......................................................................... - -sub am_taint_checking { - my $self = shift; - die "NO ENVIRONMENT?!?!" unless keys %ENV; # reset iterator along the way - my($k,$v) = each %ENV; - return is_tainted($v); -} - -#.......................................................................... - -sub is_tainted { # just a function - my $arg = shift; - my $nada = substr($arg, 0, 0); # zero-length! - local $@; # preserve the caller's version of $@ - eval { eval "# $nada" }; - return length($@) != 0; -} - -#.......................................................................... - -sub drop_privs_maybe { - my $self = shift; - - # Attempt to drop privs if we should be tainting and aren't - if (!(IS_VMS || IS_MSWin32 || IS_Dos - || IS_OS2 - ) - && ($> == 0 || $< == 0) - && !$self->am_taint_checking() - ) { - my $id = eval { getpwnam("nobody") }; - $id = eval { getpwnam("nouser") } unless defined $id; - $id = -2 unless defined $id; - # - # According to Stevens' APUE and various - # (BSD, Solaris, HP-UX) man pages, setting - # the real uid first and effective uid second - # is the way to go if one wants to drop privileges, - # because if one changes into an effective uid of - # non-zero, one cannot change the real uid any more. - # - # Actually, it gets even messier. There is - # a third uid, called the saved uid, and as - # long as that is zero, one can get back to - # uid of zero. Setting the real-effective *twice* - # helps in *most* systems (FreeBSD and Solaris) - # but apparently in HP-UX even this doesn't help: - # the saved uid stays zero (apparently the only way - # in HP-UX to change saved uid is to call setuid() - # when the effective uid is zero). - # - eval { - $< = $id; # real uid - $> = $id; # effective uid - $< = $id; # real uid - $> = $id; # effective uid - }; - if( !$@ && $< && $> ) { - DEBUG and print "OK, I dropped privileges.\n"; - } elsif( $self->opt_U ) { - DEBUG and print "Couldn't drop privileges, but in -U mode, so feh." - } else { - DEBUG and print "Hm, couldn't drop privileges. Ah well.\n"; - # We used to die here; but that seemed pointless. - } - } - return; -} - -#.......................................................................... - -1; - -__END__ - -# See "perldoc perldoc" for basic details. -# -# Perldoc -- look up a piece of documentation in .pod format that -# is embedded in the perl installation tree. -# -#~~~~~~ -# -# See ChangeLog in CPAN dist for Pod::Perldoc for later notes. -# -# Version 3.01: Sun Nov 10 21:38:09 MST 2002 -# Sean M. Burke <sburke@cpan.org> -# Massive refactoring and code-tidying. -# Now it's a module(-family)! -# Formatter-specific stuff pulled out into Pod::Perldoc::To(Whatever).pm -# Added -T, -d, -o, -M, -w. -# Added some improved MSWin funk. -# -#~~~~~~ -# -# Version 2.05: Sat Oct 12 16:09:00 CEST 2002 -# Hugo van der Sanden <hv@crypt.org> -# Made -U the default, based on patch from Simon Cozens -# Version 2.04: Sun Aug 18 13:27:12 BST 2002 -# Randy W. Sims <RandyS@ThePierianSpring.org> -# allow -n to enable nroff under Win32 -# Version 2.03: Sun Apr 23 16:56:34 BST 2000 -# Hugo van der Sanden <hv@crypt.org> -# don't die when 'use blib' fails -# Version 2.02: Mon Mar 13 18:03:04 MST 2000 -# Tom Christiansen <tchrist@perl.com> -# Added -U insecurity option -# Version 2.01: Sat Mar 11 15:22:33 MST 2000 -# Tom Christiansen <tchrist@perl.com>, querulously. -# Security and correctness patches. -# What a twisted bit of distasteful spaghetti code. -# Version 2.0: ???? -# -#~~~~~~ -# -# Version 1.15: Tue Aug 24 01:50:20 EST 1999 -# Charles Wilson <cwilson@ece.gatech.edu> -# changed /pod/ directory to /pods/ for cygwin -# to support cygwin/win32 -# Version 1.14: Wed Jul 15 01:50:20 EST 1998 -# Robin Barker <rmb1@cise.npl.co.uk> -# -strict, -w cleanups -# Version 1.13: Fri Feb 27 16:20:50 EST 1997 -# Gurusamy Sarathy <gsar@activestate.com> -# -doc tweaks for -F and -X options -# Version 1.12: Sat Apr 12 22:41:09 EST 1997 -# Gurusamy Sarathy <gsar@activestate.com> -# -various fixes for win32 -# Version 1.11: Tue Dec 26 09:54:33 EST 1995 -# Kenneth Albanowski <kjahds@kjahds.com> -# -added Charles Bailey's further VMS patches, and -u switch -# -added -t switch, with pod2text support -# -# Version 1.10: Thu Nov 9 07:23:47 EST 1995 -# Kenneth Albanowski <kjahds@kjahds.com> -# -added VMS support -# -added better error recognition (on no found pages, just exit. On -# missing nroff/pod2man, just display raw pod.) -# -added recursive/case-insensitive matching (thanks, Andreas). This -# slows things down a bit, unfortunately. Give a precise name, and -# it'll run faster. -# -# Version 1.01: Tue May 30 14:47:34 EDT 1995 -# Andy Dougherty <doughera@lafcol.lafayette.edu> -# -added pod documentation. -# -added PATH searching. -# -added searching pod/ subdirectory (mainly to pick up perlfunc.pod -# and friends. -# -#~~~~~~~ -# -# TODO: -# -# Cache the directories read during sloppy match -# (To disk, or just in-memory?) -# -# Backport this to perl 5.005? -# -# Implement at least part of the "perlman" interface described -# in Programming Perl 3e? diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/BaseTo.pm b/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/BaseTo.pm deleted file mode 100644 index 6ca2a8c7e54..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/BaseTo.pm +++ /dev/null @@ -1,28 +0,0 @@ - -require 5; -package Pod::Perldoc::BaseTo; -use strict; -use warnings; - -sub is_pageable { '' } -sub write_with_binmode { 1 } - -sub output_extension { 'txt' } # override in subclass! - -# sub new { my $self = shift; ... } -# sub parse_from_file( my($class, $in, $out) = ...; ... } - -#sub new { return bless {}, ref($_[0]) || $_[0] } - -sub _perldoc_elem { - my($self, $name) = splice @_,0,2; - if(@_) { - $self->{$name} = $_[0]; - } else { - $self->{$name}; - } -} - - -1; - diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/GetOptsOO.pm b/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/GetOptsOO.pm deleted file mode 100644 index b29aeb10906..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/GetOptsOO.pm +++ /dev/null @@ -1,106 +0,0 @@ - -require 5; -package Pod::Perldoc::GetOptsOO; -use strict; - -# Rather like Getopt::Std's getopts -# Call Pod::Perldoc::GetOptsOO::getopts($object, \@ARGV, $truth) -# Given -n, if there's a opt_n_with, it'll call $object->opt_n_with( ARGUMENT ) -# (e.g., "-n foo" => $object->opt_n_with('foo'). Ditto "-nfoo") -# Otherwise (given -n) if there's an opt_n, we'll call it $object->opt_n($truth) -# (Truth defaults to 1) -# Otherwise we try calling $object->handle_unknown_option('n') -# (and we increment the error count by the return value of it) -# If there's no handle_unknown_option, then we just warn, and then increment -# the error counter -# -# The return value of Pod::Perldoc::GetOptsOO::getopts is true if no errors, -# otherwise it's false. -# -## sburke@cpan.org 2002-10-31 - -BEGIN { # Make a DEBUG constant ASAP - *DEBUG = defined( &Pod::Perldoc::DEBUG ) - ? \&Pod::Perldoc::DEBUG - : sub(){10}; -} - - -sub getopts { - my($target, $args, $truth) = @_; - - $args ||= \@ARGV; - - $target->aside( - "Starting switch processing. Scanning arguments [@$args]\n" - ) if $target->can('aside'); - - return unless @$args; - - $truth = 1 unless @_ > 2; - - DEBUG > 3 and print " Truth is $truth\n"; - - - my $error_count = 0; - - while( @$args and ($_ = $args->[0]) =~ m/^-(.)(.*)/s ) { - my($first,$rest) = ($1,$2); - if ($_ eq '--') { # early exit if "--" - shift @$args; - last; - } - my $method = "opt_${first}_with"; - if( $target->can($method) ) { # it's argumental - if($rest eq '') { # like -f bar - shift @$args; - warn "Option $first needs a following argument!\n" unless @$args; - $rest = shift @$args; - } else { # like -fbar (== -f bar) - shift @$args; - } - - DEBUG > 3 and print " $method => $rest\n"; - $target->$method( $rest ); - - # Otherwise, it's not argumental... - } else { - - if( $target->can( $method = "opt_$first" ) ) { - DEBUG > 3 and print " $method is true ($truth)\n"; - $target->$method( $truth ); - - # Otherwise it's an unknown option... - - } elsif( $target->can('handle_unknown_option') ) { - DEBUG > 3 - and print " calling handle_unknown_option('$first')\n"; - - $error_count += ( - $target->handle_unknown_option( $first ) || 0 - ); - - } else { - ++$error_count; - warn "Unknown option: $first\n"; - } - - if($rest eq '') { # like -f - shift @$args - } else { # like -fbar (== -f -bar ) - DEBUG > 2 and print " Setting args->[0] to \"-$rest\"\n"; - $args->[0] = "-$rest"; - } - } - } - - - $target->aside( - "Ending switch processing. Args are [@$args] with $error_count errors.\n" - ) if $target->can('aside'); - - $error_count == 0; -} - -1; - diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToChecker.pm b/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToChecker.pm deleted file mode 100644 index c60290d6502..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToChecker.pm +++ /dev/null @@ -1,72 +0,0 @@ - -require 5; -package Pod::Perldoc::ToChecker; -use strict; -use warnings; -use vars qw(@ISA); - -# Pick our superclass... -# -eval 'require Pod::Simple::Checker'; -if($@) { - require Pod::Checker; - @ISA = ('Pod::Checker'); -} else { - @ISA = ('Pod::Simple::Checker'); -} - -sub is_pageable { 1 } -sub write_with_binmode { 0 } -sub output_extension { 'txt' } - -sub if_zero_length { - my( $self, $file, $tmp, $tmpfd ) = @_; - print "No Pod errors in $file\n"; -} - - -1; - -__END__ - -=head1 NAME - -Pod::Perldoc::ToChecker - let Perldoc check Pod for errors - -=head1 SYNOPSIS - - % perldoc -o checker SomeFile.pod - No Pod errors in SomeFile.pod - (or an error report) - -=head1 DESCRIPTION - -This is a "plug-in" class that allows Perldoc to use -Pod::Simple::Checker as a "formatter" class (or if that is -not available, then Pod::Checker), to check for errors in a given -Pod file. - -This is actually a Pod::Simple::Checker (or Pod::Checker) subclass, and -inherits all its options. - -=head1 SEE ALSO - -L<Pod::Simple::Checker>, L<Pod::Simple>, L<Pod::Checker>, L<Pod::Perldoc> - -=head1 COPYRIGHT AND DISCLAIMERS - -Copyright (c) 2002 Sean M. Burke. All rights reserved. - -This library is free software; you can redistribute it and/or modify it -under the same terms as Perl itself. - -This program is distributed in the hope that it will be useful, but -without any warranty; without even the implied warranty of -merchantability or fitness for a particular purpose. - -=head1 AUTHOR - -Sean M. Burke C<sburke@cpan.org> - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToMan.pm b/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToMan.pm deleted file mode 100644 index 43191222376..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToMan.pm +++ /dev/null @@ -1,187 +0,0 @@ - -require 5; -package Pod::Perldoc::ToMan; -use strict; -use warnings; - -# This class is unlike ToText.pm et al, because we're NOT paging thru -# the output in our particular format -- we make the output and -# then we run nroff (or whatever) on it, and then page thru the -# (plaintext) output of THAT! - -use base qw(Pod::Perldoc::BaseTo); -sub is_pageable { 1 } -sub write_with_binmode { 0 } -sub output_extension { 'txt' } - -sub __filter_nroff { shift->_perldoc_elem('__filter_nroff' , @_) } -sub __nroffer { shift->_perldoc_elem('__nroffer' , @_) } -sub __bindir { shift->_perldoc_elem('__bindir' , @_) } -sub __pod2man { shift->_perldoc_elem('__pod2man' , @_) } -sub __output_file { shift->_perldoc_elem('__output_file' , @_) } - -sub center { shift->_perldoc_elem('center' , @_) } -sub date { shift->_perldoc_elem('date' , @_) } -sub fixed { shift->_perldoc_elem('fixed' , @_) } -sub fixedbold { shift->_perldoc_elem('fixedbold' , @_) } -sub fixeditalic { shift->_perldoc_elem('fixeditalic' , @_) } -sub fixedbolditalic { shift->_perldoc_elem('fixedbolditalic', @_) } -sub quotes { shift->_perldoc_elem('quotes' , @_) } -sub release { shift->_perldoc_elem('release' , @_) } -sub section { shift->_perldoc_elem('section' , @_) } - -sub new { return bless {}, ref($_[0]) || $_[0] } - -use File::Spec::Functions qw(catfile); - -sub parse_from_file { - my $self = shift; - my($file, $outfh) = @_; - - my $render = $self->{'__nroffer'} || die "no nroffer set!?"; - - # turn the switches into CLIs - my $switches = join ' ', - map qq{"--$_=$self->{$_}"}, - grep !m/^_/s, - keys %$self - ; - - my $pod2man = - catfile( - ($self->{'__bindir'} || die "no bindir set?!" ), - ($self->{'__pod2man'} || die "no pod2man set?!" ), - ) - ; - unless(-e $pod2man) { - # This is rarely needed, I think. - $pod2man = $self->{'__pod2man'} || die "no pod2man set?!"; - die "Can't find a pod2man?! (". $self->{'__pod2man'} .")\nAborting" - unless -e $pod2man; - } - - my $command = "$pod2man $switches --lax $file | $render -man"; - # no temp file, just a pipe! - - # Thanks to Brendan O'Dea for contributing the following block - if(Pod::Perldoc::IS_Linux and -t STDOUT - and my ($cols) = `stty -a` =~ m/\bcolumns\s+(\d+)/ - ) { - my $c = $cols * 39 / 40; - $cols = $c > $cols - 2 ? $c : $cols -2; - $command .= ' -rLL=' . (int $c) . 'n' if $cols > 80; - } - - if(Pod::Perldoc::IS_Cygwin) { - $command .= ' -c'; - } - - # I hear persistent reports that adding a -c switch to $render - # solves many people's problems. But I also hear that some mans - # don't have a -c switch, so that unconditionally adding it here - # would presumably be a Bad Thing -- sburke@cpan.org - - $command .= " | col -x" if Pod::Perldoc::IS_HPUX; - - defined(&Pod::Perldoc::DEBUG) - and Pod::Perldoc::DEBUG() - and print "About to run $command\n"; - ; - - my $rslt = `$command`; - - my $err; - - if( $self->{'__filter_nroff'} ) { - defined(&Pod::Perldoc::DEBUG) - and &Pod::Perldoc::DEBUG() - and print "filter_nroff is set, so filtering...\n"; - $rslt = $self->___Do_filter_nroff($rslt); - } else { - defined(&Pod::Perldoc::DEBUG) - and Pod::Perldoc::DEBUG() - and print "filter_nroff isn't set, so not filtering.\n"; - } - - if (($err = $?)) { - defined(&Pod::Perldoc::DEBUG) - and Pod::Perldoc::DEBUG() - and print "Nonzero exit ($?) while running $command.\n", - "Falling back to Pod::Perldoc::ToPod\n ", - ; - # A desperate fallthru: - require Pod::Perldoc::ToPod; - return Pod::Perldoc::ToPod->new->parse_from_file(@_); - - } else { - print $outfh $rslt - or die "Can't print to $$self{__output_file}: $!"; - } - - return; -} - - -sub ___Do_filter_nroff { - my $self = shift; - my @data = split /\n{2,}/, shift; - - shift @data while @data and $data[0] !~ /\S/; # Go to header - shift @data if @data and $data[0] =~ /Contributed\s+Perl/; # Skip header - pop @data if @data and $data[-1] =~ /^\w/; # Skip footer, like - # 28/Jan/99 perl 5.005, patch 53 1 - join "\n\n", @data; -} - -1; - -__END__ - -=head1 NAME - -Pod::Perldoc::ToMan - let Perldoc render Pod as man pages - -=head1 SYNOPSIS - - perldoc -o man Some::Modulename - -=head1 DESCRIPTION - -This is a "plug-in" class that allows Perldoc to use -Pod::Man and C<nroff> for reading Pod pages. - -The following options are supported: center, date, fixed, fixedbold, -fixeditalic, fixedbolditalic, quotes, release, section - -(Those options are explained in L<Pod::Man>.) - -For example: - - perldoc -o man -w center:Pod Some::Modulename - -=head1 CAVEAT - -This module may change to use a different pod-to-nroff formatter class -in the future, and this may change what options are supported. - -=head1 SEE ALSO - -L<Pod::Man>, L<Pod::Perldoc>, L<Pod::Perldoc::ToNroff> - -=head1 COPYRIGHT AND DISCLAIMERS - -Copyright (c) 2002,3,4 Sean M. Burke. All rights reserved. - -This library is free software; you can redistribute it and/or modify it -under the same terms as Perl itself. - -This program is distributed in the hope that it will be useful, but -without any warranty; without even the implied warranty of -merchantability or fitness for a particular purpose. - -=head1 AUTHOR - -Sean M. Burke C<sburke@cpan.org> - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToNroff.pm b/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToNroff.pm deleted file mode 100644 index d0568605068..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToNroff.pm +++ /dev/null @@ -1,100 +0,0 @@ - -require 5; -package Pod::Perldoc::ToNroff; -use strict; -use warnings; - -# This is unlike ToMan.pm in that it emits the raw nroff source! - -use base qw(Pod::Perldoc::BaseTo); - -sub is_pageable { 1 } # well, if you ask for it... -sub write_with_binmode { 0 } -sub output_extension { 'man' } - -use Pod::Man (); - -sub center { shift->_perldoc_elem('center' , @_) } -sub date { shift->_perldoc_elem('date' , @_) } -sub fixed { shift->_perldoc_elem('fixed' , @_) } -sub fixedbold { shift->_perldoc_elem('fixedbold' , @_) } -sub fixeditalic { shift->_perldoc_elem('fixeditalic' , @_) } -sub fixedbolditalic { shift->_perldoc_elem('fixedbolditalic', @_) } -sub quotes { shift->_perldoc_elem('quotes' , @_) } -sub release { shift->_perldoc_elem('release' , @_) } -sub section { shift->_perldoc_elem('section' , @_) } - -sub new { return bless {}, ref($_[0]) || $_[0] } - -sub parse_from_file { - my $self = shift; - my $file = $_[0]; - - my @options = - map {; $_, $self->{$_} } - grep !m/^_/s, - keys %$self - ; - - defined(&Pod::Perldoc::DEBUG) - and Pod::Perldoc::DEBUG() - and print "About to call new Pod::Man ", - $Pod::Man::VERSION ? "(v$Pod::Man::VERSION) " : '', - "with options: ", - @options ? "[@options]" : "(nil)", "\n"; - ; - - Pod::Man->new(@options)->parse_from_file(@_); -} - -1; -__END__ - -=head1 NAME - -Pod::Perldoc::ToNroff - let Perldoc convert Pod to nroff - -=head1 SYNOPSIS - - perldoc -o nroff -d something.3 Some::Modulename - -=head1 DESCRIPTION - -This is a "plug-in" class that allows Perldoc to use -Pod::Man as a formatter class. - -The following options are supported: center, date, fixed, fixedbold, -fixeditalic, fixedbolditalic, quotes, release, section - -Those options are explained in L<Pod::Man>. - -For example: - - perldoc -o nroff -w center:Pod -d something.3 Some::Modulename - -=head1 CAVEAT - -This module may change to use a different pod-to-nroff formatter class -in the future, and this may change what options are supported. - -=head1 SEE ALSO - -L<Pod::Man>, L<Pod::Perldoc>, L<Pod::Perldoc::ToMan> - -=head1 COPYRIGHT AND DISCLAIMERS - -Copyright (c) 2002 Sean M. Burke. All rights reserved. - -This library is free software; you can redistribute it and/or modify it -under the same terms as Perl itself. - -This program is distributed in the hope that it will be useful, but -without any warranty; without even the implied warranty of -merchantability or fitness for a particular purpose. - -=head1 AUTHOR - -Sean M. Burke C<sburke@cpan.org> - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToPod.pm b/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToPod.pm deleted file mode 100644 index bccbfcadbd6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToPod.pm +++ /dev/null @@ -1,90 +0,0 @@ - -# This class is just a hack to act as a "formatter" for -# actually unformatted Pod. -# -# Note that this isn't the same as just passing thru whatever -# we're given -- we pass thru only the pod source, and suppress -# the Perl code (or whatever non-pod stuff is in the source file). - - -require 5; -package Pod::Perldoc::ToPod; -use strict; -use warnings; - -use base qw(Pod::Perldoc::BaseTo); -sub is_pageable { 1 } -sub write_with_binmode { 0 } -sub output_extension { 'pod' } - -sub new { return bless {}, ref($_[0]) || $_[0] } - -sub parse_from_file { - my( $self, $in, $outfh ) = @_; - - open(IN, "<", $in) or die "Can't read-open $in: $!\nAborting"; - - my $cut_mode = 1; - - # A hack for finding things between =foo and =cut, inclusive - local $_; - while (<IN>) { - if( m/^=(\w+)/s ) { - if($cut_mode = ($1 eq 'cut')) { - print $outfh "\n=cut\n\n"; - # Pass thru the =cut line with some harmless - # (and occasionally helpful) padding - } - } - next if $cut_mode; - print $outfh $_ or die "Can't print to $outfh: $!"; - } - - close IN or die "Can't close $in: $!"; - return; -} - -1; -__END__ - -=head1 NAME - -Pod::Perldoc::ToPod - let Perldoc render Pod as ... Pod! - -=head1 SYNOPSIS - - perldoc -opod Some::Modulename - -(That's currently the same as the following:) - - perldoc -u Some::Modulename - -=head1 DESCRIPTION - -This is a "plug-in" class that allows Perldoc to display Pod source as -itself! Pretty Zen, huh? - -Currently this class works by just filtering out the non-Pod stuff from -a given input file. - -=head1 SEE ALSO - -L<Pod::Perldoc> - -=head1 COPYRIGHT AND DISCLAIMERS - -Copyright (c) 2002 Sean M. Burke. All rights reserved. - -This library is free software; you can redistribute it and/or modify it -under the same terms as Perl itself. - -This program is distributed in the hope that it will be useful, but -without any warranty; without even the implied warranty of -merchantability or fitness for a particular purpose. - -=head1 AUTHOR - -Sean M. Burke C<sburke@cpan.org> - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToRtf.pm b/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToRtf.pm deleted file mode 100644 index 25e609e313a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToRtf.pm +++ /dev/null @@ -1,85 +0,0 @@ - -require 5; -package Pod::Perldoc::ToRtf; -use strict; -use warnings; -use vars qw($VERSION); - -use base qw( Pod::Simple::RTF ); - -$VERSION # so that ->VERSION is happy -# stop CPAN from seeing this - = -$Pod::Simple::RTF::VERSION; - - -sub is_pageable { 0 } -sub write_with_binmode { 0 } -sub output_extension { 'rtf' } - -sub page_for_perldoc { - my($self, $tempfile, $perldoc) = @_; - return unless $perldoc->IS_MSWin32; - - my $rtf_pager = $ENV{'RTFREADER'} || 'write.exe'; - - $perldoc->aside( "About to launch <\"$rtf_pager\" \"$tempfile\">\n" ); - - return 1 if system( qq{"$rtf_pager"}, qq{"$tempfile"} ) == 0; - return 0; -} - -1; -__END__ - -=head1 NAME - -Pod::Perldoc::ToRtf - let Perldoc render Pod as RTF - -=head1 SYNOPSIS - - perldoc -o rtf Some::Modulename - -=head1 DESCRIPTION - -This is a "plug-in" class that allows Perldoc to use -Pod::Simple::RTF as a formatter class. - -This is actually a Pod::Simple::RTF subclass, and inherits -all its options. - -You have to have Pod::Simple::RTF installed (from the Pod::Simple dist), -or this module won't work. - -If Perldoc is running under MSWin and uses this class as a formatter, -the output will be opened with F<write.exe> or whatever program is -specified in the environment variable C<RTFREADER>. For example, to -specify that RTF files should be opened the same as they are when you -double-click them, you would do C<set RTFREADER=start.exe> in your -F<autoexec.bat>. - -Handy tip: put C<set PERLDOC=-ortf> in your F<autoexec.bat> -and that will set this class as the default formatter to run when -you do C<perldoc whatever>. - -=head1 SEE ALSO - -L<Pod::Simple::RTF>, L<Pod::Simple>, L<Pod::Perldoc> - -=head1 COPYRIGHT AND DISCLAIMERS - -Copyright (c) 2002 Sean M. Burke. All rights reserved. - -This library is free software; you can redistribute it and/or modify it -under the same terms as Perl itself. - -This program is distributed in the hope that it will be useful, but -without any warranty; without even the implied warranty of -merchantability or fitness for a particular purpose. - -=head1 AUTHOR - -Sean M. Burke C<sburke@cpan.org> - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToText.pm b/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToText.pm deleted file mode 100644 index 2eb9e0644ac..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToText.pm +++ /dev/null @@ -1,91 +0,0 @@ - -require 5; -package Pod::Perldoc::ToText; -use strict; -use warnings; - -use base qw(Pod::Perldoc::BaseTo); - -sub is_pageable { 1 } -sub write_with_binmode { 0 } -sub output_extension { 'txt' } - -use Pod::Text (); - -sub alt { shift->_perldoc_elem('alt' , @_) } -sub indent { shift->_perldoc_elem('indent' , @_) } -sub loose { shift->_perldoc_elem('loose' , @_) } -sub quotes { shift->_perldoc_elem('quotes' , @_) } -sub sentence { shift->_perldoc_elem('sentence', @_) } -sub width { shift->_perldoc_elem('width' , @_) } - -sub new { return bless {}, ref($_[0]) || $_[0] } - -sub parse_from_file { - my $self = shift; - - my @options = - map {; $_, $self->{$_} } - grep !m/^_/s, - keys %$self - ; - - defined(&Pod::Perldoc::DEBUG) - and Pod::Perldoc::DEBUG() - and print "About to call new Pod::Text ", - $Pod::Text::VERSION ? "(v$Pod::Text::VERSION) " : '', - "with options: ", - @options ? "[@options]" : "(nil)", "\n"; - ; - - Pod::Text->new(@options)->parse_from_file(@_); -} - -1; - -=head1 NAME - -Pod::Perldoc::ToText - let Perldoc render Pod as plaintext - -=head1 SYNOPSIS - - perldoc -o text Some::Modulename - -=head1 DESCRIPTION - -This is a "plug-in" class that allows Perldoc to use -Pod::Text as a formatter class. - -It supports the following options, which are explained in -L<Pod::Text>: alt, indent, loose, quotes, sentence, width - -For example: - - perldoc -o text -w indent:5 Some::Modulename - -=head1 CAVEAT - -This module may change to use a different text formatter class in the -future, and this may change what options are supported. - -=head1 SEE ALSO - -L<Pod::Text>, L<Pod::Perldoc> - -=head1 COPYRIGHT AND DISCLAIMERS - -Copyright (c) 2002 Sean M. Burke. All rights reserved. - -This library is free software; you can redistribute it and/or modify it -under the same terms as Perl itself. - -This program is distributed in the hope that it will be useful, but -without any warranty; without even the implied warranty of -merchantability or fitness for a particular purpose. - -=head1 AUTHOR - -Sean M. Burke C<sburke@cpan.org> - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToTk.pm b/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToTk.pm deleted file mode 100644 index 39459629503..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToTk.pm +++ /dev/null @@ -1,129 +0,0 @@ - -require 5; -package Pod::Perldoc::ToTk; -use strict; -use warnings; - -use base qw(Pod::Perldoc::BaseTo); - -sub is_pageable { 1 } -sub write_with_binmode { 0 } -sub output_extension { 'txt' } # doesn't matter -sub if_zero_length { } # because it will be 0-length! -sub new { return bless {}, ref($_[0]) || $_[0] } - -# TODO: document these and their meanings... -sub tree { shift->_perldoc_elem('tree' , @_) } -sub tk_opt { shift->_perldoc_elem('tk_opt' , @_) } -sub forky { shift->_perldoc_elem('forky' , @_) } - -use Pod::Perldoc (); -use File::Spec::Functions qw(catfile); - -use Tk; -die join '', __PACKAGE__, " doesn't work nice with Tk.pm verison $Tk::VERSION" - if $Tk::VERSION eq '800.003'; - -BEGIN { eval { require Tk::FcyEntry; }; }; -use Tk::Pod; - -# The following was adapted from "tkpod" in the Tk-Pod dist. - -sub parse_from_file { - - my($self, $Input_File) = @_; - if($self->{'forky'}) { - return if fork; # i.e., parent process returns - } - - $Input_File =~ s{\\}{/}g - if Pod::Perldoc::IS_MSWin32 or Pod::Perldoc::IS_Dos - # and maybe OS/2 - ; - - my($tk_opt, $tree); - $tree = $self->{'tree' }; - $tk_opt = $self->{'tk_opt'}; - - #require Tk::ErrorDialog; - - # Add 'Tk' subdirectories to search path so, e.g., - # 'Scrolled' will find doc in 'Tk/Scrolled' - - if( $tk_opt ) { - push @INC, grep -d $_, map catfile($_,'Tk'), @INC; - } - - my $mw = MainWindow->new(); - #eval 'use blib "/home/e/eserte/src/perl/Tk-App";require Tk::App::Debug'; - $mw->withdraw; - - # CDE use Font Settings if available - my $ufont = $mw->optionGet('userFont','UserFont'); # fixed width - my $sfont = $mw->optionGet('systemFont','SystemFont'); # proportional - if (defined($ufont) and defined($sfont)) { - foreach ($ufont, $sfont) { s/:$//; }; - $mw->optionAdd('*Font', $sfont); - $mw->optionAdd('*Entry.Font', $ufont); - $mw->optionAdd('*Text.Font', $ufont); - } - - $mw->optionAdd('*Menu.tearOff', $Tk::platform ne 'MSWin32' ? 1 : 0); - - $mw->Pod( - '-file' => $Input_File, - (($Tk::Pod::VERSION >= 4) ? ('-tree' => $tree) : ()) - )->focusNext; - - # xxx dirty but it works. A simple $mw->destroy if $mw->children - # does not work because Tk::ErrorDialogs could be created. - # (they are withdrawn after Ok instead of destory'ed I guess) - - if ($mw->children) { - $mw->repeat(1000, sub { - # ErrorDialog is withdrawn not deleted :-( - foreach ($mw->children) { - return if "$_" =~ /^Tk::Pod/ # ->isa('Tk::Pod') - } - $mw->destroy; - }); - } else { - $mw->destroy; - } - #$mw->WidgetDump; - MainLoop(); - - exit if $self->{'forky'}; # we were the child! so exit now! - return; -} - -1; -__END__ - - -=head1 NAME - -Pod::Perldoc::ToTk - let Perldoc use Tk::Pod to render Pod - -=head1 SYNOPSIS - - perldoc -o tk Some::Modulename & - -=head1 DESCRIPTION - -This is a "plug-in" class that allows Perldoc to use -Tk::Pod as a formatter class. - -You have to have installed Tk::Pod first, or this class won't load. - -=head1 SEE ALSO - -L<Tk::Pod>, L<Pod::Perldoc> - -=head1 AUTHOR - -Sean M. Burke C<sburke@cpan.org>, with significant portions copied from -F<tkpod> in the Tk::Pod dist, by Nick Ing-Simmons, Slaven Rezic, et al. - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToXml.pm b/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToXml.pm deleted file mode 100644 index dd0d15cc10b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Perldoc/ToXml.pm +++ /dev/null @@ -1,63 +0,0 @@ - -require 5; -package Pod::Perldoc::ToXml; -use strict; -use warnings; -use vars qw($VERSION); - -use base qw( Pod::Simple::XMLOutStream ); - -$VERSION # so that ->VERSION is happy -# stop CPAN from seeing this - = -$Pod::Simple::XMLOutStream::VERSION; - - -sub is_pageable { 0 } -sub write_with_binmode { 0 } -sub output_extension { 'xml' } - -1; -__END__ - -=head1 NAME - -Pod::Perldoc::ToXml - let Perldoc render Pod as XML - -=head1 SYNOPSIS - - perldoc -o xml -d out.xml Some::Modulename - -=head1 DESCRIPTION - -This is a "plug-in" class that allows Perldoc to use -Pod::Simple::XMLOutStream as a formatter class. - -This is actually a Pod::Simple::XMLOutStream subclass, and inherits -all its options. - -You have to have installed Pod::Simple::XMLOutStream (from the Pod::Simple -dist), or this class won't work. - - -=head1 SEE ALSO - -L<Pod::Simple::XMLOutStream>, L<Pod::Simple>, L<Pod::Perldoc> - -=head1 COPYRIGHT AND DISCLAIMERS - -Copyright (c) 2002 Sean M. Burke. All rights reserved. - -This library is free software; you can redistribute it and/or modify it -under the same terms as Perl itself. - -This program is distributed in the hope that it will be useful, but -without any warranty; without even the implied warranty of -merchantability or fitness for a particular purpose. - -=head1 AUTHOR - -Sean M. Burke C<sburke@cpan.org> - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Pod/PlainText.pm b/Master/tlpkg/tlperl.old/lib/Pod/PlainText.pm deleted file mode 100644 index 3f5ce90d2ba..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/PlainText.pm +++ /dev/null @@ -1,705 +0,0 @@ -# Pod::PlainText -- Convert POD data to formatted ASCII text. -# $Id: Text.pm,v 2.1 1999/09/20 11:53:33 eagle Exp $ -# -# Copyright 1999-2000 by Russ Allbery <rra@stanford.edu> -# -# This program is free software; you can redistribute it and/or modify it -# under the same terms as Perl itself. -# -# This module is intended to be a replacement for Pod::Text, and attempts to -# match its output except for some specific circumstances where other -# decisions seemed to produce better output. It uses Pod::Parser and is -# designed to be very easy to subclass. - -############################################################################ -# Modules and declarations -############################################################################ - -package Pod::PlainText; - -require 5.005; - -use Carp qw(carp croak); -use Pod::Select (); - -use strict; -use vars qw(@ISA %ESCAPES $VERSION); - -# We inherit from Pod::Select instead of Pod::Parser so that we can be used -# by Pod::Usage. -@ISA = qw(Pod::Select); - -$VERSION = '2.02'; - - -############################################################################ -# Table of supported E<> escapes -############################################################################ - -# This table is taken near verbatim from Pod::PlainText in Pod::Parser, -# which got it near verbatim from the original Pod::Text. It is therefore -# credited to Tom Christiansen, and I'm glad I didn't have to write it. :) -%ESCAPES = ( - 'amp' => '&', # ampersand - 'lt' => '<', # left chevron, less-than - 'gt' => '>', # right chevron, greater-than - 'quot' => '"', # double quote - - "Aacute" => "\xC1", # capital A, acute accent - "aacute" => "\xE1", # small a, acute accent - "Acirc" => "\xC2", # capital A, circumflex accent - "acirc" => "\xE2", # small a, circumflex accent - "AElig" => "\xC6", # capital AE diphthong (ligature) - "aelig" => "\xE6", # small ae diphthong (ligature) - "Agrave" => "\xC0", # capital A, grave accent - "agrave" => "\xE0", # small a, grave accent - "Aring" => "\xC5", # capital A, ring - "aring" => "\xE5", # small a, ring - "Atilde" => "\xC3", # capital A, tilde - "atilde" => "\xE3", # small a, tilde - "Auml" => "\xC4", # capital A, dieresis or umlaut mark - "auml" => "\xE4", # small a, dieresis or umlaut mark - "Ccedil" => "\xC7", # capital C, cedilla - "ccedil" => "\xE7", # small c, cedilla - "Eacute" => "\xC9", # capital E, acute accent - "eacute" => "\xE9", # small e, acute accent - "Ecirc" => "\xCA", # capital E, circumflex accent - "ecirc" => "\xEA", # small e, circumflex accent - "Egrave" => "\xC8", # capital E, grave accent - "egrave" => "\xE8", # small e, grave accent - "ETH" => "\xD0", # capital Eth, Icelandic - "eth" => "\xF0", # small eth, Icelandic - "Euml" => "\xCB", # capital E, dieresis or umlaut mark - "euml" => "\xEB", # small e, dieresis or umlaut mark - "Iacute" => "\xCD", # capital I, acute accent - "iacute" => "\xED", # small i, acute accent - "Icirc" => "\xCE", # capital I, circumflex accent - "icirc" => "\xEE", # small i, circumflex accent - "Igrave" => "\xCD", # capital I, grave accent - "igrave" => "\xED", # small i, grave accent - "Iuml" => "\xCF", # capital I, dieresis or umlaut mark - "iuml" => "\xEF", # small i, dieresis or umlaut mark - "Ntilde" => "\xD1", # capital N, tilde - "ntilde" => "\xF1", # small n, tilde - "Oacute" => "\xD3", # capital O, acute accent - "oacute" => "\xF3", # small o, acute accent - "Ocirc" => "\xD4", # capital O, circumflex accent - "ocirc" => "\xF4", # small o, circumflex accent - "Ograve" => "\xD2", # capital O, grave accent - "ograve" => "\xF2", # small o, grave accent - "Oslash" => "\xD8", # capital O, slash - "oslash" => "\xF8", # small o, slash - "Otilde" => "\xD5", # capital O, tilde - "otilde" => "\xF5", # small o, tilde - "Ouml" => "\xD6", # capital O, dieresis or umlaut mark - "ouml" => "\xF6", # small o, dieresis or umlaut mark - "szlig" => "\xDF", # small sharp s, German (sz ligature) - "THORN" => "\xDE", # capital THORN, Icelandic - "thorn" => "\xFE", # small thorn, Icelandic - "Uacute" => "\xDA", # capital U, acute accent - "uacute" => "\xFA", # small u, acute accent - "Ucirc" => "\xDB", # capital U, circumflex accent - "ucirc" => "\xFB", # small u, circumflex accent - "Ugrave" => "\xD9", # capital U, grave accent - "ugrave" => "\xF9", # small u, grave accent - "Uuml" => "\xDC", # capital U, dieresis or umlaut mark - "uuml" => "\xFC", # small u, dieresis or umlaut mark - "Yacute" => "\xDD", # capital Y, acute accent - "yacute" => "\xFD", # small y, acute accent - "yuml" => "\xFF", # small y, dieresis or umlaut mark - - "lchevron" => "\xAB", # left chevron (double less than) - "rchevron" => "\xBB", # right chevron (double greater than) -); - - -############################################################################ -# Initialization -############################################################################ - -# Initialize the object. Must be sure to call our parent initializer. -sub initialize { - my $self = shift; - - $$self{alt} = 0 unless defined $$self{alt}; - $$self{indent} = 4 unless defined $$self{indent}; - $$self{loose} = 0 unless defined $$self{loose}; - $$self{sentence} = 0 unless defined $$self{sentence}; - $$self{width} = 76 unless defined $$self{width}; - - $$self{INDENTS} = []; # Stack of indentations. - $$self{MARGIN} = $$self{indent}; # Current left margin in spaces. - - $self->SUPER::initialize; -} - - -############################################################################ -# Core overrides -############################################################################ - -# Called for each command paragraph. Gets the command, the associated -# paragraph, the line number, and a Pod::Paragraph object. Just dispatches -# the command to a method named the same as the command. =cut is handled -# internally by Pod::Parser. -sub command { - my $self = shift; - my $command = shift; - return if $command eq 'pod'; - return if ($$self{EXCLUDE} && $command ne 'end'); - $self->item ("\n") if defined $$self{ITEM}; - $command = 'cmd_' . $command; - $self->$command (@_); -} - -# Called for a verbatim paragraph. Gets the paragraph, the line number, and -# a Pod::Paragraph object. Just output it verbatim, but with tabs converted -# to spaces. -sub verbatim { - my $self = shift; - return if $$self{EXCLUDE}; - $self->item if defined $$self{ITEM}; - local $_ = shift; - return if /^\s*$/; - s/^(\s*\S+)/(' ' x $$self{MARGIN}) . $1/gme; - $self->output ($_); -} - -# Called for a regular text block. Gets the paragraph, the line number, and -# a Pod::Paragraph object. Perform interpolation and output the results. -sub textblock { - my $self = shift; - return if $$self{EXCLUDE}; - $self->output ($_[0]), return if $$self{VERBATIM}; - local $_ = shift; - my $line = shift; - - # Perform a little magic to collapse multiple L<> references. This is - # here mostly for backwards-compatibility. We'll just rewrite the whole - # thing into actual text at this part, bypassing the whole internal - # sequence parsing thing. - s{ - ( - L< # A link of the form L</something>. - / - ( - [:\w]+ # The item has to be a simple word... - (\(\))? # ...or simple function. - ) - > - ( - ,?\s+(and\s+)? # Allow lots of them, conjuncted. - L< - / - ( - [:\w]+ - (\(\))? - ) - > - )+ - ) - } { - local $_ = $1; - s%L</([^>]+)>%$1%g; - my @items = split /(?:,?\s+(?:and\s+)?)/; - my $string = "the "; - my $i; - for ($i = 0; $i < @items; $i++) { - $string .= $items[$i]; - $string .= ", " if @items > 2 && $i != $#items; - $string .= " and " if ($i == $#items - 1); - } - $string .= " entries elsewhere in this document"; - $string; - }gex; - - # Now actually interpolate and output the paragraph. - $_ = $self->interpolate ($_, $line); - s/\s+$/\n/; - if (defined $$self{ITEM}) { - $self->item ($_ . "\n"); - } else { - $self->output ($self->reformat ($_ . "\n")); - } -} - -# Called for an interior sequence. Gets the command, argument, and a -# Pod::InteriorSequence object and is expected to return the resulting text. -# Calls code, bold, italic, file, and link to handle those types of -# sequences, and handles S<>, E<>, X<>, and Z<> directly. -sub interior_sequence { - my $self = shift; - my $command = shift; - local $_ = shift; - return '' if ($command eq 'X' || $command eq 'Z'); - - # Expand escapes into the actual character now, carping if invalid. - if ($command eq 'E') { - return $ESCAPES{$_} if defined $ESCAPES{$_}; - carp "Unknown escape: E<$_>"; - return "E<$_>"; - } - - # For all the other sequences, empty content produces no output. - return if $_ eq ''; - - # For S<>, compress all internal whitespace and then map spaces to \01. - # When we output the text, we'll map this back. - if ($command eq 'S') { - s/\s{2,}/ /g; - tr/ /\01/; - return $_; - } - - # Anything else needs to get dispatched to another method. - if ($command eq 'B') { return $self->seq_b ($_) } - elsif ($command eq 'C') { return $self->seq_c ($_) } - elsif ($command eq 'F') { return $self->seq_f ($_) } - elsif ($command eq 'I') { return $self->seq_i ($_) } - elsif ($command eq 'L') { return $self->seq_l ($_) } - else { carp "Unknown sequence $command<$_>" } -} - -# Called for each paragraph that's actually part of the POD. We take -# advantage of this opportunity to untabify the input. -sub preprocess_paragraph { - my $self = shift; - local $_ = shift; - 1 while s/^(.*?)(\t+)/$1 . ' ' x (length ($2) * 8 - length ($1) % 8)/me; - $_; -} - - -############################################################################ -# Command paragraphs -############################################################################ - -# All command paragraphs take the paragraph and the line number. - -# First level heading. -sub cmd_head1 { - my $self = shift; - local $_ = shift; - s/\s+$//; - $_ = $self->interpolate ($_, shift); - if ($$self{alt}) { - $self->output ("\n==== $_ ====\n\n"); - } else { - $_ .= "\n" if $$self{loose}; - $self->output ($_ . "\n"); - } -} - -# Second level heading. -sub cmd_head2 { - my $self = shift; - local $_ = shift; - s/\s+$//; - $_ = $self->interpolate ($_, shift); - if ($$self{alt}) { - $self->output ("\n== $_ ==\n\n"); - } else { - $self->output (' ' x ($$self{indent} / 2) . $_ . "\n\n"); - } -} - -# Start a list. -sub cmd_over { - my $self = shift; - local $_ = shift; - unless (/^[-+]?\d+\s+$/) { $_ = $$self{indent} } - push (@{ $$self{INDENTS} }, $$self{MARGIN}); - $$self{MARGIN} += ($_ + 0); -} - -# End a list. -sub cmd_back { - my $self = shift; - $$self{MARGIN} = pop @{ $$self{INDENTS} }; - unless (defined $$self{MARGIN}) { - carp "Unmatched =back"; - $$self{MARGIN} = $$self{indent}; - } -} - -# An individual list item. -sub cmd_item { - my $self = shift; - if (defined $$self{ITEM}) { $self->item } - local $_ = shift; - s/\s+$//; - $$self{ITEM} = $self->interpolate ($_); -} - -# Begin a block for a particular translator. Setting VERBATIM triggers -# special handling in textblock(). -sub cmd_begin { - my $self = shift; - local $_ = shift; - my ($kind) = /^(\S+)/ or return; - if ($kind eq 'text') { - $$self{VERBATIM} = 1; - } else { - $$self{EXCLUDE} = 1; - } -} - -# End a block for a particular translator. We assume that all =begin/=end -# pairs are properly closed. -sub cmd_end { - my $self = shift; - $$self{EXCLUDE} = 0; - $$self{VERBATIM} = 0; -} - -# One paragraph for a particular translator. Ignore it unless it's intended -# for text, in which case we treat it as a verbatim text block. -sub cmd_for { - my $self = shift; - local $_ = shift; - my $line = shift; - return unless s/^text\b[ \t]*\n?//; - $self->verbatim ($_, $line); -} - - -############################################################################ -# Interior sequences -############################################################################ - -# The simple formatting ones. These are here mostly so that subclasses can -# override them and do more complicated things. -sub seq_b { return $_[0]{alt} ? "``$_[1]''" : $_[1] } -sub seq_c { return $_[0]{alt} ? "``$_[1]''" : "`$_[1]'" } -sub seq_f { return $_[0]{alt} ? "\"$_[1]\"" : $_[1] } -sub seq_i { return '*' . $_[1] . '*' } - -# The complicated one. Handle links. Since this is plain text, we can't -# actually make any real links, so this is all to figure out what text we -# print out. -sub seq_l { - my $self = shift; - local $_ = shift; - - # Smash whitespace in case we were split across multiple lines. - s/\s+/ /g; - - # If we were given any explicit text, just output it. - if (/^([^|]+)\|/) { return $1 } - - # Okay, leading and trailing whitespace isn't important; get rid of it. - s/^\s+//; - s/\s+$//; - - # Default to using the whole content of the link entry as a section - # name. Note that L<manpage/> forces a manpage interpretation, as does - # something looking like L<manpage(section)>. The latter is an - # enhancement over the original Pod::Text. - my ($manpage, $section) = ('', $_); - if (/^(?:https?|ftp|news):/) { - # a URL - return $_; - } elsif (/^"\s*(.*?)\s*"$/) { - $section = '"' . $1 . '"'; - } elsif (m/^[-:.\w]+(?:\(\S+\))?$/) { - ($manpage, $section) = ($_, ''); - } elsif (m%/%) { - ($manpage, $section) = split (/\s*\/\s*/, $_, 2); - } - - my $text = ''; - # Now build the actual output text. - if (!length $section) { - $text = "the $manpage manpage" if length $manpage; - } elsif ($section =~ /^[:\w]+(?:\(\))?/) { - $text .= 'the ' . $section . ' entry'; - $text .= (length $manpage) ? " in the $manpage manpage" - : " elsewhere in this document"; - } else { - $section =~ s/^\"\s*//; - $section =~ s/\s*\"$//; - $text .= 'the section on "' . $section . '"'; - $text .= " in the $manpage manpage" if length $manpage; - } - $text; -} - - -############################################################################ -# List handling -############################################################################ - -# This method is called whenever an =item command is complete (in other -# words, we've seen its associated paragraph or know for certain that it -# doesn't have one). It gets the paragraph associated with the item as an -# argument. If that argument is empty, just output the item tag; if it -# contains a newline, output the item tag followed by the newline. -# Otherwise, see if there's enough room for us to output the item tag in the -# margin of the text or if we have to put it on a separate line. -sub item { - my $self = shift; - local $_ = shift; - my $tag = $$self{ITEM}; - unless (defined $tag) { - carp "item called without tag"; - return; - } - undef $$self{ITEM}; - my $indent = $$self{INDENTS}[-1]; - unless (defined $indent) { $indent = $$self{indent} } - my $space = ' ' x $indent; - $space =~ s/^ /:/ if $$self{alt}; - if (!$_ || /^\s+$/ || ($$self{MARGIN} - $indent < length ($tag) + 1)) { - my $margin = $$self{MARGIN}; - $$self{MARGIN} = $indent; - my $output = $self->reformat ($tag); - $output =~ s/\n*$/\n/; - $self->output ($output); - $$self{MARGIN} = $margin; - $self->output ($self->reformat ($_)) if /\S/; - } else { - $_ = $self->reformat ($_); - s/^ /:/ if ($$self{alt} && $indent > 0); - my $tagspace = ' ' x length $tag; - s/^($space)$tagspace/$1$tag/ or warn "Bizarre space in item"; - $self->output ($_); - } -} - - -############################################################################ -# Output formatting -############################################################################ - -# Wrap a line, indenting by the current left margin. We can't use -# Text::Wrap because it plays games with tabs. We can't use formline, even -# though we'd really like to, because it screws up non-printing characters. -# So we have to do the wrapping ourselves. -sub wrap { - my $self = shift; - local $_ = shift; - my $output = ''; - my $spaces = ' ' x $$self{MARGIN}; - my $width = $$self{width} - $$self{MARGIN}; - while (length > $width) { - if (s/^([^\n]{0,$width})\s+// || s/^([^\n]{$width})//) { - $output .= $spaces . $1 . "\n"; - } else { - last; - } - } - $output .= $spaces . $_; - $output =~ s/\s+$/\n\n/; - $output; -} - -# Reformat a paragraph of text for the current margin. Takes the text to -# reformat and returns the formatted text. -sub reformat { - my $self = shift; - local $_ = shift; - - # If we're trying to preserve two spaces after sentences, do some - # munging to support that. Otherwise, smash all repeated whitespace. - if ($$self{sentence}) { - s/ +$//mg; - s/\.\n/. \n/g; - s/\n/ /g; - s/ +/ /g; - } else { - s/\s+/ /g; - } - $self->wrap ($_); -} - -# Output text to the output device. -sub output { $_[1] =~ tr/\01/ /; print { $_[0]->output_handle } $_[1] } - - -############################################################################ -# Backwards compatibility -############################################################################ - -# The old Pod::Text module did everything in a pod2text() function. This -# tries to provide the same interface for legacy applications. -sub pod2text { - my @args; - - # This is really ugly; I hate doing option parsing in the middle of a - # module. But the old Pod::Text module supported passing flags to its - # entry function, so handle -a and -<number>. - while ($_[0] =~ /^-/) { - my $flag = shift; - if ($flag eq '-a') { push (@args, alt => 1) } - elsif ($flag =~ /^-(\d+)$/) { push (@args, width => $1) } - else { - unshift (@_, $flag); - last; - } - } - - # Now that we know what arguments we're using, create the parser. - my $parser = Pod::PlainText->new (@args); - - # If two arguments were given, the second argument is going to be a file - # handle. That means we want to call parse_from_filehandle(), which - # means we need to turn the first argument into a file handle. Magic - # open will handle the <&STDIN case automagically. - if (defined $_[1]) { - local *IN; - unless (open (IN, $_[0])) { - croak ("Can't open $_[0] for reading: $!\n"); - return; - } - $_[0] = \*IN; - return $parser->parse_from_filehandle (@_); - } else { - return $parser->parse_from_file (@_); - } -} - - -############################################################################ -# Module return value and documentation -############################################################################ - -1; -__END__ - -=head1 NAME - -Pod::PlainText - Convert POD data to formatted ASCII text - -=head1 SYNOPSIS - - use Pod::PlainText; - my $parser = Pod::PlainText->new (sentence => 0, width => 78); - - # Read POD from STDIN and write to STDOUT. - $parser->parse_from_filehandle; - - # Read POD from file.pod and write to file.txt. - $parser->parse_from_file ('file.pod', 'file.txt'); - -=head1 DESCRIPTION - -Pod::PlainText is a module that can convert documentation in the POD format (the -preferred language for documenting Perl) into formatted ASCII. It uses no -special formatting controls or codes whatsoever, and its output is therefore -suitable for nearly any device. - -As a derived class from Pod::Parser, Pod::PlainText supports the same methods and -interfaces. See L<Pod::Parser> for all the details; briefly, one creates a -new parser with C<Pod::PlainText-E<gt>new()> and then calls either -parse_from_filehandle() or parse_from_file(). - -new() can take options, in the form of key/value pairs, that control the -behavior of the parser. The currently recognized options are: - -=over 4 - -=item alt - -If set to a true value, selects an alternate output format that, among other -things, uses a different heading style and marks C<=item> entries with a -colon in the left margin. Defaults to false. - -=item indent - -The number of spaces to indent regular text, and the default indentation for -C<=over> blocks. Defaults to 4. - -=item loose - -If set to a true value, a blank line is printed after a C<=head1> heading. -If set to false (the default), no blank line is printed after C<=head1>, -although one is still printed after C<=head2>. This is the default because -it's the expected formatting for manual pages; if you're formatting -arbitrary text documents, setting this to true may result in more pleasing -output. - -=item sentence - -If set to a true value, Pod::PlainText will assume that each sentence ends in two -spaces, and will try to preserve that spacing. If set to false, all -consecutive whitespace in non-verbatim paragraphs is compressed into a -single space. Defaults to true. - -=item width - -The column at which to wrap text on the right-hand side. Defaults to 76. - -=back - -The standard Pod::Parser method parse_from_filehandle() takes up to two -arguments, the first being the file handle to read POD from and the second -being the file handle to write the formatted output to. The first defaults -to STDIN if not given, and the second defaults to STDOUT. The method -parse_from_file() is almost identical, except that its two arguments are the -input and output disk files instead. See L<Pod::Parser> for the specific -details. - -=head1 DIAGNOSTICS - -=over 4 - -=item Bizarre space in item - -(W) Something has gone wrong in internal C<=item> processing. This message -indicates a bug in Pod::PlainText; you should never see it. - -=item Can't open %s for reading: %s - -(F) Pod::PlainText was invoked via the compatibility mode pod2text() interface -and the input file it was given could not be opened. - -=item Unknown escape: %s - -(W) The POD source contained an C<EE<lt>E<gt>> escape that Pod::PlainText didn't -know about. - -=item Unknown sequence: %s - -(W) The POD source contained a non-standard internal sequence (something of -the form C<XE<lt>E<gt>>) that Pod::PlainText didn't know about. - -=item Unmatched =back - -(W) Pod::PlainText encountered a C<=back> command that didn't correspond to an -C<=over> command. - -=back - -=head1 RESTRICTIONS - -Embedded Ctrl-As (octal 001) in the input will be mapped to spaces on -output, due to an internal implementation detail. - -=head1 NOTES - -This is a replacement for an earlier Pod::Text module written by Tom -Christiansen. It has a revamped interface, since it now uses Pod::Parser, -but an interface roughly compatible with the old Pod::Text::pod2text() -function is still available. Please change to the new calling convention, -though. - -The original Pod::Text contained code to do formatting via termcap -sequences, although it wasn't turned on by default and it was problematic to -get it to work at all. This rewrite doesn't even try to do that, but a -subclass of it does. Look for L<Pod::Text::Termcap|Pod::Text::Termcap>. - -=head1 SEE ALSO - -L<Pod::Parser|Pod::Parser>, L<Pod::Text::Termcap|Pod::Text::Termcap>, -pod2text(1) - -=head1 AUTHOR - -Please report bugs using L<http://rt.cpan.org>. - -Russ Allbery E<lt>rra@stanford.eduE<gt>, based I<very> heavily on the -original Pod::Text by Tom Christiansen E<lt>tchrist@mox.perl.comE<gt> and -its conversion to Pod::Parser by Brad Appleton -E<lt>bradapp@enteract.comE<gt>. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Plainer.pm b/Master/tlpkg/tlperl.old/lib/Pod/Plainer.pm deleted file mode 100644 index 373e8d090af..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Plainer.pm +++ /dev/null @@ -1,69 +0,0 @@ -package Pod::Plainer; -use strict; -use Pod::Parser; -our @ISA = qw(Pod::Parser); -our $VERSION = '0.01'; - -our %E = qw( < lt > gt ); - -sub escape_ltgt { - (undef, my $text) = @_; - $text =~ s/([<>])/E<$E{$1}>/g; - $text -} - -sub simple_delimiters { - (undef, my $seq) = @_; - $seq -> left_delimiter( '<' ); - $seq -> right_delimiter( '>' ); - $seq; -} - -sub textblock { - my($parser,$text,$line) = @_; - print {$parser->output_handle()} - $parser->parse_text( - { -expand_text => q(escape_ltgt), - -expand_seq => q(simple_delimiters) }, - $text, $line ) -> raw_text(); -} - -1; - -__END__ - -=head1 NAME - -Pod::Plainer - Perl extension for converting Pod to old style Pod. - -=head1 SYNOPSIS - - use Pod::Plainer; - - my $parser = Pod::Plainer -> new (); - $parser -> parse_from_filehandle(\*STDIN); - -=head1 DESCRIPTION - -Pod::Plainer uses Pod::Parser which takes Pod with the (new) -'CE<lt>E<lt> .. E<gt>E<gt>' constructs -and returns the old(er) style with just 'CE<lt>E<gt>'; -'<' and '>' are replaced by 'EE<lt>ltE<gt>' and 'EE<lt>gtE<gt>'. - -This can be used to pre-process Pod before using tools which do not -recognise the new style Pods. - -=head2 EXPORT - -None by default. - -=head1 AUTHOR - -Robin Barker, rmb1@cise.npl.co.uk - -=head1 SEE ALSO - -See L<Pod::Parser>. - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Select.pm b/Master/tlpkg/tlperl.old/lib/Pod/Select.pm deleted file mode 100644 index 1cc14dff4b6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Select.pm +++ /dev/null @@ -1,754 +0,0 @@ -############################################################################# -# Pod/Select.pm -- function to select portions of POD docs -# -# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved. -# This file is part of "PodParser". PodParser is free software; -# you can redistribute it and/or modify it under the same terms -# as Perl itself. -############################################################################# - -package Pod::Select; - -use vars qw($VERSION); -$VERSION = 1.30; ## Current version of this package -require 5.005; ## requires this Perl version or later - -############################################################################# - -=head1 NAME - -Pod::Select, podselect() - extract selected sections of POD from input - -=head1 SYNOPSIS - - use Pod::Select; - - ## Select all the POD sections for each file in @filelist - ## and print the result on standard output. - podselect(@filelist); - - ## Same as above, but write to tmp.out - podselect({-output => "tmp.out"}, @filelist): - - ## Select from the given filelist, only those POD sections that are - ## within a 1st level section named any of: NAME, SYNOPSIS, OPTIONS. - podselect({-sections => ["NAME|SYNOPSIS", "OPTIONS"]}, @filelist): - - ## Select the "DESCRIPTION" section of the PODs from STDIN and write - ## the result to STDERR. - podselect({-output => ">&STDERR", -sections => ["DESCRIPTION"]}, \*STDIN); - -or - - use Pod::Select; - - ## Create a parser object for selecting POD sections from the input - $parser = new Pod::Select(); - - ## Select all the POD sections for each file in @filelist - ## and print the result to tmp.out. - $parser->parse_from_file("<&STDIN", "tmp.out"); - - ## Select from the given filelist, only those POD sections that are - ## within a 1st level section named any of: NAME, SYNOPSIS, OPTIONS. - $parser->select("NAME|SYNOPSIS", "OPTIONS"); - for (@filelist) { $parser->parse_from_file($_); } - - ## Select the "DESCRIPTION" and "SEE ALSO" sections of the PODs from - ## STDIN and write the result to STDERR. - $parser->select("DESCRIPTION"); - $parser->add_selection("SEE ALSO"); - $parser->parse_from_filehandle(\*STDIN, \*STDERR); - -=head1 REQUIRES - -perl5.005, Pod::Parser, Exporter, Carp - -=head1 EXPORTS - -podselect() - -=head1 DESCRIPTION - -B<podselect()> is a function which will extract specified sections of -pod documentation from an input stream. This ability is provided by the -B<Pod::Select> module which is a subclass of B<Pod::Parser>. -B<Pod::Select> provides a method named B<select()> to specify the set of -POD sections to select for processing/printing. B<podselect()> merely -creates a B<Pod::Select> object and then invokes the B<podselect()> -followed by B<parse_from_file()>. - -=head1 SECTION SPECIFICATIONS - -B<podselect()> and B<Pod::Select::select()> may be given one or more -"section specifications" to restrict the text processed to only the -desired set of sections and their corresponding subsections. A section -specification is a string containing one or more Perl-style regular -expressions separated by forward slashes ("/"). If you need to use a -forward slash literally within a section title you can escape it with a -backslash ("\/"). - -The formal syntax of a section specification is: - -=over 4 - -=item * - -I<head1-title-regex>/I<head2-title-regex>/... - -=back - -Any omitted or empty regular expressions will default to ".*". -Please note that each regular expression given is implicitly -anchored by adding "^" and "$" to the beginning and end. Also, if a -given regular expression starts with a "!" character, then the -expression is I<negated> (so C<!foo> would match anything I<except> -C<foo>). - -Some example section specifications follow. - -=over 4 - -=item * - -Match the C<NAME> and C<SYNOPSIS> sections and all of their subsections: - -C<NAME|SYNOPSIS> - -=item * - -Match only the C<Question> and C<Answer> subsections of the C<DESCRIPTION> -section: - -C<DESCRIPTION/Question|Answer> - -=item * - -Match the C<Comments> subsection of I<all> sections: - -C</Comments> - -=item * - -Match all subsections of C<DESCRIPTION> I<except> for C<Comments>: - -C<DESCRIPTION/!Comments> - -=item * - -Match the C<DESCRIPTION> section but do I<not> match any of its subsections: - -C<DESCRIPTION/!.+> - -=item * - -Match all top level sections but none of their subsections: - -C</!.+> - -=back - -=begin _NOT_IMPLEMENTED_ - -=head1 RANGE SPECIFICATIONS - -B<podselect()> and B<Pod::Select::select()> may be given one or more -"range specifications" to restrict the text processed to only the -desired ranges of paragraphs in the desired set of sections. A range -specification is a string containing a single Perl-style regular -expression (a regex), or else two Perl-style regular expressions -(regexs) separated by a ".." (Perl's "range" operator is ".."). -The regexs in a range specification are delimited by forward slashes -("/"). If you need to use a forward slash literally within a regex you -can escape it with a backslash ("\/"). - -The formal syntax of a range specification is: - -=over 4 - -=item * - -/I<start-range-regex>/[../I<end-range-regex>/] - -=back - -Where each the item inside square brackets (the ".." followed by the -end-range-regex) is optional. Each "range-regex" is of the form: - - =cmd-expr text-expr - -Where I<cmd-expr> is intended to match the name of one or more POD -commands, and I<text-expr> is intended to match the paragraph text for -the command. If a range-regex is supposed to match a POD command, then -the first character of the regex (the one after the initial '/') -absolutely I<must> be a single '=' character; it may not be anything -else (not even a regex meta-character) if it is supposed to match -against the name of a POD command. - -If no I<=cmd-expr> is given then the text-expr will be matched against -plain textblocks unless it is preceded by a space, in which case it is -matched against verbatim text-blocks. If no I<text-expr> is given then -only the command-portion of the paragraph is matched against. - -Note that these two expressions are each implicitly anchored. This -means that when matching against the command-name, there will be an -implicit '^' and '$' around the given I<=cmd-expr>; and when matching -against the paragraph text there will be an implicit '\A' and '\Z' -around the given I<text-expr>. - -Unlike with section-specs, the '!' character does I<not> have any special -meaning (negation or otherwise) at the beginning of a range-spec! - -Some example range specifications follow. - -=over 4 - -=item -Match all C<=for html> paragraphs: - -C</=for html/> - -=item -Match all paragraphs between C<=begin html> and C<=end html> -(note that this will I<not> work correctly if such sections -are nested): - -C</=begin html/../=end html/> - -=item -Match all paragraphs between the given C<=item> name until the end of the -current section: - -C</=item mine/../=head\d/> - -=item -Match all paragraphs between the given C<=item> until the next item, or -until the end of the itemized list (note that this will I<not> work as -desired if the item contains an itemized list nested within it): - -C</=item mine/../=(item|back)/> - -=back - -=end _NOT_IMPLEMENTED_ - -=cut - -############################################################################# - -use strict; -#use diagnostics; -use Carp; -use Pod::Parser 1.04; -use vars qw(@ISA @EXPORT $MAX_HEADING_LEVEL); - -@ISA = qw(Pod::Parser); -@EXPORT = qw(&podselect); - -## Maximum number of heading levels supported for '=headN' directives -*MAX_HEADING_LEVEL = \3; - -############################################################################# - -=head1 OBJECT METHODS - -The following methods are provided in this module. Each one takes a -reference to the object itself as an implicit first parameter. - -=cut - -##--------------------------------------------------------------------------- - -## =begin _PRIVATE_ -## -## =head1 B<_init_headings()> -## -## Initialize the current set of active section headings. -## -## =cut -## -## =end _PRIVATE_ - -use vars qw(%myData @section_headings); - -sub _init_headings { - my $self = shift; - local *myData = $self; - - ## Initialize current section heading titles if necessary - unless (defined $myData{_SECTION_HEADINGS}) { - local *section_headings = $myData{_SECTION_HEADINGS} = []; - for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) { - $section_headings[$i] = ''; - } - } -} - -##--------------------------------------------------------------------------- - -=head1 B<curr_headings()> - - ($head1, $head2, $head3, ...) = $parser->curr_headings(); - $head1 = $parser->curr_headings(1); - -This method returns a list of the currently active section headings and -subheadings in the document being parsed. The list of headings returned -corresponds to the most recently parsed paragraph of the input. - -If an argument is given, it must correspond to the desired section -heading number, in which case only the specified section heading is -returned. If there is no current section heading at the specified -level, then C<undef> is returned. - -=cut - -sub curr_headings { - my $self = shift; - $self->_init_headings() unless (defined $self->{_SECTION_HEADINGS}); - my @headings = @{ $self->{_SECTION_HEADINGS} }; - return (@_ > 0 and $_[0] =~ /^\d+$/) ? $headings[$_[0] - 1] : @headings; -} - -##--------------------------------------------------------------------------- - -=head1 B<select()> - - $parser->select($section_spec1,$section_spec2,...); - -This method is used to select the particular sections and subsections of -POD documentation that are to be printed and/or processed. The existing -set of selected sections is I<replaced> with the given set of sections. -See B<add_selection()> for adding to the current set of selected -sections. - -Each of the C<$section_spec> arguments should be a section specification -as described in L<"SECTION SPECIFICATIONS">. The section specifications -are parsed by this method and the resulting regular expressions are -stored in the invoking object. - -If no C<$section_spec> arguments are given, then the existing set of -selected sections is cleared out (which means C<all> sections will be -processed). - -This method should I<not> normally be overridden by subclasses. - -=cut - -use vars qw(@selected_sections); - -sub select { - my $self = shift; - my @sections = @_; - local *myData = $self; - local $_; - -### NEED TO DISCERN A SECTION-SPEC FROM A RANGE-SPEC (look for m{^/.+/$}?) - - ##--------------------------------------------------------------------- - ## The following is a blatant hack for backward compatibility, and for - ## implementing add_selection(). If the *first* *argument* is the - ## string "+", then the remaining section specifications are *added* - ## to the current set of selections; otherwise the given section - ## specifications will *replace* the current set of selections. - ## - ## This should probably be fixed someday, but for the present time, - ## it seems incredibly unlikely that "+" would ever correspond to - ## a legitimate section heading - ##--------------------------------------------------------------------- - my $add = ($sections[0] eq "+") ? shift(@sections) : ""; - - ## Reset the set of sections to use - unless (@sections > 0) { - delete $myData{_SELECTED_SECTIONS} unless ($add); - return; - } - $myData{_SELECTED_SECTIONS} = [] - unless ($add && exists $myData{_SELECTED_SECTIONS}); - local *selected_sections = $myData{_SELECTED_SECTIONS}; - - ## Compile each spec - my $spec; - for $spec (@sections) { - if ( defined($_ = &_compile_section_spec($spec)) ) { - ## Store them in our sections array - push(@selected_sections, $_); - } - else { - carp "Ignoring section spec \"$spec\"!\n"; - } - } -} - -##--------------------------------------------------------------------------- - -=head1 B<add_selection()> - - $parser->add_selection($section_spec1,$section_spec2,...); - -This method is used to add to the currently selected sections and -subsections of POD documentation that are to be printed and/or -processed. See <select()> for replacing the currently selected sections. - -Each of the C<$section_spec> arguments should be a section specification -as described in L<"SECTION SPECIFICATIONS">. The section specifications -are parsed by this method and the resulting regular expressions are -stored in the invoking object. - -This method should I<not> normally be overridden by subclasses. - -=cut - -sub add_selection { - my $self = shift; - $self->select("+", @_); -} - -##--------------------------------------------------------------------------- - -=head1 B<clear_selections()> - - $parser->clear_selections(); - -This method takes no arguments, it has the exact same effect as invoking -<select()> with no arguments. - -=cut - -sub clear_selections { - my $self = shift; - $self->select(); -} - -##--------------------------------------------------------------------------- - -=head1 B<match_section()> - - $boolean = $parser->match_section($heading1,$heading2,...); - -Returns a value of true if the given section and subsection heading -titles match any of the currently selected section specifications in -effect from prior calls to B<select()> and B<add_selection()> (or if -there are no explictly selected/deselected sections). - -The arguments C<$heading1>, C<$heading2>, etc. are the heading titles of -the corresponding sections, subsections, etc. to try and match. If -C<$headingN> is omitted then it defaults to the current corresponding -section heading title in the input. - -This method should I<not> normally be overridden by subclasses. - -=cut - -sub match_section { - my $self = shift; - my (@headings) = @_; - local *myData = $self; - - ## Return true if no restrictions were explicitly specified - my $selections = (exists $myData{_SELECTED_SECTIONS}) - ? $myData{_SELECTED_SECTIONS} : undef; - return 1 unless ((defined $selections) && (@{$selections} > 0)); - - ## Default any unspecified sections to the current one - my @current_headings = $self->curr_headings(); - for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) { - (defined $headings[$i]) or $headings[$i] = $current_headings[$i]; - } - - ## Look for a match against the specified section expressions - my ($section_spec, $regex, $negated, $match); - for $section_spec ( @{$selections} ) { - ##------------------------------------------------------ - ## Each portion of this spec must match in order for - ## the spec to be matched. So we will start with a - ## match-value of 'true' and logically 'and' it with - ## the results of matching a given element of the spec. - ##------------------------------------------------------ - $match = 1; - for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) { - $regex = $section_spec->[$i]; - $negated = ($regex =~ s/^\!//); - $match &= ($negated ? ($headings[$i] !~ /${regex}/) - : ($headings[$i] =~ /${regex}/)); - last unless ($match); - } - return 1 if ($match); - } - return 0; ## no match -} - -##--------------------------------------------------------------------------- - -=head1 B<is_selected()> - - $boolean = $parser->is_selected($paragraph); - -This method is used to determine if the block of text given in -C<$paragraph> falls within the currently selected set of POD sections -and subsections to be printed or processed. This method is also -responsible for keeping track of the current input section and -subsections. It is assumed that C<$paragraph> is the most recently read -(but not yet processed) input paragraph. - -The value returned will be true if the C<$paragraph> and the rest of the -text in the same section as C<$paragraph> should be selected (included) -for processing; otherwise a false value is returned. - -=cut - -sub is_selected { - my ($self, $paragraph) = @_; - local $_; - local *myData = $self; - - $self->_init_headings() unless (defined $myData{_SECTION_HEADINGS}); - - ## Keep track of current sections levels and headings - $_ = $paragraph; - if (/^=((?:sub)*)(?:head(?:ing)?|sec(?:tion)?)(\d*)\s+(.*)\s*$/) - { - ## This is a section heading command - my ($level, $heading) = ($2, $3); - $level = 1 + (length($1) / 3) if ((! length $level) || (length $1)); - ## Reset the current section heading at this level - $myData{_SECTION_HEADINGS}->[$level - 1] = $heading; - ## Reset subsection headings of this one to empty - for (my $i = $level; $i < $MAX_HEADING_LEVEL; ++$i) { - $myData{_SECTION_HEADINGS}->[$i] = ''; - } - } - - return $self->match_section(); -} - -############################################################################# - -=head1 EXPORTED FUNCTIONS - -The following functions are exported by this module. Please note that -these are functions (not methods) and therefore C<do not> take an -implicit first argument. - -=cut - -##--------------------------------------------------------------------------- - -=head1 B<podselect()> - - podselect(\%options,@filelist); - -B<podselect> will print the raw (untranslated) POD paragraphs of all -POD sections in the given input files specified by C<@filelist> -according to the given options. - -If any argument to B<podselect> is a reference to a hash -(associative array) then the values with the following keys are -processed as follows: - -=over 4 - -=item B<-output> - -A string corresponding to the desired output file (or ">&STDOUT" -or ">&STDERR"). The default is to use standard output. - -=item B<-sections> - -A reference to an array of sections specifications (as described in -L<"SECTION SPECIFICATIONS">) which indicate the desired set of POD -sections and subsections to be selected from input. If no section -specifications are given, then all sections of the PODs are used. - -=begin _NOT_IMPLEMENTED_ - -=item B<-ranges> - -A reference to an array of range specifications (as described in -L<"RANGE SPECIFICATIONS">) which indicate the desired range of POD -paragraphs to be selected from the desired input sections. If no range -specifications are given, then all paragraphs of the desired sections -are used. - -=end _NOT_IMPLEMENTED_ - -=back - -All other arguments should correspond to the names of input files -containing POD sections. A file name of "-" or "<&STDIN" will -be interpeted to mean standard input (which is the default if no -filenames are given). - -=cut - -sub podselect { - my(@argv) = @_; - my %defaults = (); - my $pod_parser = new Pod::Select(%defaults); - my $num_inputs = 0; - my $output = ">&STDOUT"; - my %opts; - local $_; - for (@argv) { - if (ref($_)) { - next unless (ref($_) eq 'HASH'); - %opts = (%defaults, %{$_}); - - ##------------------------------------------------------------- - ## Need this for backward compatibility since we formerly used - ## options that were all uppercase words rather than ones that - ## looked like Unix command-line options. - ## to be uppercase keywords) - ##------------------------------------------------------------- - %opts = map { - my ($key, $val) = (lc $_, $opts{$_}); - $key =~ s/^(?=\w)/-/; - $key =~ /^-se[cl]/ and $key = '-sections'; - #! $key eq '-range' and $key .= 's'; - ($key => $val); - } (keys %opts); - - ## Process the options - (exists $opts{'-output'}) and $output = $opts{'-output'}; - - ## Select the desired sections - $pod_parser->select(@{ $opts{'-sections'} }) - if ( (defined $opts{'-sections'}) - && ((ref $opts{'-sections'}) eq 'ARRAY') ); - - #! ## Select the desired paragraph ranges - #! $pod_parser->select(@{ $opts{'-ranges'} }) - #! if ( (defined $opts{'-ranges'}) - #! && ((ref $opts{'-ranges'}) eq 'ARRAY') ); - } - else { - $pod_parser->parse_from_file($_, $output); - ++$num_inputs; - } - } - $pod_parser->parse_from_file("-") unless ($num_inputs > 0); -} - -############################################################################# - -=head1 PRIVATE METHODS AND DATA - -B<Pod::Select> makes uses a number of internal methods and data fields -which clients should not need to see or use. For the sake of avoiding -name collisions with client data and methods, these methods and fields -are briefly discussed here. Determined hackers may obtain further -information about them by reading the B<Pod::Select> source code. - -Private data fields are stored in the hash-object whose reference is -returned by the B<new()> constructor for this class. The names of all -private methods and data-fields used by B<Pod::Select> begin with a -prefix of "_" and match the regular expression C</^_\w+$/>. - -=cut - -##--------------------------------------------------------------------------- - -=begin _PRIVATE_ - -=head1 B<_compile_section_spec()> - - $listref = $parser->_compile_section_spec($section_spec); - -This function (note it is a function and I<not> a method) takes a -section specification (as described in L<"SECTION SPECIFICATIONS">) -given in C<$section_sepc>, and compiles it into a list of regular -expressions. If C<$section_spec> has no syntax errors, then a reference -to the list (array) of corresponding regular expressions is returned; -otherwise C<undef> is returned and an error message is printed (using -B<carp>) for each invalid regex. - -=end _PRIVATE_ - -=cut - -sub _compile_section_spec { - my ($section_spec) = @_; - my (@regexs, $negated); - - ## Compile the spec into a list of regexs - local $_ = $section_spec; - s|\\\\|\001|g; ## handle escaped backward slashes - s|\\/|\002|g; ## handle escaped forward slashes - - ## Parse the regexs for the heading titles - @regexs = split('/', $_, $MAX_HEADING_LEVEL); - - ## Set default regex for ommitted levels - for (my $i = 0; $i < $MAX_HEADING_LEVEL; ++$i) { - $regexs[$i] = '.*' unless ((defined $regexs[$i]) - && (length $regexs[$i])); - } - ## Modify the regexs as needed and validate their syntax - my $bad_regexs = 0; - for (@regexs) { - $_ .= '.+' if ($_ eq '!'); - s|\001|\\\\|g; ## restore escaped backward slashes - s|\002|\\/|g; ## restore escaped forward slashes - $negated = s/^\!//; ## check for negation - eval "/$_/"; ## check regex syntax - if ($@) { - ++$bad_regexs; - carp "Bad regular expression /$_/ in \"$section_spec\": $@\n"; - } - else { - ## Add the forward and rear anchors (and put the negator back) - $_ = '^' . $_ unless (/^\^/); - $_ = $_ . '$' unless (/\$$/); - $_ = '!' . $_ if ($negated); - } - } - return (! $bad_regexs) ? [ @regexs ] : undef; -} - -##--------------------------------------------------------------------------- - -=begin _PRIVATE_ - -=head2 $self->{_SECTION_HEADINGS} - -A reference to an array of the current section heading titles for each -heading level (note that the first heading level title is at index 0). - -=end _PRIVATE_ - -=cut - -##--------------------------------------------------------------------------- - -=begin _PRIVATE_ - -=head2 $self->{_SELECTED_SECTIONS} - -A reference to an array of references to arrays. Each subarray is a list -of anchored regular expressions (preceded by a "!" if the expression is to -be negated). The index of the expression in the subarray should correspond -to the index of the heading title in C<$self-E<gt>{_SECTION_HEADINGS}> -that it is to be matched against. - -=end _PRIVATE_ - -=cut - -############################################################################# - -=head1 SEE ALSO - -L<Pod::Parser> - -=head1 AUTHOR - -Please report bugs using L<http://rt.cpan.org>. - -Brad Appleton E<lt>bradapp@enteract.comE<gt> - -Based on code for B<pod2text> written by -Tom Christiansen E<lt>tchrist@mox.perl.comE<gt> - -=cut - -1; -# vim: ts=4 sw=4 et diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Text.pm b/Master/tlpkg/tlperl.old/lib/Pod/Text.pm deleted file mode 100644 index 1028f2e9e1b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Text.pm +++ /dev/null @@ -1,848 +0,0 @@ -# Pod::Text -- Convert POD data to formatted ASCII text. -# $Id: Text.pm,v 2.21 2002/08/04 03:34:58 eagle Exp $ -# -# Copyright 1999, 2000, 2001, 2002 by Russ Allbery <rra@stanford.edu> -# -# This program is free software; you may redistribute it and/or modify it -# under the same terms as Perl itself. -# -# This module converts POD to formatted text. It replaces the old Pod::Text -# module that came with versions of Perl prior to 5.6.0 and attempts to match -# its output except for some specific circumstances where other decisions -# seemed to produce better output. It uses Pod::Parser and is designed to be -# very easy to subclass. -# -# Perl core hackers, please note that this module is also separately -# maintained outside of the Perl core as part of the podlators. Please send -# me any patches at the address above in addition to sending them to the -# standard Perl mailing lists. - -############################################################################## -# Modules and declarations -############################################################################## - -package Pod::Text; - -require 5.004; - -use Carp qw(carp croak); -use Exporter (); -use Pod::ParseLink qw(parselink); -use Pod::Select (); - -use strict; -use vars qw(@ISA @EXPORT %ESCAPES $VERSION); - -# We inherit from Pod::Select instead of Pod::Parser so that we can be used by -# Pod::Usage. -@ISA = qw(Pod::Select Exporter); - -# We have to export pod2text for backward compatibility. -@EXPORT = qw(pod2text); - -# Don't use the CVS revision as the version, since this module is also in Perl -# core and too many things could munge CVS magic revision strings. This -# number should ideally be the same as the CVS revision in podlators, however. -$VERSION = 2.21; - - -############################################################################## -# Table of supported E<> escapes -############################################################################## - -# This table is taken near verbatim from Pod::PlainText in Pod::Parser, which -# got it near verbatim from the original Pod::Text. It is therefore credited -# to Tom Christiansen, and I'm glad I didn't have to write it. :) "iexcl" to -# "divide" added by Tim Jenness. -%ESCAPES = ( - 'amp' => '&', # ampersand - 'apos' => "'", # apostrophe - 'lt' => '<', # left chevron, less-than - 'gt' => '>', # right chevron, greater-than - 'quot' => '"', # double quote - 'sol' => '/', # solidus (forward slash) - 'verbar' => '|', # vertical bar - - "Aacute" => "\xC1", # capital A, acute accent - "aacute" => "\xE1", # small a, acute accent - "Acirc" => "\xC2", # capital A, circumflex accent - "acirc" => "\xE2", # small a, circumflex accent - "AElig" => "\xC6", # capital AE diphthong (ligature) - "aelig" => "\xE6", # small ae diphthong (ligature) - "Agrave" => "\xC0", # capital A, grave accent - "agrave" => "\xE0", # small a, grave accent - "Aring" => "\xC5", # capital A, ring - "aring" => "\xE5", # small a, ring - "Atilde" => "\xC3", # capital A, tilde - "atilde" => "\xE3", # small a, tilde - "Auml" => "\xC4", # capital A, dieresis or umlaut mark - "auml" => "\xE4", # small a, dieresis or umlaut mark - "Ccedil" => "\xC7", # capital C, cedilla - "ccedil" => "\xE7", # small c, cedilla - "Eacute" => "\xC9", # capital E, acute accent - "eacute" => "\xE9", # small e, acute accent - "Ecirc" => "\xCA", # capital E, circumflex accent - "ecirc" => "\xEA", # small e, circumflex accent - "Egrave" => "\xC8", # capital E, grave accent - "egrave" => "\xE8", # small e, grave accent - "ETH" => "\xD0", # capital Eth, Icelandic - "eth" => "\xF0", # small eth, Icelandic - "Euml" => "\xCB", # capital E, dieresis or umlaut mark - "euml" => "\xEB", # small e, dieresis or umlaut mark - "Iacute" => "\xCD", # capital I, acute accent - "iacute" => "\xED", # small i, acute accent - "Icirc" => "\xCE", # capital I, circumflex accent - "icirc" => "\xEE", # small i, circumflex accent - "Igrave" => "\xCC", # capital I, grave accent - "igrave" => "\xEC", # small i, grave accent - "Iuml" => "\xCF", # capital I, dieresis or umlaut mark - "iuml" => "\xEF", # small i, dieresis or umlaut mark - "Ntilde" => "\xD1", # capital N, tilde - "ntilde" => "\xF1", # small n, tilde - "Oacute" => "\xD3", # capital O, acute accent - "oacute" => "\xF3", # small o, acute accent - "Ocirc" => "\xD4", # capital O, circumflex accent - "ocirc" => "\xF4", # small o, circumflex accent - "Ograve" => "\xD2", # capital O, grave accent - "ograve" => "\xF2", # small o, grave accent - "Oslash" => "\xD8", # capital O, slash - "oslash" => "\xF8", # small o, slash - "Otilde" => "\xD5", # capital O, tilde - "otilde" => "\xF5", # small o, tilde - "Ouml" => "\xD6", # capital O, dieresis or umlaut mark - "ouml" => "\xF6", # small o, dieresis or umlaut mark - "szlig" => "\xDF", # small sharp s, German (sz ligature) - "THORN" => "\xDE", # capital THORN, Icelandic - "thorn" => "\xFE", # small thorn, Icelandic - "Uacute" => "\xDA", # capital U, acute accent - "uacute" => "\xFA", # small u, acute accent - "Ucirc" => "\xDB", # capital U, circumflex accent - "ucirc" => "\xFB", # small u, circumflex accent - "Ugrave" => "\xD9", # capital U, grave accent - "ugrave" => "\xF9", # small u, grave accent - "Uuml" => "\xDC", # capital U, dieresis or umlaut mark - "uuml" => "\xFC", # small u, dieresis or umlaut mark - "Yacute" => "\xDD", # capital Y, acute accent - "yacute" => "\xFD", # small y, acute accent - "yuml" => "\xFF", # small y, dieresis or umlaut mark - - "laquo" => "\xAB", # left pointing double angle quotation mark - "lchevron" => "\xAB", # synonym (backwards compatibility) - "raquo" => "\xBB", # right pointing double angle quotation mark - "rchevron" => "\xBB", # synonym (backwards compatibility) - - "iexcl" => "\xA1", # inverted exclamation mark - "cent" => "\xA2", # cent sign - "pound" => "\xA3", # (UK) pound sign - "curren" => "\xA4", # currency sign - "yen" => "\xA5", # yen sign - "brvbar" => "\xA6", # broken vertical bar - "sect" => "\xA7", # section sign - "uml" => "\xA8", # diaresis - "copy" => "\xA9", # Copyright symbol - "ordf" => "\xAA", # feminine ordinal indicator - "not" => "\xAC", # not sign - "shy" => '', # soft (discretionary) hyphen - "reg" => "\xAE", # registered trademark - "macr" => "\xAF", # macron, overline - "deg" => "\xB0", # degree sign - "plusmn" => "\xB1", # plus-minus sign - "sup2" => "\xB2", # superscript 2 - "sup3" => "\xB3", # superscript 3 - "acute" => "\xB4", # acute accent - "micro" => "\xB5", # micro sign - "para" => "\xB6", # pilcrow sign = paragraph sign - "middot" => "\xB7", # middle dot = Georgian comma - "cedil" => "\xB8", # cedilla - "sup1" => "\xB9", # superscript 1 - "ordm" => "\xBA", # masculine ordinal indicator - "frac14" => "\xBC", # vulgar fraction one quarter - "frac12" => "\xBD", # vulgar fraction one half - "frac34" => "\xBE", # vulgar fraction three quarters - "iquest" => "\xBF", # inverted question mark - "times" => "\xD7", # multiplication sign - "divide" => "\xF7", # division sign - - "nbsp" => "\x01", # non-breaking space -); - - -############################################################################## -# Initialization -############################################################################## - -# Initialize the object. Must be sure to call our parent initializer. -sub initialize { - my $self = shift; - - $$self{alt} = 0 unless defined $$self{alt}; - $$self{indent} = 4 unless defined $$self{indent}; - $$self{margin} = 0 unless defined $$self{margin}; - $$self{loose} = 0 unless defined $$self{loose}; - $$self{sentence} = 0 unless defined $$self{sentence}; - $$self{width} = 76 unless defined $$self{width}; - - # Figure out what quotes we'll be using for C<> text. - $$self{quotes} ||= '"'; - if ($$self{quotes} eq 'none') { - $$self{LQUOTE} = $$self{RQUOTE} = ''; - } elsif (length ($$self{quotes}) == 1) { - $$self{LQUOTE} = $$self{RQUOTE} = $$self{quotes}; - } elsif ($$self{quotes} =~ /^(.)(.)$/ - || $$self{quotes} =~ /^(..)(..)$/) { - $$self{LQUOTE} = $1; - $$self{RQUOTE} = $2; - } else { - croak qq(Invalid quote specification "$$self{quotes}"); - } - - # Stack of indentations. - $$self{INDENTS} = []; - - # Current left margin. - $$self{MARGIN} = $$self{indent} + $$self{margin}; - - $self->SUPER::initialize; - - # Tell Pod::Parser that we want the non-POD stuff too if code was set. - $self->parseopts ('-want_nonPODs' => 1) if $$self{code}; -} - - -############################################################################## -# Core overrides -############################################################################## - -# Called for each command paragraph. Gets the command, the associated -# paragraph, the line number, and a Pod::Paragraph object. Just dispatches -# the command to a method named the same as the command. =cut is handled -# internally by Pod::Parser. -sub command { - my $self = shift; - my $command = shift; - return if $command eq 'pod'; - return if ($$self{EXCLUDE} && $command ne 'end'); - if ($self->can ('cmd_' . $command)) { - $command = 'cmd_' . $command; - $self->$command (@_); - } else { - my ($text, $line, $paragraph) = @_; - my $file; - ($file, $line) = $paragraph->file_line; - $text =~ s/\n+\z//; - $text = " $text" if ($text =~ /^\S/); - warn qq($file:$line: Unknown command paragraph: =$command$text\n); - return; - } -} - -# Called for a verbatim paragraph. Gets the paragraph, the line number, and a -# Pod::Paragraph object. Just output it verbatim, but with tabs converted to -# spaces. -sub verbatim { - my $self = shift; - return if $$self{EXCLUDE}; - $self->item if defined $$self{ITEM}; - local $_ = shift; - return if /^\s*$/; - s/^(\s*\S+)/(' ' x $$self{MARGIN}) . $1/gme; - $self->output ($_); -} - -# Called for a regular text block. Gets the paragraph, the line number, and a -# Pod::Paragraph object. Perform interpolation and output the results. -sub textblock { - my $self = shift; - return if $$self{EXCLUDE}; - $self->output ($_[0]), return if $$self{VERBATIM}; - local $_ = shift; - my $line = shift; - - # Interpolate and output the paragraph. - $_ = $self->interpolate ($_, $line); - s/\s+$/\n/; - if (defined $$self{ITEM}) { - $self->item ($_ . "\n"); - } else { - $self->output ($self->reformat ($_ . "\n")); - } -} - -# Called for a formatting code. Gets the command, argument, and a -# Pod::InteriorSequence object and is expected to return the resulting text. -# Calls methods for code, bold, italic, file, and link to handle those types -# of codes, and handles S<>, E<>, X<>, and Z<> directly. -sub interior_sequence { - local $_; - my ($self, $command, $seq); - ($self, $command, $_, $seq) = @_; - - # We have to defer processing of the inside of an L<> formatting code. If - # this code is nested inside an L<> code, return the literal raw text of - # it. - my $parent = $seq->nested; - while (defined $parent) { - return $seq->raw_text if ($parent->cmd_name eq 'L'); - $parent = $parent->nested; - } - - # Index entries are ignored in plain text. - return '' if ($command eq 'X' || $command eq 'Z'); - - # Expand escapes into the actual character now, warning if invalid. - if ($command eq 'E') { - if (/^\d+$/) { - return chr; - } else { - return $ESCAPES{$_} if defined $ESCAPES{$_}; - my ($file, $line) = $seq->file_line; - warn "$file:$line: Unknown escape: E<$_>\n"; - return "E<$_>"; - } - } - - # For all the other formatting codes, empty content produces no output. - return if $_ eq ''; - - # For S<>, compress all internal whitespace and then map spaces to \01. - # When we output the text, we'll map this back. - if ($command eq 'S') { - s/\s+/ /g; - tr/ /\01/; - return $_; - } - - # Anything else needs to get dispatched to another method. - if ($command eq 'B') { return $self->seq_b ($_) } - elsif ($command eq 'C') { return $self->seq_c ($_) } - elsif ($command eq 'F') { return $self->seq_f ($_) } - elsif ($command eq 'I') { return $self->seq_i ($_) } - elsif ($command eq 'L') { return $self->seq_l ($_, $seq) } - else { - my ($file, $line) = $seq->file_line; - warn "$file:$line: Unknown formatting code: $command<$_>\n"; - } -} - -# Called for each paragraph that's actually part of the POD. We take -# advantage of this opportunity to untabify the input. Also, if given the -# code option, we may see paragraphs that aren't part of the POD and need to -# output them directly. -sub preprocess_paragraph { - my $self = shift; - local $_ = shift; - 1 while s/^(.*?)(\t+)/$1 . ' ' x (length ($2) * 8 - length ($1) % 8)/me; - $self->output_code ($_) if $self->cutting; - $_; -} - - -############################################################################## -# Command paragraphs -############################################################################## - -# All command paragraphs take the paragraph and the line number. - -# First level heading. -sub cmd_head1 { - my ($self, $text, $line) = @_; - $self->heading ($text, $line, 0, '===='); -} - -# Second level heading. -sub cmd_head2 { - my ($self, $text, $line) = @_; - $self->heading ($text, $line, $$self{indent} / 2, '== '); -} - -# Third level heading. -sub cmd_head3 { - my ($self, $text, $line) = @_; - $self->heading ($text, $line, $$self{indent} * 2 / 3 + 0.5, '= '); -} - -# Third level heading. -sub cmd_head4 { - my ($self, $text, $line) = @_; - $self->heading ($text, $line, $$self{indent} * 3 / 4 + 0.5, '- '); -} - -# Start a list. -sub cmd_over { - my $self = shift; - local $_ = shift; - $self->item ("\n\n") if defined $$self{ITEM}; - unless (/^[-+]?\d+\s+$/) { $_ = $$self{indent} } - push (@{ $$self{INDENTS} }, $$self{MARGIN}); - $$self{MARGIN} += ($_ + 0); -} - -# End a list. -sub cmd_back { - my ($self, $text, $line, $paragraph) = @_; - $self->item ("\n\n") if defined $$self{ITEM}; - $$self{MARGIN} = pop @{ $$self{INDENTS} }; - unless (defined $$self{MARGIN}) { - my $file; - ($file, $line) = $paragraph->file_line; - warn "$file:$line: Unmatched =back\n"; - $$self{MARGIN} = $$self{indent}; - } -} - -# An individual list item. -sub cmd_item { - my $self = shift; - if (defined $$self{ITEM}) { $self->item } - local $_ = shift; - s/\s+$//; - $$self{ITEM} = $_ ? $self->interpolate ($_) : '*'; -} - -# Begin a block for a particular translator. Setting VERBATIM triggers -# special handling in textblock(). -sub cmd_begin { - my $self = shift; - local $_ = shift; - my ($kind) = /^(\S+)/ or return; - if ($kind eq 'text') { - $$self{VERBATIM} = 1; - } else { - $$self{EXCLUDE} = 1; - } -} - -# End a block for a particular translator. We assume that all =begin/=end -# pairs are properly closed. -sub cmd_end { - my $self = shift; - $$self{EXCLUDE} = 0; - $$self{VERBATIM} = 0; -} - -# One paragraph for a particular translator. Ignore it unless it's intended -# for text, in which case we treat it as a verbatim text block. -sub cmd_for { - my $self = shift; - local $_ = shift; - my $line = shift; - return unless s/^text\b[ \t]*\n?//; - $self->verbatim ($_, $line); -} - - -############################################################################## -# Formatting codes -############################################################################## - -# The simple ones. These are here mostly so that subclasses can override them -# and do more complicated things. -sub seq_b { return $_[0]{alt} ? "``$_[1]''" : $_[1] } -sub seq_f { return $_[0]{alt} ? "\"$_[1]\"" : $_[1] } -sub seq_i { return '*' . $_[1] . '*' } - -# Apply a whole bunch of messy heuristics to not quote things that don't -# benefit from being quoted. These originally come from Barrie Slaymaker and -# largely duplicate code in Pod::Man. -sub seq_c { - my $self = shift; - local $_ = shift; - - # A regex that matches the portion of a variable reference that's the - # array or hash index, separated out just because we want to use it in - # several places in the following regex. - my $index = '(?: \[.*\] | \{.*\} )?'; - - # Check for things that we don't want to quote, and if we find any of - # them, return the string with just a font change and no quoting. - m{ - ^\s* - (?: - ( [\'\`\"] ) .* \1 # already quoted - | \` .* \' # `quoted' - | \$+ [\#^]? \S $index # special ($^Foo, $") - | [\$\@%&*]+ \#? [:\'\w]+ $index # plain var or func - | [\$\@%&*]* [:\'\w]+ (?: -> )? \(\s*[^\s,]\s*\) # 0/1-arg func call - | [+-]? ( \d[\d.]* | \.\d+ ) (?: [eE][+-]?\d+ )? # a number - | 0x [a-fA-F\d]+ # a hex constant - ) - \s*\z - }xo && return $_; - - # If we didn't return, go ahead and quote the text. - return $$self{alt} ? "``$_''" : "$$self{LQUOTE}$_$$self{RQUOTE}"; -} - -# Handle links. Since this is plain text, we can't actually make any real -# links, so this is all to figure out what text we print out. Most of the -# work is done by Pod::ParseLink. -sub seq_l { - my ($self, $link, $seq) = @_; - my ($text, $type) = (parselink ($link))[1,4]; - my ($file, $line) = $seq->file_line; - $text = $self->interpolate ($text, $line); - $text = '<' . $text . '>' if $type eq 'url'; - return $text || ''; -} - - -############################################################################## -# Header handling -############################################################################## - -# The common code for handling all headers. Takes the interpolated header -# text, the line number, the indentation, and the surrounding marker for the -# alt formatting method. -sub heading { - my ($self, $text, $line, $indent, $marker) = @_; - $self->item ("\n\n") if defined $$self{ITEM}; - $text =~ s/\s+$//; - $text = $self->interpolate ($text, $line); - if ($$self{alt}) { - my $closemark = reverse (split (//, $marker)); - my $margin = ' ' x $$self{margin}; - $self->output ("\n" . "$margin$marker $text $closemark" . "\n\n"); - } else { - $text .= "\n" if $$self{loose}; - my $margin = ' ' x ($$self{margin} + $indent); - $self->output ($margin . $text . "\n"); - } -} - - -############################################################################## -# List handling -############################################################################## - -# This method is called whenever an =item command is complete (in other words, -# we've seen its associated paragraph or know for certain that it doesn't have -# one). It gets the paragraph associated with the item as an argument. If -# that argument is empty, just output the item tag; if it contains a newline, -# output the item tag followed by the newline. Otherwise, see if there's -# enough room for us to output the item tag in the margin of the text or if we -# have to put it on a separate line. -sub item { - my $self = shift; - local $_ = shift; - my $tag = $$self{ITEM}; - unless (defined $tag) { - carp "Item called without tag"; - return; - } - undef $$self{ITEM}; - my $indent = $$self{INDENTS}[-1]; - unless (defined $indent) { $indent = $$self{indent} } - my $margin = ' ' x $$self{margin}; - if (!$_ || /^\s+$/ || ($$self{MARGIN} - $indent < length ($tag) + 1)) { - my $realindent = $$self{MARGIN}; - $$self{MARGIN} = $indent; - my $output = $self->reformat ($tag); - $output =~ s/^$margin /$margin:/ if ($$self{alt} && $indent > 0); - $output =~ s/\n*$/\n/; - - # If the text is just whitespace, we have an empty item paragraph; - # this can result from =over/=item/=back without any intermixed - # paragraphs. Insert some whitespace to keep the =item from merging - # into the next paragraph. - $output .= "\n" if $_ && $_ =~ /^\s*$/; - - $self->output ($output); - $$self{MARGIN} = $realindent; - $self->output ($self->reformat ($_)) if $_ && /\S/; - } else { - my $space = ' ' x $indent; - $space =~ s/^$margin /$margin:/ if $$self{alt}; - $_ = $self->reformat ($_); - s/^$margin /$margin:/ if ($$self{alt} && $indent > 0); - my $tagspace = ' ' x length $tag; - s/^($space)$tagspace/$1$tag/ or warn "Bizarre space in item"; - $self->output ($_); - } -} - - -############################################################################## -# Output formatting -############################################################################## - -# Wrap a line, indenting by the current left margin. We can't use Text::Wrap -# because it plays games with tabs. We can't use formline, even though we'd -# really like to, because it screws up non-printing characters. So we have to -# do the wrapping ourselves. -sub wrap { - my $self = shift; - local $_ = shift; - my $output = ''; - my $spaces = ' ' x $$self{MARGIN}; - my $width = $$self{width} - $$self{MARGIN}; - while (length > $width) { - if (s/^([^\n]{0,$width})\s+// || s/^([^\n]{$width})//) { - $output .= $spaces . $1 . "\n"; - } else { - last; - } - } - $output .= $spaces . $_; - $output =~ s/\s+$/\n\n/; - $output; -} - -# Reformat a paragraph of text for the current margin. Takes the text to -# reformat and returns the formatted text. -sub reformat { - my $self = shift; - local $_ = shift; - - # If we're trying to preserve two spaces after sentences, do some munging - # to support that. Otherwise, smash all repeated whitespace. - if ($$self{sentence}) { - s/ +$//mg; - s/\.\n/. \n/g; - s/\n/ /g; - s/ +/ /g; - } else { - s/\s+/ /g; - } - $self->wrap ($_); -} - -# Output text to the output device. -sub output { $_[1] =~ tr/\01/ /; print { $_[0]->output_handle } $_[1] } - -# Output a block of code (something that isn't part of the POD text). Called -# by preprocess_paragraph only if we were given the code option. Exists here -# only so that it can be overridden by subclasses. -sub output_code { $_[0]->output ($_[1]) } - - -############################################################################## -# Backwards compatibility -############################################################################## - -# The old Pod::Text module did everything in a pod2text() function. This -# tries to provide the same interface for legacy applications. -sub pod2text { - my @args; - - # This is really ugly; I hate doing option parsing in the middle of a - # module. But the old Pod::Text module supported passing flags to its - # entry function, so handle -a and -<number>. - while ($_[0] =~ /^-/) { - my $flag = shift; - if ($flag eq '-a') { push (@args, alt => 1) } - elsif ($flag =~ /^-(\d+)$/) { push (@args, width => $1) } - else { - unshift (@_, $flag); - last; - } - } - - # Now that we know what arguments we're using, create the parser. - my $parser = Pod::Text->new (@args); - - # If two arguments were given, the second argument is going to be a file - # handle. That means we want to call parse_from_filehandle(), which means - # we need to turn the first argument into a file handle. Magic open will - # handle the <&STDIN case automagically. - if (defined $_[1]) { - my @fhs = @_; - local *IN; - unless (open (IN, $fhs[0])) { - croak ("Can't open $fhs[0] for reading: $!\n"); - return; - } - $fhs[0] = \*IN; - return $parser->parse_from_filehandle (@fhs); - } else { - return $parser->parse_from_file (@_); - } -} - - -############################################################################## -# Module return value and documentation -############################################################################## - -1; -__END__ - -=head1 NAME - -Pod::Text - Convert POD data to formatted ASCII text - -=head1 SYNOPSIS - - use Pod::Text; - my $parser = Pod::Text->new (sentence => 0, width => 78); - - # Read POD from STDIN and write to STDOUT. - $parser->parse_from_filehandle; - - # Read POD from file.pod and write to file.txt. - $parser->parse_from_file ('file.pod', 'file.txt'); - -=head1 DESCRIPTION - -Pod::Text is a module that can convert documentation in the POD format (the -preferred language for documenting Perl) into formatted ASCII. It uses no -special formatting controls or codes whatsoever, and its output is therefore -suitable for nearly any device. - -As a derived class from Pod::Parser, Pod::Text supports the same methods and -interfaces. See L<Pod::Parser> for all the details; briefly, one creates a -new parser with C<< Pod::Text->new() >> and then calls either -parse_from_filehandle() or parse_from_file(). - -new() can take options, in the form of key/value pairs, that control the -behavior of the parser. The currently recognized options are: - -=over 4 - -=item alt - -If set to a true value, selects an alternate output format that, among other -things, uses a different heading style and marks C<=item> entries with a -colon in the left margin. Defaults to false. - -=item code - -If set to a true value, the non-POD parts of the input file will be included -in the output. Useful for viewing code documented with POD blocks with the -POD rendered and the code left intact. - -=item indent - -The number of spaces to indent regular text, and the default indentation for -C<=over> blocks. Defaults to 4. - -=item loose - -If set to a true value, a blank line is printed after a C<=head1> heading. -If set to false (the default), no blank line is printed after C<=head1>, -although one is still printed after C<=head2>. This is the default because -it's the expected formatting for manual pages; if you're formatting -arbitrary text documents, setting this to true may result in more pleasing -output. - -=item margin - -The width of the left margin in spaces. Defaults to 0. This is the margin -for all text, including headings, not the amount by which regular text is -indented; for the latter, see the I<indent> option. To set the right -margin, see the I<width> option. - -=item quotes - -Sets the quote marks used to surround CE<lt>> text. If the value is a -single character, it is used as both the left and right quote; if it is two -characters, the first character is used as the left quote and the second as -the right quoted; and if it is four characters, the first two are used as -the left quote and the second two as the right quote. - -This may also be set to the special value C<none>, in which case no quote -marks are added around CE<lt>> text. - -=item sentence - -If set to a true value, Pod::Text will assume that each sentence ends in two -spaces, and will try to preserve that spacing. If set to false, all -consecutive whitespace in non-verbatim paragraphs is compressed into a -single space. Defaults to true. - -=item width - -The column at which to wrap text on the right-hand side. Defaults to 76. - -=back - -The standard Pod::Parser method parse_from_filehandle() takes up to two -arguments, the first being the file handle to read POD from and the second -being the file handle to write the formatted output to. The first defaults -to STDIN if not given, and the second defaults to STDOUT. The method -parse_from_file() is almost identical, except that its two arguments are the -input and output disk files instead. See L<Pod::Parser> for the specific -details. - -=head1 DIAGNOSTICS - -=over 4 - -=item Bizarre space in item - -=item Item called without tag - -(W) Something has gone wrong in internal C<=item> processing. These -messages indicate a bug in Pod::Text; you should never see them. - -=item Can't open %s for reading: %s - -(F) Pod::Text was invoked via the compatibility mode pod2text() interface -and the input file it was given could not be opened. - -=item Invalid quote specification "%s" - -(F) The quote specification given (the quotes option to the constructor) was -invalid. A quote specification must be one, two, or four characters long. - -=item %s:%d: Unknown command paragraph: %s - -(W) The POD source contained a non-standard command paragraph (something of -the form C<=command args>) that Pod::Man didn't know about. It was ignored. - -=item %s:%d: Unknown escape: %s - -(W) The POD source contained an C<EE<lt>E<gt>> escape that Pod::Text didn't -know about. - -=item %s:%d: Unknown formatting code: %s - -(W) The POD source contained a non-standard formatting code (something of -the form C<XE<lt>E<gt>>) that Pod::Text didn't know about. - -=item %s:%d: Unmatched =back - -(W) Pod::Text encountered a C<=back> command that didn't correspond to an -C<=over> command. - -=back - -=head1 RESTRICTIONS - -Embedded Ctrl-As (octal 001) in the input will be mapped to spaces on -output, due to an internal implementation detail. - -=head1 NOTES - -This is a replacement for an earlier Pod::Text module written by Tom -Christiansen. It has a revamped interface, since it now uses Pod::Parser, -but an interface roughly compatible with the old Pod::Text::pod2text() -function is still available. Please change to the new calling convention, -though. - -The original Pod::Text contained code to do formatting via termcap -sequences, although it wasn't turned on by default and it was problematic to -get it to work at all. This rewrite doesn't even try to do that, but a -subclass of it does. Look for L<Pod::Text::Termcap>. - -=head1 SEE ALSO - -L<Pod::Parser>, L<Pod::Text::Termcap>, L<pod2text(1)> - -The current version of this module is always available from its web site at -L<http://www.eyrie.org/~eagle/software/podlators/>. It is also part of the -Perl core distribution as of 5.6.0. - -=head1 AUTHOR - -Russ Allbery <rra@stanford.edu>, based I<very> heavily on the original -Pod::Text by Tom Christiansen <tchrist@mox.perl.com> and its conversion to -Pod::Parser by Brad Appleton <bradapp@enteract.com>. - -=head1 COPYRIGHT AND LICENSE - -Copyright 1999, 2000, 2001, 2002 by Russ Allbery <rra@stanford.edu>. - -This program is free software; you may redistribute it and/or modify it -under the same terms as Perl itself. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Text/Color.pm b/Master/tlpkg/tlperl.old/lib/Pod/Text/Color.pm deleted file mode 100644 index 2ba31369b96..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Text/Color.pm +++ /dev/null @@ -1,145 +0,0 @@ -# Pod::Text::Color -- Convert POD data to formatted color ASCII text -# $Id: Color.pm,v 1.4 2002/07/15 05:46:00 eagle Exp $ -# -# Copyright 1999, 2001 by Russ Allbery <rra@stanford.edu> -# -# This program is free software; you may redistribute it and/or modify it -# under the same terms as Perl itself. -# -# This is just a basic proof of concept. It should later be modified to make -# better use of color, take options changing what colors are used for what -# text, and the like. - -############################################################################## -# Modules and declarations -############################################################################## - -package Pod::Text::Color; - -require 5.004; - -use Pod::Text (); -use Term::ANSIColor qw(colored); - -use strict; -use vars qw(@ISA $VERSION); - -@ISA = qw(Pod::Text); - -# Don't use the CVS revision as the version, since this module is also in Perl -# core and too many things could munge CVS magic revision strings. This -# number should ideally be the same as the CVS revision in podlators, however. -$VERSION = 1.04; - - -############################################################################## -# Overrides -############################################################################## - -# Make level one headings bold. -sub cmd_head1 { - my $self = shift; - local $_ = shift; - s/\s+$//; - $self->SUPER::cmd_head1 (colored ($_, 'bold')); -} - -# Make level two headings bold. -sub cmd_head2 { - my $self = shift; - local $_ = shift; - s/\s+$//; - $self->SUPER::cmd_head2 (colored ($_, 'bold')); -} - -# Fix the various formatting codes. -sub seq_b { return colored ($_[1], 'bold') } -sub seq_f { return colored ($_[1], 'cyan') } -sub seq_i { return colored ($_[1], 'yellow') } - -# Output any included code in green. -sub output_code { - my ($self, $code) = @_; - $code = colored ($code, 'green'); - $self->output ($code); -} - -# We unfortunately have to override the wrapping code here, since the normal -# wrapping code gets really confused by all the escape sequences. -sub wrap { - my $self = shift; - local $_ = shift; - my $output = ''; - my $spaces = ' ' x $$self{MARGIN}; - my $width = $$self{width} - $$self{MARGIN}; - while (length > $width) { - if (s/^((?:(?:\e\[[\d;]+m)?[^\n]){0,$width})\s+// - || s/^((?:(?:\e\[[\d;]+m)?[^\n]){$width})//) { - $output .= $spaces . $1 . "\n"; - } else { - last; - } - } - $output .= $spaces . $_; - $output =~ s/\s+$/\n\n/; - $output; -} - -############################################################################## -# Module return value and documentation -############################################################################## - -1; -__END__ - -=head1 NAME - -Pod::Text::Color - Convert POD data to formatted color ASCII text - -=head1 SYNOPSIS - - use Pod::Text::Color; - my $parser = Pod::Text::Color->new (sentence => 0, width => 78); - - # Read POD from STDIN and write to STDOUT. - $parser->parse_from_filehandle; - - # Read POD from file.pod and write to file.txt. - $parser->parse_from_file ('file.pod', 'file.txt'); - -=head1 DESCRIPTION - -Pod::Text::Color is a simple subclass of Pod::Text that highlights output -text using ANSI color escape sequences. Apart from the color, it in all -ways functions like Pod::Text. See L<Pod::Text> for details and available -options. - -Term::ANSIColor is used to get colors and therefore must be installed to use -this module. - -=head1 BUGS - -This is just a basic proof of concept. It should be seriously expanded to -support configurable coloration via options passed to the constructor, and -B<pod2text> should be taught about those. - -=head1 SEE ALSO - -L<Pod::Text>, L<Pod::Parser> - -The current version of this module is always available from its web site at -L<http://www.eyrie.org/~eagle/software/podlators/>. It is also part of the -Perl core distribution as of 5.6.0. - -=head1 AUTHOR - -Russ Allbery <rra@stanford.edu>. - -=head1 COPYRIGHT AND LICENSE - -Copyright 1999, 2001 by Russ Allbery <rra@stanford.edu>. - -This program is free software; you may redistribute it and/or modify it -under the same terms as Perl itself. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Text/Overstrike.pm b/Master/tlpkg/tlperl.old/lib/Pod/Text/Overstrike.pm deleted file mode 100644 index 8ba918396c1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Text/Overstrike.pm +++ /dev/null @@ -1,208 +0,0 @@ -# Pod::Text::Overstrike -- Convert POD data to formatted overstrike text -# $Id: Overstrike.pm,v 1.10 2002/08/04 03:35:01 eagle Exp $ -# -# Created by Joe Smith <Joe.Smith@inwap.com> 30-Nov-2000 -# (based on Pod::Text::Color by Russ Allbery <rra@stanford.edu>) -# -# This program is free software; you may redistribute it and/or modify it -# under the same terms as Perl itself. -# -# This was written because the output from: -# -# pod2text Text.pm > plain.txt; less plain.txt -# -# is not as rich as the output from -# -# pod2man Text.pm | nroff -man > fancy.txt; less fancy.txt -# -# and because both Pod::Text::Color and Pod::Text::Termcap are not device -# independent. - -############################################################################## -# Modules and declarations -############################################################################## - -package Pod::Text::Overstrike; - -require 5.004; - -use Pod::Text (); - -use strict; -use vars qw(@ISA $VERSION); - -@ISA = qw(Pod::Text); - -# Don't use the CVS revision as the version, since this module is also in Perl -# core and too many things could munge CVS magic revision strings. This -# number should ideally be the same as the CVS revision in podlators, however. -$VERSION = 1.10; - - -############################################################################## -# Overrides -############################################################################## - -# Make level one headings bold, overridding any existing formatting. -sub cmd_head1 { - my ($self, $text, $line) = @_; - $text =~ s/\s+$//; - $text = $self->strip_format ($self->interpolate ($text, $line)); - $text =~ s/(.)/$1\b$1/g; - $self->SUPER::cmd_head1 ($text); -} - -# Make level two headings bold, overriding any existing formatting. -sub cmd_head2 { - my ($self, $text, $line) = @_; - $text =~ s/\s+$//; - $text = $self->strip_format ($self->interpolate ($text, $line)); - $text =~ s/(.)/$1\b$1/g; - $self->SUPER::cmd_head2 ($text); -} - -# Make level three headings underscored, overriding any existing formatting. -sub cmd_head3 { - my ($self, $text, $line) = @_; - $text =~ s/\s+$//; - $text = $self->strip_format ($self->interpolate ($text, $line)); - $text =~ s/(.)/_\b$1/g; - $self->SUPER::cmd_head3 ($text); -} - -# Level four headings look like level three headings. -sub cmd_head4 { - my ($self, $text, $line) = @_; - $text =~ s/\s+$//; - $text = $self->strip_format ($self->interpolate ($text, $line)); - $text =~ s/(.)/_\b$1/g; - $self->SUPER::cmd_head4 ($text); -} - -# The common code for handling all headers. We have to override to avoid -# interpolating twice and because we don't want to honor alt. -sub heading { - my ($self, $text, $line, $indent, $marker) = @_; - $self->item ("\n\n") if defined $$self{ITEM}; - $text .= "\n" if $$self{loose}; - my $margin = ' ' x ($$self{margin} + $indent); - $self->output ($margin . $text . "\n"); -} - -# Fix the various formatting codes. -sub seq_b { local $_ = strip_format (@_); s/(.)/$1\b$1/g; $_ } -sub seq_f { local $_ = strip_format (@_); s/(.)/_\b$1/g; $_ } -sub seq_i { local $_ = strip_format (@_); s/(.)/_\b$1/g; $_ } - -# Output any included code in bold. -sub output_code { - my ($self, $code) = @_; - $code =~ s/(.)/$1\b$1/g; - $self->output ($code); -} - -# We unfortunately have to override the wrapping code here, since the normal -# wrapping code gets really confused by all the backspaces. -sub wrap { - my $self = shift; - local $_ = shift; - my $output = ''; - my $spaces = ' ' x $$self{MARGIN}; - my $width = $$self{width} - $$self{MARGIN}; - while (length > $width) { - # This regex represents a single character, that's possibly underlined - # or in bold (in which case, it's three characters; the character, a - # backspace, and a character). Use [^\n] rather than . to protect - # against odd settings of $*. - my $char = '(?:[^\n][\b])?[^\n]'; - if (s/^((?>$char){0,$width})(?:\Z|\s+)//) { - $output .= $spaces . $1 . "\n"; - } else { - last; - } - } - $output .= $spaces . $_; - $output =~ s/\s+$/\n\n/; - $output; -} - -############################################################################## -# Utility functions -############################################################################## - -# Strip all of the formatting from a provided string, returning the stripped -# version. -sub strip_format { - my ($self, $text) = @_; - $text =~ s/(.)[\b]\1/$1/g; - $text =~ s/_[\b]//g; - return $text; -} - -############################################################################## -# Module return value and documentation -############################################################################## - -1; -__END__ - -=head1 NAME - -Pod::Text::Overstrike - Convert POD data to formatted overstrike text - -=head1 SYNOPSIS - - use Pod::Text::Overstrike; - my $parser = Pod::Text::Overstrike->new (sentence => 0, width => 78); - - # Read POD from STDIN and write to STDOUT. - $parser->parse_from_filehandle; - - # Read POD from file.pod and write to file.txt. - $parser->parse_from_file ('file.pod', 'file.txt'); - -=head1 DESCRIPTION - -Pod::Text::Overstrike is a simple subclass of Pod::Text that highlights -output text using overstrike sequences, in a manner similar to nroff. -Characters in bold text are overstruck (character, backspace, character) and -characters in underlined text are converted to overstruck underscores -(underscore, backspace, character). This format was originally designed for -hardcopy terminals and/or lineprinters, yet is readable on softcopy (CRT) -terminals. - -Overstruck text is best viewed by page-at-a-time programs that take -advantage of the terminal's B<stand-out> and I<underline> capabilities, such -as the less program on Unix. - -Apart from the overstrike, it in all ways functions like Pod::Text. See -L<Pod::Text> for details and available options. - -=head1 BUGS - -Currently, the outermost formatting instruction wins, so for example -underlined text inside a region of bold text is displayed as simply bold. -There may be some better approach possible. - -=head1 SEE ALSO - -L<Pod::Text>, L<Pod::Parser> - -The current version of this module is always available from its web site at -L<http://www.eyrie.org/~eagle/software/podlators/>. It is also part of the -Perl core distribution as of 5.6.0. - -=head1 AUTHOR - -Joe Smith <Joe.Smith@inwap.com>, using the framework created by Russ Allbery -<rra@stanford.edu>. - -=head1 COPYRIGHT AND LICENSE - -Copyright 2000 by Joe Smith <Joe.Smith@inwap.com>. -Copyright 2001 by Russ Allbery <rra@stanford.edu>. - -This program is free software; you may redistribute it and/or modify it -under the same terms as Perl itself. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Text/Termcap.pm b/Master/tlpkg/tlperl.old/lib/Pod/Text/Termcap.pm deleted file mode 100644 index 02a7fb9842a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Text/Termcap.pm +++ /dev/null @@ -1,180 +0,0 @@ -# Pod::Text::Termcap -- Convert POD data to ASCII text with format escapes. -# $Id: Termcap.pm,v 1.11 2003/07/09 21:52:30 eagle Exp $ -# -# Copyright 1999, 2001, 2002 by Russ Allbery <rra@stanford.edu> -# -# This program is free software; you may redistribute it and/or modify it -# under the same terms as Perl itself. -# -# This is a simple subclass of Pod::Text that overrides a few key methods to -# output the right termcap escape sequences for formatted text on the current -# terminal type. - -############################################################################## -# Modules and declarations -############################################################################## - -package Pod::Text::Termcap; - -require 5.004; - -use Pod::Text (); -use POSIX (); -use Term::Cap; - -use strict; -use vars qw(@ISA $VERSION); - -@ISA = qw(Pod::Text); - -# Don't use the CVS revision as the version, since this module is also in Perl -# core and too many things could munge CVS magic revision strings. This -# number should ideally be the same as the CVS revision in podlators, however. -$VERSION = 1.11; - - -############################################################################## -# Overrides -############################################################################## - -# In the initialization method, grab our terminal characteristics as well as -# do all the stuff we normally do. -sub initialize { - my $self = shift; - my ($ospeed, $term, $termios); - - # $ENV{HOME} is usually not set on Windows. The default Term::Cap path - # may not work on Solaris. - my $home = exists $ENV{HOME} ? "$ENV{HOME}/.termcap:" : ''; - $ENV{TERMPATH} = $home . '/etc/termcap:/usr/share/misc/termcap' - . ':/usr/share/lib/termcap'; - - # Fall back on a hard-coded terminal speed if POSIX::Termios isn't - # available (such as on VMS). - eval { $termios = POSIX::Termios->new }; - if ($@) { - $ospeed = 9600; - } else { - $termios->getattr; - $ospeed = $termios->getospeed || 9600; - } - - # Fall back on the ANSI escape sequences if Term::Cap doesn't work. - eval { $term = Tgetent Term::Cap { TERM => undef, OSPEED => $ospeed } }; - $$self{BOLD} = $$term{_md} || "\e[1m"; - $$self{UNDL} = $$term{_us} || "\e[4m"; - $$self{NORM} = $$term{_me} || "\e[m"; - - unless (defined $$self{width}) { - $$self{width} = $ENV{COLUMNS} || $$term{_co} || 80; - $$self{width} -= 2; - } - - $self->SUPER::initialize; -} - -# Make level one headings bold. -sub cmd_head1 { - my $self = shift; - local $_ = shift; - s/\s+$//; - $self->SUPER::cmd_head1 ("$$self{BOLD}$_$$self{NORM}"); -} - -# Make level two headings bold. -sub cmd_head2 { - my $self = shift; - local $_ = shift; - s/\s+$//; - $self->SUPER::cmd_head2 ("$$self{BOLD}$_$$self{NORM}"); -} - -# Fix up B<> and I<>. Note that we intentionally don't do F<>. -sub seq_b { my $self = shift; return "$$self{BOLD}$_[0]$$self{NORM}" } -sub seq_i { my $self = shift; return "$$self{UNDL}$_[0]$$self{NORM}" } - -# Output any included code in bold. -sub output_code { - my ($self, $code) = @_; - $self->output ($$self{BOLD} . $code . $$self{NORM}); -} - -# Override the wrapping code to igore the special sequences. -sub wrap { - my $self = shift; - local $_ = shift; - my $output = ''; - my $spaces = ' ' x $$self{MARGIN}; - my $width = $$self{width} - $$self{MARGIN}; - my $code = "(?:\Q$$self{BOLD}\E|\Q$$self{UNDL}\E|\Q$$self{NORM}\E)"; - while (length > $width) { - if (s/^((?:$code?[^\n]){0,$width})\s+// - || s/^((?:$code?[^\n]){$width})//) { - $output .= $spaces . $1 . "\n"; - } else { - last; - } - } - $output .= $spaces . $_; - $output =~ s/\s+$/\n\n/; - $output; -} - - -############################################################################## -# Module return value and documentation -############################################################################## - -1; -__END__ - -=head1 NAME - -Pod::Text::Termcap - Convert POD data to ASCII text with format escapes - -=head1 SYNOPSIS - - use Pod::Text::Termcap; - my $parser = Pod::Text::Termcap->new (sentence => 0, width => 78); - - # Read POD from STDIN and write to STDOUT. - $parser->parse_from_filehandle; - - # Read POD from file.pod and write to file.txt. - $parser->parse_from_file ('file.pod', 'file.txt'); - -=head1 DESCRIPTION - -Pod::Text::Termcap is a simple subclass of Pod::Text that highlights output -text using the correct termcap escape sequences for the current terminal. -Apart from the format codes, it in all ways functions like Pod::Text. See -L<Pod::Text> for details and available options. - -=head1 NOTES - -This module uses Term::Cap to retrieve the formatting escape sequences for -the current terminal, and falls back on the ECMA-48 (the same in this -regard as ANSI X3.64 and ISO 6429, the escape codes also used by DEC VT100 -terminals) if the bold, underline, and reset codes aren't set in the -termcap information. - -=head1 SEE ALSO - -L<Pod::Text>, L<Pod::Parser>, L<Term::Cap> - -The current version of this module is always available from its web site at -L<http://www.eyrie.org/~eagle/software/podlators/>. It is also part of the -Perl core distribution as of 5.6.0. - -=head1 AUTHOR - -Russ Allbery <rra@stanford.edu>. - -=head1 COPYRIGHT AND LICENSE - -Copyright 1999, 2001, 2002 by Russ Allbery <rra@stanford.edu>. - -This program is free software; you may redistribute it and/or modify it -under the same terms as Perl itself. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Pod/Usage.pm b/Master/tlpkg/tlperl.old/lib/Pod/Usage.pm deleted file mode 100644 index c298e941f21..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Pod/Usage.pm +++ /dev/null @@ -1,659 +0,0 @@ -############################################################################# -# Pod/Usage.pm -- print usage messages for the running script. -# -# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved. -# This file is part of "PodParser". PodParser is free software; -# you can redistribute it and/or modify it under the same terms -# as Perl itself. -############################################################################# - -package Pod::Usage; - -use vars qw($VERSION); -$VERSION = 1.33; ## Current version of this package -require 5.005; ## requires this Perl version or later - -=head1 NAME - -Pod::Usage, pod2usage() - print a usage message from embedded pod documentation - -=head1 SYNOPSIS - - use Pod::Usage - - my $message_text = "This text precedes the usage message."; - my $exit_status = 2; ## The exit status to use - my $verbose_level = 0; ## The verbose level to use - my $filehandle = \*STDERR; ## The filehandle to write to - - pod2usage($message_text); - - pod2usage($exit_status); - - pod2usage( { -message => $message_text , - -exitval => $exit_status , - -verbose => $verbose_level, - -output => $filehandle } ); - - pod2usage( -msg => $message_text , - -exitval => $exit_status , - -verbose => $verbose_level, - -output => $filehandle ); - - pod2usage( -verbose => 2, - -noperldoc => 1 ) - -=head1 ARGUMENTS - -B<pod2usage> should be given either a single argument, or a list of -arguments corresponding to an associative array (a "hash"). When a single -argument is given, it should correspond to exactly one of the following: - -=over 4 - -=item * - -A string containing the text of a message to print I<before> printing -the usage message - -=item * - -A numeric value corresponding to the desired exit status - -=item * - -A reference to a hash - -=back - -If more than one argument is given then the entire argument list is -assumed to be a hash. If a hash is supplied (either as a reference or -as a list) it should contain one or more elements with the following -keys: - -=over 4 - -=item C<-message> - -=item C<-msg> - -The text of a message to print immediately prior to printing the -program's usage message. - -=item C<-exitval> - -The desired exit status to pass to the B<exit()> function. -This should be an integer, or else the string "NOEXIT" to -indicate that control should simply be returned without -terminating the invoking process. - -=item C<-verbose> - -The desired level of "verboseness" to use when printing the usage -message. If the corresponding value is 0, then only the "SYNOPSIS" -section of the pod documentation is printed. If the corresponding value -is 1, then the "SYNOPSIS" section, along with any section entitled -"OPTIONS", "ARGUMENTS", or "OPTIONS AND ARGUMENTS" is printed. If the -corresponding value is 2 or more then the entire manpage is printed. - -The special verbosity level 99 requires to also specify the -section -parameter; then these sections are extracted (see L<Pod::Select>) -and printed. - -=item C<-section> - -A string representing a selection list for sections to be printed -when -verbose is set to 99, e.g. C<"NAME|SYNOPSIS|DESCRIPTION|VERSION">. - -=item C<-output> - -A reference to a filehandle, or the pathname of a file to which the -usage message should be written. The default is C<\*STDERR> unless the -exit value is less than 2 (in which case the default is C<\*STDOUT>). - -=item C<-input> - -A reference to a filehandle, or the pathname of a file from which the -invoking script's pod documentation should be read. It defaults to the -file indicated by C<$0> (C<$PROGRAM_NAME> for users of F<English.pm>). - -=item C<-pathlist> - -A list of directory paths. If the input file does not exist, then it -will be searched for in the given directory list (in the order the -directories appear in the list). It defaults to the list of directories -implied by C<$ENV{PATH}>. The list may be specified either by a reference -to an array, or by a string of directory paths which use the same path -separator as C<$ENV{PATH}> on your system (e.g., C<:> for Unix, C<;> for -MSWin32 and DOS). - -=item C<-noperldoc> - -By default, Pod::Usage will call L<perldoc> when -verbose >= 2 is -specified. This does not work well e.g. if the script was packed -with L<PAR>. The -noperldoc option suppresses the external call to -L<perldoc> and uses the simple text formatter (L<Pod::Text>) to -output the POD. - -=back - -=head1 DESCRIPTION - -B<pod2usage> will print a usage message for the invoking script (using -its embedded pod documentation) and then exit the script with the -desired exit status. The usage message printed may have any one of three -levels of "verboseness": If the verbose level is 0, then only a synopsis -is printed. If the verbose level is 1, then the synopsis is printed -along with a description (if present) of the command line options and -arguments. If the verbose level is 2, then the entire manual page is -printed. - -Unless they are explicitly specified, the default values for the exit -status, verbose level, and output stream to use are determined as -follows: - -=over 4 - -=item * - -If neither the exit status nor the verbose level is specified, then the -default is to use an exit status of 2 with a verbose level of 0. - -=item * - -If an exit status I<is> specified but the verbose level is I<not>, then the -verbose level will default to 1 if the exit status is less than 2 and -will default to 0 otherwise. - -=item * - -If an exit status is I<not> specified but verbose level I<is> given, then -the exit status will default to 2 if the verbose level is 0 and will -default to 1 otherwise. - -=item * - -If the exit status used is less than 2, then output is printed on -C<STDOUT>. Otherwise output is printed on C<STDERR>. - -=back - -Although the above may seem a bit confusing at first, it generally does -"the right thing" in most situations. This determination of the default -values to use is based upon the following typical Unix conventions: - -=over 4 - -=item * - -An exit status of 0 implies "success". For example, B<diff(1)> exits -with a status of 0 if the two files have the same contents. - -=item * - -An exit status of 1 implies possibly abnormal, but non-defective, program -termination. For example, B<grep(1)> exits with a status of 1 if -it did I<not> find a matching line for the given regular expression. - -=item * - -An exit status of 2 or more implies a fatal error. For example, B<ls(1)> -exits with a status of 2 if you specify an illegal (unknown) option on -the command line. - -=item * - -Usage messages issued as a result of bad command-line syntax should go -to C<STDERR>. However, usage messages issued due to an explicit request -to print usage (like specifying B<-help> on the command line) should go -to C<STDOUT>, just in case the user wants to pipe the output to a pager -(such as B<more(1)>). - -=item * - -If program usage has been explicitly requested by the user, it is often -desireable to exit with a status of 1 (as opposed to 0) after issuing -the user-requested usage message. It is also desireable to give a -more verbose description of program usage in this case. - -=back - -B<pod2usage> doesn't force the above conventions upon you, but it will -use them by default if you don't expressly tell it to do otherwise. The -ability of B<pod2usage()> to accept a single number or a string makes it -convenient to use as an innocent looking error message handling function: - - use Pod::Usage; - use Getopt::Long; - - ## Parse options - GetOptions("help", "man", "flag1") || pod2usage(2); - pod2usage(1) if ($opt_help); - pod2usage(-verbose => 2) if ($opt_man); - - ## Check for too many filenames - pod2usage("$0: Too many files given.\n") if (@ARGV > 1); - -Some user's however may feel that the above "economy of expression" is -not particularly readable nor consistent and may instead choose to do -something more like the following: - - use Pod::Usage; - use Getopt::Long; - - ## Parse options - GetOptions("help", "man", "flag1") || pod2usage(-verbose => 0); - pod2usage(-verbose => 1) if ($opt_help); - pod2usage(-verbose => 2) if ($opt_man); - - ## Check for too many filenames - pod2usage(-verbose => 2, -message => "$0: Too many files given.\n") - if (@ARGV > 1); - -As with all things in Perl, I<there's more than one way to do it>, and -B<pod2usage()> adheres to this philosophy. If you are interested in -seeing a number of different ways to invoke B<pod2usage> (although by no -means exhaustive), please refer to L<"EXAMPLES">. - -=head1 EXAMPLES - -Each of the following invocations of C<pod2usage()> will print just the -"SYNOPSIS" section to C<STDERR> and will exit with a status of 2: - - pod2usage(); - - pod2usage(2); - - pod2usage(-verbose => 0); - - pod2usage(-exitval => 2); - - pod2usage({-exitval => 2, -output => \*STDERR}); - - pod2usage({-verbose => 0, -output => \*STDERR}); - - pod2usage(-exitval => 2, -verbose => 0); - - pod2usage(-exitval => 2, -verbose => 0, -output => \*STDERR); - -Each of the following invocations of C<pod2usage()> will print a message -of "Syntax error." (followed by a newline) to C<STDERR>, immediately -followed by just the "SYNOPSIS" section (also printed to C<STDERR>) and -will exit with a status of 2: - - pod2usage("Syntax error."); - - pod2usage(-message => "Syntax error.", -verbose => 0); - - pod2usage(-msg => "Syntax error.", -exitval => 2); - - pod2usage({-msg => "Syntax error.", -exitval => 2, -output => \*STDERR}); - - pod2usage({-msg => "Syntax error.", -verbose => 0, -output => \*STDERR}); - - pod2usage(-msg => "Syntax error.", -exitval => 2, -verbose => 0); - - pod2usage(-message => "Syntax error.", - -exitval => 2, - -verbose => 0, - -output => \*STDERR); - -Each of the following invocations of C<pod2usage()> will print the -"SYNOPSIS" section and any "OPTIONS" and/or "ARGUMENTS" sections to -C<STDOUT> and will exit with a status of 1: - - pod2usage(1); - - pod2usage(-verbose => 1); - - pod2usage(-exitval => 1); - - pod2usage({-exitval => 1, -output => \*STDOUT}); - - pod2usage({-verbose => 1, -output => \*STDOUT}); - - pod2usage(-exitval => 1, -verbose => 1); - - pod2usage(-exitval => 1, -verbose => 1, -output => \*STDOUT}); - -Each of the following invocations of C<pod2usage()> will print the -entire manual page to C<STDOUT> and will exit with a status of 1: - - pod2usage(-verbose => 2); - - pod2usage({-verbose => 2, -output => \*STDOUT}); - - pod2usage(-exitval => 1, -verbose => 2); - - pod2usage({-exitval => 1, -verbose => 2, -output => \*STDOUT}); - -=head2 Recommended Use - -Most scripts should print some type of usage message to C<STDERR> when a -command line syntax error is detected. They should also provide an -option (usually C<-H> or C<-help>) to print a (possibly more verbose) -usage message to C<STDOUT>. Some scripts may even wish to go so far as to -provide a means of printing their complete documentation to C<STDOUT> -(perhaps by allowing a C<-man> option). The following complete example -uses B<Pod::Usage> in combination with B<Getopt::Long> to do all of these -things: - - use Getopt::Long; - use Pod::Usage; - - my $man = 0; - my $help = 0; - ## Parse options and print usage if there is a syntax error, - ## or if usage was explicitly requested. - GetOptions('help|?' => \$help, man => \$man) or pod2usage(2); - pod2usage(1) if $help; - pod2usage(-verbose => 2) if $man; - - ## If no arguments were given, then allow STDIN to be used only - ## if it's not connected to a terminal (otherwise print usage) - pod2usage("$0: No files given.") if ((@ARGV == 0) && (-t STDIN)); - __END__ - - =head1 NAME - - sample - Using GetOpt::Long and Pod::Usage - - =head1 SYNOPSIS - - sample [options] [file ...] - - Options: - -help brief help message - -man full documentation - - =head1 OPTIONS - - =over 8 - - =item B<-help> - - Print a brief help message and exits. - - =item B<-man> - - Prints the manual page and exits. - - =back - - =head1 DESCRIPTION - - B<This program> will read the given input file(s) and do something - useful with the contents thereof. - - =cut - -=head1 CAVEATS - -By default, B<pod2usage()> will use C<$0> as the path to the pod input -file. Unfortunately, not all systems on which Perl runs will set C<$0> -properly (although if C<$0> isn't found, B<pod2usage()> will search -C<$ENV{PATH}> or else the list specified by the C<-pathlist> option). -If this is the case for your system, you may need to explicitly specify -the path to the pod docs for the invoking script using something -similar to the following: - - pod2usage(-exitval => 2, -input => "/path/to/your/pod/docs"); - -In the pathological case that a script is called via a relative path -I<and> the script itself changes the current working directory -(see L<perlfunc/chdir>) I<before> calling pod2usage, Pod::Usage will -fail even on robust platforms. Don't do that. - -=head1 AUTHOR - -Please report bugs using L<http://rt.cpan.org>. - -Brad Appleton E<lt>bradapp@enteract.comE<gt> - -Based on code for B<Pod::Text::pod2text()> written by -Tom Christiansen E<lt>tchrist@mox.perl.comE<gt> - -=head1 ACKNOWLEDGEMENTS - -Steven McDougall E<lt>swmcd@world.std.comE<gt> for his help and patience -with re-writing this manpage. - -=cut - -############################################################################# - -use strict; -#use diagnostics; -use Carp; -use Config; -use Exporter; -use File::Spec; - -use vars qw(@ISA @EXPORT); -@EXPORT = qw(&pod2usage); -BEGIN { - if ( $] >= 5.005_58 ) { - require Pod::Text; - @ISA = qw( Pod::Text ); - } - else { - require Pod::PlainText; - @ISA = qw( Pod::PlainText ); - } -} - - -##--------------------------------------------------------------------------- - -##--------------------------------- -## Function definitions begin here -##--------------------------------- - -sub pod2usage { - local($_) = shift; - my %opts; - ## Collect arguments - if (@_ > 0) { - ## Too many arguments - assume that this is a hash and - ## the user forgot to pass a reference to it. - %opts = ($_, @_); - } - elsif (!defined $_) { - $_ = ""; - } - elsif (ref $_) { - ## User passed a ref to a hash - %opts = %{$_} if (ref($_) eq 'HASH'); - } - elsif (/^[-+]?\d+$/) { - ## User passed in the exit value to use - $opts{"-exitval"} = $_; - } - else { - ## User passed in a message to print before issuing usage. - $_ and $opts{"-message"} = $_; - } - - ## Need this for backward compatibility since we formerly used - ## options that were all uppercase words rather than ones that - ## looked like Unix command-line options. - ## to be uppercase keywords) - %opts = map { - my $val = $opts{$_}; - s/^(?=\w)/-/; - /^-msg/i and $_ = '-message'; - /^-exit/i and $_ = '-exitval'; - lc($_) => $val; - } (keys %opts); - - ## Now determine default -exitval and -verbose values to use - if ((! defined $opts{"-exitval"}) && (! defined $opts{"-verbose"})) { - $opts{"-exitval"} = 2; - $opts{"-verbose"} = 0; - } - elsif (! defined $opts{"-exitval"}) { - $opts{"-exitval"} = ($opts{"-verbose"} > 0) ? 1 : 2; - } - elsif (! defined $opts{"-verbose"}) { - $opts{"-verbose"} = (lc($opts{"-exitval"}) eq "noexit" || - $opts{"-exitval"} < 2); - } - - ## Default the output file - $opts{"-output"} = (lc($opts{"-exitval"}) eq "noexit" || - $opts{"-exitval"} < 2) ? \*STDOUT : \*STDERR - unless (defined $opts{"-output"}); - ## Default the input file - $opts{"-input"} = $0 unless (defined $opts{"-input"}); - - ## Look up input file in path if it doesnt exist. - unless ((ref $opts{"-input"}) || (-e $opts{"-input"})) { - my ($dirname, $basename) = ('', $opts{"-input"}); - my $pathsep = ($^O =~ /^(?:dos|os2|MSWin32)$/) ? ";" - : (($^O eq 'MacOS' || $^O eq 'VMS') ? ',' : ":"); - my $pathspec = $opts{"-pathlist"} || $ENV{PATH} || $ENV{PERL5LIB}; - - my @paths = (ref $pathspec) ? @$pathspec : split($pathsep, $pathspec); - for $dirname (@paths) { - $_ = File::Spec->catfile($dirname, $basename) if length; - last if (-e $_) && ($opts{"-input"} = $_); - } - } - - ## Now create a pod reader and constrain it to the desired sections. - my $parser = new Pod::Usage(USAGE_OPTIONS => \%opts); - if ($opts{"-verbose"} == 0) { - $parser->select('SYNOPSIS\s*'); - } - elsif ($opts{"-verbose"} == 1) { - my $opt_re = '(?i)' . - '(?:OPTIONS|ARGUMENTS)' . - '(?:\s*(?:AND|\/)\s*(?:OPTIONS|ARGUMENTS))?'; - $parser->select( 'SYNOPSIS', $opt_re, "DESCRIPTION/$opt_re" ); - } - elsif ($opts{"-verbose"} == 99) { - $parser->select( $opts{"-sections"} ); - $opts{"-verbose"} = 1; - } - - ## Now translate the pod document and then exit with the desired status - if ( !$opts{"-noperldoc"} - and $opts{"-verbose"} >= 2 - and !ref($opts{"-input"}) - and $opts{"-output"} == \*STDOUT ) - { - ## spit out the entire PODs. Might as well invoke perldoc - my $progpath = File::Spec->catfile($Config{scriptdir}, "perldoc"); - system($progpath, $opts{"-input"}); - } - else { - $parser->parse_from_file($opts{"-input"}, $opts{"-output"}); - } - - exit($opts{"-exitval"}) unless (lc($opts{"-exitval"}) eq 'noexit'); -} - -##--------------------------------------------------------------------------- - -##------------------------------- -## Method definitions begin here -##------------------------------- - -sub new { - my $this = shift; - my $class = ref($this) || $this; - my %params = @_; - my $self = {%params}; - bless $self, $class; - if ($self->can('initialize')) { - $self->initialize(); - } else { - $self = $self->SUPER::new(); - %$self = (%$self, %params); - } - return $self; -} - -sub select { - my ($self, @res) = @_; - if ($ISA[0]->can('select')) { - $self->SUPER::select(@_); - } else { - $self->{USAGE_SELECT} = \@res; - } -} - -# Override Pod::Text->seq_i to return just "arg", not "*arg*". -sub seq_i { return $_[1] } - -# This overrides the Pod::Text method to do something very akin to what -# Pod::Select did as well as the work done below by preprocess_paragraph. -# Note that the below is very, very specific to Pod::Text. -sub _handle_element_end { - my ($self, $element) = @_; - if ($element eq 'head1') { - $$self{USAGE_HEAD1} = $$self{PENDING}[-1][1]; - $$self{PENDING}[-1][1] =~ s/^\s*SYNOPSIS\s*$/USAGE/; - } elsif ($element eq 'head2') { - $$self{USAGE_HEAD2} = $$self{PENDING}[-1][1]; - } - if ($element eq 'head1' || $element eq 'head2') { - $$self{USAGE_SKIPPING} = 1; - my $heading = $$self{USAGE_HEAD1}; - $heading .= '/' . $$self{USAGE_HEAD2} if defined $$self{USAGE_HEAD2}; - for (@{ $$self{USAGE_SELECT} }) { - if ($heading =~ /^$_\s*$/) { - $$self{USAGE_SKIPPING} = 0; - last; - } - } - - # Try to do some lowercasing instead of all-caps in headings, and use - # a colon to end all headings. - local $_ = $$self{PENDING}[-1][1]; - s{([A-Z])([A-Z]+)}{((length($2) > 2) ? $1 : lc($1)) . lc($2)}ge; - s/\s*$/:/ unless (/:\s*$/); - $_ .= "\n"; - $$self{PENDING}[-1][1] = $_; - } - if ($$self{USAGE_SKIPPING}) { - pop @{ $$self{PENDING} }; - } else { - $self->SUPER::_handle_element_end($element); - } -} - -sub start_document { - my $self = shift; - $self->SUPER::start_document(); - my $msg = $self->{USAGE_OPTIONS}->{-message} or return 1; - my $out_fh = $self->output_fh(); - print $out_fh "$msg\n"; -} - -sub begin_pod { - my $self = shift; - $self->SUPER::begin_pod(); ## Have to call superclass - my $msg = $self->{USAGE_OPTIONS}->{-message} or return 1; - my $out_fh = $self->output_handle(); - print $out_fh "$msg\n"; -} - -sub preprocess_paragraph { - my $self = shift; - local $_ = shift; - my $line = shift; - ## See if this is a heading and we arent printing the entire manpage. - if (($self->{USAGE_OPTIONS}->{-verbose} < 2) && /^=head/) { - ## Change the title of the SYNOPSIS section to USAGE - s/^=head1\s+SYNOPSIS\s*$/=head1 USAGE/; - ## Try to do some lowercasing instead of all-caps in headings - s{([A-Z])([A-Z]+)}{((length($2) > 2) ? $1 : lc($1)) . lc($2)}ge; - ## Use a colon to end all headings - s/\s*$/:/ unless (/:\s*$/); - $_ .= "\n"; - } - return $self->SUPER::preprocess_paragraph($_); -} - -1; # keep require happy diff --git a/Master/tlpkg/tlperl.old/lib/Safe.pm b/Master/tlpkg/tlperl.old/lib/Safe.pm deleted file mode 100644 index e2a608023ca..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Safe.pm +++ /dev/null @@ -1,576 +0,0 @@ -package Safe; - -use 5.003_11; -use strict; - -$Safe::VERSION = "2.12"; - -# *** Don't declare any lexicals above this point *** -# -# This function should return a closure which contains an eval that can't -# see any lexicals in scope (apart from __ExPr__ which is unavoidable) - -sub lexless_anon_sub { - # $_[0] is package; - # $_[1] is strict flag; - my $__ExPr__ = $_[2]; # must be a lexical to create the closure that - # can be used to pass the value into the safe - # world - - # Create anon sub ref in root of compartment. - # Uses a closure (on $__ExPr__) to pass in the code to be executed. - # (eval on one line to keep line numbers as expected by caller) - eval sprintf - 'package %s; %s strict; sub { @_=(); eval q[my $__ExPr__;] . $__ExPr__; }', - $_[0], $_[1] ? 'use' : 'no'; -} - -use Carp; -use Carp::Heavy; - -use Opcode 1.01, qw( - opset opset_to_ops opmask_add - empty_opset full_opset invert_opset verify_opset - opdesc opcodes opmask define_optag opset_to_hex -); - -*ops_to_opset = \&opset; # Temporary alias for old Penguins - - -my $default_root = 0; -my $default_share = ['*_']; #, '*main::']; - -sub new { - my($class, $root, $mask) = @_; - my $obj = {}; - bless $obj, $class; - - if (defined($root)) { - croak "Can't use \"$root\" as root name" - if $root =~ /^main\b/ or $root !~ /^\w[:\w]*$/; - $obj->{Root} = $root; - $obj->{Erase} = 0; - } - else { - $obj->{Root} = "Safe::Root".$default_root++; - $obj->{Erase} = 1; - } - - # use permit/deny methods instead till interface issues resolved - # XXX perhaps new Safe 'Root', mask => $mask, foo => bar, ...; - croak "Mask parameter to new no longer supported" if defined $mask; - $obj->permit_only(':default'); - - # We must share $_ and @_ with the compartment or else ops such - # as split, length and so on won't default to $_ properly, nor - # will passing argument to subroutines work (via @_). In fact, - # for reasons I don't completely understand, we need to share - # the whole glob *_ rather than $_ and @_ separately, otherwise - # @_ in non default packages within the compartment don't work. - $obj->share_from('main', $default_share); - Opcode::_safe_pkg_prep($obj->{Root}) if($Opcode::VERSION > 1.04); - return $obj; -} - -sub DESTROY { - my $obj = shift; - $obj->erase('DESTROY') if $obj->{Erase}; -} - -sub erase { - my ($obj, $action) = @_; - my $pkg = $obj->root(); - my ($stem, $leaf); - - no strict 'refs'; - $pkg = "main::$pkg\::"; # expand to full symbol table name - ($stem, $leaf) = $pkg =~ m/(.*::)(\w+::)$/; - - # The 'my $foo' is needed! Without it you get an - # 'Attempt to free unreferenced scalar' warning! - my $stem_symtab = *{$stem}{HASH}; - - #warn "erase($pkg) stem=$stem, leaf=$leaf"; - #warn " stem_symtab hash ".scalar(%$stem_symtab)."\n"; - # ", join(', ', %$stem_symtab),"\n"; - -# delete $stem_symtab->{$leaf}; - - my $leaf_glob = $stem_symtab->{$leaf}; - my $leaf_symtab = *{$leaf_glob}{HASH}; -# warn " leaf_symtab ", join(', ', %$leaf_symtab),"\n"; - %$leaf_symtab = (); - #delete $leaf_symtab->{'__ANON__'}; - #delete $leaf_symtab->{'foo'}; - #delete $leaf_symtab->{'main::'}; -# my $foo = undef ${"$stem\::"}{"$leaf\::"}; - - if ($action and $action eq 'DESTROY') { - delete $stem_symtab->{$leaf}; - } else { - $obj->share_from('main', $default_share); - } - 1; -} - - -sub reinit { - my $obj= shift; - $obj->erase; - $obj->share_redo; -} - -sub root { - my $obj = shift; - croak("Safe root method now read-only") if @_; - return $obj->{Root}; -} - - -sub mask { - my $obj = shift; - return $obj->{Mask} unless @_; - $obj->deny_only(@_); -} - -# v1 compatibility methods -sub trap { shift->deny(@_) } -sub untrap { shift->permit(@_) } - -sub deny { - my $obj = shift; - $obj->{Mask} |= opset(@_); -} -sub deny_only { - my $obj = shift; - $obj->{Mask} = opset(@_); -} - -sub permit { - my $obj = shift; - # XXX needs testing - $obj->{Mask} &= invert_opset opset(@_); -} -sub permit_only { - my $obj = shift; - $obj->{Mask} = invert_opset opset(@_); -} - - -sub dump_mask { - my $obj = shift; - print opset_to_hex($obj->{Mask}),"\n"; -} - - - -sub share { - my($obj, @vars) = @_; - $obj->share_from(scalar(caller), \@vars); -} - -sub share_from { - my $obj = shift; - my $pkg = shift; - my $vars = shift; - my $no_record = shift || 0; - my $root = $obj->root(); - croak("vars not an array ref") unless ref $vars eq 'ARRAY'; - no strict 'refs'; - # Check that 'from' package actually exists - croak("Package \"$pkg\" does not exist") - unless keys %{"$pkg\::"}; - my $arg; - foreach $arg (@$vars) { - # catch some $safe->share($var) errors: - croak("'$arg' not a valid symbol table name") - unless $arg =~ /^[\$\@%*&]?\w[\w:]*$/ - or $arg =~ /^\$\W$/; - my ($var, $type); - $type = $1 if ($var = $arg) =~ s/^(\W)//; - # warn "share_from $pkg $type $var"; - *{$root."::$var"} = (!$type) ? \&{$pkg."::$var"} - : ($type eq '&') ? \&{$pkg."::$var"} - : ($type eq '$') ? \${$pkg."::$var"} - : ($type eq '@') ? \@{$pkg."::$var"} - : ($type eq '%') ? \%{$pkg."::$var"} - : ($type eq '*') ? *{$pkg."::$var"} - : croak(qq(Can't share "$type$var" of unknown type)); - } - $obj->share_record($pkg, $vars) unless $no_record or !$vars; -} - -sub share_record { - my $obj = shift; - my $pkg = shift; - my $vars = shift; - my $shares = \%{$obj->{Shares} ||= {}}; - # Record shares using keys of $obj->{Shares}. See reinit. - @{$shares}{@$vars} = ($pkg) x @$vars if @$vars; -} -sub share_redo { - my $obj = shift; - my $shares = \%{$obj->{Shares} ||= {}}; - my($var, $pkg); - while(($var, $pkg) = each %$shares) { - # warn "share_redo $pkg\:: $var"; - $obj->share_from($pkg, [ $var ], 1); - } -} -sub share_forget { - delete shift->{Shares}; -} - -sub varglob { - my ($obj, $var) = @_; - no strict 'refs'; - return *{$obj->root()."::$var"}; -} - - -sub reval { - my ($obj, $expr, $strict) = @_; - my $root = $obj->{Root}; - - my $evalsub = lexless_anon_sub($root,$strict, $expr); - return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub); -} - -sub rdo { - my ($obj, $file) = @_; - my $root = $obj->{Root}; - - my $evalsub = eval - sprintf('package %s; sub { @_ = (); do $file }', $root); - return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub); -} - - -1; - -__END__ - -=head1 NAME - -Safe - Compile and execute code in restricted compartments - -=head1 SYNOPSIS - - use Safe; - - $compartment = new Safe; - - $compartment->permit(qw(time sort :browse)); - - $result = $compartment->reval($unsafe_code); - -=head1 DESCRIPTION - -The Safe extension module allows the creation of compartments -in which perl code can be evaluated. Each compartment has - -=over 8 - -=item a new namespace - -The "root" of the namespace (i.e. "main::") is changed to a -different package and code evaluated in the compartment cannot -refer to variables outside this namespace, even with run-time -glob lookups and other tricks. - -Code which is compiled outside the compartment can choose to place -variables into (or I<share> variables with) the compartment's namespace -and only that data will be visible to code evaluated in the -compartment. - -By default, the only variables shared with compartments are the -"underscore" variables $_ and @_ (and, technically, the less frequently -used %_, the _ filehandle and so on). This is because otherwise perl -operators which default to $_ will not work and neither will the -assignment of arguments to @_ on subroutine entry. - -=item an operator mask - -Each compartment has an associated "operator mask". Recall that -perl code is compiled into an internal format before execution. -Evaluating perl code (e.g. via "eval" or "do 'file'") causes -the code to be compiled into an internal format and then, -provided there was no error in the compilation, executed. -Code evaluated in a compartment compiles subject to the -compartment's operator mask. Attempting to evaluate code in a -compartment which contains a masked operator will cause the -compilation to fail with an error. The code will not be executed. - -The default operator mask for a newly created compartment is -the ':default' optag. - -It is important that you read the Opcode(3) module documentation -for more information, especially for detailed definitions of opnames, -optags and opsets. - -Since it is only at the compilation stage that the operator mask -applies, controlled access to potentially unsafe operations can -be achieved by having a handle to a wrapper subroutine (written -outside the compartment) placed into the compartment. For example, - - $cpt = new Safe; - sub wrapper { - # vet arguments and perform potentially unsafe operations - } - $cpt->share('&wrapper'); - -=back - - -=head1 WARNING - -The authors make B<no warranty>, implied or otherwise, about the -suitability of this software for safety or security purposes. - -The authors shall not in any case be liable for special, incidental, -consequential, indirect or other similar damages arising from the use -of this software. - -Your mileage will vary. If in any doubt B<do not use it>. - - -=head2 RECENT CHANGES - -The interface to the Safe module has changed quite dramatically since -version 1 (as supplied with Perl5.002). Study these pages carefully if -you have code written to use Safe version 1 because you will need to -makes changes. - - -=head2 Methods in class Safe - -To create a new compartment, use - - $cpt = new Safe; - -Optional argument is (NAMESPACE), where NAMESPACE is the root namespace -to use for the compartment (defaults to "Safe::Root0", incremented for -each new compartment). - -Note that version 1.00 of the Safe module supported a second optional -parameter, MASK. That functionality has been withdrawn pending deeper -consideration. Use the permit and deny methods described below. - -The following methods can then be used on the compartment -object returned by the above constructor. The object argument -is implicit in each case. - - -=over 8 - -=item permit (OP, ...) - -Permit the listed operators to be used when compiling code in the -compartment (in I<addition> to any operators already permitted). - -You can list opcodes by names, or use a tag name; see -L<Opcode/"Predefined Opcode Tags">. - -=item permit_only (OP, ...) - -Permit I<only> the listed operators to be used when compiling code in -the compartment (I<no> other operators are permitted). - -=item deny (OP, ...) - -Deny the listed operators from being used when compiling code in the -compartment (other operators may still be permitted). - -=item deny_only (OP, ...) - -Deny I<only> the listed operators from being used when compiling code -in the compartment (I<all> other operators will be permitted). - -=item trap (OP, ...) - -=item untrap (OP, ...) - -The trap and untrap methods are synonyms for deny and permit -respectfully. - -=item share (NAME, ...) - -This shares the variable(s) in the argument list with the compartment. -This is almost identical to exporting variables using the L<Exporter> -module. - -Each NAME must be the B<name> of a non-lexical variable, typically -with the leading type identifier included. A bareword is treated as a -function name. - -Examples of legal names are '$foo' for a scalar, '@foo' for an -array, '%foo' for a hash, '&foo' or 'foo' for a subroutine and '*foo' -for a glob (i.e. all symbol table entries associated with "foo", -including scalar, array, hash, sub and filehandle). - -Each NAME is assumed to be in the calling package. See share_from -for an alternative method (which share uses). - -=item share_from (PACKAGE, ARRAYREF) - -This method is similar to share() but allows you to explicitly name the -package that symbols should be shared from. The symbol names (including -type characters) are supplied as an array reference. - - $safe->share_from('main', [ '$foo', '%bar', 'func' ]); - - -=item varglob (VARNAME) - -This returns a glob reference for the symbol table entry of VARNAME in -the package of the compartment. VARNAME must be the B<name> of a -variable without any leading type marker. For example, - - $cpt = new Safe 'Root'; - $Root::foo = "Hello world"; - # Equivalent version which doesn't need to know $cpt's package name: - ${$cpt->varglob('foo')} = "Hello world"; - - -=item reval (STRING) - -This evaluates STRING as perl code inside the compartment. - -The code can only see the compartment's namespace (as returned by the -B<root> method). The compartment's root package appears to be the -C<main::> package to the code inside the compartment. - -Any attempt by the code in STRING to use an operator which is not permitted -by the compartment will cause an error (at run-time of the main program -but at compile-time for the code in STRING). The error is of the form -"'%s' trapped by operation mask...". - -If an operation is trapped in this way, then the code in STRING will -not be executed. If such a trapped operation occurs or any other -compile-time or return error, then $@ is set to the error message, just -as with an eval(). - -If there is no error, then the method returns the value of the last -expression evaluated, or a return statement may be used, just as with -subroutines and B<eval()>. The context (list or scalar) is determined -by the caller as usual. - -This behaviour differs from the beta distribution of the Safe extension -where earlier versions of perl made it hard to mimic the return -behaviour of the eval() command and the context was always scalar. - -Some points to note: - -If the entereval op is permitted then the code can use eval "..." to -'hide' code which might use denied ops. This is not a major problem -since when the code tries to execute the eval it will fail because the -opmask is still in effect. However this technique would allow clever, -and possibly harmful, code to 'probe' the boundaries of what is -possible. - -Any string eval which is executed by code executing in a compartment, -or by code called from code executing in a compartment, will be eval'd -in the namespace of the compartment. This is potentially a serious -problem. - -Consider a function foo() in package pkg compiled outside a compartment -but shared with it. Assume the compartment has a root package called -'Root'. If foo() contains an eval statement like eval '$foo = 1' then, -normally, $pkg::foo will be set to 1. If foo() is called from the -compartment (by whatever means) then instead of setting $pkg::foo, the -eval will actually set $Root::pkg::foo. - -This can easily be demonstrated by using a module, such as the Socket -module, which uses eval "..." as part of an AUTOLOAD function. You can -'use' the module outside the compartment and share an (autoloaded) -function with the compartment. If an autoload is triggered by code in -the compartment, or by any code anywhere that is called by any means -from the compartment, then the eval in the Socket module's AUTOLOAD -function happens in the namespace of the compartment. Any variables -created or used by the eval'd code are now under the control of -the code in the compartment. - -A similar effect applies to I<all> runtime symbol lookups in code -called from a compartment but not compiled within it. - - - -=item rdo (FILENAME) - -This evaluates the contents of file FILENAME inside the compartment. -See above documentation on the B<reval> method for further details. - -=item root (NAMESPACE) - -This method returns the name of the package that is the root of the -compartment's namespace. - -Note that this behaviour differs from version 1.00 of the Safe module -where the root module could be used to change the namespace. That -functionality has been withdrawn pending deeper consideration. - -=item mask (MASK) - -This is a get-or-set method for the compartment's operator mask. - -With no MASK argument present, it returns the current operator mask of -the compartment. - -With the MASK argument present, it sets the operator mask for the -compartment (equivalent to calling the deny_only method). - -=back - - -=head2 Some Safety Issues - -This section is currently just an outline of some of the things code in -a compartment might do (intentionally or unintentionally) which can -have an effect outside the compartment. - -=over 8 - -=item Memory - -Consuming all (or nearly all) available memory. - -=item CPU - -Causing infinite loops etc. - -=item Snooping - -Copying private information out of your system. Even something as -simple as your user name is of value to others. Much useful information -could be gleaned from your environment variables for example. - -=item Signals - -Causing signals (especially SIGFPE and SIGALARM) to affect your process. - -Setting up a signal handler will need to be carefully considered -and controlled. What mask is in effect when a signal handler -gets called? If a user can get an imported function to get an -exception and call the user's signal handler, does that user's -restricted mask get re-instated before the handler is called? -Does an imported handler get called with its original mask or -the user's one? - -=item State Changes - -Ops such as chdir obviously effect the process as a whole and not just -the code in the compartment. Ops such as rand and srand have a similar -but more subtle effect. - -=back - -=head2 AUTHOR - -Originally designed and implemented by Malcolm Beattie, -mbeattie@sable.ox.ac.uk. - -Reworked to use the Opcode module and other changes added by Tim Bunce -E<lt>F<Tim.Bunce@ig.co.uk>E<gt>. - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Scalar/Util.pm b/Master/tlpkg/tlperl.old/lib/Scalar/Util.pm deleted file mode 100644 index 4ae525a17c0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Scalar/Util.pm +++ /dev/null @@ -1,147 +0,0 @@ -# Scalar::Util.pm -# -# Copyright (c) 1997-2005 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; - -use strict; -use vars qw(@ISA @EXPORT_OK $VERSION); -require Exporter; -require List::Util; # List::Util loads the XS - -@ISA = qw(Exporter); -@EXPORT_OK = qw(blessed dualvar reftype weaken isweak tainted readonly openhandle refaddr isvstring looks_like_number set_prototype); -$VERSION = "1.18"; -$VERSION = eval $VERSION; - -sub export_fail { - if (grep { /^(weaken|isweak)$/ } @_ ) { - require Carp; - Carp::croak("Weak references are not implemented in the version of perl"); - } - if (grep { /^(isvstring)$/ } @_ ) { - require Carp; - Carp::croak("Vstrings are not implemented in the version of perl"); - } - if (grep { /^(dualvar|set_prototype)$/ } @_ ) { - require Carp; - Carp::croak("$1 is only avaliable with the XS 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; -} - -eval <<'ESQ' unless defined &dualvar; - -use vars qw(@EXPORT_FAIL); -push @EXPORT_FAIL, qw(weaken isweak dualvar isvstring set_prototype); - -# The code beyond here is only used if the XS is not installed - -# Hope nobody defines a sub by this name -sub UNIVERSAL::a_sub_not_likely_to_be_here { ref($_[0]) } - -sub blessed ($) { - local($@, $SIG{__DIE__}, $SIG{__WARN__}); - length(ref($_[0])) - ? eval { $_[0]->a_sub_not_likely_to_be_here } - : undef -} - -sub refaddr($) { - my $pkg = ref($_[0]) or return undef; - if (blessed($_[0])) { - bless $_[0], 'Scalar::Util::Fake'; - } - else { - $pkg = undef; - } - "$_[0]" =~ /0x(\w+)/; - my $i = do { local $^W; hex $1 }; - bless $_[0], $pkg if defined $pkg; - $i; -} - -sub reftype ($) { - local($@, $SIG{__DIE__}, $SIG{__WARN__}); - my $r = shift; - my $t; - - length($t = ref($r)) or return undef; - - # This eval will fail if the reference is not blessed - eval { $r->a_sub_not_likely_to_be_here; 1 } - ? do { - $t = eval { - # we have a GLOB or an IO. Stringify a GLOB gives it's name - my $q = *$r; - $q =~ /^\*/ ? "GLOB" : "IO"; - } - or do { - # OK, if we don't have a GLOB what parts of - # a glob will it populate. - # NOTE: A glob always has a SCALAR - local *glob = $r; - defined *glob{ARRAY} && "ARRAY" - or defined *glob{HASH} && "HASH" - or defined *glob{CODE} && "CODE" - or length(ref(${$r})) ? "REF" : "SCALAR"; - } - } - : $t -} - -sub tainted { - local($@, $SIG{__DIE__}, $SIG{__WARN__}); - local $^W = 0; - eval { kill 0 * $_[0] }; - $@ =~ /^Insecure/; -} - -sub readonly { - return 0 if tied($_[0]) || (ref(\($_[0])) ne "SCALAR"); - - local($@, $SIG{__DIE__}, $SIG{__WARN__}); - my $tmp = $_[0]; - - !eval { $_[0] = $tmp; 1 }; -} - -sub looks_like_number { - local $_ = shift; - - # checks from perlfaq4 - return 0 if !defined($_) or ref($_); - return 1 if (/^[+-]?\d+$/); # is a +/- integer - return 1 if (/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/); # a C float - return 1 if ($] >= 5.008 and /^(Inf(inity)?|NaN)$/i) or ($] >= 5.006001 and /^Inf$/i); - - 0; -} - -ESQ - -1; - -__END__ - diff --git a/Master/tlpkg/tlperl.old/lib/SelectSaver.pm b/Master/tlpkg/tlperl.old/lib/SelectSaver.pm deleted file mode 100644 index 1207b88a4a2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/SelectSaver.pm +++ /dev/null @@ -1,54 +0,0 @@ -package SelectSaver; - -our $VERSION = '1.01'; - -=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 $self = $_[0]; - select $$self; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Symbol.pm b/Master/tlpkg/tlperl.old/lib/Symbol.pm deleted file mode 100644 index 3bb5d9240c1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Symbol.pm +++ /dev/null @@ -1,170 +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. - -=head1 BUGS - -C<Symbol::delete_package> is a bit too powerful. It undefines every symbol that -lives in the specified package. Since perl, for performance reasons, does not -perform a symbol table lookup each time a function is called or a global -variable is accessed, some code that has already been loaded and that makes use -of symbols in package C<Foo> may stop working after you delete C<Foo>, even if -you reload the C<Foo> module afterwards. - -=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.06'; - -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/tlpkg/tlperl.old/lib/Term/ANSIColor.pm b/Master/tlpkg/tlperl.old/lib/Term/ANSIColor.pm deleted file mode 100644 index 9320fa06b23..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Term/ANSIColor.pm +++ /dev/null @@ -1,472 +0,0 @@ -# Term::ANSIColor -- Color screen output using ANSI escape sequences. -# $Id: ANSIColor.pm,v 1.10 2005/08/21 18:31:58 eagle Exp $ -# -# Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005 -# by Russ Allbery <rra@stanford.edu> and Zenin -# -# This program is free software; you may redistribute it and/or modify it -# under the same terms as Perl itself. -# -# Ah, September, when the sysadmins turn colors and fall off the trees.... -# -- Dave Van Domelen - -############################################################################## -# Modules and declarations -############################################################################## - -package Term::ANSIColor; -require 5.001; - -use strict; -use vars qw($AUTOLOAD $AUTORESET $EACHLINE @ISA @EXPORT @EXPORT_OK - %EXPORT_TAGS $VERSION %attributes %attributes_r); - -use Exporter (); -@ISA = qw(Exporter); -@EXPORT = qw(color colored); -@EXPORT_OK = qw(uncolor); -%EXPORT_TAGS = (constants => [qw(CLEAR RESET BOLD DARK UNDERLINE UNDERSCORE - BLINK REVERSE CONCEALED BLACK RED GREEN - YELLOW BLUE MAGENTA CYAN WHITE ON_BLACK - ON_RED ON_GREEN ON_YELLOW ON_BLUE ON_MAGENTA - ON_CYAN ON_WHITE)]); -Exporter::export_ok_tags ('constants'); - -# Don't use the CVS revision as the version, since this module is also in Perl -# core and too many things could munge CVS magic revision strings. -$VERSION = '1.10'; - -############################################################################## -# Internal data structures -############################################################################## - -%attributes = ('clear' => 0, - 'reset' => 0, - 'bold' => 1, - 'dark' => 2, - 'underline' => 4, - 'underscore' => 4, - 'blink' => 5, - 'reverse' => 7, - 'concealed' => 8, - - 'black' => 30, 'on_black' => 40, - 'red' => 31, 'on_red' => 41, - 'green' => 32, 'on_green' => 42, - 'yellow' => 33, 'on_yellow' => 43, - 'blue' => 34, 'on_blue' => 44, - 'magenta' => 35, 'on_magenta' => 45, - 'cyan' => 36, 'on_cyan' => 46, - 'white' => 37, 'on_white' => 47); - -# Reverse lookup. Alphabetically first name for a sequence is preferred. -for (reverse sort keys %attributes) { - $attributes_r{$attributes{$_}} = $_; -} - -############################################################################## -# Implementation (constant form) -############################################################################## - -# Time to have fun! We now want to define the constant subs, which are named -# the same as the attributes above but in all caps. Each constant sub needs -# to act differently depending on whether $AUTORESET is set. Without -# autoreset: -# -# BLUE "text\n" ==> "\e[34mtext\n" -# -# If $AUTORESET is set, we should instead get: -# -# BLUE "text\n" ==> "\e[34mtext\n\e[0m" -# -# The sub also needs to handle the case where it has no arguments correctly. -# Maintaining all of this as separate subs would be a major nightmare, as well -# as duplicate the %attributes hash, so instead we define an AUTOLOAD sub to -# define the constant subs on demand. To do that, we check the name of the -# called sub against the list of attributes, and if it's an all-caps version -# of one of them, we define the sub on the fly and then run it. -# -# If the environment variable ANSI_COLORS_DISABLED is set, turn all of the -# generated subs into pass-through functions that don't add any escape -# sequences. This is to make it easier to write scripts that also work on -# systems without any ANSI support, like Windows consoles. -sub AUTOLOAD { - my $enable_colors = !defined $ENV{ANSI_COLORS_DISABLED}; - my $sub; - ($sub = $AUTOLOAD) =~ s/^.*:://; - my $attr = $attributes{lc $sub}; - if ($sub =~ /^[A-Z_]+$/ && defined $attr) { - $attr = $enable_colors ? "\e[" . $attr . 'm' : ''; - eval qq { - sub $AUTOLOAD { - if (\$AUTORESET && \@_) { - '$attr' . "\@_" . "\e[0m"; - } else { - ('$attr' . "\@_"); - } - } - }; - goto &$AUTOLOAD; - } else { - require Carp; - Carp::croak ("undefined subroutine &$AUTOLOAD called"); - } -} - -############################################################################## -# Implementation (attribute string form) -############################################################################## - -# Return the escape code for a given set of color attributes. -sub color { - return '' if defined $ENV{ANSI_COLORS_DISABLED}; - my @codes = map { split } @_; - my $attribute = ''; - foreach (@codes) { - $_ = lc $_; - unless (defined $attributes{$_}) { - require Carp; - Carp::croak ("Invalid attribute name $_"); - } - $attribute .= $attributes{$_} . ';'; - } - chop $attribute; - ($attribute ne '') ? "\e[${attribute}m" : undef; -} - -# Return a list of named color attributes for a given set of escape codes. -# Escape sequences can be given with or without enclosing "\e[" and "m". The -# empty escape sequence '' or "\e[m" gives an empty list of attrs. -sub uncolor { - my (@nums, @result); - for (@_) { - my $escape = $_; - $escape =~ s/^\e\[//; - $escape =~ s/m$//; - unless ($escape =~ /^((?:\d+;)*\d*)$/) { - require Carp; - Carp::croak ("Bad escape sequence $_"); - } - push (@nums, split (/;/, $1)); - } - for (@nums) { - $_ += 0; # Strip leading zeroes - my $name = $attributes_r{$_}; - if (!defined $name) { - require Carp; - Carp::croak ("No name for escape sequence $_" ); - } - push (@result, $name); - } - @result; -} - -# Given a string and a set of attributes, returns the string surrounded by -# escape codes to set those attributes and then clear them at the end of the -# string. The attributes can be given either as an array ref as the first -# argument or as a list as the second and subsequent arguments. If $EACHLINE -# is set, insert a reset before each occurrence of the string $EACHLINE and -# the starting attribute code after the string $EACHLINE, so that no attribute -# crosses line delimiters (this is often desirable if the output is to be -# piped to a pager or some other program). -sub colored { - my ($string, @codes); - if (ref $_[0]) { - @codes = @{+shift}; - $string = join ('', @_); - } else { - $string = shift; - @codes = @_; - } - return $string if defined $ENV{ANSI_COLORS_DISABLED}; - if (defined $EACHLINE) { - my $attr = color (@codes); - join '', - map { $_ ne $EACHLINE ? $attr . $_ . "\e[0m" : $_ } - grep { length ($_) > 0 } - split (/(\Q$EACHLINE\E)/, $string); - } else { - color (@codes) . $string . "\e[0m"; - } -} - -############################################################################## -# Module return value and documentation -############################################################################## - -# Ensure we evaluate to true. -1; -__END__ - -=head1 NAME - -Term::ANSIColor - Color screen output using ANSI escape sequences - -=head1 SYNOPSIS - - use Term::ANSIColor; - print color 'bold blue'; - print "This text is bold blue.\n"; - print color 'reset'; - print "This text is normal.\n"; - print colored ("Yellow on magenta.\n", 'yellow on_magenta'); - print "This text is normal.\n"; - print colored ['yellow on_magenta'], "Yellow on magenta.\n"; - - use Term::ANSIColor qw(uncolor); - print uncolor '01;31', "\n"; - - use Term::ANSIColor qw(:constants); - print BOLD, BLUE, "This text is in bold blue.\n", RESET; - - use Term::ANSIColor qw(:constants); - $Term::ANSIColor::AUTORESET = 1; - print BOLD BLUE "This text is in bold blue.\n"; - print "This text is normal.\n"; - -=head1 DESCRIPTION - -This module has two interfaces, one through color() and colored() and the -other through constants. It also offers the utility function uncolor(), -which has to be explicitly imported to be used (see L<SYNOPSIS>). - -color() takes any number of strings as arguments and considers them to be -space-separated lists of attributes. It then forms and returns the escape -sequence to set those attributes. It doesn't print it out, just returns it, -so you'll have to print it yourself if you want to (this is so that you can -save it as a string, pass it to something else, send it to a file handle, or -do anything else with it that you might care to). - -uncolor() performs the opposite translation, turning escape sequences -into a list of strings. - -The recognized attributes (all of which should be fairly intuitive) are -clear, reset, dark, bold, underline, underscore, blink, reverse, concealed, -black, red, green, yellow, blue, magenta, on_black, on_red, on_green, -on_yellow, on_blue, on_magenta, on_cyan, and on_white. Case is not -significant. Underline and underscore are equivalent, as are clear and -reset, so use whichever is the most intuitive to you. The color alone sets -the foreground color, and on_color sets the background color. - -Note that not all attributes are supported by all terminal types, and some -terminals may not support any of these sequences. Dark, blink, and -concealed in particular are frequently not implemented. - -Attributes, once set, last until they are unset (by sending the attribute -"reset"). Be careful to do this, or otherwise your attribute will last -after your script is done running, and people get very annoyed at having -their prompt and typing changed to weird colors. - -As an aid to help with this, colored() takes a scalar as the first argument -and any number of attribute strings as the second argument and returns the -scalar wrapped in escape codes so that the attributes will be set as -requested before the string and reset to normal after the string. -Alternately, you can pass a reference to an array as the first argument, and -then the contents of that array will be taken as attributes and color codes -and the remainder of the arguments as text to colorize. - -Normally, colored() just puts attribute codes at the beginning and end of -the string, but if you set $Term::ANSIColor::EACHLINE to some string, that -string will be considered the line delimiter and the attribute will be set -at the beginning of each line of the passed string and reset at the end of -each line. This is often desirable if the output is being sent to a program -like a pager that can be confused by attributes that span lines. Normally -you'll want to set $Term::ANSIColor::EACHLINE to C<"\n"> to use this -feature. - -Alternately, if you import C<:constants>, you can use the constants CLEAR, -RESET, BOLD, DARK, UNDERLINE, UNDERSCORE, BLINK, REVERSE, CONCEALED, BLACK, -RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, ON_BLACK, ON_RED, ON_GREEN, -ON_YELLOW, ON_BLUE, ON_MAGENTA, ON_CYAN, and ON_WHITE directly. These are -the same as color('attribute') and can be used if you prefer typing: - - print BOLD BLUE ON_WHITE "Text\n", RESET; - -to - - print colored ("Text\n", 'bold blue on_white'); - -When using the constants, if you don't want to have to remember to add the -C<, RESET> at the end of each print line, you can set -$Term::ANSIColor::AUTORESET to a true value. Then, the display mode will -automatically be reset if there is no comma after the constant. In other -words, with that variable set: - - print BOLD BLUE "Text\n"; - -will reset the display mode afterwards, whereas: - - print BOLD, BLUE, "Text\n"; - -will not. - -The subroutine interface has the advantage over the constants interface in -that only two subroutines are exported into your namespace, versus -twenty-two in the constants interface. On the flip side, the constants -interface has the advantage of better compile time error checking, since -misspelled names of colors or attributes in calls to color() and colored() -won't be caught until runtime whereas misspelled names of constants will be -caught at compile time. So, polute your namespace with almost two dozen -subroutines that you may not even use that often, or risk a silly bug by -mistyping an attribute. Your choice, TMTOWTDI after all. - -=head1 DIAGNOSTICS - -=over 4 - -=item Bad escape sequence %s - -(F) You passed an invalid ANSI escape sequence to uncolor(). - -=item Bareword "%s" not allowed while "strict subs" in use - -(F) You probably mistyped a constant color name such as: - - $Foobar = FOOBAR . "This line should be blue\n"; - -or: - - @Foobar = FOOBAR, "This line should be blue\n"; - -This will only show up under use strict (another good reason to run under -use strict). - -=item Invalid attribute name %s - -(F) You passed an invalid attribute name to either color() or colored(). - -=item Name "%s" used only once: possible typo - -(W) You probably mistyped a constant color name such as: - - print FOOBAR "This text is color FOOBAR\n"; - -It's probably better to always use commas after constant names in order to -force the next error. - -=item No comma allowed after filehandle - -(F) You probably mistyped a constant color name such as: - - print FOOBAR, "This text is color FOOBAR\n"; - -Generating this fatal compile error is one of the main advantages of using -the constants interface, since you'll immediately know if you mistype a -color name. - -=item No name for escape sequence %s - -(F) The ANSI escape sequence passed to uncolor() contains escapes which -aren't recognized and can't be translated to names. - -=back - -=head1 ENVIRONMENT - -=over 4 - -=item ANSI_COLORS_DISABLED - -If this environment variable is set, all of the functions defined by this -module (color(), colored(), and all of the constants not previously used in -the program) will not output any escape sequences and instead will just -return the empty string or pass through the original text as appropriate. -This is intended to support easy use of scripts using this module on -platforms that don't support ANSI escape sequences. - -For it to have its proper effect, this environment variable must be set -before any color constants are used in the program. - -=back - -=head1 RESTRICTIONS - -It would be nice if one could leave off the commas around the constants -entirely and just say: - - print BOLD BLUE ON_WHITE "Text\n" RESET; - -but the syntax of Perl doesn't allow this. You need a comma after the -string. (Of course, you may consider it a bug that commas between all the -constants aren't required, in which case you may feel free to insert commas -unless you're using $Term::ANSIColor::AUTORESET.) - -For easier debuging, you may prefer to always use the commas when not -setting $Term::ANSIColor::AUTORESET so that you'll get a fatal compile error -rather than a warning. - -=head1 NOTES - -The codes generated by this module are standard terminal control codes, -complying with ECMA-48 and ISO 6429 (generally referred to as "ANSI color" -for the color codes). The non-color control codes (bold, dark, italic, -underline, and reverse) are part of the earlier ANSI X3.64 standard for -control sequences for video terminals and peripherals. - -Note that not all displays are ISO 6429-compliant, or even X3.64-compliant -(or are even attempting to be so). This module will not work as expected on -displays that do not honor these escape sequences, such as cmd.exe, 4nt.exe, -and command.com under either Windows NT or Windows 2000. They may just be -ignored, or they may display as an ESC character followed by some apparent -garbage. - -Jean Delvare provided the following table of different common terminal -emulators and their support for the various attributes and others have helped -me flesh it out: - - clear bold dark under blink reverse conceal - ------------------------------------------------------------------------ - xterm yes yes no yes bold yes yes - linux yes yes yes bold yes yes no - rxvt yes yes no yes bold/black yes no - dtterm yes yes yes yes reverse yes yes - teraterm yes reverse no yes rev/red yes no - aixterm kinda normal no yes no yes yes - PuTTY yes color no yes no yes no - Windows yes no no no no yes no - Cygwin SSH yes yes no color color color yes - Mac Terminal yes yes no yes yes yes yes - -Windows is Windows telnet, Cygwin SSH is the OpenSSH implementation under -Cygwin on Windows NT, and Mac Terminal is the Terminal application in Mac OS -X. Where the entry is other than yes or no, that emulator displays the -given attribute as something else instead. Note that on an aixterm, clear -doesn't reset colors; you have to explicitly set the colors back to what you -want. More entries in this table are welcome. - -Note that codes 3 (italic), 6 (rapid blink), and 9 (strikethrough) are -specified in ANSI X3.64 and ECMA-048 but are not commonly supported by most -displays and emulators and therefore aren't supported by this module at the -present time. ECMA-048 also specifies a large number of other attributes, -including a sequence of attributes for font changes, Fraktur characters, -double-underlining, framing, circling, and overlining. As none of these -attributes are widely supported or useful, they also aren't currently -supported by this module. - -=head1 SEE ALSO - -ECMA-048 is available on-line (at least at the time of this writing) at -L<http://www.ecma-international.org/publications/standards/ECMA-048.HTM>. - -ISO 6429 is available from ISO for a charge; the author of this module does -not own a copy of it. Since the source material for ISO 6429 was ECMA-048 -and the latter is available for free, there seems little reason to obtain -the ISO standard. - -The current version of this module is always available from its web site at -L<http://www.eyrie.org/~eagle/software/ansicolor/>. It is also part of the -Perl core distribution as of 5.6.0. - -=head1 AUTHORS - -Original idea (using constants) by Zenin, reimplemented using subs by Russ -Allbery <rra@stanford.edu>, and then combined with the original idea by Russ -with input from Zenin. Russ Allbery now maintains this module. - -=head1 COPYRIGHT AND LICENSE - -Copyright 1996, 1997, 1998, 2000, 2001, 2002 Russ Allbery <rra@stanford.edu> -and Zenin. This program is free software; you may redistribute it and/or -modify it under the same terms as Perl itself. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Term/Cap.pm b/Master/tlpkg/tlperl.old/lib/Term/Cap.pm deleted file mode 100644 index b71c51ceba4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Term/Cap.pm +++ /dev/null @@ -1,669 +0,0 @@ -package Term::Cap; - -# Since the debugger uses Term::ReadLine which uses Term::Cap, we want -# to load as few modules as possible. This includes Carp.pm. -sub carp { - require Carp; - goto &Carp::carp; -} - -sub croak { - require Carp; - goto &Carp::croak; -} - -use strict; - -use vars qw($VERSION $VMS_TERMCAP); -use vars qw($termpat $state $first $entry); - -$VERSION = '1.09'; - -# 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 -# Version 1.08: Sat Sep 28 11:33:15 BST 2002 -# Late loading of 'Carp' as per Michael Schwern -# Version 1.09: Tue Apr 20 12:06:51 BST 2004 -# Merged in changes from and to Core -# Core (Fri Aug 30 14:15:55 CEST 2002): -# Cope with comments lines from 'infocmp' from Brendan O'Dea -# Allow for EBCDIC in Tgoto magic test. - -# 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`; - $tmp =~ s/^#.*\n//gm; # remove comments - 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/tlpkg/tlperl.old/lib/Term/Complete.pm b/Master/tlpkg/tlperl.old/lib/Term/Complete.pm deleted file mode 100644 index 601e4956430..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Term/Complete.pm +++ /dev/null @@ -1,188 +0,0 @@ -package Term::Complete; -require 5.000; -require Exporter; - -use strict; -our @ISA = qw(Exporter); -our @EXPORT = qw(Complete); -our $VERSION = '1.402'; - -# @(#)complete.pl,v1.2 (me@anywhere.EBay.Sun.COM) 09/23/91 - -=head1 NAME - -Term::Complete - Perl word completion module - -=head1 SYNOPSIS - - $input = Complete('prompt_string', \@completion_list); - $input = Complete('prompt_string', @completion_list); - -=head1 DESCRIPTION - -This routine provides word completion on the list of words in -the array (or array ref). - -The tty driver is put into raw mode and restored using an operating -system specific command, in UNIX-like environments C<stty>. - -The following command characters are defined: - -=over 4 - -=item E<lt>tabE<gt> - -Attempts word completion. -Cannot be changed. - -=item ^D - -Prints completion list. -Defined by I<$Term::Complete::complete>. - -=item ^U - -Erases the current input. -Defined by I<$Term::Complete::kill>. - -=item E<lt>delE<gt>, E<lt>bsE<gt> - -Erases one character. -Defined by I<$Term::Complete::erase1> and I<$Term::Complete::erase2>. - -=back - -=head1 DIAGNOSTICS - -Bell sounds when word completion fails. - -=head1 BUGS - -The completion character E<lt>tabE<gt> cannot be changed. - -=head1 AUTHOR - -Wayne Thompson - -=cut - -our($complete, $kill, $erase1, $erase2, $tty_raw_noecho, $tty_restore, $stty, $tty_safe_restore); -our($tty_saved_state) = ''; -CONFIG: { - $complete = "\004"; - $kill = "\025"; - $erase1 = "\177"; - $erase2 = "\010"; - foreach my $s (qw(/bin/stty /usr/bin/stty)) { - if (-x $s) { - $tty_raw_noecho = "$s raw -echo"; - $tty_restore = "$s -raw echo"; - $tty_safe_restore = $tty_restore; - $stty = $s; - last; - } - } -} - -sub Complete { - my($prompt, @cmp_lst, $cmp, $test, $l, @match); - my ($return, $r) = ("", 0); - - $return = ""; - $r = 0; - - $prompt = shift; - if (ref $_[0] || $_[0] =~ /^\*/) { - @cmp_lst = sort @{$_[0]}; - } - else { - @cmp_lst = sort(@_); - } - - # Attempt to save the current stty state, to be restored later - if (defined $stty && defined $tty_saved_state && $tty_saved_state eq '') { - $tty_saved_state = qx($stty -g 2>/dev/null); - if ($?) { - # stty -g not supported - $tty_saved_state = undef; - } - else { - $tty_saved_state =~ s/\s+$//g; - $tty_restore = qq($stty "$tty_saved_state" 2>/dev/null); - } - } - system $tty_raw_noecho if defined $tty_raw_noecho; - LOOP: { - local $_; - print($prompt, $return); - while (($_ = getc(STDIN)) ne "\r") { - CASE: { - # (TAB) attempt completion - $_ eq "\t" && do { - @match = grep(/^\Q$return/, @cmp_lst); - unless ($#match < 0) { - $l = length($test = shift(@match)); - foreach $cmp (@match) { - until (substr($cmp, 0, $l) eq substr($test, 0, $l)) { - $l--; - } - } - print("\a"); - print($test = substr($test, $r, $l - $r)); - $r = length($return .= $test); - } - last CASE; - }; - - # (^D) completion list - $_ eq $complete && do { - print(join("\r\n", '', grep(/^\Q$return/, @cmp_lst)), "\r\n"); - redo LOOP; - }; - - # (^U) kill - $_ eq $kill && do { - if ($r) { - $r = 0; - $return = ""; - print("\r\n"); - redo LOOP; - } - last CASE; - }; - - # (DEL) || (BS) erase - ($_ eq $erase1 || $_ eq $erase2) && do { - if($r) { - print("\b \b"); - chop($return); - $r--; - } - last CASE; - }; - - # printable char - ord >= 32 && do { - $return .= $_; - $r++; - print; - last CASE; - }; - } - } - } - - # system $tty_restore if defined $tty_restore; - if (defined $tty_saved_state && defined $tty_restore && defined $tty_safe_restore) - { - system $tty_restore; - if ($?) { - # tty_restore caused error - system $tty_safe_restore; - } - } - print("\n"); - $return; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Term/ReadLine.pm b/Master/tlpkg/tlperl.old/lib/Term/ReadLine.pm deleted file mode 100644 index 48eb9911a6f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Term/ReadLine.pm +++ /dev/null @@ -1,399 +0,0 @@ -=head1 NAME - -Term::ReadLine - Perl interface to various C<readline> packages. -If no real package is found, substitutes stubs instead of basic functions. - -=head1 SYNOPSIS - - use Term::ReadLine; - my $term = new Term::ReadLine 'Simple Perl calc'; - my $prompt = "Enter your arithmetic expression: "; - my $OUT = $term->OUT || \*STDOUT; - while ( defined ($_ = $term->readline($prompt)) ) { - my $res = eval($_); - warn $@ if $@; - print $OUT $res, "\n" unless $@; - $term->addhistory($_) if /\S/; - } - -=head1 DESCRIPTION - -This package is just a front end to some other packages. It's a stub to -set up a common interface to the various ReadLine implementations found on -CPAN (under the C<Term::ReadLine::*> namespace). - -=head1 Minimal set of supported functions - -All the supported functions should be called as methods, i.e., either as - - $term = new Term::ReadLine 'name'; - -or as - - $term->addhistory('row'); - -where $term is a return value of Term::ReadLine-E<gt>new(). - -=over 12 - -=item C<ReadLine> - -returns the actual package that executes the commands. Among possible -values are C<Term::ReadLine::Gnu>, C<Term::ReadLine::Perl>, -C<Term::ReadLine::Stub>. - -=item C<new> - -returns the handle for subsequent calls to following -functions. Argument is the name of the application. Optionally can be -followed by two arguments for C<IN> and C<OUT> filehandles. These -arguments should be globs. - -=item C<readline> - -gets an input line, I<possibly> with actual C<readline> -support. Trailing newline is removed. Returns C<undef> on C<EOF>. - -=item C<addhistory> - -adds the line to the history of input, from where it can be used if -the actual C<readline> is present. - -=item C<IN>, C<OUT> - -return the filehandles for input and output or C<undef> if C<readline> -input and output cannot be used for Perl. - -=item C<MinLine> - -If argument is specified, it is an advice on minimal size of line to -be included into history. C<undef> means do not include anything into -history. Returns the old value. - -=item C<findConsole> - -returns an array with two strings that give most appropriate names for -files for input and output using conventions C<"E<lt>$in">, C<"E<gt>out">. - -=item Attribs - -returns a reference to a hash which describes internal configuration -of the package. Names of keys in this hash conform to standard -conventions with the leading C<rl_> stripped. - -=item C<Features> - -Returns a reference to a hash with keys being features present in -current implementation. Several optional features are used in the -minimal interface: C<appname> should be present if the first argument -to C<new> is recognized, and C<minline> should be present if -C<MinLine> method is not dummy. C<autohistory> should be present if -lines are put into history automatically (maybe subject to -C<MinLine>), and C<addhistory> if C<addhistory> method is not dummy. - -If C<Features> method reports a feature C<attribs> as present, the -method C<Attribs> is not dummy. - -=back - -=head1 Additional supported functions - -Actually C<Term::ReadLine> can use some other package, that will -support a richer set of commands. - -All these commands are callable via method interface and have names -which conform to standard conventions with the leading C<rl_> stripped. - -The stub package included with the perl distribution allows some -additional methods: - -=over 12 - -=item C<tkRunning> - -makes Tk event loop run when waiting for user input (i.e., during -C<readline> method). - -=item C<ornaments> - -makes the command line stand out by using termcap data. The argument -to C<ornaments> should be 0, 1, or a string of a form -C<"aa,bb,cc,dd">. Four components of this string should be names of -I<terminal capacities>, first two will be issued to make the prompt -standout, last two to make the input line standout. - -=item C<newTTY> - -takes two arguments which are input filehandle and output filehandle. -Switches to use these filehandles. - -=back - -One can check whether the currently loaded ReadLine package supports -these methods by checking for corresponding C<Features>. - -=head1 EXPORTS - -None - -=head1 ENVIRONMENT - -The environment variable C<PERL_RL> governs which ReadLine clone is -loaded. If the value is false, a dummy interface is used. If the value -is true, it should be tail of the name of the package to use, such as -C<Perl> or C<Gnu>. - -As a special case, if the value of this variable is space-separated, -the tail might be used to disable the ornaments by setting the tail to -be C<o=0> or C<ornaments=0>. The head should be as described above, say - -If the variable is not set, or if the head of space-separated list is -empty, the best available package is loaded. - - export "PERL_RL=Perl o=0" # Use Perl ReadLine without ornaments - export "PERL_RL= o=0" # Use best available ReadLine without ornaments - -(Note that processing of C<PERL_RL> for ornaments is in the discretion of the -particular used C<Term::ReadLine::*> package). - -=head1 CAVEATS - -It seems that using Term::ReadLine from Emacs minibuffer doesn't work -quite right and one will get an error message like - - Cannot open /dev/tty for read at ... - -One possible workaround for this is to explicitly open /dev/tty like this - - open (FH, "/dev/tty" ) - or eval 'sub Term::ReadLine::findConsole { ("&STDIN", "&STDERR") }'; - die $@ if $@; - close (FH); - -or you can try using the 4-argument form of Term::ReadLine->new(). - -=cut - -use strict; - -package Term::ReadLine::Stub; -our @ISA = qw'Term::ReadLine::Tk Term::ReadLine::TermCap'; - -$DB::emacs = $DB::emacs; # To peacify -w -our @rl_term_set; -*rl_term_set = \@Term::ReadLine::TermCap::rl_term_set; - -sub PERL_UNICODE_STDIN () { 0x0001 } - -sub ReadLine {'Term::ReadLine::Stub'} -sub readline { - my $self = shift; - my ($in,$out,$str) = @$self; - my $prompt = shift; - print $out $rl_term_set[0], $prompt, $rl_term_set[1], $rl_term_set[2]; - $self->register_Tk - if not $Term::ReadLine::registered and $Term::ReadLine::toloop - and defined &Tk::DoOneEvent; - #$str = scalar <$in>; - $str = $self->get_line; - $str =~ s/^\s*\Q$prompt\E// if ($^O eq 'MacOS'); - utf8::upgrade($str) - if (${^UNICODE} & PERL_UNICODE_STDIN || defined ${^ENCODING}) && - utf8::valid($str); - print $out $rl_term_set[3]; - # bug in 5.000: chomping empty string creats length -1: - chomp $str if defined $str; - $str; -} -sub addhistory {} - -sub findConsole { - my $console; - - if ($^O eq 'MacOS') { - $console = "Dev:Console"; - } elsif (-e "/dev/tty") { - $console = "/dev/tty"; - } elsif (-e "con" or $^O eq 'MSWin32') { - $console = "con"; - } else { - $console = "sys\$command"; - } - - if (($^O eq 'amigaos') || ($^O eq 'beos') || ($^O eq 'epoc')) { - $console = undef; - } - elsif ($^O eq 'os2') { - if ($DB::emacs) { - $console = undef; - } else { - $console = "/dev/con"; - } - } - - my $consoleOUT = $console; - $console = "&STDIN" unless defined $console; - if (!defined $consoleOUT) { - $consoleOUT = defined fileno(STDERR) ? "&STDERR" : "&STDOUT"; - } - ($console,$consoleOUT); -} - -sub new { - die "method new called with wrong number of arguments" - unless @_==2 or @_==4; - #local (*FIN, *FOUT); - my ($FIN, $FOUT, $ret); - if (@_==2) { - my($console, $consoleOUT) = $_[0]->findConsole; - - open(FIN, "<$console"); - open(FOUT,">$consoleOUT"); - #OUT->autoflush(1); # Conflicts with debugger? - my $sel = select(FOUT); - $| = 1; # for DB::OUT - select($sel); - $ret = bless [\*FIN, \*FOUT]; - } else { # Filehandles supplied - $FIN = $_[2]; $FOUT = $_[3]; - #OUT->autoflush(1); # Conflicts with debugger? - my $sel = select($FOUT); - $| = 1; # for DB::OUT - select($sel); - $ret = bless [$FIN, $FOUT]; - } - if ($ret->Features->{ornaments} - and not ($ENV{PERL_RL} and $ENV{PERL_RL} =~ /\bo\w*=0/)) { - local $Term::ReadLine::termcap_nowarn = 1; - $ret->ornaments(1); - } - return $ret; -} - -sub newTTY { - my ($self, $in, $out) = @_; - $self->[0] = $in; - $self->[1] = $out; - my $sel = select($out); - $| = 1; # for DB::OUT - select($sel); -} - -sub IN { shift->[0] } -sub OUT { shift->[1] } -sub MinLine { undef } -sub Attribs { {} } - -my %features = (tkRunning => 1, ornaments => 1, 'newTTY' => 1); -sub Features { \%features } - -package Term::ReadLine; # So late to allow the above code be defined? - -our $VERSION = '1.02'; - -my ($which) = exists $ENV{PERL_RL} ? split /\s+/, $ENV{PERL_RL} : undef; -if ($which) { - if ($which =~ /\bgnu\b/i){ - eval "use Term::ReadLine::Gnu;"; - } elsif ($which =~ /\bperl\b/i) { - eval "use Term::ReadLine::Perl;"; - } else { - eval "use Term::ReadLine::$which;"; - } -} elsif (defined $which and $which ne '') { # Defined but false - # Do nothing fancy -} else { - eval "use Term::ReadLine::Gnu; 1" or eval "use Term::ReadLine::Perl; 1"; -} - -#require FileHandle; - -# To make possible switch off RL in debugger: (Not needed, work done -# in debugger). -our @ISA; -if (defined &Term::ReadLine::Gnu::readline) { - @ISA = qw(Term::ReadLine::Gnu Term::ReadLine::Stub); -} elsif (defined &Term::ReadLine::Perl::readline) { - @ISA = qw(Term::ReadLine::Perl Term::ReadLine::Stub); -} elsif (defined $which && defined &{"Term::ReadLine::$which\::readline"}) { - @ISA = "Term::ReadLine::$which"; -} else { - @ISA = qw(Term::ReadLine::Stub); -} - -package Term::ReadLine::TermCap; - -# Prompt-start, prompt-end, command-line-start, command-line-end -# -- zero-width beautifies to emit around prompt and the command line. -our @rl_term_set = ("","","",""); -# string encoded: -our $rl_term_set = ',,,'; - -our $terminal; -sub LoadTermCap { - return if defined $terminal; - - require Term::Cap; - $terminal = Tgetent Term::Cap ({OSPEED => 9600}); # Avoid warning. -} - -sub ornaments { - shift; - return $rl_term_set unless @_; - $rl_term_set = shift; - $rl_term_set ||= ',,,'; - $rl_term_set = 'us,ue,md,me' if $rl_term_set eq '1'; - my @ts = split /,/, $rl_term_set, 4; - eval { LoadTermCap }; - unless (defined $terminal) { - warn("Cannot find termcap: $@\n") unless $Term::ReadLine::termcap_nowarn; - $rl_term_set = ',,,'; - return; - } - @rl_term_set = map {$_ ? $terminal->Tputs($_,1) || '' : ''} @ts; - return $rl_term_set; -} - - -package Term::ReadLine::Tk; - -our($count_handle, $count_DoOne, $count_loop); -$count_handle = $count_DoOne = $count_loop = 0; - -our($giveup); -sub handle {$giveup = 1; $count_handle++} - -sub Tk_loop { - # Tk->tkwait('variable',\$giveup); # needs Widget - $count_DoOne++, Tk::DoOneEvent(0) until $giveup; - $count_loop++; - $giveup = 0; -} - -sub register_Tk { - my $self = shift; - $Term::ReadLine::registered++ - or Tk->fileevent($self->IN,'readable',\&handle); -} - -sub tkRunning { - $Term::ReadLine::toloop = $_[1] if @_ > 1; - $Term::ReadLine::toloop; -} - -sub get_c { - my $self = shift; - $self->Tk_loop if $Term::ReadLine::toloop && defined &Tk::DoOneEvent; - return getc $self->IN; -} - -sub get_line { - my $self = shift; - $self->Tk_loop if $Term::ReadLine::toloop && defined &Tk::DoOneEvent; - my $in = $self->IN; - local ($/) = "\n"; - return scalar <$in>; -} - -1; - diff --git a/Master/tlpkg/tlperl.old/lib/Text/Abbrev.pm b/Master/tlpkg/tlperl.old/lib/Text/Abbrev.pm deleted file mode 100644 index c6be63bcc60..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Text/Abbrev.pm +++ /dev/null @@ -1,84 +0,0 @@ -package Text::Abbrev; -require 5.005; # Probably works on earlier versions too. -require Exporter; - -our $VERSION = '1.01'; - -=head1 NAME - -abbrev - create an abbreviation table from a list - -=head1 SYNOPSIS - - use Text::Abbrev; - abbrev $hashref, LIST - - -=head1 DESCRIPTION - -Stores all unambiguous truncations of each element of LIST -as keys in the associative array referenced by C<$hashref>. -The values are the original list elements. - -=head1 EXAMPLE - - $hashref = abbrev qw(list edit send abort gripe); - - %hash = abbrev qw(list edit send abort gripe); - - abbrev $hashref, qw(list edit send abort gripe); - - abbrev(*hash, qw(list edit send abort gripe)); - -=cut - -@ISA = qw(Exporter); -@EXPORT = qw(abbrev); - -# Usage: -# abbrev \%foo, LIST; -# ... -# $long = $foo{$short}; - -sub abbrev { - my ($word, $hashref, $glob, %table, $returnvoid); - - @_ or return; # So we don't autovivify onto @_ and trigger warning - if (ref($_[0])) { # hash reference preferably - $hashref = shift; - $returnvoid = 1; - } elsif (ref \$_[0] eq 'GLOB') { # is actually a glob (deprecated) - $hashref = \%{shift()}; - $returnvoid = 1; - } - %{$hashref} = (); - - WORD: foreach $word (@_) { - for (my $len = (length $word) - 1; $len > 0; --$len) { - my $abbrev = substr($word,0,$len); - my $seen = ++$table{$abbrev}; - if ($seen == 1) { # We're the first word so far to have - # this abbreviation. - $hashref->{$abbrev} = $word; - } elsif ($seen == 2) { # We're the second word to have this - # abbreviation, so we can't use it. - delete $hashref->{$abbrev}; - } else { # We're the third word to have this - # abbreviation, so skip to the next word. - next WORD; - } - } - } - # Non-abbreviations always get entered, even if they aren't unique - foreach $word (@_) { - $hashref->{$word} = $word; - } - return if $returnvoid; - if (wantarray) { - %{$hashref}; - } else { - $hashref; - } -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Text/Balanced.pm b/Master/tlpkg/tlperl.old/lib/Text/Balanced.pm deleted file mode 100644 index 820ae255a71..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Text/Balanced.pm +++ /dev/null @@ -1,2302 +0,0 @@ -# EXTRACT VARIOUSLY DELIMITED TEXT SEQUENCES FROM STRINGS. -# FOR FULL DOCUMENTATION SEE Balanced.pod - -use 5.005; -use strict; - -package Text::Balanced; - -use Exporter; -use SelfLoader; -use vars qw { $VERSION @ISA %EXPORT_TAGS }; - -$VERSION = '1.95'; -@ISA = qw ( Exporter ); - -%EXPORT_TAGS = ( ALL => [ qw( - &extract_delimited - &extract_bracketed - &extract_quotelike - &extract_codeblock - &extract_variable - &extract_tagged - &extract_multiple - - &gen_delimited_pat - &gen_extract_tagged - - &delimited_pat - ) ] ); - -Exporter::export_ok_tags('ALL'); - -# PROTOTYPES - -sub _match_bracketed($$$$$$); -sub _match_variable($$); -sub _match_codeblock($$$$$$$); -sub _match_quotelike($$$$); - -# HANDLE RETURN VALUES IN VARIOUS CONTEXTS - -sub _failmsg { - my ($message, $pos) = @_; - $@ = bless { error=>$message, pos=>$pos }, "Text::Balanced::ErrorMsg"; -} - -sub _fail -{ - my ($wantarray, $textref, $message, $pos) = @_; - _failmsg $message, $pos if $message; - return ("",$$textref,"") if $wantarray; - return undef; -} - -sub _succeed -{ - $@ = undef; - my ($wantarray,$textref) = splice @_, 0, 2; - my ($extrapos, $extralen) = @_>18 ? splice(@_, -2, 2) : (0,0); - my ($startlen) = $_[5]; - my $remainderpos = $_[2]; - if ($wantarray) - { - my @res; - while (my ($from, $len) = splice @_, 0, 2) - { - push @res, substr($$textref,$from,$len); - } - if ($extralen) { # CORRECT FILLET - my $extra = substr($res[0], $extrapos-$startlen, $extralen, "\n"); - $res[1] = "$extra$res[1]"; - eval { substr($$textref,$remainderpos,0) = $extra; - substr($$textref,$extrapos,$extralen,"\n")} ; - #REARRANGE HERE DOC AND FILLET IF POSSIBLE - pos($$textref) = $remainderpos-$extralen+1; # RESET \G - } - else { - pos($$textref) = $remainderpos; # RESET \G - } - return @res; - } - else - { - my $match = substr($$textref,$_[0],$_[1]); - substr($match,$extrapos-$_[0]-$startlen,$extralen,"") if $extralen; - my $extra = $extralen - ? substr($$textref, $extrapos, $extralen)."\n" : ""; - eval {substr($$textref,$_[4],$_[1]+$_[5])=$extra} ; #CHOP OUT PREFIX & MATCH, IF POSSIBLE - pos($$textref) = $_[4]; # RESET \G - return $match; - } -} - -# BUILD A PATTERN MATCHING A SIMPLE DELIMITED STRING - -sub gen_delimited_pat($;$) # ($delimiters;$escapes) -{ - my ($dels, $escs) = @_; - return "" unless $dels =~ /\S/; - $escs = '\\' unless $escs; - $escs .= substr($escs,-1) x (length($dels)-length($escs)); - my @pat = (); - my $i; - for ($i=0; $i<length $dels; $i++) - { - my $del = quotemeta substr($dels,$i,1); - my $esc = quotemeta substr($escs,$i,1); - if ($del eq $esc) - { - push @pat, "$del(?:[^$del]*(?:(?:$del$del)[^$del]*)*)$del"; - } - else - { - push @pat, "$del(?:[^$esc$del]*(?:$esc.[^$esc$del]*)*)$del"; - } - } - my $pat = join '|', @pat; - return "(?:$pat)"; -} - -*delimited_pat = \&gen_delimited_pat; - - -# THE EXTRACTION FUNCTIONS - -sub extract_delimited (;$$$$) -{ - my $textref = defined $_[0] ? \$_[0] : \$_; - my $wantarray = wantarray; - my $del = defined $_[1] ? $_[1] : qq{\'\"\`}; - my $pre = defined $_[2] ? $_[2] : '\s*'; - my $esc = defined $_[3] ? $_[3] : qq{\\}; - my $pat = gen_delimited_pat($del, $esc); - my $startpos = pos $$textref || 0; - return _fail($wantarray, $textref, "Not a delimited pattern", 0) - unless $$textref =~ m/\G($pre)($pat)/gc; - my $prelen = length($1); - my $matchpos = $startpos+$prelen; - my $endpos = pos $$textref; - return _succeed $wantarray, $textref, - $matchpos, $endpos-$matchpos, # MATCH - $endpos, length($$textref)-$endpos, # REMAINDER - $startpos, $prelen; # PREFIX -} - -sub extract_bracketed (;$$$) -{ - my $textref = defined $_[0] ? \$_[0] : \$_; - my $ldel = defined $_[1] ? $_[1] : '{([<'; - my $pre = defined $_[2] ? $_[2] : '\s*'; - my $wantarray = wantarray; - my $qdel = ""; - my $quotelike; - $ldel =~ s/'//g and $qdel .= q{'}; - $ldel =~ s/"//g and $qdel .= q{"}; - $ldel =~ s/`//g and $qdel .= q{`}; - $ldel =~ s/q//g and $quotelike = 1; - $ldel =~ tr/[](){}<>\0-\377/[[(({{<</ds; - my $rdel = $ldel; - unless ($rdel =~ tr/[({</])}>/) - { - return _fail $wantarray, $textref, - "Did not find a suitable bracket in delimiter: \"$_[1]\"", - 0; - } - my $posbug = pos; - $ldel = join('|', map { quotemeta $_ } split('', $ldel)); - $rdel = join('|', map { quotemeta $_ } split('', $rdel)); - pos = $posbug; - - my $startpos = pos $$textref || 0; - my @match = _match_bracketed($textref,$pre, $ldel, $qdel, $quotelike, $rdel); - - return _fail ($wantarray, $textref) unless @match; - - return _succeed ( $wantarray, $textref, - $match[2], $match[5]+2, # MATCH - @match[8,9], # REMAINDER - @match[0,1], # PREFIX - ); -} - -sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rdel -{ - my ($textref, $pre, $ldel, $qdel, $quotelike, $rdel) = @_; - my ($startpos, $ldelpos, $endpos) = (pos $$textref = pos $$textref||0); - unless ($$textref =~ m/\G$pre/gc) - { - _failmsg "Did not find prefix: /$pre/", $startpos; - return; - } - - $ldelpos = pos $$textref; - - unless ($$textref =~ m/\G($ldel)/gc) - { - _failmsg "Did not find opening bracket after prefix: \"$pre\"", - pos $$textref; - pos $$textref = $startpos; - return; - } - - my @nesting = ( $1 ); - my $textlen = length $$textref; - while (pos $$textref < $textlen) - { - next if $$textref =~ m/\G\\./gcs; - - if ($$textref =~ m/\G($ldel)/gc) - { - push @nesting, $1; - } - elsif ($$textref =~ m/\G($rdel)/gc) - { - my ($found, $brackettype) = ($1, $1); - if ($#nesting < 0) - { - _failmsg "Unmatched closing bracket: \"$found\"", - pos $$textref; - pos $$textref = $startpos; - return; - } - my $expected = pop(@nesting); - $expected =~ tr/({[</)}]>/; - if ($expected ne $brackettype) - { - _failmsg qq{Mismatched closing bracket: expected "$expected" but found "$found"}, - pos $$textref; - pos $$textref = $startpos; - return; - } - last if $#nesting < 0; - } - elsif ($qdel && $$textref =~ m/\G([$qdel])/gc) - { - $$textref =~ m/\G[^\\$1]*(?:\\.[^\\$1]*)*(\Q$1\E)/gsc and next; - _failmsg "Unmatched embedded quote ($1)", - pos $$textref; - pos $$textref = $startpos; - return; - } - elsif ($quotelike && _match_quotelike($textref,"",1,0)) - { - next; - } - - else { $$textref =~ m/\G(?:[a-zA-Z0-9]+|.)/gcs } - } - if ($#nesting>=0) - { - _failmsg "Unmatched opening bracket(s): " - . join("..",@nesting)."..", - pos $$textref; - pos $$textref = $startpos; - return; - } - - $endpos = pos $$textref; - - return ( - $startpos, $ldelpos-$startpos, # PREFIX - $ldelpos, 1, # OPENING BRACKET - $ldelpos+1, $endpos-$ldelpos-2, # CONTENTS - $endpos-1, 1, # CLOSING BRACKET - $endpos, length($$textref)-$endpos, # REMAINDER - ); -} - -sub revbracket($) -{ - my $brack = reverse $_[0]; - $brack =~ tr/[({</])}>/; - return $brack; -} - -my $XMLNAME = q{[a-zA-Z_:][a-zA-Z0-9_:.-]*}; - -sub extract_tagged (;$$$$$) # ($text, $opentag, $closetag, $pre, \%options) -{ - my $textref = defined $_[0] ? \$_[0] : \$_; - my $ldel = $_[1]; - my $rdel = $_[2]; - my $pre = defined $_[3] ? $_[3] : '\s*'; - my %options = defined $_[4] ? %{$_[4]} : (); - my $omode = defined $options{fail} ? $options{fail} : ''; - my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}}) - : defined($options{reject}) ? $options{reject} - : '' - ; - my $ignore = ref($options{ignore}) eq 'ARRAY' ? join('|', @{$options{ignore}}) - : defined($options{ignore}) ? $options{ignore} - : '' - ; - - if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; } - $@ = undef; - - my @match = _match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore); - - return _fail(wantarray, $textref) unless @match; - return _succeed wantarray, $textref, - $match[2], $match[3]+$match[5]+$match[7], # MATCH - @match[8..9,0..1,2..7]; # REM, PRE, BITS -} - -sub _match_tagged # ($$$$$$$) -{ - my ($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore) = @_; - my $rdelspec; - - my ($startpos, $opentagpos, $textpos, $parapos, $closetagpos, $endpos) = ( pos($$textref) = pos($$textref)||0 ); - - unless ($$textref =~ m/\G($pre)/gc) - { - _failmsg "Did not find prefix: /$pre/", pos $$textref; - goto failed; - } - - $opentagpos = pos($$textref); - - unless ($$textref =~ m/\G$ldel/gc) - { - _failmsg "Did not find opening tag: /$ldel/", pos $$textref; - goto failed; - } - - $textpos = pos($$textref); - - if (!defined $rdel) - { - $rdelspec = $&; - unless ($rdelspec =~ s/\A([[(<{]+)($XMLNAME).*/ quotemeta "$1\/$2". revbracket($1) /oes) - { - _failmsg "Unable to construct closing tag to match: $rdel", - pos $$textref; - goto failed; - } - } - else - { - $rdelspec = eval "qq{$rdel}" || do { - my $del; - for (qw,~ ! ^ & * ) _ + - = } ] : " ; ' > . ? / | ',) - { next if $rdel =~ /\Q$_/; $del = $_; last } - unless ($del) { - use Carp; - croak "Can't interpolate right delimiter $rdel" - } - eval "qq$del$rdel$del"; - }; - } - - while (pos($$textref) < length($$textref)) - { - next if $$textref =~ m/\G\\./gc; - - if ($$textref =~ m/\G(\n[ \t]*\n)/gc ) - { - $parapos = pos($$textref) - length($1) - unless defined $parapos; - } - elsif ($$textref =~ m/\G($rdelspec)/gc ) - { - $closetagpos = pos($$textref)-length($1); - goto matched; - } - elsif ($ignore && $$textref =~ m/\G(?:$ignore)/gc) - { - next; - } - elsif ($bad && $$textref =~ m/\G($bad)/gcs) - { - pos($$textref) -= length($1); # CUT OFF WHATEVER CAUSED THE SHORTNESS - goto short if ($omode eq 'PARA' || $omode eq 'MAX'); - _failmsg "Found invalid nested tag: $1", pos $$textref; - goto failed; - } - elsif ($$textref =~ m/\G($ldel)/gc) - { - my $tag = $1; - pos($$textref) -= length($tag); # REWIND TO NESTED TAG - unless (_match_tagged(@_)) # MATCH NESTED TAG - { - goto short if $omode eq 'PARA' || $omode eq 'MAX'; - _failmsg "Found unbalanced nested tag: $tag", - pos $$textref; - goto failed; - } - } - else { $$textref =~ m/./gcs } - } - -short: - $closetagpos = pos($$textref); - goto matched if $omode eq 'MAX'; - goto failed unless $omode eq 'PARA'; - - if (defined $parapos) { pos($$textref) = $parapos } - else { $parapos = pos($$textref) } - - return ( - $startpos, $opentagpos-$startpos, # PREFIX - $opentagpos, $textpos-$opentagpos, # OPENING TAG - $textpos, $parapos-$textpos, # TEXT - $parapos, 0, # NO CLOSING TAG - $parapos, length($$textref)-$parapos, # REMAINDER - ); - -matched: - $endpos = pos($$textref); - return ( - $startpos, $opentagpos-$startpos, # PREFIX - $opentagpos, $textpos-$opentagpos, # OPENING TAG - $textpos, $closetagpos-$textpos, # TEXT - $closetagpos, $endpos-$closetagpos, # CLOSING TAG - $endpos, length($$textref)-$endpos, # REMAINDER - ); - -failed: - _failmsg "Did not find closing tag", pos $$textref unless $@; - pos($$textref) = $startpos; - return; -} - -sub extract_variable (;$$) -{ - my $textref = defined $_[0] ? \$_[0] : \$_; - return ("","","") unless defined $$textref; - my $pre = defined $_[1] ? $_[1] : '\s*'; - - my @match = _match_variable($textref,$pre); - - return _fail wantarray, $textref unless @match; - - return _succeed wantarray, $textref, - @match[2..3,4..5,0..1]; # MATCH, REMAINDER, PREFIX -} - -sub _match_variable($$) -{ -# $# -# $^ -# $$ - my ($textref, $pre) = @_; - my $startpos = pos($$textref) = pos($$textref)||0; - unless ($$textref =~ m/\G($pre)/gc) - { - _failmsg "Did not find prefix: /$pre/", pos $$textref; - return; - } - my $varpos = pos($$textref); - unless ($$textref =~ m{\G\$\s*(?!::)(\d+|[][&`'+*./|,";%=~:?!\@<>()-]|\^[a-z]?)}gci) - { - unless ($$textref =~ m/\G((\$#?|[*\@\%]|\\&)+)/gc) - { - _failmsg "Did not find leading dereferencer", pos $$textref; - pos $$textref = $startpos; - return; - } - my $deref = $1; - - unless ($$textref =~ m/\G\s*(?:::|')?(?:[_a-z]\w*(?:::|'))*[_a-z]\w*/gci - or _match_codeblock($textref, "", '\{', '\}', '\{', '\}', 0) - or $deref eq '$#' or $deref eq '$$' ) - { - _failmsg "Bad identifier after dereferencer", pos $$textref; - pos $$textref = $startpos; - return; - } - } - - while (1) - { - next if $$textref =~ m/\G\s*(?:->)?\s*[{]\w+[}]/gc; - next if _match_codeblock($textref, - qr/\s*->\s*(?:[_a-zA-Z]\w+\s*)?/, - qr/[({[]/, qr/[)}\]]/, - qr/[({[]/, qr/[)}\]]/, 0); - next if _match_codeblock($textref, - qr/\s*/, qr/[{[]/, qr/[}\]]/, - qr/[{[]/, qr/[}\]]/, 0); - next if _match_variable($textref,'\s*->\s*'); - next if $$textref =~ m/\G\s*->\s*\w+(?![{([])/gc; - last; - } - - my $endpos = pos($$textref); - return ($startpos, $varpos-$startpos, - $varpos, $endpos-$varpos, - $endpos, length($$textref)-$endpos - ); -} - -sub extract_codeblock (;$$$$$) -{ - my $textref = defined $_[0] ? \$_[0] : \$_; - my $wantarray = wantarray; - my $ldel_inner = defined $_[1] ? $_[1] : '{'; - my $pre = defined $_[2] ? $_[2] : '\s*'; - my $ldel_outer = defined $_[3] ? $_[3] : $ldel_inner; - my $rd = $_[4]; - my $rdel_inner = $ldel_inner; - my $rdel_outer = $ldel_outer; - my $posbug = pos; - for ($ldel_inner, $ldel_outer) { tr/[]()<>{}\0-\377/[[((<<{{/ds } - for ($rdel_inner, $rdel_outer) { tr/[]()<>{}\0-\377/]]))>>}}/ds } - for ($ldel_inner, $ldel_outer, $rdel_inner, $rdel_outer) - { - $_ = '('.join('|',map { quotemeta $_ } split('',$_)).')' - } - pos = $posbug; - - my @match = _match_codeblock($textref, $pre, - $ldel_outer, $rdel_outer, - $ldel_inner, $rdel_inner, - $rd); - return _fail($wantarray, $textref) unless @match; - return _succeed($wantarray, $textref, - @match[2..3,4..5,0..1] # MATCH, REMAINDER, PREFIX - ); - -} - -sub _match_codeblock($$$$$$$) -{ - my ($textref, $pre, $ldel_outer, $rdel_outer, $ldel_inner, $rdel_inner, $rd) = @_; - my $startpos = pos($$textref) = pos($$textref) || 0; - unless ($$textref =~ m/\G($pre)/gc) - { - _failmsg qq{Did not match prefix /$pre/ at"} . - substr($$textref,pos($$textref),20) . - q{..."}, - pos $$textref; - return; - } - my $codepos = pos($$textref); - unless ($$textref =~ m/\G($ldel_outer)/gc) # OUTERMOST DELIMITER - { - _failmsg qq{Did not find expected opening bracket at "} . - substr($$textref,pos($$textref),20) . - q{..."}, - pos $$textref; - pos $$textref = $startpos; - return; - } - my $closing = $1; - $closing =~ tr/([<{/)]>}/; - my $matched; - my $patvalid = 1; - while (pos($$textref) < length($$textref)) - { - $matched = ''; - if ($rd && $$textref =~ m#\G(\Q(?)\E|\Q(s?)\E|\Q(s)\E)#gc) - { - $patvalid = 0; - next; - } - - if ($$textref =~ m/\G\s*#.*/gc) - { - next; - } - - if ($$textref =~ m/\G\s*($rdel_outer)/gc) - { - unless ($matched = ($closing && $1 eq $closing) ) - { - next if $1 eq '>'; # MIGHT BE A "LESS THAN" - _failmsg q{Mismatched closing bracket at "} . - substr($$textref,pos($$textref),20) . - qq{...". Expected '$closing'}, - pos $$textref; - } - last; - } - - if (_match_variable($textref,'\s*') || - _match_quotelike($textref,'\s*',$patvalid,$patvalid) ) - { - $patvalid = 0; - next; - } - - - # NEED TO COVER MANY MORE CASES HERE!!! - if ($$textref =~ m#\G\s*(?!$ldel_inner) - ( [-+*x/%^&|.]=? - | [!=]~ - | =(?!>) - | (\*\*|&&|\|\||<<|>>)=? - | split|grep|map|return - | [([] - )#gcx) - { - $patvalid = 1; - next; - } - - if ( _match_codeblock($textref, '\s*', $ldel_inner, $rdel_inner, $ldel_inner, $rdel_inner, $rd) ) - { - $patvalid = 1; - next; - } - - if ($$textref =~ m/\G\s*$ldel_outer/gc) - { - _failmsg q{Improperly nested codeblock at "} . - substr($$textref,pos($$textref),20) . - q{..."}, - pos $$textref; - last; - } - - $patvalid = 0; - $$textref =~ m/\G\s*(\w+|[-=>]>|.|\Z)/gc; - } - continue { $@ = undef } - - unless ($matched) - { - _failmsg 'No match found for opening bracket', pos $$textref - unless $@; - return; - } - - my $endpos = pos($$textref); - return ( $startpos, $codepos-$startpos, - $codepos, $endpos-$codepos, - $endpos, length($$textref)-$endpos, - ); -} - - -my %mods = ( - 'none' => '[cgimsox]*', - 'm' => '[cgimsox]*', - 's' => '[cegimsox]*', - 'tr' => '[cds]*', - 'y' => '[cds]*', - 'qq' => '', - 'qx' => '', - 'qw' => '', - 'qr' => '[imsx]*', - 'q' => '', - ); - -sub extract_quotelike (;$$) -{ - my $textref = $_[0] ? \$_[0] : \$_; - my $wantarray = wantarray; - my $pre = defined $_[1] ? $_[1] : '\s*'; - - my @match = _match_quotelike($textref,$pre,1,0); - return _fail($wantarray, $textref) unless @match; - return _succeed($wantarray, $textref, - $match[2], $match[18]-$match[2], # MATCH - @match[18,19], # REMAINDER - @match[0,1], # PREFIX - @match[2..17], # THE BITS - @match[20,21], # ANY FILLET? - ); -}; - -sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match) -{ - my ($textref, $pre, $rawmatch, $qmark) = @_; - - my ($textlen,$startpos, - $oppos, - $preld1pos,$ld1pos,$str1pos,$rd1pos, - $preld2pos,$ld2pos,$str2pos,$rd2pos, - $modpos) = ( length($$textref), pos($$textref) = pos($$textref) || 0 ); - - unless ($$textref =~ m/\G($pre)/gc) - { - _failmsg qq{Did not find prefix /$pre/ at "} . - substr($$textref, pos($$textref), 20) . - q{..."}, - pos $$textref; - return; - } - $oppos = pos($$textref); - - my $initial = substr($$textref,$oppos,1); - - if ($initial && $initial =~ m|^[\"\'\`]| - || $rawmatch && $initial =~ m|^/| - || $qmark && $initial =~ m|^\?|) - { - unless ($$textref =~ m/ \Q$initial\E [^\\$initial]* (\\.[^\\$initial]*)* \Q$initial\E /gcsx) - { - _failmsg qq{Did not find closing delimiter to match '$initial' at "} . - substr($$textref, $oppos, 20) . - q{..."}, - pos $$textref; - pos $$textref = $startpos; - return; - } - $modpos= pos($$textref); - $rd1pos = $modpos-1; - - if ($initial eq '/' || $initial eq '?') - { - $$textref =~ m/\G$mods{none}/gc - } - - my $endpos = pos($$textref); - return ( - $startpos, $oppos-$startpos, # PREFIX - $oppos, 0, # NO OPERATOR - $oppos, 1, # LEFT DEL - $oppos+1, $rd1pos-$oppos-1, # STR/PAT - $rd1pos, 1, # RIGHT DEL - $modpos, 0, # NO 2ND LDEL - $modpos, 0, # NO 2ND STR - $modpos, 0, # NO 2ND RDEL - $modpos, $endpos-$modpos, # MODIFIERS - $endpos, $textlen-$endpos, # REMAINDER - ); - } - - unless ($$textref =~ m{\G(\b(?:m|s|qq|qx|qw|q|qr|tr|y)\b(?=\s*\S)|<<)}gc) - { - _failmsg q{No quotelike operator found after prefix at "} . - substr($$textref, pos($$textref), 20) . - q{..."}, - pos $$textref; - pos $$textref = $startpos; - return; - } - - my $op = $1; - $preld1pos = pos($$textref); - if ($op eq '<<') { - $ld1pos = pos($$textref); - my $label; - if ($$textref =~ m{\G([A-Za-z_]\w*)}gc) { - $label = $1; - } - elsif ($$textref =~ m{ \G ' ([^'\\]* (?:\\.[^'\\]*)*) ' - | \G " ([^"\\]* (?:\\.[^"\\]*)*) " - | \G ` ([^`\\]* (?:\\.[^`\\]*)*) ` - }gcsx) { - $label = $+; - } - else { - $label = ""; - } - my $extrapos = pos($$textref); - $$textref =~ m{.*\n}gc; - $str1pos = pos($$textref); - unless ($$textref =~ m{.*?\n(?=$label\n)}gc) { - _failmsg qq{Missing here doc terminator ('$label') after "} . - substr($$textref, $startpos, 20) . - q{..."}, - pos $$textref; - pos $$textref = $startpos; - return; - } - $rd1pos = pos($$textref); - $$textref =~ m{$label\n}gc; - $ld2pos = pos($$textref); - return ( - $startpos, $oppos-$startpos, # PREFIX - $oppos, length($op), # OPERATOR - $ld1pos, $extrapos-$ld1pos, # LEFT DEL - $str1pos, $rd1pos-$str1pos, # STR/PAT - $rd1pos, $ld2pos-$rd1pos, # RIGHT DEL - $ld2pos, 0, # NO 2ND LDEL - $ld2pos, 0, # NO 2ND STR - $ld2pos, 0, # NO 2ND RDEL - $ld2pos, 0, # NO MODIFIERS - $ld2pos, $textlen-$ld2pos, # REMAINDER - $extrapos, $str1pos-$extrapos, # FILLETED BIT - ); - } - - $$textref =~ m/\G\s*/gc; - $ld1pos = pos($$textref); - $str1pos = $ld1pos+1; - - unless ($$textref =~ m/\G(\S)/gc) # SHOULD USE LOOKAHEAD - { - _failmsg "No block delimiter found after quotelike $op", - pos $$textref; - pos $$textref = $startpos; - return; - } - pos($$textref) = $ld1pos; # HAVE TO DO THIS BECAUSE LOOKAHEAD BROKEN - my ($ldel1, $rdel1) = ("\Q$1","\Q$1"); - if ($ldel1 =~ /[[(<{]/) - { - $rdel1 =~ tr/[({</])}>/; - _match_bracketed($textref,"",$ldel1,"","",$rdel1) - || do { pos $$textref = $startpos; return }; - } - else - { - $$textref =~ /$ldel1[^\\$ldel1]*(\\.[^\\$ldel1]*)*$ldel1/gcs - || do { pos $$textref = $startpos; return }; - } - $ld2pos = $rd1pos = pos($$textref)-1; - - my $second_arg = $op =~ /s|tr|y/ ? 1 : 0; - if ($second_arg) - { - my ($ldel2, $rdel2); - if ($ldel1 =~ /[[(<{]/) - { - unless ($$textref =~ /\G\s*(\S)/gc) # SHOULD USE LOOKAHEAD - { - _failmsg "Missing second block for quotelike $op", - pos $$textref; - pos $$textref = $startpos; - return; - } - $ldel2 = $rdel2 = "\Q$1"; - $rdel2 =~ tr/[({</])}>/; - } - else - { - $ldel2 = $rdel2 = $ldel1; - } - $str2pos = $ld2pos+1; - - if ($ldel2 =~ /[[(<{]/) - { - pos($$textref)--; # OVERCOME BROKEN LOOKAHEAD - _match_bracketed($textref,"",$ldel2,"","",$rdel2) - || do { pos $$textref = $startpos; return }; - } - else - { - $$textref =~ /[^\\$ldel2]*(\\.[^\\$ldel2]*)*$ldel2/gcs - || do { pos $$textref = $startpos; return }; - } - $rd2pos = pos($$textref)-1; - } - else - { - $ld2pos = $str2pos = $rd2pos = $rd1pos; - } - - $modpos = pos $$textref; - - $$textref =~ m/\G($mods{$op})/gc; - my $endpos = pos $$textref; - - return ( - $startpos, $oppos-$startpos, # PREFIX - $oppos, length($op), # OPERATOR - $ld1pos, 1, # LEFT DEL - $str1pos, $rd1pos-$str1pos, # STR/PAT - $rd1pos, 1, # RIGHT DEL - $ld2pos, $second_arg, # 2ND LDEL (MAYBE) - $str2pos, $rd2pos-$str2pos, # 2ND STR (MAYBE) - $rd2pos, $second_arg, # 2ND RDEL (MAYBE) - $modpos, $endpos-$modpos, # MODIFIERS - $endpos, $textlen-$endpos, # REMAINDER - ); -} - -my $def_func = -[ - sub { extract_variable($_[0], '') }, - sub { extract_quotelike($_[0],'') }, - sub { extract_codeblock($_[0],'{}','') }, -]; - -sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreunknown) -{ - my $textref = defined($_[0]) ? \$_[0] : \$_; - my $posbug = pos; - my ($lastpos, $firstpos); - my @fields = (); - - #for ($$textref) - { - my @func = defined $_[1] ? @{$_[1]} : @{$def_func}; - my $max = defined $_[2] && $_[2]>0 ? $_[2] : 1_000_000_000; - my $igunk = $_[3]; - - pos $$textref ||= 0; - - unless (wantarray) - { - use Carp; - carp "extract_multiple reset maximal count to 1 in scalar context" - if $^W && defined($_[2]) && $max > 1; - $max = 1 - } - - my $unkpos; - my $func; - my $class; - - my @class; - foreach $func ( @func ) - { - if (ref($func) eq 'HASH') - { - push @class, (keys %$func)[0]; - $func = (values %$func)[0]; - } - else - { - push @class, undef; - } - } - - FIELD: while (pos($$textref) < length($$textref)) - { - my ($field, $rem); - my @bits; - foreach my $i ( 0..$#func ) - { - my $pref; - $func = $func[$i]; - $class = $class[$i]; - $lastpos = pos $$textref; - if (ref($func) eq 'CODE') - { ($field,$rem,$pref) = @bits = $func->($$textref); - # print "[$field|$rem]" if $field; - } - elsif (ref($func) eq 'Text::Balanced::Extractor') - { @bits = $field = $func->extract($$textref) } - elsif( $$textref =~ m/\G$func/gc ) - { @bits = $field = defined($1) ? $1 : $& } - $pref ||= ""; - if (defined($field) && length($field)) - { - if (!$igunk) { - $unkpos = pos $$textref - if length($pref) && !defined($unkpos); - if (defined $unkpos) - { - push @fields, substr($$textref, $unkpos, $lastpos-$unkpos).$pref; - $firstpos = $unkpos unless defined $firstpos; - undef $unkpos; - last FIELD if @fields == $max; - } - } - push @fields, $class - ? bless (\$field, $class) - : $field; - $firstpos = $lastpos unless defined $firstpos; - $lastpos = pos $$textref; - last FIELD if @fields == $max; - next FIELD; - } - } - if ($$textref =~ /\G(.)/gcs) - { - $unkpos = pos($$textref)-1 - unless $igunk || defined $unkpos; - } - } - - if (defined $unkpos) - { - push @fields, substr($$textref, $unkpos); - $firstpos = $unkpos unless defined $firstpos; - $lastpos = length $$textref; - } - last; - } - - pos $$textref = $lastpos; - return @fields if wantarray; - - $firstpos ||= 0; - eval { substr($$textref,$firstpos,$lastpos-$firstpos)=""; - pos $$textref = $firstpos }; - return $fields[0]; -} - - -sub gen_extract_tagged # ($opentag, $closetag, $pre, \%options) -{ - my $ldel = $_[0]; - my $rdel = $_[1]; - my $pre = defined $_[2] ? $_[2] : '\s*'; - my %options = defined $_[3] ? %{$_[3]} : (); - my $omode = defined $options{fail} ? $options{fail} : ''; - my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}}) - : defined($options{reject}) ? $options{reject} - : '' - ; - my $ignore = ref($options{ignore}) eq 'ARRAY' ? join('|', @{$options{ignore}}) - : defined($options{ignore}) ? $options{ignore} - : '' - ; - - if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; } - - my $posbug = pos; - for ($ldel, $pre, $bad, $ignore) { $_ = qr/$_/ if $_ } - pos = $posbug; - - my $closure = sub - { - my $textref = defined $_[0] ? \$_[0] : \$_; - my @match = Text::Balanced::_match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore); - - return _fail(wantarray, $textref) unless @match; - return _succeed wantarray, $textref, - $match[2], $match[3]+$match[5]+$match[7], # MATCH - @match[8..9,0..1,2..7]; # REM, PRE, BITS - }; - - bless $closure, 'Text::Balanced::Extractor'; -} - -package Text::Balanced::Extractor; - -sub extract($$) # ($self, $text) -{ - &{$_[0]}($_[1]); -} - -package Text::Balanced::ErrorMsg; - -use overload '""' => sub { "$_[0]->{error}, detected at offset $_[0]->{pos}" }; - -1; - -__END__ - -=head1 NAME - -Text::Balanced - Extract delimited text sequences from strings. - - -=head1 SYNOPSIS - - use Text::Balanced qw ( - extract_delimited - extract_bracketed - extract_quotelike - extract_codeblock - extract_variable - extract_tagged - extract_multiple - - gen_delimited_pat - gen_extract_tagged - ); - - # Extract the initial substring of $text that is delimited by - # two (unescaped) instances of the first character in $delim. - - ($extracted, $remainder) = extract_delimited($text,$delim); - - - # Extract the initial substring of $text that is bracketed - # with a delimiter(s) specified by $delim (where the string - # in $delim contains one or more of '(){}[]<>'). - - ($extracted, $remainder) = extract_bracketed($text,$delim); - - - # Extract the initial substring of $text that is bounded by - # an XML tag. - - ($extracted, $remainder) = extract_tagged($text); - - - # Extract the initial substring of $text that is bounded by - # a C<BEGIN>...C<END> pair. Don't allow nested C<BEGIN> tags - - ($extracted, $remainder) = - extract_tagged($text,"BEGIN","END",undef,{bad=>["BEGIN"]}); - - - # Extract the initial substring of $text that represents a - # Perl "quote or quote-like operation" - - ($extracted, $remainder) = extract_quotelike($text); - - - # Extract the initial substring of $text that represents a block - # of Perl code, bracketed by any of character(s) specified by $delim - # (where the string $delim contains one or more of '(){}[]<>'). - - ($extracted, $remainder) = extract_codeblock($text,$delim); - - - # Extract the initial substrings of $text that would be extracted by - # one or more sequential applications of the specified functions - # or regular expressions - - @extracted = extract_multiple($text, - [ \&extract_bracketed, - \&extract_quotelike, - \&some_other_extractor_sub, - qr/[xyz]*/, - 'literal', - ]); - -# Create a string representing an optimized pattern (a la Friedl) -# that matches a substring delimited by any of the specified characters -# (in this case: any type of quote or a slash) - - $patstring = gen_delimited_pat(q{'"`/}); - - -# Generate a reference to an anonymous sub that is just like extract_tagged -# but pre-compiled and optimized for a specific pair of tags, and consequently -# much faster (i.e. 3 times faster). It uses qr// for better performance on -# repeated calls, so it only works under Perl 5.005 or later. - - $extract_head = gen_extract_tagged('<HEAD>','</HEAD>'); - - ($extracted, $remainder) = $extract_head->($text); - - -=head1 DESCRIPTION - -The various C<extract_...> subroutines may be used to -extract a delimited substring, possibly after skipping a -specified prefix string. By default, that prefix is -optional whitespace (C</\s*/>), but you can change it to whatever -you wish (see below). - -The substring to be extracted must appear at the -current C<pos> location of the string's variable -(or at index zero, if no C<pos> position is defined). -In other words, the C<extract_...> subroutines I<don't> -extract the first occurance of a substring anywhere -in a string (like an unanchored regex would). Rather, -they extract an occurance of the substring appearing -immediately at the current matching position in the -string (like a C<\G>-anchored regex would). - - - -=head2 General behaviour in list contexts - -In a list context, all the subroutines return a list, the first three -elements of which are always: - -=over 4 - -=item [0] - -The extracted string, including the specified delimiters. -If the extraction fails an empty string is returned. - -=item [1] - -The remainder of the input string (i.e. the characters after the -extracted string). On failure, the entire string is returned. - -=item [2] - -The skipped prefix (i.e. the characters before the extracted string). -On failure, the empty string is returned. - -=back - -Note that in a list context, the contents of the original input text (the first -argument) are not modified in any way. - -However, if the input text was passed in a variable, that variable's -C<pos> value is updated to point at the first character after the -extracted text. That means that in a list context the various -subroutines can be used much like regular expressions. For example: - - while ( $next = (extract_quotelike($text))[0] ) - { - # process next quote-like (in $next) - } - - -=head2 General behaviour in scalar and void contexts - -In a scalar context, the extracted string is returned, having first been -removed from the input text. Thus, the following code also processes -each quote-like operation, but actually removes them from $text: - - while ( $next = extract_quotelike($text) ) - { - # process next quote-like (in $next) - } - -Note that if the input text is a read-only string (i.e. a literal), -no attempt is made to remove the extracted text. - -In a void context the behaviour of the extraction subroutines is -exactly the same as in a scalar context, except (of course) that the -extracted substring is not returned. - -=head2 A note about prefixes - -Prefix patterns are matched without any trailing modifiers (C</gimsox> etc.) -This can bite you if you're expecting a prefix specification like -'.*?(?=<H1>)' to skip everything up to the first <H1> tag. Such a prefix -pattern will only succeed if the <H1> tag is on the current line, since -. normally doesn't match newlines. - -To overcome this limitation, you need to turn on /s matching within -the prefix pattern, using the C<(?s)> directive: '(?s).*?(?=<H1>)' - - -=head2 C<extract_delimited> - -The C<extract_delimited> function formalizes the common idiom -of extracting a single-character-delimited substring from the start of -a string. For example, to extract a single-quote delimited string, the -following code is typically used: - - ($remainder = $text) =~ s/\A('(\\.|[^'])*')//s; - $extracted = $1; - -but with C<extract_delimited> it can be simplified to: - - ($extracted,$remainder) = extract_delimited($text, "'"); - -C<extract_delimited> takes up to four scalars (the input text, the -delimiters, a prefix pattern to be skipped, and any escape characters) -and extracts the initial substring of the text that -is appropriately delimited. If the delimiter string has multiple -characters, the first one encountered in the text is taken to delimit -the substring. -The third argument specifies a prefix pattern that is to be skipped -(but must be present!) before the substring is extracted. -The final argument specifies the escape character to be used for each -delimiter. - -All arguments are optional. If the escape characters are not specified, -every delimiter is escaped with a backslash (C<\>). -If the prefix is not specified, the -pattern C<'\s*'> - optional whitespace - is used. If the delimiter set -is also not specified, the set C</["'`]/> is used. If the text to be processed -is not specified either, C<$_> is used. - -In list context, C<extract_delimited> returns a array of three -elements, the extracted substring (I<including the surrounding -delimiters>), the remainder of the text, and the skipped prefix (if -any). If a suitable delimited substring is not found, the first -element of the array is the empty string, the second is the complete -original text, and the prefix returned in the third element is an -empty string. - -In a scalar context, just the extracted substring is returned. In -a void context, the extracted substring (and any prefix) are simply -removed from the beginning of the first argument. - -Examples: - - # Remove a single-quoted substring from the very beginning of $text: - - $substring = extract_delimited($text, "'", ''); - - # Remove a single-quoted Pascalish substring (i.e. one in which - # doubling the quote character escapes it) from the very - # beginning of $text: - - $substring = extract_delimited($text, "'", '', "'"); - - # Extract a single- or double- quoted substring from the - # beginning of $text, optionally after some whitespace - # (note the list context to protect $text from modification): - - ($substring) = extract_delimited $text, q{"'}; - - - # Delete the substring delimited by the first '/' in $text: - - $text = join '', (extract_delimited($text,'/','[^/]*')[2,1]; - -Note that this last example is I<not> the same as deleting the first -quote-like pattern. For instance, if C<$text> contained the string: - - "if ('./cmd' =~ m/$UNIXCMD/s) { $cmd = $1; }" - -then after the deletion it would contain: - - "if ('.$UNIXCMD/s) { $cmd = $1; }" - -not: - - "if ('./cmd' =~ ms) { $cmd = $1; }" - - -See L<"extract_quotelike"> for a (partial) solution to this problem. - - -=head2 C<extract_bracketed> - -Like C<"extract_delimited">, the C<extract_bracketed> function takes -up to three optional scalar arguments: a string to extract from, a delimiter -specifier, and a prefix pattern. As before, a missing prefix defaults to -optional whitespace and a missing text defaults to C<$_>. However, a missing -delimiter specifier defaults to C<'{}()[]E<lt>E<gt>'> (see below). - -C<extract_bracketed> extracts a balanced-bracket-delimited -substring (using any one (or more) of the user-specified delimiter -brackets: '(..)', '{..}', '[..]', or '<..>'). Optionally it will also -respect quoted unbalanced brackets (see below). - -A "delimiter bracket" is a bracket in list of delimiters passed as -C<extract_bracketed>'s second argument. Delimiter brackets are -specified by giving either the left or right (or both!) versions -of the required bracket(s). Note that the order in which -two or more delimiter brackets are specified is not significant. - -A "balanced-bracket-delimited substring" is a substring bounded by -matched brackets, such that any other (left or right) delimiter -bracket I<within> the substring is also matched by an opposite -(right or left) delimiter bracket I<at the same level of nesting>. Any -type of bracket not in the delimiter list is treated as an ordinary -character. - -In other words, each type of bracket specified as a delimiter must be -balanced and correctly nested within the substring, and any other kind of -("non-delimiter") bracket in the substring is ignored. - -For example, given the string: - - $text = "{ an '[irregularly :-(] {} parenthesized >:-)' string }"; - -then a call to C<extract_bracketed> in a list context: - - @result = extract_bracketed( $text, '{}' ); - -would return: - - ( "{ an '[irregularly :-(] {} parenthesized >:-)' string }" , "" , "" ) - -since both sets of C<'{..}'> brackets are properly nested and evenly balanced. -(In a scalar context just the first element of the array would be returned. In -a void context, C<$text> would be replaced by an empty string.) - -Likewise the call in: - - @result = extract_bracketed( $text, '{[' ); - -would return the same result, since all sets of both types of specified -delimiter brackets are correctly nested and balanced. - -However, the call in: - - @result = extract_bracketed( $text, '{([<' ); - -would fail, returning: - - ( undef , "{ an '[irregularly :-(] {} parenthesized >:-)' string }" ); - -because the embedded pairs of C<'(..)'>s and C<'[..]'>s are "cross-nested" and -the embedded C<'E<gt>'> is unbalanced. (In a scalar context, this call would -return an empty string. In a void context, C<$text> would be unchanged.) - -Note that the embedded single-quotes in the string don't help in this -case, since they have not been specified as acceptable delimiters and are -therefore treated as non-delimiter characters (and ignored). - -However, if a particular species of quote character is included in the -delimiter specification, then that type of quote will be correctly handled. -for example, if C<$text> is: - - $text = '<A HREF=">>>>">link</A>'; - -then - - @result = extract_bracketed( $text, '<">' ); - -returns: - - ( '<A HREF=">>>>">', 'link</A>', "" ) - -as expected. Without the specification of C<"> as an embedded quoter: - - @result = extract_bracketed( $text, '<>' ); - -the result would be: - - ( '<A HREF=">', '>>>">link</A>', "" ) - -In addition to the quote delimiters C<'>, C<">, and C<`>, full Perl quote-like -quoting (i.e. q{string}, qq{string}, etc) can be specified by including the -letter 'q' as a delimiter. Hence: - - @result = extract_bracketed( $text, '<q>' ); - -would correctly match something like this: - - $text = '<leftop: conj /and/ conj>'; - -See also: C<"extract_quotelike"> and C<"extract_codeblock">. - - -=head2 C<extract_variable> - -C<extract_variable> extracts any valid Perl variable or -variable-involved expression, including scalars, arrays, hashes, array -accesses, hash look-ups, method calls through objects, subroutine calles -through subroutine references, etc. - -The subroutine takes up to two optional arguments: - -=over 4 - -=item 1. - -A string to be processed (C<$_> if the string is omitted or C<undef>) - -=item 2. - -A string specifying a pattern to be matched as a prefix (which is to be -skipped). If omitted, optional whitespace is skipped. - -=back - -On success in a list context, an array of 3 elements is returned. The -elements are: - -=over 4 - -=item [0] - -the extracted variable, or variablish expression - -=item [1] - -the remainder of the input text, - -=item [2] - -the prefix substring (if any), - -=back - -On failure, all of these values (except the remaining text) are C<undef>. - -In a scalar context, C<extract_variable> returns just the complete -substring that matched a variablish expression. C<undef> is returned on -failure. In addition, the original input text has the returned substring -(and any prefix) removed from it. - -In a void context, the input text just has the matched substring (and -any specified prefix) removed. - - -=head2 C<extract_tagged> - -C<extract_tagged> extracts and segments text between (balanced) -specified tags. - -The subroutine takes up to five optional arguments: - -=over 4 - -=item 1. - -A string to be processed (C<$_> if the string is omitted or C<undef>) - -=item 2. - -A string specifying a pattern to be matched as the opening tag. -If the pattern string is omitted (or C<undef>) then a pattern -that matches any standard XML tag is used. - -=item 3. - -A string specifying a pattern to be matched at the closing tag. -If the pattern string is omitted (or C<undef>) then the closing -tag is constructed by inserting a C</> after any leading bracket -characters in the actual opening tag that was matched (I<not> the pattern -that matched the tag). For example, if the opening tag pattern -is specified as C<'{{\w+}}'> and actually matched the opening tag -C<"{{DATA}}">, then the constructed closing tag would be C<"{{/DATA}}">. - -=item 4. - -A string specifying a pattern to be matched as a prefix (which is to be -skipped). If omitted, optional whitespace is skipped. - -=item 5. - -A hash reference containing various parsing options (see below) - -=back - -The various options that can be specified are: - -=over 4 - -=item C<reject =E<gt> $listref> - -The list reference contains one or more strings specifying patterns -that must I<not> appear within the tagged text. - -For example, to extract -an HTML link (which should not contain nested links) use: - - extract_tagged($text, '<A>', '</A>', undef, {reject => ['<A>']} ); - -=item C<ignore =E<gt> $listref> - -The list reference contains one or more strings specifying patterns -that are I<not> be be treated as nested tags within the tagged text -(even if they would match the start tag pattern). - -For example, to extract an arbitrary XML tag, but ignore "empty" elements: - - extract_tagged($text, undef, undef, undef, {ignore => ['<[^>]*/>']} ); - -(also see L<"gen_delimited_pat"> below). - - -=item C<fail =E<gt> $str> - -The C<fail> option indicates the action to be taken if a matching end -tag is not encountered (i.e. before the end of the string or some -C<reject> pattern matches). By default, a failure to match a closing -tag causes C<extract_tagged> to immediately fail. - -However, if the string value associated with <reject> is "MAX", then -C<extract_tagged> returns the complete text up to the point of failure. -If the string is "PARA", C<extract_tagged> returns only the first paragraph -after the tag (up to the first line that is either empty or contains -only whitespace characters). -If the string is "", the the default behaviour (i.e. failure) is reinstated. - -For example, suppose the start tag "/para" introduces a paragraph, which then -continues until the next "/endpara" tag or until another "/para" tag is -encountered: - - $text = "/para line 1\n\nline 3\n/para line 4"; - - extract_tagged($text, '/para', '/endpara', undef, - {reject => '/para', fail => MAX ); - - # EXTRACTED: "/para line 1\n\nline 3\n" - -Suppose instead, that if no matching "/endpara" tag is found, the "/para" -tag refers only to the immediately following paragraph: - - $text = "/para line 1\n\nline 3\n/para line 4"; - - extract_tagged($text, '/para', '/endpara', undef, - {reject => '/para', fail => MAX ); - - # EXTRACTED: "/para line 1\n" - -Note that the specified C<fail> behaviour applies to nested tags as well. - -=back - -On success in a list context, an array of 6 elements is returned. The elements are: - -=over 4 - -=item [0] - -the extracted tagged substring (including the outermost tags), - -=item [1] - -the remainder of the input text, - -=item [2] - -the prefix substring (if any), - -=item [3] - -the opening tag - -=item [4] - -the text between the opening and closing tags - -=item [5] - -the closing tag (or "" if no closing tag was found) - -=back - -On failure, all of these values (except the remaining text) are C<undef>. - -In a scalar context, C<extract_tagged> returns just the complete -substring that matched a tagged text (including the start and end -tags). C<undef> is returned on failure. In addition, the original input -text has the returned substring (and any prefix) removed from it. - -In a void context, the input text just has the matched substring (and -any specified prefix) removed. - - -=head2 C<gen_extract_tagged> - -(Note: This subroutine is only available under Perl5.005) - -C<gen_extract_tagged> generates a new anonymous subroutine which -extracts text between (balanced) specified tags. In other words, -it generates a function identical in function to C<extract_tagged>. - -The difference between C<extract_tagged> and the anonymous -subroutines generated by -C<gen_extract_tagged>, is that those generated subroutines: - -=over 4 - -=item * - -do not have to reparse tag specification or parsing options every time -they are called (whereas C<extract_tagged> has to effectively rebuild -its tag parser on every call); - -=item * - -make use of the new qr// construct to pre-compile the regexes they use -(whereas C<extract_tagged> uses standard string variable interpolation -to create tag-matching patterns). - -=back - -The subroutine takes up to four optional arguments (the same set as -C<extract_tagged> except for the string to be processed). It returns -a reference to a subroutine which in turn takes a single argument (the text to -be extracted from). - -In other words, the implementation of C<extract_tagged> is exactly -equivalent to: - - sub extract_tagged - { - my $text = shift; - $extractor = gen_extract_tagged(@_); - return $extractor->($text); - } - -(although C<extract_tagged> is not currently implemented that way, in order -to preserve pre-5.005 compatibility). - -Using C<gen_extract_tagged> to create extraction functions for specific tags -is a good idea if those functions are going to be called more than once, since -their performance is typically twice as good as the more general-purpose -C<extract_tagged>. - - -=head2 C<extract_quotelike> - -C<extract_quotelike> attempts to recognize, extract, and segment any -one of the various Perl quotes and quotelike operators (see -L<perlop(3)>) Nested backslashed delimiters, embedded balanced bracket -delimiters (for the quotelike operators), and trailing modifiers are -all caught. For example, in: - - extract_quotelike 'q # an octothorpe: \# (not the end of the q!) #' - - extract_quotelike ' "You said, \"Use sed\"." ' - - extract_quotelike ' s{([A-Z]{1,8}\.[A-Z]{3})} /\L$1\E/; ' - - extract_quotelike ' tr/\\\/\\\\/\\\//ds; ' - -the full Perl quotelike operations are all extracted correctly. - -Note too that, when using the /x modifier on a regex, any comment -containing the current pattern delimiter will cause the regex to be -immediately terminated. In other words: - - 'm / - (?i) # CASE INSENSITIVE - [a-z_] # LEADING ALPHABETIC/UNDERSCORE - [a-z0-9]* # FOLLOWED BY ANY NUMBER OF ALPHANUMERICS - /x' - -will be extracted as if it were: - - 'm / - (?i) # CASE INSENSITIVE - [a-z_] # LEADING ALPHABETIC/' - -This behaviour is identical to that of the actual compiler. - -C<extract_quotelike> takes two arguments: the text to be processed and -a prefix to be matched at the very beginning of the text. If no prefix -is specified, optional whitespace is the default. If no text is given, -C<$_> is used. - -In a list context, an array of 11 elements is returned. The elements are: - -=over 4 - -=item [0] - -the extracted quotelike substring (including trailing modifiers), - -=item [1] - -the remainder of the input text, - -=item [2] - -the prefix substring (if any), - -=item [3] - -the name of the quotelike operator (if any), - -=item [4] - -the left delimiter of the first block of the operation, - -=item [5] - -the text of the first block of the operation -(that is, the contents of -a quote, the regex of a match or substitution or the target list of a -translation), - -=item [6] - -the right delimiter of the first block of the operation, - -=item [7] - -the left delimiter of the second block of the operation -(that is, if it is a C<s>, C<tr>, or C<y>), - -=item [8] - -the text of the second block of the operation -(that is, the replacement of a substitution or the translation list -of a translation), - -=item [9] - -the right delimiter of the second block of the operation (if any), - -=item [10] - -the trailing modifiers on the operation (if any). - -=back - -For each of the fields marked "(if any)" the default value on success is -an empty string. -On failure, all of these values (except the remaining text) are C<undef>. - - -In a scalar context, C<extract_quotelike> returns just the complete substring -that matched a quotelike operation (or C<undef> on failure). In a scalar or -void context, the input text has the same substring (and any specified -prefix) removed. - -Examples: - - # Remove the first quotelike literal that appears in text - - $quotelike = extract_quotelike($text,'.*?'); - - # Replace one or more leading whitespace-separated quotelike - # literals in $_ with "<QLL>" - - do { $_ = join '<QLL>', (extract_quotelike)[2,1] } until $@; - - - # Isolate the search pattern in a quotelike operation from $text - - ($op,$pat) = (extract_quotelike $text)[3,5]; - if ($op =~ /[ms]/) - { - print "search pattern: $pat\n"; - } - else - { - print "$op is not a pattern matching operation\n"; - } - - -=head2 C<extract_quotelike> and "here documents" - -C<extract_quotelike> can successfully extract "here documents" from an input -string, but with an important caveat in list contexts. - -Unlike other types of quote-like literals, a here document is rarely -a contiguous substring. For example, a typical piece of code using -here document might look like this: - - <<'EOMSG' || die; - This is the message. - EOMSG - exit; - -Given this as an input string in a scalar context, C<extract_quotelike> -would correctly return the string "<<'EOMSG'\nThis is the message.\nEOMSG", -leaving the string " || die;\nexit;" in the original variable. In other words, -the two separate pieces of the here document are successfully extracted and -concatenated. - -In a list context, C<extract_quotelike> would return the list - -=over 4 - -=item [0] - -"<<'EOMSG'\nThis is the message.\nEOMSG\n" (i.e. the full extracted here document, -including fore and aft delimiters), - -=item [1] - -" || die;\nexit;" (i.e. the remainder of the input text, concatenated), - -=item [2] - -"" (i.e. the prefix substring -- trivial in this case), - -=item [3] - -"<<" (i.e. the "name" of the quotelike operator) - -=item [4] - -"'EOMSG'" (i.e. the left delimiter of the here document, including any quotes), - -=item [5] - -"This is the message.\n" (i.e. the text of the here document), - -=item [6] - -"EOMSG" (i.e. the right delimiter of the here document), - -=item [7..10] - -"" (a here document has no second left delimiter, second text, second right -delimiter, or trailing modifiers). - -=back - -However, the matching position of the input variable would be set to -"exit;" (i.e. I<after> the closing delimiter of the here document), -which would cause the earlier " || die;\nexit;" to be skipped in any -sequence of code fragment extractions. - -To avoid this problem, when it encounters a here document whilst -extracting from a modifiable string, C<extract_quotelike> silently -rearranges the string to an equivalent piece of Perl: - - <<'EOMSG' - This is the message. - EOMSG - || die; - exit; - -in which the here document I<is> contiguous. It still leaves the -matching position after the here document, but now the rest of the line -on which the here document starts is not skipped. - -To prevent <extract_quotelike> from mucking about with the input in this way -(this is the only case where a list-context C<extract_quotelike> does so), -you can pass the input variable as an interpolated literal: - - $quotelike = extract_quotelike("$var"); - - -=head2 C<extract_codeblock> - -C<extract_codeblock> attempts to recognize and extract a balanced -bracket delimited substring that may contain unbalanced brackets -inside Perl quotes or quotelike operations. That is, C<extract_codeblock> -is like a combination of C<"extract_bracketed"> and -C<"extract_quotelike">. - -C<extract_codeblock> takes the same initial three parameters as C<extract_bracketed>: -a text to process, a set of delimiter brackets to look for, and a prefix to -match first. It also takes an optional fourth parameter, which allows the -outermost delimiter brackets to be specified separately (see below). - -Omitting the first argument (input text) means process C<$_> instead. -Omitting the second argument (delimiter brackets) indicates that only C<'{'> is to be used. -Omitting the third argument (prefix argument) implies optional whitespace at the start. -Omitting the fourth argument (outermost delimiter brackets) indicates that the -value of the second argument is to be used for the outermost delimiters. - -Once the prefix an dthe outermost opening delimiter bracket have been -recognized, code blocks are extracted by stepping through the input text and -trying the following alternatives in sequence: - -=over 4 - -=item 1. - -Try and match a closing delimiter bracket. If the bracket was the same -species as the last opening bracket, return the substring to that -point. If the bracket was mismatched, return an error. - -=item 2. - -Try to match a quote or quotelike operator. If found, call -C<extract_quotelike> to eat it. If C<extract_quotelike> fails, return -the error it returned. Otherwise go back to step 1. - -=item 3. - -Try to match an opening delimiter bracket. If found, call -C<extract_codeblock> recursively to eat the embedded block. If the -recursive call fails, return an error. Otherwise, go back to step 1. - -=item 4. - -Unconditionally match a bareword or any other single character, and -then go back to step 1. - -=back - - -Examples: - - # Find a while loop in the text - - if ($text =~ s/.*?while\s*\{/{/) - { - $loop = "while " . extract_codeblock($text); - } - - # Remove the first round-bracketed list (which may include - # round- or curly-bracketed code blocks or quotelike operators) - - extract_codeblock $text, "(){}", '[^(]*'; - - -The ability to specify a different outermost delimiter bracket is useful -in some circumstances. For example, in the Parse::RecDescent module, -parser actions which are to be performed only on a successful parse -are specified using a C<E<lt>defer:...E<gt>> directive. For example: - - sentence: subject verb object - <defer: {$::theVerb = $item{verb}} > - -Parse::RecDescent uses C<extract_codeblock($text, '{}E<lt>E<gt>')> to extract the code -within the C<E<lt>defer:...E<gt>> directive, but there's a problem. - -A deferred action like this: - - <defer: {if ($count>10) {$count--}} > - -will be incorrectly parsed as: - - <defer: {if ($count> - -because the "less than" operator is interpreted as a closing delimiter. - -But, by extracting the directive using -S<C<extract_codeblock($text, '{}', undef, 'E<lt>E<gt>')>> -the '>' character is only treated as a delimited at the outermost -level of the code block, so the directive is parsed correctly. - -=head2 C<extract_multiple> - -The C<extract_multiple> subroutine takes a string to be processed and a -list of extractors (subroutines or regular expressions) to apply to that string. - -In an array context C<extract_multiple> returns an array of substrings -of the original string, as extracted by the specified extractors. -In a scalar context, C<extract_multiple> returns the first -substring successfully extracted from the original string. In both -scalar and void contexts the original string has the first successfully -extracted substring removed from it. In all contexts -C<extract_multiple> starts at the current C<pos> of the string, and -sets that C<pos> appropriately after it matches. - -Hence, the aim of of a call to C<extract_multiple> in a list context -is to split the processed string into as many non-overlapping fields as -possible, by repeatedly applying each of the specified extractors -to the remainder of the string. Thus C<extract_multiple> is -a generalized form of Perl's C<split> subroutine. - -The subroutine takes up to four optional arguments: - -=over 4 - -=item 1. - -A string to be processed (C<$_> if the string is omitted or C<undef>) - -=item 2. - -A reference to a list of subroutine references and/or qr// objects and/or -literal strings and/or hash references, specifying the extractors -to be used to split the string. If this argument is omitted (or -C<undef>) the list: - - [ - sub { extract_variable($_[0], '') }, - sub { extract_quotelike($_[0],'') }, - sub { extract_codeblock($_[0],'{}','') }, - ] - -is used. - - -=item 3. - -An number specifying the maximum number of fields to return. If this -argument is omitted (or C<undef>), split continues as long as possible. - -If the third argument is I<N>, then extraction continues until I<N> fields -have been successfully extracted, or until the string has been completely -processed. - -Note that in scalar and void contexts the value of this argument is -automatically reset to 1 (under C<-w>, a warning is issued if the argument -has to be reset). - -=item 4. - -A value indicating whether unmatched substrings (see below) within the -text should be skipped or returned as fields. If the value is true, -such substrings are skipped. Otherwise, they are returned. - -=back - -The extraction process works by applying each extractor in -sequence to the text string. - -If the extractor is a subroutine it is called in a list context and is -expected to return a list of a single element, namely the extracted -text. It may optionally also return two further arguments: a string -representing the text left after extraction (like $' for a pattern -match), and a string representing any prefix skipped before the -extraction (like $` in a pattern match). Note that this is designed -to facilitate the use of other Text::Balanced subroutines with -C<extract_multiple>. Note too that the value returned by an extractor -subroutine need not bear any relationship to the corresponding substring -of the original text (see examples below). - -If the extractor is a precompiled regular expression or a string, -it is matched against the text in a scalar context with a leading -'\G' and the gc modifiers enabled. The extracted value is either -$1 if that variable is defined after the match, or else the -complete match (i.e. $&). - -If the extractor is a hash reference, it must contain exactly one element. -The value of that element is one of the -above extractor types (subroutine reference, regular expression, or string). -The key of that element is the name of a class into which the successful -return value of the extractor will be blessed. - -If an extractor returns a defined value, that value is immediately -treated as the next extracted field and pushed onto the list of fields. -If the extractor was specified in a hash reference, the field is also -blessed into the appropriate class, - -If the extractor fails to match (in the case of a regex extractor), or returns an empty list or an undefined value (in the case of a subroutine extractor), it is -assumed to have failed to extract. -If none of the extractor subroutines succeeds, then one -character is extracted from the start of the text and the extraction -subroutines reapplied. Characters which are thus removed are accumulated and -eventually become the next field (unless the fourth argument is true, in which -case they are disgarded). - -For example, the following extracts substrings that are valid Perl variables: - - @fields = extract_multiple($text, - [ sub { extract_variable($_[0]) } ], - undef, 1); - -This example separates a text into fields which are quote delimited, -curly bracketed, and anything else. The delimited and bracketed -parts are also blessed to identify them (the "anything else" is unblessed): - - @fields = extract_multiple($text, - [ - { Delim => sub { extract_delimited($_[0],q{'"}) } }, - { Brack => sub { extract_bracketed($_[0],'{}') } }, - ]); - -This call extracts the next single substring that is a valid Perl quotelike -operator (and removes it from $text): - - $quotelike = extract_multiple($text, - [ - sub { extract_quotelike($_[0]) }, - ], undef, 1); - -Finally, here is yet another way to do comma-separated value parsing: - - @fields = extract_multiple($csv_text, - [ - sub { extract_delimited($_[0],q{'"}) }, - qr/([^,]+)(.*)/, - ], - undef,1); - -The list in the second argument means: -I<"Try and extract a ' or " delimited string, otherwise extract anything up to a comma...">. -The undef third argument means: -I<"...as many times as possible...">, -and the true value in the fourth argument means -I<"...discarding anything else that appears (i.e. the commas)">. - -If you wanted the commas preserved as separate fields (i.e. like split -does if your split pattern has capturing parentheses), you would -just make the last parameter undefined (or remove it). - - -=head2 C<gen_delimited_pat> - -The C<gen_delimited_pat> subroutine takes a single (string) argument and - > builds a Friedl-style optimized regex that matches a string delimited -by any one of the characters in the single argument. For example: - - gen_delimited_pat(q{'"}) - -returns the regex: - - (?:\"(?:\\\"|(?!\").)*\"|\'(?:\\\'|(?!\').)*\') - -Note that the specified delimiters are automatically quotemeta'd. - -A typical use of C<gen_delimited_pat> would be to build special purpose tags -for C<extract_tagged>. For example, to properly ignore "empty" XML elements -(which might contain quoted strings): - - my $empty_tag = '<(' . gen_delimited_pat(q{'"}) . '|.)+/>'; - - extract_tagged($text, undef, undef, undef, {ignore => [$empty_tag]} ); - - -C<gen_delimited_pat> may also be called with an optional second argument, -which specifies the "escape" character(s) to be used for each delimiter. -For example to match a Pascal-style string (where ' is the delimiter -and '' is a literal ' within the string): - - gen_delimited_pat(q{'},q{'}); - -Different escape characters can be specified for different delimiters. -For example, to specify that '/' is the escape for single quotes -and '%' is the escape for double quotes: - - gen_delimited_pat(q{'"},q{/%}); - -If more delimiters than escape chars are specified, the last escape char -is used for the remaining delimiters. -If no escape char is specified for a given specified delimiter, '\' is used. - -Note that -C<gen_delimited_pat> was previously called -C<delimited_pat>. That name may still be used, but is now deprecated. - - -=head1 DIAGNOSTICS - -In a list context, all the functions return C<(undef,$original_text)> -on failure. In a scalar context, failure is indicated by returning C<undef> -(in this case the input text is not modified in any way). - -In addition, on failure in I<any> context, the C<$@> variable is set. -Accessing C<$@-E<gt>{error}> returns one of the error diagnostics listed -below. -Accessing C<$@-E<gt>{pos}> returns the offset into the original string at -which the error was detected (although not necessarily where it occurred!) -Printing C<$@> directly produces the error message, with the offset appended. -On success, the C<$@> variable is guaranteed to be C<undef>. - -The available diagnostics are: - -=over 4 - -=item C<Did not find a suitable bracket: "%s"> - -The delimiter provided to C<extract_bracketed> was not one of -C<'()[]E<lt>E<gt>{}'>. - -=item C<Did not find prefix: /%s/> - -A non-optional prefix was specified but wasn't found at the start of the text. - -=item C<Did not find opening bracket after prefix: "%s"> - -C<extract_bracketed> or C<extract_codeblock> was expecting a -particular kind of bracket at the start of the text, and didn't find it. - -=item C<No quotelike operator found after prefix: "%s"> - -C<extract_quotelike> didn't find one of the quotelike operators C<q>, -C<qq>, C<qw>, C<qx>, C<s>, C<tr> or C<y> at the start of the substring -it was extracting. - -=item C<Unmatched closing bracket: "%c"> - -C<extract_bracketed>, C<extract_quotelike> or C<extract_codeblock> encountered -a closing bracket where none was expected. - -=item C<Unmatched opening bracket(s): "%s"> - -C<extract_bracketed>, C<extract_quotelike> or C<extract_codeblock> ran -out of characters in the text before closing one or more levels of nested -brackets. - -=item C<Unmatched embedded quote (%s)> - -C<extract_bracketed> attempted to match an embedded quoted substring, but -failed to find a closing quote to match it. - -=item C<Did not find closing delimiter to match '%s'> - -C<extract_quotelike> was unable to find a closing delimiter to match the -one that opened the quote-like operation. - -=item C<Mismatched closing bracket: expected "%c" but found "%s"> - -C<extract_bracketed>, C<extract_quotelike> or C<extract_codeblock> found -a valid bracket delimiter, but it was the wrong species. This usually -indicates a nesting error, but may indicate incorrect quoting or escaping. - -=item C<No block delimiter found after quotelike "%s"> - -C<extract_quotelike> or C<extract_codeblock> found one of the -quotelike operators C<q>, C<qq>, C<qw>, C<qx>, C<s>, C<tr> or C<y> -without a suitable block after it. - -=item C<Did not find leading dereferencer> - -C<extract_variable> was expecting one of '$', '@', or '%' at the start of -a variable, but didn't find any of them. - -=item C<Bad identifier after dereferencer> - -C<extract_variable> found a '$', '@', or '%' indicating a variable, but that -character was not followed by a legal Perl identifier. - -=item C<Did not find expected opening bracket at %s> - -C<extract_codeblock> failed to find any of the outermost opening brackets -that were specified. - -=item C<Improperly nested codeblock at %s> - -A nested code block was found that started with a delimiter that was specified -as being only to be used as an outermost bracket. - -=item C<Missing second block for quotelike "%s"> - -C<extract_codeblock> or C<extract_quotelike> found one of the -quotelike operators C<s>, C<tr> or C<y> followed by only one block. - -=item C<No match found for opening bracket> - -C<extract_codeblock> failed to find a closing bracket to match the outermost -opening bracket. - -=item C<Did not find opening tag: /%s/> - -C<extract_tagged> did not find a suitable opening tag (after any specified -prefix was removed). - -=item C<Unable to construct closing tag to match: /%s/> - -C<extract_tagged> matched the specified opening tag and tried to -modify the matched text to produce a matching closing tag (because -none was specified). It failed to generate the closing tag, almost -certainly because the opening tag did not start with a -bracket of some kind. - -=item C<Found invalid nested tag: %s> - -C<extract_tagged> found a nested tag that appeared in the "reject" list -(and the failure mode was not "MAX" or "PARA"). - -=item C<Found unbalanced nested tag: %s> - -C<extract_tagged> found a nested opening tag that was not matched by a -corresponding nested closing tag (and the failure mode was not "MAX" or "PARA"). - -=item C<Did not find closing tag> - -C<extract_tagged> reached the end of the text without finding a closing tag -to match the original opening tag (and the failure mode was not -"MAX" or "PARA"). - - - - -=back - - -=head1 AUTHOR - -Damian Conway (damian@conway.org) - - -=head1 BUGS AND IRRITATIONS - -There are undoubtedly serious bugs lurking somewhere in this code, if -only because parts of it give the impression of understanding a great deal -more about Perl than they really do. - -Bug reports and other feedback are most welcome. - - -=head1 COPYRIGHT - - Copyright (c) 1997-2001, Damian Conway. All Rights Reserved. - This module is free software. It may be used, redistributed - and/or modified under the same terms as Perl itself. diff --git a/Master/tlpkg/tlperl.old/lib/Text/ParseWords.pm b/Master/tlpkg/tlperl.old/lib/Text/ParseWords.pm deleted file mode 100644 index 2f6812ade80..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Text/ParseWords.pm +++ /dev/null @@ -1,263 +0,0 @@ -package Text::ParseWords; - -use vars qw($VERSION @ISA @EXPORT $PERL_SINGLE_QUOTE); -$VERSION = "3.24"; - -require 5.000; - -use Exporter; -@ISA = qw(Exporter); -@EXPORT = qw(shellwords quotewords nested_quotewords parse_line); -@EXPORT_OK = qw(old_shellwords); - - -sub shellwords { - my(@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 { - my($delimiter, $keep, $line) = @_; - my($word, @pieces); - - no warnings 'uninitialized'; # we will be testing undef strings - - while (length($line)) { - $line =~ s/^(["']) # a $quote - ((?:\\.|(?!\1)[^\\])*) # and $quoted text - \1 # followed by the same quote - | # --OR-- - ^((?:\\.|[^\\"'])*?) # an $unquoted text - (\Z(?!\n)|(?-x:$delimiter)|(?!^)(?=["'])) - # plus EOL, delimiter, or quote - //xs or return; # extended layout - my($quote, $quoted, $unquoted, $delim) = ($1, $2, $3, $4); - return() unless( defined($quote) || length($unquoted) || length($delim)); - - if ($keep) { - $quoted = "$quote$quoted$quote"; - } - else { - $unquoted =~ s/\\(.)/$1/sg; - if (defined $quote) { - $quoted =~ s/\\(.)/$1/sg if ($quote eq '"'); - $quoted =~ s/\\([\\'])/$1/g if ( $PERL_SINGLE_QUOTE && $quote eq "'"); - } - } - $word .= substr($line, 0, 0); # leave results tainted - $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); - # or - # @words = old_shellwords(); # defaults to $_ (and clobbers it) - - no warnings 'uninitialized'; # we will be testing undef strings - local *_ = \join('', @_) if @_; - my (@words, $snippet); - - s/\A\s+//; - while ($_ ne '') { - my $field = substr($_, 0, 0); # leave results tainted - for (;;) { - if (s/\A"(([^"\\]|\\.)*)"//s) { - ($snippet = $1) =~ s#\\(.)#$1#sg; - } - elsif (/\A"/) { - require Carp; - Carp::carp("Unmatched double quote: $_"); - return(); - } - elsif (s/\A'(([^'\\]|\\.)*)'//s) { - ($snippet = $1) =~ s#\\(.)#$1#sg; - } - elsif (/\A'/) { - require Carp; - Carp::carp("Unmatched single quote: $_"); - return(); - } - elsif (s/\A\\(.)//s) { - $snippet = $1; - } - elsif (s/\A([^\s\\'"]+)//) { - $snippet = $1; - } - else { - s/\A\s+//; - last; - } - $field .= $snippet; - } - push(@words, $field); - } - return @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 = "ewords($delim, $keep, @lines); - @words = &shellwords(@lines); - @words = &parse_line($delim, $keep, $line); - @words = &old_shellwords(@lines); # DEPRECATED! - -=head1 DESCRIPTION - -The &nested_quotewords() and "ewords() 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. "ewords() -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_line(), so if you're only splitting -one line you can call &parse_line() 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., -"ewords() 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 "ewords(), and it -does token parsing with whitespace as a delimiter-- similar to most -Unix shells. - -=head1 EXAMPLES - -The sample program: - - use Text::ParseWords; - @words = "ewords('\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<"ewords('\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/tlpkg/tlperl.old/lib/Text/Soundex.pm b/Master/tlpkg/tlperl.old/lib/Text/Soundex.pm deleted file mode 100644 index 64a9e6507d5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Text/Soundex.pm +++ /dev/null @@ -1,150 +0,0 @@ -package Text::Soundex; -require 5.000; -require Exporter; - -@ISA = qw(Exporter); -@EXPORT = qw(&soundex $soundex_nocode); - -$VERSION = '1.01'; - -# $Id: soundex.pl,v 1.2 1994/03/24 00:30:27 mike Exp $ -# -# Implementation of soundex algorithm as described by Knuth in volume -# 3 of The Art of Computer Programming, with ideas stolen from Ian -# Phillipps <ian@pipex.net>. -# -# Mike Stok <Mike.Stok@meiko.concord.ma.us>, 2 March 1994. -# -# Knuth's test cases are: -# -# Euler, Ellery -> E460 -# Gauss, Ghosh -> G200 -# Hilbert, Heilbronn -> H416 -# Knuth, Kant -> K530 -# Lloyd, Ladd -> L300 -# Lukasiewicz, Lissajous -> L222 -# -# $Log: soundex.pl,v $ -# Revision 1.2 1994/03/24 00:30:27 mike -# Subtle bug (any excuse :-) spotted by Rich Pinder <rpinder@hsc.usc.edu> -# in the way I handles leasing characters which were different but had -# the same soundex code. This showed up comparing it with Oracle's -# soundex output. -# -# Revision 1.1 1994/03/02 13:01:30 mike -# Initial revision -# -# -############################################################################## - -# $soundex_nocode is used to indicate a string doesn't have a soundex -# code, I like undef other people may want to set it to 'Z000'. - -$soundex_nocode = undef; - -sub soundex -{ - local (@s, $f, $fc, $_) = @_; - - push @s, '' unless @s; # handle no args as a single empty string - - foreach (@s) - { - $_ = uc $_; - tr/A-Z//cd; - - if ($_ eq '') - { - $_ = $soundex_nocode; - } - else - { - ($f) = /^(.)/; - tr/AEHIOUWYBFPVCGJKQSXZDTLMNR/00000000111122222222334556/; - ($fc) = /^(.)/; - s/^$fc+//; - tr///cs; - tr/0//d; - $_ = $f . $_ . '000'; - s/^(.{4}).*/$1/; - } - } - - wantarray ? @s : shift @s; -} - -1; - -__END__ - -=head1 NAME - -Text::Soundex - Implementation of the Soundex Algorithm as Described by Knuth - -=head1 SYNOPSIS - - use Text::Soundex; - - $code = soundex $string; # get soundex code for a string - @codes = soundex @list; # get list of codes for list of strings - - # set value to be returned for strings without soundex code - - $soundex_nocode = 'Z000'; - -=head1 DESCRIPTION - -This module implements the soundex algorithm as described by Donald Knuth -in Volume 3 of B<The Art of Computer Programming>. The algorithm is -intended to hash words (in particular surnames) into a small space using a -simple model which approximates the sound of the word when spoken by an English -speaker. Each word is reduced to a four character string, the first -character being an upper case letter and the remaining three being digits. - -If there is no soundex code representation for a string then the value of -C<$soundex_nocode> is returned. This is initially set to C<undef>, but -many people seem to prefer an I<unlikely> value like C<Z000> -(how unlikely this is depends on the data set being dealt with.) Any value -can be assigned to C<$soundex_nocode>. - -In scalar context C<soundex> returns the soundex code of its first -argument, and in list context a list is returned in which each element is the -soundex code for the corresponding argument passed to C<soundex> e.g. - - @codes = soundex qw(Mike Stok); - -leaves C<@codes> containing C<('M200', 'S320')>. - -=head1 EXAMPLES - -Knuth's examples of various names and the soundex codes they map to -are listed below: - - Euler, Ellery -> E460 - Gauss, Ghosh -> G200 - Hilbert, Heilbronn -> H416 - Knuth, Kant -> K530 - Lloyd, Ladd -> L300 - Lukasiewicz, Lissajous -> L222 - -so: - - $code = soundex 'Knuth'; # $code contains 'K530' - @list = soundex qw(Lloyd Gauss); # @list contains 'L300', 'G200' - -=head1 LIMITATIONS - -As the soundex algorithm was originally used a B<long> time ago in the US -it considers only the English alphabet and pronunciation. - -As it is mapping a large space (arbitrary length strings) onto a small -space (single letter plus 3 digits) no inference can be made about the -similarity of two strings which end up with the same soundex code. For -example, both C<Hilbert> and C<Heilbronn> end up with a soundex code -of C<H416>. - -=head1 AUTHOR - -This code was implemented by Mike Stok (C<stok@cybercom.net>) from the -description given by Knuth. Ian Phillipps (C<ian@pipex.net>) and Rich Pinder -(C<rpinder@hsc.usc.edu>) supplied ideas and spotted mistakes. diff --git a/Master/tlpkg/tlperl.old/lib/Text/Tabs.pm b/Master/tlpkg/tlperl.old/lib/Text/Tabs.pm deleted file mode 100644 index 36107fcfe3e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Text/Tabs.pm +++ /dev/null @@ -1,121 +0,0 @@ - -package Text::Tabs; - -require Exporter; - -@ISA = (Exporter); -@EXPORT = qw(expand unexpand $tabstop); - -use vars qw($VERSION $tabstop $debug); -$VERSION = 2005.0824; - -use strict; - -BEGIN { - $tabstop = 8; - $debug = 0; -} - -sub expand { - my @l; - my $pad; - for ( @_ ) { - my $s = ''; - for (split(/^/m, $_, -1)) { - my $offs = 0; - s{\t}{ - $pad = $tabstop - (pos() + $offs) % $tabstop; - $offs += $pad - 1; - " " x $pad; - }eg; - $s .= $_; - } - push(@l, $s); - } - 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__ - -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]; -} - - -=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 LICENSE - -Copyright (C) 1996-2002,2005 David Muir Sharnoff. -Copyright (C) 2005 Aristotle Pagaltzis -This module may be modified, used, copied, and redistributed at your own risk. -Publicly redistributed modified versions must use a different name. - diff --git a/Master/tlpkg/tlperl.old/lib/Text/Wrap.pm b/Master/tlpkg/tlperl.old/lib/Text/Wrap.pm deleted file mode 100644 index d364cfc1195..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Text/Wrap.pm +++ /dev/null @@ -1,223 +0,0 @@ -package Text::Wrap; - -require Exporter; - -@ISA = qw(Exporter); -@EXPORT = qw(wrap fill); -@EXPORT_OK = qw($columns $break $huge); - -$VERSION = 2005.0824_01; - -use vars qw($VERSION $columns $debug $break $huge $unexpand $tabstop - $separator $separator2); -use strict; - -BEGIN { - $columns = 76; # <= screen width - $debug = 0; - $break = '\s'; - $huge = 'wrap'; # alternatively: 'die' or 'overflow' - $unexpand = 1; - $tabstop = 8; - $separator = "\n"; - $separator2 = undef; -} - -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; - $ll = 0 if $ll < 0; - 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|\n*\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 = defined($separator2) ? $separator2 : $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 = defined($separator2) - ? ($remainder eq "\n" - ? "\n" - : $separator2) - : $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 subsequent 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 destroy 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::unexpand> 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::separator> to your preference. This replaces -all newlines with C<$Text::Wrap::separator>. If you just to preserve -existing newlines but add new breaks with something else, set -C<$Text::Wrap::separator2> instead. - -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 LICENSE - -David Muir Sharnoff <muir@idiom.com> with help from Tim Pierce and -many many others. Copyright (C) 1996-2002 David Muir Sharnoff. -This module may be modified, used, copied, and redistributed at -your own risk. Publicly redistributed modified versions must use -a different name. - diff --git a/Master/tlpkg/tlperl.old/lib/Tie/Array.pm b/Master/tlpkg/tlperl.old/lib/Tie/Array.pm deleted file mode 100644 index af8f51e9f51..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tie/Array.pm +++ /dev/null @@ -1,287 +0,0 @@ -package Tie::Array; - -use 5.006_001; -use strict; -use Carp; -our $VERSION = '1.03'; - -# Pod documentation after __END__ below. - -sub DESTROY { } -sub EXTEND { } -sub UNSHIFT { scalar shift->SPLICE(0,0,@_) } -sub SHIFT { shift->SPLICE(0,1) } -sub CLEAR { shift->STORESIZE(0) } - -sub PUSH -{ - my $obj = shift; - my $i = $obj->FETCHSIZE; - $obj->STORE($i++, shift) while (@_); -} - -sub POP -{ - my $obj = shift; - my $newsize = $obj->FETCHSIZE - 1; - my $val; - if ($newsize >= 0) - { - $val = $obj->FETCH($newsize); - $obj->STORESIZE($newsize); - } - $val; -} - -sub SPLICE { - my $obj = shift; - my $sz = $obj->FETCHSIZE; - my $off = (@_) ? shift : 0; - $off += $sz if ($off < 0); - my $len = (@_) ? shift : $sz - $off; - $len += $sz - $off if $len < 0; - my @result; - for (my $i = 0; $i < $len; $i++) { - push(@result,$obj->FETCH($off+$i)); - } - $off = $sz if $off > $sz; - $len -= $off + $len - $sz if $off + $len > $sz; - if (@_ > $len) { - # Move items up to make room - my $d = @_ - $len; - my $e = $off+$len; - $obj->EXTEND($sz+$d); - for (my $i=$sz-1; $i >= $e; $i--) { - my $val = $obj->FETCH($i); - $obj->STORE($i+$d,$val); - } - } - elsif (@_ < $len) { - # Move items down to close the gap - my $d = $len - @_; - my $e = $off+$len; - for (my $i=$off+$len; $i < $sz; $i++) { - my $val = $obj->FETCH($i); - $obj->STORE($i-$d,$val); - } - $obj->STORESIZE($sz-$d); - } - for (my $i=0; $i < @_; $i++) { - $obj->STORE($off+$i,$_[$i]); - } - return wantarray ? @result : pop @result; -} - -sub EXISTS { - my $pkg = ref $_[0]; - croak "$pkg doesn't define an EXISTS method"; -} - -sub DELETE { - my $pkg = ref $_[0]; - croak "$pkg doesn't define a DELETE method"; -} - -package Tie::StdArray; -use vars qw(@ISA); -@ISA = 'Tie::Array'; - -sub TIEARRAY { bless [], $_[0] } -sub FETCHSIZE { scalar @{$_[0]} } -sub STORESIZE { $#{$_[0]} = $_[1]-1 } -sub STORE { $_[0]->[$_[1]] = $_[2] } -sub FETCH { $_[0]->[$_[1]] } -sub CLEAR { @{$_[0]} = () } -sub POP { pop(@{$_[0]}) } -sub PUSH { my $o = shift; push(@$o,@_) } -sub SHIFT { shift(@{$_[0]}) } -sub UNSHIFT { my $o = shift; unshift(@$o,@_) } -sub EXISTS { exists $_[0]->[$_[1]] } -sub DELETE { delete $_[0]->[$_[1]] } - -sub SPLICE -{ - my $ob = shift; - my $sz = $ob->FETCHSIZE; - my $off = @_ ? shift : 0; - $off += $sz if $off < 0; - my $len = @_ ? shift : $sz-$off; - return splice(@$ob,$off,$len,@_); -} - -1; - -__END__ - -=head1 NAME - -Tie::Array - base class for tied arrays - -=head1 SYNOPSIS - - package Tie::NewArray; - use Tie::Array; - @ISA = ('Tie::Array'); - - # mandatory methods - sub TIEARRAY { ... } - sub FETCH { ... } - sub FETCHSIZE { ... } - - sub STORE { ... } # mandatory if elements writeable - sub STORESIZE { ... } # mandatory if elements can be added/deleted - sub EXISTS { ... } # mandatory if exists() expected to work - sub DELETE { ... } # mandatory if delete() expected to work - - # optional methods - for efficiency - sub CLEAR { ... } - sub PUSH { ... } - sub POP { ... } - sub SHIFT { ... } - sub UNSHIFT { ... } - sub SPLICE { ... } - sub EXTEND { ... } - sub DESTROY { ... } - - package Tie::NewStdArray; - use Tie::Array; - - @ISA = ('Tie::StdArray'); - - # all methods provided by default - - package main; - - $object = tie @somearray,Tie::NewArray; - $object = tie @somearray,Tie::StdArray; - $object = tie @somearray,Tie::NewStdArray; - - - -=head1 DESCRIPTION - -This module provides methods for array-tying classes. See -L<perltie> for a list of the functions required in order to tie an array -to a package. The basic B<Tie::Array> package provides stub C<DESTROY>, -and C<EXTEND> methods that do nothing, stub C<DELETE> and C<EXISTS> -methods that croak() if the delete() or exists() builtins are ever called -on the tied array, and implementations of C<PUSH>, C<POP>, C<SHIFT>, -C<UNSHIFT>, C<SPLICE> and C<CLEAR> in terms of basic C<FETCH>, C<STORE>, -C<FETCHSIZE>, C<STORESIZE>. - -The B<Tie::StdArray> package provides efficient methods required for tied arrays -which are implemented as blessed references to an "inner" perl array. -It inherits from B<Tie::Array>, and should cause tied arrays to behave exactly -like standard arrays, allowing for selective overloading of methods. - -For developers wishing to write their own tied arrays, the required methods -are briefly defined below. See the L<perltie> section for more detailed -descriptive, as well as example code: - -=over 4 - -=item TIEARRAY classname, LIST - -The class method is invoked by the command C<tie @array, classname>. Associates -an array instance with the specified class. C<LIST> would represent -additional arguments (along the lines of L<AnyDBM_File> and compatriots) needed -to complete the association. The method should return an object of a class which -provides the methods below. - -=item STORE this, index, value - -Store datum I<value> into I<index> for the tied array associated with -object I<this>. If this makes the array larger then -class's mapping of C<undef> should be returned for new positions. - -=item FETCH this, index - -Retrieve the datum in I<index> for the tied array associated with -object I<this>. - -=item FETCHSIZE this - -Returns the total number of items in the tied array associated with -object I<this>. (Equivalent to C<scalar(@array)>). - -=item STORESIZE this, count - -Sets the total number of items in the tied array associated with -object I<this> to be I<count>. If this makes the array larger then -class's mapping of C<undef> should be returned for new positions. -If the array becomes smaller then entries beyond count should be -deleted. - -=item EXTEND this, count - -Informative call that array is likely to grow to have I<count> entries. -Can be used to optimize allocation. This method need do nothing. - -=item EXISTS this, key - -Verify that the element at index I<key> exists in the tied array I<this>. - -The B<Tie::Array> implementation is a stub that simply croaks. - -=item DELETE this, key - -Delete the element at index I<key> from the tied array I<this>. - -The B<Tie::Array> implementation is a stub that simply croaks. - -=item CLEAR this - -Clear (remove, delete, ...) all values from the tied array associated with -object I<this>. - -=item DESTROY this - -Normal object destructor method. - -=item PUSH this, LIST - -Append elements of LIST to the array. - -=item POP this - -Remove last element of the array and return it. - -=item SHIFT this - -Remove the first element of the array (shifting other elements down) -and return it. - -=item UNSHIFT this, LIST - -Insert LIST elements at the beginning of the array, moving existing elements -up to make room. - -=item SPLICE this, offset, length, LIST - -Perform the equivalent of C<splice> on the array. - -I<offset> is optional and defaults to zero, negative values count back -from the end of the array. - -I<length> is optional and defaults to rest of the array. - -I<LIST> may be empty. - -Returns a list of the original I<length> elements at I<offset>. - -=back - -=head1 CAVEATS - -There is no support at present for tied @ISA. There is a potential conflict -between magic entries needed to notice setting of @ISA, and those needed to -implement 'tie'. - -Very little consideration has been given to the behaviour of tied arrays -when C<$[> is not default value of zero. - -=head1 AUTHOR - -Nick Ing-Simmons E<lt>nik@tiuk.ti.comE<gt> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Tie/File.pm b/Master/tlpkg/tlperl.old/lib/Tie/File.pm deleted file mode 100644 index a1f40afe199..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tie/File.pm +++ /dev/null @@ -1,2632 +0,0 @@ - -package Tie::File; -require 5.005; -use Carp ':DEFAULT', 'confess'; -use POSIX 'SEEK_SET'; -use Fcntl 'O_CREAT', 'O_RDWR', 'LOCK_EX', 'LOCK_SH', 'O_WRONLY', 'O_RDONLY'; -sub O_ACCMODE () { O_RDONLY | O_RDWR | O_WRONLY } - - -$VERSION = "0.97"; -my $DEFAULT_MEMORY_SIZE = 1<<21; # 2 megabytes -my $DEFAULT_AUTODEFER_THRESHHOLD = 3; # 3 records -my $DEFAULT_AUTODEFER_FILELEN_THRESHHOLD = 65536; # 16 disk blocksful - -my %good_opt = map {$_ => 1, "-$_" => 1} - qw(memory dw_size mode recsep discipline - autodefer autochomp autodefer_threshhold concurrent); - -sub TIEARRAY { - if (@_ % 2 != 0) { - croak "usage: tie \@array, $_[0], filename, [option => value]..."; - } - my ($pack, $file, %opts) = @_; - - # transform '-foo' keys into 'foo' keys - for my $key (keys %opts) { - unless ($good_opt{$key}) { - croak("$pack: Unrecognized option '$key'\n"); - } - my $okey = $key; - if ($key =~ s/^-+//) { - $opts{$key} = delete $opts{$okey}; - } - } - - if ($opts{concurrent}) { - croak("$pack: concurrent access not supported yet\n"); - } - - unless (defined $opts{memory}) { - # default is the larger of the default cache size and the - # deferred-write buffer size (if specified) - $opts{memory} = $DEFAULT_MEMORY_SIZE; - $opts{memory} = $opts{dw_size} - if defined $opts{dw_size} && $opts{dw_size} > $DEFAULT_MEMORY_SIZE; - # Dora Winifred Read - } - $opts{dw_size} = $opts{memory} unless defined $opts{dw_size}; - if ($opts{dw_size} > $opts{memory}) { - croak("$pack: dw_size may not be larger than total memory allocation\n"); - } - # are we in deferred-write mode? - $opts{defer} = 0 unless defined $opts{defer}; - $opts{deferred} = {}; # no records are presently deferred - $opts{deferred_s} = 0; # count of total bytes in ->{deferred} - $opts{deferred_max} = -1; # empty - - # What's a good way to arrange that this class can be overridden? - $opts{cache} = Tie::File::Cache->new($opts{memory}); - - # autodeferment is enabled by default - $opts{autodefer} = 1 unless defined $opts{autodefer}; - $opts{autodeferring} = 0; # but is not initially active - $opts{ad_history} = []; - $opts{autodefer_threshhold} = $DEFAULT_AUTODEFER_THRESHHOLD - unless defined $opts{autodefer_threshhold}; - $opts{autodefer_filelen_threshhold} = $DEFAULT_AUTODEFER_FILELEN_THRESHHOLD - unless defined $opts{autodefer_filelen_threshhold}; - - $opts{offsets} = [0]; - $opts{filename} = $file; - unless (defined $opts{recsep}) { - $opts{recsep} = _default_recsep(); - } - $opts{recseplen} = length($opts{recsep}); - if ($opts{recseplen} == 0) { - croak "Empty record separator not supported by $pack"; - } - - $opts{autochomp} = 1 unless defined $opts{autochomp}; - - $opts{mode} = O_CREAT|O_RDWR unless defined $opts{mode}; - $opts{rdonly} = (($opts{mode} & O_ACCMODE) == O_RDONLY); - $opts{sawlastrec} = undef; - - my $fh; - - if (UNIVERSAL::isa($file, 'GLOB')) { - # We use 1 here on the theory that some systems - # may not indicate failure if we use 0. - # MSWin32 does not indicate failure with 0, but I don't know if - # it will indicate failure with 1 or not. - unless (seek $file, 1, SEEK_SET) { - croak "$pack: your filehandle does not appear to be seekable"; - } - seek $file, 0, SEEK_SET # put it back - $fh = $file; # setting binmode is the user's problem - } elsif (ref $file) { - croak "usage: tie \@array, $pack, filename, [option => value]..."; - } else { - # $fh = \do { local *FH }; # XXX this is buggy - if ($] < 5.006) { - # perl 5.005 and earlier don't autovivify filehandles - require Symbol; - $fh = Symbol::gensym(); - } - sysopen $fh, $file, $opts{mode}, 0666 or return; - binmode $fh; - ++$opts{ourfh}; - } - { my $ofh = select $fh; $| = 1; select $ofh } # autoflush on write - if (defined $opts{discipline} && $] >= 5.006) { - # This avoids a compile-time warning under 5.005 - eval 'binmode($fh, $opts{discipline})'; - croak $@ if $@ =~ /unknown discipline/i; - die if $@; - } - $opts{fh} = $fh; - - bless \%opts => $pack; -} - -sub FETCH { - my ($self, $n) = @_; - my $rec; - - # check the defer buffer - $rec = $self->{deferred}{$n} if exists $self->{deferred}{$n}; - $rec = $self->_fetch($n) unless defined $rec; - - # inlined _chomp1 - substr($rec, - $self->{recseplen}) = "" - if defined $rec && $self->{autochomp}; - $rec; -} - -# Chomp many records in-place; return nothing useful -sub _chomp { - my $self = shift; - return unless $self->{autochomp}; - if ($self->{autochomp}) { - for (@_) { - next unless defined; - substr($_, - $self->{recseplen}) = ""; - } - } -} - -# Chomp one record in-place; return modified record -sub _chomp1 { - my ($self, $rec) = @_; - return $rec unless $self->{autochomp}; - return unless defined $rec; - substr($rec, - $self->{recseplen}) = ""; - $rec; -} - -sub _fetch { - my ($self, $n) = @_; - - # check the record cache - { my $cached = $self->{cache}->lookup($n); - return $cached if defined $cached; - } - - if ($#{$self->{offsets}} < $n) { - return if $self->{eof}; # request for record beyond end of file - my $o = $self->_fill_offsets_to($n); - # If it's still undefined, there is no such record, so return 'undef' - return unless defined $o; - } - - my $fh = $self->{FH}; - $self->_seek($n); # we can do this now that offsets is populated - my $rec = $self->_read_record; - -# If we happen to have just read the first record, check to see if -# the length of the record matches what 'tell' says. If not, Tie::File -# won't work, and should drop dead. -# -# if ($n == 0 && defined($rec) && tell($self->{fh}) != length($rec)) { -# if (defined $self->{discipline}) { -# croak "I/O discipline $self->{discipline} not supported"; -# } else { -# croak "File encoding not supported"; -# } -# } - - $self->{cache}->insert($n, $rec) if defined $rec && not $self->{flushing}; - $rec; -} - -sub STORE { - my ($self, $n, $rec) = @_; - die "STORE called from _check_integrity!" if $DIAGNOSTIC; - - $self->_fixrecs($rec); - - if ($self->{autodefer}) { - $self->_annotate_ad_history($n); - } - - return $self->_store_deferred($n, $rec) if $self->_is_deferring; - - - # We need this to decide whether the new record will fit - # It incidentally populates the offsets table - # Note we have to do this before we alter the cache - # 20020324 Wait, but this DOES alter the cache. TODO BUG? - my $oldrec = $self->_fetch($n); - - if (not defined $oldrec) { - # We're storing a record beyond the end of the file - $self->_extend_file_to($n+1); - $oldrec = $self->{recsep}; - } -# return if $oldrec eq $rec; # don't bother - my $len_diff = length($rec) - length($oldrec); - - # length($oldrec) here is not consistent with text mode TODO XXX BUG - $self->_mtwrite($rec, $self->{offsets}[$n], length($oldrec)); - $self->_oadjust([$n, 1, $rec]); - $self->{cache}->update($n, $rec); -} - -sub _store_deferred { - my ($self, $n, $rec) = @_; - $self->{cache}->remove($n); - my $old_deferred = $self->{deferred}{$n}; - - if (defined $self->{deferred_max} && $n > $self->{deferred_max}) { - $self->{deferred_max} = $n; - } - $self->{deferred}{$n} = $rec; - - my $len_diff = length($rec); - $len_diff -= length($old_deferred) if defined $old_deferred; - $self->{deferred_s} += $len_diff; - $self->{cache}->adj_limit(-$len_diff); - if ($self->{deferred_s} > $self->{dw_size}) { - $self->_flush; - } elsif ($self->_cache_too_full) { - $self->_cache_flush; - } -} - -# Remove a single record from the deferred-write buffer without writing it -# The record need not be present -sub _delete_deferred { - my ($self, $n) = @_; - my $rec = delete $self->{deferred}{$n}; - return unless defined $rec; - - if (defined $self->{deferred_max} - && $n == $self->{deferred_max}) { - undef $self->{deferred_max}; - } - - $self->{deferred_s} -= length $rec; - $self->{cache}->adj_limit(length $rec); -} - -sub FETCHSIZE { - my $self = shift; - my $n = $self->{eof} ? $#{$self->{offsets}} : $self->_fill_offsets; - - my $top_deferred = $self->_defer_max; - $n = $top_deferred+1 if defined $top_deferred && $n < $top_deferred+1; - $n; -} - -sub STORESIZE { - my ($self, $len) = @_; - - if ($self->{autodefer}) { - $self->_annotate_ad_history('STORESIZE'); - } - - my $olen = $self->FETCHSIZE; - return if $len == $olen; # Woo-hoo! - - # file gets longer - if ($len > $olen) { - if ($self->_is_deferring) { - for ($olen .. $len-1) { - $self->_store_deferred($_, $self->{recsep}); - } - } else { - $self->_extend_file_to($len); - } - return; - } - - # file gets shorter - if ($self->_is_deferring) { - # TODO maybe replace this with map-plus-assignment? - for (grep $_ >= $len, keys %{$self->{deferred}}) { - $self->_delete_deferred($_); - } - $self->{deferred_max} = $len-1; - } - - $self->_seek($len); - $self->_chop_file; - $#{$self->{offsets}} = $len; -# $self->{offsets}[0] = 0; # in case we just chopped this - - $self->{cache}->remove(grep $_ >= $len, $self->{cache}->ckeys); -} - -### OPTIMIZE ME -### It should not be necessary to do FETCHSIZE -### Just seek to the end of the file. -sub PUSH { - my $self = shift; - $self->SPLICE($self->FETCHSIZE, scalar(@_), @_); - - # No need to return: - # $self->FETCHSIZE; # because av.c takes care of this for me -} - -sub POP { - my $self = shift; - my $size = $self->FETCHSIZE; - return if $size == 0; -# print STDERR "# POPPITY POP POP POP\n"; - scalar $self->SPLICE($size-1, 1); -} - -sub SHIFT { - my $self = shift; - scalar $self->SPLICE(0, 1); -} - -sub UNSHIFT { - my $self = shift; - $self->SPLICE(0, 0, @_); - # $self->FETCHSIZE; # av.c takes care of this for me -} - -sub CLEAR { - my $self = shift; - - if ($self->{autodefer}) { - $self->_annotate_ad_history('CLEAR'); - } - - $self->_seekb(0); - $self->_chop_file; - $self->{cache}->set_limit($self->{memory}); - $self->{cache}->empty; - @{$self->{offsets}} = (0); - %{$self->{deferred}}= (); - $self->{deferred_s} = 0; - $self->{deferred_max} = -1; -} - -sub EXTEND { - my ($self, $n) = @_; - - # No need to pre-extend anything in this case - return if $self->_is_deferring; - - $self->_fill_offsets_to($n); - $self->_extend_file_to($n); -} - -sub DELETE { - my ($self, $n) = @_; - - if ($self->{autodefer}) { - $self->_annotate_ad_history('DELETE'); - } - - my $lastrec = $self->FETCHSIZE-1; - my $rec = $self->FETCH($n); - $self->_delete_deferred($n) if $self->_is_deferring; - if ($n == $lastrec) { - $self->_seek($n); - $self->_chop_file; - $#{$self->{offsets}}--; - $self->{cache}->remove($n); - # perhaps in this case I should also remove trailing null records? - # 20020316 - # Note that delete @a[-3..-1] deletes the records in the wrong order, - # so we only chop the very last one out of the file. We could repair this - # by tracking deleted records inside the object. - } elsif ($n < $lastrec) { - $self->STORE($n, ""); - } - $rec; -} - -sub EXISTS { - my ($self, $n) = @_; - return 1 if exists $self->{deferred}{$n}; - $n < $self->FETCHSIZE; -} - -sub SPLICE { - my $self = shift; - - if ($self->{autodefer}) { - $self->_annotate_ad_history('SPLICE'); - } - - $self->_flush if $self->_is_deferring; # move this up? - if (wantarray) { - $self->_chomp(my @a = $self->_splice(@_)); - @a; - } else { - $self->_chomp1(scalar $self->_splice(@_)); - } -} - -sub DESTROY { - my $self = shift; - $self->flush if $self->_is_deferring; - $self->{cache}->delink if defined $self->{cache}; # break circular link - if ($self->{fh} and $self->{ourfh}) { - delete $self->{ourfh}; - close delete $self->{fh}; - } -} - -sub _splice { - my ($self, $pos, $nrecs, @data) = @_; - my @result; - - $pos = 0 unless defined $pos; - - # Deal with negative and other out-of-range positions - # Also set default for $nrecs - { - my $oldsize = $self->FETCHSIZE; - $nrecs = $oldsize unless defined $nrecs; - my $oldpos = $pos; - - if ($pos < 0) { - $pos += $oldsize; - if ($pos < 0) { - croak "Modification of non-creatable array value attempted, subscript $oldpos"; - } - } - - if ($pos > $oldsize) { - return unless @data; - $pos = $oldsize; # This is what perl does for normal arrays - } - - # The manual is very unclear here - if ($nrecs < 0) { - $nrecs = $oldsize - $pos + $nrecs; - $nrecs = 0 if $nrecs < 0; - } - - # nrecs is too big---it really means "until the end" - # 20030507 - if ($nrecs + $pos > $oldsize) { - $nrecs = $oldsize - $pos; - } - } - - $self->_fixrecs(@data); - my $data = join '', @data; - my $datalen = length $data; - my $oldlen = 0; - - # compute length of data being removed - for ($pos .. $pos+$nrecs-1) { - last unless defined $self->_fill_offsets_to($_); - my $rec = $self->_fetch($_); - last unless defined $rec; - push @result, $rec; - - # Why don't we just use length($rec) here? - # Because that record might have come from the cache. _splice - # might have been called to flush out the deferred-write records, - # and in this case length($rec) is the length of the record to be - # *written*, not the length of the actual record in the file. But - # the offsets are still true. 20020322 - $oldlen += $self->{offsets}[$_+1] - $self->{offsets}[$_] - if defined $self->{offsets}[$_+1]; - } - $self->_fill_offsets_to($pos+$nrecs); - - # Modify the file - $self->_mtwrite($data, $self->{offsets}[$pos], $oldlen); - # Adjust the offsets table - $self->_oadjust([$pos, $nrecs, @data]); - - { # Take this read cache stuff out into a separate function - # You made a half-attempt to put it into _oadjust. - # Finish something like that up eventually. - # STORE also needs to do something similarish - - # update the read cache, part 1 - # modified records - for ($pos .. $pos+$nrecs-1) { - my $new = $data[$_-$pos]; - if (defined $new) { - $self->{cache}->update($_, $new); - } else { - $self->{cache}->remove($_); - } - } - - # update the read cache, part 2 - # moved records - records past the site of the change - # need to be renumbered - # Maybe merge this with the previous block? - { - my @oldkeys = grep $_ >= $pos + $nrecs, $self->{cache}->ckeys; - my @newkeys = map $_-$nrecs+@data, @oldkeys; - $self->{cache}->rekey(\@oldkeys, \@newkeys); - } - - # Now there might be too much data in the cache, if we spliced out - # some short records and spliced in some long ones. If so, flush - # the cache. - $self->_cache_flush; - } - - # Yes, the return value of 'splice' *is* actually this complicated - wantarray ? @result : @result ? $result[-1] : undef; -} - - -# write data into the file -# $data is the data to be written. -# it should be written at position $pos, and should overwrite -# exactly $len of the following bytes. -# Note that if length($data) > $len, the subsequent bytes will have to -# be moved up, and if length($data) < $len, they will have to -# be moved down -sub _twrite { - my ($self, $data, $pos, $len) = @_; - - unless (defined $pos) { - die "\$pos was undefined in _twrite"; - } - - my $len_diff = length($data) - $len; - - if ($len_diff == 0) { # Woo-hoo! - my $fh = $self->{fh}; - $self->_seekb($pos); - $self->_write_record($data); - return; # well, that was easy. - } - - # the two records are of different lengths - # our strategy here: rewrite the tail of the file, - # reading ahead one buffer at a time - # $bufsize is required to be at least as large as the data we're overwriting - my $bufsize = _bufsize($len_diff); - my ($writepos, $readpos) = ($pos, $pos+$len); - my $next_block; - my $more_data; - - # Seems like there ought to be a way to avoid the repeated code - # and the special case here. The read(1) is also a little weird. - # Think about this. - do { - $self->_seekb($readpos); - my $br = read $self->{fh}, $next_block, $bufsize; - $more_data = read $self->{fh}, my($dummy), 1; - $self->_seekb($writepos); - $self->_write_record($data); - $readpos += $br; - $writepos += length $data; - $data = $next_block; - } while $more_data; - $self->_seekb($writepos); - $self->_write_record($next_block); - - # There might be leftover data at the end of the file - $self->_chop_file if $len_diff < 0; -} - -# _iwrite(D, S, E) -# Insert text D at position S. -# Let C = E-S-|D|. If C < 0; die. -# Data in [S,S+C) is copied to [S+D,S+D+C) = [S+D,E). -# Data in [S+C = E-D, E) is returned. Data in [E, oo) is untouched. -# -# In a later version, don't read the entire intervening area into -# memory at once; do the copying block by block. -sub _iwrite { - my $self = shift; - my ($D, $s, $e) = @_; - my $d = length $D; - my $c = $e-$s-$d; - local *FH = $self->{fh}; - confess "Not enough space to insert $d bytes between $s and $e" - if $c < 0; - confess "[$s,$e) is an invalid insertion range" if $e < $s; - - $self->_seekb($s); - read FH, my $buf, $e-$s; - - $D .= substr($buf, 0, $c, ""); - - $self->_seekb($s); - $self->_write_record($D); - - return $buf; -} - -# Like _twrite, but the data-pos-len triple may be repeated; you may -# write several chunks. All the writing will be done in -# one pass. Chunks SHALL be in ascending order and SHALL NOT overlap. -sub _mtwrite { - my $self = shift; - my $unwritten = ""; - my $delta = 0; - - @_ % 3 == 0 - or die "Arguments to _mtwrite did not come in groups of three"; - - while (@_) { - my ($data, $pos, $len) = splice @_, 0, 3; - my $end = $pos + $len; # The OLD end of the segment to be replaced - $data = $unwritten . $data; - $delta -= length($unwritten); - $unwritten = ""; - $pos += $delta; # This is where the data goes now - my $dlen = length $data; - $self->_seekb($pos); - if ($len >= $dlen) { # the data will fit - $self->_write_record($data); - $delta += ($dlen - $len); # everything following moves down by this much - $data = ""; # All the data in the buffer has been written - } else { # won't fit - my $writable = substr($data, 0, $len - $delta, ""); - $self->_write_record($writable); - $delta += ($dlen - $len); # everything following moves down by this much - } - - # At this point we've written some but maybe not all of the data. - # There might be a gap to close up, or $data might still contain a - # bunch of unwritten data that didn't fit. - my $ndlen = length $data; - if ($delta == 0) { - $self->_write_record($data); - } elsif ($delta < 0) { - # upcopy (close up gap) - if (@_) { - $self->_upcopy($end, $end + $delta, $_[1] - $end); - } else { - $self->_upcopy($end, $end + $delta); - } - } else { - # downcopy (insert data that didn't fit; replace this data in memory - # with _later_ data that doesn't fit) - if (@_) { - $unwritten = $self->_downcopy($data, $end, $_[1] - $end); - } else { - # Make the file longer to accomodate the last segment that doesn' - $unwritten = $self->_downcopy($data, $end); - } - } - } -} - -# Copy block of data of length $len from position $spos to position $dpos -# $dpos must be <= $spos -# -# If $len is undefined, go all the way to the end of the file -# and then truncate it ($spos - $dpos bytes will be removed) -sub _upcopy { - my $blocksize = 8192; - my ($self, $spos, $dpos, $len) = @_; - if ($dpos > $spos) { - die "source ($spos) was upstream of destination ($dpos) in _upcopy"; - } elsif ($dpos == $spos) { - return; - } - - while (! defined ($len) || $len > 0) { - my $readsize = ! defined($len) ? $blocksize - : $len > $blocksize ? $blocksize - : $len; - - my $fh = $self->{fh}; - $self->_seekb($spos); - my $bytes_read = read $fh, my($data), $readsize; - $self->_seekb($dpos); - if ($data eq "") { - $self->_chop_file; - last; - } - $self->_write_record($data); - $spos += $bytes_read; - $dpos += $bytes_read; - $len -= $bytes_read if defined $len; - } -} - -# Write $data into a block of length $len at position $pos, -# moving everything in the block forwards to make room. -# Instead of writing the last length($data) bytes from the block -# (because there isn't room for them any longer) return them. -# -# Undefined $len means 'until the end of the file' -sub _downcopy { - my $blocksize = 8192; - my ($self, $data, $pos, $len) = @_; - my $fh = $self->{fh}; - - while (! defined $len || $len > 0) { - my $readsize = ! defined($len) ? $blocksize - : $len > $blocksize? $blocksize : $len; - $self->_seekb($pos); - read $fh, my($old), $readsize; - my $last_read_was_short = length($old) < $readsize; - $data .= $old; - my $writable; - if ($last_read_was_short) { - # If last read was short, then $data now contains the entire rest - # of the file, so there's no need to write only one block of it - $writable = $data; - $data = ""; - } else { - $writable = substr($data, 0, $readsize, ""); - } - last if $writable eq ""; - $self->_seekb($pos); - $self->_write_record($writable); - last if $last_read_was_short && $data eq ""; - $len -= $readsize if defined $len; - $pos += $readsize; - } - return $data; -} - -# Adjust the object data structures following an '_mtwrite' -# Arguments are -# [$pos, $nrecs, @length] items -# indicating that $nrecs records were removed at $recpos (a record offset) -# and replaced with records of length @length... -# Arguments guarantee that $recpos is strictly increasing. -# No return value -sub _oadjust { - my $self = shift; - my $delta = 0; - my $delta_recs = 0; - my $prev_end = -1; - my %newkeys; - - for (@_) { - my ($pos, $nrecs, @data) = @$_; - $pos += $delta_recs; - - # Adjust the offsets of the records after the previous batch up - # to the first new one of this batch - for my $i ($prev_end+2 .. $pos - 1) { - $self->{offsets}[$i] += $delta; - $newkey{$i} = $i + $delta_recs; - } - - $prev_end = $pos + @data - 1; # last record moved on this pass - - # Remove the offsets for the removed records; - # replace with the offsets for the inserted records - my @newoff = ($self->{offsets}[$pos] + $delta); - for my $i (0 .. $#data) { - my $newlen = length $data[$i]; - push @newoff, $newoff[$i] + $newlen; - $delta += $newlen; - } - - for my $i ($pos .. $pos+$nrecs-1) { - last if $i+1 > $#{$self->{offsets}}; - my $oldlen = $self->{offsets}[$i+1] - $self->{offsets}[$i]; - $delta -= $oldlen; - } - -# # also this data has changed, so update it in the cache -# for (0 .. $#data) { -# $self->{cache}->update($pos + $_, $data[$_]); -# } -# if ($delta_recs) { -# my @oldkeys = grep $_ >= $pos + @data, $self->{cache}->ckeys; -# my @newkeys = map $_ + $delta_recs, @oldkeys; -# $self->{cache}->rekey(\@oldkeys, \@newkeys); -# } - - # replace old offsets with new - splice @{$self->{offsets}}, $pos, $nrecs+1, @newoff; - # What if we just spliced out the end of the offsets table? - # shouldn't we clear $self->{eof}? Test for this XXX BUG TODO - - $delta_recs += @data - $nrecs; # net change in total number of records - } - - # The trailing records at the very end of the file - if ($delta) { - for my $i ($prev_end+2 .. $#{$self->{offsets}}) { - $self->{offsets}[$i] += $delta; - } - } - - # If we scrubbed out all known offsets, regenerate the trivial table - # that knows that the file does indeed start at 0. - $self->{offsets}[0] = 0 unless @{$self->{offsets}}; - # If the file got longer, the offsets table is no longer complete - # $self->{eof} = 0 if $delta_recs > 0; - - # Now there might be too much data in the cache, if we spliced out - # some short records and spliced in some long ones. If so, flush - # the cache. - $self->_cache_flush; -} - -# If a record does not already end with the appropriate terminator -# string, append one. -sub _fixrecs { - my $self = shift; - for (@_) { - $_ = "" unless defined $_; - $_ .= $self->{recsep} - unless substr($_, - $self->{recseplen}) eq $self->{recsep}; - } -} - - -################################################################ -# -# Basic read, write, and seek -# - -# seek to the beginning of record #$n -# Assumes that the offsets table is already correctly populated -# -# Note that $n=-1 has a special meaning here: It means the start of -# the last known record; this may or may not be the very last record -# in the file, depending on whether the offsets table is fully populated. -# -sub _seek { - my ($self, $n) = @_; - my $o = $self->{offsets}[$n]; - defined($o) - or confess("logic error: undefined offset for record $n"); - seek $self->{fh}, $o, SEEK_SET - or confess "Couldn't seek filehandle: $!"; # "Should never happen." -} - -# seek to byte $b in the file -sub _seekb { - my ($self, $b) = @_; - seek $self->{fh}, $b, SEEK_SET - or die "Couldn't seek filehandle: $!"; # "Should never happen." -} - -# populate the offsets table up to the beginning of record $n -# return the offset of record $n -sub _fill_offsets_to { - my ($self, $n) = @_; - - return $self->{offsets}[$n] if $self->{eof}; - - my $fh = $self->{fh}; - local *OFF = $self->{offsets}; - my $rec; - - until ($#OFF >= $n) { - $self->_seek(-1); # tricky -- see comment at _seek - $rec = $self->_read_record; - if (defined $rec) { - push @OFF, int(tell $fh); # Tels says that int() saves memory here - } else { - $self->{eof} = 1; - return; # It turns out there is no such record - } - } - - # we have now read all the records up to record n-1, - # so we can return the offset of record n - $OFF[$n]; -} - -sub _fill_offsets { - my ($self) = @_; - - my $fh = $self->{fh}; - local *OFF = $self->{offsets}; - - $self->_seek(-1); # tricky -- see comment at _seek - - # Tels says that inlining read_record() would make this loop - # five times faster. 20030508 - while ( defined $self->_read_record()) { - # int() saves us memory here - push @OFF, int(tell $fh); - } - - $self->{eof} = 1; - $#OFF; -} - -# assumes that $rec is already suitably terminated -sub _write_record { - my ($self, $rec) = @_; - my $fh = $self->{fh}; - local $\ = ""; - print $fh $rec - or die "Couldn't write record: $!"; # "Should never happen." -# $self->{_written} += length($rec); -} - -sub _read_record { - my $self = shift; - my $rec; - { local $/ = $self->{recsep}; - my $fh = $self->{fh}; - $rec = <$fh>; - } - return unless defined $rec; - if (substr($rec, -$self->{recseplen}) ne $self->{recsep}) { - # improperly terminated final record --- quietly fix it. -# my $ac = substr($rec, -$self->{recseplen}); -# $ac =~ s/\n/\\n/g; - $self->{sawlastrec} = 1; - unless ($self->{rdonly}) { - local $\ = ""; - my $fh = $self->{fh}; - print $fh $self->{recsep}; - } - $rec .= $self->{recsep}; - } -# $self->{_read} += length($rec) if defined $rec; - $rec; -} - -sub _rw_stats { - my $self = shift; - @{$self}{'_read', '_written'}; -} - -################################################################ -# -# Read cache management - -sub _cache_flush { - my ($self) = @_; - $self->{cache}->reduce_size_to($self->{memory} - $self->{deferred_s}); -} - -sub _cache_too_full { - my $self = shift; - $self->{cache}->bytes + $self->{deferred_s} >= $self->{memory}; -} - -################################################################ -# -# File custodial services -# - - -# We have read to the end of the file and have the offsets table -# entirely populated. Now we need to write a new record beyond -# the end of the file. We prepare for this by writing -# empty records into the file up to the position we want -# -# assumes that the offsets table already contains the offset of record $n, -# if it exists, and extends to the end of the file if not. -sub _extend_file_to { - my ($self, $n) = @_; - $self->_seek(-1); # position after the end of the last record - my $pos = $self->{offsets}[-1]; - - # the offsets table has one entry more than the total number of records - my $extras = $n - $#{$self->{offsets}}; - - # Todo : just use $self->{recsep} x $extras here? - while ($extras-- > 0) { - $self->_write_record($self->{recsep}); - push @{$self->{offsets}}, int(tell $self->{fh}); - } -} - -# Truncate the file at the current position -sub _chop_file { - my $self = shift; - truncate $self->{fh}, tell($self->{fh}); -} - - -# compute the size of a buffer suitable for moving -# all the data in a file forward $n bytes -# ($n may be negative) -# The result should be at least $n. -sub _bufsize { - my $n = shift; - return 8192 if $n <= 0; - my $b = $n & ~8191; - $b += 8192 if $n & 8191; - $b; -} - -################################################################ -# -# Miscellaneous public methods -# - -# Lock the file -sub flock { - my ($self, $op) = @_; - unless (@_ <= 3) { - my $pack = ref $self; - croak "Usage: $pack\->flock([OPERATION])"; - } - my $fh = $self->{fh}; - $op = LOCK_EX unless defined $op; - my $locked = flock $fh, $op; - - if ($locked && ($op & (LOCK_EX | LOCK_SH))) { - # If you're locking the file, then presumably it's because - # there might have been a write access by another process. - # In that case, the read cache contents and the offsets table - # might be invalid, so discard them. 20030508 - $self->{offsets} = [0]; - $self->{cache}->empty; - } - - $locked; -} - -# Get/set autochomp option -sub autochomp { - my $self = shift; - if (@_) { - my $old = $self->{autochomp}; - $self->{autochomp} = shift; - $old; - } else { - $self->{autochomp}; - } -} - -# Get offset table entries; returns offset of nth record -sub offset { - my ($self, $n) = @_; - - if ($#{$self->{offsets}} < $n) { - return if $self->{eof}; # request for record beyond the end of file - my $o = $self->_fill_offsets_to($n); - # If it's still undefined, there is no such record, so return 'undef' - return unless defined $o; - } - - $self->{offsets}[$n]; -} - -sub discard_offsets { - my $self = shift; - $self->{offsets} = [0]; -} - -################################################################ -# -# Matters related to deferred writing -# - -# Defer writes -sub defer { - my $self = shift; - $self->_stop_autodeferring; - @{$self->{ad_history}} = (); - $self->{defer} = 1; -} - -# Flush deferred writes -# -# This could be better optimized to write the file in one pass, instead -# of one pass per block of records. But that will require modifications -# to _twrite, so I should have a good _twrite test suite first. -sub flush { - my $self = shift; - - $self->_flush; - $self->{defer} = 0; -} - -sub _old_flush { - my $self = shift; - my @writable = sort {$a<=>$b} (keys %{$self->{deferred}}); - - while (@writable) { - # gather all consecutive records from the front of @writable - my $first_rec = shift @writable; - my $last_rec = $first_rec+1; - ++$last_rec, shift @writable while @writable && $last_rec == $writable[0]; - --$last_rec; - $self->_fill_offsets_to($last_rec); - $self->_extend_file_to($last_rec); - $self->_splice($first_rec, $last_rec-$first_rec+1, - @{$self->{deferred}}{$first_rec .. $last_rec}); - } - - $self->_discard; # clear out defered-write-cache -} - -sub _flush { - my $self = shift; - my @writable = sort {$a<=>$b} (keys %{$self->{deferred}}); - my @args; - my @adjust; - - while (@writable) { - # gather all consecutive records from the front of @writable - my $first_rec = shift @writable; - my $last_rec = $first_rec+1; - ++$last_rec, shift @writable while @writable && $last_rec == $writable[0]; - --$last_rec; - my $end = $self->_fill_offsets_to($last_rec+1); - if (not defined $end) { - $self->_extend_file_to($last_rec); - $end = $self->{offsets}[$last_rec]; - } - my ($start) = $self->{offsets}[$first_rec]; - push @args, - join("", @{$self->{deferred}}{$first_rec .. $last_rec}), # data - $start, # position - $end-$start; # length - push @adjust, [$first_rec, # starting at this position... - $last_rec-$first_rec+1, # this many records... - # are replaced with these... - @{$self->{deferred}}{$first_rec .. $last_rec}, - ]; - } - - $self->_mtwrite(@args); # write multiple record groups - $self->_discard; # clear out defered-write-cache - $self->_oadjust(@adjust); -} - -# Discard deferred writes and disable future deferred writes -sub discard { - my $self = shift; - $self->_discard; - $self->{defer} = 0; -} - -# Discard deferred writes, but retain old deferred writing mode -sub _discard { - my $self = shift; - %{$self->{deferred}} = (); - $self->{deferred_s} = 0; - $self->{deferred_max} = -1; - $self->{cache}->set_limit($self->{memory}); -} - -# Deferred writing is enabled, either explicitly ($self->{defer}) -# or automatically ($self->{autodeferring}) -sub _is_deferring { - my $self = shift; - $self->{defer} || $self->{autodeferring}; -} - -# The largest record number of any deferred record -sub _defer_max { - my $self = shift; - return $self->{deferred_max} if defined $self->{deferred_max}; - my $max = -1; - for my $key (keys %{$self->{deferred}}) { - $max = $key if $key > $max; - } - $self->{deferred_max} = $max; - $max; -} - -################################################################ -# -# Matters related to autodeferment -# - -# Get/set autodefer option -sub autodefer { - my $self = shift; - if (@_) { - my $old = $self->{autodefer}; - $self->{autodefer} = shift; - if ($old) { - $self->_stop_autodeferring; - @{$self->{ad_history}} = (); - } - $old; - } else { - $self->{autodefer}; - } -} - -# The user is trying to store record #$n Record that in the history, -# and then enable (or disable) autodeferment if that seems useful. -# Note that it's OK for $n to be a non-number, as long as the function -# is prepared to deal with that. Nobody else looks at the ad_history. -# -# Now, what does the ad_history mean, and what is this function doing? -# Essentially, the idea is to enable autodeferring when we see that the -# user has made three consecutive STORE calls to three consecutive records. -# ("Three" is actually ->{autodefer_threshhold}.) -# A STORE call for record #$n inserts $n into the autodefer history, -# and if the history contains three consecutive records, we enable -# autodeferment. An ad_history of [X, Y] means that the most recent -# STOREs were for records X, X+1, ..., Y, in that order. -# -# Inserting a nonconsecutive number erases the history and starts over. -# -# Performing a special operation like SPLICE erases the history. -# -# There's one special case: CLEAR means that CLEAR was just called. -# In this case, we prime the history with [-2, -1] so that if the next -# write is for record 0, autodeferring goes on immediately. This is for -# the common special case of "@a = (...)". -# -sub _annotate_ad_history { - my ($self, $n) = @_; - return unless $self->{autodefer}; # feature is disabled - return if $self->{defer}; # already in explicit defer mode - return unless $self->{offsets}[-1] >= $self->{autodefer_filelen_threshhold}; - - local *H = $self->{ad_history}; - if ($n eq 'CLEAR') { - @H = (-2, -1); # prime the history with fake records - $self->_stop_autodeferring; - } elsif ($n =~ /^\d+$/) { - if (@H == 0) { - @H = ($n, $n); - } else { # @H == 2 - if ($H[1] == $n-1) { # another consecutive record - $H[1]++; - if ($H[1] - $H[0] + 1 >= $self->{autodefer_threshhold}) { - $self->{autodeferring} = 1; - } - } else { # nonconsecutive- erase and start over - @H = ($n, $n); - $self->_stop_autodeferring; - } - } - } else { # SPLICE or STORESIZE or some such - @H = (); - $self->_stop_autodeferring; - } -} - -# If autodeferring was enabled, cut it out and discard the history -sub _stop_autodeferring { - my $self = shift; - if ($self->{autodeferring}) { - $self->_flush; - } - $self->{autodeferring} = 0; -} - -################################################################ - - -# This is NOT a method. It is here for two reasons: -# 1. To factor a fairly complicated block out of the constructor -# 2. To provide access for the test suite, which need to be sure -# files are being written properly. -sub _default_recsep { - my $recsep = $/; - if ($^O eq 'MSWin32') { # Dos too? - # Windows users expect files to be terminated with \r\n - # But $/ is set to \n instead - # Note that this also transforms \n\n into \r\n\r\n. - # That is a feature. - $recsep =~ s/\n/\r\n/g; - } - $recsep; -} - -# Utility function for _check_integrity -sub _ci_warn { - my $msg = shift; - $msg =~ s/\n/\\n/g; - $msg =~ s/\r/\\r/g; - print "# $msg\n"; -} - -# Given a file, make sure the cache is consistent with the -# file contents and the internal data structures are consistent with -# each other. Returns true if everything checks out, false if not -# -# The $file argument is no longer used. It is retained for compatibility -# with the existing test suite. -sub _check_integrity { - my ($self, $file, $warn) = @_; - my $rsl = $self->{recseplen}; - my $rs = $self->{recsep}; - my $good = 1; - local *_; # local $_ does not work here - local $DIAGNOSTIC = 1; - - if (not defined $rs) { - _ci_warn("recsep is undef!"); - $good = 0; - } elsif ($rs eq "") { - _ci_warn("recsep is empty!"); - $good = 0; - } elsif ($rsl != length $rs) { - my $ln = length $rs; - _ci_warn("recsep <$rs> has length $ln, should be $rsl"); - $good = 0; - } - - if (not defined $self->{offsets}[0]) { - _ci_warn("offset 0 is missing!"); - $good = 0; - - } elsif ($self->{offsets}[0] != 0) { - _ci_warn("rec 0: offset <$self->{offsets}[0]> s/b 0!"); - $good = 0; - } - - my $cached = 0; - { - local *F = $self->{fh}; - seek F, 0, SEEK_SET; - local $. = 0; - local $/ = $rs; - - while (<F>) { - my $n = $. - 1; - my $cached = $self->{cache}->_produce($n); - my $offset = $self->{offsets}[$.]; - my $ao = tell F; - if (defined $offset && $offset != $ao) { - _ci_warn("rec $n: offset <$offset> actual <$ao>"); - $good = 0; - } - if (defined $cached && $_ ne $cached && ! $self->{deferred}{$n}) { - $good = 0; - _ci_warn("rec $n: cached <$cached> actual <$_>"); - } - if (defined $cached && substr($cached, -$rsl) ne $rs) { - $good = 0; - _ci_warn("rec $n in the cache is missing the record separator"); - } - if (! defined $offset && $self->{eof}) { - $good = 0; - _ci_warn("The offset table was marked complete, but it is missing element $."); - } - } - if (@{$self->{offsets}} > $.+1) { - $good = 0; - my $n = @{$self->{offsets}}; - _ci_warn("The offset table has $n items, but the file has only $."); - } - - my $deferring = $self->_is_deferring; - for my $n ($self->{cache}->ckeys) { - my $r = $self->{cache}->_produce($n); - $cached += length($r); - next if $n+1 <= $.; # checked this already - _ci_warn("spurious caching of record $n"); - $good = 0; - } - my $b = $self->{cache}->bytes; - if ($cached != $b) { - _ci_warn("cache size is $b, should be $cached"); - $good = 0; - } - } - - # That cache has its own set of tests - $good = 0 unless $self->{cache}->_check_integrity; - - # Now let's check the deferbuffer - # Unless deferred writing is enabled, it should be empty - if (! $self->_is_deferring && %{$self->{deferred}}) { - _ci_warn("deferred writing disabled, but deferbuffer nonempty"); - $good = 0; - } - - # Any record in the deferbuffer should *not* be present in the readcache - my $deferred_s = 0; - while (my ($n, $r) = each %{$self->{deferred}}) { - $deferred_s += length($r); - if (defined $self->{cache}->_produce($n)) { - _ci_warn("record $n is in the deferbuffer *and* the readcache"); - $good = 0; - } - if (substr($r, -$rsl) ne $rs) { - _ci_warn("rec $n in the deferbuffer is missing the record separator"); - $good = 0; - } - } - - # Total size of deferbuffer should match internal total - if ($deferred_s != $self->{deferred_s}) { - _ci_warn("buffer size is $self->{deferred_s}, should be $deferred_s"); - $good = 0; - } - - # Total size of deferbuffer should not exceed the specified limit - if ($deferred_s > $self->{dw_size}) { - _ci_warn("buffer size is $self->{deferred_s} which exceeds the limit of $self->{dw_size}"); - $good = 0; - } - - # Total size of cached data should not exceed the specified limit - if ($deferred_s + $cached > $self->{memory}) { - my $total = $deferred_s + $cached; - _ci_warn("total stored data size is $total which exceeds the limit of $self->{memory}"); - $good = 0; - } - - # Stuff related to autodeferment - if (!$self->{autodefer} && @{$self->{ad_history}}) { - _ci_warn("autodefer is disabled, but ad_history is nonempty"); - $good = 0; - } - if ($self->{autodeferring} && $self->{defer}) { - _ci_warn("both autodeferring and explicit deferring are active"); - $good = 0; - } - if (@{$self->{ad_history}} == 0) { - # That's OK, no additional tests required - } elsif (@{$self->{ad_history}} == 2) { - my @non_number = grep !/^-?\d+$/, @{$self->{ad_history}}; - if (@non_number) { - my $msg; - { local $" = ')('; - $msg = "ad_history contains non-numbers (@{$self->{ad_history}})"; - } - _ci_warn($msg); - $good = 0; - } elsif ($self->{ad_history}[1] < $self->{ad_history}[0]) { - _ci_warn("ad_history has nonsensical values @{$self->{ad_history}}"); - $good = 0; - } - } else { - _ci_warn("ad_history has bad length <@{$self->{ad_history}}>"); - $good = 0; - } - - $good; -} - -################################################################ -# -# Tie::File::Cache -# -# Read cache - -package Tie::File::Cache; -$Tie::File::Cache::VERSION = $Tie::File::VERSION; -use Carp ':DEFAULT', 'confess'; - -sub HEAP () { 0 } -sub HASH () { 1 } -sub MAX () { 2 } -sub BYTES() { 3 } -#sub STAT () { 4 } # Array with request statistics for each record -#sub MISS () { 5 } # Total number of cache misses -#sub REQ () { 6 } # Total number of cache requests -use strict 'vars'; - -sub new { - my ($pack, $max) = @_; - local *_; - croak "missing argument to ->new" unless defined $max; - my $self = []; - bless $self => $pack; - @$self = (Tie::File::Heap->new($self), {}, $max, 0); - $self; -} - -sub adj_limit { - my ($self, $n) = @_; - $self->[MAX] += $n; -} - -sub set_limit { - my ($self, $n) = @_; - $self->[MAX] = $n; -} - -# For internal use only -# Will be called by the heap structure to notify us that a certain -# piece of data has moved from one heap element to another. -# $k is the hash key of the item -# $n is the new index into the heap at which it is stored -# If $n is undefined, the item has been removed from the heap. -sub _heap_move { - my ($self, $k, $n) = @_; - if (defined $n) { - $self->[HASH]{$k} = $n; - } else { - delete $self->[HASH]{$k}; - } -} - -sub insert { - my ($self, $key, $val) = @_; - local *_; - croak "missing argument to ->insert" unless defined $key; - unless (defined $self->[MAX]) { - confess "undefined max" ; - } - confess "undefined val" unless defined $val; - return if length($val) > $self->[MAX]; - -# if ($self->[STAT]) { -# $self->[STAT][$key] = 1; -# return; -# } - - my $oldnode = $self->[HASH]{$key}; - if (defined $oldnode) { - my $oldval = $self->[HEAP]->set_val($oldnode, $val); - $self->[BYTES] -= length($oldval); - } else { - $self->[HEAP]->insert($key, $val); - } - $self->[BYTES] += length($val); - $self->flush if $self->[BYTES] > $self->[MAX]; -} - -sub expire { - my $self = shift; - my $old_data = $self->[HEAP]->popheap; - return unless defined $old_data; - $self->[BYTES] -= length $old_data; - $old_data; -} - -sub remove { - my ($self, @keys) = @_; - my @result; - -# if ($self->[STAT]) { -# for my $key (@keys) { -# $self->[STAT][$key] = 0; -# } -# return; -# } - - for my $key (@keys) { - next unless exists $self->[HASH]{$key}; - my $old_data = $self->[HEAP]->remove($self->[HASH]{$key}); - $self->[BYTES] -= length $old_data; - push @result, $old_data; - } - @result; -} - -sub lookup { - my ($self, $key) = @_; - local *_; - croak "missing argument to ->lookup" unless defined $key; - -# if ($self->[STAT]) { -# $self->[MISS]++ if $self->[STAT][$key]++ == 0; -# $self->[REQ]++; -# my $hit_rate = 1 - $self->[MISS] / $self->[REQ]; -# # Do some testing to determine this threshhold -# $#$self = STAT - 1 if $hit_rate > 0.20; -# } - - if (exists $self->[HASH]{$key}) { - $self->[HEAP]->lookup($self->[HASH]{$key}); - } else { - return; - } -} - -# For internal use only -sub _produce { - my ($self, $key) = @_; - my $loc = $self->[HASH]{$key}; - return unless defined $loc; - $self->[HEAP][$loc][2]; -} - -# For internal use only -sub _promote { - my ($self, $key) = @_; - $self->[HEAP]->promote($self->[HASH]{$key}); -} - -sub empty { - my ($self) = @_; - %{$self->[HASH]} = (); - $self->[BYTES] = 0; - $self->[HEAP]->empty; -# @{$self->[STAT]} = (); -# $self->[MISS] = 0; -# $self->[REQ] = 0; -} - -sub is_empty { - my ($self) = @_; - keys %{$self->[HASH]} == 0; -} - -sub update { - my ($self, $key, $val) = @_; - local *_; - croak "missing argument to ->update" unless defined $key; - if (length($val) > $self->[MAX]) { - my ($oldval) = $self->remove($key); - $self->[BYTES] -= length($oldval) if defined $oldval; - } elsif (exists $self->[HASH]{$key}) { - my $oldval = $self->[HEAP]->set_val($self->[HASH]{$key}, $val); - $self->[BYTES] += length($val); - $self->[BYTES] -= length($oldval) if defined $oldval; - } else { - $self->[HEAP]->insert($key, $val); - $self->[BYTES] += length($val); - } - $self->flush; -} - -sub rekey { - my ($self, $okeys, $nkeys) = @_; - local *_; - my %map; - @map{@$okeys} = @$nkeys; - croak "missing argument to ->rekey" unless defined $nkeys; - croak "length mismatch in ->rekey arguments" unless @$nkeys == @$okeys; - my %adjusted; # map new keys to heap indices - # You should be able to cut this to one loop TODO XXX - for (0 .. $#$okeys) { - $adjusted{$nkeys->[$_]} = delete $self->[HASH]{$okeys->[$_]}; - } - while (my ($nk, $ix) = each %adjusted) { - # @{$self->[HASH]}{keys %adjusted} = values %adjusted; - $self->[HEAP]->rekey($ix, $nk); - $self->[HASH]{$nk} = $ix; - } -} - -sub ckeys { - my $self = shift; - my @a = keys %{$self->[HASH]}; - @a; -} - -# Return total amount of cached data -sub bytes { - my $self = shift; - $self->[BYTES]; -} - -# Expire oldest item from cache until cache size is smaller than $max -sub reduce_size_to { - my ($self, $max) = @_; - until ($self->[BYTES] <= $max) { - # Note that Tie::File::Cache::expire has been inlined here - my $old_data = $self->[HEAP]->popheap; - return unless defined $old_data; - $self->[BYTES] -= length $old_data; - } -} - -# Why not just $self->reduce_size_to($self->[MAX])? -# Try this when things stabilize TODO XXX -# If the cache is too full, expire the oldest records -sub flush { - my $self = shift; - $self->reduce_size_to($self->[MAX]) if $self->[BYTES] > $self->[MAX]; -} - -# For internal use only -sub _produce_lru { - my $self = shift; - $self->[HEAP]->expire_order; -} - -BEGIN { *_ci_warn = \&Tie::File::_ci_warn } - -sub _check_integrity { # For CACHE - my $self = shift; - my $good = 1; - - # Test HEAP - $self->[HEAP]->_check_integrity or $good = 0; - - # Test HASH - my $bytes = 0; - for my $k (keys %{$self->[HASH]}) { - if ($k ne '0' && $k !~ /^[1-9][0-9]*$/) { - $good = 0; - _ci_warn "Cache hash key <$k> is non-numeric"; - } - - my $h = $self->[HASH]{$k}; - if (! defined $h) { - $good = 0; - _ci_warn "Heap index number for key $k is undefined"; - } elsif ($h == 0) { - $good = 0; - _ci_warn "Heap index number for key $k is zero"; - } else { - my $j = $self->[HEAP][$h]; - if (! defined $j) { - $good = 0; - _ci_warn "Heap contents key $k (=> $h) are undefined"; - } else { - $bytes += length($j->[2]); - if ($k ne $j->[1]) { - $good = 0; - _ci_warn "Heap contents key $k (=> $h) is $j->[1], should be $k"; - } - } - } - } - - # Test BYTES - if ($bytes != $self->[BYTES]) { - $good = 0; - _ci_warn "Total data in cache is $bytes, expected $self->[BYTES]"; - } - - # Test MAX - if ($bytes > $self->[MAX]) { - $good = 0; - _ci_warn "Total data in cache is $bytes, exceeds maximum $self->[MAX]"; - } - - return $good; -} - -sub delink { - my $self = shift; - $self->[HEAP] = undef; # Bye bye heap -} - -################################################################ -# -# Tie::File::Heap -# -# Heap data structure for use by cache LRU routines - -package Tie::File::Heap; -use Carp ':DEFAULT', 'confess'; -$Tie::File::Heap::VERSION = $Tie::File::Cache::VERSION; -sub SEQ () { 0 }; -sub KEY () { 1 }; -sub DAT () { 2 }; - -sub new { - my ($pack, $cache) = @_; - die "$pack: Parent cache object $cache does not support _heap_move method" - unless eval { $cache->can('_heap_move') }; - my $self = [[0,$cache,0]]; - bless $self => $pack; -} - -# Allocate a new sequence number, larger than all previously allocated numbers -sub _nseq { - my $self = shift; - $self->[0][0]++; -} - -sub _cache { - my $self = shift; - $self->[0][1]; -} - -sub _nelts { - my $self = shift; - $self->[0][2]; -} - -sub _nelts_inc { - my $self = shift; - ++$self->[0][2]; -} - -sub _nelts_dec { - my $self = shift; - --$self->[0][2]; -} - -sub is_empty { - my $self = shift; - $self->_nelts == 0; -} - -sub empty { - my $self = shift; - $#$self = 0; - $self->[0][2] = 0; - $self->[0][0] = 0; # might as well reset the sequence numbers -} - -# notify the parent cache object that we moved something -sub _heap_move { - my $self = shift; - $self->_cache->_heap_move(@_); -} - -# Insert a piece of data into the heap with the indicated sequence number. -# The item with the smallest sequence number is always at the top. -# If no sequence number is specified, allocate a new one and insert the -# item at the bottom. -sub insert { - my ($self, $key, $data, $seq) = @_; - $seq = $self->_nseq unless defined $seq; - $self->_insert_new([$seq, $key, $data]); -} - -# Insert a new, fresh item at the bottom of the heap -sub _insert_new { - my ($self, $item) = @_; - my $i = @$self; - $i = int($i/2) until defined $self->[$i/2]; - $self->[$i] = $item; - $self->[0][1]->_heap_move($self->[$i][KEY], $i); - $self->_nelts_inc; -} - -# Insert [$data, $seq] pair at or below item $i in the heap. -# If $i is omitted, default to 1 (the top element.) -sub _insert { - my ($self, $item, $i) = @_; -# $self->_check_loc($i) if defined $i; - $i = 1 unless defined $i; - until (! defined $self->[$i]) { - if ($self->[$i][SEQ] > $item->[SEQ]) { # inserted item is older - ($self->[$i], $item) = ($item, $self->[$i]); - $self->[0][1]->_heap_move($self->[$i][KEY], $i); - } - # If either is undefined, go that way. Otherwise, choose at random - my $dir; - $dir = 0 if !defined $self->[2*$i]; - $dir = 1 if !defined $self->[2*$i+1]; - $dir = int(rand(2)) unless defined $dir; - $i = 2*$i + $dir; - } - $self->[$i] = $item; - $self->[0][1]->_heap_move($self->[$i][KEY], $i); - $self->_nelts_inc; -} - -# Remove the item at node $i from the heap, moving child items upwards. -# The item with the smallest sequence number is always at the top. -# Moving items upwards maintains this condition. -# Return the removed item. Return undef if there was no item at node $i. -sub remove { - my ($self, $i) = @_; - $i = 1 unless defined $i; - my $top = $self->[$i]; - return unless defined $top; - while (1) { - my $ii; - my ($L, $R) = (2*$i, 2*$i+1); - - # If either is undefined, go the other way. - # Otherwise, go towards the smallest. - last unless defined $self->[$L] || defined $self->[$R]; - $ii = $R if not defined $self->[$L]; - $ii = $L if not defined $self->[$R]; - unless (defined $ii) { - $ii = $self->[$L][SEQ] < $self->[$R][SEQ] ? $L : $R; - } - - $self->[$i] = $self->[$ii]; # Promote child to fill vacated spot - $self->[0][1]->_heap_move($self->[$i][KEY], $i); - $i = $ii; # Fill new vacated spot - } - $self->[0][1]->_heap_move($top->[KEY], undef); - undef $self->[$i]; - $self->_nelts_dec; - return $top->[DAT]; -} - -sub popheap { - my $self = shift; - $self->remove(1); -} - -# set the sequence number of the indicated item to a higher number -# than any other item in the heap, and bubble the item down to the -# bottom. -sub promote { - my ($self, $n) = @_; -# $self->_check_loc($n); - $self->[$n][SEQ] = $self->_nseq; - my $i = $n; - while (1) { - my ($L, $R) = (2*$i, 2*$i+1); - my $dir; - last unless defined $self->[$L] || defined $self->[$R]; - $dir = $R unless defined $self->[$L]; - $dir = $L unless defined $self->[$R]; - unless (defined $dir) { - $dir = $self->[$L][SEQ] < $self->[$R][SEQ] ? $L : $R; - } - @{$self}[$i, $dir] = @{$self}[$dir, $i]; - for ($i, $dir) { - $self->[0][1]->_heap_move($self->[$_][KEY], $_) if defined $self->[$_]; - } - $i = $dir; - } -} - -# Return item $n from the heap, promoting its LRU status -sub lookup { - my ($self, $n) = @_; -# $self->_check_loc($n); - my $val = $self->[$n]; - $self->promote($n); - $val->[DAT]; -} - - -# Assign a new value for node $n, promoting it to the bottom of the heap -sub set_val { - my ($self, $n, $val) = @_; -# $self->_check_loc($n); - my $oval = $self->[$n][DAT]; - $self->[$n][DAT] = $val; - $self->promote($n); - return $oval; -} - -# The hask key has changed for an item; -# alter the heap's record of the hash key -sub rekey { - my ($self, $n, $new_key) = @_; -# $self->_check_loc($n); - $self->[$n][KEY] = $new_key; -} - -sub _check_loc { - my ($self, $n) = @_; - unless (1 || defined $self->[$n]) { - confess "_check_loc($n) failed"; - } -} - -BEGIN { *_ci_warn = \&Tie::File::_ci_warn } - -sub _check_integrity { - my $self = shift; - my $good = 1; - my %seq; - - unless (eval {$self->[0][1]->isa("Tie::File::Cache")}) { - _ci_warn "Element 0 of heap corrupt"; - $good = 0; - } - $good = 0 unless $self->_satisfies_heap_condition(1); - for my $i (2 .. $#{$self}) { - my $p = int($i/2); # index of parent node - if (defined $self->[$i] && ! defined $self->[$p]) { - _ci_warn "Element $i of heap defined, but parent $p isn't"; - $good = 0; - } - - if (defined $self->[$i]) { - if ($seq{$self->[$i][SEQ]}) { - my $seq = $self->[$i][SEQ]; - _ci_warn "Nodes $i and $seq{$seq} both have SEQ=$seq"; - $good = 0; - } else { - $seq{$self->[$i][SEQ]} = $i; - } - } - } - - return $good; -} - -sub _satisfies_heap_condition { - my $self = shift; - my $n = shift || 1; - my $good = 1; - for (0, 1) { - my $c = $n*2 + $_; - next unless defined $self->[$c]; - if ($self->[$n][SEQ] >= $self->[$c]) { - _ci_warn "Node $n of heap does not predate node $c"; - $good = 0 ; - } - $good = 0 unless $self->_satisfies_heap_condition($c); - } - return $good; -} - -# Return a list of all the values, sorted by expiration order -sub expire_order { - my $self = shift; - my @nodes = sort {$a->[SEQ] <=> $b->[SEQ]} $self->_nodes; - map { $_->[KEY] } @nodes; -} - -sub _nodes { - my $self = shift; - my $i = shift || 1; - return unless defined $self->[$i]; - ($self->[$i], $self->_nodes($i*2), $self->_nodes($i*2+1)); -} - -"Cogito, ergo sum."; # don't forget to return a true value from the file - -__END__ - -=head1 NAME - -Tie::File - Access the lines of a disk file via a Perl array - -=head1 SYNOPSIS - - # This file documents Tie::File version 0.97 - use Tie::File; - - tie @array, 'Tie::File', filename or die ...; - - $array[13] = 'blah'; # line 13 of the file is now 'blah' - print $array[42]; # display line 42 of the file - - $n_recs = @array; # how many records are in the file? - $#array -= 2; # chop two records off the end - - - for (@array) { - s/PERL/Perl/g; # Replace PERL with Perl everywhere in the file - } - - # These are just like regular push, pop, unshift, shift, and splice - # Except that they modify the file in the way you would expect - - push @array, new recs...; - my $r1 = pop @array; - unshift @array, new recs...; - my $r2 = shift @array; - @old_recs = splice @array, 3, 7, new recs...; - - untie @array; # all finished - - -=head1 DESCRIPTION - -C<Tie::File> represents a regular text file as a Perl array. Each -element in the array corresponds to a record in the file. The first -line of the file is element 0 of the array; the second line is element -1, and so on. - -The file is I<not> loaded into memory, so this will work even for -gigantic files. - -Changes to the array are reflected in the file immediately. - -Lazy people and beginners may now stop reading the manual. - -=head2 C<recsep> - -What is a 'record'? By default, the meaning is the same as for the -C<E<lt>...E<gt>> operator: It's a string terminated by C<$/>, which is -probably C<"\n">. (Minor exception: on DOS and Win32 systems, a -'record' is a string terminated by C<"\r\n">.) You may change the -definition of "record" by supplying the C<recsep> option in the C<tie> -call: - - tie @array, 'Tie::File', $file, recsep => 'es'; - -This says that records are delimited by the string C<es>. If the file -contained the following data: - - Curse these pesky flies!\n - -then the C<@array> would appear to have four elements: - - "Curse th" - "e p" - "ky fli" - "!\n" - -An undefined value is not permitted as a record separator. Perl's -special "paragraph mode" semantics (E<agrave> la C<$/ = "">) are not -emulated. - -Records read from the tied array do not have the record separator -string on the end; this is to allow - - $array[17] .= "extra"; - -to work as expected. - -(See L<"autochomp">, below.) Records stored into the array will have -the record separator string appended before they are written to the -file, if they don't have one already. For example, if the record -separator string is C<"\n">, then the following two lines do exactly -the same thing: - - $array[17] = "Cherry pie"; - $array[17] = "Cherry pie\n"; - -The result is that the contents of line 17 of the file will be -replaced with "Cherry pie"; a newline character will separate line 17 -from line 18. This means that this code will do nothing: - - chomp $array[17]; - -Because the C<chomp>ed value will have the separator reattached when -it is written back to the file. There is no way to create a file -whose trailing record separator string is missing. - -Inserting records that I<contain> the record separator string is not -supported by this module. It will probably produce a reasonable -result, but what this result will be may change in a future version. -Use 'splice' to insert records or to replace one record with several. - -=head2 C<autochomp> - -Normally, array elements have the record separator removed, so that if -the file contains the text - - Gold - Frankincense - Myrrh - -the tied array will appear to contain C<("Gold", "Frankincense", -"Myrrh")>. If you set C<autochomp> to a false value, the record -separator will not be removed. If the file above was tied with - - tie @gifts, "Tie::File", $gifts, autochomp => 0; - -then the array C<@gifts> would appear to contain C<("Gold\n", -"Frankincense\n", "Myrrh\n")>, or (on Win32 systems) C<("Gold\r\n", -"Frankincense\r\n", "Myrrh\r\n")>. - -=head2 C<mode> - -Normally, the specified file will be opened for read and write access, -and will be created if it does not exist. (That is, the flags -C<O_RDWR | O_CREAT> are supplied in the C<open> call.) If you want to -change this, you may supply alternative flags in the C<mode> option. -See L<Fcntl> for a listing of available flags. -For example: - - # open the file if it exists, but fail if it does not exist - use Fcntl 'O_RDWR'; - tie @array, 'Tie::File', $file, mode => O_RDWR; - - # create the file if it does not exist - use Fcntl 'O_RDWR', 'O_CREAT'; - tie @array, 'Tie::File', $file, mode => O_RDWR | O_CREAT; - - # open an existing file in read-only mode - use Fcntl 'O_RDONLY'; - tie @array, 'Tie::File', $file, mode => O_RDONLY; - -Opening the data file in write-only or append mode is not supported. - -=head2 C<memory> - -This is an upper limit on the amount of memory that C<Tie::File> will -consume at any time while managing the file. This is used for two -things: managing the I<read cache> and managing the I<deferred write -buffer>. - -Records read in from the file are cached, to avoid having to re-read -them repeatedly. If you read the same record twice, the first time it -will be stored in memory, and the second time it will be fetched from -the I<read cache>. The amount of data in the read cache will not -exceed the value you specified for C<memory>. If C<Tie::File> wants -to cache a new record, but the read cache is full, it will make room -by expiring the least-recently visited records from the read cache. - -The default memory limit is 2Mib. You can adjust the maximum read -cache size by supplying the C<memory> option. The argument is the -desired cache size, in bytes. - - # I have a lot of memory, so use a large cache to speed up access - tie @array, 'Tie::File', $file, memory => 20_000_000; - -Setting the memory limit to 0 will inhibit caching; records will be -fetched from disk every time you examine them. - -The C<memory> value is not an absolute or exact limit on the memory -used. C<Tie::File> objects contains some structures besides the read -cache and the deferred write buffer, whose sizes are not charged -against C<memory>. - -The cache itself consumes about 310 bytes per cached record, so if -your file has many short records, you may want to decrease the cache -memory limit, or else the cache overhead may exceed the size of the -cached data. - - -=head2 C<dw_size> - -(This is an advanced feature. Skip this section on first reading.) - -If you use deferred writing (See L<"Deferred Writing">, below) then -data you write into the array will not be written directly to the -file; instead, it will be saved in the I<deferred write buffer> to be -written out later. Data in the deferred write buffer is also charged -against the memory limit you set with the C<memory> option. - -You may set the C<dw_size> option to limit the amount of data that can -be saved in the deferred write buffer. This limit may not exceed the -total memory limit. For example, if you set C<dw_size> to 1000 and -C<memory> to 2500, that means that no more than 1000 bytes of deferred -writes will be saved up. The space available for the read cache will -vary, but it will always be at least 1500 bytes (if the deferred write -buffer is full) and it could grow as large as 2500 bytes (if the -deferred write buffer is empty.) - -If you don't specify a C<dw_size>, it defaults to the entire memory -limit. - -=head2 Option Format - -C<-mode> is a synonym for C<mode>. C<-recsep> is a synonym for -C<recsep>. C<-memory> is a synonym for C<memory>. You get the -idea. - -=head1 Public Methods - -The C<tie> call returns an object, say C<$o>. You may call - - $rec = $o->FETCH($n); - $o->STORE($n, $rec); - -to fetch or store the record at line C<$n>, respectively; similarly -the other tied array methods. (See L<perltie> for details.) You may -also call the following methods on this object: - -=head2 C<flock> - - $o->flock(MODE) - -will lock the tied file. C<MODE> has the same meaning as the second -argument to the Perl built-in C<flock> function; for example -C<LOCK_SH> or C<LOCK_EX | LOCK_NB>. (These constants are provided by -the C<use Fcntl ':flock'> declaration.) - -C<MODE> is optional; the default is C<LOCK_EX>. - -C<Tie::File> maintains an internal table of the byte offset of each -record it has seen in the file. - -When you use C<flock> to lock the file, C<Tie::File> assumes that the -read cache is no longer trustworthy, because another process might -have modified the file since the last time it was read. Therefore, a -successful call to C<flock> discards the contents of the read cache -and the internal record offset table. - -C<Tie::File> promises that the following sequence of operations will -be safe: - - my $o = tie @array, "Tie::File", $filename; - $o->flock; - -In particular, C<Tie::File> will I<not> read or write the file during -the C<tie> call. (Exception: Using C<mode =E<gt> O_TRUNC> will, of -course, erase the file during the C<tie> call. If you want to do this -safely, then open the file without C<O_TRUNC>, lock the file, and use -C<@array = ()>.) - -The best way to unlock a file is to discard the object and untie the -array. It is probably unsafe to unlock the file without also untying -it, because if you do, changes may remain unwritten inside the object. -That is why there is no shortcut for unlocking. If you really want to -unlock the file prematurely, you know what to do; if you don't know -what to do, then don't do it. - -All the usual warnings about file locking apply here. In particular, -note that file locking in Perl is B<advisory>, which means that -holding a lock will not prevent anyone else from reading, writing, or -erasing the file; it only prevents them from getting another lock at -the same time. Locks are analogous to green traffic lights: If you -have a green light, that does not prevent the idiot coming the other -way from plowing into you sideways; it merely guarantees to you that -the idiot does not also have a green light at the same time. - -=head2 C<autochomp> - - my $old_value = $o->autochomp(0); # disable autochomp option - my $old_value = $o->autochomp(1); # enable autochomp option - - my $ac = $o->autochomp(); # recover current value - -See L<"autochomp">, above. - -=head2 C<defer>, C<flush>, C<discard>, and C<autodefer> - -See L<"Deferred Writing">, below. - -=head2 C<offset> - - $off = $o->offset($n); - -This method returns the byte offset of the start of the C<$n>th record -in the file. If there is no such record, it returns an undefined -value. - -=head1 Tying to an already-opened filehandle - -If C<$fh> is a filehandle, such as is returned by C<IO::File> or one -of the other C<IO> modules, you may use: - - tie @array, 'Tie::File', $fh, ...; - -Similarly if you opened that handle C<FH> with regular C<open> or -C<sysopen>, you may use: - - tie @array, 'Tie::File', \*FH, ...; - -Handles that were opened write-only won't work. Handles that were -opened read-only will work as long as you don't try to modify the -array. Handles must be attached to seekable sources of data---that -means no pipes or sockets. If C<Tie::File> can detect that you -supplied a non-seekable handle, the C<tie> call will throw an -exception. (On Unix systems, it can detect this.) - -Note that Tie::File will only close any filehandles that it opened -internally. If you passed it a filehandle as above, you "own" the -filehandle, and are responsible for closing it after you have untied -the @array. - -=head1 Deferred Writing - -(This is an advanced feature. Skip this section on first reading.) - -Normally, modifying a C<Tie::File> array writes to the underlying file -immediately. Every assignment like C<$a[3] = ...> rewrites as much of -the file as is necessary; typically, everything from line 3 through -the end will need to be rewritten. This is the simplest and most -transparent behavior. Performance even for large files is reasonably -good. - -However, under some circumstances, this behavior may be excessively -slow. For example, suppose you have a million-record file, and you -want to do: - - for (@FILE) { - $_ = "> $_"; - } - -The first time through the loop, you will rewrite the entire file, -from line 0 through the end. The second time through the loop, you -will rewrite the entire file from line 1 through the end. The third -time through the loop, you will rewrite the entire file from line 2 to -the end. And so on. - -If the performance in such cases is unacceptable, you may defer the -actual writing, and then have it done all at once. The following loop -will perform much better for large files: - - (tied @a)->defer; - for (@a) { - $_ = "> $_"; - } - (tied @a)->flush; - -If C<Tie::File>'s memory limit is large enough, all the writing will -done in memory. Then, when you call C<-E<gt>flush>, the entire file -will be rewritten in a single pass. - -(Actually, the preceding discussion is something of a fib. You don't -need to enable deferred writing to get good performance for this -common case, because C<Tie::File> will do it for you automatically -unless you specifically tell it not to. See L<"autodeferring">, -below.) - -Calling C<-E<gt>flush> returns the array to immediate-write mode. If -you wish to discard the deferred writes, you may call C<-E<gt>discard> -instead of C<-E<gt>flush>. Note that in some cases, some of the data -will have been written already, and it will be too late for -C<-E<gt>discard> to discard all the changes. Support for -C<-E<gt>discard> may be withdrawn in a future version of C<Tie::File>. - -Deferred writes are cached in memory up to the limit specified by the -C<dw_size> option (see above). If the deferred-write buffer is full -and you try to write still more deferred data, the buffer will be -flushed. All buffered data will be written immediately, the buffer -will be emptied, and the now-empty space will be used for future -deferred writes. - -If the deferred-write buffer isn't yet full, but the total size of the -buffer and the read cache would exceed the C<memory> limit, the oldest -records will be expired from the read cache until the total size is -under the limit. - -C<push>, C<pop>, C<shift>, C<unshift>, and C<splice> cannot be -deferred. When you perform one of these operations, any deferred data -is written to the file and the operation is performed immediately. -This may change in a future version. - -If you resize the array with deferred writing enabled, the file will -be resized immediately, but deferred records will not be written. -This has a surprising consequence: C<@a = (...)> erases the file -immediately, but the writing of the actual data is deferred. This -might be a bug. If it is a bug, it will be fixed in a future version. - -=head2 Autodeferring - -C<Tie::File> tries to guess when deferred writing might be helpful, -and to turn it on and off automatically. - - for (@a) { - $_ = "> $_"; - } - -In this example, only the first two assignments will be done -immediately; after this, all the changes to the file will be deferred -up to the user-specified memory limit. - -You should usually be able to ignore this and just use the module -without thinking about deferring. However, special applications may -require fine control over which writes are deferred, or may require -that all writes be immediate. To disable the autodeferment feature, -use - - (tied @o)->autodefer(0); - -or - - tie @array, 'Tie::File', $file, autodefer => 0; - - -Similarly, C<-E<gt>autodefer(1)> re-enables autodeferment, and -C<-E<gt>autodefer()> recovers the current value of the autodefer setting. - - -=head1 CONCURRENT ACCESS TO FILES - -Caching and deferred writing are inappropriate if you want the same -file to be accessed simultaneously from more than one process. Other -optimizations performed internally by this module are also -incompatible with concurrent access. A future version of this module will -support a C<concurrent =E<gt> 1> option that enables safe concurrent access. - -Previous versions of this documentation suggested using C<memory -=E<gt> 0> for safe concurrent access. This was mistaken. Tie::File -will not support safe concurrent access before version 0.98. - -=head1 CAVEATS - -(That's Latin for 'warnings'.) - -=over 4 - -=item * - -Reasonable effort was made to make this module efficient. Nevertheless, -changing the size of a record in the middle of a large file will -always be fairly slow, because everything after the new record must be -moved. - -=item * - -The behavior of tied arrays is not precisely the same as for regular -arrays. For example: - - # This DOES print "How unusual!" - undef $a[10]; print "How unusual!\n" if defined $a[10]; - -C<undef>-ing a C<Tie::File> array element just blanks out the -corresponding record in the file. When you read it back again, you'll -get the empty string, so the supposedly-C<undef>'ed value will be -defined. Similarly, if you have C<autochomp> disabled, then - - # This DOES print "How unusual!" if 'autochomp' is disabled - undef $a[10]; - print "How unusual!\n" if $a[10]; - -Because when C<autochomp> is disabled, C<$a[10]> will read back as -C<"\n"> (or whatever the record separator string is.) - -There are other minor differences, particularly regarding C<exists> -and C<delete>, but in general, the correspondence is extremely close. - -=item * - -I have supposed that since this module is concerned with file I/O, -almost all normal use of it will be heavily I/O bound. This means -that the time to maintain complicated data structures inside the -module will be dominated by the time to actually perform the I/O. -When there was an opportunity to spend CPU time to avoid doing I/O, I -usually tried to take it. - -=item * - -You might be tempted to think that deferred writing is like -transactions, with C<flush> as C<commit> and C<discard> as -C<rollback>, but it isn't, so don't. - -=item * - -There is a large memory overhead for each record offset and for each -cache entry: about 310 bytes per cached data record, and about 21 bytes per offset table entry. - -The per-record overhead will limit the maximum number of records you -can access per file. Note that I<accessing> the length of the array -via C<$x = scalar @tied_file> accesses B<all> records and stores their -offsets. The same for C<foreach (@tied_file)>, even if you exit the -loop early. - -=back - -=head1 SUBCLASSING - -This version promises absolutely nothing about the internals, which -may change without notice. A future version of the module will have a -well-defined and stable subclassing API. - -=head1 WHAT ABOUT C<DB_File>? - -People sometimes point out that L<DB_File> will do something similar, -and ask why C<Tie::File> module is necessary. - -There are a number of reasons that you might prefer C<Tie::File>. -A list is available at C<http://perl.plover.com/TieFile/why-not-DB_File>. - -=head1 AUTHOR - -Mark Jason Dominus - -To contact the author, send email to: C<mjd-perl-tiefile+@plover.com> - -To receive an announcement whenever a new version of this module is -released, send a blank email message to -C<mjd-perl-tiefile-subscribe@plover.com>. - -The most recent version of this module, including documentation and -any news of importance, will be available at - - http://perl.plover.com/TieFile/ - - -=head1 LICENSE - -C<Tie::File> version 0.97 is copyright (C) 2003 Mark Jason Dominus. - -This library is free software; you may redistribute it and/or modify -it under the same terms as Perl itself. - -These terms are your choice of any of (1) the Perl Artistic Licence, -or (2) version 2 of the GNU General Public License as published by the -Free Software Foundation, or (3) any later version of the GNU General -Public License. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this library program; it should be in the file C<COPYING>. -If not, write to the Free Software Foundation, Inc., 59 Temple Place, -Suite 330, Boston, MA 02111 USA - -For licensing inquiries, contact the author at: - - Mark Jason Dominus - 255 S. Warnock St. - Philadelphia, PA 19107 - -=head1 WARRANTY - -C<Tie::File> version 0.97 comes with ABSOLUTELY NO WARRANTY. -For details, see the license. - -=head1 THANKS - -Gigantic thanks to Jarkko Hietaniemi, for agreeing to put this in the -core when I hadn't written it yet, and for generally being helpful, -supportive, and competent. (Usually the rule is "choose any one.") -Also big thanks to Abhijit Menon-Sen for all of the same things. - -Special thanks to Craig Berry and Peter Prymmer (for VMS portability -help), Randy Kobes (for Win32 portability help), Clinton Pierce and -Autrijus Tang (for heroic eleventh-hour Win32 testing above and beyond -the call of duty), Michael G Schwern (for testing advice), and the -rest of the CPAN testers (for testing generally). - -Special thanks to Tels for suggesting several speed and memory -optimizations. - -Additional thanks to: -Edward Avis / -Mattia Barbon / -Tom Christiansen / -Gerrit Haase / -Gurusamy Sarathy / -Jarkko Hietaniemi (again) / -Nikola Knezevic / -John Kominetz / -Nick Ing-Simmons / -Tassilo von Parseval / -H. Dieter Pearcey / -Slaven Rezic / -Eric Roode / -Peter Scott / -Peter Somu / -Autrijus Tang (again) / -Tels (again) / -Juerd Waalboer - -=head1 TODO - -More tests. (Stuff I didn't think of yet.) - -Paragraph mode? - -Fixed-length mode. Leave-blanks mode. - -Maybe an autolocking mode? - -For many common uses of the module, the read cache is a liability. -For example, a program that inserts a single record, or that scans the -file once, will have a cache hit rate of zero. This suggests a major -optimization: The cache should be initially disabled. Here's a hybrid -approach: Initially, the cache is disabled, but the cache code -maintains statistics about how high the hit rate would be *if* it were -enabled. When it sees the hit rate get high enough, it enables -itself. The STAT comments in this code are the beginning of an -implementation of this. - -Record locking with fcntl()? Then the module might support an undo -log and get real transactions. What a tour de force that would be. - -Keeping track of the highest cached record. This would allow reads-in-a-row -to skip the cache lookup faster (if reading from 1..N with empty cache at -start, the last cached value will be always N-1). - -More tests. - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Tie/Handle.pm b/Master/tlpkg/tlperl.old/lib/Tie/Handle.pm deleted file mode 100644 index d8747f12af1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tie/Handle.pm +++ /dev/null @@ -1,234 +0,0 @@ -package Tie::Handle; - -use 5.006_001; -our $VERSION = '4.1'; - -=head1 NAME - -Tie::Handle, Tie::StdHandle - base class definitions for tied handles - -=head1 SYNOPSIS - - package NewHandle; - require Tie::Handle; - - @ISA = qw(Tie::Handle); - - sub READ { ... } # Provide a needed method - sub TIEHANDLE { ... } # Overrides inherited method - - - package main; - - tie *FH, 'NewHandle'; - -=head1 DESCRIPTION - -This module provides some skeletal methods for handle-tying classes. See -L<perltie> for a list of the functions required in tying a handle to a package. -The basic B<Tie::Handle> package provides a C<new> method, as well as methods -C<TIEHANDLE>, C<PRINT>, C<PRINTF> and C<GETC>. - -For developers wishing to write their own tied-handle classes, the methods -are summarized below. The L<perltie> section not only documents these, but -has sample code as well: - -=over 4 - -=item TIEHANDLE classname, LIST - -The method invoked by the command C<tie *glob, classname>. Associates a new -glob instance with the specified class. C<LIST> would represent additional -arguments (along the lines of L<AnyDBM_File> and compatriots) needed to -complete the association. - -=item WRITE this, scalar, length, offset - -Write I<length> bytes of data from I<scalar> starting at I<offset>. - -=item PRINT this, LIST - -Print the values in I<LIST> - -=item PRINTF this, format, LIST - -Print the values in I<LIST> using I<format> - -=item READ this, scalar, length, offset - -Read I<length> bytes of data into I<scalar> starting at I<offset>. - -=item READLINE this - -Read a single line - -=item GETC this - -Get a single character - -=item CLOSE this - -Close the handle - -=item OPEN this, filename - -(Re-)open the handle - -=item BINMODE this - -Specify content is binary - -=item EOF this - -Test for end of file. - -=item TELL this - -Return position in the file. - -=item SEEK this, offset, whence - -Position the file. - -Test for end of file. - -=item DESTROY this - -Free the storage associated with the tied handle referenced by I<this>. -This is rarely needed, as Perl manages its memory quite well. But the -option exists, should a class wish to perform specific actions upon the -destruction of an instance. - -=back - -=head1 MORE INFORMATION - -The L<perltie> section contains an example of tying handles. - -=head1 COMPATIBILITY - -This version of Tie::Handle is neither related to nor compatible with -the Tie::Handle (3.0) module available on CPAN. It was due to an -accident that two modules with the same name appeared. The namespace -clash has been cleared in favor of this module that comes with the -perl core in September 2000 and accordingly the version number has -been bumped up to 4.0. - -=cut - -use Carp; -use warnings::register; - -sub new { - my $pkg = shift; - $pkg->TIEHANDLE(@_); -} - -# "Grandfather" the new, a la Tie::Hash - -sub TIEHANDLE { - my $pkg = shift; - if (defined &{"{$pkg}::new"}) { - warnings::warnif("WARNING: calling ${pkg}->new since ${pkg}->TIEHANDLE is missing"); - $pkg->new(@_); - } - else { - croak "$pkg doesn't define a TIEHANDLE method"; - } -} - -sub PRINT { - my $self = shift; - if($self->can('WRITE') != \&WRITE) { - my $buf = join(defined $, ? $, : "",@_); - $buf .= $\ if defined $\; - $self->WRITE($buf,length($buf),0); - } - else { - croak ref($self)," doesn't define a PRINT method"; - } -} - -sub PRINTF { - my $self = shift; - - if($self->can('WRITE') != \&WRITE) { - my $buf = sprintf(shift,@_); - $self->WRITE($buf,length($buf),0); - } - else { - croak ref($self)," doesn't define a PRINTF method"; - } -} - -sub READLINE { - my $pkg = ref $_[0]; - croak "$pkg doesn't define a READLINE method"; -} - -sub GETC { - my $self = shift; - - if($self->can('READ') != \&READ) { - my $buf; - $self->READ($buf,1); - return $buf; - } - else { - croak ref($self)," doesn't define a GETC method"; - } -} - -sub READ { - my $pkg = ref $_[0]; - croak "$pkg doesn't define a READ method"; -} - -sub WRITE { - my $pkg = ref $_[0]; - croak "$pkg doesn't define a WRITE method"; -} - -sub CLOSE { - my $pkg = ref $_[0]; - croak "$pkg doesn't define a CLOSE method"; -} - -package Tie::StdHandle; -our @ISA = 'Tie::Handle'; -use Carp; - -sub TIEHANDLE -{ - my $class = shift; - my $fh = \do { local *HANDLE}; - bless $fh,$class; - $fh->OPEN(@_) if (@_); - return $fh; -} - -sub EOF { eof($_[0]) } -sub TELL { tell($_[0]) } -sub FILENO { fileno($_[0]) } -sub SEEK { seek($_[0],$_[1],$_[2]) } -sub CLOSE { close($_[0]) } -sub BINMODE { binmode($_[0]) } - -sub OPEN -{ - $_[0]->CLOSE if defined($_[0]->FILENO); - @_ == 2 ? open($_[0], $_[1]) : open($_[0], $_[1], $_[2]); -} - -sub READ { read($_[0],$_[1],$_[2]) } -sub READLINE { my $fh = $_[0]; <$fh> } -sub GETC { getc($_[0]) } - -sub WRITE -{ - my $fh = $_[0]; - print $fh substr($_[1],0,$_[2]) -} - - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tie/Hash.pm b/Master/tlpkg/tlperl.old/lib/Tie/Hash.pm deleted file mode 100644 index a838915482b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tie/Hash.pm +++ /dev/null @@ -1,257 +0,0 @@ -package Tie::Hash; - -our $VERSION = '1.02'; - -=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]}; - # TIEHASH 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]}; - # TIEHASH 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>. - -=item SCALAR this - -Returns what evaluating the hash in scalar context yields. - -B<Tie::Hash> does not implement this method (but B<Tie::StdHash> -and B<Tie::ExtraHash> do). - -=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<TIEHASH> 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))-E<gt>[0]>. Thus overwritten -C<TIEHASH> 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::ExtraHash'; - - sub TIEHASH { - my $class = shift; - my $storage = bless [{}, @_], $class; - 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<TIEHASH> 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<SCALAR>, 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 -presence of these methods, but if defined, the methods will be called in -proper time, see L<perltie>. - -C<SCALAR> is only defined in B<Tie::StdHash> and B<Tie::ExtraHash>. - -If needed, these methods should be defined by the package inheriting from -B<Tie::Hash>, B<Tie::StdHash>, or B<Tie::ExtraHash>. See L<pertie/"SCALAR"> -to find out what happens when C<SCALAR> does not exist. - -=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]} = () } -sub SCALAR { scalar %{$_[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]} = () } -sub SCALAR { scalar %{$_[0][0]} } - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tie/Memoize.pm b/Master/tlpkg/tlperl.old/lib/Tie/Memoize.pm deleted file mode 100644 index 2793a04590d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tie/Memoize.pm +++ /dev/null @@ -1,128 +0,0 @@ -use strict; -package Tie::Memoize; -use Tie::Hash; -our @ISA = 'Tie::ExtraHash'; -our $VERSION = '1.0'; - -our $exists_token = \undef; - -sub croak {require Carp; goto &Carp::croak} - -# Format: [0: STORAGE, 1: EXISTS-CACHE, 2: FETCH_function; -# 3: EXISTS_function, 4: DATA, 5: EXISTS_different ] - -sub FETCH { - my ($h,$key) = ($_[0][0], $_[1]); - my $res = $h->{$key}; - return $res if defined $res; # Shortcut if accessible - return $res if exists $h->{$key}; # Accessible, but undef - my $cache = $_[0][1]{$key}; - return if defined $cache and not $cache; # Known to not exist - my @res = $_[0][2]->($key, $_[0][4]); # Autoload - $_[0][1]{$key} = 0, return unless @res; # Cache non-existence - delete $_[0][1]{$key}; # Clear existence cache, not needed any more - $_[0][0]{$key} = $res[0]; # Store data and return -} - -sub EXISTS { - my ($a,$key) = (shift, shift); - return 1 if exists $a->[0]{$key}; # Have data - my $cache = $a->[1]{$key}; - return $cache if defined $cache; # Existence cache - my @res = $a->[3]($key,$a->[4]); - $_[0][1]{$key} = 0, return unless @res; # Cache non-existence - # Now we know it exists - return ($_[0][1]{$key} = 1) if $a->[5]; # Only existence reported - # Now know the value - $_[0][0]{$key} = $res[0]; # Store data - return 1 -} - -sub TIEHASH { - croak 'syntax: tie %hash, \'Tie::AutoLoad\', \&fetch_subr' if @_ < 2; - croak 'syntax: tie %hash, \'Tie::AutoLoad\', \&fetch_subr, $data, \&exists_subr, \%data_cache, \%existence_cache' if @_ > 6; - push @_, undef if @_ < 3; # Data - push @_, $_[1] if @_ < 4; # exists - push @_, {} while @_ < 6; # initial value and caches - bless [ @_[4,5,1,3,2], $_[1] ne $_[3]], $_[0] -} - -1; - -=head1 NAME - -Tie::Memoize - add data to hash when needed - -=head1 SYNOPSIS - - require Tie::Memoize; - tie %hash, 'Tie::Memoize', - \&fetch, # The rest is optional - $DATA, \&exists, - {%ini_value}, {%ini_existence}; - -=head1 DESCRIPTION - -This package allows a tied hash to autoload its values on the first access, -and to use the cached value on the following accesses. - -Only read-accesses (via fetching the value or C<exists>) result in calls to -the functions; the modify-accesses are performed as on a normal hash. - -The required arguments during C<tie> are the hash, the package, and -the reference to the C<FETCH>ing function. The optional arguments are -an arbitrary scalar $data, the reference to the C<EXISTS> function, -and initial values of the hash and of the existence cache. - -Both the C<FETCH>ing function and the C<EXISTS> functions have the -same signature: the arguments are C<$key, $data>; $data is the same -value as given as argument during tie()ing. Both functions should -return an empty list if the value does not exist. If C<EXISTS> -function is different from the C<FETCH>ing function, it should return -a TRUE value on success. The C<FETCH>ing function should return the -intended value if the key is valid. - -=head1 Inheriting from B<Tie::Memoize> - -The structure of the tied() data is an array reference with elements - - 0: cache of known values - 1: cache of known existence of keys - 2: FETCH function - 3: EXISTS function - 4: $data - -The rest is for internal usage of this package. In particular, if -TIEHASH is overwritten, it should call SUPER::TIEHASH. - -=head1 EXAMPLE - - sub slurp { - my ($key, $dir) = shift; - open my $h, '<', "$dir/$key" or return; - local $/; <$h> # slurp it all - } - sub exists { my ($key, $dir) = shift; return -f "$dir/$key" } - - tie %hash, 'Tie::Memoize', \&slurp, $directory, \&exists, - { fake_file1 => $content1, fake_file2 => $content2 }, - { pretend_does_not_exists => 0, known_to_exist => 1 }; - -This example treats the slightly modified contents of $directory as a -hash. The modifications are that the keys F<fake_file1> and -F<fake_file2> fetch values $content1 and $content2, and -F<pretend_does_not_exists> will never be accessed. Additionally, the -existence of F<known_to_exist> is never checked (so if it does not -exists when its content is needed, the user of %hash may be confused). - -=head1 BUGS - -FIRSTKEY and NEXTKEY methods go through the keys which were already read, -not all the possible keys of the hash. - -=head1 AUTHOR - -Ilya Zakharevich L<mailto:perl-module-hash-memoize@ilyaz.org>. - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Tie/RefHash.pm b/Master/tlpkg/tlperl.old/lib/Tie/RefHash.pm deleted file mode 100644 index cfcdd5b5a10..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tie/RefHash.pm +++ /dev/null @@ -1,170 +0,0 @@ -package Tie::RefHash; - -our $VERSION = 1.32; - -=head1 NAME - -Tie::RefHash - use references as hash keys - -=head1 SYNOPSIS - - require 5.004; - use Tie::RefHash; - tie HASHVARIABLE, 'Tie::RefHash', LIST; - tie HASHVARIABLE, 'Tie::RefHash::Nestable', LIST; - - untie HASHVARIABLE; - -=head1 DESCRIPTION - -This module provides the ability to use references as hash keys if you -first C<tie> the hash variable to this module. Normally, only the -keys of the tied hash itself are preserved as references; to use -references as keys in hashes-of-hashes, use Tie::RefHash::Nestable, -included as part of Tie::RefHash. - -It is implemented using the standard perl TIEHASH interface. Please -see the C<tie> entry in perlfunc(1) and perltie(1) for more information. - -The Nestable version works by looking for hash references being stored -and converting them to tied hashes so that they too can have -references as keys. This will happen without warning whenever you -store a reference to one of your own hashes in the tied hash. - -=head1 EXAMPLE - - use Tie::RefHash; - tie %h, 'Tie::RefHash'; - $a = []; - $b = {}; - $c = \*main; - $d = \"gunk"; - $e = sub { 'foo' }; - %h = ($a => 1, $b => 2, $c => 3, $d => 4, $e => 5); - $a->[0] = 'foo'; - $b->{foo} = 'bar'; - for (keys %h) { - print ref($_), "\n"; - } - - tie %h, 'Tie::RefHash::Nestable'; - $h{$a}->{$b} = 1; - for (keys %h, keys %{$h{$a}}) { - print ref($_), "\n"; - } - -=head1 AUTHOR - -Gurusamy Sarathy gsar@activestate.com - -'Nestable' by Ed Avis ed@membled.com - -=head1 VERSION - -Version 1.32 - -=head1 SEE ALSO - -perl(1), perlfunc(1), perltie(1) - -=cut - -use Tie::Hash; -use vars '@ISA'; -@ISA = qw(Tie::Hash); -use strict; - -require overload; # to support objects with overloaded "" - -sub TIEHASH { - my $c = shift; - my $s = []; - bless $s, $c; - while (@_) { - $s->STORE(shift, shift); - } - return $s; -} - -sub FETCH { - my($s, $k) = @_; - if (ref $k) { - my $kstr = overload::StrVal($k); - if (defined $s->[0]{$kstr}) { - $s->[0]{$kstr}[1]; - } - else { - undef; - } - } - else { - $s->[1]{$k}; - } -} - -sub STORE { - my($s, $k, $v) = @_; - if (ref $k) { - $s->[0]{overload::StrVal($k)} = [$k, $v]; - } - else { - $s->[1]{$k} = $v; - } - $v; -} - -sub DELETE { - my($s, $k) = @_; - (ref $k) - ? (delete($s->[0]{overload::StrVal($k)}) || [])->[1] - : delete($s->[1]{$k}); -} - -sub EXISTS { - my($s, $k) = @_; - (ref $k) ? exists($s->[0]{overload::StrVal($k)}) : exists($s->[1]{$k}); -} - -sub FIRSTKEY { - my $s = shift; - keys %{$s->[0]}; # reset iterator - keys %{$s->[1]}; # reset iterator - $s->[2] = 0; # flag for iteration, see NEXTKEY - $s->NEXTKEY; -} - -sub NEXTKEY { - my $s = shift; - my ($k, $v); - if (!$s->[2]) { - if (($k, $v) = each %{$s->[0]}) { - return $v->[0]; - } - else { - $s->[2] = 1; - } - } - return each %{$s->[1]}; -} - -sub CLEAR { - my $s = shift; - $s->[2] = 0; - %{$s->[0]} = (); - %{$s->[1]} = (); -} - -package Tie::RefHash::Nestable; -use vars '@ISA'; -@ISA = 'Tie::RefHash'; - -sub STORE { - my($s, $k, $v) = @_; - if (ref($v) eq 'HASH' and not tied %$v) { - my @elems = %$v; - tie %$v, ref($s), @elems; - } - $s->SUPER::STORE($k, $v); -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tie/Scalar.pm b/Master/tlpkg/tlperl.old/lib/Tie/Scalar.pm deleted file mode 100644 index c23c12187a8..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tie/SubstrHash.pm b/Master/tlpkg/tlperl.old/lib/Tie/SubstrHash.pm deleted file mode 100644 index 476dd686787..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tie/SubstrHash.pm +++ /dev/null @@ -1,215 +0,0 @@ -package Tie::SubstrHash; - -our $VERSION = '1.00'; - -=head1 NAME - -Tie::SubstrHash - Fixed-table-size, fixed-key-length hashing - -=head1 SYNOPSIS - - require Tie::SubstrHash; - - tie %myhash, 'Tie::SubstrHash', $key_len, $value_len, $table_size; - -=head1 DESCRIPTION - -The B<Tie::SubstrHash> package provides a hash-table-like interface to -an array of determinate size, with constant key size and record size. - -Upon tying a new hash to this package, the developer must specify the -size of the keys that will be used, the size of the value fields that the -keys will index, and the size of the overall table (in terms of key-value -pairs, not size in hard memory). I<These values will not change for the -duration of the tied hash>. The newly-allocated hash table may now have -data stored and retrieved. Efforts to store more than C<$table_size> -elements will result in a fatal error, as will efforts to store a value -not exactly C<$value_len> characters in length, or reference through a -key not exactly C<$key_len> characters in length. While these constraints -may seem excessive, the result is a hash table using much less internal -memory than an equivalent freely-allocated hash table. - -=head1 CAVEATS - -Because the current implementation uses the table and key sizes for the -hashing algorithm, there is no means by which to dynamically change the -value of any of the initialization parameters. - -The hash does not support exists(). - -=cut - -use Carp; - -sub TIEHASH { - my $pack = shift; - my ($klen, $vlen, $tsize) = @_; - my $rlen = 1 + $klen + $vlen; - $tsize = [$tsize, - findgteprime($tsize * 1.1)]; # Allow 10% empty. - local $self = bless ["\0", $klen, $vlen, $tsize, $rlen, 0, -1]; - $$self[0] x= $rlen * $tsize->[1]; - $self; -} - -sub CLEAR { - local($self) = @_; - $$self[0] = "\0" x ($$self[4] * $$self[3]->[1]); - $$self[5] = 0; - $$self[6] = -1; -} - -sub FETCH { - local($self,$key) = @_; - local($klen, $vlen, $tsize, $rlen) = @$self[1..4]; - &hashkey; - for (;;) { - $offset = $hash * $rlen; - $record = substr($$self[0], $offset, $rlen); - if (ord($record) == 0) { - return undef; - } - elsif (ord($record) == 1) { - } - elsif (substr($record, 1, $klen) eq $key) { - return substr($record, 1+$klen, $vlen); - } - &rehash; - } -} - -sub STORE { - local($self,$key,$val) = @_; - local($klen, $vlen, $tsize, $rlen) = @$self[1..4]; - croak("Table is full ($tsize->[0] elements)") if $$self[5] > $tsize->[0]; - croak(qq/Value "$val" is not $vlen characters long/) - if length($val) != $vlen; - my $writeoffset; - - &hashkey; - for (;;) { - $offset = $hash * $rlen; - $record = substr($$self[0], $offset, $rlen); - if (ord($record) == 0) { - $record = "\2". $key . $val; - die "panic" unless length($record) == $rlen; - $writeoffset = $offset unless defined $writeoffset; - substr($$self[0], $writeoffset, $rlen) = $record; - ++$$self[5]; - return; - } - elsif (ord($record) == 1) { - $writeoffset = $offset unless defined $writeoffset; - } - elsif (substr($record, 1, $klen) eq $key) { - $record = "\2". $key . $val; - die "panic" unless length($record) == $rlen; - substr($$self[0], $offset, $rlen) = $record; - return; - } - &rehash; - } -} - -sub DELETE { - local($self,$key) = @_; - local($klen, $vlen, $tsize, $rlen) = @$self[1..4]; - &hashkey; - for (;;) { - $offset = $hash * $rlen; - $record = substr($$self[0], $offset, $rlen); - if (ord($record) == 0) { - return undef; - } - elsif (ord($record) == 1) { - } - elsif (substr($record, 1, $klen) eq $key) { - substr($$self[0], $offset, 1) = "\1"; - return substr($record, 1+$klen, $vlen); - --$$self[5]; - } - &rehash; - } -} - -sub FIRSTKEY { - local($self) = @_; - $$self[6] = -1; - &NEXTKEY; -} - -sub NEXTKEY { - local($self) = @_; - local($klen, $vlen, $tsize, $rlen, $entries, $iterix) = @$self[1..6]; - for (++$iterix; $iterix < $tsize->[1]; ++$iterix) { - next unless substr($$self[0], $iterix * $rlen, 1) eq "\2"; - $$self[6] = $iterix; - return substr($$self[0], $iterix * $rlen + 1, $klen); - } - $$self[6] = -1; - undef; -} - -sub EXISTS { - croak "Tie::SubstrHash does not support exists()"; -} - -sub hashkey { - croak(qq/Key "$key" is not $klen characters long/) - if length($key) != $klen; - $hash = 2; - for (unpack('C*', $key)) { - $hash = $hash * 33 + $_; - &_hashwrap if $hash >= 1e13; - } - &_hashwrap if $hash >= $tsize->[1]; - $hash = 1 unless $hash; - $hashbase = $hash; -} - -sub _hashwrap { - $hash -= int($hash / $tsize->[1]) * $tsize->[1]; -} - -sub rehash { - $hash += $hashbase; - $hash -= $tsize->[1] if $hash >= $tsize->[1]; -} - -# using POSIX::ceil() would be too heavy, and not all platforms have it. -sub ceil { - my $num = shift; - $num = int($num + 1) unless $num == int $num; - return $num; -} - -# See: -# -# http://www-groups.dcs.st-andrews.ac.uk/~history/HistTopics/Prime_numbers.html -# - -sub findgteprime { # find the smallest prime integer greater than or equal to - use integer; - - my $num = ceil(shift); - return 2 if $num <= 2; - - $num++ unless $num % 2; - my $i; - my $sqrtnum = int sqrt $num; - my $sqrtnumsquared = $sqrtnum * $sqrtnum; - - NUM: - for (;; $num += 2) { - if ($sqrtnumsquared < $num) { - $sqrtnum++; - $sqrtnumsquared = $sqrtnum * $sqrtnum; - } - for ($i = 3; $i <= $sqrtnum; $i += 2) { - next NUM unless $num % $i; - } - return $num; - } -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tie/Watch.pm b/Master/tlpkg/tlperl.old/lib/Tie/Watch.pm deleted file mode 100644 index 48f46acd2b0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tie/Watch.pm +++ /dev/null @@ -1,560 +0,0 @@ -$Tie::Watch::VERSION = '1.2'; - -package Tie::Watch; - -=head1 NAME - - Tie::Watch - place watchpoints on Perl variables. - -=head1 SYNOPSIS - - use Tie::Watch; - - $watch = Tie::Watch->new( - -variable => \$frog, - -debug => 1, - -shadow => 0, - -fetch => [\&fetch, 'arg1', 'arg2', ..., 'argn'], - -store => \&store, - -destroy => sub {print "Final value=$frog.\n"}, - } - %vinfo = $watch->Info; - $args = $watch->Args(-fetch); - $val = $watch->Fetch; - print "val=", $watch->Say($val), ".\n"; - $watch->Store('Hello'); - $watch->Unwatch; - -=head1 DESCRIPTION - -This class module binds one or more subroutines of your devising to a -Perl variable. All variables can have B<FETCH>, B<STORE> and -B<DESTROY> callbacks. Additionally, arrays can define B<CLEAR>, -B<DELETE>, B<EXISTS>, B<EXTEND>, B<FETCHSIZE>, B<POP>, B<PUSH>, -B<SHIFT>, B<SPLICE>, B<STORESIZE> and B<UNSHIFT> callbacks, and hashes -can define B<CLEAR>, B<DELETE>, B<EXISTS>, B<FIRSTKEY> and B<NEXTKEY> -callbacks. If these term are unfamiliar to you, I I<really> suggest -you read L<perltie>. - -With Tie::Watch you can: - - . alter a variable's value - . prevent a variable's value from being changed - . invoke a Perl/Tk callback when a variable changes - . trace references to a variable - -Callback format is patterned after the Perl/Tk scheme: supply either a -code reference, or, supply an array reference and pass the callback -code reference in the first element of the array, followed by callback -arguments. (See examples in the Synopsis, above.) - -Tie::Watch provides default callbacks for any that you fail to -specify. Other than negatively impacting performance, they perform -the standard action that you'd expect, so the variable behaves -"normally". Once you override a default callback, perhaps to insert -debug code like print statements, your callback normally finishes by -calling the underlying (overridden) method. But you don't have to! - -To map a tied method name to a default callback name simply lowercase -the tied method name and uppercase its first character. So FETCH -becomes Fetch, NEXTKEY becomes Nextkey, etcetera. - -Here are two callbacks for a scalar. The B<FETCH> (read) callback does -nothing other than illustrate the fact that it returns the value to -assign the variable. The B<STORE> (write) callback uppercases the -variable and returns it. In all cases the callback I<must> return the -correct read or write value - typically, it does this by invoking the -underlying method. - - my $fetch_scalar = sub { - my($self) = @_; - $self->Fetch; - }; - - my $store_scalar = sub { - my($self, $new_val) = @_; - $self->Store(uc $new_val); - }; - -Here are B<FETCH> and B<STORE> callbacks for either an array or hash. -They do essentially the same thing as the scalar callbacks, but -provide a little more information. - - my $fetch = sub { - my($self, $key) = @_; - my $val = $self->Fetch($key); - print "In fetch callback, key=$key, val=", $self->Say($val); - my $args = $self->Args(-fetch); - print ", args=('", join("', '", @$args), "')" if $args; - print ".\n"; - $val; - }; - - my $store = sub { - my($self, $key, $new_val) = @_; - my $val = $self->Fetch($key); - $new_val = uc $new_val; - $self->Store($key, $new_val); - print "In store callback, key=$key, val=", $self->Say($val), - ", new_val=", $self->Say($new_val); - my $args = $self->Args(-store); - print ", args=('", join("', '", @$args), "')" if $args; - print ".\n"; - $new_val; - }; - -In all cases, the first parameter is a reference to the Watch object, -used to invoke the following class methods. - -=head1 METHODS - -=over 4 - -=item $watch = Tie::Watch->new(-options => values); - -The watchpoint constructor method that accepts option/value pairs to -create and configure the Watch object. The only required option is -B<-variable>. - -B<-variable> is a I<reference> to a scalar, array or hash variable. - -B<-debug> (default 0) is 1 to activate debug print statements internal -to Tie::Watch. - -B<-shadow> (default 1) is 0 to disable array and hash shadowing. To -prevent infinite recursion Tie::Watch maintains parallel variables for -arrays and hashes. When the watchpoint is created the parallel shadow -variable is initialized with the watched variable's contents, and when -the watchpoint is deleted the shadow variable is copied to the original -variable. Thus, changes made during the watch process are not lost. -Shadowing is on my default. If you disable shadowing any changes made -to an array or hash are lost when the watchpoint is deleted. - -Specify any of the following relevant callback parameters, in the -format described above: B<-fetch>, B<-store>, B<-destroy>. -Additionally for arrays: B<-clear>, B<-extend>, B<-fetchsize>, -B<-pop>, B<-push>, B<-shift>, B<-splice>, B<-storesize> and -B<-unshift>. Additionally for hashes: B<-clear>, B<-delete>, -B<-exists>, B<-firstkey> and B<-nextkey>. - -=item $args = $watch->Args(-fetch); - -Returns a reference to a list of arguments for the specified callback, -or undefined if none. - -=item $watch->Fetch(); $watch->Fetch($key); - -Returns a variable's current value. $key is required for an array or -hash. - -=item %vinfo = $watch->Info(); - -Returns a hash detailing the internals of the Watch object, with these -keys: - - %vinfo = { - -variable => SCALAR(0x200737f8) - -debug => '0' - -shadow => '1' - -value => 'HELLO SCALAR' - -destroy => ARRAY(0x200f86cc) - -fetch => ARRAY(0x200f8558) - -store => ARRAY(0x200f85a0) - -legible => above data formatted as a list of string, for printing - } - -For array and hash Watch objects, the B<-value> key is replaced with a -B<-ptr> key which is a reference to the parallel array or hash. -Additionally, for an array or hash, there are key/value pairs for -all the variable specific callbacks. - -=item $watch->Say($val); - -Used mainly for debugging, it returns $val in quotes if required, or -the string "undefined" for undefined values. - -=item $watch->Store($new_val); $watch->Store($key, $new_val); - -Store a variable's new value. $key is required for an array or hash. - -=item $watch->Unwatch(); - -Stop watching the variable. - -=back - -=head1 EFFICIENCY CONSIDERATIONS - -If you can live using the class methods provided, please do so. You -can meddle with the object hash directly and improved watch -performance, at the risk of your code breaking in the future. - -=head1 AUTHOR - -Stephen O. Lidie - -=head1 HISTORY - - lusol@Lehigh.EDU, LUCC, 96/05/30 - . Original version 0.92 release, based on the Trace module from Hans Mulder, - and ideas from Tim Bunce. - - lusol@Lehigh.EDU, LUCC, 96/12/25 - . Version 0.96, release two inner references detected by Perl 5.004. - - lusol@Lehigh.EDU, LUCC, 97/01/11 - . Version 0.97, fix Makefile.PL and MANIFEST (thanks Andreas Koenig). - Make sure test.pl doesn't fail if Tk isn't installed. - - Stephen.O.Lidie@Lehigh.EDU, Lehigh University Computing Center, 97/10/03 - . Version 0.98, implement -shadow option for arrays and hashes. - - Stephen.O.Lidie@Lehigh.EDU, Lehigh University Computing Center, 98/02/11 - . Version 0.99, finally, with Perl 5.004_57, we can completely watch arrays. - With tied array support this module is essentially complete, so its been - optimized for speed at the expense of clarity - sorry about that. The - Delete() method has been renamed Unwatch() because it conflicts with the - builtin delete(). - - Stephen.O.Lidie@Lehigh.EDU, Lehigh University Computing Center, 99/04/04 - . Version 1.0, for Perl 5.005_03, update Makefile.PL for ActiveState, and - add two examples (one for Perl/Tk). - - sol0@lehigh.edu, Lehigh University Computing Center, 2003/06/07 - . Version 1.1, for Perl 5.8, can trace a reference now, patch from Slaven - Rezic. - - sol0@lehigh.edu, Lehigh University Computing Center, 2005/05/17 - . Version 1.2, for Perl 5.8, per Rob Seegel's suggestion, support array - DELETE and EXISTS. - -=head1 COPYRIGHT - -Copyright (C) 1996 - 2005 Stephen O. Lidie. All rights reserved. - -This program is free software; you can redistribute it and/or modify it under -the same terms as Perl itself. - -=cut - -use 5.004_57;; -use Carp; -use strict; -use subs qw/normalize_callbacks/; -use vars qw/@array_callbacks @hash_callbacks @scalar_callbacks/; - -@array_callbacks = qw/-clear -delete -destroy -exists -extend -fetch - -fetchsize -pop -push -shift -splice -store - -storesize -unshift/; -@hash_callbacks = qw/-clear -delete -destroy -exists -fetch -firstkey - -nextkey -store/; -@scalar_callbacks = qw/-destroy -fetch -store/; - -sub new { - - # Watch constructor. The *real* constructor is Tie::Watch->base_watch(), - # invoked by methods in other Watch packages, depending upon the variable's - # type. Here we supply defaulted parameter values and then verify them, - # normalize all callbacks and bind the variable to the appropriate package. - - my($class, %args) = @_; - my $version = $Tie::Watch::VERSION; - my (%arg_defaults) = (-debug => 0, -shadow => 1); - my $variable = $args{-variable}; - croak "Tie::Watch::new(): -variable is required." if not defined $variable; - - my($type, $watch_obj) = (ref $variable, undef); - if ($type =~ /(SCALAR|REF)/) { - @arg_defaults{@scalar_callbacks} = ( - [\&Tie::Watch::Scalar::Destroy], [\&Tie::Watch::Scalar::Fetch], - [\&Tie::Watch::Scalar::Store]); - } elsif ($type =~ /ARRAY/) { - @arg_defaults{@array_callbacks} = ( - [\&Tie::Watch::Array::Clear], [\&Tie::Watch::Array::Delete], - [\&Tie::Watch::Array::Destroy], [\&Tie::Watch::Array::Exists], - [\&Tie::Watch::Array::Extend], [\&Tie::Watch::Array::Fetch], - [\&Tie::Watch::Array::Fetchsize], [\&Tie::Watch::Array::Pop], - [\&Tie::Watch::Array::Push], [\&Tie::Watch::Array::Shift], - [\&Tie::Watch::Array::Splice], [\&Tie::Watch::Array::Store], - [\&Tie::Watch::Array::Storesize], [\&Tie::Watch::Array::Unshift]); - } elsif ($type =~ /HASH/) { - @arg_defaults{@hash_callbacks} = ( - [\&Tie::Watch::Hash::Clear], [\&Tie::Watch::Hash::Delete], - [\&Tie::Watch::Hash::Destroy], [\&Tie::Watch::Hash::Exists], - [\&Tie::Watch::Hash::Fetch], [\&Tie::Watch::Hash::Firstkey], - [\&Tie::Watch::Hash::Nextkey], [\&Tie::Watch::Hash::Store]); - } else { - croak "Tie::Watch::new() - not a variable reference."; - } - my(@margs, %ahsh, $args, @args); - @margs = grep ! defined $args{$_}, keys %arg_defaults; - %ahsh = %args; # argument hash - @ahsh{@margs} = @arg_defaults{@margs}; # fill in missing values - normalize_callbacks \%ahsh; - - if ($type =~ /(SCALAR|REF)/) { - $watch_obj = tie $$variable, 'Tie::Watch::Scalar', %ahsh; - } elsif ($type =~ /ARRAY/) { - $watch_obj = tie @$variable, 'Tie::Watch::Array', %ahsh; - } elsif ($type =~ /HASH/) { - $watch_obj = tie %$variable, 'Tie::Watch::Hash', %ahsh; - } - $watch_obj; - -} # end new, Watch constructor - -sub Args { - - # Return a reference to a list of callback arguments, or undef if none. - # - # $_[0] = self - # $_[1] = callback type - - defined $_[0]->{$_[1]}->[1] ? [@{$_[0]->{$_[1]}}[1 .. $#{$_[0]->{$_[1]}}]] - : undef; - -} # end Args - -sub Info { - - # Info() method subclassed by other Watch modules. - # - # $_[0] = self - # @_[1 .. $#_] = optional callback types - - my(%vinfo, @results); - my(@info) = (qw/-variable -debug -shadow/); - push @info, @_[1 .. $#_] if scalar @_ >= 2; - foreach my $type (@info) { - push @results, sprintf('%-10s: ', substr $type, 1) . - $_[0]->Say($_[0]->{$type}); - $vinfo{$type} = $_[0]->{$type}; - } - $vinfo{-legible} = [@results]; - %vinfo; - -} # end Info - -sub Say { - - # For debugging, mainly. - # - # $_[0] = self - # $_[1] = value - - defined $_[1] ? (ref($_[1]) ne '' ? $_[1] : "'$_[1]'") : "undefined"; - -} # end Say - -sub Unwatch { - - # Stop watching a variable by releasing the last reference and untieing it. - # Update the original variable with its shadow, if appropriate. - # - # $_[0] = self - - my $variable = $_[0]->{-variable}; - my $type = ref $variable; - my $copy = $_[0]->{-ptr} if $type !~ /(SCALAR|REF)/; - my $shadow = $_[0]->{-shadow}; - undef $_[0]; - if ($type =~ /(SCALAR|REF)/) { - untie $$variable; - } elsif ($type =~ /ARRAY/) { - untie @$variable; - @$variable = @$copy if $shadow; - } elsif ($type =~ /HASH/) { - untie %$variable; - %$variable = %$copy if $shadow; - } else { - croak "Tie::Watch::Delete() - not a variable reference."; - } - -} # end Unwatch - -# Watch private methods. - -sub base_watch { - - # Watch base class constructor invoked by other Watch modules. - - my($class, %args) = @_; - my $watch_obj = {%args}; - $watch_obj; - -} # end base_watch - -sub callback { - - # Execute a Watch callback, either the default or user specified. - # Note that the arguments are those supplied by the tied method, - # not those (if any) specified by the user when the watch object - # was instantiated. This is for performance reasons, and why the - # Args() method exists. - # - # $_[0] = self - # $_[1] = callback type - # $_[2] through $#_ = tied arguments - - &{$_[0]->{$_[1]}->[0]} ($_[0], @_[2 .. $#_]); - -} # end callback - -sub normalize_callbacks { - - # Ensure all callbacks are normalized in [\&code, @args] format. - - my($args_ref) = @_; - my($cb, $ref); - foreach my $arg (keys %$args_ref) { - next if $arg =~ /variable|debug|shadow/; - $cb = $args_ref->{$arg}; - $ref = ref $cb; - if ($ref =~ /CODE/) { - $args_ref->{$arg} = [$cb]; - } elsif ($ref !~ /ARRAY/) { - croak "Tie::Watch: malformed callback $arg=$cb."; - } - } - -} # end normalize_callbacks - -############################################################################### - -package Tie::Watch::Scalar; - -use Carp; -@Tie::Watch::Scalar::ISA = qw/Tie::Watch/; - -sub TIESCALAR { - - my($class, %args) = @_; - my $variable = $args{-variable}; - my $watch_obj = Tie::Watch->base_watch(%args); - $watch_obj->{-value} = $$variable; - print "WatchScalar new: $variable created, \@_=", join(',', @_), "!\n" - if $watch_obj->{-debug}; - bless $watch_obj, $class; - -} # end TIESCALAR - -sub Info {$_[0]->SUPER::Info('-value', @Tie::Watch::scalar_callbacks)} - -# Default scalar callbacks. - -sub Destroy {undef %{$_[0]}} -sub Fetch {$_[0]->{-value}} -sub Store {$_[0]->{-value} = $_[1]} - -# Scalar access methods. - -sub DESTROY {$_[0]->callback('-destroy')} -sub FETCH {$_[0]->callback('-fetch')} -sub STORE {$_[0]->callback('-store', $_[1])} - -############################################################################### - -package Tie::Watch::Array; - -use Carp; -@Tie::Watch::Array::ISA = qw/Tie::Watch/; - -sub TIEARRAY { - - my($class, %args) = @_; - my($variable, $shadow) = @args{-variable, -shadow}; - my @copy = @$variable if $shadow; # make a private copy of user's array - $args{-ptr} = $shadow ? \@copy : []; - my $watch_obj = Tie::Watch->base_watch(%args); - print "WatchArray new: $variable created, \@_=", join(',', @_), "!\n" - if $watch_obj->{-debug}; - bless $watch_obj, $class; - -} # end TIEARRAY - -sub Info {$_[0]->SUPER::Info('-ptr', @Tie::Watch::array_callbacks)} - -# Default array callbacks. - -sub Clear {$_[0]->{-ptr} = ()} -sub Delete {delete $_[0]->{-ptr}->[$_[1]]} -sub Destroy {undef %{$_[0]}} -sub Exists {exists $_[0]->{-ptr}->[$_[1]]} -sub Extend {} -sub Fetch {$_[0]->{-ptr}->[$_[1]]} -sub Fetchsize {scalar @{$_[0]->{-ptr}}} -sub Pop {pop @{$_[0]->{-ptr}}} -sub Push {push @{$_[0]->{-ptr}}, @_[1 .. $#_]} -sub Shift {shift @{$_[0]->{-ptr}}} -sub Splice { - my $n = scalar @_; # splice() is wierd! - return splice @{$_[0]->{-ptr}}, $_[1] if $n == 2; - return splice @{$_[0]->{-ptr}}, $_[1], $_[2] if $n == 3; - return splice @{$_[0]->{-ptr}}, $_[1], $_[2], @_[3 .. $#_] if $n >= 4; -} -sub Store {$_[0]->{-ptr}->[$_[1]] = $_[2]} -sub Storesize {$#{$_[0]->{-ptr}} = $_[1] - 1} -sub Unshift {unshift @{$_[0]->{-ptr}}, @_[1 .. $#_]} - -# Array access methods. - -sub CLEAR {$_[0]->callback('-clear')} -sub DELETE {$_[0]->callback('-delete', $_[1])} -sub DESTROY {$_[0]->callback('-destroy')} -sub EXISTS {$_[0]->callback('-exists', $_[1])} -sub EXTEND {$_[0]->callback('-extend', $_[1])} -sub FETCH {$_[0]->callback('-fetch', $_[1])} -sub FETCHSIZE {$_[0]->callback('-fetchsize')} -sub POP {$_[0]->callback('-pop')} -sub PUSH {$_[0]->callback('-push', @_[1 .. $#_])} -sub SHIFT {$_[0]->callback('-shift')} -sub SPLICE {$_[0]->callback('-splice', @_[1 .. $#_])} -sub STORE {$_[0]->callback('-store', $_[1], $_[2])} -sub STORESIZE {$_[0]->callback('-storesize', $_[1])} -sub UNSHIFT {$_[0]->callback('-unshift', @_[1 .. $#_])} - -############################################################################### - -package Tie::Watch::Hash; - -use Carp; -@Tie::Watch::Hash::ISA = qw/Tie::Watch/; - -sub TIEHASH { - - my($class, %args) = @_; - my($variable, $shadow) = @args{-variable, -shadow}; - my %copy = %$variable if $shadow; # make a private copy of user's hash - $args{-ptr} = $shadow ? \%copy : {}; - my $watch_obj = Tie::Watch->base_watch(%args); - print "WatchHash new: $variable created, \@_=", join(',', @_), "!\n" - if $watch_obj->{-debug}; - bless $watch_obj, $class; - -} # end TIEHASH - -sub Info {$_[0]->SUPER::Info('-ptr', @Tie::Watch::hash_callbacks)} - -# Default hash callbacks. - -sub Clear {$_[0]->{-ptr} = ()} -sub Delete {delete $_[0]->{-ptr}->{$_[1]}} -sub Destroy {undef %{$_[0]}} -sub Exists {exists $_[0]->{-ptr}->{$_[1]}} -sub Fetch {$_[0]->{-ptr}->{$_[1]}} -sub Firstkey {my $c = keys %{$_[0]->{-ptr}}; each %{$_[0]->{-ptr}}} -sub Nextkey {each %{$_[0]->{-ptr}}} -sub Store {$_[0]->{-ptr}->{$_[1]} = $_[2]} - -# Hash access methods. - -sub CLEAR {$_[0]->callback('-clear')} -sub DELETE {$_[0]->callback('-delete', $_[1])} -sub DESTROY {$_[0]->callback('-destroy')} -sub EXISTS {$_[0]->callback('-exists', $_[1])} -sub FETCH {$_[0]->callback('-fetch', $_[1])} -sub FIRSTKEY {$_[0]->callback('-firstkey')} -sub NEXTKEY {$_[0]->callback('-nextkey')} -sub STORE {$_[0]->callback('-store', $_[1], $_[2])} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Time/HiRes.pm b/Master/tlpkg/tlperl.old/lib/Time/HiRes.pm deleted file mode 100644 index 964e4385dfc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Time/HiRes.pm +++ /dev/null @@ -1,500 +0,0 @@ -package Time::HiRes; - -use strict; -use vars qw($VERSION $XS_VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD); - -require Exporter; -require DynaLoader; - -@ISA = qw(Exporter DynaLoader); - -@EXPORT = qw( ); -@EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval - getitimer setitimer nanosleep clock_gettime clock_getres - clock clock_nanosleep - CLOCK_HIGHRES CLOCK_MONOTONIC CLOCK_PROCESS_CPUTIME_ID - CLOCK_REALTIME CLOCK_SOFTTIME CLOCK_THREAD_CPUTIME_ID - CLOCK_TIMEOFDAY CLOCKS_PER_SEC - ITIMER_REAL ITIMER_VIRTUAL ITIMER_PROF ITIMER_REALPROF - TIMER_ABSTIME - d_usleep d_ualarm d_gettimeofday d_getitimer d_setitimer - d_nanosleep d_clock_gettime d_clock_getres - d_clock d_clock_nanosleep); - -$VERSION = '1.86'; -$XS_VERSION = $VERSION; -$VERSION = eval $VERSION; - -sub AUTOLOAD { - my $constname; - ($constname = $AUTOLOAD) =~ s/.*:://; - # print "AUTOLOAD: constname = $constname ($AUTOLOAD)\n"; - die "&Time::HiRes::constant not defined" if $constname eq 'constant'; - my ($error, $val) = constant($constname); - # print "AUTOLOAD: error = $error, val = $val\n"; - if ($error) { - my (undef,$file,$line) = caller; - die "$error at $file line $line.\n"; - } - { - no strict 'refs'; - *$AUTOLOAD = sub { $val }; - } - goto &$AUTOLOAD; -} - -sub import { - my $this = shift; - for my $i (@_) { - if (($i eq 'clock_getres' && !&d_clock_getres) || - ($i eq 'clock_gettime' && !&d_clock_gettime) || - ($i eq 'clock_nanosleep' && !&d_clock_nanosleep) || - ($i eq 'clock' && !&d_clock) || - ($i eq 'nanosleep' && !&d_nanosleep) || - ($i eq 'usleep' && !&d_usleep) || - ($i eq 'ualarm' && !&d_ualarm)) { - require Carp; - Carp::croak("Time::HiRes::$i(): unimplemented in this platform"); - } - } - Time::HiRes->export_to_level(1, $this, @_); -} - -bootstrap Time::HiRes; - -# 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 nanosleep - clock_gettime clock_getres clock_nanosleep clock ); - - usleep ($microseconds); - nanosleep ($nanoseconds); - - 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 ITIMER_REALPROF ); - - setitimer ($which, $floating_seconds, $floating_interval ); - getitimer ($which); - - $realtime = clock_gettime(CLOCK_REALTIME); - $resolution = clock_getres(CLOCK_REALTIME); - - clock_nanosleep(CLOCK_REALTIME, 1.5); - clock_nanosleep(CLOCK_REALTIME, time() + 10, TIMER_ABSTIME); - - my $ticktock = clock(); - -=head1 DESCRIPTION - -The C<Time::HiRes> module implements a Perl interface to the -C<usleep>, C<nanosleep>, C<ualarm>, C<gettimeofday>, and -C<setitimer>/C<getitimer> system calls, in other words, high -resolution time and timers. See the L</EXAMPLES> section below and the -test scripts for usage; see your system documentation for the -description of the underlying C<nanosleep> or C<usleep>, C<ualarm>, -C<gettimeofday>, and C<setitimer>/C<getitimer> calls. - -If your system lacks C<gettimeofday()> or an emulation of it you don't -get C<gettimeofday()> or the one-argument form of C<tv_interval()>. -If your system lacks all of C<nanosleep()>, C<usleep()>, -C<select()>, and C<poll>, you don't get C<Time::HiRes::usleep()>, -C<Time::HiRes::nanosleep()>, or C<Time::HiRes::sleep()>. -If your system lacks both C<ualarm()> and C<setitimer()> you don't get -C<Time::HiRes::ualarm()> or C<Time::HiRes::alarm()>. - -If you try to import an unimplemented function in the C<use> statement -it will fail at compile time. - -If your subsecond sleeping is implemented with C<nanosleep()> instead -of C<usleep()>, you can mix subsecond sleeping with signals since -C<nanosleep()> does not use signals. This, however, is not portable, -and you should first check for the truth value of -C<&Time::HiRes::d_nanosleep> to see whether you have nanosleep, and -then carefully read your C<nanosleep()> C API documentation for any -peculiarities. - -If you are using C<nanosleep> for something else than mixing sleeping -with signals, give some thought to whether Perl is the tool you should -be using for work requiring nanosecond accuracies. - -The following functions can be imported from this module. -No functions are exported by default. - -=over 4 - -=item gettimeofday () - -In array context returns a two-element array with the seconds and -microseconds since the epoch. In scalar context returns floating -seconds like C<Time::HiRes::time()> (see below). - -=item usleep ( $useconds ) - -Sleeps for the number of microseconds (millionths of a second) -specified. Returns the number of microseconds actually slept. Can -sleep for more than one second, unlike the C<usleep> system call. Can -also sleep for zero seconds, which often works like a I<thread yield>. -See also C<Time::HiRes::usleep()>, C<Time::HiRes::sleep()>, and -C<Time::HiRes::clock_nanosleep()>. - -Do not expect usleep() to be exact down to one microsecond. - -=item nanosleep ( $nanoseconds ) - -Sleeps for the number of nanoseconds (1e9ths of a second) specified. -Returns the number of nanoseconds actually slept (accurate only to -microseconds, the nearest thousand of them). Can sleep for more than -one second. Can also sleep for zero seconds, which often works like a -I<thread yield>. See also C<Time::HiRes::sleep()>, -C<Time::HiRes::usleep()>, and C<Time::HiRes::clock_nanosleep()>. - -Do not expect nanosleep() to be exact down to one nanosecond. -Getting even accuracy of one thousand nanoseconds is good. - -=item ualarm ( $useconds [, $interval_useconds ] ) - -Issues a C<ualarm> call; the C<$interval_useconds> is optional and -will be zero if unspecified, resulting in C<alarm>-like behaviour. - -Note that the interaction between alarms and sleeps is unspecified. - -=item tv_interval - -tv_interval ( $ref_to_gettimeofday [, $ref_to_later_gettimeofday] ) - -Returns the floating seconds between the two times, which should have -been returned by C<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 L</EXAMPLES> below. - -B<NOTE 1>: This higher resolution timer can return values either less -or more than the core C<time()>, depending on whether your platform -rounds the higher resolution timer values up, down, or to the nearest second -to get the core C<time()>, but naturally the difference should be never -more than half a second. See also L</clock_getres>, if available -in your system. - -B<NOTE 2>: Since Sunday, September 9th, 2001 at 01:46:40 AM GMT, when -the C<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 -C<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 in the first -place). 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 C<printf>/C<sprintf> with C<"%.6f">, or the -C<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 L</EXAMPLES> below. - -Note that the interaction between alarms and sleeps is unspecified. - -=item alarm ( $floating_seconds [, $interval_floating_seconds ] ) - -The C<SIGALRM> signal is sent after the specified number of seconds. -Implemented using C<ualarm()>. The C<$interval_floating_seconds> argument -is optional and will be zero if unspecified, resulting in C<alarm()>-like -behaviour. This function can be imported, resulting in a nice drop-in -replacement for the C<alarm> provided with perl, see the L</EXAMPLES> below. - -B<NOTE 1>: With some combinations of operating systems and Perl -releases C<SIGALRM> restarts C<select()>, instead of interrupting it. -This means that an C<alarm()> followed by a C<select()> may together -take the sum of the times specified for the the C<alarm()> and the -C<select()>, not just the time of the C<alarm()>. - -Note that the interaction between alarms and sleeps is unspecified. - -=item 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 -an "itimer", use C<$floating_seconds> of zero. If the -C<$interval_floating_seconds> is set to zero (or unspecified), the -timer is disabled B<after> the next delivered signal. - -Use of interval timers may interfere with C<alarm()>, C<sleep()>, -and C<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 usually three or four interval timers available: the -C<$which> can be C<ITIMER_REAL>, C<ITIMER_VIRTUAL>, C<ITIMER_PROF>, or -C<ITIMER_REALPROF>. Note that which ones are available depends: true -UNIX platforms usually have the first three, but (for example) Win32 -and Cygwin have only C<ITIMER_REAL>, and only Solaris seems to have -C<ITIMER_REALPROF> (which is used to profile multithreaded programs). - -C<ITIMER_REAL> results in C<alarm()>-like behaviour. Time is counted in -I<real time>; that is, wallclock time. C<SIGALRM> is delivered when -the timer expires. - -C<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>.) C<SIGVTALRM> is delivered when the -timer expires. - -C<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>.) (The sum of user -time and system time is known as the I<CPU time>.) C<SIGPROF> is -delivered when the timer expires. C<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 C<setitimer()> documentation. - -=item getitimer ( $which ) - -Return the remaining time in the interval timer specified by C<$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 C<setitimer()>. - -=item clock_gettime ( $which ) - -Return as seconds the current value of the POSIX high resolution timer -specified by C<$which>. All implementations that support POSIX high -resolution timers are supposed to support at least the C<$which> value -of C<CLOCK_REALTIME>, which is supposed to return results close to the -results of C<gettimeofday>, or the number of seconds since 00:00:00:00 -January 1, 1970 Greenwich Mean Time (GMT). Do not assume that -CLOCK_REALTIME is zero, it might be one, or something else. -Another potentially useful (but not available everywhere) value is -C<CLOCK_MONOTONIC>, which guarantees a monotonically increasing time -value (unlike time(), which can be adjusted). See your system -documentation for other possibly supported values. - -=item clock_getres ( $which ) - -Return as seconds the resolution of the POSIX high resolution timer -specified by C<$which>. All implementations that support POSIX high -resolution timers are supposed to support at least the C<$which> value -of C<CLOCK_REALTIME>, see L</clock_gettime>. - -=item clock_nanosleep ( $which, $seconds, $flags = 0) - -Sleeps for the number of seconds (1e9ths of a second) specified. -Returns the number of seconds actually slept. The $which is the -"clock id", as with clock_gettime() and clock_getres(). The flags -default to zero but C<TIMER_ABSTIME> can specified (must be exported -explicitly) which means that C<$nanoseconds> is not a time interval -(as is the default) but instead an absolute time. Can sleep for more -than one second. Can also sleep for zero seconds, which often works -like a I<thread yield>. See also C<Time::HiRes::sleep()>, -C<Time::HiRes::usleep()>, and C<Time::HiRes::nanosleep()>. - -Do not expect clock_nanosleep() to be exact down to one nanosecond. -Getting even accuracy of one thousand nanoseconds is good. - -=item clock() - -Return as seconds the I<process time> (user + system time) spent by -the process since the first call to clock() (the definition is B<not> -"since the start of the process", though if you are lucky these times -may be quite close to each other, depending on the system). What this -means is that you probably need to store the result of your first call -to clock(), and subtract that value from the following results of clock(). - -The time returned also includes the process times of the terminated -child processes for which wait() has been executed. This value is -somewhat like the second value returned by the times() of core Perl, -but not necessarily identical. Note that due to backward -compatibility limitations the returned value may wrap around at about -2147 seconds or at about 36 minutes. - -=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{VTALRM} = sub { print time, "\n" }; - setitimer(ITIMER_VIRTUAL, 10, 2.5); - - use Time::HiRes qw( clock_gettime clock_getres CLOCK_REALTIME ); - # Read the POSIX high resolution timer. - my $high = clock_getres(CLOCK_REALTIME); - # But how accurate we can be, really? - my $reso = clock_getres(CLOCK_REALTIME); - - use Time::HiRes qw( clock_nanosleep TIMER_ABSTIME ); - clock_nanosleep(CLOCK_REALTIME, 1e6); - clock_nanosleep(CLOCK_REALTIME, 2e9, TIMER_ABSTIME); - - use Time::HiRes qw( clock ); - my $clock0 = clock(); - ... # Do something. - my $clock1 = clock(); - my $clockd = $clock1 - $clock0; - -=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 (*)(pTHX_ 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 Unix-centric, though some platforms like Win32 and -VMS have emulations for it.) - -Here is an example of using C<NVtime> from C: - - double (*myNVtime)(); /* Returns -1 on failure. */ - 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 DIAGNOSTICS - -=head2 negative time not invented yet - -You tried to use a negative time argument. - -=head2 internal error: useconds < 0 (unsigned ... signed ...) - -Something went horribly wrong-- the number of microseconds that cannot -become negative just became negative. Maybe your compiler is broken? - -=head1 CAVEATS - -Notice that the core C<time()> maybe rounding rather than truncating. -What this means is that the core C<time()> may be reporting the time -as one second later than C<gettimeofday()> and C<Time::HiRes::time()>. - -Adjusting the system clock (either manually or by services like ntp) -may cause problems, especially for long running programs that assume -a monotonously increasing time (note that all platforms do not adjust -time as gracefully as UNIX ntp does). For example in Win32 (and derived -platforms like Cygwin and MinGW) the Time::HiRes::time() may temporarily -drift off from the system clock (and the original time()) by up to 0.5 -seconds. Time::HiRes will notice this eventually and recalibrate. -Note that since Time::HiRes 1.77 the clock_gettime(CLOCK_MONOTONIC) -might help in this (in case your system supports CLOCK_MONOTONIC). - -=head1 SEE ALSO - -Perl modules L<BSD::Resource>, L<Time::TAI64>. - -Your system documentation for C<clock_gettime>, C<clock_settime>, -C<gettimeofday>, C<getitimer>, C<setitimer>, C<ualarm>. - -=head1 AUTHORS - -D. Wegscheid <wegscd@whirlpool.com> -R. Schertler <roderick@argon.org> -J. Hietaniemi <jhi@iki.fi> -G. Aas <gisle@aas.no> - -=head1 COPYRIGHT AND LICENSE - -Copyright (c) 1996-2002 Douglas E. Wegscheid. All rights reserved. - -Copyright (c) 2002, 2003, 2004, 2005 Jarkko Hietaniemi. 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/tlpkg/tlperl.old/lib/Time/Local.pm b/Master/tlpkg/tlperl.old/lib/Time/Local.pm deleted file mode 100644 index 912f17d0310..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Time/Local.pm +++ /dev/null @@ -1,366 +0,0 @@ -package Time::Local; - -require Exporter; -use Carp; -use Config; -use strict; -use integer; - -use vars qw( $VERSION @ISA @EXPORT @EXPORT_OK ); -$VERSION = '1.11'; -$VERSION = eval $VERSION; -@ISA = qw( Exporter ); -@EXPORT = qw( timegm timelocal ); -@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, %Min, %Max); -my ($MinInt, $MaxInt); - -if ($^O eq 'MacOS') { - # time_t is unsigned... - $MaxInt = (1 << (8 * $Config{intsize})) - 1; - $MinInt = 0; -} else { - $MaxInt = ((1 << (8 * $Config{intsize} - 2))-1)*2 + 1; - $MinInt = -$MaxInt - 1; - - # On Win32 (and others?) time_t appears to be signed, but negative - # epochs still don't work. - XXX - this is experimental - $MinInt = 0 - unless defined ((localtime(-1))[0]); -} - -$Max{Day} = ($MaxInt >> 1) / 43200; -$Min{Day} = $MinInt ? -($Max{Day} + 1) : 0; - -$Max{Sec} = $MaxInt - 86400 * $Max{Day}; -$Min{Sec} = $MinInt - 86400 * $Min{Day}; - -# 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; - - # 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 _zoneadjust { - my ($day, $sec, $time) = @_; - - $sec = $sec + _timegm(localtime($time)) - $time; - if ($sec >= 86400) { $day++; $sec -= 86400; } - if ($sec < 0) { $day--; $sec += 86400; } - - ($day, $sec); -} - - -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 if $month == 1 and $year % 4 == 0 and -# ($year % 100 != 0 or ($year + 1900) % 400 == 0); - ++$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); - my $xsec = $sec + $SecOff + 60*$min + 3600*$hour; - - unless ($Options{no_range_check} - or ($days > $Min{Day} or $days == $Min{Day} and $xsec >= $Min{Sec}) - and ($days < $Max{Day} or $days == $Max{Day} and $xsec <= $Max{Sec})) - { - warn "Day too small - $days > $Min{Day}\n" if $days < $Min{Day}; - warn "Day too big - $days > $Max{Day}\n" if $days > $Max{Day}; - warn "Sec too small - $days < $Min{Sec}\n" if $days < $Min{Sec}; - warn "Sec too big - $days > $Max{Sec}\n" if $days > $Max{Sec}; - $year += 1900; - croak "Cannot handle date ($sec, $min, $hour, $mday, $month, $year)"; - } - - no integer; - - $xsec + 86400 * $days; -} - - -sub timegm_nocheck { - local $Options{no_range_check} = 1; - &timegm; -} - - -sub timelocal { - # Adjust Max/Min allowed times to fit local time zone and call timegm - local ($Max{Day}, $Max{Sec}) = _zoneadjust($Max{Day}, $Max{Sec}, $MaxInt); - local ($Min{Day}, $Min{Sec}) = _zoneadjust($Min{Day}, $Min{Sec}, $MinInt); - my $ref_t = &timegm; - - # Calculate first guess with a one-day delta to avoid localtime overflow - my $delta = ($_[5] < 100)? 86400 : -86400; - my $loc_t = _timegm(localtime( $ref_t + $delta )) - $delta; - - # Is there a timezone offset from GMT or are we done - my $zone_off = $ref_t - $loc_t - or return $loc_t; - - # This hack is needed to always pick the first matching time - # during a DST change when time would otherwise be ambiguous - $zone_off -= 3600 if ($delta > 0 && $ref_t >= 3600); - - # 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; - - return $loc_t if $dst_off >= 0; - - # for a negative offset from GMT, and if the original date - # was a non-extent gap in a forward DST jump, we should - # now have the wrong answer - undo the DST adjust; - - my ($s,$m,$h) = localtime($loc_t); - $loc_t -= $dst_off if $s != $_[0] || $m != $_[1] || $h != $_[2]; - - $loc_t; -} - - -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 system epoch -(Midnight, January 1, 1970 GMT on Unix, for example). This value can -be positive or negative, though POSIX only requires support for -positive values, so dates before the system's epoch may not work on -all operating systems. - -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, 1964 would indicate the year -Martin Luther King won the Nobel prize, not the year 3864. - -=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. - -=head2 Ambiguous Local Times (DST) - -Because of DST changes, there are many time zones where the same local -time occurs for two different GMT times on the same day. For example, -in the "Europe/Paris" time zone, the local time of 2001-10-28 02:30:00 -can represent either 2001-10-28 00:30:00 GMT, B<or> 2001-10-28 -01:30:00 GMT. - -When given an ambiguous local time, the timelocal() function should -always return the epoch for the I<earlier> of the two possible GMT -times. - -=head2 Non-Existent Local Times (DST) - -When a DST change causes a locale clock to skip one hour forward, -there will be an hour's worth of local times that don't exist. Again, -for the "Europe/Paris" time zone, the local clock jumped from -2001-03-25 01:59:59 to 2001-03-25 03:00:00. - -If the timelocal() function is given a non-existent local time, it -will simply return an epoch value for the time one hour later. - -=head2 Negative Epoch Values - -Negative epoch (time_t) values are not officially supported by the -POSIX standards, so this module's tests do not test them. On some -systems, they are known not to work. These include MacOS (pre-OSX) -and Win32. - -On systems which do support negative epoch values, this module should -be able to cope with dates before the start of the epoch, down the -minimum value of time_t for the system. - -=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. - -=head1 SUPPORT - -Support for this module is provided via the datetime@perl.org -email list. See http://lists.perl.org/ for more details. - -Please submit bugs using the RT system at rt.cpan.org, or as a last -resort, to the datetime@perl.org list. - -=head1 AUTHOR - -This module is based on a Perl 4 library, timelocal.pl, that was -included with Perl 4.036, and was most likely written by Tom -Christiansen. - -The current version was written by Graham Barr. - -It is now being maintained separately from the Perl core by Dave -Rolsky, <autarch@urth.org>. - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Time/gmtime.pm b/Master/tlpkg/tlperl.old/lib/Time/gmtime.pm deleted file mode 100644 index 4e1359b36d9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Time/gmtime.pm +++ /dev/null @@ -1,90 +0,0 @@ -package Time::gmtime; -use strict; -use 5.006_001; - -use Time::tm; - -our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION); -BEGIN { - use Exporter (); - @ISA = qw(Exporter Time::tm); - @EXPORT = qw(gmtime gmctime); - @EXPORT_OK = qw( - $tm_sec $tm_min $tm_hour $tm_mday - $tm_mon $tm_year $tm_wday $tm_yday - $tm_isdst - ); - %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] ); - $VERSION = 1.02; -} -use vars @EXPORT_OK; - -sub populate (@) { - return unless @_; - my $tmob = Time::tm->new(); - @$tmob = ( - $tm_sec, $tm_min, $tm_hour, $tm_mday, - $tm_mon, $tm_year, $tm_wday, $tm_yday, - $tm_isdst ) - = @_; - return $tmob; -} - -sub gmtime (;$) { populate CORE::gmtime(@_ ? shift : time)} -sub gmctime (;$) { scalar CORE::gmtime(@_ ? shift : time)} - -1; -__END__ - -=head1 NAME - -Time::gmtime - by-name interface to Perl's built-in gmtime() function - -=head1 SYNOPSIS - - use Time::gmtime; - $gm = gmtime(); - printf "The day in Greenwich is %s\n", - (qw(Sun Mon Tue Wed Thu Fri Sat Sun))[ gm->wday() ]; - - use Time::gmtime w(:FIELDS; - printf "The day in Greenwich is %s\n", - (qw(Sun Mon Tue Wed Thu Fri Sat Sun))[ gm_wday() ]; - - $now = gmctime(); - - use Time::gmtime; - use File::stat; - $date_string = gmctime(stat($file)->mtime); - -=head1 DESCRIPTION - -This module's default exports override the core gmtime() function, -replacing it with a version that returns "Time::tm" objects. -This object has methods that return the similarly named structure field -name from the C's tm structure from F<time.h>; namely sec, min, hour, -mday, mon, year, wday, yday, and isdst. - -You may also import all the structure fields directly into your namespace -as regular variables using the :FIELDS import tag. (Note that this -still overrides your core functions.) Access these fields as variables -named with a preceding C<tm_> in front their method names. Thus, -C<$tm_obj-E<gt>mday()> corresponds to $tm_mday if you import the fields. - -The gmctime() function provides a way of getting at the -scalar sense of the original CORE::gmtime() function. - -To access this functionality without the core overrides, -pass the C<use> an empty import list, and then access -function functions with their full qualified names. -On the other hand, the built-ins are still available -via the C<CORE::> pseudo-package. - -=head1 NOTE - -While this class is currently implemented using the Class::Struct -module to build a struct-like class, you shouldn't rely upon this. - -=head1 AUTHOR - -Tom Christiansen diff --git a/Master/tlpkg/tlperl.old/lib/Time/localtime.pm b/Master/tlpkg/tlperl.old/lib/Time/localtime.pm deleted file mode 100644 index c3d9fb36085..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Time/localtime.pm +++ /dev/null @@ -1,86 +0,0 @@ -package Time::localtime; -use strict; -use 5.006_001; - -use Time::tm; - -our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION); -BEGIN { - use Exporter (); - @ISA = qw(Exporter Time::tm); - @EXPORT = qw(localtime ctime); - @EXPORT_OK = qw( - $tm_sec $tm_min $tm_hour $tm_mday - $tm_mon $tm_year $tm_wday $tm_yday - $tm_isdst - ); - %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] ); - $VERSION = 1.02; -} -use vars @EXPORT_OK; - -sub populate (@) { - return unless @_; - my $tmob = Time::tm->new(); - @$tmob = ( - $tm_sec, $tm_min, $tm_hour, $tm_mday, - $tm_mon, $tm_year, $tm_wday, $tm_yday, - $tm_isdst ) - = @_; - return $tmob; -} - -sub localtime (;$) { populate CORE::localtime(@_ ? shift : time)} -sub ctime (;$) { scalar CORE::localtime(@_ ? shift : time) } - -1; - -__END__ - -=head1 NAME - -Time::localtime - by-name interface to Perl's built-in localtime() function - -=head1 SYNOPSIS - - use Time::localtime; - printf "Year is %d\n", localtime->year() + 1900; - - $now = ctime(); - - use Time::localtime; - use File::stat; - $date_string = ctime(stat($file)->mtime); - -=head1 DESCRIPTION - -This module's default exports override the core localtime() function, -replacing it with a version that returns "Time::tm" objects. -This object has methods that return the similarly named structure field -name from the C's tm structure from F<time.h>; namely sec, min, hour, -mday, mon, year, wday, yday, and isdst. - -You may also import all the structure fields directly into your namespace -as regular variables using the :FIELDS import tag. (Note that this still -overrides your core functions.) Access these fields as -variables named with a preceding C<tm_> in front their method names. -Thus, C<$tm_obj-E<gt>mday()> corresponds to $tm_mday if you import -the fields. - -The ctime() function provides a way of getting at the -scalar sense of the original CORE::localtime() function. - -To access this functionality without the core overrides, -pass the C<use> an empty import list, and then access -function functions with their full qualified names. -On the other hand, the built-ins are still available -via the C<CORE::> pseudo-package. - -=head1 NOTE - -While this class is currently implemented using the Class::Struct -module to build a struct-like class, you shouldn't rely upon this. - -=head1 AUTHOR - -Tom Christiansen diff --git a/Master/tlpkg/tlperl.old/lib/Time/tm.pm b/Master/tlpkg/tlperl.old/lib/Time/tm.pm deleted file mode 100644 index 2c308ebb411..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Time/tm.pm +++ /dev/null @@ -1,33 +0,0 @@ -package Time::tm; -use strict; - -our $VERSION = '1.00'; - -use Class::Struct qw(struct); -struct('Time::tm' => [ - map { $_ => '$' } qw{ sec min hour mday mon year wday yday isdst } -]); - -1; -__END__ - -=head1 NAME - -Time::tm - internal object used by Time::gmtime and Time::localtime - -=head1 SYNOPSIS - -Don't use this module directly. - -=head1 DESCRIPTION - -This module is used internally as a base class by Time::localtime And -Time::gmtime functions. It creates a Time::tm struct object which is -addressable just like's C's tm structure from F<time.h>; namely with sec, -min, hour, mday, mon, year, wday, yday, and isdst. - -This class is an internal interface only. - -=head1 AUTHOR - -Tom Christiansen diff --git a/Master/tlpkg/tlperl.old/lib/Tk.pm b/Master/tlpkg/tlperl.old/lib/Tk.pm deleted file mode 100644 index deb453172eb..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk.pm +++ /dev/null @@ -1,821 +0,0 @@ -# -# Copyright (c) 1992-1994 The Regents of the University of California. -# Copyright (c) 1994 Sun Microsystems, Inc. -# Copyright (c) 1995-2004 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.007; -use Tk::Event (); -use AutoLoader qw(AUTOLOAD); -use DynaLoader; -use Cwd(); -use base qw(Exporter DynaLoader); - -*fileevent = \&Tk::Event::IO::fileevent; - -use Encode; -$Tk::encodeStopOnError = Encode::FB_QUIET(); -$Tk::encodeFallback = Encode::FB_PERLQQ(); # Encode::FB_DEFAULT(); - -our %font_encoding = ('jis0208' => 'jis0208-raw', - 'jis0212' => 'jis0212-raw', - 'ksc5601' => 'ksc5601-raw', - 'gb2312' => 'gb2312-raw', - 'unicode' => 'ucs-2le', - ); - -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; - -# Record author's perforce depot record -$Tk::CHANGE = q$Change: 3279 $; - -# $tk_version and $tk_patchLevel are reset by pTk when a mainwindow -# is created, $VERSION is checked by bootstrap -$Tk::version = '8.4'; -$Tk::patchLevel = '8.4'; -$Tk::VERSION = '804.027'; -$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)] - ); - -# -# Next few routines are here as perl code as doing caller() -# in XS code is very complicated - so instead C code calls BackTrace -# -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) && Exists($w); - # This special message is for exit() as an exception see pTkCallback.c - return if $mess =~/^_TK_EXIT_\(\d+\)/; - 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 -{ - if (@_ == 1) - { - my $arg = $_[0]; - return bless (((ref $arg) ? $arg : \$arg), 'Tk::Ev'); - } - else - { - return bless [@_],'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,@_) }; - } -} - -my %dialog = ( tk_chooseColor => 'ColorDialog', - tk_messageBox => 'MessageBox', - tk_getOpenFile => 'FDialog', - tk_getSaveFile => 'FDialog', - tk_chooseDirectory => 'FDialog' -# Slaven claims NI-S's version above does not work -# and provides this -# tk_chooseDirectory => 'DirDialog' - ); - -foreach my $dialog (keys %dialog) - { - no strict 'refs'; - unless (defined &$dialog) - { - my $kind = $dialog; - my $code = \&{"Tk::$dialog{$dialog}"}; - *$dialog = sub { &$code($kind,@_) }; - } - } - -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} = ucfirst(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) = @_; - # remove in a later version: - if (exists $args{'-text'}) - { - warn "The -text option is deprecated. Please use -message instead"; - if (!exists $args{'-message'}) - { - $args{'-message'} = delete $args{'-text'}; - } - } - $args{'-type'} = (exists $args{'-type'}) ? lc($args{'-type'}) : 'ok'; - $args{'-default'} = lc($args{'-default'}) if (exists $args{'-default'}); - ucfirst tk_messageBox(-parent => $widget, %args); -} - -sub getOpenFile -{ - tk_getOpenFile(-parent => shift,@_); -} - -sub getSaveFile -{ - tk_getSaveFile(-parent => shift,@_); -} - -sub chooseColor -{ - tk_chooseColor(-parent => shift,@_); -} - -sub chooseDirectory -{ - tk_chooseDirectory(-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->toplevel; - 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'; - } - elsif ($cmd =~ /Directory/) - { - push @_, -type => 'dir'; - } - DialogWrapper('FBox', $cmd, @_); -} - -sub DirDialog -{ - require Tk::DirTree; - DialogWrapper('DirTreeDialog',@_); -} - -*MotifFDialog = \&FDialog; - -*CORE::GLOBAL::exit = \&exit; - -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'} || (defined $ENV{'HOMEDRIVE'} && defined $ENV{'HOMEPATH'} ? $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'); -} - -sub backtrace -{ - my ($self,$msg,$i) = @_; - $i = 1 if @_ < 3; - while (1) - { - my ($pack,$file,$line,$sub) = caller($i++); - last unless defined($sub); - $msg .= "\n $sub at $file line $line"; - } - return "$msg\n"; -} - -sub die_with_trace -{ - my ($self,$msg) = @_; - die $self->backtrace($msg,1); -} - - - -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'); - if ($value) - { - $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; - return unless $w; - 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; -} - - -sub getEncoding -{ - my ($class,$name) = @_; - eval { require Encode }; - if ($@) - { - require Tk::DummyEncode; - return Tk::DummyEncode->getEncoding($name); - } - $name = $Tk::font_encoding{$name} if exists $Tk::font_encoding{$name}; - my $enc = Encode::find_encoding($name); - - unless ($enc) - { - $enc = Encode::find_encoding($name) if ($name =~ s/[-_]\d+$//) - } -# if ($enc) -# { -# print STDERR "Lookup '$name' => ".$enc->name."\n"; -# } -# else -# { -# print STDERR "Failed '$name'\n"; -# } - unless ($enc) - { - if ($name eq 'X11ControlChars') - { - require Tk::DummyEncode; - $Encode::encoding{$name} = $enc = Tk::DummyEncode->getEncoding($name); - } - } - return $enc; -} - - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Adjuster.pm b/Master/tlpkg/tlperl.old/lib/Tk/Adjuster.pm deleted file mode 100644 index 382ec6db6f9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Adjuster.pm +++ /dev/null @@ -1,436 +0,0 @@ -package Tk::Adjuster; - -use vars qw($VERSION); -$VERSION = '4.007'; # $Id: //depot/Tkutf8/Tk/Adjuster.pm#7 $ - -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'}; - delete $args{'-in'}; - $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/tlpkg/tlperl.old/lib/Tk/After.pm b/Master/tlpkg/tlperl.old/lib/Tk/After.pm deleted file mode 100644 index 85a0e406ee5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/After.pm +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright (c) 1995-2004 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 = '4.007'; # $Id: //depot/Tkutf8/Tk/After.pm#11 $ - -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; - bless $obj,"Tk::After::Cancelled"; - } -} - -sub Tk::After::Cancelled::once { } -sub Tk::After::Cancelled::repeat { } - -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->cancel; - undef $obj->[0]; - undef $obj->[4]; -} - -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) if Tk::Exists($w); - 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; -} - -sub time { - my $obj = shift; - my $delay = shift; - if (defined $delay) { - $obj->cancel if $delay == 0; - $obj->[2] = $delay; - } - $obj->[2]; -} - -1; -__END__ - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Animation.pm b/Master/tlpkg/tlperl.old/lib/Tk/Animation.pm deleted file mode 100644 index 428f3f1f48f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Animation.pm +++ /dev/null @@ -1,178 +0,0 @@ -package Tk::Animation; - -use vars qw($VERSION); -$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Animation.pm#8 $ - -use Tk::Photo; -use base qw(Tk::Photo); - -Construct Tk::Widget 'Animation'; - -sub MainWindow -{ - return shift->{'_MainWIndow_'}; -} - -sub add_frame -{ - my $obj = shift; - $obj->{'_frames_'} = [] unless exists $obj->{'_frames_'}; - push(@{$obj->{'_frames_'}},@_); -} - -sub new -{ - my ($class,$widget,%args) = @_; - my $obj = $class->SUPER::new($widget,%args); - $obj->{'_MainWIndow_'} = $widget->MainWindow; - if ($args{'-format'} eq 'gif') - { - my @images; - local $@; - while (1) - { - my $index = @images; - $args{'-format'} = "gif -index $index"; - my $img; - eval {local $SIG{'__DIE__'}; $img = $class->SUPER::new($widget,%args) }; - last if $@; - push(@images,$img); - } - if (@images > 1) - { - $obj->add_frame(@images); - $obj->{'_frame_index_'} = 0; - } - } - $obj->set_image( 0 ); - $obj->{_delta_} = 1; - $obj->{_blank_} = 0; - return $obj; -} - -sub fast_forward { - - my( $self, $delta) = @_; - - $self->{_delta_} = $delta; - if( not exists $self->{_playing_} ) { - my $playing = exists $self->{'_NextId_'}; - $self->{_playing_} = $playing; - $self->resume_animation if not $playing; - } else { - my $playing = delete $self->{_playing_}; - $self->pause_animation if not $playing; - } - -} # end fast_forward - -*fast_reverse = \&fast_forward; - -sub frame_count { - my $frames = shift->{'_frames_'}; - return -1 unless $frames; - return @$frames; -} - -sub blank { - my( $self, $blank ) = @_; - $blank = 1 if not defined $blank; - $self->{_blank_} = $blank; - $blank; -} - -sub set_image -{ - my ($obj,$index) = @_; - my $frames = $obj->{'_frames_'}; - return unless $frames && @$frames; - $index = 0 unless $index < @$frames; - $obj->blank if $obj->{_blank_}; # helps some make others worse - $obj->copy($frames->[$index]); - $obj->{'_frame_index_'} = $index; -} - -sub next_image -{ - my ($obj, $delta) = @_; - $delta = $obj->{_delta_} unless $delta; - my $frames = $obj->{'_frames_'}; - return unless $frames && @$frames; - $obj->set_image((($obj->{'_frame_index_'} || 0) + $delta) % @$frames); -} - -sub prev_image { shift->next_image( -1 ) } - -sub pause_animation { - my $self = shift; - my $id = delete $self->{'_NextId_'}; - Tk::catch { $id->cancel } if $id; -} - -sub resume_animation { - my( $self, $period ) = @_; - if( not defined $self->{'_period_'} ) { - $self->{'_period_'} = defined( $period ) ? $period : 100; - } - $period = $self->{'_period_'}; - my $w = $self->MainWindow; - $self->{'_NextId_'} = $w->repeat( $period => [ $self => 'next_image' ] ); -} - -sub start_animation -{ - my ($obj,$period) = @_; - $period ||= 100; - my $frames = $obj->{'_frames_'}; - return unless $frames && @$frames; - my $w = $obj->MainWindow; - $obj->stop_animation; - $obj->{'_period_'} = $period; - $obj->{'_NextId_'} = $w->repeat($period,[$obj,'next_image']); -} - -sub stop_animation -{ - my ($obj) = @_; - my $id = delete $obj->{'_NextId_'}; - Tk::catch { $id->cancel } if $id; - $obj->set_image(0); -} - -1; -__END__ - -=cut - -# -# This almost works for changing the animation on the fly -# but does not resize things correctly -# - -sub gif_sequence -{ - my ($obj,%args) = @_; - my $widget = $obj->MainWindow; - my @images; - local $@; - while (1) - { - my $index = @images; - $args{'-format'} = "gif -index $index"; - my $img; - eval - {local $SIG{'__DIE__'}; - my $img = $widget->Photo(%args); - push(@images,$img); - }; - last if $@; - } - if (@images) - { - delete $obj->{'_frames_'}; - $obj->add_frame(@images); - $obj->configure(-width => 0, -height => 0); - $obj->set_frame(0); - } -} - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Balloon.pm b/Master/tlpkg/tlperl.old/lib/Tk/Balloon.pm deleted file mode 100644 index 2ee0f6c3bce..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Balloon.pm +++ /dev/null @@ -1,621 +0,0 @@ -# -# The help widget that provides both "balloon" and "status bar" -# types of help messages. -# -# This is a patched version of Balloon 3.037 - it adds support -# for different orientations of the balloon widget, depending -# on wether there's enough space for it. The little arrow now -# should always point directly to the client. -# Added by Gerhard Petrowitsch (gerhard.petrowitsch@philips.com) -# -# Nov 1, 2003 - Jack Dunnigan -# Added support for more than one screen in single logical -# screen mode (i.e. xinerama, dual monitors) - -package Tk::Balloon; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #10 $ =~ /\D(\d+)\s*$/; - -use Tk qw(Ev Exists); -use Carp; -require Tk::Toplevel; - -Tk::Widget->Construct('Balloon'); -use base qw(Tk::Toplevel); - -# use UNIVERSAL; avoid the UNIVERSAL.pm file subs are XS in perl core - -use strict; - -my @balloons; -my $button_up = 0; -my %arrows = ( TL => 'R0lGODlhBgAGAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAGAAYAAAINjA0HAEdwLCwMKIQfBQA7', - TR => 'R0lGODlhBgAGAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAGAAYAAAIRBGMDwAEQkgAIAAoCABEEuwAAOw==', - BR => 'R0lGODlhBgAGAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAGAAYAAAIPDOHHhYVRAIgIAEISQLELADs=', - BL => 'R0lGODlhBgAGAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAGAAYAAAIPhB1xAUFALCIMKAaAWQAVADs=', - NO => 'R0lGODlhAQABAJEAANnZ2f///////////yH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==' - ); - - -sub ClassInit { - my ($class, $mw) = @_; - $mw->bind('all', '<Motion>', ['Tk::Balloon::Motion', Ev('X'), Ev('Y'), Ev('s')]); - $mw->bind('all', '<Leave>', ['Tk::Balloon::Motion', Ev('X'), Ev('Y'), Ev('s')]); - $mw->bind('all', '<Button>', 'Tk::Balloon::ButtonDown'); - $mw->bind('all', '<ButtonRelease>', 'Tk::Balloon::ButtonUp'); - return $class; -} - -sub Populate { - my ($w, $args) = @_; - - $w->SUPER::Populate($args); - - $w->overrideredirect(1); - $w->withdraw; - # Only the container frame's background should be black... makes it - # look better. - $w->configure(-background => 'black'); - - # the balloon arrows - $w->{img_tl} = $w->Photo(-data => $arrows{TL}, -format => 'gif'); - $w->{img_tr} = $w->Photo(-data => $arrows{TR}, -format => 'gif'); - $w->{img_bl} = $w->Photo(-data => $arrows{BL}, -format => 'gif'); - $w->{img_br} = $w->Photo(-data => $arrows{BR}, -format => 'gif'); - $w->{img_no} = $w->Photo(-data => $arrows{NO}, -format => 'gif'); - $w->OnDestroy([$w, '_destroyed']); - - $w->{'pointer'} = $w->Label(-bd=>0, -relief=>'flat',-image=>$w->{img_no}); - - # the balloon message - # We give the Label a big borderwidth - # ..enough to slide a 6x6 gif image along the border including some space - - my $ml = $w->Label(-bd => 0, - -padx => 10, - -pady => 3, - -justify => 'left', - -relief=>'flat'); - $w->Advertise('message' => $ml); - - $ml->pack( - -side => 'top', - -anchor => 'nw', - -expand => 1, - -fill => 'both', - -padx => 0, - -pady => 0); - - # append to global list of balloons - push(@balloons, $w); - $w->{'popped'} = 0; - $w->{'buttonDown'} = 0; - $w->{'menu_index'} = 'none'; - $w->{'menu_index_over'} = 'none'; - $w->{'canvas_tag'} = ''; - $w->{'canvas_tag_over'} = ''; - $w->{'current_screen'} = 0; - - $w->ConfigSpecs(-installcolormap => ['PASSIVE', 'installColormap', 'InstallColormap', 0], - -initwait => ['PASSIVE', 'initWait', 'InitWait', 350], - -state => ['PASSIVE', 'state', 'State', 'both'], - -statusbar => ['PASSIVE', 'statusBar', 'StatusBar', undef], - -statusmsg => ['PASSIVE', 'statusMsg', 'StatusMsg', ''], - -balloonmsg => ['PASSIVE', 'balloonMsg', 'BalloonMsg', ''], - -balloonposition => ['PASSIVE', 'balloonPosition', 'BalloonPosition', 'widget'], - -postcommand => ['CALLBACK', 'postCommand', 'PostCommand', undef], - -cancelcommand => ['CALLBACK', 'cancelCommand', 'CancelCommand', undef], - -motioncommand => ['CALLBACK', 'motionCommand', 'MotionCommand', undef], - -background => ['DESCENDANTS', 'background', 'Background', '#C0C080'], - -foreground => ['DESCENDANTS', 'foreground', 'Foreground', undef], - -font => [$ml, 'font', 'Font', '-*-helvetica-medium-r-normal--*-120-*-*-*-*-*-*'], - -borderwidth => ['SELF', 'borderWidth', 'BorderWidth', 1], - -numscreens=>['PASSIVE', 'numScreens','NumScreens',1], - ); -} - -# attach a client to the balloon -sub attach { - my ($w, $client, %args) = @_; - foreach my $key (grep(/command$/,keys %args)) - { - $args{$key} = Tk::Callback->new($args{$key}); - } - my $msg = delete $args{-msg}; - $args{-balloonmsg} = $msg unless exists $args{-balloonmsg}; - $args{-statusmsg} = $msg unless exists $args{-statusmsg}; - $w->{'clients'}{$client} = \%args; - $client->OnDestroy([$w, 'detach', $client]); -} - -# detach a client from the balloon. -sub detach { - my ($w, $client) = @_; - if (Exists($w)) - { - $w->Deactivate if ($client->IS($w->{'client'})); - } - delete $w->{'clients'}{$client}; -} - -sub GetOption -{ - my ($w,$opt,$client) = @_; - $client = $w->{'client'} unless defined $client; - if (defined $client) - { - my $info = $w->{'clients'}{$client}; - return $info->{$opt} if exists $info->{$opt}; - } - return $w->cget($opt); -} - -sub Motion { - my ($ewin, $x, $y, $s) = @_; - - return if not defined $ewin; - - # Find which window we are over - my $over = $ewin->Containing($x, $y); - - return if &grabBad($ewin, $over); - - foreach my $w (@balloons) { - # if cursor has moved over the balloon -- ignore - next if defined $over and $over->toplevel eq $w; - - # find the client window that matches - my $client = $over; - while (defined $client) { - last if (exists $w->{'clients'}{$client}); - $client = $client->Parent; - } - if (defined $client) { - # popping up disabled -- ignore - my $state = $w->GetOption(-state => $client); - next if $state eq 'none'; - # Check if a button was recently released: - my $deactivate = 0; - if ($button_up) { - $deactivate = 1; - $button_up = 0; - } - # Deactivate it if the motioncommand says to: - my $command = $w->GetOption(-motioncommand => $client); - $deactivate = $command->Call($client, $x, $y) if defined $command; - if ($deactivate) - { - $w->Deactivate; - } - else - { - # warn "deact: $client $w->{'client'}"; - $w->Deactivate unless $client->IS($w->{'client'}); - my $msg = $client->BalloonInfo($w,$x,$y,'-statusmsg','-balloonmsg'); - if (defined($msg)) - { - my $delay = delete $w->{'delay'}; - $delay->cancel if defined $delay; - my $initwait = $w->GetOption(-initwait => $client); - $w->{'delay'} = $client->after($initwait, sub {$w->SwitchToClient($client);}); - $w->{'client'} = $client; - } - } - } else { - # cursor is at a position covered by a non client - # pop down the balloon if it is up or scheduled. - $w->Deactivate; - } - } -} - -sub ButtonDown { - my ($ewin) = @_; - - foreach my $w (@balloons) { - $w->Deactivate; - } -} - -sub ButtonUp { - $button_up = 1; -} - -# switch the balloon to a new client -sub SwitchToClient { - my ($w, $client) = @_; - return unless Exists($w); - return unless Exists($client); - return unless $client->IS($w->{'client'}); - return if &grabBad($w, $client); - my $command = $w->GetOption(-postcommand => $client); - if (defined $command) { - # Execute the user's command and return if it returns false: - my $pos = $command->Call($client); - return if not $pos; - if ($pos =~ /^(\d+),(\d+)$/) { - # Save the returned position so the Popup method can use it: - $w->{'clients'}{$client}{'postposition'} = [$1, $2]; - } - } - my $state = $w->GetOption(-state => $client); - $w->Popup if ($state =~ /both|balloon/); - $w->SetStatus if ($state =~ /both|status/); - $w->{'popped'} = 1; - $w->{'delay'} = $w->repeat(200, ['Verify', $w, $client]); -} - -sub grabBad { - - my ($w, $client) = @_; - - return 0 unless Exists($client); - my $g = $w->grabCurrent; - return 0 unless defined $g; - return 0 if $g->isa('Tk::Menu'); - return 0 if $g eq $client; - - # The grab is OK if $client is a decendant of $g. Use the internal Tcl/Tk - # pathname (yes, it's cheating, but it's legal). - - return 0 if $g == $w->MainWindow; - my $wp = $w->PathName; - my $gp = $g->PathName; - return 0 if $wp =~ /^$gp/; - return 1; # bad grab - -} # end grabBad - - -sub Subclient -{ - my ($w,$data) = @_; - if (defined($w->{'subclient'}) && (!defined($data) || $w->{'subclient'} ne $data)) - { - $w->Deactivate; - } - $w->{'subclient'} = $data; -} - -sub Verify { - my $w = shift; - my $client = shift; - my ($X,$Y) = (@_) ? @_ : ($w->pointerxy); - my $over = $w->Containing($X,$Y); - return if not defined $over or ($over->toplevel eq $w); - my $deactivate = # DELETE? or move it to the isa-Menu section?: - # ($over ne $client) or - not $client->IS($w->{'client'}) -# or (!$client->isa('Tk::Menu') && $w->grabCurrent); -# or $w->grabbad($client); - or &grabBad($w, $client); - if ($deactivate) - { - $w->Deactivate; - } - else - { - $client->BalloonInfo($w,$X,$Y,'-statusmsg','-balloonmsg'); - } -} - -sub Deactivate { - my ($w) = @_; - my $delay = delete $w->{'delay'}; - $delay->cancel if defined $delay; - if ($w->{'popped'}) { - my $client = $w->{'client'}; - my $command = $w->GetOption(-cancelcommand => $client); - if (defined $command) { - # Execute the user's command and return if it returns false: - return if not $command->Call($client); - } - $w->withdraw; - $w->ClearStatus; - $w->{'popped'} = 0; - $w->{'menu_index'} = 'none'; - $w->{'canvas_tag'} = ''; - } - $w->{'client'} = undef; - $w->{'subclient'} = undef; - $w->{'location'} = undef; -} - -sub Popup { - my ($w) = @_; - if ($w->cget(-installcolormap)) { - $w->colormapwindows($w->winfo('toplevel')) - } - my $client = $w->{'client'}; - return if not defined $client or not exists $w->{'clients'}{$client}; - my $msg = $client->BalloonInfo($w, $w->pointerxy,'-balloonmsg'); - # Dereference it if it looks like a scalar reference: - $msg = $$msg if UNIVERSAL::isa($msg, 'SCALAR'); - - $w->Subwidget('message')->configure(-text => $msg); - $w->idletasks; - - return unless Exists($w); - return unless Exists($client); - return if $msg eq ''; # Don't popup empty balloons. - - my ($x, $y); - my $pos = $w->GetOption(-balloonposition => $client); - my $postpos = delete $w->{'clients'}{$client}{'postposition'}; - if (defined $postpos) { - # The postcommand must have returned a position for the balloon - I will use that: - ($x,$y) = @{$postpos}; - } elsif ($pos eq 'mouse') { - ($x,$y)=$client->pointerxy; # We adjust the position later - } elsif ($pos eq 'widget') { - $x = int($client->rootx + $client->width/2); - $y = int($client->rooty + int ($client->height/1.3)); - } else { - croak "'$pos' is not a valid position for the balloon - it must be one of: 'widget', 'mouse'."; - } - - $w->idletasks; - - # Explanation of following code. [JD] - # PREMISE: We want to ensure that the balloon is always "on screen". - # To do this we use calculate the size of the - # toplevel before it is mapped. Then we adjust it's position with respect to the - # mouse cursor or widget. Balloons are usually shown below and to the right of the target. - # From extensive KDE experience using Xinerama, and from using dual monitors on WinXP.. - # the balloon will extend across two monitors in single logical screen mode (SLS). - # This is an undesirable characteristic indeed. Trying to read a disjointed balloon - # across monitors is not fun. - # - # The intent of the following code is to fix this problem. We do this by avoiding - # placement of any part of the balloon over,say, the "half screenwidth" mark (for two - # monitors in SLS mode) or "thirds of screenwidth" mark (for 3 monitors) and so on... - # i.e. In SLS mode these *WILL BE* separate screens and as such, should be considered hard - # boundaries to be avoided. - # - # The only drawback of this code, is I know of no way to actually determine this on a - # user by user basis. This means that the developer or administrator will have to know - # the hardware (monitor) setup for which the application is designed. - # - # This code uses Gerhard's GIF images but changes *how* the image gets shown. Instead - # of creating four separate labels, we configure only ONE label with the proper image. - # Then using the place geometry manager, this image/label can be "slid" along the - # appropriate side of the toplevel so that it always points directly at the target widget. - # - # Here we go.. - - my ($width, $height) = ($w->reqwidth, $w->reqheight); - my ($sw, $sh) = ($w->screenwidth, $w->screenheight); - my $numscreen = $w->cget(-numscreens); - my $deltax = $sw/$numscreen; - my $leftedge; - my $rightedge; - my $count = 0; - for (my $i=0; $i<$sw; $i+=$deltax){ - $leftedge = $i; - $rightedge = $i + $deltax; - if ($x >= $leftedge && $x < $rightedge ){ - last; - } - $count++; - } - - # Force another look at balloon location because mouse has switched - # virtual screens. - $w->{'location'} = undef unless ( $count == $w->{'current_screen'} ); - $w->{'current_screen'} = $count; - - my $xx=undef; - my $yy=undef; # to hold final toplevel placement - my $slideOffsetX = 0; - my $slideOffsetY = 0; - my $cornerOffset = 5; #default - keep corner away from pointer - my $testtop = $y - $height - $cornerOffset; - my $testbottom = $y + $height + (2*$cornerOffset); - my $testright = $x + $width + (2*$cornerOffset); - my $testleft = $x - $width - $cornerOffset; - my $vert='bottom'; #default - my $horiz='right'; #default - - - if ( defined $w->{'location'} ){ - # Once balloon is activated, **don't** change the location of the balloon. - # It is annoying to have it jump from one location to another. - ( $w->{'location'}=~/top/ ) ? ( $vert = 'top' ) : ( $vert = 'bottom' ); - ( $w->{'location'}=~/left/ ) ? ( $horiz = 'left' ) : ( $horiz = 'right' ); - - if ($vert eq 'top' && $testtop < 0) { - $yy = 0; - $slideOffsetY = $testtop; - } - elsif ($vert eq 'bottom' && $testbottom > $sh) { - $slideOffsetY = $testbottom - $sh; - } - - if ($horiz eq 'left' && $testleft < $leftedge) { - $xx = $leftedge; - } - elsif ($horiz eq 'right' && $testright > $rightedge) { - $slideOffsetX = $testright - $rightedge; - } - } - else { - #Test balloon positions in the vertical - if ($testbottom > $sh) { - #Then offscreen to bottom, check top - if ($testtop >= 0) { - $vert = 'top'; - } - elsif ($y > $sh/2) { - #still offscreen to top but there is more room above then below - $vert = 'top'; - $yy=0; - $slideOffsetY = $testtop; - } - if ($vert eq 'bottom'){ - #Calculate Yoffset to fit entire balloon onto screen - $slideOffsetY = $testbottom - $sh; - } - } - #Test balloon positions in the horizontal - - if ($testright > $rightedge) { - #The offscreen, check left - if ($testleft >= $leftedge) { - $horiz = 'left'; - } - elsif ($x > ($leftedge+$deltax) ) { - #still offscreen to left but there is more room to left than right - $horiz = 'left'; - $xx=0; - $slideOffsetX = $testleft; - } - if ($horiz eq 'right'){ - #Calculate Xoffset to fit entire balloon onto screen - $slideOffsetX = $testright - $rightedge; - } - } - } - - $w->{'location'} = $vert.$horiz unless (defined $w->{'location'}); - - if ($w->{'location'} eq 'bottomright') { - if ( $slideOffsetX or $slideOffsetY ) { - $w->{'pointer'}->configure(-image => $w->{img_no}); - } - else { - $w->{'pointer'}->configure(-image => $w->{img_tl}); - } - - $w->{'pointer'}->place( - -in=>$w, -# -relx=>0, -x=>$slideOffsetX + 2, -# -rely=>0, -y=>$slideOffsetY + 2, - -relx=>0, -x=>2, - -rely=>0, -y=>2, - -bordermode=>'outside', - -anchor=>'nw'); - - $xx=$x-$slideOffsetX+(2*$cornerOffset) unless (defined $xx); - $yy=$y-$slideOffsetY+(2*$cornerOffset) unless (defined $yy); - - } - elsif ($w->{'location'} eq 'bottomleft') { - if ( $slideOffsetX or $slideOffsetY ) { - $w->{'pointer'}->configure(-image => $w->{img_no}); - } - else { - $w->{'pointer'}->configure(-image => $w->{img_tr}); - } - - $w->{'pointer'}->place(-in=>$w, -# -relx=>1, -x=>$slideOffsetX - 2, -# -rely=>0, -y=>$slideOffsetY + 2, - -relx=>1, -x=>-2, - -rely=>0, -y=>2, - -bordermode=>'outside', - -anchor=>'ne'); - - $xx=$x-$width-$slideOffsetX-$cornerOffset unless (defined $xx); - $yy=$y-$slideOffsetY+(2*$cornerOffset) unless (defined $yy); - - } - elsif ($w->{'location'} eq 'topright') { - if ( $slideOffsetX or $slideOffsetY ) { - $w->{'pointer'}->configure(-image => $w->{img_no}); - } - else { - $w->{'pointer'}->configure(-image => $w->{img_bl}); - } - - $w->{'pointer'}->place(-in=>$w, -# -relx=>0, -x=>$slideOffsetX + 2, -# -rely=>1, -y=>$slideOffsetY - 2, - -relx=>0, -x=>2, - -rely=>1, -y=>-2, - -bordermode=>'outside', - -anchor=>'sw'); - - $xx=$x-$slideOffsetX+$cornerOffset unless (defined $xx); - $yy=$y-$height-$slideOffsetY-$cornerOffset unless (defined $yy); - } - elsif ($w->{'location'} eq 'topleft') { - if ( $slideOffsetX or $slideOffsetY ) { - $w->{'pointer'}->configure(-image => $w->{img_no}); - } - else { - $w->{'pointer'}->configure(-image => $w->{img_br}); - } - - $w->{'pointer'}->place(-in=>$w, -# -relx=>1, -x=>$slideOffsetX - 2, -# -rely=>1, -y=>$slideOffsetY - 2, - -relx=>1, -x=>-2, - -rely=>1, -y=>-2, - -bordermode=>'outside', - -anchor=>'se'); - - $xx=$x-$width-$slideOffsetX-$cornerOffset unless (defined $xx); - $yy=$y-$height-$slideOffsetY-$cornerOffset unless (defined $yy); - } - - $w->{'pointer'}->raise; - $xx = int($xx); - $yy = int($yy); - $w->geometry("+$xx+$yy"); - $w->deiconify(); - $w->raise; -} - -sub SetStatus { - my ($w) = @_; - my $client = $w->{'client'}; - my $s = $w->GetOption(-statusbar => $client); - if (defined $s and $s->winfo('exists')) { - my $vref = $s->cget(-textvariable); - return if not defined $client or not exists $w->{'clients'}{$client}; - my $msg = $client->BalloonInfo($w, $w->pointerxy,'-statusmsg'); - # Dereference it if it looks like a scalar reference: - $msg = $$msg if UNIVERSAL::isa($msg, 'SCALAR'); - if (not defined $vref) { - eval { $s->configure(-text => $msg); }; - } else { - $$vref = $msg; - } - } -} - -sub ClearStatus { - my ($w) = @_; - my $client = $w->{'client'}; - my $s = $w->GetOption(-statusbar => $client); - if (defined $s and $s->winfo('exists')) { - my $vref = $s->cget(-textvariable); - if (defined $vref) { - $$vref = ''; - } else { - eval { $s->configure(-text => ''); } - } - } -} - -sub _destroyed { - my ($w) = @_; - # This is called when widget is destroyed (no matter how!) - # via the ->OnDestroy hook set in Populate. - # remove ourselves from the list of baloons. - @balloons = grep($w != $_, @balloons); - - # FIXME: If @balloons is now empty perhaps remove the 'all' bindings - # to reduce overhead until another balloon is created? - - # Delete the images - for (qw(no tl tr bl br)) { - my $img = delete $w->{"img_$_"}; - $img->delete if defined $img; - } -} - -1; - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Bitmap.pm b/Master/tlpkg/tlperl.old/lib/Tk/Bitmap.pm deleted file mode 100644 index d081a393804..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Bitmap.pm +++ /dev/null @@ -1,10 +0,0 @@ -package Tk::Bitmap; -require Tk; -require Tk::Image; -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Bitmap.pm#4 $ -use base qw(Tk::Image); -Construct Tk::Image 'Bitmap'; -sub Tk_image { 'bitmap' } -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/BrowseEntry.pm b/Master/tlpkg/tlperl.old/lib/Tk/BrowseEntry.pm deleted file mode 100644 index 5c4b6b782c2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/BrowseEntry.pm +++ /dev/null @@ -1,510 +0,0 @@ -# -# BrowseEntry is a stripped down version of ComboBox.tcl from Tix4.0 -# -# Some additions by Slaven Rezic <slaven@rezic.de> to make the widget -# look like the Windows' Combobox. There are also additional options. -# - -package Tk::BrowseEntry; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #13 $ =~ /\D(\d+)\s*$/; - -use Tk qw(Ev); -use Carp; -use strict; - -use base qw(Tk::Frame); -Construct Tk::Widget 'BrowseEntry'; - -require Tk::LabEntry; - -sub LabEntryWidget { "LabEntry" } -sub ButtonWidget { "Button" } -sub ListboxWidget { "Listbox" } - -sub Populate { - my ($w, $args) = @_; - - $w->Tk::Frame::Populate($args); - - # entry widget and arrow button - my $lpack = delete $args->{-labelPack}; - if (not defined $lpack) { - $lpack = [-side => 'left', -anchor => 'e']; - } - $w->{_BE_Style} = delete $args->{-style} || $Tk::platform; - my $LabEntry = $w->LabEntryWidget; - my $Listbox = $w->ListboxWidget; - my $Button = $w->ButtonWidget; - # XXX should this be retained? -# if (defined $args->{-state} and $args->{-state} eq 'readonly') { # XXX works only at construction time -# $LabEntry = "NoSelLabEntry"; -# require Tk::NoSelLabEntry; -# } - my $e; - my $var = ""; - my @LabEntry_args = (-textvariable => \$var); - if (exists $args->{-label}) { - $e = $w->$LabEntry(-labelPack => $lpack, - -label => delete $args->{-label}, - @LabEntry_args, - ); - } else { - $e = $w->$LabEntry(@LabEntry_args); - } - my $b = $w->$Button(-bitmap => '@' . Tk->findINC($w->{_BE_Style} eq 'MSWin32' ? 'arrowdownwin.xbm' : 'cbxarrow.xbm')); - $w->Advertise('entry' => $e); - $w->Advertise('arrow' => $b); - - # Pack the button to align vertically with the entry widget - my @anch; - my $edge = {@$lpack}->{-side}; - push(@anch,-anchor => 's') if ($edge && $edge eq 'top'); - push(@anch,-anchor => 'n') if ($edge && $edge eq 'bottom'); - $b->pack(-side => 'right', -padx => 1, @anch); - - $e->pack(-side => 'right', -fill => 'x', -expand => 1); #XXX, -padx => 1); - - # popup shell for listbox with values. - my $c = $w->Toplevel(-bd => 2, - -relief => ($w->{_BE_Style} eq 'MSWin32' - ? "solid" : "raised")); - $c->overrideredirect(1); - $c->withdraw; - my $sl = $c->Scrolled( $Listbox, qw/-selectmode browse -scrollbars oe/ ); - if ($w->{_BE_Style} eq 'MSWin32' and $Tk::platform eq 'MSWin32') { - $sl->configure(-bg => 'SystemWindow', -relief => "flat"); - } - $w->Advertise('choices' => $c); - $w->Advertise('slistbox' => $sl); - $sl->pack(-expand => 1, -fill => 'both'); - - $sl->Subwidget("scrolled")->bind("<Motion>",sub { - return unless ($w->{_BE_Style} eq 'MSWin32'); - my $e = $_[0]->XEvent; - my $y = $e->y; - my $inx = $sl->nearest($y); - if (defined $inx) { - $sl->selectionClear(0, "end"); - $sl->selectionSet($inx); - } - }); - - # other initializations - $w->SetBindings; - $w->{'_BE_popped'} = 0; - $w->Delegates(get => $sl, DEFAULT => $e); - $w->ConfigSpecs( - -font => [qw/DESCENDANTS font Font/], - -listwidth => [qw/PASSIVE listWidth ListWidth/, undef], - -listheight => [{-height => $sl}, qw/listHeight ListHeight/, undef], - -listcmd => [qw/CALLBACK listCmd ListCmd/, undef], - -autolistwidth => [qw/PASSIVE autoListWidth AutoListWidth/, undef], - -autolimitheight => [qw/PASSIVE autoLimitHeight AutoLimitHeight 0/], - -browsecmd => [qw/CALLBACK browseCmd BrowseCmd/, undef], - -browse2cmd => [qw/CALLBACK browse2Cmd Browse2Cmd/, undef], - -choices => [qw/METHOD choices Choices/, undef], - -state => [qw/METHOD state State normal/], - -arrowimage => [ {-image => $b}, qw/arrowImage ArrowImage/, undef], - -variable => [ {'-textvariable' => $e} ], - -colorstate => [qw/PASSIVE colorState ColorState/, undef], - -command => '-browsecmd', - -options => '-choices', - -label => [qw/PASSIVE label Label/, undef], - -labelPack => [qw/PASSIVE labelPack LabelPack/, undef], - #-background => [$e, qw/background Background/, undef], - #-foreground => [$e, qw/foreground Foreground/, undef], - -buttontakefocus => [{-takefocus => $b}, 'buttonTakefocus', - 'ButtonTakefocus', 1], - DEFAULT => [$e] ); -} - -sub SetBindings { - my ($w) = @_; - - my $e = $w->Subwidget('entry'); - my $b = $w->Subwidget('arrow'); - - # set bind tags - $w->bindtags([$w, 'Tk::BrowseEntry', $w->toplevel, 'all']); - # as we don't bind $e here leave its tags alone ... - # $e->bindtags([$e, ref($e), $e->toplevel, 'all']); - - # bindings for the button and entry - $b->bind('<1>',[$w,'BtnDown']); - $b->toplevel->bind('<ButtonRelease-1>',[$w,'ButtonHack']); - $b->bind('<space>',[$w,'space']); - - # bindings for listbox - my $sl = $w->Subwidget('slistbox'); - my $l = $sl->Subwidget('listbox'); - $l->bind('<ButtonRelease-1>',[$w,'ListboxRelease',Ev('x'),Ev('y')]); - $l->bind('<Escape>' => [$w,'LbClose']); - $l->bind('<Return>' => [$w,'Return',$l]); - - # allow click outside the popped up listbox to pop it down. - $w->bind('<1>','BtnDown'); -} - -sub space -{ - my $w = shift; - $w->BtnDown; - $w->{'_BE_savefocus'} = $w->focusCurrent; - $w->Subwidget('slistbox')->focus; -} - - -sub ListboxRelease -{ - my ($w,$x,$y) = @_; - $w->ButtonHack; - $w->LbChoose($x, $y); -} - -sub Return -{ - my ($w,$l) = @_; - my($x, $y) = $l->bbox($l->curselection); - $w->LbChoose($x, $y) -} - - -sub BtnDown { - my ($w) = @_; - return if $w->cget( '-state' ) eq 'disabled'; - - if ($w->{'_BE_popped'}) { - $w->Popdown; - $w->{'_BE_buttonHack'} = 0; - } else { - $w->PopupChoices; - $w->{'_BE_buttonHack'} = 1; - } -} - -sub PopupChoices { - my ($w) = @_; - - if (!$w->{'_BE_popped'}) { - $w->Callback(-listcmd => $w); - my $e = $w->Subwidget('entry'); - my $c = $w->Subwidget('choices'); - my $s = $w->Subwidget('slistbox'); - my $a = $w->Subwidget('arrow'); - my $y1 = ($w->{_BE_Style} eq 'MSWin32' - ? $a->rooty + $a->height - : $e->rooty + $e->height + 3 - ); - my $bd = $c->cget(-bd) + $c->cget(-highlightthickness); - # using the real listbox reqheight rather than the - # container frame one, which does not change after resizing the - # listbox - my $ht = $s->Subwidget("scrolled")->reqheight + 2 * $bd; - my $x1 = ($w->{_BE_Style} eq 'MSWin32' - ? $e->Subwidget("entry")->rootx - : $e->rootx - ); - my ($width, $x2); - if (defined $w->cget(-listwidth)) { - $width = $w->cget(-listwidth); - $x2 = $x1 + $width; - } else { - $x2 = $a->rootx + $a->width; - $width = $x2 - $x1; - } - my $rw = $c->reqwidth; - if ($rw < $width) { - $rw = $width - } else { - if ($rw > $width * 3) { - $rw = $width * 3; - } - if ($rw > $w->vrootwidth) { - $rw = $w->vrootwidth; - } - } - $width = $rw; - - # if listbox is too far right, pull it back to the left - # - if ($x2 > $w->vrootwidth) { - $x1 = $w->vrootwidth - $width; - } - - # if listbox is too far left, pull it back to the right - # - if ($x1 < 0) { - $x1 = 0; - } - - # if listbox is below bottom of screen, pull it up. - # check the Win32 taskbar, if possible - my $rootheight; - if ($Tk::platform eq 'MSWin32' and $^O eq 'MSWin32') { - eval { - require Win32Util; # XXX should not use a non-CPAN widget - $rootheight = (Win32Util::screen_region($w))[3]; - }; - } - if (!defined $rootheight) { - $rootheight = $w->vrootheight; - } - - my $y2 = $y1 + $ht; - if ($y2 > $rootheight) { - $y1 = $y1 - $ht - ($e->height - 5); - } - $c->geometry(sprintf('%dx%d+%d+%d', $rw, $ht, $x1, $y1)); - $c->deiconify; - $c->raise; - $e->focus; - $w->{'_BE_popped'} = 1; - - # highlight current selection - my $current_sel = $e->get; - if (defined $current_sel) { - my $i = 0; - foreach my $str ($s->get(0, "end")) { - if ($str eq $current_sel) { - $s->selectionClear(0, "end"); - $s->selectionSet($i); - last; - } - $i++; - } - } - - $c->configure(-cursor => 'arrow'); - $w->{'_BE_grabinfo'} = $w->grabSave; - $w->grabGlobal; - } -} - -# choose value from listbox if appropriate -sub LbChoose { - my ($w, $x, $y) = @_; - my $l = $w->Subwidget('slistbox')->Subwidget('listbox'); - if ((($x < 0) || ($x > $l->Width)) || - (($y < 0) || ($y > $l->Height))) { - # mouse was clicked outside the listbox... close the listbox - $w->LbClose; - } else { - # select appropriate entry and close the listbox - $w->LbCopySelection; - $w->Callback(-browsecmd, $w, $w->Subwidget('entry')->get()); - $w->Callback(-browse2cmd => $w, $w->LbIndex); - } -} - -# close the listbox after clearing selection -sub LbClose { - my ($w) = @_; - my $l = $w->Subwidget('slistbox')->Subwidget('listbox'); - $l->selection('clear', 0, 'end'); - $w->Popdown; -} - -# copy the selection to the entry and close listbox -sub LbCopySelection { - my ($w) = @_; - my $index = $w->LbIndex; - if (defined $index) { - $w->{'_BE_curIndex'} = $index; - my $l = $w->Subwidget('slistbox')->Subwidget('listbox'); - my $var_ref = $w->cget( '-textvariable' ); - $$var_ref = $l->get($index); - if ($w->{'_BE_popped'}) { - $w->Popdown; - } - } - $w->Popdown; -} - -sub LbIndex { - my ($w, $flag) = @_; - my ($sel) = $w->Subwidget('slistbox')->Subwidget('listbox')->curselection; - if (defined $sel) { - return int($sel); - } else { - if (defined $flag && ($flag eq 'emptyOK')) { - return undef; - } else { - return 0; - } - } -} - -# pop down the listbox -sub Popdown { - my ($w) = @_; - if ($w->{'_BE_savefocus'} && Tk::Exists($w->{'_BE_savefocus'})) { - $w->{'_BE_savefocus'}->focus; - delete $w->{'_BE_savefocus'}; - } - if ($w->{'_BE_popped'}) { - my $c = $w->Subwidget('choices'); - $c->withdraw; - $w->grabRelease; - if (ref $w->{'_BE_grabinfo'} eq 'CODE') { - $w->{'_BE_grabinfo'}->(); - delete $w->{'_BE_grabinfo'}; - } - $w->{'_BE_popped'} = 0; - } -} - -# This hack is to prevent the ugliness of the arrow being depressed. -# -sub ButtonHack { - my ($w) = @_; - my $b = $w->Subwidget('arrow'); - if ($w->{'_BE_buttonHack'}) { - $b->butUp; - } -} - -sub choices -{ - my ($w,$choices) = @_; - if (@_ > 1) - { - $w->delete( qw/0 end/ ); - my %hash; - my $var = $w->cget('-textvariable'); - my $old = $$var; - foreach my $val (@$choices) - { - $w->insert( 'end', $val); - $hash{$val} = 1; - } - $old = $choices->[0] - if defined $old && not exists $hash{$old} && defined $choices->[0]; - $$var = $old; - } - else - { - return( $w->get( qw/0 end/ ) ); - } -} - -sub _set_edit_state { - my( $w, $state ) = @_; - - my $entry = $w->Subwidget( 'entry' ); - my $button = $w->Subwidget( 'arrow' ); - - if ($w->cget( '-colorstate' )) { - my $color; - if( $state eq 'normal' ) { # Editable - $color = 'gray95'; - } else { # Not Editable - $color = $w->cget( -background ) || 'lightgray'; - } - $entry->Subwidget( 'entry' )->configure( -background => $color ); - } - - if( $state eq 'readonly' ) { - $entry->configure( -state => 'disabled' ); - $button->configure( -state => 'normal' ); - if ($w->{_BE_Style} eq 'MSWin32') { - $entry->bind('<1>',[$w,'BtnDown']); - $w->{_BE_OriginalCursor} = $entry->cget( -cursor ); - $entry->configure( -cursor => 'left_ptr' ); - } - } else { - $entry->configure( -state => $state ); - if (exists $w->{_BE_OriginalCursor}) { - $entry->configure(-cursor => delete $w->{_BE_OriginalCursor}); - } - $button->configure( -state => $state ); - if ($w->{_BE_Style} eq 'MSWin32') { - $entry->bind('<1>',['Button1',Tk::Ev('x')]); - } - } -} - -sub state { - my $w = shift; - unless( @_ ) { - return( $w->{Configure}{-state} ); - } else { - my $state = shift; - $w->{Configure}{-state} = $state; - $w->_set_edit_state( $state ); - } -} - -sub _max { - my $max = shift; - foreach my $val (@_) { - $max = $val if $max < $val; - } - return( $max ); -} - -sub shrinkwrap { - my( $w, $size ) = @_; - - unless( defined $size ) { - $size = _max( map( length, $w->get( qw/0 end/ ) ) ) || 0;; - } - - my $lb = $w->Subwidget( 'slistbox' )->Subwidget( 'listbox' ); - $w->configure( -width => $size ); - $lb->configure( -width => $size ); -} - -sub limitheight { - my $w = shift; - my $choices_number = shift || $w->Subwidget('slistbox')->index("end"); - $choices_number = 10 if $choices_number > 10; - $w->configure(-listheight => $choices_number) if ($choices_number > 0); -} - -sub insert { - my $w = shift; - $w->Subwidget("slistbox")->insert(@_); - if ($w->cget(-autolimitheight)) { - $w->limitheight; - } - if ($w->cget(-autolistwidth)) { - $w->updateListWidth(@_[1..$#_]); - } -} - -sub delete { - my $w = shift; - $w->Subwidget("slistbox")->delete(@_); - if ($w->cget(-autolimitheight)) { - $w->limitheight; - } - if ($w->cget(-autolistwidth)) { - $w->updateListWidth(); - } -} - -sub updateListWidth { - my $w = shift; - my @ins = @_; - if (!@ins) { - @ins = $w->get(0, "end"); - } - - my $max_width = 0; - foreach my $ins (@ins) { - my $new_width = $w->fontMeasure($w->cget(-font), $ins); - if ($new_width > $max_width) { - $max_width = $new_width; - } - } - if ($max_width > 20) { # be sane - $w->configure(-listwidth => $max_width + 32); # XXX for scrollbar - } -} - -1; - -__END__ - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Button.pm b/Master/tlpkg/tlperl.old/lib/Tk/Button.pm deleted file mode 100644 index efa597dee14..00000000000 --- a/Master/tlpkg/tlperl.old/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-2003 Nick Ing-Simmons. All rights reserved. -# This program is free software; you can redistribute it and/or - -use vars qw($VERSION); -$VERSION = '4.008'; # $Id: //depot/Tkutf8/Tk/Button.pm#8 $ - -# 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/tlpkg/tlperl.old/lib/Tk/Camel.xpm b/Master/tlpkg/tlperl.old/lib/Tk/Camel.xpm deleted file mode 100644 index ba33c0149ec..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/Canvas.pm b/Master/tlpkg/tlperl.old/lib/Tk/Canvas.pm deleted file mode 100644 index 210bc30bfc2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Canvas.pm +++ /dev/null @@ -1,1436 +0,0 @@ -package Tk::Canvas; -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #12 $ =~ /\D(\d+)\s*$/; - -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; - } -} - -sub get_corners -{ - my $c = shift; - my(@xview) = $c->xview; - my(@yview) = $c->yview; - my(@scrollregion) = @{$c->cget(-scrollregion)}; - return ( - $xview[0] * ($scrollregion[2]-$scrollregion[0]) + $scrollregion[0], - $yview[0] * ($scrollregion[3]-$scrollregion[1]) + $scrollregion[1], - $xview[1] * ($scrollregion[2]-$scrollregion[0]) + $scrollregion[0], - $yview[1] * ($scrollregion[3]-$scrollregion[1]) + $scrollregion[1], - ); -} - -# List of adobe glyph names. Converted from glyphlist.txt, downloaded -# from Adobe - -$Tk::psglyphs = {qw( - 0020 space - 0021 exclam - 0022 quotedbl - 0023 numbersign - 0024 dollar - 0025 percent - 0026 ampersand - 0027 quotesingle - 0028 parenleft - 0029 parenright - 002A asterisk - 002B plus - 002C comma - 002D hyphen - 002E period - 002F slash - 0030 zero - 0031 one - 0032 two - 0033 three - 0034 four - 0035 five - 0036 six - 0037 seven - 0038 eight - 0039 nine - 003A colon - 003B semicolon - 003C less - 003D equal - 003E greater - 003F question - 0040 at - 0041 A - 0042 B - 0043 C - 0044 D - 0045 E - 0046 F - 0047 G - 0048 H - 0049 I - 004A J - 004B K - 004C L - 004D M - 004E N - 004F O - 0050 P - 0051 Q - 0052 R - 0053 S - 0054 T - 0055 U - 0056 V - 0057 W - 0058 X - 0059 Y - 005A Z - 005B bracketleft - 005C backslash - 005D bracketright - 005E asciicircum - 005F underscore - 0060 grave - 0061 a - 0062 b - 0063 c - 0064 d - 0065 e - 0066 f - 0067 g - 0068 h - 0069 i - 006A j - 006B k - 006C l - 006D m - 006E n - 006F o - 0070 p - 0071 q - 0072 r - 0073 s - 0074 t - 0075 u - 0076 v - 0077 w - 0078 x - 0079 y - 007A z - 007B braceleft - 007C bar - 007D braceright - 007E asciitilde - 00A0 space - 00A1 exclamdown - 00A2 cent - 00A3 sterling - 00A4 currency - 00A5 yen - 00A6 brokenbar - 00A7 section - 00A8 dieresis - 00A9 copyright - 00AA ordfeminine - 00AB guillemotleft - 00AC logicalnot - 00AD hyphen - 00AE registered - 00AF macron - 00B0 degree - 00B1 plusminus - 00B2 twosuperior - 00B3 threesuperior - 00B4 acute - 00B5 mu - 00B6 paragraph - 00B7 periodcentered - 00B8 cedilla - 00B9 onesuperior - 00BA ordmasculine - 00BB guillemotright - 00BC onequarter - 00BD onehalf - 00BE threequarters - 00BF questiondown - 00C0 Agrave - 00C1 Aacute - 00C2 Acircumflex - 00C3 Atilde - 00C4 Adieresis - 00C5 Aring - 00C6 AE - 00C7 Ccedilla - 00C8 Egrave - 00C9 Eacute - 00CA Ecircumflex - 00CB Edieresis - 00CC Igrave - 00CD Iacute - 00CE Icircumflex - 00CF Idieresis - 00D0 Eth - 00D1 Ntilde - 00D2 Ograve - 00D3 Oacute - 00D4 Ocircumflex - 00D5 Otilde - 00D6 Odieresis - 00D7 multiply - 00D8 Oslash - 00D9 Ugrave - 00DA Uacute - 00DB Ucircumflex - 00DC Udieresis - 00DD Yacute - 00DE Thorn - 00DF germandbls - 00E0 agrave - 00E1 aacute - 00E2 acircumflex - 00E3 atilde - 00E4 adieresis - 00E5 aring - 00E6 ae - 00E7 ccedilla - 00E8 egrave - 00E9 eacute - 00EA ecircumflex - 00EB edieresis - 00EC igrave - 00ED iacute - 00EE icircumflex - 00EF idieresis - 00F0 eth - 00F1 ntilde - 00F2 ograve - 00F3 oacute - 00F4 ocircumflex - 00F5 otilde - 00F6 odieresis - 00F7 divide - 00F8 oslash - 00F9 ugrave - 00FA uacute - 00FB ucircumflex - 00FC udieresis - 00FD yacute - 00FE thorn - 00FF ydieresis - 0100 Amacron - 0101 amacron - 0102 Abreve - 0103 abreve - 0104 Aogonek - 0105 aogonek - 0106 Cacute - 0107 cacute - 0108 Ccircumflex - 0109 ccircumflex - 010A Cdotaccent - 010B cdotaccent - 010C Ccaron - 010D ccaron - 010E Dcaron - 010F dcaron - 0110 Dcroat - 0111 dcroat - 0112 Emacron - 0113 emacron - 0114 Ebreve - 0115 ebreve - 0116 Edotaccent - 0117 edotaccent - 0118 Eogonek - 0119 eogonek - 011A Ecaron - 011B ecaron - 011C Gcircumflex - 011D gcircumflex - 011E Gbreve - 011F gbreve - 0120 Gdotaccent - 0121 gdotaccent - 0122 Gcommaaccent - 0123 gcommaaccent - 0124 Hcircumflex - 0125 hcircumflex - 0126 Hbar - 0127 hbar - 0128 Itilde - 0129 itilde - 012A Imacron - 012B imacron - 012C Ibreve - 012D ibreve - 012E Iogonek - 012F iogonek - 0130 Idotaccent - 0131 dotlessi - 0132 IJ - 0133 ij - 0134 Jcircumflex - 0135 jcircumflex - 0136 Kcommaaccent - 0137 kcommaaccent - 0138 kgreenlandic - 0139 Lacute - 013A lacute - 013B Lcommaaccent - 013C lcommaaccent - 013D Lcaron - 013E lcaron - 013F Ldot - 0140 ldot - 0141 Lslash - 0142 lslash - 0143 Nacute - 0144 nacute - 0145 Ncommaaccent - 0146 ncommaaccent - 0147 Ncaron - 0148 ncaron - 0149 napostrophe - 014A Eng - 014B eng - 014C Omacron - 014D omacron - 014E Obreve - 014F obreve - 0150 Ohungarumlaut - 0151 ohungarumlaut - 0152 OE - 0153 oe - 0154 Racute - 0155 racute - 0156 Rcommaaccent - 0157 rcommaaccent - 0158 Rcaron - 0159 rcaron - 015A Sacute - 015B sacute - 015C Scircumflex - 015D scircumflex - 015E Scedilla - 015F scedilla - 0160 Scaron - 0161 scaron - 0162 Tcommaaccent - 0163 tcommaaccent - 0164 Tcaron - 0165 tcaron - 0166 Tbar - 0167 tbar - 0168 Utilde - 0169 utilde - 016A Umacron - 016B umacron - 016C Ubreve - 016D ubreve - 016E Uring - 016F uring - 0170 Uhungarumlaut - 0171 uhungarumlaut - 0172 Uogonek - 0173 uogonek - 0174 Wcircumflex - 0175 wcircumflex - 0176 Ycircumflex - 0177 ycircumflex - 0178 Ydieresis - 0179 Zacute - 017A zacute - 017B Zdotaccent - 017C zdotaccent - 017D Zcaron - 017E zcaron - 017F longs - 0192 florin - 01A0 Ohorn - 01A1 ohorn - 01AF Uhorn - 01B0 uhorn - 01E6 Gcaron - 01E7 gcaron - 01FA Aringacute - 01FB aringacute - 01FC AEacute - 01FD aeacute - 01FE Oslashacute - 01FF oslashacute - 0218 Scommaaccent - 0219 scommaaccent - 021A Tcommaaccent - 021B tcommaaccent - 02BC afii57929 - 02BD afii64937 - 02C6 circumflex - 02C7 caron - 02C9 macron - 02D8 breve - 02D9 dotaccent - 02DA ring - 02DB ogonek - 02DC tilde - 02DD hungarumlaut - 0300 gravecomb - 0301 acutecomb - 0303 tildecomb - 0309 hookabovecomb - 0323 dotbelowcomb - 0384 tonos - 0385 dieresistonos - 0386 Alphatonos - 0387 anoteleia - 0388 Epsilontonos - 0389 Etatonos - 038A Iotatonos - 038C Omicrontonos - 038E Upsilontonos - 038F Omegatonos - 0390 iotadieresistonos - 0391 Alpha - 0392 Beta - 0393 Gamma - 0394 Delta - 0395 Epsilon - 0396 Zeta - 0397 Eta - 0398 Theta - 0399 Iota - 039A Kappa - 039B Lambda - 039C Mu - 039D Nu - 039E Xi - 039F Omicron - 03A0 Pi - 03A1 Rho - 03A3 Sigma - 03A4 Tau - 03A5 Upsilon - 03A6 Phi - 03A7 Chi - 03A8 Psi - 03A9 Omega - 03AA Iotadieresis - 03AB Upsilondieresis - 03AC alphatonos - 03AD epsilontonos - 03AE etatonos - 03AF iotatonos - 03B0 upsilondieresistonos - 03B1 alpha - 03B2 beta - 03B3 gamma - 03B4 delta - 03B5 epsilon - 03B6 zeta - 03B7 eta - 03B8 theta - 03B9 iota - 03BA kappa - 03BB lambda - 03BC mu - 03BD nu - 03BE xi - 03BF omicron - 03C0 pi - 03C1 rho - 03C2 sigma1 - 03C3 sigma - 03C4 tau - 03C5 upsilon - 03C6 phi - 03C7 chi - 03C8 psi - 03C9 omega - 03CA iotadieresis - 03CB upsilondieresis - 03CC omicrontonos - 03CD upsilontonos - 03CE omegatonos - 03D1 theta1 - 03D2 Upsilon1 - 03D5 phi1 - 03D6 omega1 - 0401 afii10023 - 0402 afii10051 - 0403 afii10052 - 0404 afii10053 - 0405 afii10054 - 0406 afii10055 - 0407 afii10056 - 0408 afii10057 - 0409 afii10058 - 040A afii10059 - 040B afii10060 - 040C afii10061 - 040E afii10062 - 040F afii10145 - 0410 afii10017 - 0411 afii10018 - 0412 afii10019 - 0413 afii10020 - 0414 afii10021 - 0415 afii10022 - 0416 afii10024 - 0417 afii10025 - 0418 afii10026 - 0419 afii10027 - 041A afii10028 - 041B afii10029 - 041C afii10030 - 041D afii10031 - 041E afii10032 - 041F afii10033 - 0420 afii10034 - 0421 afii10035 - 0422 afii10036 - 0423 afii10037 - 0424 afii10038 - 0425 afii10039 - 0426 afii10040 - 0427 afii10041 - 0428 afii10042 - 0429 afii10043 - 042A afii10044 - 042B afii10045 - 042C afii10046 - 042D afii10047 - 042E afii10048 - 042F afii10049 - 0430 afii10065 - 0431 afii10066 - 0432 afii10067 - 0433 afii10068 - 0434 afii10069 - 0435 afii10070 - 0436 afii10072 - 0437 afii10073 - 0438 afii10074 - 0439 afii10075 - 043A afii10076 - 043B afii10077 - 043C afii10078 - 043D afii10079 - 043E afii10080 - 043F afii10081 - 0440 afii10082 - 0441 afii10083 - 0442 afii10084 - 0443 afii10085 - 0444 afii10086 - 0445 afii10087 - 0446 afii10088 - 0447 afii10089 - 0448 afii10090 - 0449 afii10091 - 044A afii10092 - 044B afii10093 - 044C afii10094 - 044D afii10095 - 044E afii10096 - 044F afii10097 - 0451 afii10071 - 0452 afii10099 - 0453 afii10100 - 0454 afii10101 - 0455 afii10102 - 0456 afii10103 - 0457 afii10104 - 0458 afii10105 - 0459 afii10106 - 045A afii10107 - 045B afii10108 - 045C afii10109 - 045E afii10110 - 045F afii10193 - 0462 afii10146 - 0463 afii10194 - 0472 afii10147 - 0473 afii10195 - 0474 afii10148 - 0475 afii10196 - 0490 afii10050 - 0491 afii10098 - 04D9 afii10846 - 05B0 afii57799 - 05B1 afii57801 - 05B2 afii57800 - 05B3 afii57802 - 05B4 afii57793 - 05B5 afii57794 - 05B6 afii57795 - 05B7 afii57798 - 05B8 afii57797 - 05B9 afii57806 - 05BB afii57796 - 05BC afii57807 - 05BD afii57839 - 05BE afii57645 - 05BF afii57841 - 05C0 afii57842 - 05C1 afii57804 - 05C2 afii57803 - 05C3 afii57658 - 05D0 afii57664 - 05D1 afii57665 - 05D2 afii57666 - 05D3 afii57667 - 05D4 afii57668 - 05D5 afii57669 - 05D6 afii57670 - 05D7 afii57671 - 05D8 afii57672 - 05D9 afii57673 - 05DA afii57674 - 05DB afii57675 - 05DC afii57676 - 05DD afii57677 - 05DE afii57678 - 05DF afii57679 - 05E0 afii57680 - 05E1 afii57681 - 05E2 afii57682 - 05E3 afii57683 - 05E4 afii57684 - 05E5 afii57685 - 05E6 afii57686 - 05E7 afii57687 - 05E8 afii57688 - 05E9 afii57689 - 05EA afii57690 - 05F0 afii57716 - 05F1 afii57717 - 05F2 afii57718 - 060C afii57388 - 061B afii57403 - 061F afii57407 - 0621 afii57409 - 0622 afii57410 - 0623 afii57411 - 0624 afii57412 - 0625 afii57413 - 0626 afii57414 - 0627 afii57415 - 0628 afii57416 - 0629 afii57417 - 062A afii57418 - 062B afii57419 - 062C afii57420 - 062D afii57421 - 062E afii57422 - 062F afii57423 - 0630 afii57424 - 0631 afii57425 - 0632 afii57426 - 0633 afii57427 - 0634 afii57428 - 0635 afii57429 - 0636 afii57430 - 0637 afii57431 - 0638 afii57432 - 0639 afii57433 - 063A afii57434 - 0640 afii57440 - 0641 afii57441 - 0642 afii57442 - 0643 afii57443 - 0644 afii57444 - 0645 afii57445 - 0646 afii57446 - 0647 afii57470 - 0648 afii57448 - 0649 afii57449 - 064A afii57450 - 064B afii57451 - 064C afii57452 - 064D afii57453 - 064E afii57454 - 064F afii57455 - 0650 afii57456 - 0651 afii57457 - 0652 afii57458 - 0660 afii57392 - 0661 afii57393 - 0662 afii57394 - 0663 afii57395 - 0664 afii57396 - 0665 afii57397 - 0666 afii57398 - 0667 afii57399 - 0668 afii57400 - 0669 afii57401 - 066A afii57381 - 066D afii63167 - 0679 afii57511 - 067E afii57506 - 0686 afii57507 - 0688 afii57512 - 0691 afii57513 - 0698 afii57508 - 06A4 afii57505 - 06AF afii57509 - 06BA afii57514 - 06D2 afii57519 - 06D5 afii57534 - 1E80 Wgrave - 1E81 wgrave - 1E82 Wacute - 1E83 wacute - 1E84 Wdieresis - 1E85 wdieresis - 1EF2 Ygrave - 1EF3 ygrave - 200C afii61664 - 200D afii301 - 200E afii299 - 200F afii300 - 2012 figuredash - 2013 endash - 2014 emdash - 2015 afii00208 - 2017 underscoredbl - 2018 quoteleft - 2019 quoteright - 201A quotesinglbase - 201B quotereversed - 201C quotedblleft - 201D quotedblright - 201E quotedblbase - 2020 dagger - 2021 daggerdbl - 2022 bullet - 2024 onedotenleader - 2025 twodotenleader - 2026 ellipsis - 202C afii61573 - 202D afii61574 - 202E afii61575 - 2030 perthousand - 2032 minute - 2033 second - 2039 guilsinglleft - 203A guilsinglright - 203C exclamdbl - 2044 fraction - 2070 zerosuperior - 2074 foursuperior - 2075 fivesuperior - 2076 sixsuperior - 2077 sevensuperior - 2078 eightsuperior - 2079 ninesuperior - 207D parenleftsuperior - 207E parenrightsuperior - 207F nsuperior - 2080 zeroinferior - 2081 oneinferior - 2082 twoinferior - 2083 threeinferior - 2084 fourinferior - 2085 fiveinferior - 2086 sixinferior - 2087 seveninferior - 2088 eightinferior - 2089 nineinferior - 208D parenleftinferior - 208E parenrightinferior - 20A1 colonmonetary - 20A3 franc - 20A4 lira - 20A7 peseta - 20AA afii57636 - 20AB dong - 20AC Euro - 2105 afii61248 - 2111 Ifraktur - 2113 afii61289 - 2116 afii61352 - 2118 weierstrass - 211C Rfraktur - 211E prescription - 2122 trademark - 2126 Omega - 212E estimated - 2135 aleph - 2153 onethird - 2154 twothirds - 215B oneeighth - 215C threeeighths - 215D fiveeighths - 215E seveneighths - 2190 arrowleft - 2191 arrowup - 2192 arrowright - 2193 arrowdown - 2194 arrowboth - 2195 arrowupdn - 21A8 arrowupdnbse - 21B5 carriagereturn - 21D0 arrowdblleft - 21D1 arrowdblup - 21D2 arrowdblright - 21D3 arrowdbldown - 21D4 arrowdblboth - 2200 universal - 2202 partialdiff - 2203 existential - 2205 emptyset - 2206 Delta - 2207 gradient - 2208 element - 2209 notelement - 220B suchthat - 220F product - 2211 summation - 2212 minus - 2215 fraction - 2217 asteriskmath - 2219 periodcentered - 221A radical - 221D proportional - 221E infinity - 221F orthogonal - 2220 angle - 2227 logicaland - 2228 logicalor - 2229 intersection - 222A union - 222B integral - 2234 therefore - 223C similar - 2245 congruent - 2248 approxequal - 2260 notequal - 2261 equivalence - 2264 lessequal - 2265 greaterequal - 2282 propersubset - 2283 propersuperset - 2284 notsubset - 2286 reflexsubset - 2287 reflexsuperset - 2295 circleplus - 2297 circlemultiply - 22A5 perpendicular - 22C5 dotmath - 2302 house - 2310 revlogicalnot - 2320 integraltp - 2321 integralbt - 2329 angleleft - 232A angleright - 2500 SF100000 - 2502 SF110000 - 250C SF010000 - 2510 SF030000 - 2514 SF020000 - 2518 SF040000 - 251C SF080000 - 2524 SF090000 - 252C SF060000 - 2534 SF070000 - 253C SF050000 - 2550 SF430000 - 2551 SF240000 - 2552 SF510000 - 2553 SF520000 - 2554 SF390000 - 2555 SF220000 - 2556 SF210000 - 2557 SF250000 - 2558 SF500000 - 2559 SF490000 - 255A SF380000 - 255B SF280000 - 255C SF270000 - 255D SF260000 - 255E SF360000 - 255F SF370000 - 2560 SF420000 - 2561 SF190000 - 2562 SF200000 - 2563 SF230000 - 2564 SF470000 - 2565 SF480000 - 2566 SF410000 - 2567 SF450000 - 2568 SF460000 - 2569 SF400000 - 256A SF540000 - 256B SF530000 - 256C SF440000 - 2580 upblock - 2584 dnblock - 2588 block - 258C lfblock - 2590 rtblock - 2591 ltshade - 2592 shade - 2593 dkshade - 25A0 filledbox - 25A1 H22073 - 25AA H18543 - 25AB H18551 - 25AC filledrect - 25B2 triagup - 25BA triagrt - 25BC triagdn - 25C4 triaglf - 25CA lozenge - 25CB circle - 25CF H18533 - 25D8 invbullet - 25D9 invcircle - 25E6 openbullet - 263A smileface - 263B invsmileface - 263C sun - 2640 female - 2642 male - 2660 spade - 2663 club - 2665 heart - 2666 diamond - 266A musicalnote - 266B musicalnotedbl - F6BE dotlessj - F6BF LL - F6C0 ll - F6C1 Scedilla - F6C2 scedilla - F6C3 commaaccent - F6C4 afii10063 - F6C5 afii10064 - F6C6 afii10192 - F6C7 afii10831 - F6C8 afii10832 - F6C9 Acute - F6CA Caron - F6CB Dieresis - F6CC DieresisAcute - F6CD DieresisGrave - F6CE Grave - F6CF Hungarumlaut - F6D0 Macron - F6D1 cyrBreve - F6D2 cyrFlex - F6D3 dblGrave - F6D4 cyrbreve - F6D5 cyrflex - F6D6 dblgrave - F6D7 dieresisacute - F6D8 dieresisgrave - F6D9 copyrightserif - F6DA registerserif - F6DB trademarkserif - F6DC onefitted - F6DD rupiah - F6DE threequartersemdash - F6DF centinferior - F6E0 centsuperior - F6E1 commainferior - F6E2 commasuperior - F6E3 dollarinferior - F6E4 dollarsuperior - F6E5 hypheninferior - F6E6 hyphensuperior - F6E7 periodinferior - F6E8 periodsuperior - F6E9 asuperior - F6EA bsuperior - F6EB dsuperior - F6EC esuperior - F6ED isuperior - F6EE lsuperior - F6EF msuperior - F6F0 osuperior - F6F1 rsuperior - F6F2 ssuperior - F6F3 tsuperior - F6F4 Brevesmall - F6F5 Caronsmall - F6F6 Circumflexsmall - F6F7 Dotaccentsmall - F6F8 Hungarumlautsmall - F6F9 Lslashsmall - F6FA OEsmall - F6FB Ogoneksmall - F6FC Ringsmall - F6FD Scaronsmall - F6FE Tildesmall - F6FF Zcaronsmall - F721 exclamsmall - F724 dollaroldstyle - F726 ampersandsmall - F730 zerooldstyle - F731 oneoldstyle - F732 twooldstyle - F733 threeoldstyle - F734 fouroldstyle - F735 fiveoldstyle - F736 sixoldstyle - F737 sevenoldstyle - F738 eightoldstyle - F739 nineoldstyle - F73F questionsmall - F760 Gravesmall - F761 Asmall - F762 Bsmall - F763 Csmall - F764 Dsmall - F765 Esmall - F766 Fsmall - F767 Gsmall - F768 Hsmall - F769 Ismall - F76A Jsmall - F76B Ksmall - F76C Lsmall - F76D Msmall - F76E Nsmall - F76F Osmall - F770 Psmall - F771 Qsmall - F772 Rsmall - F773 Ssmall - F774 Tsmall - F775 Usmall - F776 Vsmall - F777 Wsmall - F778 Xsmall - F779 Ysmall - F77A Zsmall - F7A1 exclamdownsmall - F7A2 centoldstyle - F7A8 Dieresissmall - F7AF Macronsmall - F7B4 Acutesmall - F7B8 Cedillasmall - F7BF questiondownsmall - F7E0 Agravesmall - F7E1 Aacutesmall - F7E2 Acircumflexsmall - F7E3 Atildesmall - F7E4 Adieresissmall - F7E5 Aringsmall - F7E6 AEsmall - F7E7 Ccedillasmall - F7E8 Egravesmall - F7E9 Eacutesmall - F7EA Ecircumflexsmall - F7EB Edieresissmall - F7EC Igravesmall - F7ED Iacutesmall - F7EE Icircumflexsmall - F7EF Idieresissmall - F7F0 Ethsmall - F7F1 Ntildesmall - F7F2 Ogravesmall - F7F3 Oacutesmall - F7F4 Ocircumflexsmall - F7F5 Otildesmall - F7F6 Odieresissmall - F7F8 Oslashsmall - F7F9 Ugravesmall - F7FA Uacutesmall - F7FB Ucircumflexsmall - F7FC Udieresissmall - F7FD Yacutesmall - F7FE Thornsmall - F7FF Ydieresissmall - F8E5 radicalex - F8E6 arrowvertex - F8E7 arrowhorizex - F8E8 registersans - F8E9 copyrightsans - F8EA trademarksans - F8EB parenlefttp - F8EC parenleftex - F8ED parenleftbt - F8EE bracketlefttp - F8EF bracketleftex - F8F0 bracketleftbt - F8F1 bracelefttp - F8F2 braceleftmid - F8F3 braceleftbt - F8F4 braceex - F8F5 integralex - F8F6 parenrighttp - F8F7 parenrightex - F8F8 parenrightbt - F8F9 bracketrighttp - F8FA bracketrightex - F8FB bracketrightbt - F8FC bracerighttp - F8FD bracerightmid - F8FE bracerightbt - FB00 ff - FB01 fi - FB02 fl - FB03 ffi - FB04 ffl - FB1F afii57705 - FB2A afii57694 - FB2B afii57695 - FB35 afii57723 - FB4B afii57700 -)}; - - -sub CreatePostscriptEncoding -{ - my ($encoding) = @_; - my $result = "/CurrentEncoding \[\n"; - for (my $i = 0; $i < 256; $i += 8) - { - for (my $j = 0; $j < 8; $j++) - { - my $ch; - Tk::catch { $ch = $encoding->decode(chr($i+$j),1) }; - if ($@) - { - $result .= '/space'; - } - else - { - my $hexcode = sprintf("%04X",ord($ch)); - $result .= '/'.((exists $Tk::psglyphs->{$hexcode}) ? $Tk::psglyphs->{$hexcode} : 'space'); - } - } - $result .= "\n"; - } - $result .= "\] def\n"; - return $result; -} - -# precalculate entire prolog when this file is loaded -# (to speed things up) -$Tk::ps_preamable = "%%BeginProlog\n". - CreatePostscriptEncoding(Tk::SystemEncoding()). <<'END'; -50 dict begin -% This is a standard prolog for Postscript generated by Tk's canvas -% widget. -% RCS: @(#) $Id: //depot/Tkutf8/Canvas/Canvas.pm#12 $ - -% 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 - - -/cstringshow { - { - dup type /stringtype eq - { show } { glyphshow } - ifelse - } - forall -} bind def - - - -/cstringwidth { - 0 exch 0 exch - { - dup type /stringtype eq - { stringwidth } { - currentfont /Encoding get exch 1 exch put (\001) stringwidth - } - ifelse - exch 3 1 roll add 3 1 roll add exch - } - forall -} bind def - -% font ISOEncode font -% This procedure changes the encoding of a font from the default -% Postscript encoding to current system encoding. 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 CurrentEncoding 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 { - cstringwidth 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 cstringwidth 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 - { - dup type /stringtype eq { - % This segment is a string. - { - char 0 3 -1 roll put - currentpoint - gsave - char true charpath clip StippleText - grestore - char stringwidth translate - moveto - } forall - } { - % This segment is glyph name - % Temporary override - currentfont /Encoding get exch 1 exch put - currentpoint - gsave (\001) true charpath clip StippleText - grestore - (\001) stringwidth translate - moveto - } ifelse - } forall - grestore - } {cstringshow} ifelse - 0 spacing neg translate - } forall -} bind def - -%%EndProlog -END - -1; -__END__ - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Checkbutton.pm b/Master/tlpkg/tlperl.old/lib/Tk/Checkbutton.pm deleted file mode 100644 index 491d8cd2444..00000000000 --- a/Master/tlpkg/tlperl.old/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-2003 Nick Ing-Simmons. All rights reserved. -# This program is free software; you can redistribute it and/or - - -use vars qw($VERSION); -$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Checkbutton.pm#6 $ - -# 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/tlpkg/tlperl.old/lib/Tk/Clipboard.pm b/Master/tlpkg/tlperl.old/lib/Tk/Clipboard.pm deleted file mode 100644 index b0eb0ea2b07..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Clipboard.pm +++ /dev/null @@ -1,122 +0,0 @@ -# Copyright (c) 1995-2003 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 = sprintf '4.%03d', q$Revision: #8 $ =~ /\D(\d+)\s*$/; - -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 - { -## Different from Tcl/Tk version: -# if ($w->windowingsystem eq 'x11') -# { -# catch -# { -# $w->deleteSelected; -# }; -# } - $w->insert("insert", $w->clipboardGet); - $w->SeeInsert if $w->can('SeeInsert'); - }; -} - -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/tlpkg/tlperl.old/lib/Tk/CmdLine.pm b/Master/tlpkg/tlperl.old/lib/Tk/CmdLine.pm deleted file mode 100644 index 2e821e826ae..00000000000 --- a/Master/tlpkg/tlperl.old/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 = '4.006'; # $Id: //depot/Tkutf8/Tk/CmdLine.pm#6 $ - -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/tlpkg/tlperl.old/lib/Tk/ColorEdit.xpm b/Master/tlpkg/tlperl.old/lib/Tk/ColorEdit.xpm deleted file mode 100644 index ef3474cd869..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/ColorEditor.pm b/Master/tlpkg/tlperl.old/lib/Tk/ColorEditor.pm deleted file mode 100644 index e84b0077410..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/ColorEditor.pm +++ /dev/null @@ -1,761 +0,0 @@ -package Tk::ColorSelect; -use strict; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #8 $ =~ /\D(\d+)\s*$/; - -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))); - } - $hue += 1 if $hue < 0; - 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 = sprintf '4.%03d', q$Revision: #8 $ =~ /\D(\d+)\s*$/; - -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->{'done'} = 1; - }, $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, @args) = @_; - - Tk::ColorDialog::Show(@_); - -} # 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/tlpkg/tlperl.old/lib/Tk/Compound.pm b/Master/tlpkg/tlperl.old/lib/Tk/Compound.pm deleted file mode 100644 index 9f1ccd64487..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Compound.pm +++ /dev/null @@ -1,40 +0,0 @@ -package Tk::Compound; -require Tk; -import Tk qw($XS_VERSION); -require Tk::Image; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Compound/Compound.pm#4 $ - -use base qw(Tk::Image); - -Construct Tk::Image 'Compound'; - -bootstrap Tk::Compound; - -sub Tk_image { 'compound' } - -Tk::Methods('add'); - -sub new -{ - my $package = shift; - my $widget = shift; - my $leaf = $package->Tk_image; - $package->InitClass($widget); - my $obj = $widget->image(create => $leaf,@_,-window => $widget); - return bless($obj,$package); -} - -BEGIN - { - foreach my $type (qw(line text image bitmap space)) - { - my $meth = ucfirst($type); - no strict qw 'refs'; - *{$meth} = sub { shift->add($type,@_) }; - } - } - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Config.pm b/Master/tlpkg/tlperl.old/lib/Tk/Config.pm deleted file mode 100644 index 8346d9ede9a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Config.pm +++ /dev/null @@ -1,12 +0,0 @@ -package Tk::Config; -require Exporter; -use base qw(Exporter); -$VERSION = '804.027'; -$inc = '-I$(TKDIR)/pTk/mTk/xlib'; -$define = ''; -$xlib = ''; -$xinc = ''; -$gccopt = ' -Wall -Wno-implicit-int -Wno-comment -Wno-unused -D__USE_FIXED_PROTOTYPES__'; -$win_arch = 'MSWin32'; -@EXPORT = qw($VERSION $inc $define $xlib $xinc $gccopt $win_arch); -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Configure.pm b/Master/tlpkg/tlperl.old/lib/Tk/Configure.pm deleted file mode 100644 index 26252ae4958..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Configure.pm +++ /dev/null @@ -1,69 +0,0 @@ -package Tk::Configure; -use vars qw($VERSION); -$VERSION = '4.008'; # $Id: //depot/Tkutf8/Tk/Configure.pm#8 $ - -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/tlpkg/tlperl.old/lib/Tk/Credits b/Master/tlpkg/tlperl.old/lib/Tk/Credits deleted file mode 100644 index 3ea9be43b7d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Credits +++ /dev/null @@ -1,7 +0,0 @@ -The two Camel/X 'logo' GIFs were produced by : - -Grafix, Sussex, UK, +44-1293-886725 - -For a very reasonable fee. We have rights to distribute them. - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Derived.pm b/Master/tlpkg/tlperl.old/lib/Tk/Derived.pm deleted file mode 100644 index c31c205d2fb..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Derived.pm +++ /dev/null @@ -1,512 +0,0 @@ -# Copyright (c) 1995-2003 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 = sprintf '4.%03d', q$Revision: #10 $ =~ /\D(\d+)\s*$/; - -$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'})) - { - Tk::catch { $cw->Tk::cget('-background') }; - my (@bg) = $@ ? ('PASSIVE') : ('SELF'); - push(@bg,'CHILDREN') if $child; - $specs->{'-background'} = [\@bg,'background','Background',NORMAL_BG]; - } - unless (exists($specs->{'-foreground'})) - { - Tk::catch { $cw->Tk::cget('-foreground') }; - my (@fg) = $@ ? ('PASSIVE') : ('SELF'); - push(@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/tlpkg/tlperl.old/lib/Tk/Dialog.pm b/Master/tlpkg/tlperl.old/lib/Tk/Dialog.pm deleted file mode 100644 index 8173f4a5acc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Dialog.pm +++ /dev/null @@ -1,70 +0,0 @@ -package Tk::Dialog; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Dialog.pm#4 $ - -# 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/tlpkg/tlperl.old/lib/Tk/DialogBox.pm b/Master/tlpkg/tlperl.old/lib/Tk/DialogBox.pm deleted file mode 100644 index 13335404e15..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DialogBox.pm +++ /dev/null @@ -1,135 +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 = sprintf '4.%03d', q$Revision: #13 $ =~ /\D(\d+)\s*$/; - -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; - if (@$buttons == 1) { - $cw->protocol('WM_DELETE_WINDOW' => sub { $cw->{'default_button'}->invoke }); - } else { - $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" } ); - $b->bind('<Return>' => [ $b, 'Invoke']); - $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->{'default_button'} = $b; - $cw->bind('<Return>' => [ $b, 'Invoke']); - } 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], - -focus => ['PASSIVE', undef, undef, undef], - -showcommand => ['CALLBACK', undef, undef, 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->Callback(-showcommand => $cw); - $cw->waitVariable(\$cw->{'selected_button'}); - $cw->grabRelease; - $cw->withdraw; - $cw->Callback(-command => $cw->{'selected_button'}); -} - -sub Show { - - croak 'DialogBox: "Show" method requires at least 1 argument' - if scalar @_ < 1; - my $cw = shift; - my ($grab) = @_; - my $old_focus = $cw->focusSave; - my $old_grab = $cw->grabSave; - - shift if defined $grab && length $grab && ($grab =~ /global/); - $cw->Popup(@_); - - Tk::catch { - if (defined $grab && length $grab && ($grab =~ /global/)) { - $cw->grabGlobal; - } else { - $cw->grab; - } - }; - if (my $focusw = $cw->cget(-focus)) { - $focusw->focus; - } elsif (defined $cw->{'default_button'}) { - $cw->{'default_button'}->focus; - } else { - $cw->focus; - } - $cw->Wait; - &$old_focus; - &$old_grab; - return $cw->{'selected_button'}; -} - -sub Exit -{ - my $cw = shift; - #kill the dialogbox, by faking a 'DONE' - $cw->{'selected_button'} = $cw->{'default_button'}->cget(-text); -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DirTree.pm b/Master/tlpkg/tlperl.old/lib/Tk/DirTree.pm deleted file mode 100644 index b2d996a94d0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DirTree.pm +++ /dev/null @@ -1,252 +0,0 @@ -package Tk::DirTree; -# DirTree -- TixDirTree widget -# -# Derived from DirTree.tcl in Tix 4.1 -# -# Chris Dean <ctdean@cogit.com> - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #14 $ =~ /\D(\d+)\s*$/; - -use Tk; -use Tk::Derived; -use Tk::Tree; -use Cwd; -use DirHandle; - -use base qw(Tk::Derived Tk::Tree); -use strict; - -Construct Tk::Widget 'DirTree'; - - -sub Populate { - my( $cw, $args ) = @_; - - $cw->SUPER::Populate( $args ); - - $cw->ConfigSpecs( - -dircmd => [qw/CALLBACK dirCmd DirCmd DirCmd/], - -showhidden => [qw/PASSIVE showHidden ShowHidden 0/], - -image => [qw/PASSIVE image Image folder/], - -directory => [qw/SETMETHOD directory Directory ./], - -value => '-directory' ); - - $cw->configure( -separator => '/', -itemtype => 'imagetext' ); -} - -sub DirCmd { - my( $w, $dir, $showhidden ) = @_; - $dir .= "/" if $dir =~ /^[a-z]:$/i and $^O eq 'MSWin32'; - my $h = DirHandle->new( $dir ) or return(); - my @names = grep( $_ ne '.' && $_ ne '..', $h->read ); - @names = grep( ! /^[.]/, @names ) unless $showhidden; - return( @names ); -} - -*dircmd = \&DirCmd; - -sub fullpath -{ - my ($path) = @_; - my $cwd = getcwd(); - if (CORE::chdir($path)) - { - $path = getcwd(); - CORE::chdir($cwd) || die "Cannot cd back to $cwd:$!"; - } - else - { - warn "Cannot cd to $path:$!" - } - return $path; -} - -sub directory -{ - my ($w,$key,$val) = @_; - # We need a value for -image, so its being undefined - # is probably caused by order of handling config defaults - # so defer it. - $w->afterIdle([$w, 'set_dir' => $val]); -} - -sub set_dir { - my( $w, $val ) = @_; - my $fulldir = fullpath( $val ); - - my $parent = '/'; - if ($^O eq 'MSWin32') - { - if ($fulldir =~ s/^([a-z]:)//i) - { - $parent = $1; - } - } - $w->add_to_tree( $parent, $parent) unless $w->infoExists($parent); - - my @dirs = ($parent); - foreach my $name (split( /[\/\\]/, $fulldir )) { - next unless length $name; - push @dirs, $name; - my $dir = join( '/', @dirs ); - $dir =~ s|^//|/|; - $w->add_to_tree( $dir, $name, $parent ) - unless $w->infoExists( $dir ); - $parent = $dir; - } - - $w->OpenCmd( $parent ); - $w->setmode( $parent, 'close' ); -} -*chdir = \&set_dir; - - -sub OpenCmd { - my( $w, $dir ) = @_; - - my $parent = $dir; - $dir = '' if $dir eq '/'; - foreach my $name ($w->dirnames( $parent )) { - next if ($name eq '.' || $name eq '..'); - my $subdir = "$dir/$name"; - next unless -d $subdir; - if( $w->infoExists( $subdir ) ) { - $w->show( -entry => $subdir ); - } else { - $w->add_to_tree( $subdir, $name, $parent ); - } - } -} - -*opencmd = \&OpenCmd; - -sub add_to_tree { - my( $w, $dir, $name, $parent ) = @_; - - my $image = $w->cget('-image'); - if ( !UNIVERSAL::isa($image, 'Tk::Image') ) { - $image = $w->Getimage( $image ); - } - my $mode = 'none'; - $mode = 'open' if $w->has_subdir( $dir ); - - my @args = (-image => $image, -text => $name); - if( $parent ) { # Add in alphabetical order. - foreach my $sib ($w->infoChildren( $parent )) { - if( $sib gt $dir ) { - push @args, (-before => $sib); - last; - } - } - } - - $w->add( $dir, @args ); - $w->setmode( $dir, $mode ); -} - -sub has_subdir { - my( $w, $dir ) = @_; - foreach my $name ($w->dirnames( $dir )) { - next if ($name eq '.' || $name eq '..'); - next if ($name =~ /^\.+$/); - return( 1 ) if -d "$dir/$name"; - } - return( 0 ); -} - -sub dirnames { - my( $w, $dir ) = @_; - my @names = $w->Callback( '-dircmd', $dir, $w->cget( '-showhidden' ) ); - return( @names ); -} - -{ - package Tk::DirTreeDialog; - use base qw(Tk::Toplevel); - Construct Tk::Widget 'DirTreeDialog'; - - sub Populate { - my($w, $args) = @_; - $w->{curr_dir} = $args->{-initialdir}; - if (!defined $w->{curr_dir}) { - require Cwd; - $w->{curr_dir} = Cwd::cwd(); - } - if (defined $args->{-mustexist}) { - die "-mustexist is not yet implemented"; - } - my $title = $args->{-title} || "Choose directory:"; - delete $args->{-popover}; - - $w->title($title); - $w->{ok} = 0; # flag: "1" means OK, "-1" means cancelled - - # Create Frame widget before the DirTree widget, so it's always visible - # if the window gets resized. - my $f = $w->Frame->pack(-fill => "x", -side => "bottom"); - - my $d; - $d = $f->Scrolled('DirTree', - -scrollbars => 'osoe', - -width => 35, - -height => 20, - -selectmode => 'browse', - -exportselection => 1, - -browsecmd => sub { - $w->{curr_dir} = shift; - if ($^O ne 'MSWin32') { - $w->{curr_dir} =~ s|^//|/|; # bugfix - } - }, - - # With this version of -command a double-click will - # select the directory - -command => sub { $w->{ok} = 1 }, - - # With this version of -command a double-click will - # open a directory. Selection is only possible with - # the Ok button. - #-command => sub { $d->opencmd($_[0]) }, - )->pack(-fill => "both", -expand => 1); - # Set the initial directory - exists &Tk::DirTree::chdir ? $d->chdir($w->{curr_dir}) : $d->set_dir($w->{curr_dir}); - - $f->Button(-text => 'Ok', - -command => sub { $w->{ok} = 1 })->pack(-side => 'left'); - $f->Button(-text => 'Cancel', - -command => sub { $w->{ok} = -1 })->pack(-side => 'left'); - $w->OnDestroy(sub { $w->{ok} = -1 }); - } - - sub Show { - my $w = shift; - my $old_focus = $w->focusSave; - my $old_grab = $w->grabSave; - Tk::catch { - $w->grab; - }; - $w->waitVariable(\$w->{ok}); - my $ret = $w->{ok} == 1 ? $w->{curr_dir} : undef; - $w->grabRelease if Tk::Exists($w); - &$old_focus; - &$old_grab; - $w->destroy if Tk::Exists($w); - $ret; - } -} - -1; - -__END__ - -# Copyright (c) 1996, Expert Interface Technologies -# See the file "license.terms" for information on usage and redistribution -# of this file, and for a DISCLAIMER OF ALL WARRANTIES. -# -# The file man.macros and some of the macros used by this file are -# copyrighted: (c) 1990 The Regents of the University of California. -# (c) 1994-1995 Sun Microsystems, Inc. -# The license terms of the Tcl/Tk distrobution are in the file -# license.tcl. - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Dirlist.pm b/Master/tlpkg/tlperl.old/lib/Tk/Dirlist.pm deleted file mode 100644 index f16ce021f41..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Dirlist.pm +++ /dev/null @@ -1,113 +0,0 @@ -package Tk::Dirlist; -require Tk::Derived; -require Tk::HList; -require DirHandle; -use Cwd; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Dirlist.pm#5 $ - -use base qw(Tk::Derived Tk::HList); -use strict; -Construct Tk::Widget 'Dirlist'; - -sub getimage -{ - my ($w,$key) = @_; - unless (exists $w->{$key}) - { - $w->{$key} = $w->Pixmap(-id => $key); - unless ($w->{$key}) - { - $w->{$key} = $w->Bitmap($key); - } - } - return $w->{$key}; -} - - -sub Populate -{ - my ($cw,$args) = @_; - $cw->configure(-separator => '/', -itemtype => 'imagetext'); - $cw->ConfigSpecs(-directory => ['SETMETHOD','directory','Directory','.']); -} - -sub fullpath -{ - my ($path) = @_; - my $cwd = getcwd; - if (chdir($path)) - { - $path = getcwd; - chdir($cwd); - } - else - { - warn "Cannot cd to $path:$!" - } -# print "$path\n"; - return $path; -} - -sub AddDir -{ - my ($w,$dir) = @_; - my $path = ''; - my $prefix = ''; - my $first = 0; - my $name; - foreach $name (split m#/#,$dir) - { - $first++; - if ($name eq '') - { - next unless ($first == 1); - $path = '/'; - $name = '/'; - } - else - { - $path .= $prefix; - $path .= $name; - $prefix = '/'; - } - unless ($w->info('exists' => $path)) - { -# print "Add $path\n"; - $w->add($path,-image => $w->getimage('folder'), -text => $name); - } - } -} - -sub choose_image -{ - my ($w,$path) = @_; - return 'folder' if (-d $path); - return 'srcfile' if ($path =~ /\.[ch]$/); - return 'textfile' if (-T $path); - return 'file'; -} - - -sub directory -{ - my ($w,$key,$val) = @_; - my $h = DirHandle->new($val); - $w->AddDir($val = fullpath($val)); - my $f; - $w->entryconfigure($val,-image => $w->getimage('act_fold')); - foreach $f (sort $h->read) - { - next if ($f =~ /^\.+$/); - my $path = "$val/$f"; - unless ($w->info('exists' => $path)) - { - my $image = $w->getimage($w->choose_image($path)); - $w->add($path,-image => $image, -text => $f); - } - } - $h->close; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop.pm b/Master/tlpkg/tlperl.old/lib/Tk/DragDrop.pm deleted file mode 100644 index bdc54f74367..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop.pm +++ /dev/null @@ -1,332 +0,0 @@ -package Tk::DragDrop; -require Tk::DragDrop::Common; -require Tk::Toplevel; -require Tk::Label; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #14 $ =~ /\D(\d+)\s*$/; - -use base qw(Tk::DragDrop::Common Tk::Toplevel); - -# This is a little tricky, ISA says 'Toplevel' but we -# define a Tk_cmd to actually build a 'Label', then -# use wmRelease in Populate to make it a toplevel. - -my $useWmRelease = Tk::Wm->can('release'); # ($^O ne 'MSWin32'); - -sub Tk_cmd { ($useWmRelease) ? \&Tk::label : \&Tk::toplevel } - -Construct Tk::Widget 'DragDrop'; - -use strict; -use vars qw(%type @types); -use Carp; - - -# There is a snag with having a token window and moving to -# exactly where cursor is - the cursor is "inside" the token -# window - hence it is not "inside" the dropsite window -# so we offset X,Y by OFFSET pixels. -sub OFFSET () {3} - -sub ClassInit -{ - my ($class,$mw) = @_; - $mw->bind($class,'<Map>','Mapped'); - $mw->bind($class,'<Any-KeyPress>','Done'); - $mw->bind($class,'<Any-ButtonRelease>','Drop'); - $mw->bind($class,'<Any-Motion>','Drag'); - return $class; -} - -sub Populate -{ - my ($token,$args) = @_; - my $parent = $token->parent; - if ($useWmRelease) - { - $token->wmRelease; - $token->ConfigSpecs(-text => ['SELF','text','Text',$parent->class]); - } - else - { - my $lab = $token->Label->pack(-expand => 1, -fill => 'both'); - bless $lab,ref($token); - $lab->bindtags([ref($token), $lab, $token, 'all']); - $token->ConfigSpecs(-text => [$lab,'text','Text',$parent->class], - DEFAULT => [$lab]); - } - $token->withdraw; - $token->overrideredirect(1); - $token->ConfigSpecs(-sitetypes => ['METHOD','siteTypes','SiteTypes',undef], - -startcommand => ['CALLBACK',undef,undef,undef], - -endcommand => ['CALLBACK',undef,undef,undef], - -predropcommand => ['CALLBACK',undef,undef,undef], - -postdropcommand => ['CALLBACK',undef,undef,undef], - -delta => ['PASSIVE','delta','Delta',10], - -cursor => ['SELF','cursor','Cursor','hand2'], - -handlers => ['SETMETHOD','handlers','Handlers',[[[$token,'SendText']]]], - -selection => ['SETMETHOD','selection','Selection','XdndSelection'], - -event => ['SETMETHOD','event','Event','<B1-Motion>'] - ); - $token->{InstallHandlers} = 0; - $args->{-borderwidth} = 3; - $args->{-relief} = 'flat'; - $args->{-takefocus} = 1; -} - -sub sitetypes -{ - my ($w,$val) = @_; - confess "Not a widget $w" unless (ref $w); - my $var = \$w->{Configure}{'-sitetypes'}; - if (@_ > 1) - { - if (defined $val) - { - $val = [$val] unless (ref $val); - my $type; - foreach $type (@$val) - { - Tk::DragDrop->import($type); - } - } - $$var = $val; - } - return (defined $$var) ? $$var : \@types; -} - -sub SendText -{ - my ($w,$offset,$max) = @_; - my $s = substr($w->cget('-text'),$offset); - $s = substr($s,0,$max) if (length($s) > $max); - return $s; -} - -sub handlers -{ - my ($token,$opt,$value) = @_; - $token->{InstallHandlers} = (defined($value) && @$value); - $token->{'handlers'} = $value; -} - -sub selection -{ - my ($token,$opt,$value) = @_; - my $handlers = $token->{'handlers'}; - $token->{InstallHandlers} = (defined($handlers) && @$handlers); -} - -sub event -{ - my ($w,$opt,$value) = @_; - # delete old bindings - $w->parent->Tk::bind($value,[$w,'StartDrag']); -} - -# - -sub FindSite -{ - my ($token,$X,$Y,$e) = @_; - my $site; - my $types = $token->sitetypes; - if (defined $types && @$types) - { - foreach my $type (@$types) - { - my $class = $type{$type}; - last if (defined($class) && ($site = $class->FindSite($token,$X,$Y))); - } - } - else - { - warn 'No sitetypes'; - } - my $new = $site || 'undef'; - my $over = $token->{'Over'}; - if ($over) - { - if (!$over->Match($site)) - { - $over->Leave($token,$e); - delete $token->{'Over'}; - } - } - if ($site) - { - unless ($token->{'Over'}) - { - $site->Enter($token,$e); - $token->{'Over'} = $site; - } - $site->Motion($token,$e) if (defined $site) - } - return $site; -} - -sub Mapped -{ - my ($token) = @_; - my $e = $token->parent->XEvent; - $token = $token->toplevel; - $token->grabGlobal; - $token->focus; - if (defined $e) - { - my $X = $e->X; - my $Y = $e->Y; - $token->MoveToplevelWindow($X+OFFSET,$Y+OFFSET); - $token->NewDrag; - $token->FindSite($X,$Y,$e); - } -} - -sub NewDrag -{ - my ($token) = @_; - my $types = $token->sitetypes; - if (defined $types && @$types) - { - my $type; - foreach $type (@$types) - { - my $class = $type{$type}; - if (defined $class) - { - $class->NewDrag($token); - } - } - } -} - -sub Drag -{ - my $token = shift; - my $e = $token->XEvent; - my $X = $e->X; - my $Y = $e->Y; - $token = $token->toplevel; - $token->MoveToplevelWindow($X+OFFSET,$Y+OFFSET); - $token->FindSite($X,$Y,$e); -} - -sub Done -{ - my $token = shift; - my $e = $token->XEvent; - $token = $token->toplevel; - my $over = delete $token->{'Over'}; - $over->Leave($token,$e) if (defined $over); - my $w = $token->parent; - eval {local $SIG{__DIE__}; $token->grabRelease }; - $token->withdraw; - delete $w->{'Dragging'}; - $w->update; -} - -sub AcceptDrop -{ - my ($token) = @_; - $token->configure(-relief => 'sunken'); - $token->{'Accepted'} = 1; -} - -sub RejectDrop -{ - my ($token) = @_; - $token->configure(-relief => 'flat'); - $token->{'Accepted'} = 0; -} - -sub HandleLoose -{ - my ($w,$seln) = @_; - return ''; -} - -sub InstallHandlers -{ - my ($token,$seln) = @_; - my $w = $token->parent; - $token->configure('-selection' => $seln) if $seln; - $seln = $token->cget('-selection'); - if ($token->{InstallHandlers}) - { - foreach my $h (@{$token->cget('-handlers')}) - { - $w->SelectionHandle('-selection' => $seln,@$h); - } - $token->{InstallHandlers} = 0; - } - if (!$w->IS($w->SelectionOwner('-selection'=>$seln))) - { - $w->SelectionOwn('-selection' => $seln, -command => [\&HandleLoose,$w,$seln]); - } -} - -sub Drop -{ - my $ewin = shift; - my $e = $ewin->XEvent; - my $token = $ewin->toplevel; - my $site = $token->FindSite($e->X,$e->Y,$e); - Tk::catch { $token->grabRelease }; - if (defined $site) - { - my $seln = $token->cget('-selection'); - unless ($token->Callback(-predropcommand => $seln, $site)) - { -# XXX This is ugly if the user restarts a drag within the 2000 ms: -# my $id = $token->after(2000,[$token,'Done']); - my $w = $token->parent; - $token->InstallHandlers; - $site->Drop($token,$seln,$e); - $token->Callback(-postdropcommand => $seln); - $token->Done; - } - } - else - { - $token->Done; - } - $token->Callback('-endcommand'); -} - -sub StartDrag -{ - my $token = shift; - my $w = $token->parent; - unless ($w->{'Dragging'}) - { - my $e = $w->XEvent; - my $X = $e->X; - my $Y = $e->Y; - my $was = $token->{'XY'}; - if ($was) - { - my $dx = $was->[0] - $X; - my $dy = $was->[1] - $Y; - if (sqrt($dx*$dx+$dy*$dy) > $token->cget('-delta')) - { - unless ($token->Callback('-startcommand',$token,$e)) - { - delete $token->{'XY'}; - $w->{'Dragging'} = $token; - $token->MoveToplevelWindow($X+OFFSET,$Y+OFFSET); - $token->raise; - $token->deiconify; - $token->FindSite($X,$Y,$e); - } - } - } - else - { - $token->{'XY'} = [$X,$Y]; - } - } -} - - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/Common.pm b/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/Common.pm deleted file mode 100644 index 2f7a33d4fb4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/Common.pm +++ /dev/null @@ -1,59 +0,0 @@ -package Tk::DragDrop::Common; - -use strict; -use Carp; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/DragDrop/DragDrop/Common.pm#4 $ - -sub Type -{ - my ($base,$name,$class) = @_; - no strict 'refs'; - my $hash = \%{"${base}::type"}; - my $array = \@{"${base}::types"}; - unless (exists $hash->{$name}) - { - push(@$array,$name); - $class = (caller(0))[0] unless (@_ > 2); - $hash->{$name} = $class; - # confess "Strange class $class for $base/$name" unless ($class =~ /^Tk/); - # print "$base $name is ",$class,"\n"; - } -} - -sub import -{ - my $class = shift; - no strict 'refs'; - my $types = \%{"${class}::type"}; - while (@_) - { - my $type = shift; - unless (exists $types->{$type}) - { - if ($type eq 'Local') - { - $class->Type($type,$class); - } - else - { - my ($kind) = $class =~ /([A-Z][a-z]+)$/; - my $file = Tk->findINC("DragDrop/${type}${kind}.pm"); - if (defined $file) - { - # print "Loading $file\n"; - require $file; - } - else - { - croak "Cannot find ${type}${kind}"; - } - } - } - } -} - -1; -__END__ - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/LocalDrop.pm b/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/LocalDrop.pm deleted file mode 100644 index 0f5028ae64c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/LocalDrop.pm +++ /dev/null @@ -1,61 +0,0 @@ -package Tk::DragDrop::Local; -use strict; -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/DragDrop/DragDrop/LocalDrop.pm#4 $ - -use base qw(Tk::DragDrop::Rect); -require Tk::DragDrop; - -my @toplevels; - -Tk::DragDrop->Type('Local'); - -sub XY -{ - my ($site,$event) = @_; - return ($event->X - $site->X,$event->Y - $site->Y); -} - -sub Apply -{ - my $site = shift; - my $name = shift; - my $cb = $site->{$name}; - if ($cb) - { - my $event = shift; - $cb->Call(@_,$site->XY($event)); - } -} - -sub Drop -{ - my ($site,$token,$seln,$event) = @_; - $site->Apply(-dropcommand => $event, $seln); - $site->Apply(-entercommand => $event, 0); - $token->Done; -} - -sub Enter -{ - my ($site,$token,$event) = @_; - $token->AcceptDrop; - $site->Apply(-entercommand => $event, 1); -} - -sub Leave -{ - my ($site,$token,$event) = @_; - $token->RejectDrop; - $site->Apply(-entercommand => $event, 0); -} - -sub Motion -{ - my ($site,$token,$event) = @_; - $site->Apply(-motioncommand => $event); -} - -1; - -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/Rect.pm b/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/Rect.pm deleted file mode 100644 index 04cfa8772f2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/Rect.pm +++ /dev/null @@ -1,110 +0,0 @@ -package Tk::DragDrop::Rect; -use strict; -use Carp; - -# Proxy class which represents sites to the dropping side - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #11 $ =~ /\D(\d+)\s*$/; - -# Some default methods when called site side -# XIDs and viewable-ness from widget - -# XID of ancestor -sub ancestor { ${shift->widget->toplevel->WindowId} } - -# XID of site window -sub win { ${shift->widget->WindowId} } - -# Is site window mapped -sub viewable { shift->widget->viewable } - -sub Over -{ - my ($site,$X,$Y) = @_; - - my $x = $site->X; - my $y = $site->Y; - my $w = $site->width; - my $h = $site->height; - my $val = ($X >= $x && $X < ($x + $w) && $Y >= $y && $Y < ($y + $h)); - - return 0 unless $val; - - my $widget = $site->widget; - - # Now XTranslateCoords from root window to site window's - # ancestor. Ancestors final descendant should be the site window. - # Like $win->containing but avoids a problem that dropper's "token" - # window may be the toplevel (child of root) that contains X,Y - # so if that is in another application ->containing does not - # give us a window. - my $id = $site->ancestor; - while (1) - { - my $cid = $widget->PointToWindow($X,$Y,$id); - last unless $cid; - $id = $cid; - } - return ($id == $site->win); -} - -sub FindSite -{ - my ($class,$widget,$X,$Y) = @_; - foreach my $site ($class->SiteList($widget)) - { - return $site if ($site->viewable && $site->Over($X,$Y)); - } - return undef; -} - -sub NewDrag -{ - my ($class,$widget) = @_; -} - -sub Match -{ - my ($site,$other) = @_; - return 0 unless (defined $other); - return 1 if ($site == $other); - return 0 unless (ref($site) eq ref($other)); - for ("$site") - { - if (/ARRAY/) - { - my $i; - return 0 unless (@$site == @$other); - for ($i = 0; $i < @$site; $i++) - { - return 0 unless ($site->[$i] == $other->[$i]); - } - return 1; - } - elsif (/SCALAR/) - { - return $site == $other; - } - elsif (/HASH/) - { - my $key; - foreach $key (keys %$site) - { - return 0 unless exists $other->{$key}; - return 0 unless ($other->{$key} eq $site->{$key}); - } - foreach $key (keys %$other) - { - return 0 unless exists $site->{$key}; - return 0 unless ($other->{$key} eq $site->{$key}); - } - return 1; - } - return 0; - } - return 0; -} - - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/SunConst.pm b/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/SunConst.pm deleted file mode 100644 index 66325466e68..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/SunConst.pm +++ /dev/null @@ -1,34 +0,0 @@ -package Tk::DragDrop::SunConst; -require Exporter; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/DragDrop/DragDrop/SunConst.pm#4 $ - -use base qw(Exporter); - -@EXPORT = qw(_enter _leave _motion - ENTERLEAVE MOTION DEFAULT_SITE - MOVE_FLAG ACK_FLAG TRANSIENT_FLAG FORWARDED_FLAG - ); - -# Event types -sub _enter () {7}; -sub _leave () {8}; -sub _motion () {6}; - -# Site flags - -sub ENTERLEAVE () {1<<0} -sub MOTION () {1<<1} -sub DEFAULT_SITE () {1<<2} - -# Trigger flags -sub MOVE_FLAG () {1<<0} -sub ACK_FLAG () {1<<1} -sub TRANSIENT_FLAG () {1<<2} -sub FORWARDED_FLAG () {1<<3} - -1; - -__END__ - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/SunDrop.pm b/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/SunDrop.pm deleted file mode 100644 index 422a08196ea..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/SunDrop.pm +++ /dev/null @@ -1,200 +0,0 @@ -package Tk::DragDrop::SunDrop; -require Tk::DragDrop::Rect; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #5 $ =~ /\D(\d+)\s*$/; - -use base qw(Tk::DragDrop::Rect); -use strict; -use Tk::DragDrop::SunConst; - -Tk::DragDrop->Type('Sun'); - -BEGIN - { - # Define the Rect API as members of the array - my @fields = qw(name win X Y width height flags ancestor widget); - my $i = 0; - no strict 'refs'; - for ($i=0; $i < @fields; $i++) - { - my $j = $i; - *{"$fields[$i]"} = sub { shift->[$j] }; - } - } - - -sub Preview -{ - my ($site,$token,$e,$kind,$flags) = (@_); - $token->BackTrace('No flags') unless defined $flags; - my $sflags = $site->flags; - return if ($kind == _motion && !($sflags & MOTION)); - return if ($kind != _motion && !($sflags & ENTERLEAVE)); - my $data = pack('LLSSLL',$kind,$e->t,$e->X,$e->Y,$site->name,$flags); - $token->SendClientMessage('_SUN_DRAGDROP_PREVIEW',$site->win,32,$data); -} - -sub Enter -{ - my ($site,$token,$e) = @_; - $token->AcceptDrop; - $site->Preview($token,$e,_enter,0); -} - -sub Leave -{ - my ($site,$token,$e) = @_; - $token->RejectDrop; - $site->Preview($token,$e,_leave,0); -} - -sub Motion -{ - my ($site,$token,$e) = @_; - $site->Preview($token,$e,_motion,0); -} - -sub HandleDone -{ - my ($token,$seln,$offset,$max) = @_; - $token->Done; - return ''; -} - -sub HandleAck -{ - my ($w,$seln,$offset,$max) = @_; - return ''; -} - -sub HandleItem -{ - my ($w,$seln,$offset,$max) = @_; - return undef; -} - -sub HandleCount -{ - my ($w,$seln,$offset,$max) = @_; - return 1; -} - -sub Drop -{ - my ($site,$token,$seln,$e) = @_; - my $w = $token->parent; - $w->SelectionHandle('-selection'=>$seln,'-type'=>'_SUN_DRAGDROP_ACK',[\&HandleAck,$token,$seln]); - $w->SelectionHandle('-selection'=>$seln,'-type'=>'_SUN_DRAGDROP_DONE',[\&HandleDone,$token,$seln]); - my $atom = $w->InternAtom($seln); - my $flags = ACK_FLAG | TRANSIENT_FLAG; - my $data = pack('LLSSLL',$atom,$e->t,$e->X,$e->Y,$site->name,$flags); - $w->SendClientMessage('_SUN_DRAGDROP_TRIGGER',$site->win,32,$data); -} - -sub FindSite -{ - my ($class,$token,$X,$Y) = @_; - $token->{'SunDD'} = [] unless exists $token->{'SunDD'}; - my $site = $class->SUPER::FindSite($token,$X,$Y); - if (!defined $site) - { - my $id = $token->PointToWindow($X,$Y); - while ($id) - { - my @prop; - Tk::catch { @prop = $token->property('get','_SUN_DRAGDROP_INTEREST', $id) }; - if (!$@ && shift(@prop) eq '_SUN_DRAGDROP_INTEREST' && shift(@prop) == 0) - { - # This is a "toplevel" which has some sites associated with it. - my ($bx,$by) = $token->WindowXY($id); - $token->{'SunDDSeen'} = {} unless exists $token->{'SunDDSeen'}; - return $site if $token->{'SunDDSeen'}{$id}; - $token->{'SunDDSeen'}{$id} = 1; - my $sites = $token->{'SunDD'}; - my $count = shift(@prop); - while (@prop && $count-- > 0) - { - my ($xid,$sn,$flags,$kind,$n) = splice(@prop,0,5); - if ($kind != 0) - { - warn "Don't understand site type $kind"; - last; - } - while (@prop >= 4 && $n-- > 0) - { - my ($x,$y,$w,$h) = splice(@prop,0,4); - push(@$sites,bless [$sn,$xid,$x+$bx,$y+$by,$w,$h,$flags,$id,$token],$class); - } - } - return $class->SUPER::FindSite($token,$X,$Y); - } - $id = $token->PointToWindow($X,$Y,$id) - } - } - return $site; -} - -my $busy = 0; - -sub NewDrag -{ - my ($class,$token) = @_; - delete $token->{'SunDD'} unless $busy; - delete $token->{'SunDDSeen'}; -} - -sub SiteList -{ - my ($class,$token) = @_; - return @{$token->{'SunDD'}}; -} - -1; -__END__ - -# this code is obsolete now that we look at properties ourselves -# which means we don't need dropsite manager running -# On Sun's running OpenLook the window manager or dropsite mananger -# watches for and caches site info in a special selection -# This code got sites from that -# - -sub SiteList -{ - my ($class,$token) = @_; - unless (1 || $busy || exists $token->{'SunDD'}) - { - Carp::confess('Already doing it!') if ($busy++); - my @data = (); - my @sites = (); - my $mw = $token->MainWindow; - $token->{'SunDD'} = \@sites; - Tk::catch { - @data = $mw->SelectionGet( '-selection'=>'_SUN_DRAGDROP_DSDM', '_SUN_DRAGDROP_SITE_RECTS'); - }; - if ($@) - { - $token->configure('-cursor'=>'hand2'); - $token->grab(-global); - } - else - { - while (@data) - { - my $version = shift(@data); - if ($version != 0) - { - warn "Unexpected site version $version"; - last; - } - push(@sites,bless [splice(@data,0,7)],$class); - } - } - $busy--; - } - return @{$token->{'SunDD'}}; -} - -1; - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/SunSite.pm b/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/SunSite.pm deleted file mode 100644 index ab3f4f9793b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/SunSite.pm +++ /dev/null @@ -1,107 +0,0 @@ -package Tk::DragDrop::SunSite; -require Tk::DropSite; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #6 $ =~ /\D(\d+)\s*$/; - -use Tk::DragDrop::SunConst; -use base qw(Tk::DropSite); -use strict; - -Tk::DropSite->Type('Sun'); - -sub SunDrop -{ - my ($w,$site) = @_; - my $e = $w->XEvent; - my ($seln,$t,$x,$y,$id,$flags) = unpack('LLSSLL',$e->A); - $w->MakeAtom($seln); - if ($flags & &ACK_FLAG) - { - Tk::catch { $w->SelectionGet('-selection'=>$seln,'_SUN_DRAGDROP_ACK') }; - } - my @targ = $w->SelectionGet(-selection => $seln,'TARGETS'); - $site->Apply(-dropcommand => $x, $y, $seln, SunDrop => \@targ); - if ($flags & &TRANSIENT_FLAG) - { - Tk::catch { $w->SelectionGet('-selection'=>$seln,'_SUN_DRAGDROP_DONE') }; - } - $w->configure('-relief' => $w->{'_DND_RELIEF_'}) if (defined $w->{'_DND_RELIEF_'}); - $site->Apply(-entercommand => $x, $y, 0); -} - -sub SunPreview -{ - my ($w,$site) = @_; - my $event = $w->XEvent; - my ($kind,$t,$x,$y,$id,$flags) = unpack('LLSSLL',$event->A); - $x -= $site->X; - $y -= $site->Y; - if ($kind == _enter) - { - $site->Callback(-entercommand => 1, $x, $y); - } - elsif ($kind == _leave) - { - $site->Callback(-entercommand => 0, $x, $y); - } - elsif ($kind == _motion) - { - $site->Callback(-motioncommand => $x, $y); - } -} - -sub InitSite -{ - my ($class,$site) = @_; - my $w = $site->widget; - $w->BindClientMessage('_SUN_DRAGDROP_TRIGGER',[\&SunDrop,$site]); - $w->BindClientMessage('_SUN_DRAGDROP_PREVIEW',[\&SunPreview,$site]); -} - -sub NoteSites -{ - my ($class,$t,$sites) = @_; - my $count = @$sites; - my @data = (0,0); - my ($wrapper,$offset) = $t->wrapper; - if ($t->viewable) - { - my $s; - my $i = 0; - my @win; - my $bx = $t->rootx; - my $by = $t->rooty - $offset; - $t->MakeWindowExist; - foreach $s (@$sites) - { - my $w = $s->widget; - if ($w->viewable) - { - $w->MakeWindowExist; - $data[1]++; - push(@data,${$w->WindowId}); # XID - push(@data,$i++); # Our 'tag' - push(@data,ENTERLEAVE|MOTION); # Flags - push(@data,0); # Kind is 'rect' - push(@data,1); # Number of rects - push(@data,$s->X-$bx,$s->Y-$by,$s->width,$s->height); # The rect - } - } - } - if ($data[1]) - { - $t->property('set', - '_SUN_DRAGDROP_INTEREST', # name - '_SUN_DRAGDROP_INTEREST', # type - 32, # format - \@data,$wrapper); # the data - } - else - { - $t->property('delete','_SUN_DRAGDROP_INTEREST',$wrapper); - } -} - - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/Win32Drop.pm b/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/Win32Drop.pm deleted file mode 100644 index 08a4656ecce..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/Win32Drop.pm +++ /dev/null @@ -1,8 +0,0 @@ -package Tk::DragDrop::Win32Drop; -# Dummy placeholder for symetry - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/DragDrop/Win32Site/Win32Drop.pm#4 $ - -use Tk (); -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/Win32Site.pm b/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/Win32Site.pm deleted file mode 100644 index f45d06bc92b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/Win32Site.pm +++ /dev/null @@ -1,50 +0,0 @@ -package Tk::DragDrop::Win32Site; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #8 $ =~ /\D(\d+)\s*$/; - -use Tk qw($XS_VERSION); -require DynaLoader; -require Tk::DropSite; - -use base qw(Tk::DropSite DynaLoader); - -bootstrap Tk::DragDrop::Win32Site; - -use strict; - -Tk::DropSite->Type('Win32'); - -sub WM_DROPFILES () {563} - -sub InitSite -{ - my ($class,$site) = @_; - my $w = $site->widget; - $w->BindClientMessage(WM_DROPFILES,[\&Win32Drop,$site]); - DragAcceptFiles($w,1); -} - -sub Win32Drop -{ - # print join(',',@_),"\n"; - my ($w,$site,$msg,$wParam,$lParam) = @_; - my ($x,$y,@files) = DropInfo($wParam); - my $cb = $site->{'-dropcommand'}; - $site->Apply(-entercommand => $x, $y, 1); - if ($cb) - { - foreach my $file (@files) - { - # print "$file @ $x,$y\n"; - $w->clipboardClear; - $w->clipboardAppend('--',$file); - $cb->Call('CLIPBOARD',Win32Drop => ['STRING'],$x,$y); - } - } - $site->Apply(-entercommand => $x, $y, 0); - return 0; -} - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/XDNDDrop.pm b/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/XDNDDrop.pm deleted file mode 100644 index 7376c8d69c5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/XDNDDrop.pm +++ /dev/null @@ -1,145 +0,0 @@ -package Tk::DragDrop::XDNDDrop; -use strict; -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #6 $ =~ /\D(\d+)\s*$/; -use base qw(Tk::DragDrop::Rect); - -sub XDND_PROTOCOL_VERSION () { 4 } - -Tk::DragDrop->Type('XDND'); - -sub NewDrag -{ - my ($class,$token) = @_; - $token->{$class} = {}; -} - -sub new -{ - my ($class,$token,$id,@prop) = @_; - my $ver = $token->InternAtom(shift(@prop)); - # warn "XDND version $ver ".join(' ',@prop)."\n"; - $ver = XDND_PROTOCOL_VERSION if $ver > XDND_PROTOCOL_VERSION; - my $site = bless { id => $id, token => $token, ver => $ver, state => 0, accept => \@prop}, $class; - my $w = $token->parent; - $w->BindClientMessage('XdndStatus',[$site => 'XdndStatus']); - $w->BindClientMessage('XdndFinished',[$site => 'XdndFinished']); - return $site; -} - -sub Drop -{ - my ($site,$token,$seln,$e) = @_; - my $w = $token->parent; - my $data = pack('LLLLL',oct($w->id),0,$e->t,0,0); - $w->SendClientMessage('XdndDrop',$site->{id},32,$data); -} - -sub FindSite -{ - my ($class,$token,$X,$Y) = @_; - my $id = $token->PointToWindow($X,$Y); - while ($id) - { - my @prop; - Tk::catch { @prop = $token->property('get','XdndAware', $id) }; - if (!$@ && shift(@prop) eq 'ATOM') - { - my $hash = $token->{$class}; - my $site = $hash->{$id}; - if (!defined $site) - { - $site = $class->new($token,$id,@prop); - $hash->{$id} = $site; - } - return $site; - } - $id = $token->PointToWindow($X,$Y,$id) - } - return undef; -} - -sub Enter -{ - my ($site,$token,$e) = @_; - my $w = $token->parent; - $token->InstallHandlers('XdndSelection'); - my $seln = $token->cget('-selection'); - my @targets = grep(!/^(TARGETS|MULTIPLE|TIMESTAMP)$/,reverse($token->SelectionGet('-selection'=> 'XdndSelection','TARGETS'))); - # print join(' ',@targets),"\n"; - my $flags = ($site->{ver} << 24); - my @atarg = map($token->InternAtom($_),@targets); - my $ntarg = @atarg; - if ($ntarg > 3) - { - $flags |= 1; - $w->property('set','XdndTypeList','ATOM',32,\@atarg); - splice(@atarg,3); - } - else - { - splice(@atarg,$ntarg,(0 x 3 - $ntarg)); - } - unshift(@atarg,oct($w->id),$flags); - # print join(' ',map(sprintf("%08X",$_),@atarg)),"\n"; - my $data = pack('LLLLL',@atarg); - $w->SendClientMessage('XdndEnter',$site->{id},32,$data); -} - -sub Leave -{ - my ($site,$token,$e) = @_; - my $w = $token->parent; - my $data = pack('LLLLL',oct($w->id), 0, 0, 0, 0); - $w->SendClientMessage('XdndLeave',$site->{id},32,$data); -} - -sub Motion -{ - my ($site,$token,$e) = @_; - my $X = $e->X; - my $Y = $e->Y; - my $w = $token->parent; - my $action = $token->InternAtom($site->{'action'} || 'XdndActionCopy'); - my @atarg = (oct($w->id),0,($X << 16) | $Y, $e->t, $action); - # print join(' ',map(sprintf("%08X",$_),@atarg)),"\n"; - my $data = pack('LLLLL',@atarg); - $w->SendClientMessage('XdndPosition',$site->{id},32,$data); -} - -sub XdndFinished -{ - my ($site) = @_; - my $token = $site->{token}; - # printf "XdndFinished $site\n", - $token->Done; -} - -sub XdndStatus -{ - my ($site) = @_; - my $token = $site->{token}; - my $w = $token->parent; - my $event = $w->XEvent; - my ($tid,$flags,$xy,$wh,$action) = unpack('LLLLL',$event->A); - $action = $w->GetAtomName($action) if $action; - $site->{flags} = $flags; - $site->{'X'} = $xy >> 16; - $site->{'Y'} = $xy & 0xFFFF; - $site->{'width'} = $wh >> 16; - $site->{'height'} = $wh & 0xFFFF; - #printf "XdndStatus $site targ=%x flags=%08X x=%d y=%d w=%d h=%d a=%s\n", - # $tid,$flags,$xy >> 16, $xy & 0xFFFF, $wh >> 16, $wh & 0xFFFF,$action; - if ($flags & 1) - { - $token->AcceptDrop; - } - else - { - $token->RejectDrop; - } -} - - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/XDNDSite.pm b/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/XDNDSite.pm deleted file mode 100644 index 4ac75d63c40..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DragDrop/XDNDSite.pm +++ /dev/null @@ -1,159 +0,0 @@ -package Tk::DragDrop::XDNDSite; -use strict; -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #6 $ =~ /\D(\d+)\s*$/; -use base qw(Tk::DropSite); - -sub XDND_PROTOCOL_VERSION () { 4 } - -Tk::DropSite->Type('XDND'); - -sub InitSite -{my ($class,$site) = @_; - my $w = $site->widget; -} - -sub XdndEnter -{ - my ($t,$sites) = @_; - my $event = $t->XEvent; - my ($src,$flags,@types) = unpack('LLLLL',$event->A); - my $ver = ($flags >> 24) & 0xFF; - if ($flags & 1) - { - my @prop; - Tk::catch { @prop = $t->property('get','XdndTypeList',$src) }; - @types = @prop if (!$@ && shift(@prop) eq 'ATOM'); - } - else - { - $t->MakeAtom(@types); - } - # print "XdndEnter $src $ver @types\n"; - $t->{"XDND$src"} = { ver => $ver, types => \@types }; -} - -sub XdndLeave -{ - my ($t,$sites) = @_; - my $event = $t->XEvent; - my ($src,$flags,@types) = unpack('LLLLL',$event->A); - # print "XdndLeave $src\n"; - my $info = $t->{"XDND$src"}; - if ($info) - { - my $over = $info->{site}; - if ($over) - { - my $X = $info->{X}; - my $Y = $info->{Y}; - $over->Apply(-entercommand => $X, $Y, 0) - } - } - delete $t->{"XDND$src"}; -} - -sub XdndPosition -{ - my ($t,$sites) = @_; - my $event = $t->XEvent; - my ($src,$flags,$xy,$time,$action) = unpack('LLLLL',$event->A); - $t->MakeAtom($action); - my $X = $xy >> 16; - my $Y = $xy & 0xFFFF; - my $info = $t->{"XDND$src"}; - $info->{X} = $X; - $info->{Y} = $Y; - $info->{action} = $action; - $info->{t} = $time; - my ($id) = $t->wrapper; - my $sxy = 0; - my $swh = 0; - my $sflags = 0; - my $saction = 0; - my $over = $info->{site}; - foreach my $site (@$sites) - { - if ($site->Over($X,$Y)) - { - $sxy = ($site->X << 16) | $site->Y; - $swh = ($site->width << 16) | $site->height; - $saction = $action; - $sflags |= 1; - if ($over) - { - if ($over == $site) - { - $site->Apply(-motioncommand => $X, $Y); - } - else - { - $over->Apply(-entercommand => $X, $Y, 0); - $site->Apply(-entercommand => $X, $Y, 1); - } - } - else - { - $site->Apply(-entercommand => $X, $Y, 1); - } - $info->{site} = $site; - last; - } - } - unless ($sflags & 1) - { - if ($over) - { - $over->Apply(-entercommand => $X, $Y, 0) - } - delete $info->{site}; - } - my $data = pack('LLLLL',$id,$sflags,$sxy,$swh,$action); - $t->SendClientMessage('XdndStatus',$src,32,$data); -} - -sub XdndDrop -{ - my ($t,$sites) = @_; - my $event = $t->XEvent; - my ($src,$flags,$time,$res1,$res2) = unpack('LLLLL',$event->A); - my $info = $t->{"XDND$src"}; - my $sflags = 0; - my $action = 0; - if ($info) - { - $info->{t} = $time; - my $site = $info->{'site'}; - if ($site) - { - my $X = $info->{'X'}; - my $Y = $info->{'Y'}; - $action = $info->{action}; - $site->Apply(-dropcommand => $X, $Y, 'XdndSelection',$action,$info->{types}); - $site->Apply(-entercommand => $X, $Y, 0); - } - } - my ($id) = $t->wrapper; - my $data = pack('LLLLL',$id,$sflags,$action,0,0); - $t->SendClientMessage('XdndFinished',$src,32,$data); -} - -sub NoteSites -{my ($class,$t,$sites) = @_; - my ($wrapper) = $t->wrapper; - if (@$sites) - { - $t->BindClientMessage('XdndLeave',[\&XdndLeave,$sites]); - $t->BindClientMessage('XdndEnter',[\&XdndEnter,$sites]); - $t->BindClientMessage('XdndPosition',[\&XdndPosition,$sites]); - $t->BindClientMessage('XdndDrop',[\&XdndDrop,$sites]); - $t->property('set','XdndAware','ATOM',32,[XDND_PROTOCOL_VERSION],$wrapper); - } - else - { - $t->property('delete','XdndAware',$wrapper); - } -} - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DropSite.pm b/Master/tlpkg/tlperl.old/lib/Tk/DropSite.pm deleted file mode 100644 index 3519c108384..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DropSite.pm +++ /dev/null @@ -1,257 +0,0 @@ -package Tk::DropSite; -require Tk::DragDrop::Common; -require Tk::DragDrop::Rect; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #7 $ =~ /\D(\d+)\s*$/; - -use base qw(Tk::DragDrop::Common Tk::DragDrop::Rect); - -Construct Tk::Widget 'DropSite'; - -use strict; -use vars qw(%type @types); - -Tk::DragDrop->Tk::DragDrop::Common::Type('Local'); - -my @toplevels; - -BEGIN -{ - # Are these really methods of Tk::DragDrop::Rect ? - no strict 'refs'; - foreach my $name (qw(x y X Y width height widget)) - { - my $key = $name; - *{"$key"} = sub { shift->{$key} }; - } -} - -# Dropping side API - really only here for Local drops -# inheritance is a mess right now. - -sub NewDrag -{ - my ($class,$token) = @_; - # No need to clear cached sites we see live data -} - -sub SiteList -{ - # this should be inheritable - so that receive side of XDND can re-use it. - my ($class,$widget) = @_; - my $t; - my @list; - foreach $t (@toplevels) - { - my $sites = $t->{'DropSites'}; - if ($sites) - { - $sites = $sites->{'Local'}; - push(@list,@{$sites}) if ($sites); - } - } - return @list; -} - -sub Apply -{ - my $site = shift; - my $name = shift; - my $cb = $site->{$name}; - if ($cb) - { - my $X = shift; - my $Y = shift; - $cb->Call(@_,$X - $site->X, $Y - $site->Y); - } -} - -sub Drop -{ - my ($site,$token,$seln,$event) = @_; - my $X = $event->X; - my $Y = $event->Y; - my @targ = $token->SelectionGet(-selection => $seln,'TARGETS'); - $site->Apply(-dropcommand => $X, $Y, $seln,'LocalDrop',\@targ); - $site->Apply(-entercommand => $X, $Y, 0); - $token->Done; -} - -sub Enter -{ - my ($site,$token,$event) = @_; - $token->AcceptDrop; - $site->Apply(-entercommand => $event->X, $event->Y, 1); -} - -sub Leave -{ - my ($site,$token,$event) = @_; - $token->RejectDrop; - $site->Apply(-entercommand => $event->X, $event->Y, 0); -} - -sub Motion -{ - my ($site,$token,$event) = @_; - $site->Apply(-motioncommand => $event->X, $event->Y); -} - -# This is receive side API. - -sub NoteSites -{ - my ($class,$t,$sites) = @_; - unless (grep($_ == $t,@toplevels)) - { - $Tk::DragDrop::types{'Local'} = $class if (@$sites); - push(@toplevels,$t); - $t->OnDestroy(sub { @toplevels = grep($_ != $t,@toplevels) }); - } -} - -sub UpdateDropSites -{ - my ($t) = @_; - $t->{'DropUpdate'} = 0; - foreach my $type (@types) - { - my $sites = $t->{'DropSites'}->{$type}; - if ($sites && @$sites) - { - my $class = $type{$type}; - $class->NoteSites($t,$sites); - } - } -} - -sub QueueDropSiteUpdate -{ - my $obj = shift; - my $class = ref($obj); - my $t = $obj->widget->toplevel; - unless ($t->{'DropUpdate'}) - { - $t->{'DropUpdate'} = 1; - $t->afterIdle(sub { UpdateDropSites($t) }); - } -} - -sub delete -{ - my ($obj) = @_; - my $w = $obj->widget; - $w->bindtags([grep($_ ne $obj,$w->bindtags)]); - my $t = $w->toplevel; - foreach my $type (@{$obj->{'-droptypes'}}) - { - my $a = $t->{'DropSites'}->{$type}; - @$a = grep($_ ne $obj,@$a); - } - $obj->QueueDropSiteUpdate; -} - -sub DropSiteUpdate -{ - # Note size of widget and arrange to update properties etc. - my $obj = shift; - my $w = $obj->widget; - $obj->{'x'} = $w->X; - $obj->{'y'} = $w->Y; - $obj->{'X'} = $w->rootx; - $obj->{'Y'} = $w->rooty; - $obj->{'width'} = $w->Width; - $obj->{'height'} = $w->Height; - $obj->QueueDropSiteUpdate; -} - -sub TopSiteUpdate -{ - my ($t) = @_; - foreach my $type (@types) - { - my $sites = $t->{'DropSites'}->{$type}; - if ($sites && @$sites) - { - my $site; - foreach $site (@$sites) - { - $site->DropSiteUpdate; - } - } - } -} - -sub Callback -{ - my $obj = shift; - my $key = shift; - my $cb = $obj->{$key}; - $cb->Call(@_) if (defined $cb); -} - -sub InitSite -{ - my ($class,$site) = @_; - # Tk::DragDrop->Type('Local'); -} - -sub new -{ - my ($class,$w,%args) = @_; - my $t = $w->toplevel; - $args{'widget'} = $w; - if (exists $args{'-droptypes'}) - { - # Convert single type to array-of-one - $args{'-droptypes'} = [$args{'-droptypes'}] unless (ref $args{'-droptypes'}); - } - else - { - # Default to all known types. - $args{'-droptypes'} = \@types; - } - my ($key,$val); - while (($key,$val) = each %args) - { - if ($key =~ /command$/) - { - $val = Tk::Callback->new($val); - $args{$key} = $val; - } - } - my $obj = bless \%args,$class; - unless (exists $t->{'DropSites'}) - { - $t->{'DropSites'} = {}; - $t->{'DropUpdate'} = 0; - } - my $type; - foreach $type (@{$args{'-droptypes'}}) - { - Tk::DropSite->import($type) unless (exists $type{$type}); - my $class = $type{$type}; - $class->InitSite($obj); - # Should this be indexed by type or class ? - unless (exists $t->{'DropSites'}->{$type}) - { - $t->{'DropSites'}->{$type} = []; - } - push(@{$t->{'DropSites'}->{$type}},$obj); - } - $w->OnDestroy([$obj,'delete']); - $obj->DropSiteUpdate; - $w->bindtags([$w->bindtags,$obj]); - $w->Tk::bind($obj,'<Map>',[$obj,'DropSiteUpdate']); - $w->Tk::bind($obj,'<Unmap>',[$obj,'DropSiteUpdate']); - $w->Tk::bind($obj,'<Configure>',[$obj,'DropSiteUpdate']); - $t->Tk::bind($class,'<Configure>',[\&TopSiteUpdate,$t]); - unless (grep($_ eq $class,$t->bindtags)) - { - $t->bindtags([$t->bindtags,$class]); - } - return $obj; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/DummyEncode.pm b/Master/tlpkg/tlperl.old/lib/Tk/DummyEncode.pm deleted file mode 100644 index 5ead808405d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/DummyEncode.pm +++ /dev/null @@ -1,46 +0,0 @@ -package Tk::DummyEncode; - -use vars qw($VERSION); -$VERSION = '4.007'; # $Id: //depot/Tkutf8/Tk/DummyEncode.pm#7 $ - -sub getEncoding -{ - my ($class,$name) = @_; - return undef unless ($name =~ /(iso8859-1|X11ControlChars)/); - my $pkg = $name; - $pkg =~ s/\W+/_/g; - return bless {Name => $name},$class.'::'.$pkg; -} - -package Tk::DummyEncode::iso8859_1; -sub encode -{ - my ($obj,$uni,$chk) = @_; - $_[1] = '' if $chk; - return $uni; -} - -sub decode -{ - my ($obj,$byt,$chk) = @_; - $_[1] -= '' if $chk; - return $byt; -} - -package Tk::DummyEncode::X11ControlChars; -sub encode -{ - my ($obj,$uni,$chk) = @_; - my $str = ''; - foreach my $ch (split(//,$uni)) - { - $str .= sprintf("\\x{%x}",ord($ch)); - } - $_[1] = '' if $chk; - return $str; -} - -1; - -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/English.pm b/Master/tlpkg/tlperl.old/lib/Tk/English.pm deleted file mode 100644 index de640376580..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/English.pm +++ /dev/null @@ -1,307 +0,0 @@ -package Tk::English; - -require Exporter; - -use vars qw($VERSION); -$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/English.pm#6 $ - -use base qw(Exporter); - -# This file is generated automatically by pTk/makeenglish from Tk distribution. - - -@EXPORT = qw( - &ABOVE &ACTIVATE &ACTIVE &ADD &ADDTAG &ADJUST &AFTER &ALL &ANCHOR &APPEND - &APPLY &ARROW1 &ARROW2 &ASCII &ASPECT &AUTO &BASELINE &BBOX &BEFORE &BELOW - &BEVEL &BIND &BITMAP &BLANK &BOTH &BOTTOM &BUTT &CANVASX &CANVASY &CAPTURE - &CASCADE &CENTER &CGET &CHAR &CHARS &CHECKBUTTON &CHILDREN &CLEAR &CLIENT - &CLONE &CLOSEST &COLOR &COLORMAPWINDOWS &COLUMN &COLUMNCONFIGURE &COMMAND - &COMPARE &CONFIGURE &COORDS © &CREATE &CURRENT &CURSELECTION &DATA - &DCHARS &DEACTIVATE &DEBUG &DECORATIONS &DECREASING &DEFAULT &DEICONIFY - &DELETE &DELTA &DESELECT &DLINEINFO &DOWN &DRAGSITE &DRAGTO &DROPSITE &DTAG - &DUMP &ENCLOSED &END &ENTRY &ENTRYCGET &ENTRYCONFIGURE &EVAL &EXISTS &EXPAND - &FILL &FILLX &FILLY &FIND &FIRST &FLASH &FLAT &FOCUS &FOCUSMODEL &FOCUSNEXT - &FOCUSPREV &FORGET &FRACTION &FRAME &FROM &GENERATE &GEOMETRY &GEOMETRYINFO - &GET &GETTAGS &GRAVITY &GRAY &GRID &GROOVE &GROUP &HANDLE &HEAD &HEIGHT - &HIDDEN &HIDE &HORIZONTAL &ICONBITMAP &ICONIFY &ICONMASK &ICONNAME - &ICONPOSITION &ICONWINDOW &ICURSOR &IDENTIFY &IDLETASKS &IGNORE &IMAGE - &INCLUDES &INCREASING &INDEX &INFO &INSERT &INSIDE &INTEGER &INTERACTIVE - &INVOKE &ISMWMRUNNING &ITEM &ITEMCGET &ITEMCONFIGURE &LAST &LEFT &LINE - &LINECONFIGURE &LINEEND &LINES &LINESTART &LIST &LOCATION &LOWER &MARK &MAX - &MAXSIZE &MENUBAR &MINSIZE &MITER &MONOCHROME &MOVE &MOVETO &NAMES &NEAREST - &NEW &NEXT &NEXTRANGE &NONE &NORMAL &NOW &OFFSPRINGS &OUTSIDE &OVERLAPPING - &OVERRIDEREDIRECT &OWN &PADX &PADY &PAGECGET &PAGECONFIGURE &PAGES &PARENT - &PASSIVE &POSITION &POSITIONFROM &POST &POSTCASCADE &POSTSCRIPT &PRESENT - &PREV &PREVIOUS &PREVRANGE &PROGRAM &PROJECTING &PROPAGATE &PROTOCOL &PUT - &RADIOBUTTON &RAISE &RAISED &RANGE &RANGES &READ &READFILE &REAL &RECORD - &REDITHER &REFCOUNT &RELEASE &REMOVE &RESIZABLE &RIDGE &RIGHT &ROOT &ROUND - &ROW &ROWCONFIGURE &ROWS &SAVEUNDER &SCALE &SCAN &SCROLL &SEARCH &SEE - &SELECT &SELECTION &SEPARATOR &SET &SHOW &SIBLINGS &SIZE &SIZEFROM &SLAVES - &SLIDER &SOLID &SPACE &STATE &STATUS &SUNKEN &TAG &TAIL &TEAROFF &TEXT - &TITLE &TO &TOGGLE &TOP &TRACING &TRANSIENT &TRANSIENTFOR &TYPE &TYPES - &UNITS &UNPACK &UNPOST &UNSET &UP &USER &VARIABLE &VERTICAL &VISIBILITY - &WIDTH &WINDOW &WITHDRAW &WITHTAG &WORDEND &WORDSTART &WRITE &XVIEW - &YPOSITION &YVIEW -); -sub ABOVE () { 'above' } -sub ACTIVATE () { 'activate' } -sub ACTIVE () { 'active' } -sub ADD () { 'add' } -sub ADDTAG () { 'addtag' } -sub ADJUST () { 'adjust' } -sub AFTER () { 'after' } -sub ALL () { 'all' } -sub ANCHOR () { 'anchor' } -sub APPEND () { 'append' } -sub APPLY () { 'apply' } -sub ARROW1 () { 'arrow1' } -sub ARROW2 () { 'arrow2' } -sub ASCII () { 'ascii' } -sub ASPECT () { 'aspect' } -sub AUTO () { 'auto' } -sub BASELINE () { 'baseline' } -sub BBOX () { 'bbox' } -sub BEFORE () { 'before' } -sub BELOW () { 'below' } -sub BEVEL () { 'bevel' } -sub BIND () { 'bind' } -sub BITMAP () { 'bitmap' } -sub BLANK () { 'blank' } -sub BOTH () { 'both' } -sub BOTTOM () { 'bottom' } -sub BUTT () { 'butt' } -sub CANVASX () { 'canvasx' } -sub CANVASY () { 'canvasy' } -sub CAPTURE () { 'capture' } -sub CASCADE () { 'cascade' } -sub CENTER () { 'center' } -sub CGET () { 'cget' } -sub CHAR () { 'char' } -sub CHARS () { 'chars' } -sub CHECKBUTTON () { 'checkbutton' } -sub CHILDREN () { 'children' } -sub CLEAR () { 'clear' } -sub CLIENT () { 'client' } -sub CLONE () { 'clone' } -sub CLOSEST () { 'closest' } -sub COLOR () { 'color' } -sub COLORMAPWINDOWS () { 'colormapwindows' } -sub COLUMN () { 'column' } -sub COLUMNCONFIGURE () { 'columnconfigure' } -sub COMMAND () { 'command' } -sub COMPARE () { 'compare' } -sub CONFIGURE () { 'configure' } -sub COORDS () { 'coords' } -sub COPY () { 'copy' } -sub CREATE () { 'create' } -sub CURRENT () { 'current' } -sub CURSELECTION () { 'curselection' } -sub DATA () { 'data' } -sub DCHARS () { 'dchars' } -sub DEACTIVATE () { 'deactivate' } -sub DEBUG () { 'debug' } -sub DECORATIONS () { 'decorations' } -sub DECREASING () { 'decreasing' } -sub DEFAULT () { 'default' } -sub DEICONIFY () { 'deiconify' } -sub DELETE () { 'delete' } -sub DELTA () { 'delta' } -sub DESELECT () { 'deselect' } -sub DLINEINFO () { 'dlineinfo' } -sub DOWN () { 'down' } -sub DRAGSITE () { 'dragsite' } -sub DRAGTO () { 'dragto' } -sub DROPSITE () { 'dropsite' } -sub DTAG () { 'dtag' } -sub DUMP () { 'dump' } -sub ENCLOSED () { 'enclosed' } -sub END () { 'end' } -sub ENTRY () { 'entry' } -sub ENTRYCGET () { 'entrycget' } -sub ENTRYCONFIGURE () { 'entryconfigure' } -sub EVAL () { 'eval' } -sub EXISTS () { 'exists' } -sub EXPAND () { 'expand' } -sub FILL () { 'fill' } -sub FILLX () { 'fillx' } -sub FILLY () { 'filly' } -sub FIND () { 'find' } -sub FIRST () { 'first' } -sub FLASH () { 'flash' } -sub FLAT () { 'flat' } -sub FOCUS () { 'focus' } -sub FOCUSMODEL () { 'focusmodel' } -sub FOCUSNEXT () { 'focusnext' } -sub FOCUSPREV () { 'focusprev' } -sub FORGET () { 'forget' } -sub FRACTION () { 'fraction' } -sub FRAME () { 'frame' } -sub FROM () { 'from' } -sub GENERATE () { 'generate' } -sub GEOMETRY () { 'geometry' } -sub GEOMETRYINFO () { 'geometryinfo' } -sub GET () { 'get' } -sub GETTAGS () { 'gettags' } -sub GRAVITY () { 'gravity' } -sub GRAY () { 'gray' } -sub GRID () { 'grid' } -sub GROOVE () { 'groove' } -sub GROUP () { 'group' } -sub HANDLE () { 'handle' } -sub HEAD () { 'head' } -sub HEIGHT () { 'height' } -sub HIDDEN () { 'hidden' } -sub HIDE () { 'hide' } -sub HORIZONTAL () { 'horizontal' } -sub ICONBITMAP () { 'iconbitmap' } -sub ICONIFY () { 'iconify' } -sub ICONMASK () { 'iconmask' } -sub ICONNAME () { 'iconname' } -sub ICONPOSITION () { 'iconposition' } -sub ICONWINDOW () { 'iconwindow' } -sub ICURSOR () { 'icursor' } -sub IDENTIFY () { 'identify' } -sub IDLETASKS () { 'idletasks' } -sub IGNORE () { 'ignore' } -sub IMAGE () { 'image' } -sub INCLUDES () { 'includes' } -sub INCREASING () { 'increasing' } -sub INDEX () { 'index' } -sub INFO () { 'info' } -sub INSERT () { 'insert' } -sub INSIDE () { 'inside' } -sub INTEGER () { 'integer' } -sub INTERACTIVE () { 'interactive' } -sub INVOKE () { 'invoke' } -sub ISMWMRUNNING () { 'ismwmrunning' } -sub ITEM () { 'item' } -sub ITEMCGET () { 'itemcget' } -sub ITEMCONFIGURE () { 'itemconfigure' } -sub LAST () { 'last' } -sub LEFT () { 'left' } -sub LINE () { 'line' } -sub LINECONFIGURE () { 'lineconfigure' } -sub LINEEND () { 'lineend' } -sub LINES () { 'lines' } -sub LINESTART () { 'linestart' } -sub LIST () { 'list' } -sub LOCATION () { 'location' } -sub LOWER () { 'lower' } -sub MARK () { 'mark' } -sub MAX () { 'max' } -sub MAXSIZE () { 'maxsize' } -sub MENUBAR () { 'menubar' } -sub MINSIZE () { 'minsize' } -sub MITER () { 'miter' } -sub MONOCHROME () { 'monochrome' } -sub MOVE () { 'move' } -sub MOVETO () { 'moveto' } -sub NAMES () { 'names' } -sub NEAREST () { 'nearest' } -sub NEW () { 'new' } -sub NEXT () { 'next' } -sub NEXTRANGE () { 'nextrange' } -sub NONE () { 'none' } -sub NORMAL () { 'normal' } -sub NOW () { 'now' } -sub OFFSPRINGS () { 'offsprings' } -sub OUTSIDE () { 'outside' } -sub OVERLAPPING () { 'overlapping' } -sub OVERRIDEREDIRECT () { 'overrideredirect' } -sub OWN () { 'own' } -sub PADX () { 'padx' } -sub PADY () { 'pady' } -sub PAGECGET () { 'pagecget' } -sub PAGECONFIGURE () { 'pageconfigure' } -sub PAGES () { 'pages' } -sub PARENT () { 'parent' } -sub PASSIVE () { 'passive' } -sub POSITION () { 'position' } -sub POSITIONFROM () { 'positionfrom' } -sub POST () { 'post' } -sub POSTCASCADE () { 'postcascade' } -sub POSTSCRIPT () { 'postscript' } -sub PRESENT () { 'present' } -sub PREV () { 'prev' } -sub PREVIOUS () { 'previous' } -sub PREVRANGE () { 'prevrange' } -sub PROGRAM () { 'program' } -sub PROJECTING () { 'projecting' } -sub PROPAGATE () { 'propagate' } -sub PROTOCOL () { 'protocol' } -sub PUT () { 'put' } -sub RADIOBUTTON () { 'radiobutton' } -sub RAISE () { 'raise' } -sub RAISED () { 'raised' } -sub RANGE () { 'range' } -sub RANGES () { 'ranges' } -sub READ () { 'read' } -sub READFILE () { 'readfile' } -sub REAL () { 'real' } -sub RECORD () { 'record' } -sub REDITHER () { 'redither' } -sub REFCOUNT () { 'refcount' } -sub RELEASE () { 'release' } -sub REMOVE () { 'remove' } -sub RESIZABLE () { 'resizable' } -sub RIDGE () { 'ridge' } -sub RIGHT () { 'right' } -sub ROOT () { 'root' } -sub ROUND () { 'round' } -sub ROW () { 'row' } -sub ROWCONFIGURE () { 'rowconfigure' } -sub ROWS () { 'rows' } -sub SCALE () { 'scale' } -sub SCAN () { 'scan' } -sub SCROLL () { 'scroll' } -sub SEARCH () { 'search' } -sub SEE () { 'see' } -sub SELECT () { 'select' } -sub SELECTION () { 'selection' } -sub SEPARATOR () { 'separator' } -sub SET () { 'set' } -sub SHOW () { 'show' } -sub SIBLINGS () { 'siblings' } -sub SIZE () { 'size' } -sub SIZEFROM () { 'sizefrom' } -sub SLAVES () { 'slaves' } -sub SLIDER () { 'slider' } -sub SOLID () { 'solid' } -sub SPACE () { 'space' } -sub STATE () { 'state' } -sub STATUS () { 'status' } -sub SUNKEN () { 'sunken' } -sub TAG () { 'tag' } -sub TAIL () { 'tail' } -sub TEAROFF () { 'tearoff' } -sub TEXT () { 'text' } -sub TITLE () { 'title' } -sub TO () { 'to' } -sub TOGGLE () { 'toggle' } -sub TOP () { 'top' } -sub TRACING () { 'tracing' } -sub TRANSIENT () { 'transient' } -sub TRANSIENTFOR () { 'transientfor' } -sub TYPE () { 'type' } -sub TYPES () { 'types' } -sub UNITS () { 'units' } -sub UNPACK () { 'unpack' } -sub UNPOST () { 'unpost' } -sub UNSET () { 'unset' } -sub UP () { 'up' } -sub USER () { 'user' } -sub VARIABLE () { 'variable' } -sub VERTICAL () { 'vertical' } -sub VISIBILITY () { 'visibility' } -sub WIDTH () { 'width' } -sub WINDOW () { 'window' } -sub WITHDRAW () { 'withdraw' } -sub WITHTAG () { 'withtag' } -sub WORDEND () { 'wordend' } -sub WORDSTART () { 'wordstart' } -sub WRITE () { 'write' } -sub XVIEW () { 'xview' } -sub YPOSITION () { 'yposition' } -sub YVIEW () { 'yview' } - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Entry.pm b/Master/tlpkg/tlperl.old/lib/Tk/Entry.pm deleted file mode 100644 index 51b3f0c6767..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Entry.pm +++ /dev/null @@ -1,615 +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-2003 Nick Ing-Simmons. All rights reserved. -# This program is free software; you can redistribute it and/or - -use vars qw($VERSION); -use strict; -$VERSION = sprintf '4.%03d',q$Revision: #17 $ =~ /#(\d+)/; - -# 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','validate','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); - - # <<Cut>>, <<Copy>> and <<Paste>> defined in Tk::Clipboard - $mw->bind($class,'<<Clear>>' => sub { - my $w = shift; - $w->delete("sel.first", "sel.last"); - }); - $mw->bind($class,'<<PasteSelection>>' => [sub { - my($w, $x) = @_; - # XXX logic in Tcl/Tk version screwed up? - if (!$Tk::strictMotif && !$Tk::mouseMoved) { - $w->Paste($x); - } - }, Ev('x')]); - - # Standard Motif bindings: - # The <Escape> binding is different from the Tcl/Tk version: - $mw->bind($class,'<Escape>','selectionClear'); - - $mw->bind($class,'<1>',['Button1',Ev('x'),Ev('y')]); - $mw->bind($class,'<ButtonRelease-1>',['Button1Release',Ev('x'),Ev('y')]); - $mw->bind($class,'<B1-Motion>',['Motion',Ev('x'),Ev('y')]); - - $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,'<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'); - if ($mw->windowingsystem =~ /^(?:classic|aqua)$/) - { - $mw->bind($class,'<Command-KeyPress>', 'NoOp'); - } - - # On Windows, paste is done using Shift-Insert. Shift-Insert already - # generates the <<Paste>> event, so we don't need to do anything here. - if ($Tk::platform ne 'MSWin32') - { - $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'); - - # XXX The original Tcl/Tk bindings use NextWord/PreviousWord instead - $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']); - $mw->bind($class,'<Meta-Delete>',['delete',Ev(['wordstart']),'insert']); - - # A few additional bindings from John Ousterhout. -# XXX conflicts with <<Copy>>: $mw->bind($class,'<Control-w>',['delete',Ev(['wordstart']),'insert']); - $mw->bind($class,'<2>','Button_2'); - $mw->bind($class,'<B2-Motion>','B2_Motion'); -# XXX superseded by <<PasteSelection>>: $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->GetSelection)} -} - - -# Original is ::tk::EntryScanMark -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 -} - - -# Original is ::tk::EntryScanDrag -sub B2_Motion -{ - my $w = shift; - my $Ev = $w->XEvent; - # Make sure these exist, as some weird situations can trigger the - # motion binding without the initial press. [Tcl/Tk Bug #220269] - if (!defined $Tk::x) { $Tk::x = $Ev->x } - if (abs(($Ev->x-$Tk::x)) > 2) - { - $Tk::mouseMoved = 1 - } - $w->scan('dragto',$Ev->x) -} - - -# XXX Not needed anymore -sub ButtonRelease_2 -{ - my $w = shift; - my $Ev = $w->XEvent; - if (!$Tk::mouseMoved) - { - eval - {local $SIG{__DIE__}; - $w->insert('insert',$w->SelectionGet); - $w->SeeInsert; - } - } -} - -sub Button1Release -{ - shift->CancelRepeat; -} - -# ::tk::EntryClosestGap -- -# Given x and y coordinates, this procedure finds the closest boundary -# between characters to the given coordinates and returns the index -# of the character just after the boundary. -# -# Arguments: -# w - The entry window. -# x - X-coordinate within the window. -sub ClosestGap -{ - my($w, $x) = @_; - my $pos = $w->index('@'.$x); - my @bbox = $w->bbox($pos); - if ($x - $bbox[0] < $bbox[2] / 2) - { - return $pos; - } - $pos + 1; -} - -# 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($w->ClosestGap($x)); - $w->selectionFrom('insert'); - $w->selectionClear; - if ($w->cget('-state') ne 'disabled') - { - $w->focus() - } -} - -sub Motion -{ - my ($w,$x,$y) = @_; - $Tk::x = $x; # XXX ? - $w->MouseSelect($x); -} - -# 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; - return if UNIVERSAL::isa($w, 'Tk::Spinbox') and $w->{_element} ne 'entry'; - $Tk::selectMode = shift if (@_); - my $cur = $w->index($w->ClosestGap($x)); - return unless defined $cur; - my $anchor = $w->index('anchor'); - return unless defined $anchor; - $Tk::pressX ||= $x; # XXX Better use "if !defined $Tk::pressX"? - if (($cur != $anchor) || (abs($Tk::pressX - $x) >= 3)) - { - $Tk::mouseMoved = 1 - } - my $mode = $Tk::selectMode; - return unless $mode; - if ($mode eq 'char') - { - # The Tcl version uses selectionRange here XXX - if ($Tk::mouseMoved) - { - if ($cur < $anchor) - { - $w->selectionTo($cur) - } - else - { - $w->selectionTo($cur+1) - } - } - } - elsif ($mode eq 'word') - { - # The Tcl version uses tcl_wordBreakBefore/After here XXX - 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; -} -# ::tk::EntryPaste -- -# This procedure sets the insertion cursor to the current mouse position, -# pastes the selection there, and sets the focus to the window. -# -# Arguments: -# w - The entry window. -# x - X position of the mouse. -sub Paste -{ - my($w, $x) = @_; - $w->icursor($w->ClosestGap($x)); - eval { local $SIG{__DIE__}; - $w->insert("insert", $w->GetSelection); - $w->SeeInsert; # Perl/Tk extension - }; - if ($w->cget(-state) ne 'disabled') - { - $w->focus; - } -} -# 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; - return if !Tk::Exists($w); - 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); - # XXX Missing repositioning part from Tcl/Tk source - } -} -# 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; -} - -# ::tk::EntryGetSelection -- -# -# Returns the selected text of the entry with respect to the -show option. -# -# Arguments: -# w - The entry window from which the text to get -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-$s); -} - - -1; - -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/ErrorDialog.pm b/Master/tlpkg/tlperl.old/lib/Tk/ErrorDialog.pm deleted file mode 100644 index 19377eaeca4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/ErrorDialog.pm +++ /dev/null @@ -1,125 +0,0 @@ -package Tk::ErrorDialog; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #7 $ =~ /\D(\d+)\s*$/; - -use Tk (); -require Tk::Dialog; -use base qw(Tk::Toplevel); - - -# ErrorDialog - a translation of bgerror() from Tcl/Tk to Perl/Tk. -# -# Currently TkPerl background errors are sent to stdout/stderr; use this -# module if you want them in a window. You can also "roll your own" by -# supplying the routine Tk::Error. - -use strict; - -Construct Tk::Widget 'ErrorDialog'; - -my %options = ( -buttons => ['OK', 'Skip Messages', 'Stack trace'], - -bitmap => 'error' - ); -my $ED_OBJECT; - -sub import -{ - my $class = shift; - while (@_) - { - my $key = shift; - my $val = shift; - $options{$key} = $val; - } -} - -sub Populate { - - # ErrorDialog constructor. Uses `new' method from base class - # to create object container then creates the dialog toplevel and the - # traceback toplevel. - - my($cw, $args) = @_; - - my $dr = $cw->Dialog( - -title => 'Error in '.$cw->MainWindow->name, - -text => 'on-the-fly-text', - -bitmap => $options{'-bitmap'}, - -buttons => $options{'-buttons'}, - ); - $cw->minsize(1, 1); - $cw->title('Stack Trace for Error'); - $cw->iconname('Stack Trace'); - my $t_ok = $cw->Button( - -text => 'OK', - -command => [ - sub { - shift->withdraw; - }, $cw, - ] - ); - my $t_text = $cw->Text( - -relief => 'sunken', - -bd => 2, - -setgrid => 'true', - -width => 60, - -height => 20, - ); - my $t_scroll = $cw->Scrollbar( - -relief => 'sunken', - -command => ['yview', $t_text], - ); - $t_text->configure(-yscrollcommand => ['set', $t_scroll]); - $t_ok->pack(-side => 'bottom', -padx => '3m', -pady => '2m'); - $t_scroll->pack(-side => 'right', -fill => 'y'); - $t_text->pack(-side => 'left', -expand => 'yes', -fill => 'both'); - $cw->withdraw; - - $cw->Advertise(error_dialog => $dr); # advertise dialog widget - $cw->Advertise(text => $t_text); # advertise text widget - $cw->ConfigSpecs(-cleanupcode => [PASSIVE => undef, undef, undef], - -appendtraceback => [ PASSIVE => undef, undef, 1 ]); - $ED_OBJECT = $cw; - $cw->protocol('WM_DELETE_WINDOW' => sub {$cw->withdraw}); - return $cw; - -} # end Populate - -sub Tk::Error { - - # Post a dialog box with the error message and give the user a chance - # to see a more detailed stack trace. - - my($w, $error, @msgs) = @_; - - my $grab = $w->grab('current'); - $grab->Unbusy if (defined $grab); - - $w->ErrorDialog if not defined $ED_OBJECT; - - my($d, $t) = ($ED_OBJECT->Subwidget('error_dialog'), $ED_OBJECT->Subwidget('text')); -# chop $error; - $d->configure(-text => "Error: $error"); - $d->bell; - my $ans = $d->Show; - - $t->delete('0.0', 'end') if not $ED_OBJECT->{'-appendtraceback'}; - $t->insert('end', "\n"); - $t->mark('set', 'ltb', 'end'); - $t->insert('end', "--- Begin Traceback ---\n$error\n"); - my $msg; - for $msg (@msgs) { - $t->insert('end', "$msg\n"); - } - $t->yview('ltb'); - - $ED_OBJECT->deiconify if ($ans =~ /trace/i); - - my $c = $ED_OBJECT->{Configure}{'-cleanupcode'}; - &$c if defined $c; # execute any cleanup code if it was defined - $w->break if ($ans =~ /skip/i); - -} # end Tk::Error - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Event.pm b/Master/tlpkg/tlperl.old/lib/Tk/Event.pm deleted file mode 100644 index cecd57c54ae..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Event.pm +++ /dev/null @@ -1,13 +0,0 @@ -package Tk::Event; -use vars qw($VERSION $XS_VERSION @EXPORT_OK); -END { CleanupGlue() } -$VERSION = sprintf '4.%03d', q$Revision: #15 $ =~ /\D(\d+)\s*$/; -$XS_VERSION = '804.027'; -use base qw(Exporter); -use XSLoader; -@EXPORT_OK = qw($XS_VERSION DONT_WAIT WINDOW_EVENTS FILE_EVENTS - TIMER_EVENTS IDLE_EVENTS ALL_EVENTS); -XSLoader::load 'Tk::Event',$XS_VERSION; -require Tk::Event::IO; -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Event/IO.pm b/Master/tlpkg/tlperl.old/lib/Tk/Event/IO.pm deleted file mode 100644 index 10b47e246ff..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Event/IO.pm +++ /dev/null @@ -1,132 +0,0 @@ -package Tk::Event::IO; -use strict; -use Carp; - -use vars qw($VERSION @EXPORT_OK); -$VERSION = sprintf '4.%03d', q$Revision: #8 $ =~ /\D(\d+)\s*$/; - -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); - unless ($obj && $obj->isa('Tk::Event::IO')) - { - $obj = tie *$file,'Tk::Event::IO', $file; - } - if (@_ == 3) - { - # query return the handler - return $obj->handler($imode); - } - else - { - # set the handler - my $h = $obj->handler($imode,$cb); - undef $obj; # Prevent warnings about untie with ref to object - unless ($h) - { - untie *$file; - } - } -} - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/FBox.pm b/Master/tlpkg/tlperl.old/lib/Tk/FBox.pm deleted file mode 100644 index fed7501aea4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/FBox.pm +++ /dev/null @@ -1,1043 +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 perl/Tk by Slaven Rezic <slaven@rezic.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 = sprintf '4.%03d', q$Revision: #18 $ =~ /\D(\d+)\s*$/; - -use base qw(Tk::Toplevel); - -Construct Tk::Widget 'FBox'; - -sub import { - if (defined $_[1] and $_[1] eq 'as_default') { - local $^W = 0; - package Tk; - if ($Tk::VERSION < 804) { - *FDialog = \&Tk::FBox::FDialog; - *MotifFDialog = \&Tk::FBox::FDialog; - } else { - *tk_getOpenFile = sub { - Tk::FBox::FDialog("tk_getOpenFile", @_); - }; - *tk_getSaveFile = sub { - Tk::FBox::FDialog("tk_getSaveFile", @_); - }; - } - } -} - -# Note that -sortcmd is experimental and the interface is likely to change. -# Using -sortcmd is really strange :-( -# $top->getOpenFile(-sortcmd => sub { package Tk::FBox; uc $b cmp uc $a}); -# or, un-perlish, but useable (now activated in code): -# $top->getOpenFile(-sortcmd => sub { uc $_[1] cmp uc $_[0]}); - -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->{$w->MainWindow}) { - $updirImage->{$w->MainWindow} = $w->Bitmap(-data => <<EOF); -#define updir_width 28 -#define updir_height 16 -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->{$w->MainWindow}); - $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(-command => ['OkCmd', $w, 'iconlist'], - ); - $icons->bind('<<ListboxSelect>>' => [$w, 'ListBrowse']); - - # f2: the frame with the OK button and the "file name" field - my $f2 = $w->Frame(-bd => 0); -#XXX File name => File names if multiple - 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), - -takefocus => 0, - ); - $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], -# -sortcmd => ['PASSIVE', undef, undef, sub { lc($a) cmp lc($b) }], - -sortcmd => ['PASSIVE', undef, undef, sub { lc($_[0]) cmp lc($_[1]) }], - -title => ['PASSIVE', undef, undef, undef], - -type => ['PASSIVE', undef, undef, 'open'], - -filter => ['PASSIVE', undef, undef, '*'], - -force => ['PASSIVE', undef, undef, 0], - -multiple => ['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; -} - -# -initialdir fix with ResolveFile -sub Show { - my $w = shift; - - $w->configure(@_); - - # Dialog boxes should be transient with respect to their parent, - # so that they will always stay on top of their parent window. However, - # some window managers will create the window as withdrawn if the parent - # window is withdrawn or iconified. Combined with the grab we put on the - # window, this can hang the entire application. Therefore we only make - # the dialog transient if the parent is viewable. - - if (Tk::Exists($w->Parent) && $w->Parent->viewable) { - $w->transient($w->Parent); - } - - # set the default directory and selection according to the -initial - # settings - { - my $initialdir = $w->cget(-initialdir); - if (defined $initialdir) { - my ($flag, $path, $file) = ResolveFile($initialdir, 'junk'); - if ($flag eq 'OK' or $flag eq 'FILE') { - $w->{'selectPath'} = $path; - } else { - $w->Error("\"$initialdir\" is not a valid directory"); - } - } - $w->{'selectFile'} = $w->cget(-initialfile); - } - - # Set -multiple to a one or zero value (not other boolean types - # like "yes") so we can use it in tests more easily. - if ($w->cget('-type') ne 'open') { - $w->configure(-multiple => 0); - } else { - $w->configure(-multiple => !!$w->cget('-multiple')); - } - $w->{'icons'}->configure(-multiple => $w->cget('-multiple')); - - # 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 { -#XXX $w->configure(-filter => '*'); - $typeMenuBtn->configure(-state => 'disabled', - -takefocus => 0); - $typeMenuLab->configure(-state => 'disabled'); - } - $w->UpdateWhenIdle; - - { - my $title = $w->cget(-title); - if (!defined $title) { - my $type = $w->cget(-type); - $title = ($type eq 'dir') ? 'Choose Directory' - : ($type eq 'save') ? 'Save As' : 'Open'; - } - $w->title($title); - } - - # 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; - if (0) - { - #XXX use Tk::Wm::Popup? or Tk::PlaceWindow? - 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"); - $w->deiconify; - } - else - { - $w->Popup; - } - - # Set a grab and claim the focus too. -#XXX use Tk::setFocusGrab when it's available - 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'); - if (defined $w->{'selectFile'} && $w->{'selectFile'} ne '') { - $ent->insert(0, $w->{'selectFile'}); - $ent->selectionRange(0,'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(\$w->{'selectFilePath'}); - eval { - $oldFocus->focus if $oldFocus; - }; - if (Tk::Exists($w)) { # widget still exists - $w->grabRelease; - $w->withdraw; - } - if (Tk::Exists($oldGrab) && $oldGrab->viewable) { - if ($grabStatus eq 'global') { - $oldGrab->grabGlobal; - } else { - $oldGrab->grab; - } - } - return $w->{'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->{$w->MainWindow}) { - require Tk::Pixmap; - $folderImage->{$w->MainWindow} = $w->Pixmap(-file => Tk->findINC('folder.xpm')); - $fileImage->{$w->MainWindow} = $w->Pixmap(-file => Tk->findINC('file.xpm')); - } - my $folder = $folderImage->{$w->MainWindow}; - my $file = $fileImage->{$w->MainWindow}; - 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 $cwd = _cwd(); - local *FDIR; - if (opendir(FDIR, $cwd)) { - my @files; -# my $sortcmd = $w->cget(-sortcmd); - my $sortcmd = sub { $w->cget(-sortcmd)->($a,$b) }; - my $flt = $w->cget(-filter); - my $fltcb; - if (ref $flt eq 'CODE') { - $fltcb = $flt; - } else { - $flt = _rx_to_glob($flt); - } - my $type_dir = $w->cget(-type) eq 'dir'; - foreach my $f (sort $sortcmd readdir(FDIR)) { - next if $f eq '.' or $f eq '..'; - next if $type_dir && ! -d "$cwd/$f"; # XXX use File::Spec? - if ($fltcb) { - next if !$fltcb->($w, $f, $cwd); - } else { - next if -f $f && $f !~ m!$flt!; - } - if (-d $f) { - $icons->Add($folder, $f); - } else { - push @files, $f; - } - } - closedir(FDIR); - $icons->Add($file, @files); - } - - $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 -# -#XXX here's much more code in the tcl version ... check it out -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); - # If the file has no extension, append the default. Be careful not - # to do this for directories, otherwise typing a dirname in the box - # will give back "dirname.extension" instead of trying to change dir. - if (!-d $path && $path !~ /\..+$/ && defined $defaultext) { - $path = "$path$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->selectionRange(0, 'end'); - $ent->icursor('end'); - } else { - $ent->selectionClear; - } -#XXX is this missing in the tcl version, too??? $w->{'icons'}->Selection('clear'); - my $okBtn = $w->{'okBtn'}; - if ($w->cget(-type) ne 'save') { - $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; - if ($w->cget(-multiple)) { - # For the multiple case we have to be careful to get the file - # names as a true list, watching out for a single file with a - # space in the name. Thus we query the IconList directly. - - $w->{'selectFile'} = []; - for my $item ($w->{'icons'}->Curselection) { - $w->VerifyFileName($w->{'icons'}->Get($item)); - } - } else { - $w->VerifyFileName($text); - } -} - -# Verification procedure -# -sub VerifyFileName { - my($w, $text) = @_; -#XXX leave this here? -# $text =~ s/^\s+//; -# $text =~ s/\s+$//; - my($flag, $path, $file) = ResolveFile($w->{'selectPath'}, $text, - $w->cget(-defaultextension)); - my $ent = $w->{'ent'}; - 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); - if ($w->cget(-multiple)) { - push @{ $w->{'selectFile'} }, $file; - } else { - $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->selectionRange(0, 'end'); - $ent->icursor('end'); - } elsif ($w->cget(-type) eq 'save') { - $w->SetPathSilently($path); - if ($w->cget(-multiple)) { - push @{ $w->{'selectFile'} }, $file; - } else { - $w->{'selectFile'} = $file; - } - $w->Done; - } - } elsif ($flag eq 'PATH') { - $w->messageBox(-icon => 'warning', - -type => 'OK', - -message => "Directory \'$path\' does not exist."); - $ent->selectionRange(0, 'end'); - $ent->icursor('end'); - } elsif ($flag eq 'CHDIR') { - $w->messageBox(-type => 'OK', - -message => "Cannot change to the directory \"$path\".\nPermission denied.", - -icon => 'warning'); - $ent->selectionRange(0, 'end'); - $ent->icursor('end'); - } elsif ($flag eq 'ERROR') { - $w->messageBox(-type => 'OK', - -message => "Invalid file name \"$path\".", - -icon => 'warning'); - $ent->selectionRange(0, '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 $from = shift || "button"; - - my $filenames = []; - for my $item ($w->{'icons'}->Curselection) { - push @$filenames, $w->{'icons'}->Get($item); - } - - my $filename = $filenames->[0]; - if ($w->cget('-type') eq 'dir' && $from ne "iconlist") { - my $file = $filename eq '' ? $w->{'selectPath'} : JoinFile($w->{'selectPath'}, $filename); - $w->Done($file); - } elsif ((@$filenames && !$w->cget('-multiple')) || - ($w->cget('-multiple') && @$filenames == 1)) { - my $file = JoinFile($w->{'selectPath'}, $filename); - if (-d $file) { - $w->ListInvoke($filename); - return; - } - } - - $w->ActivateEnt; -} - -# Gets called when user presses the "Cancel" button -# -sub CancelCmd { - my $w = shift; - undef $w->{'selectFilePath'}; -} - -# Gets called when user browses the IconList widget (dragging mouse, arrow -# keys, etc) -# -sub ListBrowse { - my($w) = @_; - - my $text = []; - for my $item ($w->{'icons'}->Curselection) { - push @$text, $w->{'icons'}->Get($item); - } - return if @$text == 0; - my $isDir; - if (@$text > 1) { - my $newtext = []; - for my $file (@$text) { - my $fullfile = JoinFile($w->{'selectPath'}, $file); - if (!-d $fullfile) { - push @$newtext, $file; - } - } - $text = $newtext; - $isDir = 0; - } else { - my $file = JoinFile($w->{'selectPath'}, $text->[0]); - $isDir = -d $file; - } - my $ent = $w->{'ent'}; - my $okBtn = $w->{'okBtn'}; - if (!$isDir) { - $ent->delete(qw(0 end)); - $ent->insert(0, "@$text"); # XXX quote! - - if ($w->cget('-type') ne 'save') { - $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, @filenames) = @_; - return if !@filenames; - my $file = JoinFile($w->{'selectPath'}, $filenames[0]); - 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 { - if ($w->cget('-multiple')) { - $w->{'selectFile'} = [@filenames]; - } 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 '') { - if ($w->cget('-multiple')) { - $selectFilePath = []; - for my $f (@{ $w->{'selectFile'} }) { - push @$selectFilePath, JoinFile($w->{'selectPath'}, $f); - } - } else { - $selectFilePath = JoinFile($w->{'selectPath'}, - $w->{'selectFile'}); - } - if ($w->cget(-type) eq 'save' and - -e $selectFilePath 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'); - } - } - $w->{'selectFilePath'} = ($selectFilePath ne '' ? $selectFilePath : undef); -} - -sub FDialog { - my $cmd = shift; - if ($cmd =~ /Save/) { - push @_, -type => 'save'; - } elsif ($cmd =~ /Directory/) { - push @_, -type => 'dir'; - } - 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; -} - -sub _rx_to_glob { - my $arg = shift; - $arg = join('|', split(' ', $arg)); - $arg =~ s!([\.\+])!\\$1!g; - $arg =~ s!\*!.*!g; - $arg = "^" . $arg . "\$"; - if ($] >= 5.005) { - $arg = qr/$arg/; - } - $arg; -} - -1; - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/FileSelect.pm b/Master/tlpkg/tlperl.old/lib/Tk/FileSelect.pm deleted file mode 100644 index d2070049d82..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/FileSelect.pm +++ /dev/null @@ -1,578 +0,0 @@ -package Tk::FileSelect; - -use vars qw($VERSION @EXPORT_OK); -$VERSION = sprintf '4.%03d', q$Revision: #15 $ =~ /\D(\d+)\s*$/; -@EXPORT_OK = qw(glob_to_re); - -use Tk qw(Ev); -use strict; -use Carp; -use base qw(Tk::Toplevel); -use Tk::widgets qw(LabEntry Button Frame Listbox Scrollbar); -use File::Basename; - -Construct Tk::Widget 'FileSelect'; - -use vars qw(%error_text); -%error_text = ( - '-r' => 'is not readable by effective uid/gid', - '-w' => 'is not writeable by effective uid/gid', - '-x' => 'is not executable by effective uid/gid', - '-R' => 'is not readable by real uid/gid', - '-W' => 'is not writeable by real uid/gid', - '-X' => 'is not executable by real uid/gid', - '-o' => 'is not owned by effective uid/gid', - '-O' => 'is not owned by real uid/gid', - '-e' => 'does not exist', - '-z' => 'is not of size zero', - '-s' => 'does not exists or is of size zero', - '-f' => 'is not a file', - '-d' => 'is not a directory', - '-l' => 'is not a link', - '-S' => 'is not a socket', - '-p' => 'is not a named pipe', - '-b' => 'is not a block special file', - '-c' => 'is not a character special file', - '-u' => 'is not setuid', - '-g' => 'is not setgid', - '-k' => 'is not sticky', - '-t' => 'is not a terminal file', - '-T' => 'is not a text file', - '-B' => 'is not a binary file', - '-M' => 'has no modification date/time', - '-A' => 'has no access date/time', - '-C' => 'has no inode change date/time', - ); - -# Documentation after __END__ - -sub import { - if (defined $_[1] and $_[1] eq 'as_default') { - local $^W = 0; - package Tk; - if ($Tk::VERSION < 804) { - *FDialog = \&Tk::FileSelect::FDialog; - *MotifFDialog = \&Tk::FileSelect::FDialog; - } else { - *tk_getOpenFile = sub { - Tk::FileSelect::FDialog("tk_getOpenFile", @_); - }; - *tk_getSaveFile = sub { - Tk::FileSelect::FDialog("tk_getSaveFile", @_); - }; - } - } -} - -sub Cancel -{ - my ($cw) = @_; - $cw->{Selected} = undef; - $cw->withdraw unless $cw->cget('-transient'); -} - -sub Accept { - - # Accept the file or directory name if possible. - - my ($cw) = @_; - - my($path, $so) = ($cw->cget('-directory'), $cw->SelectionOwner); - my $leaf = undef; - my $leaves; - - if (defined $so and - $so == $cw->Subwidget('dir_list')->Subwidget('listbox')) { - $leaves = [$cw->Subwidget('dir_list')->getSelected]; - $leaves = [$cw->Subwidget('dir_entry')->get] if !scalar(@$leaves); - } else { - $leaves = [$cw->Subwidget('file_list')->getSelected]; - $leaves = [$cw->Subwidget('file_entry')->get] if !scalar(@$leaves); - } - - foreach $leaf (@$leaves) - { - if (defined $leaf and $leaf ne '') { - if (!$cw->cget('-create') || -e "$path/$leaf") - { - foreach (@{$cw->cget('-verify')}) { - my $r = ref $_; - if (defined $r and $r eq 'ARRAY') { - #local $_ = $leaf; # use strict var problem here - return if not &{$_->[0]}($cw, $path, $leaf, @{$_}[1..$#{$_}]); - } else { - my $s = eval "$_ '$path/$leaf'"; - print $@ if $@; - if (not $s) { - my $err; - if (substr($_,0,1) eq '!') - { - my $t = substr($_,1); - if (exists $error_text{$t}) - { - $err = $error_text{$t}; - $err =~ s/\b(?:no|not) //; - } - } - $err = $error_text{$_} unless defined $err; - $err = "failed '$_' test" unless defined $err; - $cw->Error("'$leaf' $err."); - return; - } - } - } # forend - } - else - { - unless (-w $path) - { - $cw->Error("Cannot write to $path"); - return; - } - } - $leaf = $path . '/' . $leaf; - } else { - $leaf = undef; - } - } - if (scalar(@$leaves)) - { - my $sm = $cw->Subwidget('file_list')->cget(-selectmode); - $cw->{Selected} = $leaves; - my $command = $cw->cget('-command'); - $command->Call(@{$cw->{Selected}}) if defined $command; - } - -} # end Accept - -sub Accept_dir -{ - my ($cw,$new) = @_; - my $dir = $cw->cget('-directory'); - $cw->configure(-directory => "$dir/$new"); -} - -sub Populate { - - my ($w, $args) = @_; - - require Tk::Listbox; - require Tk::Button; - require Tk::Dialog; - require Tk::Toplevel; - require Tk::LabEntry; - require Cwd; - - $w->SUPER::Populate($args); - $w->protocol('WM_DELETE_WINDOW' => ['Cancel', $w ]); - - $w->{'reread'} = 0; - $w->withdraw; - - # Create directory/filter entry, place at the top. - my $e = $w->Component( - LabEntry => 'dir_entry', - -textvariable => \$w->{DirectoryString}, - -labelVariable => \$w->{Configure}{-dirlabel}, - ); - $e->pack(-side => 'top', -expand => 0, -fill => 'x'); - $e->bind('<Return>' => [$w => 'validateDir', Ev(['get'])]); - - # Create file entry, place at the bottom. - $e = $w->Component( - LabEntry => 'file_entry', - -textvariable => \$w->{Configure}{-initialfile}, - -labelVariable => \$w->{Configure}{-filelabel}, - ); - $e->pack(-side => 'bottom', -expand => 0, -fill => 'x'); - $e->bind('<Return>' => [$w => 'validateFile', Ev(['get'])]); - $e->bind('<FocusIn>' => [$w => 'SelectionClear']); - - # Create directory scrollbox, place at the left-middle. - my $b = $w->Component( - ScrlListbox => 'dir_list', - -labelVariable => \$w->{Configure}{-dirlistlabel}, - -scrollbars => 'se', - ); - $b->pack(-side => 'left', -expand => 1, -fill => 'both'); - $b->bind('<Double-Button-1>' => [$w => 'Accept_dir', Ev(['getSelected'])]); - - # Add a label. - - my $f = $w->Frame(); - $f->pack(-side => 'right', -fill => 'y', -expand => 0); - $b = $f->Button('-textvariable' => \$w->{'Configure'}{'-acceptlabel'}, - -command => [ 'Accept', $w ], - ); - $b->pack(-side => 'top', -fill => 'x', -expand => 1); - $b = $f->Button('-textvariable' => \$w->{'Configure'}{'-cancellabel'}, - -command => [ 'Cancel', $w ], - ); - $b->pack(-side => 'top', -fill => 'x', -expand => 1); - $b = $f->Button('-textvariable' => \$w->{'Configure'}{'-resetlabel'}, - -command => [$w => 'configure','-directory','.'], - ); - $b->pack(-side => 'top', -fill => 'x', -expand => 1); - $b = $f->Button('-textvariable' => \$w->{'Configure'}{'-homelabel'}, - -command => [$w => 'configure','-directory',$ENV{'HOME'}], - ); - $b->pack(-side => 'top', -fill => 'x', -expand => 1); - - # Create file scrollbox, place at the right-middle. - - $b = $w->Component( - ScrlListbox => 'file_list', - -labelVariable => \$w->{Configure}{-filelistlabel}, - -scrollbars => 'se', - ); - $b->pack(-side => 'right', -expand => 1, -fill => 'both'); - $b->bind('<Double-1>' => [$w => 'Accept']); - - # Create -very dialog. - - my $v = $w->Component( - Dialog => 'dialog', - -title => 'Verify Error', - -bitmap => 'error', - -buttons => ['Dismiss'], - ); - - $w->ConfigSpecs( - -width => [ ['file_list','dir_list'], undef, undef, 14 ], - -height => [ ['file_list','dir_list'], undef, undef, 14 ], - -directory => [ 'METHOD', undef, undef, '.' ], - -initialdir => '-directory', - -filelabel => [ 'PASSIVE', 'fileLabel', 'FileLabel', 'File' ], - -initialfile => [ 'PASSIVE', undef, undef, '' ], - -filelistlabel => [ 'PASSIVE', undef, undef, 'Files' ], - -filter => [ 'METHOD', undef, undef, undef ], - -defaultextension => [ 'METHOD', undef, undef, undef ], - -regexp => [ 'METHOD', undef, undef, undef ], - -dirlistlabel => [ 'PASSIVE', undef, undef, 'Directories'], - -dirlabel => [ 'PASSIVE', undef, undef, 'Directory'], - '-accept' => [ 'CALLBACK',undef,undef, undef ], - -command => [ 'CALLBACK',undef,undef, undef ], - -transient => [ 'PASSIVE', undef, undef, 1 ], - -verify => [ 'PASSIVE', undef, undef, ['!-d'] ], - -create => [ 'PASSIVE', undef, undef, 0 ], - -acceptlabel => [ 'PASSIVE', undef, undef, 'Accept'], - -cancellabel => [ 'PASSIVE', undef, undef, 'Cancel'], - -resetlabel => [ 'PASSIVE', undef, undef, 'Reset'], - -homelabel => [ 'PASSIVE', undef, undef, 'Home'], - DEFAULT => [ 'file_list' ], - ); - $w->Delegates(DEFAULT => 'file_list'); - - return $w; - -} # end Populate - -sub translate - { - my ($bs,$ch) = @_; - return "\\$ch" if (length $bs); - return '.*' if ($ch eq '*'); - return '.' if ($ch eq '?'); - return "\\." if ($ch eq '.'); - return "\\/" if ($ch eq '/'); - return "\\\\" if ($ch eq '\\'); - return $ch; -} - -sub glob_to_re -{ - my $regex = shift; - $regex =~ s/(\\?)(.)/&translate($1,$2)/ge; - return sub { shift =~ /^${regex}$/ }; -} - -sub filter -{ - my ($cw,$val) = @_; - my $var = \$cw->{Configure}{'-filter'}; - if (@_ > 1 || !defined($$var)) - { - $val = '*' unless defined $val; - $$var = $val; - $cw->{'match'} = glob_to_re($val) unless defined $cw->{'match'}; - unless ($cw->{'reread'}++) - { - $cw->Busy; - $cw->afterIdle(['reread',$cw,$cw->cget('-directory')]) - } - } - return $$var; -} - -sub regexp -{ - my ($cw,$val) = @_; - my $var = \$cw->{Configure}{'-regexp'}; - if (@_ > 1) - { - $$var = $val; - $cw->{'match'} = (defined $val) ? sub { shift =~ m|^${val}$| } : sub { 1 }; - unless ($cw->{'reread'}++) - { - $cw->Busy; - $cw->afterIdle(['reread',$cw]) - } - } - return $$var; -} - -sub defaultextension -{ - my ($cw,$val) = @_; - if (@_ > 1) - { - $val = '' unless defined $val; - $val = ".$val" if ($val !~ /^\./); - $cw->filter("*$val"); - } - else - { - $val = $cw->filter; - my ($ext) = $val =~ /(\.[^\.]*)$/; - return $ext; - } -} - -sub directory -{ - my ($cw,$dir) = @_; - my $var = \$cw->{Configure}{'-directory'}; - if (@_ > 1 && defined $dir) - { - if (substr($dir,0,1) eq '~') - { - if (substr($dir,1,1) eq '/') - { - $dir = (defined $ENV{'HOME'} ? $ENV{'HOME'} : '') . substr($dir,1); - } - else - {my ($uid,$rest) = ($dir =~ m#^~([^/]+)(/.*$)#); - $dir = (getpwnam($uid))[7] . $rest; - } - } - my $revert_dir = sub - { - my $message = shift; - $$var = $cw->{OldDirectory}; - $cw->messageBox(-message => $message, -icon => 'error'); - if (!defined $$var) - { - # OldDirectory was never set, so force reread... - $$var = $cw->{OldDirectory} = Cwd::getcwd(); # XXX maybe use check like code below... - unless ($cw->{'reread'}++) - { - $cw->Busy; - $cw->afterIdle(['reread',$cw]) - } - } - $$var; - }; - $dir =~ s#([^/\\])[\\/]+$#$1#; - if (-d $dir) - { - unless (Tk::tainting()) - { - my $pwd = Cwd::getcwd(); - if (chdir( (defined($dir) ? $dir : '') ) ) - { - my $new = Cwd::getcwd(); - if ($new) - { - $dir = $new; - } - else - { - return $revert_dir->("Cannot getcwd in '$dir'"); - } - if (!chdir($pwd)) - { - return $revert_dir->("Cannot change directory to $pwd:\n$!"); - } - $$var = $dir; - } - else - { - return $revert_dir->("Cannot change directory to $dir:\n$!"); - } - $$var = $cw->{OldDirectory} = $dir; - } - unless ($cw->{'reread'}++) - { - $cw->Busy; - $cw->afterIdle(['reread',$cw]) - } - } - } - return $$var; -} - -sub reread -{ - my ($w) = @_; - my $dir = $w->cget('-directory'); - if (defined $dir) - { - if (!defined $w->cget('-filter') or $w->cget('-filter') eq '') - { - $w->configure('-filter', '*'); - } - my $dl = $w->Subwidget('dir_list'); - $dl->delete(0, 'end'); - $dl->selectionClear(0,'end'); - my $fl = $w->Subwidget('file_list'); - $fl->delete(0, 'end'); - local *DIR; - if (opendir(DIR, $dir)) - { - my $file = $w->cget('-initialfile'); - my $seen = 0; - my $accept = $w->cget('-accept'); - foreach my $f (sort(readdir(DIR))) - { - next if ($f eq '.'); - my $path = "$dir/$f"; - if (-d $path) - { - $dl->insert('end', $f); - } - else - { - if (&{$w->{match}}($f)) - { - if (!defined($accept) || $accept->Call($path)) - { - $seen = $fl->index('end') if ($file && $f eq $file); - $fl->insert('end', $f) - } - } - } - } - closedir(DIR); - if ($seen) - { - $fl->selectionSet($seen); - $fl->see($seen); - } - else - { - $w->configure(-initialfile => undef) unless $w->cget('-create'); - } - } - $w->{DirectoryString} = $dir . ($dir ne '/' ? '/' : '') . $w->cget('-filter'); - } - $w->{'reread'} = 0; - $w->Unbusy if $w->{'Busy'}; -} - -sub validateDir -{ - my ($cw,$name) = @_; - my ($leaf,$base) = fileparse($name); - if ($leaf =~ /[*?]/) - { - $cw->configure('-directory' => $base,'-filter' => $leaf); - } - else - { - $cw->configure('-directory' => $name); - } -} - -sub validateFile -{ - my ($cw,$name) = @_; - my $i = 0; - my $n = $cw->index('end'); - # See if it is an existing file - for ($i= 0; $i < $n; $i++) - { - my $f = $cw->get($i); - if ($f eq $name) - { - $cw->selection('set',$i); - $cw->Accept; - } - } - # otherwise allow if -create is set, directory is writable - # and it passes filter and accept criteria - if ($cw->cget('-create')) - { - my $path = $cw->cget('-directory'); - if (-w $path) - { - if (&{$cw->{match}}($name)) - { - my $accept = $cw->cget('-accept'); - my $full = "$path/$name"; - if (!defined($accept) || $accept->Call($full)) - { - $cw->{Selected} = [$full]; - $cw->Callback(-command => @{$cw->{Selected}}); - } - else - { - $cw->Error("$name is not 'acceptable'"); - } - } - else - { - $cw->Error("$name does not match '".$cw->cget('-filter').'\''); - } - } - else - { - $cw->Error("Directory '$path' is not writable"); - return; - } - } -} - -sub Error -{ - my $cw = shift; - my $msg = shift; - my $dlg = $cw->Subwidget('dialog'); - $dlg->configure(-text => $msg); - $dlg->Show; -} - -sub Show -{ - my ($cw,@args) = @_; - if ($cw->cget('-transient')) { - $cw->Popup(@args); - $cw->focus; - $cw->waitVariable(\$cw->{Selected}); - $cw->withdraw; - return defined($cw->{Selected}) - ? (wantarray) ? @{$cw->{Selected}} : $cw->{Selected}[0] - : undef; - } else { - $cw->Popup(@args); - } -} - -sub FDialog -{ - my($cmd, %args) = @_; - if ($cmd =~ /Save/) - { - $args{-create} = 1; - $args{-verify} = [qw(!-d -w)]; - } - delete $args{-filetypes}; - delete $args{-force}; - Tk::DialogWrapper('FileSelect',$cmd, %args); -} - -1; - -__END__ - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/FloatEntry.pm b/Master/tlpkg/tlperl.old/lib/Tk/FloatEntry.pm deleted file mode 100644 index eb6465dbe61..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/FloatEntry.pm +++ /dev/null @@ -1,109 +0,0 @@ -# Tranlation of FloatEnt.tcl in Tix4.1 - -# TODO/IDEA: -# o extract a widget (SimpleEntry?) without post/unpost methods -# and derive FloatEntry fron this widget. - -package Tk::FloatEntry; -use strict; - -BEGIN - { - use vars '$DEBUG'; - $DEBUG = (defined($ENV{USER}) and $ENV{USER} eq 'achx') ? 1 : 0; - print STDERR "tixGrid: debug = $DEBUG\n" if $DEBUG; - } - -require Tk; -require Tk::Widget; -require Tk::Derived; -require Tk::Entry; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/TixGrid/FloatEntry.pm#4 $ - -use base qw(Tk::Derived Tk::Entry); - -Construct Tk::Widget 'FloatEntry'; - -sub ClassInit - { - my ($class, $mw) = @_; - $class->SUPER::ClassInit($mw); - $mw->bind($class, '<Return>', 'invoke'); - $mw->bind($class, '<FocusIn>', 'FocusIn'); - $class; - } - -sub Populate - { - my ($e, $args) = @_; - $e->ConfigSpecs( - -value => ['METHOD', 'value', 'Value', undef], - -highlightthickness => [$e, 'highlightThickness', 'HighlightThickness', 0 ], - -command => ['CALLBACK', 'command', 'Command', undef], - ); - print "FloatEntry Init: $e\n" if $DEBUG; - $e; - } - -## option method - -sub value - { - my $e = shift; - unless (@_) - { - return $e->get - } - $e->delete(0,'end'); - $e->insert(0,$_[0]); - $e->selection('from', 0); - $e->selection('to', 'end'); - - } - -## public methods - -sub invoke - { - my ($e) = @_; - $e->Callback('-command', $e->get); - } - -sub post - { - my ($e, $x, $y, $dx, $dy) = @_; - - $dx = $e->reqwidth unless defined $dx; - $dy = $e->reqheight unless defined $dy; - - $e->place('-x'=>$x, '-y'=>$y, -width=>$dx, -height=>$dy, -bordermode=>'ignore'); - $e->raise; - $e->focus; - } - -sub unpost - { - my ($e) = @_; - $e->place('forget'); - } - -## bindings - -sub FocusIn - { - my ($e) = @_; - - # FIX: xxx only if entry has not already focus - { - $e->focus; - $e->selection('from', 0); - $e->selection('to', 'end'); - $e->icursor('end'); - } - } - -1; -__END__ - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Font.pm b/Master/tlpkg/tlperl.old/lib/Tk/Font.pm deleted file mode 100644 index bb1b52cc7c5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Font.pm +++ /dev/null @@ -1,163 +0,0 @@ -package Tk::Font; -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Font.pm#4 $ -require Tk::Widget; -use strict; -use Carp; -use overload '""' => 'as_string'; -sub as_string { return ${$_[0]} } - -*MainWindow = \&Tk::Widget::MainWindow; - -foreach my $key (qw(actual metrics measure configure)) - { - no strict 'refs'; - *{$key} = sub { shift->Tk::font($key,@_) }; - } - -Construct Tk::Widget 'Font'; - -my @xfield = qw(foundry family weight slant swidth adstyle pixel - point xres yres space avgwidth registry encoding); -my @tkfield = qw(family size weight slant underline overstrike); -my %tkfield = map { $_ => "-$_" } @tkfield; - -sub _xonly { my $old = '*'; return $old } - -sub Pixel -{ - my $me = shift; - my $old = $me->configure('-size'); - $old = '*' if ($old > 0); - if (@_) - { - $me->configure(-size => -$_[0]); - } - return $old; -} - -sub Point -{ - my $me = shift; - my $old = 10*$me->configure('-size'); - $old = '*' if ($old < 0); - if (@_) - { - $me->configure(-size => int($_[0]/10)); - } - return $old; -} - -foreach my $f (@tkfield,@xfield) - { - no strict 'refs'; - my $sub = "\u$f"; - unless (defined &{$sub}) - { - my $key = $tkfield{$f}; - if (defined $key) - { - *{$sub} = sub { shift->configure($key,@_) }; - } - else - { - *{$sub} = \&_xonly; - } - } - } - -sub new -{ - my $pkg = shift; - my $w = shift; - my $me; - if (scalar(@_) == 1) - { - $me = $w->Tk::font('create',@_); - } - else - { - croak 'Odd number of args' if @_ & 1; - my %attr; - while (@_) - { - my $k = shift; - my $v = shift; - my $t = (substr($k,0,1) eq '-') ? $k : $tkfield{$k}; - if (defined $t) - { - $attr{$t} = $v; - } - elsif ($k eq 'point') - { - $attr{'-size'} = -int($v/10+0.5); - } - elsif ($k eq 'pixel') - { - $attr{'-size'} = -$v; - } - else - { - carp "$k ignored" if $^W; - } - } - $me = $w->Tk::font('create',%attr); - } - return bless $me,$pkg; -} - -sub Pattern -{ - my $me = shift; - my @str; - foreach my $f (@xfield) - { - my $meth = "\u$f"; - my $str = $me->$meth(); - if ($f eq 'family') - { - $str =~ s/(?:Times\s+New\s+Roman|New York)/Times/i; - $str =~ s/(?:Courier\s+New|Monaco)/Courier/i; - $str =~ s/(?:Arial|Geneva)/Helvetica/i; - } - elsif ($f eq 'slant') - { - $str = substr($str,0,1); - } - elsif ($f eq 'weight') - { - $str = 'medium' if ($str eq 'normal'); - } - push(@str,$str); - } - return join('-', '', @str); -} - -sub Name -{ - my $me = shift; - return $$me if (!wantarray || ($^O eq 'MSWin32')); - my $max = shift || 128; - my $w = $me->MainWindow; - my $d = $w->Display; - return $d->XListFonts($me->Pattern,$max); -} - -sub Clone -{ - my $me = shift; - return ref($me)->new($me,$me->actual,@_); -} - -sub ascent -{ - return shift->metrics('-ascent'); -} - -sub descent -{ - return shift->metrics('-descent'); -} - -1; - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Frame.pm b/Master/tlpkg/tlperl.old/lib/Tk/Frame.pm deleted file mode 100644 index a5716cdf9bd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Frame.pm +++ /dev/null @@ -1,378 +0,0 @@ -# Copyright (c) 1995-2003 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 = '4.010'; # $Id: //depot/Tkutf8/Tk/Frame.pm#10 $ - -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 autoLabel { 1 } - -sub Populate -{ - my ($cw,$args) = @_; - if ($cw->autoLabel) - { - $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/tlpkg/tlperl.old/lib/Tk/HList.pm b/Master/tlpkg/tlperl.old/lib/Tk/HList.pm deleted file mode 100644 index 02792208243..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/HList.pm +++ /dev/null @@ -1,680 +0,0 @@ -package Tk::HList; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #14 $ =~ /\D(\d+)\s*$/; - -use Tk qw(Ev $XS_VERSION); - -use base qw(Tk::Widget); - -Construct Tk::Widget 'HList'; -sub Tk::Widget::ScrlHList { shift->Scrolled('HList'=>@_) } - -bootstrap Tk::HList; - -sub Tk_cmd { \&Tk::hlist } - -sub CreateArgs -{ - my ($package,$parent,$args) = @_; - my @result = $package->SUPER::CreateArgs($parent,$args); - my $columns = delete $args->{-columns}; - push(@result, '-columns' => $columns) if (defined $columns); - return @result; -} - -Tk::Methods qw(add addchild anchor column - delete dragsite dropsite entrycget - entryconfigure geometryinfo indicator header hide item info - nearest see select selection show xview yview); - -use Tk::Submethods ( 'delete' => [qw(all entry offsprings siblings)], - 'header' => [qw(configure cget create delete exists size)], - 'indicator' => [qw(configure cget create delete exists size)], - 'info' => [qw(anchor bbox children data dragsite - dropsite exists hidden item next parent prev - selection)], - 'item' => [qw(configure cget create delete exists)], - 'selection' => [qw(clear get includes set)], - 'anchor' => [qw(clear set)], - 'column' => [qw(width)], - 'hide' => [qw(entry)], - ); - - -sub ClassInit -{ - my ($class,$mw) = @_; - - $mw->bind($class,'<ButtonPress-1>',[ 'Button1' ] ); - $mw->bind($class,'<Shift-ButtonPress-1>',[ 'ShiftButton1' ] ); - $mw->bind($class,'<Control-ButtonRelease-1>','Control_ButtonRelease_1'); - $mw->bind($class,'<ButtonRelease-1>','ButtonRelease_1'); - $mw->bind($class,'<Double-ButtonRelease-1>','NoOp'); - $mw->bind($class,'<B1-Motion>',[ 'Button1Motion' ] ); - $mw->bind($class,'<B1-Leave>',[ 'AutoScan' ] ); - - $mw->bind($class,'<Double-ButtonPress-1>',['Double1']); - - $mw->bind($class,'<Control-B1-Motion>','Control_B1_Motion'); - $mw->bind($class,'<Control-ButtonPress-1>',['CtrlButton1']); - $mw->bind($class,'<Control-Double-ButtonPress-1>',['CtrlButton1']); - - $mw->bind($class,'<B1-Enter>','B1_Enter'); - - $mw->bind($class,'<Up>',['UpDown', 'prev']); - $mw->bind($class,'<Down>',['UpDown', 'next']); - - $mw->bind($class,'<Shift-Up>',['ShiftUpDown', 'prev']); - $mw->bind($class,'<Shift-Down>',['ShiftUpDown', 'next']); - - $mw->bind($class,'<Left>', ['LeftRight', 'left']); - $mw->bind($class,'<Right>',['LeftRight', 'right']); - - $mw->PriorNextBind($class); - $mw->MouseWheelBind($class); - - $mw->bind($class,'<Return>', ['KeyboardActivate']); - $mw->bind($class,'<space>', ['KeyboardBrowse']); - $mw->bind($class,'<Home>', ['KeyboardHome']); - $mw->bind($class,'<End>', ['KeyboardEnd']); - - $mw->YMouseWheelBind($class); - $mw->XMouseWheelBind($class); - - return $class; -} - -sub Control_ButtonRelease_1 -{ -} - -sub ButtonRelease_1 -{ - my $w = shift; - my $Ev = $w->XEvent; - $w->CancelRepeat - if($w->cget('-selectmode') ne 'dragdrop'); - $w->ButtonRelease1($Ev); -} - -sub Control_B1_Motion -{ -} - -sub B1_Enter -{ - my $w = shift; - my $Ev = $w->XEvent; - $w->CancelRepeat - if($w->cget('-selectmode') ne 'dragdrop'); -} - -sub Button1 -{ - my $w = shift; - my $Ev = $w->XEvent; - - delete $w->{'shiftanchor'}; - delete $w->{tixindicator}; - - $w->focus() if($w->cget('-takefocus')); - - my $mode = $w->cget('-selectmode'); - - if ($mode eq 'dragdrop') - { - # $w->Send_WaitDrag($Ev->y); - return; - } - - my $ent = $w->GetNearest($Ev->y, 1); - - if (!defined($ent) || !length($ent)) - { - $w->selectionClear; - $w->anchorClear; - return; - } - - my @info = $w->info('item',$Ev->x, $Ev->y); - if (@info) - { - die 'Assert' unless $info[0] eq $ent; - } - else - { - @info = $ent; - } - - if (defined($info[1]) && $info[1] eq 'indicator') - { - $w->{tixindicator} = $ent; - $w->Callback(-indicatorcmd => $ent, '<Arm>'); - } - else - { - my $browse = 0; - - if ($mode eq 'single') - { - $w->anchorSet($ent); - } - elsif ($mode eq 'browse') - { - $w->anchorSet($ent); - $w->selectionClear; - $w->selectionSet($ent); - $browse = 1; - } - elsif ($mode eq 'multiple') - { - $w->selectionClear; - $w->anchorSet($ent); - $w->selectionSet($ent); - $browse = 1; - } - elsif ($mode eq 'extended') - { - $w->anchorSet($ent); - $w->selectionClear; - $w->selectionSet($ent); - $browse = 1; - } - - if ($browse) - { - $w->Callback(-browsecmd => @info); - } - } -} - -sub ShiftButton1 -{ - my $w = shift; - my $Ev = $w->XEvent; - - my $to = $w->GetNearest($Ev->y, 1); - - delete $w->{'shiftanchor'}; - delete $w->{tixindicator}; - - return unless (defined($to) and length($to)); - - my $mode = $w->cget('-selectmode'); - - if($mode eq 'extended' or $mode eq 'multiple') - { - my $from = $w->info('anchor'); - if(defined $from) - { - $w->selectionClear; - $w->selectionSet($from, $to); - } - else - { - $w->anchorSet($to); - $w->selectionClear; - $w->selectionSet($to); - } - } -} - -sub GetNearest -{ - my ($w,$y,$undefafterend) = @_; - my $ent = $w->nearest($y); - if (defined $ent) - { - if ($undefafterend) - { - my $borderwidth = $w->cget('-borderwidth'); - my $highlightthickness = $w->cget('-highlightthickness'); - my $bottomy = ($w->infoBbox($ent))[3]; - $bottomy += $borderwidth + $highlightthickness; - if ($w->header('exist', 0)) - { - $bottomy += $w->header('height'); - } - if ($y > $bottomy) - { - #print "$y > $bottomy\n"; - return undef; - } - } - my $state = $w->entrycget($ent, '-state'); - return $ent if (!defined($state) || $state ne 'disabled'); - } - return undef; -} - -sub ButtonRelease1 -{ - my ($w, $Ev) = @_; - - delete $w->{'shiftanchor'}; - - my $mode = $w->cget('-selectmode'); - - if($mode eq 'dragdrop') - { -# $w->Send_DoneDrag(); - return; - } - - my ($x, $y) = ($Ev->x, $Ev->y); - my $ent = $w->GetNearest($y, 1); - - if (!defined($ent) and $mode eq 'single') - { - my $ent = $w->info('selection'); - if (defined $ent) - { - $w->anchorSet($ent); - } - } - return unless (defined($ent) and length($ent)); - - if (exists $w->{tixindicator}) - { - return unless delete($w->{tixindicator}) eq $ent; - my @info = $w->info('item',$Ev->x, $Ev->y); - if(defined($info[1]) && $info[1] eq 'indicator') - { - $w->Callback(-indicatorcmd => $ent, '<Activate>'); - } - else - { - $w->Callback(-indicatorcmd => $ent, '<Disarm>'); - } - return; - } - - if($mode eq 'single' || $mode eq 'browse') - { - $w->anchorSet($ent); - $w->selectionClear; - $w->selectionSet($ent); - - } - elsif($mode eq 'multiple') - { - $w->selectionSet($ent); - } - elsif($mode eq 'extended') - { - $w->selectionSet($ent); - } - - $w->Callback(-browsecmd =>$ent); -} - -sub Button1Motion -{ - my $w = shift; - my $Ev = $w->XEvent; - return unless defined $Ev; - - delete $w->{'shiftanchor'}; - - my $mode = $w->cget('-selectmode'); - - if ($mode eq 'dragdrop') - { -# $w->Send_StartDrag(); - return; - } - - my $ent; - if (defined $w->info('anchor')) - { - $ent = $w->GetNearest($Ev->y); - } - else - { - $ent = $w->GetNearest($Ev->y, 1); - } - return unless (defined($ent) and length($ent)); - - if(exists $w->{tixindicator}) - { - my $event_type = $w->{tixindicator} eq $ent ? '<Arm>' : '<Disarm>'; - $w->Callback(-indicatorcmd => $w->{tixindicator}, $event_type ); - return; - } - - if ($mode eq 'single') - { - $w->anchorSet($ent); - } - elsif ($mode eq 'multiple' || $mode eq 'extended') - { - my $from = $w->info('anchor'); - if(defined $from) - { - $w->selectionClear; - $w->selectionSet($from, $ent); - } - else - { - $w->anchorSet($ent); - $w->selectionClear; - $w->selectionSet($ent); - } - } - - if ($mode ne 'single') - { - $w->Callback(-browsecmd =>$ent); - } -} - -sub Double1 -{ - my $w = shift; - my $Ev = $w->XEvent; - - delete $w->{'shiftanchor'}; - - my $ent = $w->GetNearest($Ev->y, 1); - - return unless (defined($ent) and length($ent)); - - $w->anchorSet($ent) - unless(defined $w->info('anchor')); - - $w->selectionSet($ent); - - $w->Callback(-command => $ent); -} - -sub CtrlButton1 -{ - my $w = shift; - my $Ev = $w->XEvent; - - delete $w->{'shiftanchor'}; - - my $ent = $w->GetNearest($Ev->y, 1); - - return unless (defined($ent) and length($ent)); - - my $mode = $w->cget('-selectmode'); - - if($mode eq 'extended') - { - $w->anchorSet($ent) unless( defined $w->info('anchor') ); - - if($w->select('includes', $ent)) - { - $w->select('clear', $ent); - } - else - { - $w->selectionSet($ent); - } - $w->Callback(-browsecmd =>$ent); - } -} - -sub UpDown -{ - my $w = shift; - my $spec = shift; - - my $done = 0; - my $anchor = $w->info('anchor'); - - delete $w->{'shiftanchor'}; - - unless( defined $anchor ) - { - $anchor = ($w->info('children'))[0] || ''; - - return unless (defined($anchor) and length($anchor)); - - if($w->entrycget($anchor, '-state') ne 'disabled') - { - # That's a good anchor - $done = 1; - } - else - { - # We search for the first non-disabled entry (downward) - $spec = 'next'; - } - } - - my $ent = $anchor; - - # Find the prev/next non-disabled entry - # - while(!$done) - { - $ent = $w->info($spec, $ent); - last unless( defined $ent ); - next if( $w->entrycget($ent, '-state') eq 'disabled' ); - next if( $w->info('hidden', $ent) ); - last; - } - - unless( defined $ent ) - { - $w->yview('scroll', $spec eq 'prev' ? -1 : 1, 'unit'); - return; - } - - $w->anchorSet($ent); - $w->see($ent); - - if($w->cget('-selectmode') ne 'single') - { - $w->selectionClear; - $w->selection('set', $ent); - $w->Callback(-browsecmd =>$ent); - } -} - -sub ShiftUpDown -{ - my $w = shift; - my $spec = shift; - - my $mode = $w->cget('-selectmode'); - - return $w->UpDown($spec) - if($mode eq 'single' || $mode eq 'browse'); - - my $anchor = $w->info('anchor'); - - return $w->UpDown($spec) unless (defined($anchor) and length($anchor)); - - my $done = 0; - - $w->{'shiftanchor'} = $anchor unless( $w->{'shiftanchor'} ); - - my $ent = $w->{'shiftanchor'}; - - while( !$done ) - { - $ent = $w->info($spec, $ent); - last unless( defined $ent ); - next if( $w->entrycget($ent, '-state') eq 'disabled' ); - next if( $w->info('hidden', $ent) ); - last; - } - - unless( $ent ) - { - $w->yview('scroll', $spec eq 'prev' ? -1 : 1, 'unit'); - return; - } - - $w->selectionClear; - $w->selection('set', $anchor, $ent); - $w->see($ent); - - $w->{'shiftanchor'} = $ent; - - $w->Callback(-browsecmd =>$ent); -} - -sub LeftRight -{ - my $w = shift; - my $spec = shift; - - delete $w->{'shiftanchor'}; - - my $anchor = $w->info('anchor'); - - unless(defined $anchor) - { - $anchor = ($w->info('children'))[0] || ''; - } - - my $done = 0; - my $ent = $anchor; - - while(!$done) - { - my $e = $ent; - - if($spec eq 'left') - { - $ent = $w->info('parent', $e); - - $ent = $w->info('prev', $e) - unless(defined $ent && $w->entrycget($ent, '-state') ne 'disabled') - } - else - { - $ent = ($w->info('children', $e))[0]; - - $ent = $w->info('next', $e) - unless(defined $ent && $w->entrycget($ent, '-state') ne 'disabled') - } - - last unless( defined $ent ); - last if($w->entrycget($ent, '-state') ne 'disabled'); - } - - unless( defined $ent ) - { - $w->xview('scroll', $spec eq 'left' ? -1 : 1, 'unit'); - return; - } - - $w->anchorSet($ent); - $w->see($ent); - - if($w->cget('-selectmode') ne 'single') - { - $w->selectionClear; - $w->selectionSet($ent); - - $w->Callback(-browsecmd =>$ent); - } -} - -sub KeyboardHome -{ - my $w = shift; - $w->yview('moveto' => 0); - $w->xview('moveto' => 0); -} - -sub KeyboardEnd -{ - my $w = shift; - $w->yview('moveto' => 1); - $w->xview('moveto' => 0); -} - -sub KeyboardActivate -{ - my $w = shift; - - my $anchor = $w->info('anchor'); - - return unless (defined($anchor) and length($anchor)); - - if($w->cget('-selectmode')) - { - $w->selectionClear; - $w->selectionSet($anchor); - } - - $w->Callback(-command => $anchor); -} - -sub KeyboardBrowse -{ - my $w = shift; - - my $anchor = $w->info('anchor'); - - return unless (defined($anchor) and length($anchor)); - - if ($w->indicatorExists($anchor)) - { - $w->Callback(-indicatorcmd => $anchor); - } - - if($w->cget('-selectmode')) - { - $w->selectionClear; - $w->selectionSet($anchor); - } - $w->Callback(-browsecmd =>$anchor); -} - -sub AutoScan -{ - my ($w,$x,$y) = @_; - - return if ($w->cget('-selectmode') eq 'dragdrop'); - if (@_ < 3) - { - my $Ev = $w->XEvent; - return unless defined $Ev; - $y = $Ev->y; - $x = $Ev->x; - } - - 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->RepeatId($w->SUPER::after(50,[ AutoScan => $w, $x, $y ])); - $w->Button1Motion; -} - -sub children -{ - # Tix has core-tk window(s) which are not a widget(s) - # the generic code returns these as an "undef" - my $w = shift; - my @info = grep(defined($_),$w->winfo('children')); - @info; -} - -1; - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/IO.pm b/Master/tlpkg/tlperl.old/lib/Tk/IO.pm deleted file mode 100644 index 771e9f7103a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/IO.pm +++ /dev/null @@ -1,182 +0,0 @@ -package Tk::IO; -use strict; -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/IO/IO.pm#4 $ - -require 5.002; -use Tk::Event qw($XS_VERSION); - -use Carp; -use base qw(DynaLoader IO::Handle); - -bootstrap Tk::IO; - -my %fh2obj; -my %obj2fh; - -sub new -{ - my ($package,%args) = @_; - # Do whatever IO::Handle does - my $fh = $package->SUPER::new; - %{*$fh} = (); # The hash is used for configure options - ${*$fh} = ''; # The scalar is used as the 'readable' buffer - @{*$fh} = (); # The array - $fh->configure(%args); - return $fh; -} - -sub pending -{ - my $fh = shift; - return ${*$fh}; -} - -sub cget -{ - my ($fh,$key) = @_; - return ${*$fh}{$key}; -} - -sub configure -{ - my ($fh,%args) = @_; - my $key; - foreach $key (keys %args) - { - my $val = $args{$key}; - $val = Tk::Callback->new($val) if ($key =~ /command$/); - ${*$fh}{$key} = $val; - } -} - -sub killpg -{ - my ($fh,$sig) = @_; - my $pid = $fh->pid; - croak 'No child' unless (defined $pid); - kill($sig,-$pid); -} - -sub kill -{ - my ($fh,$sig) = @_; - my $pid = $fh->pid; - croak 'No child' unless (defined $pid); - kill($sig,$pid) || croak "Cannot kill($sig,$pid):$!"; -} - -sub readable -{ - my $fh = shift; - my $count = sysread($fh,${*$fh},1,length(${*$fh})); - if ($count < 0) - { - if (exists ${*$fh}{-errorcommand}) - { - ${*$fh}{-errorcommand}->Call($!); - } - else - { - warn "Cannot read $fh:$!"; - $fh->close; - } - } - elsif ($count) - { - if (exists ${*$fh}{-linecommand}) - { - my $eol = index(${*$fh},"\n"); - if ($eol >= 0) - { - my $line = substr(${*$fh},0,++$eol); - substr(${*$fh},0,$eol) = ''; - ${*$fh}{-linecommand}->Call($line); - } - } - } - else - { - $fh->close; - } -} - -sub pid -{ - my $fh = shift; - return ${*$fh}{-pid}; -} - -sub command -{ - my $fh = shift; - my $cmd = ${*$fh}{'-exec'}; - return (wantarray) ? @$cmd : $cmd; -} - -sub exec -{ - my $fh = shift; - my $pid = open($fh,'-|'); - if ($pid) - { - ${*$fh} = '' unless (defined ${*$fh}); - ${*$fh}{'-exec'} = [@_]; - ${*$fh}{'-pid'} = $pid; - if (exists ${*$fh}{-linecommand}) - { - my $w = ${*$fh}{-widget}; - $w = 'Tk' unless (defined $w); - $w->fileevent($fh,'readable',[$fh,'readable']); - ${*$fh}{_readable} = $w; - } - else - { - croak Tk::Pretty::Pretty(\%{*$fh}); - } - return $pid; - } - else - { - # make STDERR same as STDOUT here - setpgrp; - exec(@_) || die 'Cannot exec ',join(' ',@_),":$!"; - } -} - -sub wait -{ - my $fh = shift; - my $code; - my $ch = delete ${*$fh}{-childcommand}; - ${*$fh}{-childcommand} = Tk::Callback->new(sub { $code = shift }); - Tk::Event::DoOneEvent(0) until (defined $code); - if (defined $ch) - { - ${*$fh}{-childcommand} = $ch; - $ch->Call($code,$fh) - } - return $code; -} - -sub close -{ - my $fh = shift; - my $code; - if (defined fileno($fh)) - { - my $w = delete ${*$fh}{_readable}; - $w->fileevent($fh,'readable','') if (defined $w); - $code = close($fh); - if (exists ${*$fh}{-childcommand}) - { - ${*$fh}{-childcommand}->Call($?,$fh); - } - } - return $code; -} - -1; -__END__ - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/IconList.pm b/Master/tlpkg/tlperl.old/lib/Tk/IconList.pm deleted file mode 100644 index 1972809ea2a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/IconList.pm +++ /dev/null @@ -1,712 +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 and modified by Slaven Rezic <slaven@rezic.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 vars qw($VERSION); -$VERSION = '4.007'; # $Id: //depot/Tkutf8/Tk/IconList.pm#7 $ - -use Tk qw(Ev); -use strict; -use Carp; - -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, - ); - # make sure that the size does not exceed handhelds' dimensions - my($sw,$sh) = ($w->screenwidth, $w->screenheight); - my $canvas = $w->Component('Canvas' => 'canvas', - -bd => 2, - -relief => 'sunken', - -width => ($sw > 420 ? 400 : $sw-20), - -height => ($sh > 160 ? 120 : $sh-40), - -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; -#XXX curItem never used delete $w->{'curItem'}; - $w->{'noScroll'} = 1; - $w->{'selection'} = []; - $w->{'index,anchor'} = ''; - - # Creates the event bindings. - $canvas->Tk::bind('<Configure>', sub { $w->Arrange } ); - $canvas->Tk::bind('<1>', [$w,'Btn1',Ev('x'),Ev('y')]); - $canvas->Tk::bind('<B1-Motion>', [$w,'Motion1',Ev('x'),Ev('y')]); - $canvas->Tk::bind('<Control-B1-Motion>', 'NoOp'); - $canvas->Tk::bind('<Shift-B1-Motion>', 'NoOp'); - $canvas->Tk::bind('<Control-1>', [$w,'CtrlBtn1',Ev('x'),Ev('y')]); - $canvas->Tk::bind('<Shift-1>', [$w,'ShiftBtn1',Ev('x'),Ev('y')]); - $canvas->Tk::bind('<Double-ButtonRelease-1>', [$w,'Double1',Ev('x'),Ev('y')]); - $canvas->Tk::bind('<Control-Double-ButtonRelease-1>', 'NoOp'); - $canvas->Tk::bind('<Shift-Double-ButtonRelease-1>', 'NoOp'); - $canvas->Tk::bind('<ButtonRelease-1>', [$w,'CancelRepeat']); - $canvas->Tk::bind('<B1-Leave>', [$w,'Leave1',Ev('x'),Ev('y')]); - $canvas->Tk::bind('<B1-Enter>', [$w,'CancelRepeat']); - $canvas->Tk::bind('<Up>', [$w,'UpDown', -1]); - $canvas->Tk::bind('<Down>', [$w,'UpDown', 1]); - $canvas->Tk::bind('<Left>', [$w,'LeftRight',-1]); - $canvas->Tk::bind('<Right>', [$w,'LeftRight', 1]); - $canvas->Tk::bind('<Return>', [$w,'ReturnKey']); - $canvas->Tk::bind('<KeyPress>', [$w,'KeyPress',Ev('A')]); - $canvas->Tk::bind('<Control-KeyPress>', 'NoOp'); - $canvas->Tk::bind('<Alt-KeyPress>', 'NoOp'); - $canvas->Tk::bind('<Meta-KeyPress>', 'NoOp'); -#XXX bad.... -# $canvas->Tk::bind('<FocusIn>', sub { $w->FocusIn }); -# $canvas->Tk::bind('<FocusOut>', sub { $w->FocusOut }); - - # additional bindings not in tkfbox.tcl - $canvas->Tk::bind('<2>',['scan','mark',Ev('x'),Ev('y')]); - $canvas->Tk::bind('<B2-Motion>',['scan','dragto',Ev('x'),Ev('y')]); - # Remove the standard Canvas bindings - $canvas->bindtags([$canvas, $canvas->toplevel, 'all']); - # ... and define some again - $canvas->Tk::bind('<Home>', ['xview','moveto',0]); - $canvas->Tk::bind('<End>', ['xview','moveto',1]); - - $w->ConfigSpecs(-browsecmd => - ['METHOD', 'browseCommand', 'BrowseCommand', undef], - -command => - ['CALLBACK', 'command', 'Command', undef], - -font => - ['PASSIVE', 'font', 'Font', undef], - -foreground => - ['PASSIVE', 'foreground', 'Foreground', undef], - -fg => '-foreground', - -multiple => - ['PASSIVE', 'multiple', 'Multiple', 0], - -selectmode => - ['PASSIVE', 'selectMode', 'SelectMode', 'browse'], - -selectbackground => - ['PASSIVE', 'selectBackground', 'Foreground', '#a0a0ff'], - ); - - $w; -} - -# compatibility for old -browsecmd options -sub browsecmd { - my $w = shift; - if (@_) { - $w->{Configure}{'-browsecmd'} = $_[0]; - $w->bind('<<ListboxSelect>>' => $_[0]); - } - $w->{Configure}{'-browsecmd'}; -} - -sub Index { - my($w, $i) = @_; - if (!$w->{'list'}) { $w->{'list'} = [] } - if ($i =~ /^-?[0-9]+$/) { - if ($i < 0) { - $i = 0; - } - if ($i > @{ $w->{'list'} }) { - $i = @{ $w->{'list'} } - 1; - } - return $i; - } elsif ($i eq 'active') { - return $w->{'index,active'}; - } elsif ($i eq 'anchor') { - return $w->{'index,anchor'}; - } elsif ($i eq 'end') { - return @{ $w->{'list'} }; - } elsif ($i =~ /@(-?[0-9]+),(-?[0-9]+)/) { - my($x, $y) = ($1, $2); - my $canvas = $w->Subwidget('canvas'); - my $item = $canvas->find('closest', $x, $y); - if (defined $item) { - return $canvas->itemcget($item, '-tags')->[1]; - } else { - return ""; - } - } else { - croak "Unrecognized Index parameter `$i', use active, anchor, end, \@x,y, or x"; - } -} - -sub Selection { - my($w, $op, @args) = @_; - if ($op eq 'anchor') { - if (@args == 1) { - $w->{'index,anchor'} = $w->Index($args[0]); - } else { - return $w->{'index,anchor'}; - } - } elsif ($op eq 'clear') { - my($first, $last); - if (@args == 2) { - ($first, $last) = @args; - } elsif (@args == 1) { - $first = $last = $args[0]; - } else { - croak "wrong # args: should be Selection('clear', first, ?last?)" - } - $first = $w->Index($first); - $last = $w->Index($last); - if ($first > $last) { - ($first, $last) = ($last, $first); - } - my $ind = 0; - for my $item (@{ $w->{'selection'} }) { - if ($item >= $first) { - $first = $ind; - last; - } - $ind++; # XXX seems to be missing in the Tcl version - } - $ind = @{ $w->{'selection'} } - 1; - for(; $ind >= 0; $ind--) { - my $item = $w->{'selection'}->[$ind]; - if ($item <= $last) { - $last = $ind; - last; - } - } - if ($first > $last) { - return; - } - splice @{ $w->{'selection'} }, $first, $last-$first+1; - $w->event('generate', '<<ListboxSelect>>'); - $w->DrawSelection; - } elsif ($op eq 'includes') { - my $index; - for (@{ $w->{'selection'} }) { - if ($args[0] eq $_) { - return 1; - } - } - return 0; - } elsif ($op eq 'set') { - my($first, $last); - if (@args == 2) { - ($first, $last) = @args; - } elsif (@args == 1) { - $first = $last = $args[0]; - } else { - croak "wrong # args: should be Selection('set', first, ?last?)"; - } - - $first = $w->Index($first); - $last = $w->Index($last); - if ($first > $last) { - ($first, $last) = ($last, $first); - } - for(my $i = $first; $i <= $last; $i++) { - push @{ $w->{'selection'} }, $i; - } - # lsort -integer -unique - my %sel = map { ($_ => 1) } @{ $w->{'selection'} }; - @{ $w->{'selection'} } = sort { $a <=> $b } keys %sel; - $w->event('generate', '<<ListboxSelect>>'); - $w->DrawSelection; - } else { - croak "Unrecognized Selection parameter `$op', use anchor, clear, includes, or set"; - } -} - -# XXX why lower case 's' here and upper in DrawSelection? -sub Curselection { - my $w = shift; - @{ $w->{'selection'} }; -} - -sub DrawSelection { - my $w = shift; - my $canvas = $w->Subwidget('canvas'); - $canvas->delete('selection'); - my $selBg = $w->cget('-selectbackground'); - for my $item (@{ $w->{'selection'} }) { - my $rTag = $w->{'list'}->[$item][2]; - my($iTag, $tTag, $text, $serial) = @{ $w->{'itemList'}{$rTag} }; - my @bbox = $canvas->bbox($tTag); - # XXX don't hardcode colors - $canvas->createRectangle - (@bbox, -fill => $selBg, -outline => $selBg, -tags => 'selection'); - } - $canvas->lower('selection'); -} - -# Returns the selected item -# -sub Get { - my($w, $item) = @_; - my $rTag = $w->{'list'}->[$item][2]; - my($iTag, $tTag, $text, $serial) = @{ $w->{'itemList'}{$rTag} }; - $text; -} - - -# 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; -#XXX curItem never used delete $w->{'curItem'}; - $w->{'noScroll'} = 1; - $w->{'selection'} = []; - $w->{'index,anchor'} = ''; - $w->Subwidget('sbar')->set(0.0, 1.0); - $canvas->xview('moveto', 0); -} - -# Adds an icon into the IconList with the designated image and items -# -sub Add { - my($w, $image, @items) = @_; - my $canvas = $w->Subwidget('canvas'); - my $font = $w->cget(-font); - my $fg = $w->cget(-foreground); - foreach my $text (@items) { - my $iTag = $canvas->createImage - (0, 0, -image => $image, -anchor => 'nw', - -tags => ['icon', $w->{numItems}, 'item'.$w->{numItems}], - ); - my $tTag = $canvas->createText - (0, 0, -text => $text, -anchor => 'nw', - (defined $fg ? (-fill => $fg) : ()), - (defined $font ? (-font => $font) : ()), - -tags => ['text', $w->{numItems}, 'item'.$w->{numItems}], - ); - my $rTag = $canvas->createRectangle - (0, 0, 0, 0, - -fill => undef, - -outline => undef, - -tags => ['rect', $w->{numItems}, 'item'.$w->{numItems}], - ); - 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($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'} = int(($H - $pad) / $dy); - $w->{'itemsPerColumn'} = 1 if ($w->{'itemsPerColumn'} < 1); -#XXX $w->Select($w->{'list'}[$w->{'curItem'}][2], 0) -# if (exists $w->{'curItem'}); - $w->DrawSelection; # missing in Tcl XXX -} - -# 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 (@{ $w->{'selection'} }); -} - -# 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 if ($rTag < 0 || $rTag >= @{ $w->{'list'} }); - my $canvas = $w->Subwidget('canvas'); - my(@sRegion) = @{ $canvas->cget('-scrollregion') }; - return unless (@sRegion); - my(@bbox) = $canvas->bbox('item'.$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 Btn1 { - my($w, $x, $y) = @_; - - my $canvas = $w->Subwidget('canvas'); - $canvas->CanvasFocus; - $x = int($canvas->canvasx($x)); - $y = int($canvas->canvasy($y)); - my $i = $w->Index('@'.$x.','.$y); - return if ($i eq ''); - $w->Selection('clear', 0, 'end'); - $w->Selection('set', $i); - $w->Selection('anchor', $i); -} - -sub CtrlBtn1 { - my($w, $x, $y) = @_; - - if ($w->cget(-multiple)) { - my $canvas = $w->Subwidget('canvas'); - $canvas->CanvasFocus; - my $x = int($canvas->canvasx($x)); - my $y = int($canvas->canvasy($y)); - my $i = $w->Index('@'.$x.','.$y); - return if ($i eq ''); - if ($w->Selection('includes', $i)) { - $w->Selection('clear', $i); - } else { - $w->Selection('set', $i); - $w->Selection('anchor', $i); - } - } -} - -sub ShiftBtn1 { - my($w, $x, $y) = @_; - - if ($w->cget(-multiple)) { - my $canvas = $w->Subwidget('canvas'); - $canvas->CanvasFocus; - my $x = int($canvas->canvasx($x)); - my $y = int($canvas->canvasy($y)); - my $i = $w->Index('@'.$x.','.$y); - return if ($i eq ''); - my $a = $w->Index('anchor'); - if ($a eq '') { - $a = $i; - } - $w->Selection('clear', 0, 'end'); - $w->Selection('set', $a, $i); - } -} - -# Gets called on button-1 motions -# -sub Motion1 { - my($w, $x, $y) = @_; - $Tk::x = $x; - $Tk::y = $y; - my $canvas = $w->Subwidget('canvas'); - $canvas->CanvasFocus; - $x = int($canvas->canvasx($x)); - $y = int($canvas->canvasy($y)); - my $i = $w->Index('@'.$x.','.$y); - return if ($i eq ''); - $w->Selection('clear', 0, 'end'); - $w->Selection('set', $i); -} - -sub Double1 { - my($w, $x, $y) = @_; - $w->Invoke if (@{ $w->{'selection'} }); -} - -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'}); - if (@{ $w->{'selection'} }) { - $w->DrawSelection; - } -} - -sub FocusOut { - my $w = shift; - $w->Selection('clear', 0, 'end'); -} - -# 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) = @_; - return unless (exists $w->{'list'}); - my $i; - my(@curr) = $w->Curselection; - if (!@curr) { - $i = 0; - } else { - $i = $w->Index('anchor'); - return if ($i eq ''); - $i += $amount; - } - $w->Selection('clear', 0, 'end'); - $w->Selection('set', $i); - $w->Selection('anchor', $i); - $w->See($i); -} - -# 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) = @_; - return unless (exists $w->{'list'}); - my $i; - my(@curr) = $w->Curselection; - if (!@curr) { - $i = 0; - } else { - $i = $w->Index('anchor'); - return if ($i eq ''); - $i += $amount*$w->{'itemsPerColumn'}; - } - $w->Selection('clear', 0, 'end'); - $w->Selection('set', $i); - $w->Selection('anchor', $i); - $w->See($i); -} - -#---------------------------------------------------------------------- -# 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 ''); -#XXX curItem never used my $start = (!exists $w->{'curItem'} ? 0 : $w->{'curItem'}); - my $start = 0; - $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) { - $w->Selection(qw(clear 0 end)); - $w->Selection('set', $theIndex); - $w->Selection('anchor', $theIndex); - $w->See($theIndex); - } -} - -sub Reset { - my $w = shift; - undef $w->{'_ILAccel'}; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Image.pm b/Master/tlpkg/tlperl.old/lib/Tk/Image.pm deleted file mode 100644 index 0f41c387fc2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Image.pm +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright (c) 1995-2003 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 = '4.011'; # $Id: //depot/Tkutf8/Tk/Image.pm#11 $ - -sub new -{ - my $package = shift; - my $widget = shift; - $package->InitClass($widget); - my $leaf = $package->Tk_image; - my $obj = $widget->Tk::image('create',$leaf,@_); - $obj = $widget->_object($obj) unless (ref $obj); - 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/tlpkg/tlperl.old/lib/Tk/ItemStyle.pm b/Master/tlpkg/tlperl.old/lib/Tk/ItemStyle.pm deleted file mode 100644 index 85c6c11a76c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/ItemStyle.pm +++ /dev/null @@ -1,38 +0,0 @@ -package Tk::ItemStyle; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/ItemStyle.pm#4 $ - -require Tk; -use base qw(Tk); -require Tk::Widget; -Construct Tk::Widget 'ItemStyle'; - -Tk::Methods ('delete'); - -sub new -{ - my $package = shift; - my $widget = shift; - my $type = shift; - my %args = @_; - $args{'-refwindow'} = $widget unless exists $args{'-refwindow'}; - $package->InitClass($widget); - my $obj = $widget->itemstyle($type, %args); - 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; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/JPEG.pm b/Master/tlpkg/tlperl.old/lib/Tk/JPEG.pm deleted file mode 100644 index 9e0ef771f77..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/JPEG.pm +++ /dev/null @@ -1,50 +0,0 @@ -package Tk::JPEG; -require DynaLoader; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #2$ =~ /\D(\d+)\s*$/; -use Tk 800.015; -require Tk::Image; -require Tk::Photo; -require DynaLoader; - -use vars qw($VERSION $XS_VERSION); - -@ISA = qw(DynaLoader); - -$XS_VERSION = $Tk::VERSION; -bootstrap Tk::JPEG; - -1; - -__END__ - -=head1 NAME - -Tk::JPEG - JPEG loader for Tk::Photo - -=head1 SYNOPSIS - - use Tk; - use Tk::JPEG; - - my $image = $widget->Photo('-format' => 'jpeg', -file => 'something.jpg'); - - -=head1 DESCRIPTION - -This is an extension for Tk800.015 and later which supplies -JPEG format loader for Photo image type. - -This version also works with Tk804 series. - -JPEG access is via release 5 of the The Independent JPEG Group's (IJG) -free JPEG software. - -=head1 AUTHOR - -Nick Ing-Simmons E<lt>nick@ing-simmons.netE<gt> - -=cut - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/LabEntry.pm b/Master/tlpkg/tlperl.old/lib/Tk/LabEntry.pm deleted file mode 100644 index 64cb392fa8c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/LabEntry.pm +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright (c) 1995-2003 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::LabEntry; - -use vars qw($VERSION); -$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/LabEntry.pm#6 $ - -use base qw(Tk::Frame); -use Tk::widgets qw(Frame Label Entry); - -Construct Tk::Widget 'LabEntry'; - -sub Populate -{ - require Tk::Entry; - # LabeledEntry constructor. - # - my($cw, $args) = @_; - $cw->SUPER::Populate($args); - # Advertised subwidgets: entry. - my $e = $cw->Entry(); - $e->pack('-expand' => 1, '-fill' => 'both'); - $cw->Advertise('entry' => $e ); - $cw->ConfigSpecs(DEFAULT => [$e]); - $cw->Delegates(DEFAULT => $e); - $cw->AddScrollbars($e) if (exists $args->{-scrollbars}); -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/LabFrame.pm b/Master/tlpkg/tlperl.old/lib/Tk/LabFrame.pm deleted file mode 100644 index 6fcab1acc56..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/LabFrame.pm +++ /dev/null @@ -1,138 +0,0 @@ -# -# Labeled frame. Derives from Tk::Frame, but intercepts the labeling -# part. - -package Tk::LabFrame; - -use vars qw($VERSION); -$VERSION = '4.010'; # $Id: //depot/Tkutf8/Tixish/LabFrame.pm#11 $ - -use Tk; -use base qw(Tk::Frame); -Tk::Widget->Construct('LabFrame'); - -sub autoLabel { 0 } - -sub Populate { - my ($cw, $args) = @_; - - $cw->{m_geoMgr} = ""; - - my $border = $cw->Component( - Frame => 'border', - -relief => 'groove', - -bd => 2, - ); - - my $pad = $border->Frame; - $cw->Advertise(pad => $pad); - - my $frame = $border->Frame; - $cw->Advertise(frame => $frame); - - my $label = $cw->Component(Label => 'label'); - - $cw->SUPER::Populate($args); - - $cw->Delegates(DEFAULT => $frame); - $cw->ConfigSpecs( - -background => [[qw/SELF ADVERTISED/], - qw/background Background/], - -borderwidth => [$border, qw/borderWidth Border 2/], - -font => [$label, qw/font Font/], - -foreground => [$label, qw/foreground Foreground black/], - -label => [{-text => $label}, qw/label Label/], - -labelside => [qw/METHOD labelSide LabelSide acrosstop/], - -labelvariable => [{-textvariable => $label}], - -relief => [$border, qw/relief Relief groove/], - DEFAULT => [$frame] - ); - return $cw; -} - -use Tk::Submethods( - form => [qw/check forget grid info slaves/], - grid => [qw/bbox columnconfigure configure forget info location - propagate rowconfigure remove size slaves/], - pack => [qw/forget info propagate slaves/], - place => [qw/forget info slaves/] -); - -sub labelside { - my ($cw, $side) = @_; - return $cw->{Configure}{-labelside} unless $side; - - my $border = $cw->Subwidget('border'); - my $pad = $cw->Subwidget('pad'); - my $frame = $cw->Subwidget('frame'); - my $label = $cw->Subwidget('label'); - - ## packForget/formForget as appropriate - foreach ($border, $label, $pad, $frame) { - $_->formForget if $cw->{m_geoMgr} eq "form"; - $_->packForget if ($cw->{m_geoMgr} eq "pack" && $_->ismapped); - } - - if ($side eq "acrosstop") { - - my $y = $label->reqheight / 2; - my $ph = $y - ($border->cget(-bd)); - $ph = 0 if $ph < 0; - - $label->form(qw/-top 0 -left 4 -padx 6 -pady 2/); - $border->form(-top => $y, - qw/-bottom -1 -left 0 -right -1 -padx 2 -pady 2/); - $pad->form(-bottom => $ph, - qw/-top 0 -left 0 -right -1/); - $frame->form(-top => $pad, - qw/-bottom -1 -left 0 -right -1 -fill both/); - $cw->{m_geoMgr} = "form"; - - } else { - - $label->pack(-side => $side); - $frame->pack(-expand => 1, -fill => 'both'); - $border->pack(-side => $side, -expand => 1, -fill => 'both'); - $cw->{m_geoMgr} = "pack"; - } -} - -sub form { - my $cw = shift; - $cw = $cw->Subwidget('frame') - if (@_ && $_[0] =~ /^(?:slaves)$/); - $cw->SUPER::form(@_); -} - -sub grid { - my $cw = shift; - $cw = $cw->Subwidget('frame') if (@_ && $_[0] =~ - /^(?:bbox - |columnconfigure - |location - |propagate - |rowconfigure - |size - |slaves) - $/x); - $cw->SUPER::grid(@_); -} - - -sub pack { - my $cw = shift; - $cw = $cw->Subwidget('frame') - if (@_ && $_[0] =~ /^(?:propagate|slaves)$/); - $cw->SUPER::pack(@_); -} - -sub place { - my $cw = shift; - $cw = $cw->Subwidget('frame') - if (@_ && $_[0] =~ /^(?:slaves)$/); - $cw->SUPER::place(@_); -} - -1; - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/LabRadio.pm b/Master/tlpkg/tlperl.old/lib/Tk/LabRadio.pm deleted file mode 100644 index 69e07b12f01..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/LabRadio.pm +++ /dev/null @@ -1,63 +0,0 @@ -# Class LabeledRadiobutton - -package Tk::LabRadiobutton; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/LabRadio.pm#4 $ - -require Tk::Frame; -use base qw(Tk::Frame); - -Construct Tk::Widget 'LabRadiobutton'; - - -# Although there is no fundamental reason why -radiobuttons -# should be fixed at create time converting to METHOD form -# is extra work an this can serve as an example of CreateArgs -# checking. - -sub CreateArgs -{ - my ($package,$parent,$args) = @_; - $parent->BackTrace("Must specify -radiobuttons for $package") - unless (defined $args->{'-radiobuttons'}); - return $package->SUPER::CreateArgs($parent,$args); -} - -sub Populate -{ - require Tk::Radiobutton; - - my ($cw,$args) = @_; - $cw->SUPER::Populate($args); - - # LabeledRadiobutton(s) constructor. - # - # Advertised subwidgets: the name(s) of your radiobutton(s). - - - - my (@widgets) = (); - - my $rl; - foreach $rl (@{$args->{'-radiobuttons'}}) - { - my $r = $cw->Component( Radiobutton => $rl, - -text => $rl, - -value => $rl ); - $r->pack(-side => 'left', -expand => 1, -fill => 'both'); - push(@widgets,$r); - $cw->{Configure}{-value} = $rl; - } - - $cw->BackTrace('No buttons') unless (@widgets); - - $cw->ConfigSpecs('-variable' => [ \@widgets, undef, undef, \$cw->{Configure}{-value} ], - '-radiobuttons' => [ 'PASSIVE', undef, undef, undef ], - '-value' => [ 'PASSIVE', undef, undef, $cw->{Configure}{-value} ], - 'DEFAULT' => [ \@widgets ] - ); -} - - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Label.pm b/Master/tlpkg/tlperl.old/lib/Tk/Label.pm deleted file mode 100644 index ebea1741c2f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Label.pm +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 1995-2003 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 = '4.006'; # $Id: //depot/Tkutf8/Tk/Label.pm#6 $ - -use base qw(Tk::Widget); - -Construct Tk::Widget 'Label'; - -sub Tk_cmd { \&Tk::label } - -1; - - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Labelframe.pm b/Master/tlpkg/tlperl.old/lib/Tk/Labelframe.pm deleted file mode 100644 index 14c577b5e35..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Labelframe.pm +++ /dev/null @@ -1,16 +0,0 @@ -package Tk::Labelframe; -use strict; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #2 $ =~ /#(\d+)/; - -# New widget which is a kind of Frame with a label ... - -use base qw(Tk::Frame); - -Construct Tk::Widget 'Labelframe'; - -sub Tk_cmd { \&Tk::labelframe } - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Listbox.pm b/Master/tlpkg/tlperl.old/lib/Tk/Listbox.pm deleted file mode 100644 index 249a8eed7f4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Listbox.pm +++ /dev/null @@ -1,910 +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 @Selection $Prev); -use strict; -$VERSION = sprintf '4.%03d', q$Revision: #14 $ =~ /\D(\d+)\s*$/; - -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','itemcget','itemconfigure','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; - return if !$e; - 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>',[sub { - my $w = shift; - if (Tk::Exists($w)) { - $w->BeginSelect(@_); - } - }, Ev('index',Ev('@'))]); - $mw->bind($class, '<Double-1>' => \&Tk::NoOp); - $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->bind($class,'<Prior>', sub { - my $w = shift; - $w->yview('scroll',-1,'pages'); - $w->activate('@0,0'); - }); - $mw->bind($class,'<Next>', sub { - my $w = shift; - $w->yview('scroll',1,'pages'); - $w->activate('@0,0'); - }); - $mw->bind($class,'<Control-Prior>', ['xview', 'scroll', -1, 'pages']); - $mw->bind($class,'<Control-Next>', ['xview', 'scroll', 1, 'pages']); - # <Home> and <End> defined in XscrollBind - $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']); - # XXX What about <<Copy>>? Already handled in Tk::Clipboard? - # $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')]); - - $mw->MouseWheelBind($class); # XXX Both needed? - $mw->YMouseWheelBind($class); - return $class; -} - -1; -__END__ - -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]; - } - } -} - -# ---- - -# -# 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); - $w->eventGenerate("<<ListboxSelect>>"); -} - - -sub Cntrl_End -{ - my $w = shift; - my $Ev = $w->XEvent; - $w->activate('end'); - $w->see('end'); - $w->selectionClear(0,'end'); - $w->selectionSet('end'); - $w->eventGenerate("<<ListboxSelect>>"); -} - - -sub Cntrl_backslash -{ - my $w = shift; - my $Ev = $w->XEvent; - if ($w->cget('-selectmode') ne 'browse') - { - $w->selectionClear(0,'end'); - $w->eventGenerate("<<ListboxSelect>>"); - } -} - -# 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')); - $w->eventGenerate("<<ListboxSelect>>"); -} -# 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; - } - my $anchor = $w->index('anchor'); - my $mode = $w->cget('-selectmode'); - if ($mode eq 'browse') - { - $w->selectionClear(0,'end'); - $w->selectionSet($el); - $Prev = $el; - $w->eventGenerate("<<ListboxSelect>>"); - } - elsif ($mode eq 'extended') - { - my $i = $Prev; - if (!defined $i || $i eq '') - { - $i = $el; - $w->selectionSet($el); - } - if ($w->selectionIncludes('anchor')) - { - $w->selectionClear($i,$el); - $w->selectionSet('anchor',$el) - } - else - { - $w->selectionClear($i,$el); - $w->selectionClear('anchor',$el) - } - if (!@Selection) - { - @Selection = $w->curselection; - } - while ($i < $el && $i < $anchor) - { - if (Tk::lsearch(\@Selection,$i) >= 0) - { - $w->selectionSet($i) - } - $i++ - } - while ($i > $el && $i > $anchor) - { - if (Tk::lsearch(\@Selection,$i) >= 0) - { - $w->selectionSet($i) - } - $i-- - } - $Prev = $el; - $w->eventGenerate("<<ListboxSelect>>"); - } -} -# 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) - } - else - { - # No selection yet; simulate the begin-select operation. - $w->BeginSelect($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) - } - $w->eventGenerate("<<ListboxSelect>>"); - } -} -# 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; - return if !Tk::Exists($w); - 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'); - my $mode = $w->cget('-selectmode'); - if ($mode eq 'browse') - { - $w->selectionClear(0,'end'); - $w->selectionSet('active'); - $w->eventGenerate("<<ListboxSelect>>"); - } - elsif ($mode eq 'extended') - { - $w->selectionClear(0,'end'); - $w->selectionSet('active'); - $w->selectionAnchor('active'); - $Prev = $w->index('active'); - @Selection = (); - $w->eventGenerate("<<ListboxSelect>>"); - } -} -# 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; - } - my $active = $w->index('active'); - if (!@Selection) - { - $w->selectionSet($active); - @Selection = $w->curselection; - } - $w->activate($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; - my $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; - } - my $first = $w->index('anchor'); - my $last = $Prev; - if ($first > $last) - { - ($first, $last) = ($last, $first); - } - $w->selectionClear($first,$last); - while ($first <= $last) - { - if (Tk::lsearch(\@Selection,$first) >= 0) - { - $w->selectionSet($first) - } - $first++ - } - $w->eventGenerate("<<ListboxSelect>>"); -} -# 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') - } - $w->eventGenerate("<<ListboxSelect>>"); -} - -# Perl/Tk extensions: -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/tlpkg/tlperl.old/lib/Tk/MMtry.pm b/Master/tlpkg/tlperl.old/lib/Tk/MMtry.pm deleted file mode 100644 index 3ef2f8868ab..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/MMtry.pm +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (c) 1995-2003 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::MMtry; -use Config; -require Exporter; - -use vars qw($VERSION @EXPORT); -$VERSION = sprintf '4.%03d', q$Revision: #9 $ =~ /\D(\d+)\s*$/; - -use base qw(Exporter); -@EXPORT = qw(try_compile try_run); -use strict; -use File::Basename; -use File::Spec; - -my $stderr_too = ($^O eq 'MSWin32') ? '' : '2>&1'; - -sub try_compile -{ - my ($file,$inc,$lib) = @_; - $inc = [] unless $inc; - $lib = [] unless $lib; - my $out = basename($file,'.c').$Config{'exe_ext'}; - warn "Test Compiling $file\n"; - my $msgs = `$Config{'cc'} -o $out $Config{'ccflags'} @$inc $file @$lib $stderr_too`; - my $ok = ($? == 0); -# warn $msgs if $msgs; - unlink($out) if (-f $out); - return $ok; -} - -sub try_run -{ - my ($file,$inc,$lib) = @_; - $inc = [] unless $inc; - $lib = [] unless $lib; - my $out = basename($file,'.c').$Config{'exe_ext'}; - warn "Test Compile/Run $file\n"; - my $msgs = `$Config{'cc'} -o $out $Config{'ccflags'} @$inc $file @$lib $stderr_too`; - my $ok = ($? == 0); -# warn "$Config{'cc'} -o $out $Config{'ccflags'} @$inc $file @$lib:\n$msgs" if $msgs; - if ($ok) - { - my $path = File::Spec->rel2abs($out); - $msgs = `$path $stderr_too`; - $ok = ($? == 0); -# warn "$path:$msgs" if $msgs; - } - unlink($out) if (-f $out); - return $ok; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/MMutil.pm b/Master/tlpkg/tlperl.old/lib/Tk/MMutil.pm deleted file mode 100644 index 84f3aa862f5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/MMutil.pm +++ /dev/null @@ -1,600 +0,0 @@ -# Copyright (c) 1995-2003 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::MMutil; -use ExtUtils::MakeMaker; -use Cwd; -use Config; -use Carp; -use File::Basename; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #21 $ =~ /\D(\d+)\s*$/; - -# warn __FILE__." $VERSION\n"; - -use Tk::MakeDepend; - -use Tk::Config qw(!$VERSION); -use vars qw($IsWin32); - -*IsWin32 = \$main::IsWin32; -$IsWin32 = ($^O eq 'MSWin32' || $Config{'ccflags'} =~ /-D_?WIN32_?/) - unless defined $IsWin32; - -@MYEXPORT = qw(pasthru perldepend cflags const_config constants installbin c_o xs_o makefile manifypods); - -sub arch_prune -{ - my $hash = shift; - foreach (keys %$hash) - { - if ($win_arch eq 'x') - { - delete $hash->{$_} if /Win[A-Z0-9]/ or /OS2/ or /ImgUtil/ or /^x/; - } - elsif ($win_arch eq 'open32') - { - delete $hash->{$_} if /Unix|Mwm/ and not /tclUnix/; - delete $hash->{$_} if /winMain|dllMain/; - } - elsif ($win_arch eq 'pm') - { - delete $hash->{$_} - if /Unix|Mwm/ and not - /tclUnix|Unix(3d|Button|Dialog|Color|Embed|Focus|Font|Menu|Scrlbr|Send|Int\.|Scale)/; - delete $hash->{$_} if /os2Main|dllMain|tkOS2Dll|^x(colors\.c|gc\.)/; - delete $hash->{$_} if /ImgUtil|tkWin[A-Z0-9]/ and not /OS2/; - } - elsif ($win_arch eq 'MSWin32') - { - delete $hash->{$_} if /Mwm/ and not /tclUnix/; - delete $hash->{$_} if /winMain|dllMain/; - # delete $hash->{$_} if /^Xrm/; - } - } -} - -sub mTk_postamble -{ - my ($self) = @_; - my $dep = "config :: \$(C_FILES) \$(H_FILES)\n\t$self->{NOECHO}\$(NOOP)\n"; - my $mTk = $self->{'MTK'}; - $dep .= "# Begin Munging dependencies\n"; - foreach my $file (sort keys %$mTk) - { - $dep .= "$file : ".$mTk->{$file}." \$(TKDIR)/pTk/Tcl-pTk\n"; - $dep .= "\t\$(PERL) \$(TKDIR)/pTk/Tcl-pTk ".$mTk->{$file}." $file\n"; - } - $dep .= "# End Munging dependencies\n\n"; - return $dep; -} - -sub mTk_CHO -{ - my $self = shift; - my $mTk = shift; - my $exc = shift; - my %c; - my %h; - foreach (@{$self->{H}}) { $h{$_} = 1 } - foreach (@{$self->{C}}) { $c{$_} = 1 } - foreach (keys %$mTk) - { - if (/\.c$/) - { - $c{$_} = 1; - } - elsif (/\.h$/) - { - $h{$_} = 1; - } - } - foreach (keys %$exc) - { - if (/\.c$/) - { - delete $c{$_}; - } - elsif (/\.h$/) - { - delete $h{$_}; - } - } - while (@_) - { - my $name = shift; - cluck("No $name") unless (exists $c{$name}); - delete $c{$name} - } - arch_prune(\%h); - arch_prune(\%c); - $self->{'H'} = [sort keys %h]; - $self->{'C'} = [sort keys %c]; - my(@o_files) = @{$self->{C}}; - $self->{O_FILES} = [grep s/\.c(pp|xx|c)?$/$self->{OBJ_EXT}/i, @o_files] ; - $self->{'MTK'} = $mTk; - my $tk = installed_tk(); - my $perl = $self->{'PERL'}; - if ($IsWin32 && !-f $perl && -f "$perl.exe") - { - print "perl=$perl X=$^X\n"; - $perl = "$perl.exe"; - $self->{'PERL'} = $perl; - } - foreach my $file (sort keys %$mTk) - { - unless (-f $file && -M $file < -M $mTk->{$file}) - { - warn "Extracting $file\n"; - system($perl,"$tk/pTk/Tcl-pTk",$mTk->{$file},$file); - } - } -} - -my %visited; - -sub abspath -{ - my $dir = shift; - my $here = getcwd() || die "Cannot get current directory:$!"; - if (chdir($dir)) - { - $dir = getcwd(); - chdir($here) || die "Cannot cd back to $here:$!"; - } - return $dir; -} - -sub relpath -{ - my ($path,$dir) = @_; - unless (defined $dir) - { - $dir = (-d $path) ? $path : dirname($path); - } - if (defined $dir and -d $dir) - { - if ($path =~ m#^\Q$dir\E([/\\]?.*)$#) - { - my $base = $1; - my $here = getcwd; - if ($here =~ m#^\Q$dir\E([/\\]?.*)#) - { - my $depth = reverse($1); - if ($depth) - { - $depth =~ s,[^/\\]+,..,g; - } - else - { - $depth = '.' ; - } - $depth =~ s,[/\\]+$,,; - $base =~ s,^[/\\]+,,; - $depth .= "/$base" if ($base); - if (-e $depth) - { - # print "$path is $depth from $here\n"; - return $depth; - } - else - { - warn "Cannot find $depth\n"; - } - } - else - { - unless(exists $visited{$here}) - { - $visited{$here} = 1; - warn "$here does not start with $dir\n"; - warn "i.e. building outside Tk itself\n"; - } - } - } - else - { - die "'$path' not under '$dir'\n"; - } - } - else - { - die "Cannot get directory for $path\n"; - } - return $path; -} - -use strict; - -sub upgrade_pic -{ - my $flags = ''; - die 'upgrade_pic is obsolete'; - return $flags; -} - -sub pasthru -{ - my $self = shift; - my $str = $self->MM::pasthru; - if ($str =~ s/^\s+INC=.*\n//m) - { - $str = "# - Do NOT pasthru INC for Tk - it is computed by subdir\n$str" - } - if ($str =~ s/\bLIB="\$\(LIB\)"//) - { - $str = qq[# - Drop LIB="\$(LIB)" - not used\n$str]; - } - $str = "#Tk::MMutil pasthru\n$str"; - return $str; -} - -sub perldepend -{ - my $self = shift; - my $str = $self->MM::perldepend; - my $name; - my %c; - foreach my $file (@{$self->{'C'}}) - { - $c{$file} = 1; - } - foreach my $file (keys %{$self->{'XS'}}) - { - $c{$file} = 1; - delete $c{$self->{'XS'}{$file}}; - } - my @files = grep(-f $_,sort(keys %c)); - if (@files) - { - my $tk = installed_tk(); - my @inc = split(/\s+/,$self->{'INC'}); - my @def = split(/\s+/,$self->{'DEFINE'}); - push(@def,qw(-DWIN32 -D__WIN32__)) if ($IsWin32); - if ($^O eq 'cygwin') - { - push(@def,qw(-D__CYGWIN__)); - if ($win_arch eq 'MSWin32') - { - push(@def,qw(-D__WIN32__)) unless $self->{'DEFINE'} =~ /-D__WIN32__/; - push(@def,qw(-DWIN32)) if $self->{'NAME'} eq 'Tk::pTk'; - } - elsif ($win_arch eq 'x') - { - push(@def,qw(-U_WIN32)); - } - } - foreach (@inc) - { - s/\$\(TKDIR\)/$tk/g; - warn "Odd:$_" if /\$\(/; - } - $str .= Tk::MakeDepend::command_line(@inc,@def,@files) unless ($ENV{'TKNOMAKEDEPEND'}); - } - return $str; -} - -sub const_config -{ - my $self = shift; - my $name; - foreach $name (grep /(%|\.(old|bak|q4|orig|rej))$/,keys %{$self->{PM}}) - { - delete $self->{PM}->{$name}; - } - my $flags = $self->{'CCCDLFLAGS'}; - $flags =~ s/(-[fK]?\s*)pic\b/${1}PIC/; - $self->{'CCCDLFLAGS'} = $flags; - if ($^O eq 'MSWin32' && $Config{'ccflags'} =~ /-DPERL_OBJECT/) - { - $self->{'LDFLAGS'} =~ s/-(debug|pdb:\w+)\s+//g; - $self->{'LDDLFLAGS'} =~ s/-(debug|pdb:\w+)\s+//g; - } - elsif ($^O eq 'darwin' ) - { - $self->{'LDDLFLAGS'} =~ s/-flat_namespace//; - $self->{'LDDLFLAGS'} =~ s/-undefined\s+suppress//; - if ( -e "$Config{'archlib'}/CORE/$Config{'libperl'}" ) { - $self->{'LDDLFLAGS'} .= " -L\${PERL_ARCHLIB}/CORE -lperl "; - } - elsif ( -e "/System/Library/Perl/darwin/CORE/libperl.dylib" ) { - $self->{'LDDLFLAGS'} .= " -L/System/Library/Perl/darwin/CORE -lperl "; - } - else { - warn "Can't find libperl.dylib"; - } - $self->{'LDFLAGS'} =~ s/-flat_namespace//; - $self->{'LDFLAGS'} =~ s/-undefined\s+suppress//; - } elsif ($^O =~ /(openbsd)/i) - { - # -Bforcearchive is bad news for Tk - we don't want all of libpTk.a in all .so-s. - $self->{'LDDLFLAGS'} =~ s/-Bforcearchive\s*//g; - } - return $self->MM::const_config; -} - -sub constants -{ - my $self = shift; - local $_ = $self->MM::constants; - s/(\.SUFFIXES)/$1:\n$1/; - $_ .= "\nGCCOPT = $Tk::Config::gccopt\n"; - if ($IsWin32) - { - } - $_; -} - -sub cflags -{ - my $self = shift; - local $_ = $self->MM::cflags; - if (0 && $IsWin32) - { - if ($Config::Config{cc} =~ /^bcc/i) { - # s/(CCFLAGS\s*=)/$1/; - } - else { - s/(CCFLAGS\s*=)/$1 \$(cflags) \$(cvarsdll)/; - s/(OPTIMIZE\s*=).*/$1 \$(cdebug)/; - } - } - $_; -} - -sub c_o -{ - my $self = shift; - local $_ = $self->MM::c_o; - s/\$\(DEFINE\)/\$(DEFINE) \$(GCCOPT)/g; - $_; -} - -sub xs_o -{ - my $self = shift; - local $_ = $self->MM::xs_o; - s/\$\(DEFINE\)/\$(DEFINE) \$(GCCOPT)/g; - $_; -} - -sub manifypods -{ - my $self = shift; - # Maybe always call UNIX version - we HTMLize them later - local $_ = $self->MM::manifypods; - if ($] >= 5.00565) - { - s/(POD2MAN_EXE.*pod2man.*)/$1 --center "perl\/Tk Documentation" --release "Tk\$(VERSION)"/; - } - elsif ($] >= 5.003) - { - s/(POD2MAN_EXE.*pod2man.*)/$1 -center "perl\/Tk Documentation" -release "Tk\$(VERSION)"/; - } - else - { - s/(POD2MAN_EXE.*pod2man.*)/$1 -center \\"perl\/Tk Documentation\\" -release \\"Tk\$(VERSION)\\"/; - } - s/\bpod::/Tk::/mg; - s/\bpTk:://mg; - $_; -} - -sub findINC -{ - my $file = shift; - my $dir; - foreach $dir (@INC) - { - my $try = "$dir/$file"; - return $try if (-f $try); - } - die "Cannot find $file in \@INC\n"; -} - - -sub makefile -{ - my $self = shift; - my $str = $self->MM::makefile; - my $mm = findINC('Tk/MMutil.pm'); - my $cf = findINC('Tk/Config.pm'); - $str =~ s/(\$\(CONFIGDEP\))/$1 $cf $mm/; - $str =~ s/\$\(OBJECT\)\s*:.*\n//; - return $str; -} - -sub installed_tk -{ - my $tk; - my $dir; - foreach $dir (@INC) - { - if (-f "$dir/tkGlue.h") - { - $tk = relpath($dir); - last; - } - my $try = "$dir/Tk"; - if (-f "$try/tkGlue.h") - { - $tk = relpath($try,$dir); - last; - } - } - die "Cannot find perl/Tk include files\n" unless (defined $tk); - $tk =~ s,^(\./)+,,; - return $tk; -} - -sub installbin -{ - my ($self) = @_; - my $str = $self->MM::installbin; - my $prog = 'perl'; # $self->{'MAP_TARGET'} || 'perl'; - my $inc = findINC('Tk/MMutil.pm'); - $inc =~ s,/Tk/MMutil.pm$,,; - $inc = relpath($inc); - $str =~ s/^\tcp\s/\t\$(PERL) -I$inc -MTk::install -e installbin $prog /mg; - return $str; -} - -sub findpTk -{ - my $ptk; - my $dir; - foreach $dir (map(abspath($_),@_),@INC) - { - my $try = "$dir/pTk"; - if (-d $try && (-f "$try/Lang.h" || -f "$try/libpTk\$(LIB_EXT)")) - { - $ptk = relpath($try,$dir); - last; - } - } - confess "Cannot locate pTk\n" unless (defined $ptk); - return $ptk; -} - -sub find_subdir -{ - my %dir; - opendir(DIR,'.') || die "Cannot opendir:$!"; - foreach my $dir (readdir(DIR)) - { - next if $dir =~ /^\.\.?$/; - next if -l $dir; - next unless -d $dir; - if (-f "$dir/Makefile.PL") - { - my $exc = ($win_arch eq 'x') ? 'Unix' : 'Win'; - if (-f "$dir/Not${exc}.exc") - { - warn "Skip $dir on $win_arch\n" - } - else - { - $dir{$dir} = 1 - } - } - } - closedir(DIR); - return \%dir; -} - -sub TkExtMakefile -{ - my (%att) = @_; - if ($Config{'ccflags'} =~ /-DPERL_OBJECT/) - { - $att{'CAPI'} = 'TRUE' unless exists $att{'CAPI'}; - } - unless (exists $att{'DIR'}) - { - my $dir = find_subdir(); - $att{'DIR'} = [sort(keys %$dir)]; - } - unless (exists $att{'NAME'}) - { - my $dir = getcwd; - my ($pack) = $dir =~ m#/([^/]+)$#; - if (defined $pack) - { - $att{NAME} = 'Tk::'.$pack; - } - else - { - warn "No Name and cannot deduce from '$dir'"; - } - } - my $tk = installed_tk(); - $att{'macro'} = {} unless (exists $att{'macro'}); - $att{'macro'}{'TKDIR'} = $tk; - my @opt = ('VERSION' => $Tk::Config::VERSION, - 'XS_VERSION' => $Tk::Config::VERSION); - push(@opt,'clean' => {} ) unless (exists $att{'clean'}); - $att{'clean'}->{FILES} = '' unless (exists $att{'clean'}->{FILES}); - $att{'clean'}->{FILES} .= ' *.bak'; - unless (exists($att{'linkext'}) && $att{linkext}{LINKTYPE} eq '') - { - my $ptk = findpTk($tk); - my @tm = (findINC('Tk/typemap')); - unshift(@tm,@{$att{'TYPEMAPS'}}) if (exists $att{'TYPEMAPS'}); - $att{'TYPEMAPS'} = \@tm; - my $i = delete ($att{'INC'}); - $i = (defined $i) ? "$i $inc" : $inc; - if (delete $att{'dynamic_ptk'}) - { - push(@opt, - 'MYEXTLIB' => "$ptk/libpTk\$(LIB_EXT)", -# 'dynamic_lib' => { INST_DYNAMIC_DEP => "$ptk/libpTk\$(LIB_EXT)" } - ); - } - # Several loadable widgets use things from -lm - # if platform does not have a shared -lm need to link against it - if ($Config{libs} =~/-lm\b/) - { - my $libs = $att{'LIBS'}->[0]; - $att{'LIBS'}->[0] = "$libs -lm" unless $libs =~ /-lm\b/; - } - if ($IsWin32 && $Config{'cc'} =~ /^bcc/) - { - # Borland compiler is very dumb at finding files - $i = "-I$tk $i"; - $i = "-I$ptk $i"; - } - if ($IsWin32 && $Config{'cc'} =~ /^gcc/i) - { - my $base = $Config{'libpth'}; - $base =~ s#lib$#i386-mingw32/lib#; - my $extra = "-L$base -lcomdlg32 -lgdi32"; - my $libs = $att{'LIBS'}->[0]; - $att{'LIBS'}->[0] = "$extra $libs"; - } - if ($^O eq 'cygwin') - { - # NOTE: use gcc -shared instead of dllwrap (ld2), - # dllwrap tries to resolve all symbols, even those - # that are brought in from libraries like libpTk.a - push(@opt,'LD' => 'gcc -shared'); - if ($win_arch eq 'MSWin32') - { - my $extra = "-L/lib/w32api -lcomdlg32 -lgdi32"; - my $libs = $att{'LIBS'}->[0]; - $att{'LIBS'}->[0] = "$extra $libs"; - $att{'DEFINE'} .= ' -D__WIN32__ -D_WIN32'; - $att{'DEFINE'} .= ' -DWIN32' if($att{'NAME'} eq 'Tk::pTk'); - } - elsif ($win_arch eq 'x') - { - $att{'DEFINE'} .= ' -U_WIN32'; - } - } - if (delete $att{'ptk_include'}) - { - $i = "-I$ptk $i" unless ($ptk eq '.'); - } - else - { - $i = "-I$tk $i" unless ($tk eq '.'); - } - push(@opt,'DEFINE' => $define, 'INC' => $i); - } - WriteMakefile(@opt, %att); -} - -sub import -{ - no strict 'refs'; - my $class = shift; - my @list = (@_) ? @_ : @{"${class}::MYEXPORT"}; - my $name; - foreach $name (@list) - { - *{"MY::$name"} = \&{"$name"}; - } -} - - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/MainWindow.pm b/Master/tlpkg/tlperl.old/lib/Tk/MainWindow.pm deleted file mode 100644 index 5384ccb560b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/MainWindow.pm +++ /dev/null @@ -1,213 +0,0 @@ -# Copyright (c) 1995-2003 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 = sprintf '4.%03d', q$Revision: #12 $ =~ /\D(\d+)\s*$/; - -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'); - # <<LeftTab>> is named <<PrevWindow>> in Tcl/Tk - $mw->eventAdd(qw[<<LeftTab>> <Shift-Tab>]); - # This is needed for XFree86 systems - catch { $mw->eventAdd(qw[<<LeftTab>> <ISO_Left_Tab>]) }; - # This seems to be correct on *some* HP systems. - catch { $mw->eventAdd(qw[<<LeftTab>> <hpBackTab>]) }; - $mw->bind('all','<<LeftTab>>','focusPrev'); - if ($mw->windowingsystem eq 'x11') - { - $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[<<PasteSelection>> <ButtonRelease-2>]); - $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>]); - } - elsif ($mw->windowingsystem eq 'win32') - { - $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>]); - } - elsif ($mw->windowingsystem eq 'aqua') - { - $mw->eventAdd(qw[<<Cut>> <Command-Key-x> <Key-F2>]); - $mw->eventAdd(qw[<<Copy>> <Command-Key-c> <Key-F3>]); - $mw->eventAdd(qw[<<Paste>> <Command-Key-v> <Key-F4>]); - $mw->eventAdd(qw[<<PasteSelection>> <ButtonRelease-2>]); - $mw->eventAdd(qw[<<Clear>> <Clear>]); - $mw->eventAdd(qw[<<Undo>> <Command-Key-z>]); - $mw->eventAdd(qw[<<Redo>> <Command-Key-y>]); - } - elsif ($mw->windowingsystem eq 'classic') - { - $mw->eventAdd(qw[<<Cut>> <Control-Key-x> <Key-F2>]); - $mw->eventAdd(qw[<<Copy>> <Control-Key-c> <Key-F3>]); - $mw->eventAdd(qw[<<Paste>> <Control-Key-v> <Key-F4>]); - $mw->eventAdd(qw[<<PasteSelection>> <ButtonRelease-2>]); - $mw->eventAdd(qw[<<Clear>> <Clear>]); - $mw->eventAdd(qw[<<Undo>> <Control-Key-z> <Key-F1>]); - $mw->eventAdd(qw[<<Redo>> <Control-Key-Z>]); - } - - # 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 (Tk::IsParentProcess()) - { - 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/tlpkg/tlperl.old/lib/Tk/MakeDepend.pm b/Master/tlpkg/tlperl.old/lib/Tk/MakeDepend.pm deleted file mode 100644 index bfb7b43ccbc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/MakeDepend.pm +++ /dev/null @@ -1,292 +0,0 @@ -package Tk::MakeDepend; -use strict; -use vars qw(%define); -use Config; - -my @include; - -use Carp; - -$SIG{__DIE__} = \&Carp::confess; - - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #13 $ =~ /\D(\d+)\s*$/; - -sub scan_file; - -sub do_include -{ - my ($inc,$dep,@include) = @_; - foreach my $dir (@include) - { - my $path = "$dir/$inc"; - if (-f $path) - { - scan_file($path,$dep) unless exists $dep->{$path}; - return; - } - } - warn "Cannot find '$inc' assume made\n"; - $dep->{$inc} = 1; -} - -sub remove_comment -{ - s#^\s*/\*.*?\*/\s*##g; -} - - -sub term -{ - remove_comment(); - return !term() if s/^\s*!//; - return exists($define{$1}) if s/^\s*defined\s*\(([_A-Za-z][_\w]*)\s*\)//; - return exists($define{$1}) if s/^\s*defined\s*([_A-Za-z][_\w]*)//; - return eval "$1" if s/^\s*(0x[0-9a-f]+)//i; - return $1 if s/^\s*(\d+)//; - return $define{$1} || 0 if s/^\s*([_A-Za-z][_\w]*)//; - if (s/^\s*\(//) - { - my $val = expression(0); - warn "Missing ')'\n" unless s/^\s*\)//; - return $val; - } - warn "Invalid term:$_"; - return undef; -} - -my %pri = ( '&&' => 4, - '||' => 3, - '>=' => 2, '<=' => 2, '<' => 2, '>' => 2, - '==' => 1, '!=' => 1 ); - -sub expression -{ - my $pri = shift; - # printf STDERR "%d# expr . $_\n"; - my $invert = 0; - my $lhs = term() || 0; - remove_comment(); - while (/^\s*(&&|\|\||>=?|<=?|==|!=)/) - { - my $op = $1; - last unless ($pri{$op} >= $pri); - s/^\s*\Q$op\E//; - # printf STDERR "%d# $lhs $op . $_\n"; - my $rhs = expression($pri{$op}) || 0; - my $e = "$lhs $op $rhs"; - $lhs = eval "$e" || 0; - die "'$e' $@" if $@; - remove_comment(); - } - return $lhs; -} - -sub do_if -{ - my ($key,$expr) = @_; - chomp($expr); - if ($key eq 'ifdef' || $key eq 'ifndef') - { - if ($expr =~ /^\s*(\w+)/) - { - my $val = exists $define{$1}; - $val = !$val if ($key eq 'ifndef'); -# printf STDERR "%d from $key $expr\n",$val; - return $val; - } - } - else - { - local $_ = $expr; - my $val = expression(0) != 0; - warn "trailing: $_" if /\S/; - #printf STDERR "%d from $key $expr\n",$val; - return $val; - } -} - -sub scan_file -{ - no strict 'refs'; - my ($file,$dep) = @_; - open($file,"<$file") || die "Cannot open $file:$!"; - local $_; - my ($srcdir) = $file =~ m#^(.*)[\\/][^\\/]*$#; - $srcdir = '.' unless defined $srcdir; - my $live = 1; - $dep->{$file} = 1; - my @stack; - while (<$file>) - { - $_ .= <$file> while (s/\\\n/ /); - if (/^\s*#\s*(\w+)\s*(.*?)\s*$/) - { - my $ol = $live; - my $key = $1; - my $rest = $2; - if ($key =~ /^if(.*)$/) - { - push(@stack,$live); - $live &&= do_if($key,$rest); - } - elsif ($key eq 'elif') - { - $live = ($live) ? 0 : $stack[-1]; - $live &&= do_if('if',$rest); - } - elsif ($key eq 'else') - { - $live = ($live) ? 0 : $stack[-1]; - } - elsif ($key eq 'endif') - { - if (@stack) - { - $live = pop(@stack); - } - else - { - die "$file:$.: Mismatched #endif\n"; - } - } - elsif ($live) - { - if ($key eq 'include') - { - do_include($1,$dep,$srcdir,@include) if $rest =~ /^"(.*)"/; - } - elsif ($key eq 'define') - { - if ($rest =~ /^\s*([_A-Za-z][\w_]*)\s*(.*)$/) - { - my $sym = $1; - my $val = $2 || 1; - $val =~ s#\s*/\*.*?\*/\s*# #g; - $define{$sym} = $val; - } - else - { - warn "ignore '$key $rest'\n"; - } - } - elsif ($key eq 'undef') - { - if ($rest =~ /^\s*([_A-Za-z][\w_]*)/) - { - delete $define{$1}; - } - } - elsif ($key =~ /^(line|pragma)$/) - { - - } - else - { - warn "ignore '$key $rest'\n"; - } - } - # printf STDERR "$file:$.: %d $key $rest\n",$live if ($ol != $live); - } - else - { - # print if $live; - } - } - close($file); - if (@stack) - { - warn "$file:$.: unclosed #if\n"; - } -} - -sub command_line -{ - @include = (); - local %define = ('__STDC__' => 1 ); - my $data = ''; - my @files; - while (@_ && $_[-1] !~ /^-/) - { - unshift(@files,pop(@_)); - } - my $flags = $Config{ccflags}; - $flags =~ s/^\s+|\s+$//g; - my @opt = (@_, split(/\s+/,$flags)); - while (@opt) - { - local $_ = shift(@opt); - if (/^-I(.*)$/) - { - push @include,$1; - } - elsif (/^-D([^=]+)(?:=(.*))?$/) - { - $define{$1} = $2 || 1; - } - elsif (/^-U(.*)$/) - { - delete $define{$1}; - } - elsif (/^(-.*)$/) - { - # Some option - if ($opt[0] !~ /^-/) - { - # next arg does not start with '-' assume it - # belongs to this option and discard it silently - shift(@opt); - } - } - else - { - # We got confused - warn "Ignoring $1\n"; - } - } - # force /usr/include to be last element of @include - push @include, $Config{'usrinc'} - if (defined $Config{'usrinc'} and $Config{'usrinc'} ne ''); - # warn "Include:@include\n"; - while (@files) - { - local $_ = shift(@files); - unless (/^(.*)\.[^\.]+$/) - { - warn "Skip $_"; - next; - } - local %define = %define; - my $base = $1; - my $file = $_; - my %dep; - warn "Finding dependencies for $file\n"; - scan_file($_,\%dep); - my $str = "\n$base\$(OBJ_EXT) : $base.c"; - delete $dep{$file}; - my @dep = (sort(keys %dep)); - while (@dep) - { - my $dep = shift(@dep); - $dep =~ s#^\./##; - if (length($str)+length($dep) > 70) - { - $data .= "$str \\\n"; - $str = ' '; - } - else - { - $str .= ' '; - } - $str .= $dep; - } - $data .= "$str\n"; - } - return $data; -} - -1; -__END__ - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Menu.pm b/Master/tlpkg/tlperl.old/lib/Tk/Menu.pm deleted file mode 100644 index 91e9aceed61..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Menu.pm +++ /dev/null @@ -1,1145 +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 = sprintf '4.%03d', q$Revision: #21 $ =~ /\D(\d+)\s*$/; - -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); - $menu->ConfigSpecs(-foreground => ['SELF']); - 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->cget('-type') eq 'menubar' && $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->PathName,'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 = $w->cget('-title'); - # print ref($w),' ',$w->PathName," $w\n"; - unless (defined $title && length($title)) - { - $parent = $w->parent; - if ($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). - - - # This seems to conflict with <Enter> class binding above - # if this fires before the class binding the wrong thing - # will get saved in $Tk::focus - # $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 path. -# path - Name to use for topmost menu in duplicate -# hierarchy. - -sub tkMenuDup -{ - my ($src,$path,$type) = @_; - my ($pname,$name) = $path =~ /^(.*)\.([^\.]*)$/; - ($name) = $src->PathName =~ /^.*\.([^\.]*)$/ unless $name; - my $parent = ($pname) ? $src->Widget($pname) : $src->MainWindow; - my %args = (Name => $name, -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); - # print "MenuDup $src $path $name $type ->",$dst->PathName,"\n"; - $_[1] = $dst; - if ($type eq 'tearoff') - { - $dst->transient($parent->toplevel); - } - 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; - $path = $src->PathName; - foreach (@bindtags) - { - $_ = $dst if ($_ eq $path); - } - $dst->bindtags([@bindtags]); - foreach my $event ($src->bind) - { - my $cb = $src->bind($event); -# print "$event => $cb\n"; - $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/tlpkg/tlperl.old/lib/Tk/Menu/Item.pm b/Master/tlpkg/tlperl.old/lib/Tk/Menu/Item.pm deleted file mode 100644 index 403052ef5bd..00000000000 --- a/Master/tlpkg/tlperl.old/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 = '4.004'; # $Id: //depot/Tkutf8/Tk/Menu/Item.pm#4 $ - -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/tlpkg/tlperl.old/lib/Tk/Menubar.pm b/Master/tlpkg/tlperl.old/lib/Tk/Menubar.pm deleted file mode 100644 index 54b745130bf..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Menubar.pm +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (c) 1995-2003 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::Menubar; -use strict; - -use vars qw($VERSION); -$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Menubar.pm#6 $ - -use Tk::Frame; -use Tk::Menu; -# use Carp; -# carp "Tk::Menubar is obsolete" if $^W; - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Menubutton.pm b/Master/tlpkg/tlperl.old/lib/Tk/Menubutton.pm deleted file mode 100644 index 59456b2dea2..00000000000 --- a/Master/tlpkg/tlperl.old/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 = '4.004'; # $Id: //depot/Tkutf8/Menubutton/Menubutton.pm#4 $ - -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/tlpkg/tlperl.old/lib/Tk/Message.pm b/Master/tlpkg/tlperl.old/lib/Tk/Message.pm deleted file mode 100644 index 63b0f170097..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Message.pm +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (c) 1995-2003 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::Message; -use strict; - -use vars qw($VERSION); -$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Message.pm#6 $ - -require Tk::Widget; - -use base qw(Tk::Widget); - -Construct Tk::Widget 'Message'; - -sub Tk_cmd { \&Tk::message } - -1; -__END__ - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/NBFrame.pm b/Master/tlpkg/tlperl.old/lib/Tk/NBFrame.pm deleted file mode 100644 index 0e45251f852..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/NBFrame.pm +++ /dev/null @@ -1,20 +0,0 @@ -package Tk::NBFrame; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/NBFrame/NBFrame.pm#4 $ - -use Tk qw($XS_VERSION); - -use base qw(Tk::Widget); - -Construct Tk::Widget 'NBFrame'; - -bootstrap Tk::NBFrame; - -sub Tk_cmd { \&Tk::nbframe } - -Tk::Methods qw(activate add delete focus info geometryinfo identify - move pagecget pageconfigure); - -1; - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/NoteBook.pm b/Master/tlpkg/tlperl.old/lib/Tk/NoteBook.pm deleted file mode 100644 index 64db87a80d3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/NoteBook.pm +++ /dev/null @@ -1,452 +0,0 @@ -package Tk::NoteBook; -# -# Implementation of NoteBook widget. -# Derived from NoteBook.tcl in Tix 4.0 - -# Contributed by Rajappa Iyer <rsi@earthling.net> -# Hacked by Nick for 'menu' traversal. -# Restructured by Nick - -use vars qw($VERSION); - -$VERSION = sprintf '4.%03d', q$Revision: #9 $ =~ /\D(\d+)\s*$/; -require Tk::NBFrame; - -use base qw(Tk::Derived Tk::NBFrame); -Tk::Widget->Construct('NoteBook'); -use strict; - -use Tk qw(Ev); - -use Carp; -require Tk::Frame; - -sub TraverseToNoteBook; - -sub ClassInit -{ - my ($class,$mw) = @_; - # class binding does not work right due to extra level of - # widget hierachy - $mw->bind($class,'<ButtonPress-1>', ['MouseDown',Ev('x'),Ev('y')]); - $mw->bind($class,'<ButtonRelease-1>', ['MouseUp',Ev('x'),Ev('y')]); - - $mw->bind($class,'<B1-Motion>', ['MouseDown',Ev('x'),Ev('y')]); - $mw->bind($class,'<Left>', ['FocusNext','prev']); - $mw->bind($class,'<Right>', ['FocusNext','next']); - - $mw->bind($class,'<Return>', 'SetFocusByKey'); - $mw->bind($class,'<space>', 'SetFocusByKey'); - return $class; -} - -sub raised -{ - return shift->{'topchild'}; -} - -sub Populate -{ - my ($w, $args) = @_; - - $w->SUPER::Populate($args); - $w->{'pad-x1'} = undef; - $w->{'pad-x2'} = undef; - $w->{'pad-y1'} = undef; - $w->{'pad-y2'} = undef; - - $w->{'windows'} = []; - $w->{'nWindows'} = 0; - $w->{'minH'} = 1; - $w->{'minW'} = 1; - - $w->{'counter'} = 0; - $w->{'resize'} = 0; - - $w->ConfigSpecs(-ipadx => ['PASSIVE', 'ipadX', 'Pad', 0], - -ipady => ['PASSIVE', 'ipadY', 'Pad', 0], - -takefocus => ['SELF', 'takeFocus', 'TakeFocus', 0], - -dynamicgeometry => ['PASSIVE', 'dynamicGeometry', 'DynamicGeometry', 0]); - - # SetBindings - $w->bind('<Configure>','MasterGeomProc'); - - $args->{-slave} = 1; - $args->{-takefocus} = 1; - $args->{-relief} = 'raised'; - - $w->QueueResize; -} - - -#--------------------------- -# Public methods -#--------------------------- - -sub page_widget -{ - my $w = shift; - $w->{'_pages_'} = {} unless exists $w->{'_pages_'}; - my $h = $w->{'_pages_'}; - if (@_) - { - my $name = shift; - if (@_) - { - my $cw = shift; - if (defined $cw) - { - $h->{$name} = $cw; - } - else - { - return delete $h->{$name}; - } - } - return $h->{$name}; - } - else - { - return (values %$h); - } -} - -sub add -{ - my ($w, $child, %args) = @_; - - croak("$child already exists") if defined $w->page_widget($child); - - my $f = Tk::Frame->new($w,Name => $child,-relief => 'raised'); - - my $ccmd = delete $args{-createcmd}; - my $rcmd = delete $args{-raisecmd}; - $f->{-createcmd} = Tk::Callback->new($ccmd) if (defined $ccmd); - $f->{-raisecmd} = Tk::Callback->new($rcmd) if (defined $rcmd); - - # manage our geometry - $w->ManageGeometry($f); - # create default bindings - $f->bind('<Configure>',[$w,'ClientGeomProc','-configure', $f]); - $f->bind('<Destroy>', [$w,'delete',$child,1]); - $w->page_widget($child,$f); - $w->{'nWindows'}++; - push(@{$w->{'windows'}}, $child); - $w->SUPER::add($child,%args); - return $f; -} - -sub raise -{ - my ($w, $child) = @_; - return unless defined $child; - if ($w->pagecget($child, -state) eq 'normal') - { - $w->activate($child); - $w->focus($child); - my $childw = $w->page_widget($child); - if ($childw) - { - if (defined $childw->{-createcmd}) - { - $childw->{-createcmd}->Call($childw); - delete $childw->{-createcmd}; - } - # hide the original visible window - my $oldtop = $w->{'topchild'}; - if (defined($oldtop) && ($oldtop ne $child)) - { - $w->page_widget($oldtop)->UnmapWindow; - } - $w->{'topchild'} = $child; - my $myW = $w->Width; - my $myH = $w->Height; - - if (!defined $w->{'pad-x1'}) { - $w->InitTabSize; - } - - my $cW = $myW - $w->{'pad-x1'} - $w->{'pad-x2'} - 2 * (defined $w->{-ipadx} ? $w->{-ipadx} : 0); - my $cH = $myH - $w->{'pad-y1'} - $w->{'pad-y2'} - 2 * (defined $w->{-ipady} ? $w->{-ipady} : 0); - my $cX = $w->{'pad-x1'} + (defined $w->{-ipadx} ? $w->{-ipadx} : 0); - my $cY = $w->{'pad-y1'} + (defined $w->{-ipady} ? $w->{-ipady} : 0); - - if ($cW > 0 && $cH > 0) - { - $childw->MoveResizeWindow($cX, $cY, $cW, $cH); - $childw->MapWindow; - $childw->raise; - } - if ((not defined $oldtop) || ($oldtop ne $child)) - { - if (defined $childw->{-raisecmd}) - { - $childw->{-raisecmd}->Call($childw); - } - } - } - } -} - -sub pageconfigure -{ - my ($w, $child, %args) = @_; - my $childw = $w->page_widget($child); - if (defined $childw) - { - my $ccmd = delete $args{-createcmd}; - my $rcmd = delete $args{-raisecmd}; - $childw->{-createcmd} = Tk::Callback->new($ccmd) if (defined $ccmd); - $childw->{-raisecmd} = Tk::Callback->new($rcmd) if (defined $rcmd); - $w->SUPER::pageconfigure($child, %args) if (keys %args); - } -} - -sub pages { - my ($w) = @_; - return @{$w->{'windows'}}; -} - -sub pagecget -{ - my ($w, $child, $opt) = @_; - my $childw = $w->page_widget($child); - if (defined $childw) - { - return $childw->{-createcmd} if ($opt =~ /-createcmd/); - return $childw->{-raisecmd} if ($opt =~ /-raisecmd/); - return $w->SUPER::pagecget($child, $opt); - } - else - { - carp "page $child does not exist"; - } -} - -sub delete -{ - my ($w, $child, $destroy) = @_; - my $childw = $w->page_widget($child,undef); - if (defined $childw) - { - $childw->bind('<Destroy>', undef); - $childw->destroy; - @{$w->{'windows'}} = grep($_ !~ /$child/, @{$w->{'windows'}}); - $w->{'nWindows'}--; - $w->SUPER::delete($child); - # see if the child to be deleted was the top child - if ((defined $w->{'topchild'}) && ($w->{'topchild'} eq $child)) - { - delete $w->{'topchild'}; - if ( @{$w->{'windows'}}) - { - $w->raise($w->{'windows'}[0]); - } - } - } - else - { - carp "page $child does not exist" unless $destroy; - } -} - -#--------------------------------------- -# Private methods -#--------------------------------------- - -sub MouseDown { - my ($w, $x, $y) = @_; - my $name = $w->identify($x, $y); - $w->focus($name); - $w->{'down'} = $name; -} - -sub MouseUp { - my ($w, $x, $y) = @_; - my $name = $w->identify($x, $y); - if ((defined $name) && (defined $w->{'down'}) && - ($name eq $w->{'down'}) && - ($w->pagecget($name, -state) eq 'normal')) { - $w->raise($name); - } else { - $w->focus($name); - } -} - -sub FocusNext { - my ($w, $dir) = @_; - my $name; - - if (not defined $w->info('focus')) { - $name = $w->info('active'); - $w->focus($name); - } else { - $name = $w->info('focus' . $dir); - $w->focus($name); - } -} - -sub SetFocusByKey { - my ($w) = @_; - - my $name = $w->info('focus'); - if (defined $name) { - if ($w->pagecget($name, -state) eq 'normal') { - $w->raise($name); - $w->activate($name); - } - } -} - -sub NoteBookFind { - my ($w, $char) = @_; - - my $page; - foreach $page (@{$w->{'windows'}}) { - my $i = $w->pagecget($page, -underline); - my $c = substr($page, $i, 1); - if ($char =~ /$c/) { - if ($w->pagecget($page, -state) ne 'disabled') { - return $page; - } - } - } - return undef; -} - -# This is called by TraveseToMenu when an <Alt-Keypress> occurs -# See the code in Tk.pm -sub FindMenu { - my ($w, $char) = @_; - - my $page; - foreach $page (@{$w->{'windows'}}) { - my $i = $w->pagecget($page, -underline); - my $l = $w->pagecget($page, -label); - next if (not defined $l); - my $c = substr($l, $i, 1); - if ($char =~ /$c/i) { - if ($w->pagecget($page, -state) ne 'disabled') { - $w->raise($page); - return $w; - } - } - } - return undef; -} - - -sub MasterGeomProc -{ - my ($w) = @_; - if (Tk::Exists($w)) - { - $w->{'resize'} = 0 unless (defined $w->{'resize'}); - $w->QueueResize; - } -} - -sub SlaveGeometryRequest -{ - my $w = shift; - if (Tk::Exists($w)) - { - $w->QueueResize; - } -} - -sub LostSlave { - my ($w, $s) = @_; - $s->UnmapWindow; -} - -sub ClientGeomProc -{ - my ($w, $flag, $client) = @_; - $w->QueueResize if (Tk::Exists($w)); - if ($flag =~ /-lostslave/) - { - carp "Geometry Management Error: Another geometry manager has taken control of $client. This error is usually caused because a widget has been created in the wrong frame: it should have been created inside $client instead of $w"; - } -} - -sub QueueResize -{ - my $w = shift; - $w->afterIdle(['Resize', $w]) unless ($w->{'resize'}++); -} - -sub Resize { - - my ($w) = @_; - - return unless Tk::Exists($w) && $w->{'nWindows'} && $w->{'resize'}; - - $w->InitTabSize; - - $w->{'resize'} = 0; - my $reqW = $w->{-width} || 0; - my $reqH = $w->{-height} || 0; - - if ($reqW * $reqH == 0) - { - if ((not defined $w->{-dynamicgeometry}) || - ($w->{-dynamicgeometry} == 0)) { - $reqW = 1; - $reqH = 1; - - my $childw; - foreach $childw ($w->page_widget) - { - my $cW = $childw->ReqWidth; - my $cH = $childw->ReqHeight; - $reqW = $cW if ($reqW < $cW); - $reqH = $cH if ($reqH < $cH); - } - } else { - if (defined $w->{'topchild'}) { - my $topw = $w->page_widget($w->{'topchild'}); - $reqW = $topw->ReqWidth; - $reqH = $topw->ReqHeight; - } else { - $reqW = 1; - $reqH = 1; - } - } - $reqW += $w->{'pad-x1'} + $w->{'pad-x2'} + 2 * (defined $w->{-ipadx} ? $w->{-ipadx} : 0); - $reqH += $w->{'pad-y1'} + $w->{'pad-y2'} + 2 * (defined $w->{-ipady} ? $w->{-ipady} : 0); - $reqW = ($reqW > $w->{'minW'}) ? $reqW : $w->{'minW'}; - $reqH = ($reqH > $w->{'minH'}) ? $reqH : $w->{'minH'}; - } - if (($w->ReqWidth != $reqW) || - ($w->ReqHeight != $reqH)) { - $w->{'counter'} = 0 if (not defined $w->{'counter'}); - if ($w->{'counter'} < 50) { - $w->{'counter'}++; - $w->GeometryRequest($reqW, $reqH); - $w->afterIdle([$w,'Resize']); - $w->{'resize'} = 1; - return; - } - } - $w->{'counter'} = 0; - $w->raise($w->{'topchild'} || ${$w->{'windows'}}[0]); - $w->{'resize'} = 0; -} - -sub InitTabSize { - my ($w) = @_; - my ($tW, $tH) = $w->geometryinfo; - $w->{'pad-x1'} = 2; - $w->{'pad-x2'} = 2; - $w->{'pad-y1'} = $tH + (defined $w->{'-ipadx'} ? $w->{'-ipadx'} : 0) + 1; - $w->{'pad-y2'} = 2; - $w->{'minW'} = $tW; - $w->{'minH'} = $tH; -} - -1; - -__END__ - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Optionmenu.pm b/Master/tlpkg/tlperl.old/lib/Tk/Optionmenu.pm deleted file mode 100644 index 7c0e81766db..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Optionmenu.pm +++ /dev/null @@ -1,130 +0,0 @@ -# Copyright (c) 1995-2003 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 Carp; - -use vars qw($VERSION); -$VERSION = '4.013'; # $Id: //depot/Tkutf8/Tk/Optionmenu.pm#13 $ - -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 $menu = $w->menu(-tearoff => 0); - - # 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], - -foreground => [['SELF', 'CHILDREN'], 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. - - my $tvar = delete $args->{-textvariable}; - my $vvar = delete $args->{-variable}; - if (!defined($vvar)) - { - if (defined $tvar) - { - $vvar = $tvar; - } - else - { - my $new; - $vvar = \$new; - } - } - $tvar = $vvar if (!defined($tvar)); - $w->configure(-textvariable => $tvar, -variable => $vvar); - $w->configure(-command => $vvar) if ($vvar = delete $args->{-command}); -} - -sub setOption -{ - my ($w, $label, $val) = @_; - my $tvar = $w->cget(-textvariable); - my $vvar = $w->cget(-variable); - if (@_ == 2) - { - $val = $label; - } - $$tvar = $label if $tvar; - $$vvar = $val if $vvar; - $w->Callback(-command => $val); -} - -sub addOptions -{ - my $w = shift; - my $menu = $w->menu; - my $tvar = $w->cget(-textvariable); - my $vvar = $w->cget(-variable); - my $oldt = $$tvar; - my $width = $w->cget('-width'); - my %hash; - my $first; - while (@_) - { - my $val = shift; - my $label = $val; - if (ref $val) - { - if ($vvar == $tvar) - { - my $new = $label; - $w->configure(-textvariable => ($tvar = \$new)); - } - ($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($oldt) || !exists($hash{$oldt})) - { - $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/tlpkg/tlperl.old/lib/Tk/PNG.pm b/Master/tlpkg/tlperl.old/lib/Tk/PNG.pm deleted file mode 100644 index 1ecb4001d17..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/PNG.pm +++ /dev/null @@ -1,43 +0,0 @@ -package Tk::PNG; -require DynaLoader; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #3 $ =~ /\D(\d+)\s*$/; - -use Tk 800.005; -require Tk::Image; -require Tk::Photo; - -use base qw(DynaLoader); - -bootstrap Tk::PNG $Tk::VERSION; - -1; - -__END__ - -=head1 NAME - -Tk::PNG - PNG loader for Tk::Photo - -=head1 SYNOPSIS - - use Tk; - use Tk::PNG; - - my $image = $widget->Photo('-format' => 'png', -file => 'something.png'); - - -=head1 DESCRIPTION - -This is an extension for Tk800.* which supplies -PNG format loader for Photo image type. - - -=head1 AUTHOR - -Nick Ing-Simmons E<lt>nick@ing-simmons.netE<gt> - -=cut - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Pane.pm b/Master/tlpkg/tlperl.old/lib/Tk/Pane.pm deleted file mode 100644 index 36c5203a42d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Pane.pm +++ /dev/null @@ -1,544 +0,0 @@ -# Tk::Pane.pm -# -# Copyright (c) 1997-1998 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 Tk::Pane; - -use vars qw($VERSION); -$VERSION = '4.007'; # $Id: //depot/Tkutf8/Tk/Pane.pm#7 $ - -use Tk; -use Tk::Widget; -use Tk::Derived; -use Tk::Frame; - -use strict; - -use base qw(Tk::Derived Tk::Frame); - -Construct Tk::Widget 'Pane'; - -use Tk::Submethods( - grid => [qw/bbox columnconfigure location propagate rowconfigure size slaves/], - pack => [qw/propagate slaves/] -); - -sub ClassInit { - my ($class,$mw) = @_; - $mw->bind($class,'<Configure>',['QueueLayout',4]); - $mw->bind($class,'<FocusIn>', 'NoOp'); - return $class; -} - -sub Populate { - my $pan = shift; - - my $frame = $pan->Component(Frame => "frame"); - - $pan->afterIdle(['Manage',$pan,$frame]); - $pan->afterIdle(['QueueLayout',$pan,1]); - - $pan->Delegates( - DEFAULT => $frame, - # FIXME - # These are a hack to avoid an existing bug in Tk::Widget::DelegateFor - # which has been reported and should be fixed in the next Tk release - see => $pan, - xview => $pan, - yview => $pan, - ); - - $pan->ConfigSpecs( - DEFAULT => [$frame], - -sticky => [PASSIVE => undef, undef, undef], - -gridded => [PASSIVE => undef, undef, undef], - -xscrollcommand => [CALLBACK => undef, undef, undef], - -yscrollcommand => [CALLBACK => undef, undef, undef], - ); - - - $pan; -} - - -sub grid { - my $w = shift; - $w = $w->Subwidget('frame') - if (@_ && $_[0] =~ /^(?: bbox - |columnconfigure - |location - |propagate - |rowconfigure - |size - |slaves)$/x); - $w->SUPER::grid(@_); -} - -sub slave { - my $w = shift; - $w->Subwidget('frame'); -} - -sub pack { - my $w = shift; - $w = $w->Subwidget('frame') - if (@_ && $_[0] =~ /^(?:propagate|slaves)$/x); - $w->SUPER::pack(@_); -} - -sub QueueLayout { - shift if ref $_[1]; - my($m,$why) = @_; - $m->afterIdle(['Layout',$m]) unless ($m->{LayoutPending}); - $m->{LayoutPending} |= $why; -} - -sub AdjustXY { - my($w,$Wref,$X,$st,$scrl,$getx) = @_; - my $W = $$Wref; - - if($w >= $W) { - my $v = 0; - if($getx) { - $v |= 1 if $st =~ /[Ww]/; - $v |= 2 if $st =~ /[Ee]/; - } - else { - $v |= 1 if $st =~ /[Nn]/; - $v |= 2 if $st =~ /[Ss]/; - } - - if($v == 0) { - $X = int(($w - $W) / 2); - } - elsif($v == 1) { - $X = 0; - } - elsif($v == 2) { - $X = int($w - $W); - } - else { - $X = 0; - $$Wref = $w; - } - $scrl->Call(0,1) - if $scrl; - } - elsif($scrl) { - $X = 0 - if $X > 0; - $X = $w - $W - if(($X + $W) < $w); - $scrl->Call(-$X / $W,(-$X + $w) / $W); - } - else { - $X = 0; - $$Wref = $w; - } - - return $X; -} - -sub Layout { - my $pan = shift; - my $why = $pan->{LayoutPending}; - - my $slv = $pan->Subwidget('frame'); - - return unless $slv; - - my $H = $slv->ReqHeight; - my $W = $slv->ReqWidth; - my $X = $slv->x; - my $Y = $slv->y; - my $w = $pan->width; - my $h = $pan->height; - my $yscrl = $pan->{Configure}{'-yscrollcommand'}; - my $xscrl = $pan->{Configure}{'-xscrollcommand'}; - - $yscrl = undef - if(defined($yscrl) && UNIVERSAL::isa($yscrl, 'SCALAR') && !defined($$yscrl)); - $xscrl = undef - if(defined($xscrl) && UNIVERSAL::isa($xscrl, 'SCALAR') && !defined($$xscrl)); - - if($why & 1) { - $h = $pan->{Configure}{'-height'} || 0 - unless($h > 1); - $w = $pan->{Configure}{'-width'} || 0 - unless($w > 1); - - $h = $H - unless($h > 1 || defined($yscrl)); - $w = $W - unless($w > 1 || defined($xscrl)); - - $w = 100 if $w <= 1; - $h = 100 if $h <= 1; - - $pan->GeometryRequest($w,$h); - } - - my $st = $pan->{Configure}{'-sticky'} || ''; - - $pan->{LayoutPending} = 0; - - $slv->MoveResizeWindow( - AdjustXY($w,\$W,$X,$st,$xscrl,1), - AdjustXY($h,\$H,$Y,$st,$yscrl,0), - $W,$H - ); -} - -sub SlaveGeometryRequest { - my ($m,$s) = @_; - $m->QueueLayout(1); -} - -sub LostSlave { - my($m,$s) = @_; - $m->{Slave} = undef; -} - -sub Manage { - my $m = shift; - my $s = shift; - - $m->{Slave} = $s; - $m->ManageGeometry($s); - $s->MapWindow; - $m->QueueLayout(2); -} - -sub xview { - my $pan = shift; - - unless(@_) { - my $scrl = $pan->{Configure}{'-xscrollcommand'}; - return (0,1) unless $scrl; - my $slv = $pan->Subwidget('frame'); - my $sw = $slv->ReqWidth; - my $ldx = $pan->rootx - $slv->rootx; - my $rdx = $ldx + $pan->width; - $ldx = $ldx <= 0 ? 0 : $ldx / $sw; - $rdx = $rdx >= $sw ? 1 : $rdx / $sw; - return( $ldx , $rdx); - } - elsif(@_ == 1) { - my $widget = shift; - my $slv = $pan->Subwidget('frame'); - xyview(1,$pan, - moveto => ($widget->rootx - $slv->rootx) / $slv->ReqWidth); - } - else { - xyview(1,$pan,@_); - } -} - -sub yview { - my $pan = shift; - - unless(@_) { - my $scrl = $pan->{Configure}{'-yscrollcommand'}; - return (0,1) unless $scrl; - my $slv = $pan->Subwidget('frame'); - my $sh = $slv->ReqHeight; - my $tdy = $pan->rooty - $slv->rooty; - my $bdy = $tdy + $pan->height; - $tdy = $tdy <= 0 ? 0 : $tdy / $sh; - $bdy = $bdy >= $sh ? 1 : $bdy / $sh; - return( $tdy, $bdy); - } - elsif(@_ == 1) { - my $widget = shift; - my $slv = $pan->Subwidget('frame'); - xyview(0,$pan, - moveto => ($widget->rooty - $slv->rooty) / $slv->ReqHeight); - } - else { - xyview(0,$pan,@_); - } -} - -sub xyview { - my($horz,$pan,$cmd,$val,$mul) = @_; - my $slv = $pan->Subwidget('frame'); - return unless $slv; - - my($XY,$WH,$wh,$scrl,@a); - - if($horz) { - $XY = $slv->x; - $WH = $slv->ReqWidth; - $wh = $pan->width; - $scrl = $pan->{Configure}{'-xscrollcommand'}; - } - else { - $XY = $slv->y; - $WH = $slv->ReqHeight; - $wh = $pan->height; - $scrl = $pan->{Configure}{'-yscrollcommand'}; - } - - $scrl = undef - if(UNIVERSAL::isa($scrl, 'SCALAR') && !defined($$scrl)); - - if($WH < $wh) { - $scrl->Call(0,1); - return; - } - - if($cmd eq 'scroll') { - my $dxy = 0; - - my $gridded = $pan->{Configure}{'-gridded'} || ''; - my $do_gridded = ($gridded eq 'both' - || (!$horz == ($gridded ne 'x'))) ? 1 : 0; - - if($do_gridded && $mul eq 'pages') { - my $ch = ($slv->children)[0]; - if(defined($ch) && $ch->manager eq 'grid') { - @a = $horz - ? (1-$XY,int($slv->width / 2)) - : (int($slv->height / 2),1-$XY); - my $rc = ($slv->gridLocation(@a))[$horz ? 0 : 1]; - my $mrc = ($slv->gridSize)[$horz ? 0 : 1]; - $rc += $val; - $rc = 0 if $rc < 0; - $rc = $mrc if $rc > $mrc; - my $gsl; - while($rc >= 0 && $rc < $mrc) { - $gsl = ($slv->gridSlaves(-row => $rc))[0]; - last - if defined $gsl; - $rc += $val; - } - if(defined $gsl) { - @a = $horz ? ($rc,0) : (0,$rc); - $XY = 0 - ($slv->gridBbox(@a))[$horz ? 0 : 1]; - } - else { - $XY = $val > 0 ? $wh - $WH : 0; - } - $dxy = $val; $val = 0; - } - } - $dxy = $mul eq 'pages' ? ($horz ? $pan->width : $pan->height) : 10 - unless $dxy; - $XY -= $dxy * $val; - } - elsif($cmd eq 'moveto') { - $XY = -int($WH * $val); - } - - $XY = $wh - $WH - if($XY < ($wh - $WH)); - $XY = 0 - if $XY > 0; - - @a = $horz - ? ( $XY, $slv->y) - : ($slv->x, $XY); - - $slv->MoveWindow(@a); - - $scrl->Call(-$XY / $WH,(-$XY + $wh) / $WH); -} - -sub see { - my $pan = shift; - my $widget = shift; - my %opt = @_; - my $slv = $pan->Subwidget('frame'); - - my $anchor = defined $opt{'-anchor'} ? $opt{'-anchor'} : ""; - - if($pan->{Configure}{'-yscrollcommand'}) { - my $yanchor = lc(($anchor =~ /([NnSs]?)/)[0] || ""); - my $pty = $pan->rooty; - my $ph = $pan->height; - my $pby = $pty + $ph; - my $ty = $widget->rooty; - my $wh = $widget->height; - my $by = $ty + $wh; - my $h = $slv->ReqHeight; - - if($yanchor eq 'n' || ($yanchor ne 's' && ($wh >= $h || $ty < $pty))) { - my $y = $ty - $slv->rooty; - $pan->yview(moveto => $y / $h); - } - elsif($yanchor eq 's' || $by > $pby) { - my $y = $by - $ph - $slv->rooty; - $pan->yview(moveto => $y / $h); - } - } - - if($pan->{Configure}{'-xscrollcommand'}) { - my $xanchor = lc(($anchor =~ /([WwEe]?)/)[0] || ""); - my $ptx = $pan->rootx; - my $pw = $pan->width; - my $pbx = $ptx + $pw; - my $tx = $widget->rootx; - my $ww = $widget->width; - my $bx = $tx + $ww; - my $w = $slv->ReqWidth; - - if($xanchor eq 'w' || ( $xanchor ne 'e' && ($ww >= $w || $tx < $ptx))) { - my $x = $tx - $slv->rootx; - $pan->xview(moveto => $x / $w); - } - elsif($xanchor eq 'e' || $bx > $pbx) { - my $x = $bx - $pw - $slv->rootx; - $pan->xview(moveto => $x / $w); - } - } -} - -1; - -__END__ - -=head1 NAME - -Tk::Pane - A window panner - -=for category Derived Widgets - -=head1 SYNOPSIS - - use Tk::Pane; - - $pane = $mw->Scrolled(Pane, Name => 'fred', - -scrollbars => 'soe', - -sticky => 'we', - -gridded => 'y' - ); - - $pane->Frame; - - $pane->pack; - -=head1 DESCRIPTION - -B<Tk::Pane> provides a scrollable frame widget. Once created it can be -treated as a frame, except it is scrollable. - -=head1 OPTIONS - -=over 4 - -=item B<-gridded> =E<gt> I<direction> - -Specifies if the top and left edges of the pane should snap to a -grid column. This option is only useful if the widgets in the pane -are managed by the I<grid> geometry manager. Possible values are -B<x>, B<y> and B<xy>. - -=item B<-sticky> =E<gt> I<style> - -If Pane is larger than its requested dimensions, this option may be used to -position (or stretch) the slave within its cavity. I<Style> is a string that -contains zero or more of the characters n, s, e or w. The string can optionally -contains spaces or commas, but they are ignored. Each letter refers to a side -(north, south, east, or west) that the slave will "stick" to. If both n and s -(or e and w) are specified, the slave will be stretched to fill the entire -height (or width) of its cavity. - -=back - -=head1 METHODS - -=over 4 - -=item I<$pane>-E<gt>B<see>(I<$widget> ?,I<options>?) - -Adjusts the view so that I<$widget> is visable. Aditional parameters in -I<options-value> pairs can be passed, each I<option-value> pair must be -one of the following - -=over 8 - -=item B<-anchor> =E<gt> I<anchor> - -Specifies how to make the widget visable. If not given then as much of -the widget as possible is made visable. - -Possible values are B<n>, B<s>, B<w>, B<e>, B<nw>, B<ne>, B<sw> and B<se>. -This will cause an edge on the widget to be aligned with the corresponding -edge on the pane. for example B<nw> will cause the top left of the widget -to be placed at the top left of the pane. B<s> will cause the bottom of the -widget to be placed at the bottom of the pane, and as much of the widget -as possible made visable in the x direction. - -=back - -=item I<$pane>-E<gt>B<xview> - -Returns a list containing two elements, both of which are real fractions -between 0 and 1. The first element gives the position of the left of the -window, relative to the Pane as a whole (0.5 means it is halfway through the -Pane, for example). The second element gives the position of the right of the -window, relative to the Pane as a whole. - -=item I<$pane>-E<gt>B<xview>(I<$widget>) - -Adjusts the view in the window so that I<widget> is displayed at the left of -the window. - -=item I<$pane>-E<gt>B<xview>(B<moveto> =E<gt> I<fraction>) - -Adjusts the view in the window so that I<fraction> of the total width of the -Pane is off-screen to the left. fraction must be a fraction between 0 and 1. - -=item I<$pane>-E<gt>B<xview>(B<scroll> =E<gt> I<number>, I<what>) - -This command shifts the view in the window left or right according to I<number> -and I<what>. I<Number> must be an integer. I<What> must be either B<units> or -B<pages> or an abbreviation of one of these. If I<what> is B<units>, the view -adjusts left or right by I<number>*10 screen units on the display; if it is -B<pages> then the view adjusts by number screenfuls. If number is negative then -widgets farther to the left become visible; if it is positive then widgets -farther to the right become visible. - -=item I<$pane>-E<gt>B<yview> - -Returns a list containing two elements, both of which are real fractions -between 0 and 1. The first element gives the position of the top of the -window, relative to the Pane as a whole (0.5 means it is halfway through the -Pane, for example). The second element gives the position of the bottom of the -window, relative to the Pane as a whole. - -=item I<$pane>-E<gt>B<yview>(I<$widget>) - -Adjusts the view in the window so that I<widget> is displayed at the top of the -window. - -=item I<$pane>-E<gt>B<yview>(B<moveto> =E<gt> I<fraction>) - -Adjusts the view in the window so that I<fraction> of the total width of the -Pane is off-screen to the top. fraction must be a fraction between 0 and 1. - -=item I<$pane>-E<gt>B<yview>(B<scroll> =E<gt> I<number>, I<what>) - -This command shifts the view in the window up or down according to I<number> -and I<what>. I<Number> must be an integer. I<What> must be either B<units> or -B<pages> or an abbreviation of one of these. If I<what> is B<units>, the view -adjusts up or down by I<number>*10 screen units on the display; if it is -B<pages> then the view adjusts by number screenfuls. If number is negative then -widgets farther up become visible; if it is positive then widgets farther down -become visible. - -=back - -=head1 AUTHOR - -Graham Barr E<lt>F<gbarr@pobox.com>E<gt> - -=head1 COPYRIGHT - -Copyright (c) 1997-1998 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/tlpkg/tlperl.old/lib/Tk/Panedwindow.pm b/Master/tlpkg/tlperl.old/lib/Tk/Panedwindow.pm deleted file mode 100644 index d984b648897..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Panedwindow.pm +++ /dev/null @@ -1,221 +0,0 @@ -package Tk::Panedwindow; -use strict; - -use vars qw/$VERSION/; -$VERSION = sprintf '4.%03d', q$Revision: #3 $ =~ /#(\d+)/; - -# A Panedwindow widget (similar to Adjuster). - -use Tk qw/Ev/; -use base qw/Tk::Widget/; - -Construct Tk::Widget 'Panedwindow'; - -sub Tk_cmd { \&Tk::panedwindow } - -Tk::Methods('add', 'forget', 'identify', 'proxy', 'sash', 'panes'); - -use Tk::Submethods ( - 'proxy' => [qw/coord forget place/], - 'sash' => [qw/coord mark place/], -); - -sub ClassInit { - - my ($class,$mw) = @_; - - $class->SUPER::ClassInit($mw); - - $mw->bind($class, '<Button-1>' => ['MarkSash' => Ev('x'), Ev('y'), 1]); - $mw->bind($class, '<Button-2>' => ['MarkSash' => Ev('x'), Ev('y'), 0]); - $mw->bind($class, '<B1-Motion>' => ['DragSash' => Ev('x'), Ev('y'), 1]); - $mw->bind($class, '<B2-Motion>' => ['DragSash' => Ev('x'), Ev('y'), 0]); - $mw->bind($class, '<ButtonRelease-1>' => ['ReleaseSash' => 1]); - $mw->bind($class, '<ButtonRelease-2>' => ['ReleaseSash' => 0]); - $mw->bind($class, '<Motion>' => ['Motion' => Ev('x'), Ev('y')]); - $mw->bind($class, '<Leave>' => ['Leave']); - - return $class; - -} # end ClassInit - -sub MarkSash { - - # MarkSash - # - # Handle marking the correct sash for possible dragging - # - # Arguments: - # w the widget - # x widget local x coord - # y widget local y coord - # proxy whether this should be a proxy sash - # Results: - # None - - my ($w, $x, $y, $proxy) = @_; - - my @what = $w->identify($x, $y); - if ( @what == 2 ) { - my ($index, $which) = @what[0 .. 1]; - if (not $Tk::strictMotif or $which eq 'handle') { - $w->sashMark($index, $x, $y) if not $proxy; - $w->{_sash} = $index; - my ($sx, $sy) = $w->sashCoord($index); - $w->{_dx} = $sx - $x; - $w->{_dy} = $sy - $y; - } - } - -} # end MarkSash - -sub DragSash { - - # DragSash - # - # Handle dragging of the correct sash - # - # Arguments: - # w the widget - # x widget local x coord - # y widget local y coord - # proxy whether this should be a proxy sash - # Results: - # Moves sash - - my ($w, $x, $y, $proxy) = @_; - - if ( exists $w->{_sash} ) { - if ($proxy) { - $w->proxyPlace($x + $w->{_dx}, $y + $w->{_dy}); - } else { - $w->sashPlace($w->{_sash}, $x + $w->{_dx}, $y + $w->{_dy}); - } - } - -} # end DragSash - -sub ReleaseSash { - - # ReleaseSash - # - # Handle releasing of the sash - # - # Arguments: - # w the widget - # proxy whether this should be a proxy sash - # Results: - # Returns ... - - my ($w, $proxy) = @_; - - if ( exists $w->{_sash} ) { - if ($proxy) { - my ($x, $y) = $w->proxyCoord; - $w->sashPlace($w->{_sash}, $x, $y); - $w->proxyForget; - } - delete $w->{'_sash', '_dx', '_dy'}; - } - -} # end ReleaseSash - -sub Motion { - - # Motion - # - # Handle motion on the widget. This is used to change the cursor - # when the user moves over the sash area. - # - # Arguments: - # w the widget - # x widget local x coord - # y widget local y coord - # Results: - # May change the cursor. Sets up a timer to verify that we are still - # over the widget. - - my ($w, $x, $y) = @_; - - my @id = $w->identify($x, $y); - if ( (@id == 2) and - (not $Tk::strictMotif or $id[1] eq 'handle') ) { - if ( not exists $w->{_panecursor} ) { - $w->{_panecursor} = $w->cget(-cursor); - if ( not defined $w->cget(-sashcursor) ) { - if ( $w->cget(-orient) eq 'horizontal' ) { - $w->configure(-cursor => 'sb_h_double_arrow'); - } else { - $w->configure(-cursor => 'sb_v_double_arrow'); - } - } else { - $w->configure(-cursor => $w->cget(-sashcursor)); - } - if ( exists $w->{_pwAfterId} ) { - $w->afterCancel($w->{_pwAfterId}); - } - $w->{_pwAfterId} = $w->after(150 => ['Cursor' => $w]); - } - return - } - if ( exists $w->{_panecursor} ) { - $w->configure(-cursor => $w->{_panecursor}); - delete $w->{_panecursor}; - } - -} # end Motion - -sub Cursor { - - # Cursor - # - # Handles returning the normal cursor when we are no longer over the - # sash area. This needs to be done this way, because the panedwindow - # won't see Leave events when the mouse moves from the sash to a - # paned child, although the child does receive an Enter event. - # - # Arguments: - # w the widget - # Results: - # May restore the default cursor, or schedule a timer to do it. - - my ($w) = @_; - - if ( exists $w->{_panecursor} ) { - if ( $w->containing($w->pointerx, $w->pointery) == $w ) { - $w->{_pwAfterId} = $w->after(150 => ['Cursor' => $w]); - } else { - $w->configure(-cursor => $w->{_panecursor}); - delete $w->{_panecursor}; - if ( exists $w->{_pwAfterId} ) { - $w->afterCancel($w->{_pwAfterId}); - delete $w->{_pwAfterId}; - } - } - } - -} # end Cursor - -sub Leave { - - # Leave - # - # Return to default cursor when leaving the pw widget. - # - # Arguments: - # w the widget - # Results: - # Restores the default cursor - - my ($w) = @_; - - if ( exists $w->{_panecursor} ) { - $w->configure(-cursor => $w->{_panecursor}); - delete $w->{_panecursor}; - } - -} # end Leave - - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Photo.pm b/Master/tlpkg/tlperl.old/lib/Tk/Photo.pm deleted file mode 100644 index a596dc4d78b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Photo.pm +++ /dev/null @@ -1,22 +0,0 @@ -package Tk::Photo; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', 4+q$Revision: #4 $ =~ /\D(\d+)\s*$/; - -use Tk qw($XS_VERSION); - -use base qw(Tk::Image); - -Construct Tk::Image 'Photo'; - -sub Tk_image { 'photo' } - -Tk::Methods('blank','copy','data','formats','get','put','read', - 'redither','transparency','write'); - -use Tk::Submethods ( - 'transparency' => [qw/get set/], -); - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Pixmap.pm b/Master/tlpkg/tlperl.old/lib/Tk/Pixmap.pm deleted file mode 100644 index 3fbc3179b56..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Pixmap.pm +++ /dev/null @@ -1,19 +0,0 @@ -package Tk::Pixmap; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/TixPixmap/Pixmap.pm#4 $ - -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/tlpkg/tlperl.old/lib/Tk/Pretty.pm b/Master/tlpkg/tlperl.old/lib/Tk/Pretty.pm deleted file mode 100644 index 7e442a4bcbc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Pretty.pm +++ /dev/null @@ -1,93 +0,0 @@ -# Copyright (c) 1995-2003 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 = '4.006'; # $Id: //depot/Tkutf8/Tk/Pretty.pm#6 $ - -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/tlpkg/tlperl.old/lib/Tk/ProgressBar.pm b/Master/tlpkg/tlperl.old/lib/Tk/ProgressBar.pm deleted file mode 100644 index 206d843ea13..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/ProgressBar.pm +++ /dev/null @@ -1,498 +0,0 @@ -package Tk::ProgressBar; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #10 $ =~ /\D(\d+)\s*$/; - -use Tk; -use Tk::Canvas; -use Tk::Trace; -use Carp; -use strict; - -use base qw(Tk::Derived Tk::Canvas); - -Construct Tk::Widget 'ProgressBar'; - -sub ClassInit { - my ($class,$mw) = @_; - - $class->SUPER::ClassInit($mw); - - $mw->bind($class,'<Configure>', ['_layoutRequest',1]); -} - - -sub Populate { - my($c,$args) = @_; - - $c->ConfigSpecs( - -width => [PASSIVE => undef, undef, 0], - '-length' => [PASSIVE => undef, undef, 0], - -from => [PASSIVE => undef, undef, 0], - -to => [PASSIVE => undef, undef, 100], - -blocks => [PASSIVE => undef, undef, 10], - -padx => [PASSIVE => 'padX', 'Pad', 0], - -pady => [PASSIVE => 'padY', 'Pad', 0], - -gap => [PASSIVE => undef, undef, 1], - -colors => [PASSIVE => undef, undef, undef], - -relief => [SELF => 'relief', 'Relief', 'sunken'], - -value => [METHOD => undef, undef, undef], - -variable => [METHOD => undef, undef, undef], - -anchor => [METHOD => 'anchor', 'Anchor', 'w'], - -resolution - => [PASSIVE => undef, undef, 1.0], - -highlightthickness - => [SELF => 'highlightThickness','HighlightThickness',0], - -troughcolor - => [PASSIVE => 'troughColor', 'Background', 'grey55'], - ); - _layoutRequest($c,1); - $c->OnDestroy(['Destroyed' => $c]); -} - -sub anchor { - my $c = shift; - my $var = \$c->{Configure}{'-anchor'}; - my $old = $$var; - - if(@_) { - my $new = shift; - croak "bad anchor position \"$new\": must be n, s, w or e" - unless $new =~ /^[news]$/; - $$var = $new; - } - - $old; -} - -sub _layoutRequest { - my $c = shift; - my $why = shift; - $c->afterIdle(['_arrange',$c]) unless $c->{'layout_pending'}; - $c->{'layout_pending'} |= $why; -} - -sub _arrange { - my $c = shift; - my $why = $c->{'layout_pending'}; - - $c->{'layout_pending'} = 0; - - my $w = $c->Width; - my $h = $c->Height; - my $bw = $c->cget('-borderwidth') + $c->cget('-highlightthickness'); - my $x = abs(int($c->{Configure}{'-padx'})) + $bw; - my $y = abs(int($c->{Configure}{'-pady'})) + $bw; - my $value = $c->value; - my $from = $c->{Configure}{'-from'}; - my $to = $c->{Configure}{'-to'}; - my $horz = $c->{Configure}{'-anchor'} =~ /[ew]/i ? 1 : 0; - my $dir = $c->{Configure}{'-anchor'} =~ /[se]/i ? -1 : 1; - - my($minv,$maxv) = $from < $to ? ($from,$to) : ($to,$from); - - if($w == 1 && $h == 1) { - my $bw = $c->cget('-borderwidth'); - my $defw = 10 + $y*2 + $bw *2; - my $defl = ($maxv - $minv) + $x*2 + $bw*2; - - $h = $c->pixels($c->{Configure}{'-length'}) || $defl; - $w = $c->pixels($c->{Configure}{'-width'}) || $defw; - - ($w,$h) = ($h,$w) if $horz; - $c->GeometryRequest($w,$h); - $c->parent->update; - $c->update; - - $w = $c->Width; - $h = $c->Height; - } - - $w -= $x*2; - $h -= $y*2; - - my $length = $horz ? $w : $h; - my $width = $horz ? $h : $w; - - my $blocks = int($c->{Configure}{'-blocks'}); - my $gap = int($c->{Configure}{'-gap'}); - - $blocks = 1 if $blocks < 1; - - my $gwidth = $gap * ( $blocks - 1); - my $bwidth = ($length - $gwidth) / $blocks; - - if($bwidth < 3 || $blocks <= 1 || $gap <= 0) { - $blocks = 1; - $bwidth = $length; - $gap = 0; - } - - if($why & 1) { - my $colors = $c->{Configure}{'-colors'} || []; - my $bdir = $from < $to ? $dir : 0 - $dir; - - $c->delete($c->find('all')); - - $c->createRectangle(0,0,$w+$x*2,$h+$y*2, - -fill => $c->{Configure}{'-troughcolor'}, - -width => 0, - -outline => undef); - - $c->{'cover'} = $c->createRectangle($x,$y,$w,$h, - -fill => $c->{Configure}{'-troughcolor'}, - -width => 0, - -outline => undef); - - my($x0,$y0,$x1,$y1); - - if($horz) { - if($bdir > 0) { - ($x0,$y0) = ($x - $gap,$y); - } - else { - ($x0,$y0) = ($length + $x + $gap,$y); - } - ($x1,$y1) = ($x0,$y0 + $width); - } - else { - if($bdir > 0) { - ($x0,$y0) = ($x,$y - $gap); - } - else { - ($x0,$y0) = ($x,$length + $y + $gap); - } - ($x1,$y1) = ($x0 + $width,$y0); - } - - my $blks = $blocks; - my $dval = ($maxv - $minv) / $blocks; - my $color = $c->cget('-foreground'); - my $pos = 0; - my $val = $minv; - - while($val < $maxv) { - my($bw,$nval); - - while(($pos < @$colors) && $colors->[$pos] <= $val) { - $color = $colors->[$pos+1]; - $pos += 2; - } - - if($blocks == 1) { - $nval = defined($colors->[$pos]) - ? $colors->[$pos] : $maxv; - $bw = (($nval - $val) / ($maxv - $minv)) * $length; - } - else { - $bw = $bwidth; - $nval = $val + $dval if($blocks > 1); - } - - if($horz) { - if($bdir > 0) { - $x0 = $x1 + $gap; - $x1 = $x0 + $bw; - } - else { - $x1 = $x0 - $gap; - $x0 = $x1 - $bw; - } - } - else { - if($bdir > 0) { - $y0 = $y1 + $gap; - $y1 = $y0 + $bw; - } - else { - $y1 = $y0 - $gap; - $y0 = $y1 - $bw; - } - } - - $c->createRectangle($x0,$y0,$x1,$y1, - -fill => $color, - -width => 0, - -outline => undef - ); - $val = $nval; - } - } - - my $cover = $c->{'cover'}; - my $ddir = $from > $to ? 1 : -1; - - if(($value <=> $to) == (0-$ddir)) { - $c->lower($cover); - } - elsif(($value <=> $from) == $ddir) { - $c->raise($cover); - my $x1 = $horz ? $x + $length : $x + $width; - my $y1 = $horz ? $y + $width : $y + $length; - $c->coords($cover,$x,$y,$x1,$y1); - } - else { - my $step; - $value = int($value / $step) * $step - if(defined($step = $c->{Configure}{'-resolution'}) && $step > 0); - - $maxv = $minv+1 - if $minv == $maxv; - - my $range = $maxv - $minv; - my $bval = $range / $blocks; - my $offset = abs($value - $from); - my $ioff = int($offset / $bval); - my $start = $ioff * ($bwidth + $gap); - $start += ($offset - ($ioff * $bval)) / $bval * $bwidth; - - my($x0,$x1,$y0,$y1); - - if($horz) { - $y0 = $y; - $y1 = $y + $h; - if($dir > 0) { - $x0 = $x + $start; - $x1 = $x + $w; - } - else { - $x0 = $x; - $x1 = $w + $x - $start; - } - } - else { - $x0 = $x; - $x1 = $x + $w; - if($dir > 0) { - $y0 = $y + $start; - $y1 = $y + $h; - } - else { - $y0 = $y; - $y1 = $h + $y - $start; - } - } - - - $c->raise($cover); - $c->coords($cover,$x0,$y0,$x1,$y1); - } -} - -sub value { - my $c = shift; - my $val = defined($c->{'-variable'}) - ? $c->{'-variable'} - : \$c->{'-value'}; - my $old = defined($$val) ? $$val : $c->{Configure}{'-from'}; - - if(@_) { - my $value = shift; - $$val = defined($value) ? $value : $c->{Configure}{'-from'}; - _layoutRequest($c,2); - } - - $old; -} - -sub variable { - my $c = shift; - my $oldvarref = $c->{'-variable'}; - my $oldval = $$oldvarref if $oldvarref; - if(@_) { - my $varref = shift; - if ($oldvarref) - { - $c->traceVdelete($oldvarref); - } - $c->{'-variable'} = $varref; - $c->traceVariable($varref, 'w', sub { $c->value($_[1]) }); - $$varref = $oldval; - _layoutRequest($c,2); - } - $oldval; -} - -sub Destroyed -{ - my $c = shift; - my $var = delete $c->{'-variable'}; - $c->traceVdelete($var); -} - -1; -__END__ - -=head1 NAME - -Tk::ProgressBar - A graphical progress bar - -=for category Derived Widgets - -=head1 SYNOPSIS - - use Tk::ProgressBar; - - $progress = $parent->ProgressBar( - -width => 200, - -length => 20, - -anchor => 's', - -from => 0, - -to => 100, - -blocks => 10, - -colors => [0, 'green', 50, 'yellow' , 80, 'red'], - -variable => \$percent_done - ); - - $progress->value($position); - -=head1 DESCRIPTION - -B<Tk::ProgressBar> provides a widget which will show a graphical representation -of a value, given maximum and minimum reference values. - -=head1 STANDARD OPTIONS - -The following standard widget options are supported: - -=over 4 - -=item B<-borderwidth> - -=item B<-highlightthickness> - -Defaults to 0. - -=item B<-padx> - -Defaults to 0. - -=item B<-pady> - -Defaults to 0. - -=item B<-relief> - -Defaults to C<sunken> - -=item B<-troughcolor> - -The color to be used for the background (trough) of the progress bar. -Default is to use grey55. - -=back - -=head1 WIDGET-SPECIFIC OPTIONS - -=over 4 - -=item B<-anchor> - -This can be used to position the start point of the bar. Default -is 'w' (horizontal bar starting from the left). A vertical bar can be -configured by using either 's' or 'n'. - -=item B<-blocks> - -This controls the number of blocks to be used to construct the progress -bar. The default is to break the bar into 10 blocks. - -=item B<-colors> - -Controls the colors to be used for different positions of the progress bar. -The colors should be supplied as a reference to an array containing pairs -of positions and colors. - - -colors => [ 0, 'green', 50, 'red' ] - -means that for the range 0 to 50 the progress bar should be green -and for higher values it should be red. - - -=item B<-from> - -This sets the lower limit of the progress bar. If the bar is set to a -value below the lower limt no bar will be displayed. Defaults to 0. -See the C<-to> description for more information. - -=item B<-gap> - -This is the spacing (in pixels) between each block. Defaults to 1. -Use 0 to get a continuous bar. - - -=item B<-length> - -Specifies the desired long dimension of the ProgressBar in screen -units (i.e. any of the forms acceptable to Tk_GetPixels). For vertical -ProgressBars this is the ProgressBars height; for horizontal scales it -is the ProgressBars width. The default length is calculated from the -values of C<-padx>, C<-borderwidth>, C<-highlightthickness> and the -difference between C<-from> and C<-to>. - - -=item B<-resolution> - -A real value specifying the resolution for the scale. If this value is greater -than zero then the scale's value will always be rounded to an even multiple of -this value, as will tick marks and the endpoints of the scale. If the value is -less than zero then no rounding occurs. Defaults to 1 (i.e., the value will be -integral). - -=item B<-to> - -This sets the upper limit of the progress bar. If a value is specified -(for example, using the C<value> method) that lies above this value the -full progress bar will be displayed. Defaults to 100. - - - -=item B<-variable> - -Specifies the reference to a scalar variable to link to the ProgressBar. -Whenever the value of the variable changes, the ProgressBar will upate -to reflect this value. (See also the B<value> method below.) - -=item B<-value> - -The can be used to set the current position of the progress bar -when used in conjunction with the standard C<configure>. It is -usually recommended to use the B<value> method instead. - - -=item B<-width> - -Specifies the desired narrow dimension of the ProgressBar in screen -units (i.e. any of the forms acceptable to Tk_GetPixels). For -vertical ProgressBars this is the ProgressBars width; for horizontal -bars this is the ProgressBars height. The default width is derived -from the values of C<-borderwidth> and C<-pady> and C<-highlightthickness>. - -=back - -=head1 WIDGET METHODS - -=over 4 - -=item I<$ProgressBar>-E<gt>B<value>(?I<value>?) - -If I<value> is omitted, returns the current value of the ProgressBar. If -I<value> is given, the value of the ProgressBar is set. If I<$value> is -given but undefined the value of the option B<-from> is used. - -=back - - -=head1 AUTHOR - -Graham Barr E<lt>F<gbarr@pobox.com>E<gt> - -=head1 COPYRIGHT - -Copyright (c) 1997-1998 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/tlpkg/tlperl.old/lib/Tk/README.Adjust b/Master/tlpkg/tlperl.old/lib/Tk/README.Adjust deleted file mode 100644 index 8c3eba45717..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/README.Adjust +++ /dev/null @@ -1,77 +0,0 @@ -Subject: Adjuster -Date: Wed, 16 Dec 1998 22:23:23 +0100 -From: Stephen Kun <stephen.kun@is.gaertner.de> -To: Nick Ing-Simmons <nick@ni-s.u-net.com> - - - - -3. How do I find out whether slave is a pack or grid master or if it is not a -master (for setting packPropagate(0)) -Currently I set both on the slave. - -4. In setting position of drag bar, I do a lot of calcs for each motion event. -Some could be done one for first, then used again for subsequent calls, eg: -borderwidth of master, etc. -I've now partially done this and store them on the widget. - -5. Do I need XSync and idletasks calls in Adjuster.pm? -XSync causes a bug. idletasks doesn't make any difference in practice, from -what I can see. I've commented both out. -Bug when using XSync: - Run pack_adj_4r - Shorten whole window from right so that left window edge crosses leftmost - adjuster. Buttons on other adjusters disappear - -6. Sometimes the effect given by the Restore method, is undesirable. Eg. -for multi-columns. Then when you expand say the 1st column, the size of the -col at the end gets reduced to 0 width when the Adjuster forces itself in. -Then when you reduce the size of the first column again, the end col is still -0 width. -Better would be: -a) put the restore functionality on a flag OR -b) when a col is reduced because of a Restore, it saves previous width of -its slave, and attempts to restore it when the space becomes availabe. (Sounds -impracticable.) -I've implemented a) with default ON. In the documentation I'll recommend the -default for the 1st Adjuster, then OFF for the remaining. - -8. What about a packAdjustForget? Given that Adjuster doesn't work well for -grid anyway, and doesn't consider other managers, that wouldn't be too bad. -I'm not going to do this, but someone mentioned it a while ago. I can -see me probably wanting it too at some point. -Are you for the idea? - -10. Grid doesn't work well with Adjuster, didn't before either. I think -this has to do with grid, rather than adjuster. You get the same effect -if you grid a row of widgets, then reduce the width of the window. -Bugs demonstrated by grid_adj_4l: -a) there's never an Unmap event for the adjuster. -b) after adjusting, widgets protrude into border on right. -c) grid('Propagate', 0) on MainWindow has no effect - window shrinks/grows - when widgets are adjusted -d) widgets shuffle to correct position on startup -I don't recommend use of grid with Adjust! - -11. Have taken out __END__ temporarily for testing -Will put it back before publishing on the mailing list. - -12. Why do the adjusters in my testcases come out grey? That's not the -default background. - -13. Could packAdjust return ($adj, $w). Could then do: - my $canv = $top->Canvas()->packAdjust(); -OR - my ($adj, $canv) = $top->Canvas()->packAdjust(); -Latter is good if you want to configure or unpack adjuster later. -I realise this is very Kludgy, but there's no other way to get the -Adjuster from packAdjust. -I suppose the workaround of creating the Adjuster yourself is OK. When -you do it by hand though, there's more chance of making mistakes, eg -forgetting the -side (which defaults then to 'top') which would cause havoc. -What's your opinion. - -14. Run the script adj_button_bug: You can't reduce size of button. -Button can be expanded, but as soon as focus enters button, it springs back -to its original size. Why? -It's not important though. diff --git a/Master/tlpkg/tlperl.old/lib/Tk/ROText.pm b/Master/tlpkg/tlperl.old/lib/Tk/ROText.pm deleted file mode 100644 index cc5634f5475..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/ROText.pm +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) 1995-2003 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 = sprintf '4.%03d', q$Revision: #10 $ =~ /\D(\d+)\s*$/; - -use Tk::Text; -use base qw(Tk::Derived 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 Populate { - my($self,$args) = @_; - $self->SUPER::Populate($args); - my $m = $self->menu->entrycget($self->menu->index('Search'), '-menu'); - $m->delete($m->index('Replace')); -} - -sub Tk::Widget::ScrlROText { shift->Scrolled('ROText' => @_) } - -1; - -__END__ - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Radiobutton.pm b/Master/tlpkg/tlperl.old/lib/Tk/Radiobutton.pm deleted file mode 100644 index d09d41b4208..00000000000 --- a/Master/tlpkg/tlperl.old/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-2003 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 = '4.006'; # $Id: //depot/Tkutf8/Tk/Radiobutton.pm#6 $ - -# 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/tlpkg/tlperl.old/lib/Tk/Region.pm b/Master/tlpkg/tlperl.old/lib/Tk/Region.pm deleted file mode 100644 index 3e02bd2ff49..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Region.pm +++ /dev/null @@ -1,182 +0,0 @@ -package Tk::Region; - -# Ideas in progress do not document ... - -use strict; - -use vars qw($VERSION); -$VERSION = '4.006'; # $Id: //depot/Tkutf8/Tk/Region.pm#6 $ - -use Tk::Widget (); - -Construct Tk::Widget 'Region'; - -my %index = (-widget => 1, '-x' => 2, '-y' => 3, -width => 4, -height => 5); - -sub _attr -{ - my ($obj,$key,$val) = @_; - if (@_ > 2) - { - $obj->{$key} = $val; - } - return $obj->{$key} -} - -foreach my $name (qw(widget x y width height)) - { - my $key = "-$name"; - no strict 'refs'; - *{$name} = sub { shift->_attr($key,@_) }; - } - -sub new -{ - my $class = shift; - my $widget = shift; - my $obj = bless [\%index,$widget,0,0,0,0],$class; - $obj->configure(@_); -} - -sub cfgDefault -{ - my ($class,$key) = @_; - return undef; -} - -sub cfgName -{ - my ($class,$key) = @_; - $key =~ s/^-//; - return lcfirst($key); -} - -sub cfgClass -{ - return ucfirst(shift->cfgName(@_)); -} - -sub configure -{ - my $obj = shift; - my @results; - if (@_ > 1) - { - while (@_) - { - my $key = shift; - my $val = shift; - if (exists $obj->{$key}) - { - $obj->{$key} = $val; - } - else - { - my ($meth) = $key =~ /^-(\w+)$/; - croak("Invalid option $key") unless $obj->can($meth); - $obj->$meth($val); - } - } - } - elsif (@_ == 1) - { - my $key = shift; - my $value = $obj->cget($key); - push(@results,$key,$obj->cfgName($key),$obj->cfgClass($key),$obj->cfgDefault($key),$value); - } - else - { - foreach my $key (sort keys %$obj) - { - push(@results,scalar($obj->configure($key))) - } - } - return wantarray ? @results : \@results; -} - -sub cget -{ - my $obj = shift; - my $key = shift; - return $obj->{$key} if exists $obj->{$key}; - my ($meth) = $key =~ /^-(\w+)$/; - croak("Invalid option $key") unless $obj->can($meth); - return $obj->$meth(); -} - -sub bbox -{ - my $obj = shift; - my @results; - if (@_) - { - my $ref = (@_ == 1) ? shift : \@_; - my ($x1,$y1,$x2,$y2) = (ref $ref) ? @$ref : split(/\s+/,$ref); - ($x2,$x1) = ($x1,$x2) if ($x2 < $x1); - ($y2,$y1) = ($y1,$y2) if ($y2 < $y1); - $obj->width($x2-$x1); - $obj->height($y2-$y1); - $obj->x($x1); - $obj->y($y1); - } - else - { - my $x = $obj->x; - my $y = $obj->x; - push(@results,$x,$y,$x+$obj->width,$y+$obj->height); - } - return wantarray ? @results : \@results; -} - -sub rootx -{ - my $obj = shift; - if (@_) - { - my $x = shift; - $obj->x($x-$obj->widget->rootx); - } - return $obj->widget->rootx + $obj->{'-x'} -} - -sub rooty -{ - my $obj = shift; - if (@_) - { - my $y = shift; - $obj->y($y-$obj->widget->rootx); - } - return $obj->widget->rooty + $obj->{'-y'} -} - -sub rootxy -{ - my $obj = shift; - if (@_) - { - $obj->rootx(shift); - $obj->rooty(shift); - } - my @results = ($obj->rootx,$obj->rooty); - return wantarray ? @results : \@results; -} - -sub rootbbox -{ - my $obj = shift; - my ($x1,$y1) = $obj->rootxy; - my $x2 = $x1+$obj->width; - my $y2 = $y1+$obj->height; - my @results = ($x1,$y1,$x2,$y2); - return wantarray ? @results : \@results; -} - - -*Width = \&width; -*Height = \&height; -*X = \&rootx; -*Y = \&rooty; - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Reindex.pm b/Master/tlpkg/tlperl.old/lib/Tk/Reindex.pm deleted file mode 100644 index 05e8e1fc1fc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Reindex.pm +++ /dev/null @@ -1,225 +0,0 @@ -package Tk::Reindex; - - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/TextList/Reindex.pm#4 $ - -use Tk; -use base qw(Tk::Derived); - - -sub Populate -{ - my ($w, $args) = @_; - - $w->_callbase('Populate',$args); - - $w->ConfigSpecs(-linestart => ["PASSIVE", "lineStart", "LineStart", 0], - -toindexcmd => ["CALLBACK", "toIndexCmd", "ToIndexCmd" , [\&to_index,$w]], - -fromindexcmd => ["CALLBACK", "fromIndexCmd","FromIndexCmd", [\&from_index,$w]]); -} - -sub import -{ - my($module,$base)=@_; - my $pkg=(caller)[0]; - - no strict 'refs'; - *{"${pkg}::_reindexbase"}=sub{$base}; -} - -sub _callbase -{ - my($w,$sub)=(shift,shift); - my $supersub=$w->_reindexbase()."::$sub"; - $w->$supersub(@_); -} - -BEGIN -{ - # list of subroutines and index argument number (-1 as first element means return value) - my %subs=('bbox' => [0], - 'compare' => [0,2], - 'delete' => [0,1], - 'dlineinfo' => [0], - 'dump' => \&_find_dump_index, - 'get' => [0,1], - 'index' => [-1,0], - 'insert' => [0], - 'mark' => \&_find_mark_index, - 'search' => \&_find_search_index, - 'see' => [0], - 'tag' => \&_find_tag_index, - 'window' => [1], - 'image' => [1], - ); - - foreach my $sub (keys %subs) - { - my $args=$subs{$sub}; - my $argsub=ref $args eq 'CODE'?$args:sub{$args}; - my $newsub=sub - { - my($w)=shift; - my(@iargs)=grep($_<=$#_,@{$argsub->(@_)}); - my $iret=shift @iargs if @iargs && $iargs[0]==-1; - my(@args)=@_; - @args[@iargs]=$w->Callback(-toindexcmd,@args[@iargs]); - my(@ret)=$w->_callbase($sub,@args); - @ret=$w->Callback(-fromindexcmd,@ret) if $iret; - wantarray?@ret:$ret[0]; - }; - no strict 'refs'; - *{$sub}=$newsub; - } -} - -sub to_index -{ - my $w=shift; - my $offset=$w->cget(-linestart)+1; - my(@args)=@_; - foreach (@args) - { - s/^\d+(?=\.)/$&+$offset/e; - } - @args; -} - -sub from_index -{ - my $w=shift; - my $offset=$w->cget(-linestart)+1; - my(@args)=@_; - foreach (@args) - { - s/^\d+(?=\.)/$&-$offset/e - } - @args; -} - -sub _find_dump_index -{ - my $idx=_count_options(@_); - [$idx,$idx+1]; -} - -sub _find_search_index -{ - my $idx=_count_options(@_); - [$idx+1,$idx+2]; -} - -sub _count_options -{ - my $idx=0; - while($_[$idx]=~/^-/g) - { - $idx++; - $idx++ if $' eq 'count' or $' eq 'command'; - last if $' eq '-'; - } - $idx; -} - -sub _find_tag_index -{ - return [1] if $_[0] eq 'names'; - return [2,3] if $_[0]=~/^(add|remove|nextrange|prevrange)$/; - return [-1] if $_[0] eq 'ranges'; - return []; -} - -sub _find_mark_index -{ - return [2] if $_[0] eq 'set'; - return [1] if $_[0] eq 'next' or $_[0] eq 'previous'; - return []; -} - -1; - -=head1 NAME - -Tk::Reindex - change the base index of Text-like widgets - -=for category Derived Widgets - -=head1 SYNOPSIS - - use Tk::ReindexedText; - $t1=$w->ReindexedText(-linestart => 2); - - use Tk::ReindexedROText; - $t2=$w->ReindexedROText(-linestart => 0); - -=head1 DESCRIPTION - -Creates a new widget class based on B<Text>-like widgets that can -redefine the line number base (normally B<Text> widgets start line -numbers at 1), or possibly other manipulations on indexes. - -=head1 STANDARD OPTIONS - -The newly-defined widget takes all the same options as the base -widget, which defaults to B<Text>. - -=head1 WIDGET-SPECIFIC OPTIONS - -=item Name: B<lineStart> - -=item Class: B<LineStart> - -=item Switch: B<-linestart> - -Sets the line number of the first line in the B<Text> widget. The -default B<-toindexcmd> and B<-fromindexcmd> use this configuration -option. - --item Name: B<toIndexCmd> B<fromIndexCmd> - --item Class: B<ToIndexCmd> B<FromIndexCmd> - --item Switch: B<-toindexcmd> B<-fromindexcmd> - -These two options specify callbacks that are called with a list of -indexes and are responsible for translating them to/from indexes that -the base B<Text> widget can understand. The callback is passed the -widget followed by a list of indexes, and should return a list of -translated indexes. B<-toindexcmd> should translate from 'user' -indexes to 'native' B<Text>-compatible indexes, and B<-fromindexcmd> -should translate from 'native' indexes to 'user' indexes. - -The default callbacks simply add/subtract the offset given by the -B<-linestart> option for all indexes in 'line.character' format. - -It would probably be prudent to make these functions inverses of each -other. - -=head1 CLASS METHODS - -=item import - -To make new Reindex widgets, this function should be called via B<use> -with the name of the Text-like base class that you are extending with -"Reindex" capability. 'use base(Tk::Reindex Tk::nameofbasewidget)' -should also be specified for that widget. - -=head1 BUGS - -I've used the word "indexes" instead of "indices" throughout the -documentation. - -All the built-in perl code for widget bindings & methods will use the -new 'user' indexes. Which means all this index manipulation might -might break code that is trying to parse/manipulate indexes. Or even -assume that '1.0' is the beginning index. B<Tk::Text::Contents> comes -to mind. - -=head1 AUTHOR - -Andrew Allen <ada@fc.hp.com> - -This code may be distributed under the same conditions as Perl. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Tk/ReindexedROText.pm b/Master/tlpkg/tlperl.old/lib/Tk/ReindexedROText.pm deleted file mode 100644 index 8c293f5fa61..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/ReindexedROText.pm +++ /dev/null @@ -1,13 +0,0 @@ -use strict; -package Tk::ReindexedROText; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/TextList/ReindexedROText.pm#4 $ - -use Tk::Reindex qw(Tk::ROText); -use base qw(Tk::Reindex Tk::ROText); -Construct Tk::Widget 'ReindexedROText'; - -1; - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/ReindexedText.pm b/Master/tlpkg/tlperl.old/lib/Tk/ReindexedText.pm deleted file mode 100644 index c16a6fe7fd7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/ReindexedText.pm +++ /dev/null @@ -1,13 +0,0 @@ -use strict; -package Tk::ReindexedText; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/TextList/ReindexedText.pm#4 $ - -use Tk::Reindex qw(Tk::Text); -use base qw(Tk::Reindex Tk::Text); -Construct Tk::Widget 'ReindexedText'; - -1; - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Scale.pm b/Master/tlpkg/tlperl.old/lib/Tk/Scale.pm deleted file mode 100644 index 57c7bb11aa1..00000000000 --- a/Master/tlpkg/tlperl.old/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 = '4.004'; # $Id: //depot/Tkutf8/Scale/Scale.pm#4 $ - -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/tlpkg/tlperl.old/lib/Tk/Scrollbar.pm b/Master/tlpkg/tlperl.old/lib/Tk/Scrollbar.pm deleted file mode 100644 index 6b416e04b30..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Scrollbar.pm +++ /dev/null @@ -1,429 +0,0 @@ -# Conversion from Tk4.0 scrollbar.tcl competed. -package Tk::Scrollbar; - -use vars qw($VERSION); -$VERSION = '4.010'; # $Id: //depot/Tkutf8/Scrollbar/Scrollbar.pm#10 $ - -use Tk qw($XS_VERSION Ev); -use AutoLoader; - -use base qw(Tk::Widget); - -#use strict; -#use vars qw($pressX $pressY @initValues $initPos $activeBg); - -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', Ev('x'), Ev('y')]); - $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', Ev('x'), Ev('y')]); - $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]); - - # X11 mousewheel - honour for horizontal too. - $mw->bind($class, '<4>', ['ScrlByUnits','hv',-5]); - $mw->bind($class, '<5>', ['ScrlByUnits','hv', 5]); - - $mw->bind($class, '<Home>', ['ScrlToPos', 0]); - $mw->bind($class, '<End>', ['ScrlToPos', 1]); - - $mw->bind($class, '<4>', ['ScrlByUnits','v',-3]); - $mw->bind($class, '<5>', ['ScrlByUnits','v', 3]); - - 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,$x,$y) = @_; - return unless (defined ($w->cget('-command'))); - $pressX = $x; - $pressY = $y; - @initValues = $w->get; - my $iv0 = $initValues[0]; - if (@initValues == 2) - { - $initPos = $iv0; - } - elsif ($iv0 == 0) - { - $initPos = 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,$x,$y) = @_; - return if !defined $initPos; - my $delta = $w->delta($x-$pressX, $y-$pressY); - if ($w->cget('-jump')) - { - if (@initValues == 2) - { - $w->set($initValues[0]+$delta, $initValues[1]+$delta); - } - else - { - $delta = sprintf "%d", $delta * $initValues[0]; # round() - $initValues[2] += $delta; - $initValues[3] += $delta; - $w->set(@initValues[2,3]); - } - } - 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,$x,$y) = @_; - return if (!defined $initPos); - if ($w->cget('-jump')) - { - my $delta = $w->delta($x-$pressX, $y-$pressY); - $w->ScrlToPos($initPos+$delta); - } - undef $initPos; -} - -# 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/tlpkg/tlperl.old/lib/Tk/Spinbox.pm b/Master/tlpkg/tlperl.old/lib/Tk/Spinbox.pm deleted file mode 100644 index 673a1e181ce..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Spinbox.pm +++ /dev/null @@ -1,115 +0,0 @@ -package Tk::Spinbox; -use strict; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d',q$Revision: #6 $ =~ /#(\d+)/; - -use base 'Tk::Entry'; - -sub Tk_cmd { \&Tk::spinbox } - -# Also inherits Entry's methods -Tk::Methods( "identify", "invoke", "set" ); -use Tk::Submethods ( 'selection' => ["element"] ); - -Construct Tk::Widget 'Spinbox'; - -sub ClassInit -{ - my ($class,$mw) = @_; - - $class->SUPER::ClassInit($mw); - - $mw->bind($class, '<Up>', [invoke => 'buttonup']); - $mw->bind($class, '<4>', [invoke => 'buttonup']); - $mw->bind($class, '<Down>',[invoke => 'buttondown']); - $mw->bind($class, '<5>', [invoke => 'buttondown']); - - return $class; -} - -sub Invoke -{ - my ($w,$elem) = @_; - unless ($w->{_outside}) - { - $w->invoke($elem); - $w->{_repeated}++; - } - my $delay = $w->cget('-repeatinterval'); - if ($delay > 0) - { - $w->RepeatId($w->after($delay,[Invoke => $w,$elem])); - } -} - -sub Button1 -{ - my ($w,$x,$y) = @_; - my $elem = $w->identify($x,$y); - $w->{_element} = $elem || 'entry'; - if ($w->{_element} eq 'entry') - { - $w->SUPER::Button1($x,$y); - } - elsif ($w->cget('-state') ne 'disabled') - { - $w->selectionElement($elem); - $w->{_repeated} = 0; - $w->{_outside} = 0; - $w->{_relief} = $w->cget("-${elem}relief"); - $w->CancelRepeat; - my $delay = $w->cget('-repeatdelay'); - $w->RepeatId($w->after($delay,[Invoke => $w,$elem])) if $delay > 0; - } -} - -sub Motion -{ - my ($w,$x,$y) = @_; - my $elem = $w->identify($x,$y); - $w->{_element} = $elem || 'entry' unless $w->{_element}; - if ($w->{_element} eq 'entry') - { - $w->SUPER::Motion($x,$y); - } - else - { - if (!defined($elem) || $elem ne $w->{_element}) - { - # Moved outside the button - unless ($w->{_outside}) - { - $w->{_outside} = 1; - $w->selectionElement('none'); - } - } - elsif ($w->{_outside}) - { - # Moved back over the button - $w->selectionElement($elem); - $w->{_outside} = 0; - } - } -} - -sub Button1Release -{ - my ($w,$x,$y) = @_; - $w->SUPER::Button1Release($x,$y); - my $elem = $w->{_element}; - if (defined($elem) && $elem ne 'entry') - { - my $repeated = $w->{_repeated}; - if (defined($repeated) && !$repeated) - { - $w->invoke($elem); - } - my $relief = delete $w->{_relief}; - $w->configure("-${elem}relief",$relief) if $relief - } - $w->selectionElement('none'); -} - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Stats.pm b/Master/tlpkg/tlperl.old/lib/Tk/Stats.pm deleted file mode 100644 index 39bedfb1a47..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Stats.pm +++ /dev/null @@ -1,26 +0,0 @@ -package Tk::Stats; - -($lu,$ls) = times; - - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Stats.pm#4 $ - -sub stats - { - my ($u,$s) = times; - my $du = $u-$lu; - my $ds = $s-$ls; - $ls = $s; - $lu = $u; - print sprintf(' dt=%4.2f du=%4.2f ds=%4.2f',$du+$ds,$du,$ds); - print sprintf(' t=%4.2f u=%4.2f s=%4.2f',$u+$s,$u,$s); - print ' ',shift,"\n"; - } - -sub import -{ - stats($_[1]); -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Submethods.pm b/Master/tlpkg/tlperl.old/lib/Tk/Submethods.pm deleted file mode 100644 index a2b8e3bd186..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Submethods.pm +++ /dev/null @@ -1,46 +0,0 @@ -package Tk::Submethods; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Submethods.pm#4 $ - -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/tlpkg/tlperl.old/lib/Tk/TList.pm b/Master/tlpkg/tlperl.old/lib/Tk/TList.pm deleted file mode 100644 index 65ce18796bb..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/TList.pm +++ /dev/null @@ -1,416 +0,0 @@ -package Tk::TList; - -use vars qw($VERSION); -$VERSION = '4.006'; # $Id: //depot/Tkutf8/TList/TList.pm#6 $ - -use Tk qw(Ev $XS_VERSION); - -use base qw(Tk::Widget); - -use strict; - -Construct Tk::Widget 'TList'; - -bootstrap Tk::TList; - -sub Tk_cmd { \&Tk::tlist } - -Tk::Methods qw(insert index anchor delete dragsite dropsite entrycget - entryconfigure info nearest see selection xview yview); - -use Tk::Submethods ( 'delete' => [qw(all entry offsprings siblings)], - 'info' => [qw(anchor dragsite dropsite selection)], - 'selection' => [qw(clear get includes set)], - 'anchor' => [qw(clear set)], - 'dragsite' => [qw(clear set)], - 'dropsite' => [qw(clear set)], - ); - -sub ClassInit -{ - my ($class,$mw) = @_; - - $mw->bind($class,'<ButtonPress-1>',[ 'Button1' ] ); - $mw->bind($class,'<Shift-ButtonPress-1>',[ 'ShiftButton1' ] ); - $mw->bind($class,'<Control-ButtonRelease-1>','Control_ButtonRelease_1'); - $mw->bind($class,'<ButtonRelease-1>','ButtonRelease_1'); - $mw->bind($class,'<B1-Motion>',[ 'Button1Motion' ] ); - $mw->bind($class,'<B1-Leave>',[ 'AutoScan' ] ); - - $mw->bind($class,'<Double-ButtonPress-1>',['Double1']); - - $mw->bind($class,'<Control-B1-Motion>','Control_B1_Motion'); - $mw->bind($class,'<Control-ButtonPress-1>',['CtrlButton1']); - $mw->bind($class,'<Control-Double-ButtonPress-1>',['CtrlButton1']); - - $mw->bind($class,'<B1-Enter>','B1_Enter'); - - $mw->bind($class,'<Up>', ['DirKey', 'up']); - $mw->bind($class,'<Down>',['DirKey', 'down']); - - $mw->bind($class,'<Left>', ['DirKey', 'left']); - $mw->bind($class,'<Right>',['DirKey', 'right']); - - $mw->bind($class,'<Prior>','Prior'); - $mw->bind($class,'<Next>','Next'); - - $mw->bind($class,'<Return>', ['KeyboardActivate']); - $mw->bind($class,'<space>', ['KeyboardBrowse']); - - return $class; -} - -sub Control_ButtonRelease_1 -{ -} - - -sub ButtonRelease_1 -{ - my $w = shift; - my $Ev = $w->XEvent; - $w->CancelRepeat - if($w->cget('-selectmode') ne 'dragdrop'); - $w->ButtonRelease1($Ev); -} - - -sub Control_B1_Motion -{ -} - - -sub B1_Enter -{ - my $w = shift; - my $Ev = $w->XEvent; - $w->CancelRepeat - if($w->cget('-selectmode') ne 'dragdrop'); -} - - -sub Prior -{ -shift->yview('scroll', -1, 'pages') -} - - -sub Next -{ -shift->yview('scroll', 1, 'pages') -} - - -sub Button1 -{ - my $w = shift; - my $Ev = $w->XEvent; - - delete $w->{'shiftanchor'}; - - $w->focus() - if($w->cget('-takefocus')); - - my $mode = $w->cget('-selectmode'); - - if ($mode eq 'dragdrop') - { - # $w->Send_WaitDrag($Ev->y); - return; - } - - my $ent = $w->GetNearest($Ev->x, $Ev->y); - - return unless defined $ent; - - my $browse = 0; - - if($mode eq 'single') - { - $w->anchor('set', $ent); - } - elsif($mode eq 'browse') - { - $w->anchor('set', $ent); - $w->selection('clear' ); - $w->selection('set', $ent); - $browse = 1; - } - elsif($mode eq 'multiple') - { - $w->selection('clear'); - $w->anchor('set', $ent); - $w->selection('set', $ent); - $browse = 1; - } - elsif($mode eq 'extended') - { - $w->anchor('set', $ent); - $w->selection('clear'); - $w->selection('set', $ent); - $browse = 1; - } - - $w->Callback(-browsecmd => $ent) if ($browse); -} - -sub ShiftButton1 -{ - my $w = shift; - my $Ev = $w->XEvent; - - my $to = $w->GetNearest($Ev->x,$Ev->y); - - delete $w->{'shiftanchor'}; - - return unless defined $to; - - my $mode = $w->cget('-selectmode'); - - if ($mode eq 'extended') - { - my $from = $w->info('anchor'); - if (defined $from) - { - $w->selection('clear'); - $w->selection('set', $from, $to); - } - else - { - $w->anchor('set', $to); - $w->selection('clear'); - $w->selection('set', $to); - } - } -} - -sub GetNearest -{ - my ($w,$x,$y) = @_; - my $ent = $w->nearest($x,$y); - if (defined $ent) - { - my $state = $w->entrycget($ent, '-state'); - return $ent if (!defined($state) || $state ne 'disabled'); - } - return undef; -} - -sub ButtonRelease1 -{ - my ($w, $Ev) = @_; - - delete $w->{'shiftanchor'}; - - my $mode = $w->cget('-selectmode'); - - if($mode eq 'dragdrop') - { -# $w->Send_DoneDrag(); - return; - } - - my ($x, $y) = ($Ev->x, $Ev->y); - my $ent = $w->GetNearest($x,$y); - - return unless defined $ent; - - if($x < 0 || $y < 0 || $x > $w->width || $y > $w->height) - { - $w->selection('clear'); - - return if($mode eq 'single' || $mode eq 'browse') - - } - else - { - if($mode eq 'single' || $mode eq 'browse') - { - $w->anchor('set', $ent); - $w->selection('clear'); - $w->selection('set', $ent); - - } - elsif($mode eq 'multiple') - { - $w->selection('set', $ent); - } - elsif($mode eq 'extended') - { - $w->selection('set', $ent); - } - } - - $w->Callback(-browsecmd =>$ent); -} - -sub Button1Motion -{ - my $w = shift; - my $Ev = $w->XEvent; - - delete $w->{'shiftanchor'}; - - my $mode = $w->cget('-selectmode'); - - if ($mode eq 'dragdrop') - { -# $w->Send_StartDrag(); - return; - } - - my $ent = $w->GetNearest($Ev->x,$Ev->y); - - return unless defined $ent; - - if($mode eq 'single') - { - $w->anchor('set', $ent); - } - elsif($mode eq 'multiple' || $mode eq 'extended') - { - my $from = $w->info('anchor'); - if (defined $from) - { - $w->selection('clear'); - $w->selection('set', $from, $ent); - } - else - { - $w->anchor('set', $ent); - $w->selection('clear'); - $w->selection('set', $ent); - } - } - - if($mode ne 'single') - { - $w->Callback(-browsecmd =>$ent); - } -} - -sub Double1 -{ - my $w = shift; - my $Ev = $w->XEvent; - - delete $w->{'shiftanchor'}; - - my $ent = $w->GetNearest($Ev->x,$Ev->y); - - return unless defined $ent; - - $w->anchor('set', $ent) unless defined($w->info('anchor')); - - $w->selection('set', $ent); - $w->Callback(-command => $ent); -} - -sub CtrlButton1 -{ - my $w = shift; - my $Ev = $w->XEvent; - - delete $w->{'shiftanchor'}; - - my $ent = $w->GetNearest($Ev->x,$Ev->y); - - return unless defined $ent; - - my $mode = $w->cget('-selectmode'); - - if($mode eq 'extended') - { - $w->anchor('set', $ent) unless defined( $w->info('anchor') ); - - if($w->selection('includes', $ent)) - { - $w->selection('clear', $ent); - } - else - { - $w->selection('set', $ent); - } - $w->Callback(-browsecmd =>$ent); - } -} - -sub DirKey -{ - my ($w,$dir) = @_; - my $anchor = $w->info('anchor'); - - my $new = (defined $anchor) ? $w->info($dir,$anchor) : 0; - - $w->anchorSet($new); - $w->see($new); -} - -sub KeyboardActivate -{ - my $w = shift; - - my $anchor = $w->info('anchor'); - - return unless defined $anchor; - - if($w->cget('-selectmode')) - { - $w->selection('clear'); - $w->selection('set', $anchor); - } - $w->Callback(-command => $anchor); -} - -sub KeyboardBrowse -{ - my $w = shift; - - my $anchor = $w->info('anchor'); - - return unless defined $anchor; - - if($w->cget('-selectmode')) - { - $w->selection('clear'); - $w->selection('set', $anchor); - } - $w->Callback(-browsecmd =>$anchor); -} - -sub AutoScan -{ - my $w = shift; - - return if($w->cget('-selectmode') eq 'dragdrop'); - - my $Ev = $w->XEvent; - my $y = $Ev->y; - my $x = $Ev->x; - - 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->RepeatId($w->after(50,[AutoScan => $w])); - $w->Button1Motion; -} - -1; - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Table.pm b/Master/tlpkg/tlperl.old/lib/Tk/Table.pm deleted file mode 100644 index 8fa9e5af4a9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Table.pm +++ /dev/null @@ -1,598 +0,0 @@ -# Copyright (c) 1995-2003 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::Table; -use strict; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #12 $ =~ /\D(\d+)\s*$/; - -use Tk::Pretty; -use AutoLoader; -use base qw(Tk::Frame); - -Construct Tk::Widget 'Table'; - -# Constants for QueueLayout flags -sub _SlaveSize () { 1 } # Slave has asked for change of width or height -sub _SlaveChange () { 2 } # We lost or gained a slave -sub _ViewChange () { 4 } # xview or yview called -sub _ConfigEvent () { 8 } # Table has changed size -sub _ScrollBars () { 32 } # Scrollabrs came or went -sub _RowColCount () { 16 } # rows or columns configured - - -sub ClassInit -{ - my ($class,$mw) = @_; - $mw->bind($class,'<Configure>',['QueueLayout',_ConfigEvent]); - $mw->bind($class,'<FocusIn>', 'NoOp'); - $mw->XYscrollBind($class); - return $class; -} - -sub _view -{ - my ($t,$s,$page,$a,$op,$num,$type) = @_; - if ($op eq 'moveto') - { - $$s = int(@$a*$num); - } - else - { - $num *= ($page/2) if ($type eq 'pages'); - $$s += $num; - } - $$s = 0 if ($$s < 0); - $t->QueueLayout(_ViewChange); -} - -sub xview -{ - my $t = shift; - $t->_view(\$t->{Left},$t->cget('-columns'),$t->{Width},@_); -} - -sub yview -{ - my $t = shift; - $t->_view(\$t->{Top},$t->cget('-rows'),$t->{Height},@_); -} - -sub FocusChildren -{ - my $t = shift; - return () if ($t->cget('-takefocus')); - return $t->SUPER::FocusChildren; -} - -sub Populate -{ - my ($t,$args) = @_; - $t->SUPER::Populate($args); - $t->ConfigSpecs('-scrollbars' => [METHOD => 'scrollbars','Scrollbars','nw'], - '-takefocus' => [SELF => 'takeFocus','TakeFocus',1], - '-rows' => [METHOD => 'rows','Rows',10], - '-fixedrows' => [METHOD => 'fixedRows','FixedRows',0], - '-columns' => [METHOD => 'columns','Columns',10], - '-fixedcolumns' => [METHOD => 'fixedColumn','FixedColumns',0], - '-highlightthickness' => [SELF => 'highlightThickness','HighlightThickness',2] - ); - $t->_init; -} - -sub sizeN -{ - my ($n,$a) = @_; - my $max = 0; - my $i = 0; - my $sum = 0; - while ($i < @$a && $i < $n) - { - my $n = $a->[$i++]; - $a->[$i-1] = $n = 0 unless (defined $n); - $sum += $n; - } - $max = $sum if ($sum > $max); - while ($i < @$a) - { - $sum = $sum-$a->[$i-$n]+$a->[$i]; - $max = $sum if ($sum > $max); - $i++; - } - return $max; -} - -sub total -{ - my ($a) = @_; - my $total = 0; - my $x; - foreach $x (@{$a}) - { - $total += $x; - } - return $total; -} - -sub constrain -{ - my ($sb,$a,$pixels,$fixed) = @_; - my $n = $$sb+$fixed; - my $total = 0; - my $i; - $n = @$a if ($n > @$a); - $n = $fixed if ($n < $fixed); - for ($i= 0; $i < $fixed; $i++) - { - (defined($a->[$i])) && ($total += $a->[$i]); - } - for ($i=$n; $total < $pixels && $i < @$a; $i++) - { - $a->[$i] ||= 0; - $total += $a->[$i]; - } - while ($n > $fixed) - { - if (($total += $a->[--$n]) > $pixels) - { - $n++; - last; - } - } - $$sb = $n-$fixed; -} - -sub Layout -{ - my ($t) = @_; - return unless Tk::Exists($t); - my $rows = @{$t->{Row}}; - my $bw = $t->cget(-highlightthickness); - my $frows = $t->cget(-fixedrows); - my $fcols = $t->cget(-fixedcolumns); - my $sb = $t->cget(-scrollbars); - my $H = $t->Height; - my $W = $t->Width; - my $tadj = $bw; - my $badj = $bw; - my $ladj = $bw; - my $radj = $bw; - my @xs = ($W,0,0,0); - my @ys = (0,$H,0,0); - my $xsb; - my $ysb; - - my $why = $t->{LayoutPending}; - $t->{LayoutPending} = 0; - - if ($sb =~ /[ns]/) - { - $t->{xsb} = $t->Scrollbar(-orient => 'horizontal', -command => ['xview' => $t]) unless (defined $t->{xsb}); - $xsb = $t->{xsb}; - $xs[3] = $xsb->ReqHeight; - if ($sb =~ /n/) - { - $xs[1] = $tadj; - $tadj += $xs[3]; - } - else - { - $badj += $xs[3]; - $xs[1] = $H-$badj; - } - } - else - { - $t->{xsb}->UnmapWindow if (defined $t->{xsb}); - } - - if ($sb =~ /[ew]/) - { - $t->{ysb} = $t->Scrollbar(-orient => 'vertical', -command => ['yview' => $t]) unless (defined $t->{ysb}); - $ysb = $t->{ysb}; - $ys[2] = $ysb->ReqWidth; - if ($sb =~ /w/) - { - $ys[0] = $ladj; - $ladj += $ys[2]; - } - else - { - $radj += $ys[2]; - $ys[0] = $W-$radj; - } - } - else - { - $t->{ysb}->UnmapWindow if (defined $t->{ysb}); - } - - constrain(\$t->{Top}, $t->{Height},$H-($tadj+$badj),$frows); - constrain(\$t->{Left},$t->{Width}, $W-($ladj+$radj),$fcols); - - my $top = $t->{Top}+$frows; - my $left = $t->{Left}+$fcols; - - if ($why & (_ScrollBars|_RowColCount|_SlaveSize)) - { - # Width and/or Height of element or - # number of rows and/or columns or - # scrollbar presence has changed - my $w = sizeN($t->cget('-columns'),$t->{Width})+$radj+$ladj; - my $h = sizeN($t->cget('-rows'),$t->{Height})+$tadj+$badj; - $t->GeometryRequest($w,$h); - } - - if ($rows) - { - my $cols = @{$t->{Width}}; - my $yhwm = $top-$frows; - my $xhwm = $left-$fcols; - my $y = $tadj; - my $r; - for ($r = 0; $r < $rows; $r++) - { - my $h = $t->{Height}[$r]; - next unless defined $h; - if (($r < $top && $r >= $frows) || ($y+$h > $H-$badj)) - { - if (defined $t->{Row}[$r]) - { - my $c; - for ($c = 0; $c < @{$t->{Row}[$r]}; $c++) - { - my $s = $t->{Row}[$r][$c]; - if (defined $s) - { - $s->UnmapWindow; - if ($why & 1) - { - my $w = $t->{Width}[$c]; - $s->ResizeWindow($w,$h); - } - } - } - } - } - else - { - my $hwm = $left-$fcols; - my $sh = 0; - my $x = $ladj; - my $c; - $ys[1] = $y if ($y < $ys[1] && $r >= $frows); - for ($c = 0; $c <$cols; $c++) - { - my $s = $t->{Row}[$r][$c]; - my $w = $t->{Width}[$c]; - if (($c < $left && $c >= $fcols) || ($x+$w > $W-$radj) ) - { - if (defined $s) - { - $s->UnmapWindow; - $s->ResizeWindow($w,$h) if ($why & 1); - } - } - else - { - $xs[0] = $x if ($x < $xs[0] && $c >= $fcols); - if (defined $s) - { - if ($why & 1) - { - $s->MoveResizeWindow($x,$y,$w,$h); - } - else - { - $s->MoveWindow($x,$y); - } - $s->MapWindow; - } - $x += $w; - if ($c >= $fcols) - { - $hwm++; - $sh += $w - } - } - } - $xhwm = $hwm if ($hwm > $xhwm); - $xs[2] = $sh if ($sh > $xs[2]); - $y += $h; - if ($r >= $frows) - { - $ys[3] += $h; - $yhwm++; - } - } - } - $t->{Bottom} = $yhwm; - $t->{Right} = $xhwm; - if (defined $xsb && $xs[2] > 0) - { - $xsb->MoveResizeWindow(@xs); - $cols -= $fcols; - if ($cols > 0) - { - $xsb->set($t->{Left}/$cols,$t->{Right}/$cols); - $xsb->MapWindow; - } - } - if (defined $ysb && $ys[3] > 0) - { - $ysb->MoveResizeWindow(@ys); - $rows -= $frows; - if ($rows > 0) - { - $ysb->set($t->{Top}/$rows,$t->{Bottom}/$rows); - $ysb->MapWindow; - } - } - } -} - -sub QueueLayout -{ - my ($m,$why) = @_; - $m->afterIdle(['Layout',$m]) unless ($m->{LayoutPending}); - $m->{LayoutPending} |= $why; -} - -sub SlaveGeometryRequest -{ - my ($m,$s) = @_; - my ($row,$col) = @{$m->{Slave}{$s->PathName}}; - my $sw = $s->ReqWidth; - my $sh = $s->ReqHeight; - my $sz = 0; - if ($sw > $m->{Width}[$col]) - { - $m->{Width}[$col] = $sw; - $m->QueueLayout(_SlaveSize); - $sz++; - } - if ( (not defined ($m->{Height}[$row])) or $sh > $m->{Height}[$row]) - { - $m->{Height}[$row] = $sh; - $m->QueueLayout(_SlaveSize); - $sz++; - } - if (!$sz) - { - $s->ResizeWindow($m->{Width}[$col],$m->{Height}[$row]); - } -} - -sub get -{ - my ($t,$row,$col) = @_; - return $t->{Row}[$row][$col]; -} - -sub LostSlave -{ - my ($t,$s) = @_; - my $info = delete $t->{Slave}{$s->PathName}; - if (defined $info) - { - my ($row,$col) = @$info; - $t->{Row}[$row][$col] = undef; - $s->UnmapWindow; - } - else - { - $t->BackTrace('Cannot find' . $s->PathName); - } - $t->QueueLayout(_SlaveChange); -} - -sub clear { - my $self = shift; - my $rows = $self->cget(-rows); - my $cols = $self->cget(-columns); - foreach my $r (1 .. $rows) { - foreach my $c (1 .. $cols) { - my $old = $self->get( $r, $c ); - next unless $old; - $self->LostSlave($old); - $old->destroy; - } - } - $self->_init; - $self->QueueLayout(_SlaveSize); -} - -sub _init { - my $self = shift; - $self->{'Width'} = []; - $self->{'Height'} = []; - $self->{'Row'} = []; - $self->{'Slave'} = {}; - $self->{'Top'} = 0; - $self->{'Left'} = 0; - $self->{'Bottom'} = 0; - $self->{'Right'} = 0; - $self->{LayoutPending} = 0; -} - -sub put -{ - my ($t,$row,$col,$w) = @_; - $w = $t->Label(-text => $w) unless (ref $w); - $t->ManageGeometry($w); - unless (defined $t->{Row}[$row]) - { - $t->{Row}[$row] = []; - $t->{Height}[$row] = 0; - } - unless (defined $t->{Width}[$col]) - { - $t->{Width}[$col] = 0; - } - my $old = $t->{Row}[$row][$col]; - if (defined $old) - { - $old->UnmanageGeometry; - $t->LostSlave($old); - } - $t->{Row}[$row][$col] = $w; - $t->{Slave}{$w->PathName} = [$row,$col]; - $t->SlaveGeometryRequest($w); - $t->QueueLayout(_SlaveChange); - return $old; -} - -# -# configure methods -# - -sub scrollbars -{ - my ($t,$v) = @_; - if (@_ > 1) - { - $t->_configure(-scrollbars => $v); - $t->QueueLayout(_ScrollBars); - } - return $t->_cget('-scrollbars'); -} - -sub rows -{ - my ($t,$r) = @_; - if (@_ > 1) - { - $t->_configure(-rows => $r); - if ($t->{Row} && @{$t->{Row}} > $r) - { - for my $y ($r .. $#{$t->{Row}}) - { - for my $s (@{$t->{Row}[$y]}) - { - $s->destroy if $s; - } - } - splice @{ $t->{Row} }, $r; - } - $t->QueueLayout(_RowColCount); - } - return $t->_cget('-rows'); -} - -sub fixedrows -{ - my ($t,$r) = @_; - if (@_ > 1) - { - $t->_configure(-fixedrows => $r); - $t->QueueLayout(_RowColCount); - } - return $t->_cget('-fixedrows'); -} - -sub columns -{ - my ($t,$r) = @_; - if (@_ > 1) - { - $t->_configure(-columns => $r); - if ($t->{Row}) - { - for my $row (@{$t->{Row}}) - { - for my $s (@$row[$r .. $#$row]) - { - $s->destroy if $s; - } - { # FIXME? - Steve was getting warnings : - # splice() offset past end of array - local $^W = 0; - splice @$row, $r; - } - } - } - $t->QueueLayout(_RowColCount); - } - return $t->_cget('-columns'); -} - -sub fixedcolumns -{ - my ($t,$r) = @_; - if (@_ > 1) - { - $t->_configure(-fixedcolumns => $r); - $t->QueueLayout(_RowColCount); - } - return $t->_cget('-fixedcolumns'); -} - -1; -__END__ -sub Create -{ - my $t = shift; - my $r = shift; - my $c = shift; - my $kind = shift; - $t->put($r,$c,$t->$kind(@_)); -} - -sub totalColumns -{ - scalar @{shift->{'Width'}}; -} - -sub totalRows -{ - scalar @{shift->{'Height'}}; -} - -sub Posn -{ - my ($t,$s) = @_; - my $info = $t->{Slave}{$s->PathName}; - return (wantarray) ? @$info : $info; -} - -sub see -{ - my $t = shift; - my ($row,$col) = (@_ == 2) ? @_ : @{$t->{Slave}{$_[0]->PathName}}; - my $see = 1; - if (($row -= $t->cget('-fixedrows')) >= 0) - { - if ($row < $t->{Top}) - { - $t->{Top} = $row; - $t->QueueLayout(_ViewChange); - $see = 0; - } - elsif ($row >= $t->{Bottom}) - { - $t->{Top} += ($row - $t->{Bottom}+1); - $t->QueueLayout(_ViewChange); - $see = 0; - } - } - if (($col -= $t->cget('-fixedcolumns')) >= 0) - { - if ($col < $t->{Left}) - { - $t->{Left} = $col; - $t->QueueLayout(_ViewChange); - $see = 0; - } - elsif ($col >= $t->{Right}) - { - $t->{Left} += ($col - $t->{Right}+1); - $t->QueueLayout(_ViewChange); - $see = 0; - } - } - return $see; -} - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Text.pm b/Master/tlpkg/tlperl.old/lib/Tk/Text.pm deleted file mode 100644 index fe0aa0bf4c1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Text.pm +++ /dev/null @@ -1,1653 +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-2004 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 = sprintf '4.%03d', q$Revision: #24 $ =~ /\D(\d+)\s*$/; - -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','edit', - '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)], - 'edit' => [qw(modified redo reset separator undo)], - ); - -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')] ); - $mw->YMouseWheelBind($class); - $mw->XMouseWheelBind($class); - - $mw->MouseWheelBind($class); - - 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'); - } -#JD# $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)=@_; - return unless length($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; - $pop->transient($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); - $find_entry->focus; - - my $donext = sub {$w->FindNext ($direction,$mode,$case,$find_entry->get())}; - - $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);} - } - - $find_entry->icursor(0); - - my ($replace_entry,$button_replace,$button_replace_all); - unless ($find_only) - { - $replace_entry = $pop->Entry(-width=>25); - - $replace_entry -> pack(-anchor=>'nw', '-expand' => 'yes' , -fill => 'x'); - } - - - my $button_find = $pop->Button(-text=>'Find', -command => $donext, -default => 'active') - -> pack(-side => 'left'); - - my $button_find_all = $pop->Button(-text=>'Find All', - -command => sub {$w->FindAll($mode,$case,$find_entry->get());} ) - ->pack(-side => 'left'); - - unless ($find_only) - { - $button_replace = $pop->Button(-text=>'Replace', -default => 'normal', - -command => sub {$w->ReplaceSelectionsWith($replace_entry->get());} ) - -> pack(-side =>'left'); - $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_cancel = $pop->Button(-text=>'Cancel', - -command => sub {$pop->destroy()} ) - ->pack(-side => 'left'); - - $find_entry->bind("<Return>" => [$button_find, 'invoke']); - $find_entry->bind("<Escape>" => [$button_cancel, 'invoke']); - - $find_entry->bind("<Return>" => [$button_find, 'invoke']); - $find_entry->bind("<Escape>" => [$button_cancel, 'invoke']); - - $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 *display* 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. -# -# This may have some weirdness associated with a proportional font. Ie. -# the insertion cursor will zigzag up or down according to the width of -# the character at destination. -# -# 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 -{ -my ($w,$n) = @_; -$w->see('insert'); -my $i = $w->index('insert'); - -my ($line,$char) = split(/\./,$i); - -my $testX; #used to check the "new" position -my $testY; #used to check the "new" position - -(my $bx, my $by, my $bw, my $bh) = $w->bbox($i); -(my $lx, my $ly, my $lw, my $lh) = $w->dlineinfo($i); - -if ( ($n == -1) and ($by <= $bh) ) - { - #On first display line.. so scroll up and recalculate.. - $w->yview('scroll', -1, 'units'); - unless (($w->yview)[0]) { - #first line of entire text - keep same position. - return $i; - } - ($bx, $by, $bw, $bh) = $w->bbox($i); - ($lx, $ly, $lw, $lh) = $w->dlineinfo($i); - } -elsif ( ($n == 1) and - ($ly + $lh) > ( $w->height - 2*$w->cget(-bd) - 2*$w->cget(-highlightthickness) ) ) - { - #On last display line.. so scroll down and recalculate.. - $w->yview('scroll', 1, 'units'); - ($bx, $by, $bw, $bh) = $w->bbox($i); - ($lx, $ly, $lw, $lh) = $w->dlineinfo($i); - } - -# Calculate the vertical position of the next display line -my $Yoffset = 0; -$Yoffset = $by - $ly + 1 if ($n== -1); -$Yoffset = $ly + $lh + 1 - $by if ($n == 1); -$Yoffset*=$n; -$testY = $by + $Yoffset; - -# Save the original 'x' position of the insert cursor if: -# 1. This is the first time through -- or -- -# 2. The insert cursor position has changed from the previous -# time the up or down key was pressed -- or -- -# 3. The cursor has reached the beginning or end of the widget. - -if (not defined $w->{'origx'} or ($w->{'lastindex'} != $i) ) - { - $w->{'origx'} = $bx; - } - -# Try to keep the same column if possible -$testX = $w->{'origx'}; - -# Get the coordinates of the possible new position -my $testindex = $w->index('@'.$testX.','.$testY ); -$w->see($testindex); -my ($nx,$ny,$nw,$nh) = $w->bbox($testindex); - -# Which side of the character should we position the cursor - -# mainly for a proportional font -if ($testX > $nx+$nw/2) - { - $testX = $nx+$nw+1; - } - -my $newindex = $w->index('@'.$testX.','.$testY ); - -if ( $w->compare($newindex,'==','end - 1 char') and ($ny == $ly ) ) - { - # Then we are trying to the 'end' of the text from - # the same display line - don't do that - return $i; - } - -$w->{'lastindex'} = $newindex; -$w->see($newindex); -return $newindex; -} - -# 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/tlpkg/tlperl.old/lib/Tk/Text/Tag.pm b/Master/tlpkg/tlperl.old/lib/Tk/Text/Tag.pm deleted file mode 100644 index 827278eb88c..00000000000 --- a/Master/tlpkg/tlperl.old/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 = '4.004'; # $Id: //depot/Tkutf8/Text/Text/Tag.pm#4 $ - -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/tlpkg/tlperl.old/lib/Tk/TextEdit.pm b/Master/tlpkg/tlperl.old/lib/Tk/TextEdit.pm deleted file mode 100644 index e1ff20b6149..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/TextEdit.pm +++ /dev/null @@ -1,509 +0,0 @@ -# Copyright (c) 1999 Greg Bartels. All rights reserved. -# This program is free software; you can redistribute it and/or -# modify it under the same terms as Perl itself. - -# Special thanks to Nick Ing-Simmons for pushing a lot of -# my text edit functionality into Text.pm and TextUndo.pm -# otherwise, this module would have been monstrous. - -# Andy Worhal had it wrong, its "fifteen megabytes of fame" -# -Greg Bartels - -package Tk::TextEdit; - - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/TextEdit.pm#4 $ - -use Tk qw (Ev); -use AutoLoader; - -use Text::Tabs; - -use base qw(Tk::TextUndo); - -Construct Tk::Widget 'TextEdit'; - -####################################################################### -####################################################################### -sub ClassInit -{ - my ($class,$mw) = @_; - $class->SUPER::ClassInit($mw); - - $mw->bind($class,'<F5>', 'IndentSelectedLines'); - $mw->bind($class,'<F6>', 'UnindentSelectedLines'); - - $mw->bind($class,'<F7>', 'CommentSelectedLines'); - $mw->bind($class,'<F8>', 'UncommentSelectedLines'); - - return $class; -} - -# 8 horizontal pixels in the "space" character in default font. -my $tab_multiplier = 8; - -sub debug_code_f1 -{ - my $w=shift; -} - -sub debug_code_f2 -{ - my $w=shift; -} - -####################################################################### -####################################################################### -sub InitObject -{ - my ($w) = @_; - $w->SUPER::InitObject; - - $w->{'INDENT_STRING'} = "\t"; # Greg mode=>"\t", Nick mode=>" " - $w->{'LINE_COMMENT_STRING'} = "#"; # assuming perl comments - - my %pair_descriptor_hash = - ( - 'PARENS' => [ 'multiline', '(', ')', "[()]" ], - 'CURLIES' => [ 'multiline', '{', '}', "[{}]" ], - 'BRACES' => [ 'multiline', '[', ']', "[][]" ], - 'DOUBLEQUOTE' => [ 'singleline', "\"","\"" ], - 'SINGLEQUOTE' => [ 'singleline', "'","'" ], - ); - - $w->{'HIGHLIGHT_PAIR_DESCRIPTOR_HASH_REF'}=\%pair_descriptor_hash; - - $w->tagConfigure - ('CURSOR_HIGHLIGHT_PARENS', -foreground=>'white', -background=>'violet'); - $w->tagConfigure - ('CURSOR_HIGHLIGHT_CURLIES', -foreground=>'white', -background=>'blue'); - $w->tagConfigure - ('CURSOR_HIGHLIGHT_BRACES', -foreground=>'white', -background=>'purple'); - $w->tagConfigure - ('CURSOR_HIGHLIGHT_DOUBLEQUOTE', -foreground=>'black', -background=>'green'); - $w->tagConfigure - ('CURSOR_HIGHLIGHT_SINGLEQUOTE', -foreground=>'black', -background=>'grey'); - - $w->tagConfigure('BLOCK_HIGHLIGHT_PARENS', -background=>'red'); - $w->tagConfigure('BLOCK_HIGHLIGHT_CURLIES', -background=>'orange'); - $w->tagConfigure('BLOCK_HIGHLIGHT_BRACES', -background=>'red'); - $w->tagConfigure('BLOCK_HIGHLIGHT_DOUBLEQUOTE', -background=>'red'); - $w->tagConfigure('BLOCK_HIGHLIGHT_SINGLEQUOTE', -background=>'red'); - - $w->tagRaise('BLOCK_HIGHLIGHT_PARENS','CURSOR_HIGHLIGHT_PARENS'); - $w->tagRaise('BLOCK_HIGHLIGHT_CURLIES','CURSOR_HIGHLIGHT_CURLIES'); - $w->tagRaise('BLOCK_HIGHLIGHT_BRACES','CURSOR_HIGHLIGHT_BRACES'); - $w->tagRaise('BLOCK_HIGHLIGHT_DOUBLEQUOTE','CURSOR_HIGHLIGHT_DOUBLEQUOTE'); - $w->tagRaise('BLOCK_HIGHLIGHT_SINGLEQUOTE','CURSOR_HIGHLIGHT_SINGLEQUOTE'); - - $w->{'UPDATE_WIDGET_PERIOD'}=300; # how much time between each call. - $w->{'WINDOW_PLUS_AND_MINUS_VALUE'}=80; - $w->SetGUICallbackIndex(0); - $w->schedule_next_callback; - -} - -####################################################################### - -sub cancel_current_gui_callback_and_restart_from_beginning -{ - my ($w)=@_; - if(defined($w->{'UPDATE_WIDGET_AFTER_REFERENCE'})) - {$w->{'UPDATE_WIDGET_AFTER_REFERENCE'}->cancel();} - $w->SetGUICallbackIndex(0); - - $w->schedule_next_callback; -} - -sub schedule_next_callback -{ - my ($w)=@_; - return if $w->NoMoreGUICallbacksToCall; #stops infinite recursive call. - $w->{'UPDATE_WIDGET_AFTER_REFERENCE'} = $w->after - ($w->{'UPDATE_WIDGET_PERIOD'}, - sub - { - $w->CallNextGUICallback; - $w->schedule_next_callback; - } - ); - -} - - -####################################################################### -# use these methods to pass the TextEdit widget an anonymous array -# of code references. -# any time the widget changes that requires the display to be updated, -# then these code references will be scheduled in sequence for calling. -# splitting them up allows them to be prioritized by order, -# and prevents the widget from "freezing" too long if they were -# one large callback. scheduling them apart allows the widget time -# to respond to user inputs. -####################################################################### -sub SetGUICallbacks -{ - my ($w,$callback_array_ref) = @_; - $w->{GUI_CALLBACK_ARRAY_REF}=$callback_array_ref; - $w->SetGUICallbackIndex(0); -} - -sub GetGUICallbacks -{ - return shift->{GUI_CALLBACK_ARRAY_REF}; -} - -sub SetGUICallbackIndex -{ - my ($w, $val)=@_; - $w->{GUI_CALLBACK_ARRAY_INDEX}=$val; -} - -sub GetGUICallbackIndex -{ - return shift->{GUI_CALLBACK_ARRAY_INDEX}; -} - -sub IncrementGUICallbackIndex -{ - shift->{GUI_CALLBACK_ARRAY_INDEX} += 1; -} - -sub NoMoreGUICallbacksToCall -{ - my ($w) = @_; - return 0 unless defined ($w->{GUI_CALLBACK_ARRAY_REF}); - return 0 unless defined ($w->{GUI_CALLBACK_ARRAY_INDEX}); - my $arr_ref = $w->{GUI_CALLBACK_ARRAY_REF}; - my $arr_ind = $w->{GUI_CALLBACK_ARRAY_INDEX}; - return $arr_ind >= @$arr_ref; -} - -sub CallNextGUICallback -{ - my ($w) = @_; - return if $w->NoMoreGUICallbacksToCall; - my $arr_ref = $w->{GUI_CALLBACK_ARRAY_REF}; - my $arr_ind = $w->{GUI_CALLBACK_ARRAY_INDEX}; - &{$arr_ref->[$arr_ind]}; - $w->IncrementGUICallbackIndex; -} - - -####################################################################### -####################################################################### - -sub insert -{ - my $w = shift; - $w->SUPER::insert(@_); - $w->cancel_current_gui_callback_and_restart_from_beginning; -} - -sub delete -{ - my $w = shift; - $w->SUPER::delete(@_); - $w->cancel_current_gui_callback_and_restart_from_beginning; -} - -sub SetCursor -{ - my $w = shift; - $w->SUPER::SetCursor(@_); - $w->cancel_current_gui_callback_and_restart_from_beginning; -} - -sub OverstrikeMode -{ - my ($w,$mode) = @_; - if (defined($mode)) - { - $w->SUPER::OverstrikeMode($mode); - $w->cancel_current_gui_callback_and_restart_from_beginning; - } - return $w->SUPER::OverstrikeMode; -} - - -####################################################################### -# use yview on scrollbar to get fractional coordinates. -# scale this by the total length of the text to find the -# approximate start line of widget and end line of widget. -####################################################################### -sub GetScreenWindowCoordinates -{ - my $w = shift; - my ($top_frac, $bot_frac) = $w->yview; - my $end_index = $w->index('end'); - my ($lines,$columns) = split (/\./,$end_index); - my $window = $w->{'WINDOW_PLUS_AND_MINUS_VALUE'}; - my $top_line = int(($top_frac * $lines) - $window); - $top_line = 0 if ($top_line < 0); - my $bot_line = int(($bot_frac * $lines) + $window); - $bot_line = $lines if ($bot_line > $lines); - my $top_index = $top_line . '.0'; - my $bot_index = $bot_line . '.0'; - - $_[0] = $top_index; - $_[1] = $bot_index; -} - -######################################################################## -# take two indices as inputs. -# if they are on the same line or same column (accounting for tabs) -# then return 1 -# else return 0 -# (assume indices passed in are in line.column format) -######################################################################## -sub IndicesLookGood -{ - my ($w, $start, $end, $singleline) = @_; - - return 0 unless ( (defined($start)) and (defined($end))); - - my ($start_line, $start_column) = split (/\./,$start); - my ($end_line, $end_column) = split (/\./,$end); - - ########################## - # good if on the same line - ########################## - return 1 if ($start_line == $end_line); - - ########################## - # if not on same line and its a singleline, its bad - ########################## - return 0 if $singleline; - - - # get both lines, convert the tabs to spaces, and get the new column. - # see if they line up or not. - my $string; - $string = $w->get($start_line.'.0', $start_line.'.0 lineend'); - $string = substr($string, 0, $start_column+1); - $string = expand($string); - $start_column = length($string); - - $string = $w->get($end_line.'.0', $end_line.'.0 lineend'); - $string = substr($string, 0, $end_column +1); - $string = expand($string); - $end_column = length($string); - - ########################## - # good if on the same column (adjusting for tabs) - ########################## - return 1 if ($start_column == $end_column); - - # otherwise its bad - return 0; -} - -######################################################################## -# if searching backward, count paranthesis until find a start parenthesis -# which does not have a forward match. -# -# (<= search backward will return this index -# () -# START X HERE -# ( ( ) () ) -# )<== search forward will return this index -# -# if searching forward, count paranthesis until find a end parenthesis -# which does not have a rearward match. -######################################################################## -sub searchForBaseCharacterInPair -{ - my - ( - $w, $top_index, $searchfromindex, $bot_index, - $direction, $startchar, $endchar, $charpair - )=@_; - my ($plus_one_char, $search_end_index, $index_offset, $done_index); - if ($direction eq '-forward') - { - $plus_one_char = $endchar; - $search_end_index = $bot_index; - $index_offset = ' +1c'; - $done_index = $w->index('end'); - } - else - { - $plus_one_char = $startchar; - $search_end_index = $top_index; - $index_offset = ''; - $done_index = '1.0'; - } - - my $at_done_index = 0; - my $count = 0; - my $char; - while(1) - { - $searchfromindex = $w->search - ($direction, '-regexp', $charpair, $searchfromindex, $search_end_index ); - - last unless(defined($searchfromindex)); - $char = $w->get($searchfromindex, $w->index($searchfromindex.' +1c')); - if ($char eq $plus_one_char) - {$count += 1;} - else - {$count -= 1;} - last if ($count==1); - # boundary condition exists when first char in widget is the match char - # need to be able to determine if search tried to go past index '1.0' - # if so, set index to undef and return. - if ( $at_done_index ) - { - $searchfromindex = undef; - last; - } - $at_done_index = 1 if ($searchfromindex eq $done_index); - $searchfromindex=$w->index($searchfromindex . $index_offset); - } - return $searchfromindex; -} - -######################################################################## -# highlight a character pair that most closely brackets the cursor. -# allows you to pick and choose which ones you want to do. -######################################################################## - -sub HighlightParenthesisAroundCursor -{ - my ($w)=@_; - $w->HighlightSinglePairBracketingCursor - ( '(', ')', '[()]', 'CURSOR_HIGHLIGHT_PARENS','BLOCK_HIGHLIGHT_PARENS',0); -} - -sub HighlightCurlyBracesAroundCursor -{ - my ($w)=@_; - $w->HighlightSinglePairBracketingCursor - ( '{', '}', '[{}]', 'CURSOR_HIGHLIGHT_CURLIES','BLOCK_HIGHLIGHT_CURLIES',0); -} - -sub HighlightBracesAroundCursor -{ - my ($w)=@_; - $w->HighlightSinglePairBracketingCursor - ( '[', ']','[][]', 'CURSOR_HIGHLIGHT_BRACES','BLOCK_HIGHLIGHT_BRACES',0); -} - -sub HighlightDoubleQuotesAroundCursor -{ - my ($w)=@_; - $w->HighlightSinglePairBracketingCursor - ( "\"", "\"", "\"", 'CURSOR_HIGHLIGHT_DOUBLEQUOTE','BLOCK_HIGHLIGHT_DOUBLEQUOTE',1); -} - -sub HighlightSingleQuotesAroundCursor -{ - my ($w)=@_; - $w->HighlightSinglePairBracketingCursor - ( "'", "'", "'", 'CURSOR_HIGHLIGHT_SINGLEQUOTE','BLOCK_HIGHLIGHT_SINGLEQUOTE',1); -} - -######################################################################## -# highlight all the character pairs that most closely bracket the cursor. -######################################################################## -sub HighlightAllPairsBracketingCursor -{ - my ($w)=@_; - $w->HighlightParenthesisAroundCursor; - $w->HighlightCurlyBracesAroundCursor; - $w->HighlightBracesAroundCursor; - $w->HighlightDoubleQuotesAroundCursor; - $w->HighlightSingleQuotesAroundCursor; -} - -######################################################################## -# search for a pair of matching characters that bracket the -# cursor and tag them with the given tagname. -# startchar might be '[' -# endchar would then be ']' -# tagname is a name of a tag, which has already been -# configured to highlight however the user wants them to behave. -# error tagname is the tag to highlight the chars with if there -# is a problem of some kind. -# singleline indicates whether the character pairs must occur -# on a single line. quotation marks are single line characters usually. -######################################################################## -sub HighlightSinglePairBracketingCursor -{ - my - ( - $w, $startchar, $endchar, $charpair, - $good_tagname, $bad_tagname, $single_line - ) = @_; - $single_line=0 unless defined($single_line); - $w->tagRemove($good_tagname, '1.0','end'); - $w->tagRemove($bad_tagname, '1.0','end'); - my $top_index; my $bot_index; - my $cursor = $w->index('insert'); - if ($single_line) - { - $top_index = $w->index($cursor.' linestart'); - $bot_index = $w->index($cursor.' lineend'); - } - else - { - $w->GetScreenWindowCoordinates($top_index, $bot_index); - } - - # search backward for the startchar - # $top_index, $searchfromindex, $bot_index, - # $direction, $startchar, $endchar, $charpair - - my $startindex = $w->searchForBaseCharacterInPair - ( - $top_index, $cursor, $bot_index, - '-backward', $startchar, $endchar, $charpair - ); - - # search forward for the endchar - my $endindex = $w->searchForBaseCharacterInPair - ( - $top_index, $cursor, $bot_index, - '-forward', $startchar, $endchar, $charpair - ); - return unless ((defined $startindex) and (defined $endindex)); - - my $final_tag = $bad_tagname; - if ($w->IndicesLookGood( $startindex, $endindex, $single_line)) - { - $final_tag = $good_tagname; - } - - $w->tagAdd($final_tag, $startindex, $w->index($startindex.'+1c') ); - $w->tagAdd($final_tag, $endindex, $w->index( $endindex.'+1c') ); -} - -#################################################################### -sub IndentSelectedLines -{ - my($w)=@_; - $w->insertStringAtStartOfSelectedLines($w->{'INDENT_STRING'}); -} - -sub UnindentSelectedLines -{ - my($w)=@_; - $w->deleteStringAtStartOfSelectedLines($w->{'INDENT_STRING'}); -} - -sub CommentSelectedLines -{ - my($w)=@_; - $w->insertStringAtStartOfSelectedLines($w->{'LINE_COMMENT_STRING'}); -} - -sub UncommentSelectedLines -{ - my($w)=@_; - $w->deleteStringAtStartOfSelectedLines($w->{'LINE_COMMENT_STRING'}); -} - - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/TextList.pm b/Master/tlpkg/tlperl.old/lib/Tk/TextList.pm deleted file mode 100644 index 77a48fdf8ce..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/TextList.pm +++ /dev/null @@ -1,985 +0,0 @@ -# Copyright (c) 1999 Greg London. All rights reserved. -# This program is free software; you can redistribute it and/or -# modify it under the same terms as Perl itself. - -# code for bindings taken from Listbox.pm - -# comments specifying method functionality taken from -# "Perl/Tk Pocket Reference" by Stephen Lidie. - -####################################################################### -# this module uses a text module as its base class to create a list box. -# this will allow list box functionality to also have all the functionality -# of the Text widget. -# -# note that most methods use an element number to indicate which -# element in the list to work on. -# the exception to this is the tag and mark methods which -# are dual natured. These methods may accept either the -# normal element number, or they will also take a element.char index, -# which would be useful for applying tags to part of a line in the list. -# -####################################################################### - -package Tk::TextList; - -use strict; -use vars qw($VERSION); -$VERSION = '4.005'; # $Id: //depot/Tkutf8/TextList/TextList.pm#5 $ - -#XXXdel: use Tk::Reindex qw(Tk::ROText); #XXXdel: ReindexedROText); - -use base qw(Tk::Derived Tk::ReindexedROText ); - -use Tk qw (Ev); - -#XXX del: use base qw(Tk::ReindexedROText); - -Construct Tk::Widget 'TextList'; - -####################################################################### -# the following line causes Populate to get called -# @ISA = qw(Tk::Derived ... ); -####################################################################### -sub Populate -{ - my ($w,$args)=@_; - my $option=delete $args->{'-selectmode'}; - $w->SUPER::Populate($args); - $w->ConfigSpecs( -selectmode => ['PASSIVE','selectMode','SelectMode','browse'], - -takefocus => ['PASSIVE','takeFocus','TakeFocus',1], - -spacing3 => ['SELF', undef, undef, 3], - -insertwidth => ['SELF', undef, undef, 0], - ); - -} - -####################################################################### -####################################################################### -sub ClassInit -{ - my ($class,$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')]); - - $mw->bind($class,'<FocusIn>' , ['tagConfigure','_ACTIVE_TAG', -underline=>1]); - $mw->bind($class,'<FocusOut>', ['tagConfigure','_ACTIVE_TAG', -underline=>0]); - - return $class; -} - -####################################################################### -# set the active element to index -# "active" is a text "mark" which underlines the marked text. -####################################################################### -sub activate -{ - my($w,$element)=@_; - $element= $w->index($element).'.0'; - $w->SUPER::tag('remove', '_ACTIVE_TAG', '1.0','end'); - $w->SUPER::tag('add', '_ACTIVE_TAG', - $element.' linestart', $element.' lineend'); - $w->SUPER::mark('set', 'active', $element); -} - - -####################################################################### -# bbox returns a list (x,y,width,height) giving an approximate -# bounding box of character given by index -####################################################################### -sub bbox -{ - my($w,$element)=@_; - $element=$w->index($element).'.0' unless ($element=~/./); - return $w->SUPER::bbox($element); -} - -####################################################################### -# returns a list of indices of all elements currently selected -####################################################################### -sub curselection -{ - my ($w)=@_; - my @ranges = $w->SUPER::tag('ranges', 'sel'); - my @selection_list; - while (@ranges) - { - my ($first,$firstcol) = split(/\./,shift(@ranges)); - my ($last,$lastcol) = split(/\./,shift(@ranges)); - - ######################################################################### - # if previous selection ended on the same line that this selection starts, - # then fiddle the numbers so that this line number isnt included twice. - ######################################################################### - if (defined($selection_list[-1]) and ($first == $selection_list[-1])) - { - $first++; # count this selection starting from the next line. - } - - if ($lastcol==0) - { - $last-=1; - } - - ######################################################################### - # if incrementing $first causes it to be greater than $last, - # then do nothing, - # else add (first .. last) to list - ######################################################################### - unless ($first>$last) - { - push(@selection_list, $first .. $last); - } - } - return @selection_list; -} - - -####################################################################### -# deletes range of elements from element1 to element2 -# defaults to element1 -####################################################################### -sub delete -{ - my ($w, $element1, $element2)=@_; - $element1=$w->index($element1); - $element2=$element1 unless(defined($element2)); - $element2=$w->index($element2); - $w->SUPER::delete($element1.'.0' , $element2.'.0 lineend'); -} - -####################################################################### -# deletes range of characters from index1 to index2 -# defaults to index1+1c -# index is line.char notation. -####################################################################### -sub deleteChar -{ - my ($w, $index1, $index2)=@_; - $index1=$w->index($index1); - $index2=$index1.' +1c' unless(defined($index2)); - $index2=$w->index($index2); - $w->SUPER::delete($index1, $index2); -} - -####################################################################### -# returns as a list contents of elements from $element1 to $element2 -# defaults to element1. -####################################################################### -sub get -{ - my ($w, $element1, $element2)=@_; - $element1=$w->index($element1); - $element2=$element1 unless(defined($element2)); - $element2=$w->index($element2); - my @getlist; - for(my $i=$element1; $i<=$element2; $i++) - { - push(@getlist, $w->SUPER::get($i.'.0 linestart', $i.'.0 lineend')); - } - - return @getlist; -} - -####################################################################### -# return text between index1 and index2 which are line.char notation. -# return value is a single string. index2 defaults to index1+1c -# index is line.char notation. -###################################################################### -sub getChar -{ - my $w=shift; - return $w->SUPER::get(@_); -} - -####################################################################### -# returns index in number notation -# this method returns an element number, ie the 5th element. -####################################################################### -sub index -{ - my ($w,$element)=@_; - return undef unless(defined($element)); - $element .= '.0' unless $element=~/\D/; - $element = $w->SUPER::index($element); - my($line,$col)=split(/\./,$element); - return $line; -} - -####################################################################### -# returns index in line.char notation -# this method returns an index specific to a character within an element -####################################################################### -sub indexChar -{ - my $w=shift; - return $w->SUPER::index(@_); -} - - -####################################################################### -# inserts specified elements just before element at index -####################################################################### -sub insert -{ - my $w=shift; - my $element=shift; - $element=$w->index($element); - my $item; - while (@_) - { - $item = shift(@_); - $item .= "\n"; - $w->SUPER::insert($element++.'.0', $item); - } -} - -####################################################################### -# inserts string just before character at index. -# index is line.char notation. -####################################################################### -sub insertChar -{ - my $w=shift; - $w->SUPER::insert(@_); -} - - - -####################################################################### -# returns index of element nearest to y-coordinate -# -# currently not defined -####################################################################### -#sub nearest -#{ -# return undef; -#} - -####################################################################### -# Sets the selection anchor to element at index -####################################################################### -sub selectionAnchor -{ - my ($w, $element)=@_; - $element=$w->index($element); - $w->SUPER::mark('set', 'anchor', $element.'.0'); -} - -####################################################################### -# deselects elements between index1 and index2, inclusive -####################################################################### -sub selectionClear -{ - my ($w, $element1, $element2)=@_; - $element1=$w->index($element1); - $element2=$element1 unless(defined($element2)); - $element2=$w->index($element2); - $w->SUPER::tag('remove', 'sel', $element1.'.0', $element2.'.0 lineend +1c'); -} - -####################################################################### -# returns 1 if element at index is selected, 0 otherwise. -####################################################################### -sub selectionIncludes -{ - my ($w, $element)=@_; - $element=$w->index($element); - my @list = $w->curselection; - my $line; - foreach $line (@list) - { - if ($line == $element) {return 1;} - } - return 0; -} - -####################################################################### -# adds all elements between element1 and element2 inclusive to selection -####################################################################### -sub selectionSet -{ - my ($w, $element1, $element2)=@_; - $element1=$w->index($element1); - $element2=$element1 unless(defined($element2)); - $element2=$w->index($element2); - $w->SUPER::tag('add', 'sel', $element1.'.0', $element2.'.0 lineend +1c'); -} - -####################################################################### -# for ->selection(option,args) calling convention -####################################################################### -sub selection -{ -# my ($w,$sub)=(shift,"selection".ucfirst(shift)); -# no strict 'refs'; -# # can't use $w->$sub, since it might call overridden method-- bleh -# &($sub)($w,@_); -} - - -####################################################################### -# adjusts the view in window so element at index is completely visible -####################################################################### -sub see -{ - my ($w, $element)=@_; - $element=$w->index($element); - $w->SUPER::see($element.'.0'); -} - -####################################################################### -# returns number of elements in listbox -####################################################################### -sub size -{ - my ($w)=@_; - my $element = $w->index('end'); - # theres a weird thing with the 'end' mark sometimes being on a line - # with text, and sometimes being on a line all by itself - my ($text) = $w->get($element); - if (length($text) == 0) - {$element -= 1;} - return $element; -} - - - -####################################################################### -# add a tag based on element numbers -####################################################################### -sub tagAdd -{ - my ($w, $tagName, $element1, $element2)=@_; - $element1=$w->index($element1); - $element1.='.0'; - - $element2=$element1.' lineend' unless(defined($element2)); - $element2=$w->index($element2); - $element2.='.0 lineend +1c'; - - $w->SUPER::tag('add', $tagName, $element1, $element2); -} - -####################################################################### -# add a tag based on line.char indexes -####################################################################### -sub tagAddChar -{ - my $w=shift; - $w->SUPER::tag('add',@_); -} - - -####################################################################### -# remove a tag based on element numbers -####################################################################### -sub tagRemove -{ - my ($w, $tagName, $element1, $element2)=@_; - $element1=$w->index($element1); - $element1.='.0'; - - $element2=$element1.' lineend' unless(defined($element2)); - $element2=$w->index($element2); - $element2.='.0 lineend +1c'; - - $w->SUPER::tag('remove', 'sel', $element1, $element2); -} - -####################################################################### -# remove a tag based on line.char indexes -####################################################################### -sub tagRemoveChar -{ - my $w=shift; - $w->SUPER::tag('remove', @_); -} - - - - -####################################################################### -# perform tagNextRange based on element numbers -####################################################################### -sub tagNextRange -{ - my ($w, $tagName, $element1, $element2)=@_; - $element1=$w->index($element1); - $element1.='.0'; - - $element2=$element1 unless(defined($element2)); - $element2=$w->index($element2); - $element2.='.0 lineend +1c'; - - my $index = $w->SUPER::tag('nextrange', 'sel', $element1, $element2); - my ($line,$col)=split(/\./,$index); - return $line; -} - -####################################################################### -# perform tagNextRange based on line.char indexes -####################################################################### -sub tagNextRangeChar -{ - my $w=shift; - $w->SUPER::tag('nextrange', @_); -} - -####################################################################### -# perform tagPrevRange based on element numbers -####################################################################### -sub tagPrevRange -{ - my ($w, $tagName, $element1, $element2)=@_; - $element1=$w->index($element1); - $element1.='.0'; - - $element2=$element1 unless(defined($element2)); - $element2=$w->index($element2); - $element2.='.0 lineend +1c'; - - my $index = $w->SUPER::tag('prevrange', 'sel', $element1, $element2); - my ($line,$col)=split(/\./,$index); - return $line; -} - -####################################################################### -# perform tagPrevRange based on line.char indexes -####################################################################### -sub tagPrevRangeChar -{ - my $w=shift; - $w->SUPER::tag('prevrange', @_); -} - - - -####################################################################### -# perform markSet based on element numbers -####################################################################### -sub markSet -{ - my ($w,$mark,$element1)=@_; - $element1=$w->index($element1); - $element1.='.0'; - $w->SUPER::mark('set', $element1,$mark); -} - -####################################################################### -# perform markSet based on line.char indexes -####################################################################### -sub markSetChar -{ - my $w=shift; - $w->SUPER::mark('set', @_); -} - -####################################################################### -# perform markNext based on element numbers -####################################################################### -sub markNext -{ - my ($w,$element1)=@_; - $element1=$w->index($element1); - $element1.='.0'; - return $w->SUPER::mark('next', $element1); -} - -####################################################################### -# perform markNext based on line.char indexes -####################################################################### -sub markNextChar -{ - my $w=shift; - $w->SUPER::mark('next', @_); -} - - -####################################################################### -# perform markPrevious based on element numbers -####################################################################### -sub markPrevious -{ - my ($w,$element1)=@_; - $element1=$w->index($element1); - $element1.='.0'; - return $w->SUPER::mark('previous', $element1); -} - -####################################################################### -# perform markPrevious based on line.char indexes -####################################################################### -sub markPreviousChar -{ - my $w=shift; - $w->SUPER::mark('previous', @_); -} - - - - -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); - my @list = (); - $w->{'SELECTION_LIST_REF'} = \@list; - $w->{'PREVIOUS_ELEMENT'} = $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($w->{'PREVIOUS_ELEMENT'}) && $el == $w->{'PREVIOUS_ELEMENT'}) - { - return; - } - - # if no selections, select current - if($w->curselection==0) - { - $w->activate($el); - $w->selectionSet($el); - $w->selectionAnchor($el); - $w->{'PREVIOUS_ELEMENT'}=$el; - return; - } - - my $anchor = $w->index('anchor'); - my $mode = $w->cget('-selectmode'); - if ($mode eq 'browse') - { - $w->selectionClear(0,'end'); - $w->selectionSet($el); - $w->{'PREVIOUS_ELEMENT'} = $el; - } - elsif ($mode eq 'extended') - { - my $i = $w->{'PREVIOUS_ELEMENT'}; - 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($w->{'SELECTION_LIST_REF'},$i) >= 0) - { - $w->selectionSet($i) - } - $i += 1 - } - while ($i > $el && $i > $anchor) - { - if (Tk::lsearch($w->{'SELECTION_LIST_REF'},$i) >= 0) - { - $w->selectionSet($i) - } - $i += -1 - } - $w->{'PREVIOUS_ELEMENT'} = $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 no selections, select current - if($w->curselection==0) - { - $w->activate($el); - $w->selectionSet($el); - $w->selectionAnchor($el); - $w->{'PREVIOUS_ELEMENT'}=$el; - return; - } - - 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') - { - my @list = $w->curselection(); - $w->{'SELECTION_LIST_REF'} = \@list; - $w->{'PREVIOUS_ELEMENT'} = $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'); - my $selectmode = $w->cget('-selectmode'); - if ($selectmode eq 'browse') - { - $w->selectionClear(0,'end'); - $w->selectionSet('active') - } - elsif ($selectmode eq 'extended') - { - $w->selectionClear(0,'end'); - $w->selectionSet('active'); - $w->selectionAnchor('active'); - $w->{'PREVIOUS_ELEMENT'} = $w->index('active'); - my @list = (); - $w->{'SELECTION_LIST_REF'}=\@list; - } -} -# 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; - my $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 $w->{'PREVIOUS_ELEMENT'}) - { - return; - } - my $first = $w->index('anchor'); - my $last = $w->{'PREVIOUS_ELEMENT'}; - if ($first > $last) - { - ($first,$last)=($last,$first); - } - $w->selectionClear($first,$last); - while ($first <= $last) - { - if (Tk::lsearch($w->{'SELECTION_LIST_REF'},$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 $element = $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($element++,$_); - } -} - -sub getSelected -{ - my ($w) = @_; - my $i; - my (@result) = (); - foreach $i ($w->curselection) - { - push(@result,$w->get($i)); - } - return (wantarray) ? @result : $result[0]; -} - - - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/TextUndo.pm b/Master/tlpkg/tlperl.old/lib/Tk/TextUndo.pm deleted file mode 100644 index 066e4027a3a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/TextUndo.pm +++ /dev/null @@ -1,1022 +0,0 @@ -# Copyright (c) 1995-2004 Nick Ing-Simmons. -# Copyright (c) 1999 Greg London. -# 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::TextUndo; - -use vars qw($VERSION $DoDebug); -$VERSION = '4.013'; # $Id: //depot/Tkutf8/Tk/TextUndo.pm#15 $ -$DoDebug = 0; - -use Tk qw (Ev); -use AutoLoader; - -use Tk::Text (); -use base qw(Tk::Text); - -Construct Tk::Widget 'TextUndo'; - -sub ClassInit -{ - my ($class,$mw) = @_; - $mw->bind($class,'<<Undo>>','undo'); - $mw->bind($class,'<<Redo>>','redo'); - - return $class->SUPER::ClassInit($mw); -} - - -#################################################################### -# methods for manipulating the undo and redo stacks. -# no one should directly access the stacks except for these methods. -# everyone else must access the stacks through these methods. -#################################################################### -sub ResetUndo -{ - my ($w) = @_; - delete $w->{UNDO}; - delete $w->{REDO}; -} - -sub PushUndo -{ - my $w = shift; - $w->{UNDO} = [] unless (exists $w->{UNDO}); - push(@{$w->{UNDO}},@_); -} - -sub PushRedo -{ - my $w = shift; - $w->{REDO} = [] unless (exists $w->{REDO}); - push(@{$w->{REDO}},@_); -} - -sub PopUndo -{ - my ($w) = @_; - return pop(@{$w->{UNDO}}) if defined $w->{UNDO}; - return undef; -} - -sub PopRedo -{ - my ($w) = @_; - return pop(@{$w->{REDO}}) if defined $w->{REDO}; - return undef; -} - -sub ShiftRedo -{ - my ($w) = @_; - return shift(@{$w->{REDO}}) if defined $w->{REDO}; - return undef; -} - -sub numberChanges -{ - my ($w) = @_; - return 0 unless (exists $w->{'UNDO'}) and (defined($w->{'UNDO'})); - return scalar(@{$w->{'UNDO'}}); -} - -sub SizeRedo -{ - my ($w) = @_; - return 0 unless exists $w->{'REDO'}; - return scalar(@{$w->{'REDO'}}); -} - -sub getUndoAtIndex -{ - my ($w,$index) = @_; - return undef unless (exists $w->{UNDO}); - return $w->{UNDO}[$index]; -} - -sub getRedoAtIndex -{ - my ($w,$index) = @_; - return undef unless (exists $w->{REDO}); - return $w->{REDO}[$index]; -} - -#################################################################### -# type "hello there" -# hello there_ -# hit UNDO -# hello_ -# type "out" -# hello out_ -# pressing REDO should not do anything -# pressing UNDO should make "out" disappear. -# pressing UNDO should make "there" reappear. -# pressing UNDO should make "there" disappear. -# pressing UNDO should make "hello" disappear. -# -# if there is anything in REDO stack and -# the OperationMode is normal, (i.e. not in the middle of an ->undo or ->redo) -# then before performing the current operation -# take the REDO stack, and put it on UNDO stack -# such that UNDO/REDO keystrokes will still make logical sense. -# -# call this method at the beginning of any overloaded method -# which adds operations to the undo or redo stacks. -# it will perform all the magic needed to handle the redo stack. -#################################################################### -sub CheckForRedoShuffle -{ - my ($w) = @_; - my $size_redo = $w->SizeRedo; - return unless $size_redo && ($w->OperationMode eq 'normal'); - # local $DoDebug = 1; - - # we are about to 'do' something new, but have something in REDO stack. - # The REDOs may conflict with new ops, but we want to preserve them. - # So convert them to UNDOs - effectively do them and their inverses - # so net effect on the widget is no-change. - - $w->dump_array('StartShuffle'); - - $w->OperationMode('REDO_MAGIC'); - $w->MarkSelectionsSavePositions; - - my @pvtundo; - - # go through REDO array from end downto 0, i.e. pseudo pop - # then pretend we did 'redo' get inverse, and push into UNDO array - # and 'do' the op. - for (my $i=$size_redo-1; $i>=0 ; $i--) - { - my ($op,@args) = @{$w->getRedoAtIndex($i)}; - my $op_undo = $op .'_UNDO'; - # save the inverse of the op on the UNDO array - # do this before the re-doing the op - after a 'delete' we cannot see - # text we deleted! - my $undo = $w->$op_undo(@args); - $w->PushUndo($undo); - # We must 'do' the operation now so if this is an insert - # the text and tags are available for inspection in delete_UNDO, and - # indices reflect changes. - $w->$op(@args); - # Save the undo that will reverse what we just did - it is - # on the undo stack but will be tricky to find - push(@pvtundo,$undo); - } - - # Now shift each item off REDO array until empty - # push each item onto UNDO array - this reverses the order - # and we are not altering buffer so we cannot look in the - # buffer to compute inverses - which is why we saved them above - - while ($w->SizeRedo) - { - my $ref = $w->ShiftRedo; - $w->PushUndo($ref); - } - - # Finally undo whatever we did to compensate for doing it - # and get buffer back to state it was before we started. - while (@pvtundo) - { - my ($op,@args) = @{pop(@pvtundo)}; - $w->$op(@args); - } - - $w->RestoreSelectionsMarkedSaved; - $w->OperationMode('normal'); - $w->dump_array('EndShuffle'); -} - -# sets/returns undo/redo/normal operation mode -sub OperationMode -{ - my ($w,$mode) = @_; - $w->{'OPERATION_MODE'} = $mode if (@_ > 1); - $w->{'OPERATION_MODE'} = 'normal' unless exists($w->{'OPERATION_MODE'}); - return $w->{'OPERATION_MODE'}; -} - -#################################################################### -# dump the undo and redo stacks to the screen. -# used for debug purposes. -sub dump_array -{ - return unless $DoDebug; - my ($w,$why) = @_; - print "At $why:\n"; - foreach my $key ('UNDO','REDO') - { - if (defined($w->{$key})) - { - print " $key array is:\n"; - my $array = $w->{$key}; - foreach my $ref (@$array) - { - my @items; - foreach my $item (@$ref) - { - my $loc = $item; - $loc =~ tr/\n/\^/; - push(@items,$loc); - } - print " [",join(',',@items),"]\n"; - } - } - } - print "\n"; -} - - -############################################################ -############################################################ -# these are a group of methods used to indicate the start and end of -# several operations that are to be undo/redo 'ed in a single step. -# -# in other words, "glob" a bunch of operations together. -# -# for example, a search and replace should be undone with a single -# keystroke, rather than one keypress undoes the insert and another -# undoes the delete. -# all other methods should access the count via these methods. -# no other method should directly access the {GLOB_COUNT} value directly -############################################################# -############################################################# - -sub AddOperation -{ - my ($w,@operation) = @_; - my $mode = $w->OperationMode; - - if ($mode eq 'normal') - {$w->PushUndo([@operation]);} - elsif ($mode eq 'undo') - {$w->PushRedo([@operation]);} - elsif ($mode eq 'redo') - {$w->PushUndo([@operation]);} - else - {die "invalid destination '$mode', must be one of 'normal', 'undo' or 'redo'";} -} - -sub addGlobStart # add it to end of undo list -{ - my ($w, $who) = @_; - unless (defined($who)) {$who = (caller(1))[3];} - $w->CheckForRedoShuffle; - $w->dump_array('Start'.$who); - $w->AddOperation('GlobStart', $who) ; -} - -sub addGlobEnd # add it to end of undo list -{ - my ($w, $who) = @_; - unless (defined($who)) {$who = (caller(1))[3];} - my $topundo = $w->getUndoAtIndex(-1); - if ($topundo->[0] eq 'GlobStart') - { - $w->PopUndo; - } - else - { - my $nxtundo = $w->getUndoAtIndex(-2); - if ($nxtundo->[0] eq 'GlobStart') - { - $w->PopUndo; - $w->PopUndo; - $w->PushUndo($topundo); - } - else - { - $w->AddOperation('GlobEnd', $who); - } - } - $w->dump_array('End'.$who); -} - -sub GlobStart -{ - my ($w, $who) = @_; - unless (defined($w->{GLOB_COUNT})) {$w->{GLOB_COUNT}=0;} - if ($w->OperationMode eq 'normal') - { - $w->PushUndo($w->GlobStart_UNDO($who)); - } - $w->{GLOB_COUNT} = $w->{GLOB_COUNT} + 1; -} - -sub GlobStart_UNDO -{ - my ($w, $who) = @_; - $who = 'GlobEnd_UNDO' unless defined($who); - return ['GlobEnd',$who]; -} - -sub GlobEnd -{ - my ($w, $who) = @_; - unless (defined($w->{GLOB_COUNT})) {$w->{GLOB_COUNT}=0;} - if ($w->OperationMode eq 'normal') - { - $w->PushUndo($w->GlobStart_UNDO($who)); - } - $w->{GLOB_COUNT} = $w->{GLOB_COUNT} - 1; -} - -sub GlobEnd_UNDO -{ - my ($w, $who) = @_; - $who = 'GlobStart_UNDO' unless defined($who); - return ['GlobStart',$who]; -} - -sub GlobCount -{ - my ($w,$count) = @_; - unless ( exists($w->{'GLOB_COUNT'}) and defined($w->{'GLOB_COUNT'}) ) - { - $w->{'GLOB_COUNT'}=0; - } - if (defined($count)) - { - $w->{'GLOB_COUNT'}=$count; - } - return $w->{'GLOB_COUNT'}; -} - -#################################################################### -# two methods should be used by applications to access undo and redo -# capability, namely, $w->undo; and $w->redo; methods. -# these methods undo and redo the last operation, respectively. -#################################################################### -sub undo -{ - my ($w) = @_; - $w->dump_array('Start'.'undo'); - unless ($w->numberChanges) {$w->bell; return;} # beep and return if empty - $w->GlobCount(0); #initialize to zero - $w->OperationMode('undo'); - do - { - my ($op,@args) = @{$w->PopUndo}; # get undo operation, convert ref to array - my $undo_op = $op .'_UNDO'; - $w->PushRedo($w->$undo_op(@args)); # find out how to undo it - $w->$op(@args); # do the operation - } while($w->GlobCount and $w->numberChanges); - $w->OperationMode('normal'); - $w->dump_array('End'.'undo'); -} - -sub redo -{ - my ($w) = @_; - unless ($w->SizeRedo) {$w->bell; return;} # beep and return if empty - $w->OperationMode('redo'); - $w->GlobCount(0); #initialize to zero - do - { - my ($op,@args) = @{$w->PopRedo}; # get op from redo stack, convert to list - my $undo_op = $op .'_UNDO'; - $w->PushUndo($w->$undo_op(@args)); # figure out how to undo operation - $w->$op(@args); # do the operation - } while($w->GlobCount and $w->SizeRedo); - $w->OperationMode('normal'); -} - - -############################################################ -# override low level subroutines so that they work with UNDO/REDO capability. -# every overridden subroutine must also have a corresponding *_UNDO subroutine. -# the *_UNDO method takes the same parameters in and returns an array reference -# which is how to undo itself. -# note that the *_UNDO must receive absolute indexes. -# ->insert receives 'markname' as the starting index. -# ->insert must convert 'markname' using $absindex=$w->index('markname') -# and pass $absindex to ->insert_UNDO. -############################################################ - -sub insert -{ - my $w = shift; - $w->markSet('insert', $w->index(shift) ); - while(@_) - { - my $index1 = $w->index('insert'); - my $string = shift; - my $taglist_ref = shift if @_; - - if ($w->OperationMode eq 'normal') - { - $w->CheckForRedoShuffle; - $w->PushUndo($w->insert_UNDO($index1,$string,$taglist_ref)); - } - $w->markSet('notepos' => $index1); - $w->SUPER::insert($index1,$string,$taglist_ref); - $w->markSet('insert', $w->index('notepos')); - } -} - -sub insert_UNDO -{ - my $w = shift; - my $index = shift; - my $string = ''; - # This possible call: ->insert (index, string, tag, string, tag...); - # if more than one string, keep reading strings in (discarding tags) - # until all strings are read in and $string contains entire text inserted. - while (@_) - { - $string .= shift; - my $tags = shift if (@_); - } - # calculate index - # possible things to insert: - # carriage return - # single character (not CR) - # single line of characters (not ending in CR) - # single line of characters ending with a CR - # multi-line characters. last line does not end with CR - # multi-line characters, last line does end with CR. - my ($line,$col) = split(/\./,$index); - if ($string =~ /\n(.*)$/) - { - $line += $string =~ tr/\n/\n/; - $col = length($1); - } - else - { - $col += length($string); - } - return ['delete', $index, $line.'.'.$col]; -} - -sub delete -{ - my ($w, $start, $stop) = @_; - unless(defined($stop)) - { $stop = $start .'+1c'; } - my $index1 = $w->index($start); - my $index2 = $w->index($stop); - if ($w->OperationMode eq 'normal') - { - $w->CheckForRedoShuffle; - $w->PushUndo($w->delete_UNDO($index1,$index2)); - } - $w->SUPER::delete($index1,$index2); - # why call SetCursor - it has side effects - # which cause a whole slew if save/restore hassles ? - $w->SetCursor($index1); -} - -sub delete_UNDO -{ - my ($w, $index1, $index2) = @_; - my %tags; - my @result = ( 'insert' => $index1 ); - my $str = ''; - - ############################################################### - # get tags in range and return them in a format that - # can be inserted. - # $text->insert('1.0', $string1, [tag1,tag2], $string2, [tag2, tag3]); - # note, have to break tags up into sequential order - # in reference to _all_ tags. - ############################################################### - - $w->dump('-text','-tag', -command => sub { - my ($kind,$value,$posn) = @_; - if ($kind eq 'text') - { - $str .= $value; - } - else - { - push(@result,$str,[keys %tags]) if (length $str); - $str = ''; - if ($kind eq 'tagon') - { - $tags{$value} = 1; - } - elsif ($kind eq 'tagoff') - { - delete $tags{$value}; - } - } - }, $index1, $index2); - push(@result,$str,[keys %tags]) if (length $str); - return \@result; -} - -############################################################ -# override subroutines which are collections of low level -# routines executed in sequence. -# wrap a globstart and globend around the SUPER:: version of routine. -############################################################ - -sub ReplaceSelectionsWith -{ - my $w = shift; - $w->addGlobStart; - $w->SUPER::ReplaceSelectionsWith(@_); - $w->addGlobEnd; -} - -sub FindAndReplaceAll -{ - my $w = shift; - $w->addGlobStart; - $w->SUPER::FindAndReplaceAll(@_); - $w->addGlobEnd; -} - -sub clipboardCut -{ - my $w = shift; - $w->addGlobStart; - $w->SUPER::clipboardCut(@_); - $w->addGlobEnd; -} - -sub clipboardPaste -{ - my $w = shift; - $w->addGlobStart; - $w->SUPER::clipboardPaste(@_); - $w->addGlobEnd; -} - -sub clipboardColumnCut -{ - my $w = shift; - $w->addGlobStart; - $w->SUPER::clipboardColumnCut(@_); - $w->addGlobEnd; -} - -sub clipboardColumnPaste -{ - my $w = shift; - $w->addGlobStart; - $w->SUPER::clipboardColumnPaste(@_); - $w->addGlobEnd; -} - -# Greg: this method is more tightly coupled to the base class -# than I would prefer, but I know of no other way to do it. - -sub Insert -{ - my ($w,$char)=@_; - return if $char eq ''; - $w->addGlobStart; - $w->SUPER::Insert($char); - $w->addGlobEnd; - $w->see('insert'); -} - - -sub InsertKeypress -{ - my ($w,$char)=@_; - return if $char eq ''; - if ($char =~ /^\S$/ and !$w->OverstrikeMode and !$w->tagRanges('sel')) - { - my $index = $w->index('insert'); - my $undo_item = $w->getUndoAtIndex(-1); - if (defined($undo_item) && - ($undo_item->[0] eq 'delete') && - ($undo_item->[2] == $index) - ) - { - $w->SUPER::insert($index,$char); - $undo_item->[2] = $w->index('insert'); - return; - } - } - $w->addGlobStart; - $w->SUPER::InsertKeypress($char); - $w->addGlobEnd; -} - -############################################################ -sub TextUndoFileProgress -{ - my ($w,$action,$filename,$count,$val,$total) = @_; - return unless(defined($filename) and defined($count)); - - my $popup = $w->{'FILE_PROGRESS_POP_UP'}; - unless (defined($popup)) - { - $w->update; - $popup = $w->Toplevel(-title => "File Progress",-popover => $w); - $popup->transient($w->toplevel); - $popup->withdraw; - $popup->resizable('no','no'); - $popup->Label(-textvariable => \$popup->{ACTION})->pack; - $popup->Label(-textvariable => \$popup->{FILENAME})->pack; - $popup->Label(-textvariable => \$popup->{COUNT})->pack; - my $f = $popup->Frame(-height => 10, -border => 2, -relief => 'sunken')->pack(-fill => 'x'); - my $i = $f->Frame(-background => 'blue', -relief => 'raised', -border => 2); - $w->{'FILE_PROGRESS_POP_UP'} = $popup; - $popup->{PROGBAR} = $i; - } - $popup->{ACTION} = $action; - $popup->{COUNT} = "lines: $count"; - $popup->{FILENAME} = "Filename: $filename"; - if (defined($val) && defined($total) && $total != 0) - { - $popup->{PROGBAR}->place('-x' => 0, '-y' => 0, -relheight => 1, -relwidth => $val/$total); - } - else - { - $popup->{PROGBAR}->placeForget; - } - - $popup->idletasks; - unless ($popup->viewable) - { - $w->idletasks; - $w->toplevel->deiconify unless $w->viewable; - $popup->Popup; - } - $popup->update; - return $popup; -} - -sub FileName -{ - my ($w,$filename) = @_; - if (@_ > 1) - { - $w->{'FILENAME'}=$filename; - } - return $w->{'FILENAME'}; -} - -sub PerlIO_layers -{ - my ($w,$layers) = @_; - $w->{PERLIO_LAYERS} = $layers if @_ > 1; - return $w->{PERLIO_LAYERS} || '' ; -} - -sub ConfirmDiscard -{ - my ($w)=@_; - if ($w->numberChanges) - { - my $ans = $w->messageBox(-icon => 'warning', - -type => 'YesNoCancel', -default => 'Yes', - -message => -"The text has been modified without being saved. -Save edits?"); - return 0 if $ans eq 'Cancel'; - return 0 if ($ans eq 'Yes' && !$w->Save); - } - return 1; -} - -################################################################################ -# if the file has been modified since being saved, a pop up window will be -# created, asking the user to confirm whether or not to exit. -# this allows the user to return to the application and save the file. -# the code would look something like this: -# -# if ($w->user_wants_to_exit) -# {$w->ConfirmExit;} -# -# it is also possible to trap attempts to delete the main window. -# this allows the ->ConfirmExit method to be called when the main window -# is attempted to be deleted. -# -# $mw->protocol('WM_DELETE_WINDOW'=> -# sub{$w->ConfirmExit;}); -# -# finally, it might be desirable to trap Control-C signals at the -# application level so that ->ConfirmExit is also called. -# -# $SIG{INT}= sub{$w->ConfirmExit;}; -# -################################################################################ - -sub ConfirmExit -{ - my ($w) = @_; - $w->toplevel->destroy if $w->ConfirmDiscard; -} - -sub Save -{ - my ($w,$filename) = @_; - $filename = $w->FileName unless defined $filename; - return $w->FileSaveAsPopup unless defined $filename; - my $layers = $w->PerlIO_layers; - if (open(my $file,">$layers",$filename)) - { - my $status; - my $count=0; - my $index = '1.0'; - my $progress; - my ($lines) = $w->index('end - 1 chars') =~ /^(\d+)\./; - while ($w->compare($index,'<','end')) - { -# my $end = $w->index("$index + 1024 chars"); - my $end = $w->index("$index lineend +1c"); - print $file $w->get($index,$end); - $index = $end; - if (($count++%1000) == 0) - { - $progress = $w->TextUndoFileProgress (Saving => $filename,$count,$count,$lines); - } - } - $progress->withdraw if defined $progress; - if (close($file)) - { - $w->ResetUndo; - $w->FileName($filename); - return 1; - } - } - else - { - $w->BackTrace("Cannot open $filename:$!"); - } - return 0; -} - -sub Load -{ - my ($w,$filename) = @_; - $filename = $w->FileName unless (defined($filename)); - return 0 unless defined $filename; - my $layers = $w->PerlIO_layers; - if (open(my $file,"<$layers",$filename)) - { - $w->MainWindow->Busy; - $w->EmptyDocument; - my $count=1; - my $progress; - while (<$file>) - { - $w->SUPER::insert('end',$_); - if (($count++%1000) == 0) - { - $progress = $w->TextUndoFileProgress (Loading => $filename, - $count,tell($file),-s $filename); - } - } - close($file); - $progress->withdraw if defined $progress; - $w->markSet('insert' => '1.0'); - $w->FileName($filename); - $w->MainWindow->Unbusy; - } - else - { - $w->BackTrace("Cannot open $filename:$!"); - } -} - -sub IncludeFile -{ - my ($w,$filename) = @_; - unless (defined($filename)) - {$w->BackTrace("filename not specified"); return;} - my $layers = $w->PerlIO_layers; - if (open(my $file,"<$layers",$filename)) - { - $w->Busy; - my $count=1; - $w->addGlobStart; - my $progress; - while (<$file>) - { - $w->insert('insert',$_); - if (($count++%1000) == 0) - { - $progress = $w->TextUndoFileProgress(Including => $filename, - $count,tell($file),-s $filename); - } - } - $progress->withdraw if defined $progress; - $w->addGlobEnd; - close($file); - $w->Unbusy; - } - else - { - $w->BackTrace("Cannot open $filename:$!"); - } -} - -# clear document without pushing it into UNDO array, (use SUPER::delete) -# (using plain delete(1.0,end) on a really big document fills up the undo array) -# and then clear the Undo and Redo stacks. -sub EmptyDocument -{ - my ($w) = @_; - $w->SUPER::delete('1.0','end'); - $w->ResetUndo; - $w->FileName(undef); -} - -sub ConfirmEmptyDocument -{ - my ($w)=@_; - $w->EmptyDocument if $w->ConfirmDiscard; -} - -sub FileMenuItems -{ - my ($w) = @_; - return [ - ["command"=>'~Open', -command => [$w => 'FileLoadPopup']], - ["command"=>'~Save', -command => [$w => 'Save' ]], - ["command"=>'Save ~As', -command => [$w => 'FileSaveAsPopup']], - ["command"=>'~Include', -command => [$w => 'IncludeFilePopup']], - ["command"=>'~Clear', -command => [$w => 'ConfirmEmptyDocument']], - "-",@{$w->SUPER::FileMenuItems} - ] -} - -sub EditMenuItems -{ - my ($w) = @_; - - return [ - ["command"=>'Undo', -command => [$w => 'undo']], - ["command"=>'Redo', -command => [$w => 'redo']], - "-",@{$w->SUPER::EditMenuItems} - ]; -} - -sub CreateFileSelect -{ - my $w = shift; - my $k = shift; - my $name = $w->FileName; - my @types = (['All Files', '*']); - my $dir = undef; - if (defined $name) - { - require File::Basename; - my $sfx; - ($name,$dir,$sfx) = File::Basename::fileparse($name,'\..*'); - # - # it should never happen where we have a file suffix and - # no file name... but fileparse() screws this up with dotfiles. - # - if (length($sfx) && !length($name)) { ($name, $sfx) = ($sfx, $name) } - - if (defined($sfx) && length($sfx)) - { - unshift(@types,['Similar Files',[$sfx]]); - $name .= $sfx; - } - } - return $w->$k(-initialdir => $dir, -initialfile => $name, - -filetypes => \@types, @_); -} - -sub FileLoadPopup -{ - my ($w)=@_; - my $name = $w->CreateFileSelect('getOpenFile',-title => 'File Load'); - return $w->Load($name) if defined($name) and length($name); - return 0; -} - -sub IncludeFilePopup -{ - my ($w)=@_; - my $name = $w->CreateFileSelect('getOpenFile',-title => 'File Include'); - return $w->IncludeFile($name) if defined($name) and length($name); - return 0; -} - -sub FileSaveAsPopup -{ - my ($w)=@_; - my $name = $w->CreateFileSelect('getSaveFile',-title => 'File Save As'); - return $w->Save($name) if defined($name) and length($name); - return 0; -} - - -sub MarkSelectionsSavePositions -{ - my ($w)=@_; - $w->markSet('MarkInsertSavePosition','insert'); - my @ranges = $w->tagRanges('sel'); - my $i = 0; - while (@ranges) - { - my ($start,$end) = splice(@ranges,0,2); - $w->markSet( 'MarkSelectionsSavePositions_'.++$i, $start); - $w->markSet( 'MarkSelectionsSavePositions_'.++$i, $end); - $w->tagRemove('sel',$start,$end); - } -} - -sub RestoreSelectionsMarkedSaved -{ - my ($w)=@_; - my $i = 1; - my %mark_hash; - foreach my $mark ($w->markNames) - { - $mark_hash{$mark}=1; - } - while(1) - { - my $markstart = 'MarkSelectionsSavePositions_'.$i++; - last unless(exists($mark_hash{$markstart})); - my $indexstart = $w->index($markstart); - my $markend = 'MarkSelectionsSavePositions_'.$i++; - last unless(exists($mark_hash{$markend})); - my $indexend = $w->index($markend); - $w->tagAdd('sel',$indexstart, $indexend); - $w->markUnset($markstart, $markend); - } - $w->markSet('insert','MarkInsertSavePosition'); -} - -#################################################################### -# selected lines may be discontinous sequence. -sub GetMarkedSelectedLineNumbers -{ - my ($w) = @_; - - my $i = 1; - my %mark_hash; - my @ranges; - foreach my $mark ($w->markNames) - { - $mark_hash{$mark}=1; - } - - while(1) - { - my $markstart = 'MarkSelectionsSavePositions_'.$i++; - last unless(exists($mark_hash{$markstart})); - my $indexstart = $w->index($markstart); - my $markend = 'MarkSelectionsSavePositions_'.$i++; - last unless(exists($mark_hash{$markend})); - my $indexend = $w->index($markend); - - push(@ranges, $indexstart, $indexend); - } - - my @selection_list; - while (@ranges) - { - my ($first) = split(/\./,shift(@ranges)); - my ($last) = split(/\./,shift(@ranges)); - # if previous selection ended on the same line that this selection starts, - # then fiddle the numbers so that this line number isnt included twice. - if (defined($selection_list[-1]) and ($first == $selection_list[-1])) - { - # if this selection ends on the same line its starts, then skip this sel - next if ($first == $last); - $first++; # count this selection starting from the next line. - } - push(@selection_list, $first .. $last); - } - return @selection_list; -} - -sub insertStringAtStartOfSelectedLines -{ - my ($w,$insert_string)=@_; - $w->addGlobStart; - $w->MarkSelectionsSavePositions; - foreach my $line ($w->GetMarkedSelectedLineNumbers) - { - $w->insert($line.'.0', $insert_string); - } - $w->RestoreSelectionsMarkedSaved; - $w->addGlobEnd; -} - -sub deleteStringAtStartOfSelectedLines -{ - my ($w,$insert_string)=@_; - $w->addGlobStart; - $w->MarkSelectionsSavePositions; - my $length = length($insert_string); - foreach my $line ($w->GetMarkedSelectedLineNumbers) - { - my $start = $line.'.0'; - my $end = $line.'.'.$length; - my $current_text = $w->get($start, $end); - next unless ($current_text eq $insert_string); - $w->delete($start, $end); - } - $w->RestoreSelectionsMarkedSaved; - $w->addGlobEnd; -} - - -1; -__END__ - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Tiler.pm b/Master/tlpkg/tlperl.old/lib/Tk/Tiler.pm deleted file mode 100644 index 1256612f801..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Tiler.pm +++ /dev/null @@ -1,203 +0,0 @@ -# Copyright (c) 1995-2004 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. -# An example of a geometry manager "widget" in perl -package Tk::Tiler; -require Tk; -require Tk::Frame; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #12 $ =~ /\D(\d+)\s*$/; - -use base qw(Tk::Frame); - -Construct Tk::Widget 'Tiler'; -sub Tk::Widget::ScrlTiler { shift->Scrolled('Tiler' => @_) } - -use Tk::Pretty; - -sub FocusChildren -{ - return (wantarray) ? () : 0; -} - -sub Populate -{ - my ($obj,$args) = @_; - $obj->SUPER::Populate($args); - $obj->{Slaves} = []; - $obj->{LayoutPending} = 0; - $obj->{Start} = 0; - $obj->{Sw} = 0; - $obj->{Sh} = 0; - $obj->ConfigSpecs('-takefocus' => ['SELF', 'takeFocus','TakeFocus',1], - '-highlightthickness' => ['SELF', 'highlightThickness','HighlightThickness',2], - '-yscrollcommand' => ['CALLBACK',undef,undef,undef], - '-columns' => ['PASSIVE','columns','Columns',5], - '-rows' => ['PASSIVE','rows','Rows',10] - ); - return $obj; -} - -sub change_size -{ - my ($w) = shift; - my $r = $w->cget('-rows'); - my $c = $w->cget('-columns'); - my $bw = $w->cget(-highlightthickness); - if (defined $r && defined $c) - { - $w->GeometryRequest($c*$w->{Sw}+2*$bw,$r*$w->{Sh}+2*$bw); - } -} - -sub Layout -{ - my $m = shift; - my $bw = $m->cget(-highlightthickness); - my $why = $m->{LayoutPending}; - $m->{LayoutPending} = 0; - my $W = $m->Width; - my $H = $m->Height; - my $w = $m->{Sw} || 1; # max width of slave - my $h = $m->{Sh} || 1; # max height of slave - my $x = $bw; - my $y = $bw; - my $start = 0; - # Set size and position of slaves - my $rows = $m->{Rows} = int(($H-2*$bw)/$h) || 1; - my $cols = $m->{Cols} = int(($W-2*$bw)/$w) || 1; - my $need = $m->{Need} = int( (@{$m->{Slaves}}+$cols-1)/$cols ); - $m->{Start} = ($need - $rows) if ($m->{Start} + $rows > $need); - - $m->{Start} = 0 if ($m->{Start} < 0); - my $row = 0; - my @posn = (); - my $s; - foreach $s (@{$m->{Slaves}}) - { - if ($row < $m->{Start}) - { - $s->UnmapWindow; - $x += $w; - if ($x+$w+$bw > $W) - { - $x = $bw; - $row++; - } - } - elsif ($y+$h+$bw > $H) - { - $s->UnmapWindow; - $s->ResizeWindow($w,$h) if ($why & 1); - } - else - { - push(@posn,[$s,$x,$y]); - $x += $w; - if ($x+$w+$bw > $W) - { - $x = $bw; - $y += $h; - $row++; - } - } - $s->ResizeWindow($w,$h) if ($why & 1); - } - $row++ if ($x > $bw); - if (defined $m->{Prev} && $m->{Prev} > $m->{Start}) - { - @posn = reverse(@posn); - } - while (@posn) - { - my $posn = shift(@posn); - my ($s,$x,$y) = (@$posn); - $s->MoveWindow($x,$y); - $s->MapWindow; - } - $m->{Prev} = $m->{Start}; - $m->Callback(-yscrollcommand => $m->{Start}/$need,$row/$need) if $need; -} - -sub QueueLayout -{ - my ($m,$why) = @_; - $m->afterIdle(['Layout',$m]) unless ($m->{LayoutPending}); - $m->{LayoutPending} |= $why; -} - -sub SlaveGeometryRequest -{ - my ($m,$s) = @_; - my $sw = $s->ReqWidth; - my $sh = $s->ReqHeight; - my $sz = 0; - if ($sw > $m->{Sw}) - { - $m->{Sw} = $sw; - $m->QueueLayout(1); - $sz++; - } - if ($sh > $m->{Sh}) - { - $m->{Sh} = $sh; - $m->QueueLayout(1); - $sz++; - } - $m->change_size if ($sz); -} - -sub LostSlave -{ - my ($m,$s) = @_; - @{$m->{Slaves}} = grep($_ != $s,@{$m->{Slaves}}); - $m->QueueLayout(2); -} - -sub Manage -{ - my $m = shift; - my $s; - foreach $s (@_) - { - $m->ManageGeometry($s); - push(@{$m->{Slaves}},$s); - $m->SlaveGeometryRequest($s); - } - $m->QueueLayout(2 | 1); -} - -sub moveto - { - my ($m,$frac) = (@_); - $m->{Start} = int($m->{Need} * $frac); - $m->QueueLayout(4); - } - -sub scroll - { - my ($m,$delta,$type) = @_; - $delta *= $m->{Rows}/2 if ($type eq 'pages'); - $m->{Start} += $delta; - $m->QueueLayout(4); - } - -sub yview { my $w = shift; my $c = shift; $w->$c(@_) } - -sub FocusIn -{ - my ($w) = @_; -# print 'Focus ',$w->PathName,"\n"; -} - -sub ClassInit -{ - my ($class,$mw) = @_; - $mw->bind($class,'<Configure>',['QueueLayout',8]); - $mw->bind($class,'<FocusIn>', 'NoOp'); - $mw->YscrollBind($class); - return $class; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/TixGrid.pm b/Master/tlpkg/tlperl.old/lib/Tk/TixGrid.pm deleted file mode 100644 index 2dd238095f3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/TixGrid.pm +++ /dev/null @@ -1,1597 +0,0 @@ - -# TODO: -# -# o How to get into state 's0' 'b0' so cursor keys start -# working (compare with Tk/Widget XYscrollBind -# o the options -browsecmd and -command callback are not -# not implemented (as in Tix) -# o privateData 'state' used only once (check again Grid.tcl) -# o FloatEntry 'sometimes not activeted immediately on selection -# o check also Leave Binding. Looks like entry does get unpost'ed - -package Tk::TixGrid; - -BEGIN - { - use vars '$DEBUG'; - $DEBUG = (defined($ENV{USER}) and $ENV{USER} eq 'ach') ? 1 : 0; - print STDERR "tixGrid: debug = $DEBUG\n" if $DEBUG; - } - -use strict; -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #9 $ =~ /\D(\d+)\s*$/; - -use Tk qw(Ev $XS_VERSION); -use Tk::Widget; -use Carp; - -# carp "\n".__PACKAGE__.' is deprecated' unless defined($Test::ntest); - -use base 'Tk::Widget'; - -Construct Tk::Widget 'TixGrid'; - -bootstrap Tk::TixGrid; - -sub Tk_cmd { \&Tk::tixGrid } - -sub Tk::Widget::SrclTixGrid { shift->Scrolled('TixGrid' => @_) } - -Tk::Methods qw(anchor bdtype delete entrycget entryconfigure format index - move set size unset xview yview - dragsite dropsite geometryinfo info - nearest see selection sort ); - -use Tk::Submethods - ( - 'anchor' => [ qw(get set) ], - 'delete' => [ qw(column row) ], - 'info' => [ qw(bbox exists anchor) ], - 'move' => [ qw(column row) ], - 'selection' => [ qw(adjust clear includes set) ], - 'size' => [ qw(column row) ], - 'format' => [ qw(grid border) ], - ); - -# edit subcommand is special. It justs invokes tcl code: -# -# edit set x y -> tixGrid:EditCell $w, x, y -# edit apply -> tixGrid:EditApply - -# xxx Create an edit sub? -# sub edit { .... } - -sub editSet - { - die "wrong args. Should be \$w->editSet(x,y)\n" unless @_ == 3; - my ($w, $x, $y) = @_; - $w->EditCell($x, $y); - } - -sub editApply - { - die "wrong args. Should be \$w->editApply()\n" unless @_ == 1; - my ($w) = @_; - $w->EditApply() - } - - -#################################################### -## -## For button 2 scrolling. So TixGrid has 'standard' -## standard scrolling interface -## - -#sub scanMark -# { -# die "wrong # args: \$w->scanMark(x,y)\n" unless @_ == 3; -# my ($w) = @_; -# $w->{__scanMarkXY__} = [ @_[1,2] ]; -# return ""; -# } -# -#sub scanDragto -# { -# die "wrong # args: \$w->scanDragto(x,y)\n" unless @_ == 3; -# my ($w, $x, $y) = @_; -# my ($ox, $oy) = @{ $w->{__scanMarkXY__} }; -# -# #... -# -# return ""; -# } - -### end button 2 scrolling stuff #################### - - -# Grid.tcl -- -# -# This file defines the default bindings for Tix Grid widgets. -# -# Copyright (c) 1996, Expert Interface Technologies -# -# See the file "license.terms" for information on usage and redistribution -# of this file, and for a DISCLAIMER OF ALL WARRANTIES. -# -# Bindings translated to perl/Tk by Achim Bohnet <ach@mpe.mpg.de> - -sub ClassInit - { - my ($class, $mw) = @_; - $class->SUPER::ClassInit($mw); - - $mw->XYscrollBind($class); - - ## - ## Button bindings - ## - - $mw->bind($class, '<ButtonPress-1>', ['Button_1', Ev('x'), Ev('y')]); - $mw->bind($class, '<Shift-ButtonPress-1>', ['Shift_Button_1', Ev('x'), Ev('y')]); - $mw->bind($class, '<Control-ButtonPress-1>',['Control_Button_1', Ev('x'), Ev('y')]); - $mw->bind($class, '<ButtonRelease-1>', ['ButtonRelease_1', Ev('x'), Ev('y')]); - $mw->bind($class, '<Double-ButtonPress-1>', ['Double_1', Ev('x'), Ev('y')]); - $mw->bind($class, '<B1-Motion>','Button_Motion'); - $mw->bind($class, '<Control-B1-Motion>','Control_Button_Motion'); - $mw->bind($class, '<B1-Leave>','Button_Leave'); - $mw->bind($class, '<Double-ButtonPress-1>', ['Double_1', Ev('x'), Ev('y')]); - $mw->bind($class, '<B1-Enter>', ['B1_Enter', Ev('x'), Ev('y')]); - $mw->bind($class, '<Control-B1-Leave>','Control_Button_Leave'); - $mw->bind($class, '<Control-B1-Enter>', ['Control_B1_Enter', Ev('x'), Ev('y')]); - - ## - ## Keyboard bindings - ## - - $mw->bind($class, '<Up>', ['DirKey', 'up' ]); - $mw->bind($class, '<Down>', ['DirKey', 'down' ]); - $mw->bind($class, '<Left>', ['DirKey', 'left' ]); - $mw->bind($class, '<Right>', ['DirKey', 'right' ]); - - $mw->PriorNextBind($class); - - $mw->bind($class, '<Return>', 'Return'); - $mw->bind($class, '<space>', 'Space' ); - - return $class; - } - -#---------------------------------------------------------------------- -# -# -# Mouse bindings -# -# -#---------------------------------------------------------------------- - -sub Button_1 - { - my $w = shift; - - return if $w->cget('-state') eq 'disabled'; - $w->SetFocus; - $w->ChgState(@_, - [ - '0'=>'1', - ] - ); - } - -sub Shift_Button_1 - { - my $w = shift; - - return if $w->cget('-state') eq 'disabled'; - $w->SetFocus; - -# $w->ChgState(@_, -# [ -# ] -# ); - } - -sub Control_Button_1 - { - my $w = shift; - - return if $w->cget('-state') eq 'disabled'; - $w->SetFocus; - - $w->ChgState(@_, - [ - 's0' => 's1', - 'b0' => 'b1', - 'm0' => 'm1', - 'e0' => 'e10', - ] - ); - } - -sub ButtonRelease_1 - { - shift->ChgState(@_, - [ - '2' => '5', - '4' => '3', - ] - ); - } - -sub B1_Motion - { - shift->ChgState(@_, - [ - '2' => '4', - '4' => '4', - ] - ); - } - - -sub Control_B1_Motion - { - shift->ChgState(@_, - [ - 's2' => 's4', - 's4' => 's4', - 'b2' => 'b4', - 'b4' => 'b4', - 'm2' => 'm4', - 'm5' => 'm4', - ] - ); - } - - -sub Double_1 - { - shift->ChgState(@_, - [ - 's0' => 's7', - 'b0' => 'b7', - ] - ); - } - - -sub B1_Leave - { - shift->ChgState(@_, - [ - 's2' => 's5', - 's4' => 's5', - 'b2' => 'b5', - 'b4' => 'b5', - 'm2' => 'm8', - 'm5' => 'm8', - 'e2' => 'e8', - 'e5' => 'e8', - ] - ); - } - - -sub B1_Enter - { - shift->ChgState(@_, - [ - 's5' => 's4', - 's6' => 's4', - 'b5' => 'b4', - 'b6' => 'b4', - 'm8' => 'm4', - 'm9' => 'm4', - 'e8' => 'e4', - 'e9' => 'e4', - ] - ); - } - - -sub Control_B1_Leave - { - shift->ChgState(@_, - [ - 's2' => 's5', - 's4' => 's5', - 'b2' => 'b5', - 'b4' => 'b5', - 'm2' => 'm8', - 'm5' => 'm8', - ] - ); - } - - -sub Control_B1_Enter - { - shift->ChgState(@_, - [ - 's5' => 's4', - 's6' => 's4', - 'b5' => 'b4', - 'b6' => 'b4', - 'm8' => 'm4', - 'm9' => 'm4', - ] - ); - } - - -sub AutoScan - { - shift->ChgState(@_, - [ - 's5' => 's9', - 's6' => 's9', - 'b5' => 'b9', - 'b6' => 'b9', - 'm8' => 'm9', - 'm9' => 'm9', - 'e8' => 'm9', - 'e9' => 'm9', - ] - ); - } - -#---------------------------------------------------------------------- -# -# -# Key bindings -# -# -#---------------------------------------------------------------------- - -sub DirKey - { - my ($w, $key) = @_; - - return if $w->cget('-state') eq 'disabled'; - -print STDERR "$w->DirKey($key)\n" if $DEBUG; - $w->ChgState($key, - [ - 's0' => 's8', - 'b0' => 'b8', - ] - ); - } - - -sub Return - { - my ($w) = @_; - - return if $w->cget('-state') eq 'disabled'; - - $w->ChgState( - [ - 's0' => 's9', - 'b0' => 'b9', - ] - ); - } - - -sub Space - { - my ($w) = @_; - - return if $w->cget('-state') eq 'disabled'; - - $w->ChgState( - [ - 's0' => 's10', - 'b0' => 'b10', - ] - ); - } - - -#---------------------------------------------------------------------- -# -# STATE MANIPULATION -# -# -#---------------------------------------------------------------------- - -sub GetState - { - my ($w) = @_; - my $data = $w->privateData(); - $data->{state} = 0 unless exists $data->{state}; - return $data->{state}; -} - -sub Button_Motion -{ - my $w = shift; - my $Ev = $w->XEvent; - $Tk::x = $Ev->x; - $Tk::y = $Ev->y; - $Tk::X = $Ev->X; - $Tk::Y = $Ev->Y; - $w->B1_Motion($Tk::x, $Tk::y); -} - - -sub Control_Button_Motion -{ - my $w = shift; - my $Ev = $w->XEvent; - $Tk::x = $Ev->x; - $Tk::y = $Ev->y; - $Tk::X = $Ev->X; - $Tk::Y = $Ev->Y; - $w->Control_B1_Motion($Tk::x, $Tk::y); -} - - -sub Button_Leave -{ - my $w = shift; - my $Ev = $w->XEvent; - $Tk::x = $Ev->x; - $Tk::y = $Ev->y; - $Tk::X = $Ev->X; - $Tk::Y = $Ev->Y; - $w->B1_Leave(); -} - - -sub Control_Button_Leave -{ - my $w = shift; - my $Ev = $w->XEvent; - $Tk::x = $Ev->x; - $Tk::y = $Ev->y; - $Tk::X = $Ev->X; - $Tk::Y = $Ev->Y; - $w->Control_B1_Leave(); -} - - -sub SetState - { - my ($w, $state) = @_; - $w->privateData()->{state} = $state; - } - -sub GoState - { - my ($w, $state) = (shift, shift); - print STDERR 'Gostate: ', $w->GetState, " --> $state, " if $DEBUG; - $w->SetState($state); - my $method = "GoState_$state"; - - print STDERR 'args=(', join(',',@_), ')'. - "\t(",$w->cget('-selectmode'). - ',',$w->cget('-selectunit').")\n" if $DEBUG; - - if (0) - { - $@ = ''; - %@ = (); # Workaround to prevent spurious loss of $@ - eval { $w->$method(@_) }; - print STDERR "Error Gostate: '$state': ", $@ if $@; - return undef; - } - - $w->$method(@_); - return undef - } - -## -## ChgState is a fancy case statement -## - -sub ChgState - { - my $w = shift; - my $map = pop; - print STDERR 'ChgState(', join(',',@_,'['), join(',',@$map,),']) ' if $DEBUG; - my $state = $w->GetState; - - my ($match, $to); - while (@$map) - { - $match = shift @$map; - $to = shift @$map; - if ($match eq $state) - { - print STDERR "$state --> $to \n" if $DEBUG; - $w->GoState($to, @_); - return; - } - } - print STDERR "*no* chg for $state\n" if $DEBUG; - } - - -#---------------------------------------------------------------------- -# SELECTION ROUTINES -#---------------------------------------------------------------------- - -#proc tixGrid:SelectSingle {w ent} { -# $w selection set [lindex $ent 0] [lindex $ent 1] -# tixGrid:CallBrowseCmd $w $ent -#} - -sub SelectSingle - { - my ($w, $n1, $n2) = @_; - $w->selection('set', $n1, $n2); - $w->Callback('-browsecmd' => $n1, $n2); - } - -#---------------------------------------------------------------------- -# SINGLE SELECTION -#---------------------------------------------------------------------- - -sub GoState_0 - { - my ($w) = @_; - my $list = $w->privateData()->{list}; - return unless defined $list; - - foreach my $cmd (@$list) - { - # XXX should do more something like $w->Callback'('__pending_cmds__'); - eval $cmd; # XXX why in tcl in global context (binding?) - } - undef(@$list); # XXX should really delete? Maybe on needed in TCL - } - -# XXXX how to translate global context -# what does unset -#proc tixGrid:GoState-0 {w} { -# set list $w:_list -# global $list -# -# if [info exists $list] { -# foreach cmd [set $list] { -# uplevel #0 $cmd -# } -# if [info exists $list] { -# unset $list -# } -# } -#} - -sub GoState_1 - { - my ($w, $x, $y) = @_; - - my @ent = $w->mynearest($x,$y); - if (@ent) - { - $w->SetAnchor(@ent); - } - $w->CheckEdit; - $w->selection('clear', 0, 0, 'max', 'max'); - - if ($w->cget('-selectmode') ne 'single') - { - $w->SelectSingle(@ent); - } - $w->GoState(2); - } - -sub GoState_2 - { - my ($w) = @_; - } - -sub GoState_3 - { - my ($w, $x, $y) = @_; - - my @ent = $w->mynearest($x,$y); - if (@ent) - { - $w->SelectSingle(@ent); - } - $w->GoState(0); - - } - -sub GoState_4 - { - my ($w, $x, $y) = @_; - - my (@ent) = $w->mynearest($x,$y); - my $mode = $w->cget('-selectmode'); - - if ($mode eq 'single') - { - $w->SetAnchor(@ent); - } - elsif ($mode eq 'browse') - { - $w->SetAnchor(@ent); - $w->selection('clear', 0, 0, 'max', 'max'); - $w->SelectSingle(@ent); - } - elsif ($mode eq 'multiple' || - $mode eq 'extended') - { - my (@anchor) = $w->anchor('get'); - $w->selection('adjust', @anchor[0,1], @ent[0,1]); - } - } - -sub GoState_5 - { - my ($w, $x, $y) = @_; - - my @ent = $w->mynearest($x,$y); - if (@ent) - { - $w->SelectSingle(@ent); - $w->SetEdit(@ent); - } - $w->GoState(0); - - } - -############################################## -# BUG xxx -# return scalar instead of errors - -sub mynearest { shift->split_s2a('nearest', @_); } -sub myanchorGet { shift->split_s2a('anchor', 'get', @_); } - -sub split_s2a - { - my $w = shift; - my $method = shift; - my @ent = $w->$method(@_); - if (@ent == 1) - { -my $tmp = $ent[0]; - @ent = split(/ /, $ent[0]) if @ent == 1; -print STDERR join('|',"$method splitted '$tmp' =>",@ent,"\n") if $DEBUG; - } - else - { -#print STDERR join("|","$method splitted is okay :",@ent,"\n") if $DEBUG; - } - return @ent; - } - -############################################## - - -sub GoState_s5 - { - shift->StartScan(); - } - - -sub GoState_s6 - { - shift->DoScan(); - } - - -sub GoState_s7 - { - my ($w, $x, $y) = @_; - - my @ent = $w->mynearest($x, $y); - if (@ent) - { - $w->selection('clear'); - $w->selection('set', @ent); - $w->Callback('-command' => @ent); - } - $w->GoState('s0'); - } - - -sub GoState_s8 - { - my ($w, $key) = @_; - - ## BUGS .... - ## - anchor is bad, only bbox, exists8 - ## - looks like anchor is 1-dim: set anchor 0 - ## - method see unknown (even when defined with Tk::Method) - - my (@anchor) = $w->info('anchor'); - if (@anchor) - { - @anchor = (); - } - else - { - @anchor = $w->info($key, @anchor); - } - - $w->anchor('set', @anchor); - $w->see(@anchor); - - $w->GoState('s0'); - } - -#proc tixGrid:GoState-s8 {w key} { -# set anchor [$w info anchor] -# -# if {$anchor == ""} { -# set anchor 0 -# } else { -# set anchor [$w info $key $anchor] -# } -# -# $w anchor set $anchor -# $w see $anchor -# tixGrid:GoState s0 $w -#} - - -sub GoState_s9 - { - my ($w, $key) = @_; - -#print STDERR "GoState_s9 is not implemented\n"; - - my (@anchor) = $w->info('anchor'); - unless (@anchor) - { - @anchor = (); - $w->anchor('set', @anchor); - $w->see(@anchor); - } - - unless ($w->info('anchor')) - { - # ! may not have any elements - # - $w->Callback('-command' => $w->info('anchor')); - $w->selection('clear'); - $w->selection('set', @anchor); - } - - $w->GoState('s0'); - } - - -sub GoState_s10 - { - my ($w, $key) = @_; - - my (@anchor) = $w->info('anchor'); - if (@anchor) - { - @anchor = (); - $w->anchor('set', @anchor); - $w->see(@anchor); - } - - unless ($w->info('anchor')) - { - # ! may not have any elements - # - $w->Callback('-browsecmd' => $w->info('anchor')); - $w->selection('clear'); - $w->selection('set', @anchor); - } - - $w->GoState('s0'); - } - - -#---------------------------------------------------------------------- -# BROWSE SELECTION -#---------------------------------------------------------------------- - -sub GoState_b0 - { - my ($w) = @_; - } - -sub GoState_b1 - { - my ($w, $x, $y) = @_; - - my (@ent) = $w->mynearest($x, $y); - if (@ent) - { - $w->anchor('set', @ent); - $w->selection('clear'); - $w->selection('set', @ent); - $w->Callback('-browsecmd' => @ent); - } - - $w->GoState('b2'); - } - -sub GoState_b2 - { - my ($w) = @_; - } - -sub GoState_b3 - { - my ($w) = @_; - - my (@ent) = $w->info('anchor'); - if (@ent) - { - $w->selection('clear'); - $w->selection('set', @ent); - $w->selection('set', @ent); - $w->Callback('-browsecmd' => @ent); - } - - $w->GoState('b0'); - } - - -sub GoState_b4 - { - my ($w, $x, $y) = @_; - - my (@ent) = $w->mynearest($x, $y); - if (@ent) - { - $w->anchor('set', @ent); - $w->selection('clear'); - $w->selection('set', @ent); - $w->Callback('-browsecmd' => @ent); - } - } - - -sub GoState_b5 { shift->StartScan(); } - - -sub GoState_b6 { shift->DoScan(); } - - -sub GoState_b7 - { - my ($w, $x, $y) = @_; - - my (@ent) = $w->mynearest($x, $y); - if (@ent) - { - $w->selection('clear'); - $w->selection('set', @ent); - $w->Callback('-command' => @ent); - } - $w->GoState('b0'); - } - - -sub GoState_b8 - { - my ($w, $key) = @_; - - my (@anchor) = $w->info('anchor'); - if (@anchor) - { - @anchor = $w->info('key', @anchor); - } - else - { - @anchor = (0,0); # ????? - } - - $w->anchor('set', @anchor); - $w->selection('clear'); - $w->selection('set', @anchor); - $w->see(@anchor); - - $w->Callback('-browsecmd' => @anchor); - $w->GoState('b0'); - } - - -sub GoState_b9 - { - my ($w) = @_; - - my (@anchor) = $w->info('anchor'); - unless (@anchor) - { - @anchor = (0,0); - $w->anchor('set', @anchor); - $w->see(@anchor); - } - - if ($w->info('anchor')) - { - # ! may not have any elements - # - $w->Callback('-command' => $w->info('anchor')); - $w->selection('clear'); - $w->selection('set', @anchor); - } - - $w->GoState('b0'); - } - - -sub GoState_b10 - { - my ($w) = @_; - - my (@anchor) = $w->info('anchor'); - unless (@anchor) - { - @anchor = (0,0); - $w->anchor('set', @anchor); - $w->see(@anchor); - } - - if ($w->info('anchor')) - { - # ! may not have any elements - # - $w->Callback('-browsecmd' => $w->info('anchor')); - $w->selection('clear'); - $w->selection('set', @anchor); - } - - $w->GoState('b0'); - } - -#---------------------------------------------------------------------- -# MULTIPLE SELECTION -#---------------------------------------------------------------------- - - -sub GoState_m0 - { - my ($w) = @_; - } - -sub GoState_m1 - { - my ($w, $x, $y) = @_; - - my (@ent) = $w->mynearest($x,$y); - if (@ent) - { - $w->anchor('set', @ent); - $w->selection('clear'); - $w->selection('set', @ent); - $w->Callback('-browsecmd' => @ent); - } - - $w->GoState('m2'); - } - -sub GoState_m2 - { - my ($w) = @_; - } - -sub GoState_m3 - { - my ($w) = @_; - - my (@ent) = $w->info('anchor'); - if (@ent) - { - $w->Callback('-browsecmd' => @ent); - } - - $w->GoState('m0'); - } - - -sub GoState_m4 - { - my ($w, $x, $y) = @_; - - my (@from) = $w->info('anchor'); - my (@to) = $w->mynearest($x, $y); - if (@to) - { - $w->selection('clear'); - $w->selection('set', @from, @to); - $w->Callback('-browsecmd' => @to); - } - $w->GoState('m5'); - } - -sub GoState_m5 - { - my ($w) = @_; - } - -sub GoState_m6 - { - my ($w, $x, $y) = @_; - - my (@ent) = $w->mynearest($x, $y); - if (@ent) - { - $w->Callback('-browsecmd' => @ent); - } - $w->GoState('m0'); - } - -sub GoState_m7 - { - my ($w, $x, $y) = @_; - - my (@from) = $w->info('anchor'); - my (@to) = $w->mynearest($x, $y); - unless (@from) - { - @from = @to; - $w->anchor('set', @from); - } - if (@to) - { - $w->selection('clear'); - $w->selection('set', @from, @to); - $w->Callback('-browsecmd' => @to); - } - $w->GoState('m5'); - } - - -sub GoState_m8 { shift->StartScan() } - - -sub GoState_m9 { shift->DoScan() } - - -sub GoState_xm7 - { - my ($w, $x, $y) = @_; - - my (@ent) = $w->mynearest($x, $y); - if (@ent) - { - $w->selection('clear'); - $w->selection('set', @ent); - $w->Callback('-browsecmd' => @ent); - } - $w->GoState('m0'); - } - -#---------------------------------------------------------------------- -# EXTENDED SELECTION -#---------------------------------------------------------------------- - -sub GoState_e0 - { - my ($w) = @_; - } - -sub GoState_e1 - { - my ($w, $x, $y) = @_; - my (@ent) = $w->mynearest($x, $y); - if (@ent) - { - $w->anchor('set', @ent); - $w->selection('clear'); - $w->selection('set', @ent); - $w->Callback('-browsecmd' => @ent); - } - $w->GoState('e2'); - } - - -sub GoState_e2 - { - my ($w) = @_; - } - -sub GoState_e3 - { - my ($w) = @_; - - my (@ent) = $w->info('anchor'); - if (@ent) - { - $w->Callback('-browsecmd' => @ent); - } - $w->GoState('e0'); - } - -sub GoState_e4 - { - my ($w, $x, $y) = @_; - - my (@from) = $w->info('anchor'); - my (@to) = $w->mynearest($x, $y); - if (@to) - { - $w->selection('clear'); - $w->selection('set', @from, @to); - $w->Callback('-browsecmd' => @to); - } - $w->GoState('e5'); - } - -sub GoState_e5 - { - my ($w) = @_; - } - -sub GoState_e6 - { - my ($w, $x, $y) = @_; - - my (@ent) = $w->mynearest($x, $y); - if (@ent) - { - $w->Callback('-browsecmd' => @ent); - } - $w->GoState('e0'); - } - -sub GoState_e7 - { - my ($w, $x, $y) = @_; - - my (@from) = $w->info('anchor'); - my (@to) = $w->mynearest($x, $y); - unless (@from) - { - @from = @to; - $w->anchor('set', @from); - } - if (@to) - { - $w->selection('clear'); - $w->selection('set', @from, @to); - $w->Callback('-browsecmd' => @to); - } - $w->GoState('e5'); - } - -sub GoState_e8 { shift->StartScan(); } - -sub GoState_e9 { shift->DoScan(); } - -sub GoState_e10 - { - my ($w, $x, $y) = @_; - - my (@ent) = $w->mynearest($x, $y); - if (@ent) - { - if ($w->info('anchor')) - { - $w->anchor('set', @ent); - } - if ($w->selection('includes', @ent)) - { - $w->selection('clear', @ent); - } - else - { - $w->selection('set', @ent); - } - $w->Callback('-browsecmd' => @ent); - } - $w->GoState('e2'); - } - -sub GoState_xe7 - { - my ($w, $x, $y) = @_; - - my (@ent) = $w->mynearest($x, $y); - if (@ent) - { - $w->selection('clear'); - $w->selection('set', @ent); - $w->Callback('-command' => @ent); - } - $w->GoState('e0'); - } - - -#---------------------------------------------------------------------- -# HODGE PODGE -#---------------------------------------------------------------------- - -sub GoState_12 - { - my ($w, $x, $y) = @_; - - $w->CancelRepeat; # xxx will not work - $w->GoState(5, $x, $y); - } -#proc tixGrid:GoState-12 {w x y} { -# tkCancelRepeat -# tixGrid:GoState 5 $w $x $y -#} - -sub GoState_13 - { - # FIX: a) $ent or @ent, b) 13 is never called!!? same in Grid.tcl - my ($w, @ent, @oldEnt) = @_; - - my $data = $w->MainWindow->privateData('Tix'); - $data->{indicator} = \@ent; - $data->{oldEntry} = \@oldEnt; - $w->IndicatorCmd('<Arm>', @ent); - } -# set tkPriv(tix,oldEnt) $oldEnt -# tixGrid:IndicatorCmd $w <Arm> $ent -#} - -sub GoState_14 - { - my ($w, $x, $y) = @_; - - my $data = $w->MainWindow->privateData('Tix'); - if ($w->InsideArmedIndicator($x, $y)) - { - $w->anchor('set', @{ $data->{indicator} }); - $w->selection('clear'); - $w->selection('set', @{ $data->{indicator} }); - $w->IndicatorCmd('<Activate>', @{ $data->{indicator} }); - } - else - { - $w->IndicatorCmd('<Disarm>', @{ $data->{indicator} }); - } - delete($data->{indicator}); - $w->GoState(0); - } - -sub GoState_16 - { - my ($w, @ent) = @_; - - return unless (@ent); - if ($w->cget('-selectmode') ne 'single') - { - $w->Select(@ent); - $w->Browse(@ent); - } - } - -sub GoState_18 - { - my ($w) = @_; - - $w->CancelRepeat; ## xxx - $w->GoState(6, $Tk::x, $Tk::y); - } - -sub GoState_20 - { - my ($w, $x, $y) = @_; - - my $data = $w->MainWindow->privateData('Tix'); - if ($w->InsideArmedIndicator($x, $y)) - { - $w->IndicatorCmd('<Arm>', $data->{'indicator'}); - } - else - { - $w->GoState(21, $x, $y); - } - } - -sub GoState_21 - { - my ($w, $x, $y) = @_; - - my $data = $w->MainWindow->privateData('Tix'); - unless ($w->InsideArmedIndicator($x, $y)) - { - $w->IndicatorCmd('<Disarm>', $data->{'indicator'}); - } - else - { - $w->GoState(20, $x, $y); - } - } - -sub GoState_22 - { - my ($w) = @_; - my $data = $w->MainWindow->privateData('Tix'); - if (@{ $data->{oldEntry} }) - { - $w->anchor('set', @{ $data->{oldEntry} }); - } - else - { - $w->anchor('clear'); - } - $w->GoState(0); - } - - -#---------------------------------------------------------------------- -# callback actions -#---------------------------------------------------------------------- - -sub SetAnchor - { - my ($w, @ent) = @_; - - if (@ent) - { - $w->anchor('set', @ent); -# $w->see(@ent); - } - } - -# xxx check @ent of @$ent -sub Select - { - my ($w, @ent) = @_; - $w->selection('clear'); - $w->selection('set', @ent) - } - -# xxx check new After handling -sub StartScan - { - my ($w) = @_; - $Tk::afterId = $w->after(50, [AutoScan, $w]); - } - -sub DoScan - { - my ($w) = @_; - my $x = $Tk::x; - my $y = $Tk::y; - my $X = $Tk::X; - my $Y = $Tk::Y; - - my $out = 0; - if ($y >= $w->height) - { - $w->yview('scroll', 1, 'units'); - $out = 1; - } - if ($y < 0) - { - $w->yview('scroll', -1, 'units'); - $out = 1; - } - if ($x >= $w->width) - { - $w->xview('scroll', 2, 'units'); - $out = 1; - } - if ($x < 0) - { - $w->xview('scroll', -2, 'units'); - $out = 1; - } - if ($out) - { - $Tk::afterId = $w->after(50, ['AutoScan', $w]); - } - } - - -#proc tixGrid:CallBrowseCmd {w ent} { -# return -# -# set browsecmd [$w cget -browsecmd] -# if {$browsecmd != ""} { -# set bind(specs) {%V} -# set bind(%V) $ent -# -# tixEvalCmdBinding $w $browsecmd bind $ent -# } -#} - -#proc tixGrid:CallCommand {w ent} { -# set command [$w cget -command] -# if {$command != ""} { -# set bind(specs) {%V} -# set bind(%V) $ent -# -# tixEvalCmdBinding $w $command bind $ent -# } -#} - -# tixGrid:EditCell -- -# -# This command is called when "$w edit set $x $y" is called. It causes -# an SetEdit call when the grid's state is 0. -# - -sub EditCell - { - my ($w, $x, $y) = @_; - my $list = $w->privateData()->{'list'}; - if ($w->GetState == 0) - { - $w->SetEdit($x, $y); # xxx really correct ? once 2, once 4 args? - } - else - { - push(@$list, [ $w, 'SetEdit', $x, $y]); - } - } -#proc tixGrid:EditCell {w x y} { -# set list $w:_list -# global $list -# -# case [tixGrid:GetState $w] { -# {0} { -# tixGrid:SetEdit $w [list $x $y] -# } -# default { -# lappend $list [list tixGrid:SetEdit $w [list $x $y]] -# } -# } -#} - - -# tixGrid:EditApply -- -# -# This command is called when "$w edit apply $x $y" is called. It causes -# an CheckEdit call when the grid's state is 0. -# - -sub EditApply - { - my ($w) = @_; - my $list = $w->privateData()->{'list'}; - if ($w->GetState eq 0) - { - $w->CheckEdit; # xxx really correct ? once 2, once 4 args? - } - else - { - push(@$list, $w->CheckEdit); - } - } -#proc tixGrid:EditApply {w} { -# set list $w:_list -# global $list -# -# case [tixGrid:GetState $w] { -# {0} { -# tixGrid:CheckEdit $w -# } -# default { -# lappend $list [list tixGrid:CheckEdit $w] -# } -# } -#} - -# tixGrid:CheckEdit -- -# -# This procedure is called when the user sets the focus on a cell. -# If another cell is being edited, apply the changes of that cell. -# - -sub CheckEdit - { - my ($w) = @_; - my $edit = $w->privateData->{editentry}; - if (Tk::Exists($edit)) - { - # If it -command is not empty, it is being used for another cell. - # Invoke it so that the other cell can be updated. - # - if (defined $edit->cget('-command')) - { - $edit->invoke; # xxx no args?? - } - } - } - -sub SetFocus - { - my ($w) = @_; - if ($w->cget('-takefocus')) - { -$w->focus; -# # xxx translation of if ![string match $w.* [focus -displayof $w]] { -# my $hasfocus = $w->focus(-displayof => $w)->pathname; -# my $pathname = $w->pathname; -# if ($hasfocus =~ /\Q$pathname\E.*/) -# { -# $w->focus -# } - } - } - - -# tixGrid:SetEdit -- -# -# Puts a floatentry on top of an editable entry. -# - -sub SetEdit - { - my ($w, $px, $py) = @_; - - $w->CheckEdit; - - my $efc = $w->cget('-editnotifycmd'); - return unless ( defined($efc) && length($efc) ); - - unless ($w->Callback('-editnotifycmd' => $px, $py)) - { - print STDERR "editnotifycmd not defined or returned false\n"; - return; - } - - my $oldvalue; - if ($w->info('exists', $px, $py)) - { - # if entry doesn't support -text option. Can't edit it. - # - # If the application wants to force editing of an entry, it could - # delete or replace the entry in the editnotifyCmd procedure. - # - Tk::catch { $oldvalue = $w->entrycget($px, $py, '-text'); }; - if ($@) - { - return; - } - } - else - { - $oldvalue = ''; - } - - my @bbox = $w->info('bbox', $px, $py); - - my $edit = $w->privateData()->{__EDIT__}; - unless (Tk::Exists($edit)) - { - require Tk::FloatEntry; - $edit = $w->FloatEntry(); - $w->privateData()->{__EDIT__} = $edit; - } - $edit->configure(-command=>[\&DoneEdit, $w, $px, $py]); - $edit->post(@bbox); - $edit->configure(-value=>$oldvalue); -} - - -sub DoneEdit - { - my ($w, $x, $y, @args) = @_; - - my $edit = $w->privateData()->{__EDIT__}; - $edit->configure(-command=>undef); - $edit->unpost; - - # FIX xxx - # set value [tixEvent value] - my $value = $edit->get; - if ($w->info('exists', $x, $y)) - { - Tk::catch { $w->entryconfigure($x, $y, -text=>$value) }; - if ($@) - { - return - } - } - elsif ( length($value) ) - { - # This needs to be catch'ed because the default itemtype may - # not support the -text option - # - Tk::catch { $w->set($x,$y,-text $value); }; - if ($@) - { - return; - } - } - else - { - return; - } - $w->Callback('-editdonecmd' => $x, $y); - } - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Tk.xbm b/Master/tlpkg/tlperl.old/lib/Tk/Tk.xbm deleted file mode 100644 index 136d4793037..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/Tk.xpm b/Master/tlpkg/tlperl.old/lib/Tk/Tk.xpm deleted file mode 100644 index 7880a637f39..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/TkXSUB.def b/Master/tlpkg/tlperl.old/lib/Tk/TkXSUB.def deleted file mode 100644 index 8f60974226e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/TkXSUB.def +++ /dev/null @@ -1,62 +0,0 @@ -MkXSUB("Tk::bind", XS_Tk_bind, XStoBind, Tk_BindObjCmd) -MkXSUB("Tk::pack", XS_Tk_pack, XStoAfterSub, Tk_PackObjCmd) -MkXSUB("Tk::grid", XS_Tk_grid, XStoGrid, Tk_GridObjCmd) -MkXSUB("Tk::place", XS_Tk_place, XStoAfterSub, Tk_PlaceObjCmd) -MkXSUB("Tk::form", XS_Tk_form, XStoAfterSub, Tix_FormCmd) -MkXSUB("Tk::itemstyle", XS_Tk_itemstyle, XStoTclCmd, Tix_ItemStyleCmd) -MkXSUB("Tk::winfo", XS_Tk_winfo, XStoSubCmd, Tk_WinfoObjCmd) -MkXSUB("Tk::font", XS_Tk_font, XStoFont, Tk_FontObjCmd) -MkXSUB("Tk::wm", XS_Tk_wm, XStoAfterSub, Tk_WmObjCmd) -MkXSUB("Tk::grab", XS_Tk_grab, XStoSubCmd, Tk_GrabObjCmd) -MkXSUB("Tk::focus", XS_Tk_focus, XStoSubCmd, Tk_FocusObjCmd) -MkXSUB("Tk::event", XS_Tk_event, XStoEvent, Tk_EventObjCmd) -MkXSUB("Tk::property", XS_Tk_property, XStoSubCmd, Tk_PropertyCmd) -MkXSUB("Tk::clipboard", XS_Tk_clipboard, XStoDisplayof, Tk_ClipboardObjCmd) -MkXSUB("Tk::bell", XS_Tk_bell, XStoDisplayof, Tk_BellObjCmd) -MkXSUB("Tk::bindtags", XS_Tk_bindtags, XStoTk, Tk_BindtagsObjCmd) -MkXSUB("Tk::destroy", XS_Tk_destroy, XStoTk, Tk_DestroyObjCmd) -MkXSUB("Tk::raise", XS_Tk_raise, XStoTk, Tk_RaiseObjCmd) -MkXSUB("Tk::lower", XS_Tk_lower, XStoTk, Tk_LowerObjCmd) -MkXSUB("Tk::option", XS_Tk_option, XStoOption, Tk_OptionObjCmd) -MkXSUB("Tk::image", XS_Tk_image, XStoImage, Tk_ImageObjCmd) -MkXSUB("Tk::selection", XS_Tk_selection, XStoTk, Tk_SelectionObjCmd) - -#if defined(__WIN32__) || defined(MAC_TCL) -MkXSUB("Tk::tk_chooseColor", XS_Tk_tk_chooseColor, XStoTk, Tk_ChooseColorObjCmd) -MkXSUB("Tk::tk_chooseDirectory", XS_Tk_tk_chooseDirectory, XStoTk, Tk_ChooseDirectoryObjCmd) -MkXSUB("Tk::tk_getOpenFile", XS_Tk_tk_getOpenFile, XStoTk, Tk_GetOpenFileObjCmd) -MkXSUB("Tk::tk_getSaveFile", XS_Tk_tk_getSaveFile, XStoTk, Tk_GetSaveFileObjCmd) -#endif -#if defined(__WIN32__) -MkXSUB("Tk::tk_messageBox", XS_Tk_tk_messageBox, XStoTk, Tk_MessageBoxObjCmd) -#endif - -MkXSUB("Tk::tk", XS_Tk_tk, XStoTclCmd, Tk_TkObjCmd) - -#if 0 -MkXSUB("Tk::exit", XS_Tk_exit, XStoNoWindow, Tcl_ExitCmd) -MkXSUB("Tk::fileevent", XS_Tk_fileevent, XStoNoWindow, Tcl_FileeventCmd) -#endif -MkXSUB("Tk::after", XS_Tk_after, XStoNoWindow, Tcl_AfterObjCmd) -#ifndef WIN32 -MkXSUB("Tk::send", XS_Tk_send, XStoTclCmd, Tk_SendCmd) -#endif - -MkXSUB("Tk::button", XS_Tk_button, XStoTclCmdNull, Tk_ButtonObjCmd) -MkXSUB("Tk::checkbutton", XS_Tk_checkbutton, XStoTclCmdNull, Tk_CheckbuttonObjCmd) -MkXSUB("Tk::label", XS_Tk_label, XStoTclCmdNull, Tk_LabelObjCmd) -MkXSUB("Tk::radiobutton", XS_Tk_radiobutton, XStoTclCmdNull, Tk_RadiobuttonObjCmd) -MkXSUB("Tk::_menu", XS_Tk__menu, XStoTclCmdNull, 0) - -MkXSUB("Tk::message", XS_Tk_message, XStoTclCmd, Tk_MessageObjCmd) -MkXSUB("Tk::frame", XS_Tk_frame, XStoTclCmd, Tk_FrameObjCmd) -MkXSUB("Tk::labelframe", XS_Tk_labelframe, XStoTclCmd, Tk_LabelframeObjCmd) -MkXSUB("Tk::panedwindow", XS_Tk_panedwindow, XStoTclCmd, Tk_PanedWindowObjCmd) -MkXSUB("Tk::toplevel", XS_Tk_toplevel, XStoTclCmd, Tk_ToplevelObjCmd) -MkXSUB("Tk::update", XS_Tk_update, XStoTclCmd, Tk_UpdateObjCmd) -MkXSUB("Tk::tkwait", XS_Tk_tkwait, XStoTclCmd, Tk_TkwaitObjCmd) -MkXSUB("Tk::configure", XS_Tk_configure, XStoWidget, newSVpv("configure",0)) -MkXSUB("Tk::cget", XS_Tk_cget, XStoWidget, newSVpv("cget",0)) - - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Toplevel.pm b/Master/tlpkg/tlperl.old/lib/Tk/Toplevel.pm deleted file mode 100644 index 7bcd156d475..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Toplevel.pm +++ /dev/null @@ -1,211 +0,0 @@ -# Copyright (c) 1995-2003 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 = '4.006'; # $Id: //depot/Tkutf8/Tk/Toplevel.pm#6 $ - -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/tlpkg/tlperl.old/lib/Tk/Trace.pm b/Master/tlpkg/tlperl.old/lib/Tk/Trace.pm deleted file mode 100644 index 1e38e79a065..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Trace.pm +++ /dev/null @@ -1,405 +0,0 @@ -package Tk::Trace; - -use vars qw($VERSION); -$VERSION = sprintf '4.%03d', q$Revision: #7 $ =~ /\D(\d+)\s*$/; - -use Carp; -use Tie::Watch; -use strict; - -# The %TRACE hash is indexed by stringified variable reference. Each hash -# bucket contains an array reference having two elements: -# -# ->[0] = a reference to the variable's Tie::Watch object -# ->[1] = a hash reference with these keys: -fetch, -store, -destroy -# ->{key} = [ active flag, [ callback list ] ] -# where each callback is a normalized callback array reference -# -# Thus, each trace type (r w u ) may have multiple traces. - -my %TRACE; # watchpoints indexed by stringified ref - -my %OP = ( # trace to Tie::Watch operation map - r => '-fetch', - w => '-store', - u => '-destroy', -); - -sub fetch { - - # fetch() wraps the user's callback with necessary tie() bookkeeping - # and invokes the callback with the proper arguments. It expects: - # - # $_[0] = Tie::Watch object - # $_[1] = undef for a scalar, an index/key for an array/hash - # - # The user's callback is passed these arguments: - # - # $_[0] = undef for a scalar, index/key for array/hash - # $_[1] = current value - # $_[2] = operation 'r' - # $_[3 .. $#_] = optional user callback arguments - # - # The user callback returns the final value to assign the variable. - - my $self = shift; # Tie::Watch object - my $val = $self->Fetch(@_); # get variable's current value - my $aref = $self->Args('-fetch'); # argument reference - my $call = $TRACE{$aref->[0]}->[1]->{-fetch}; # active flag/callbacks - return $val unless $call->[0]; # if fetch inactive - - my $final_val; - foreach my $aref (reverse @$call[ 1 .. $#{@$call} ] ) { - my ( @args_copy ) = @$aref; - my $sub = shift @args_copy; # user's callback - unshift @_, undef if scalar @_ == 0; # undef "index" for a scalar - my @args = @_; # save for post-callback work - $args[1] = &$sub(@_, $val, 'r', @args_copy); # invoke user callback - shift @args unless defined $args[0]; # drop scalar "index" - $final_val = $self->Store(@args); # update variable's value - } - $final_val; - -} # end fetch - -sub store { - - # store() wraps the user's callback with necessary tie() bookkeeping - # and invokes the callback with the proper arguments. It expects: - # - # $_[0] = Tie::Watch object - # $_[1] = new value for a scalar, index/key for an array/hash - # $_[2] = undef for a scalar, new value for an array/hash - # - # The user's callback is passed these arguments: - # - # $_[0] = undef for a scalar, index/key for array/hash - # $_[1] = new value - # $_[2] = operation 'w' - # $_[3 .. $#_] = optional user callback arguments - # - # The user callback returns the final value to assign the variable. - - my $self = shift; # Tie::Watch object - my $val = $self->Store(@_); # store variable's new value - my $aref = $self->Args('-store'); # argument reference - my $call = $TRACE{$aref->[0]}->[1]->{-store}; # active flag/callbacks - return $val unless $call->[0]; # if store inactive - - foreach my $aref ( reverse @$call[ 1 .. $#{@$call} ] ) { - my ( @args_copy ) = @$aref; - my $sub = shift @args_copy; # user's callback - unshift @_, undef if scalar @_ == 1; # undef "index" for a scalar - my @args = @_; # save for post-callback work - $args[1] = &$sub(@_, 'w', @args_copy); # invoke user callback - shift @args unless defined $args[0]; # drop scalar "index" - $self->Store(@args); # update variable's value - } - -} # end store - -sub destroy { - - # destroy() wraps the user's callback with necessary tie() bookkeeping - # and invokes the callback with the proper arguments. It expects: - # - # $_[0] = Tie::Watch object - # - # The user's callback is passed these arguments: - # - # $_[0] = undef for a scalar, index/key for array/hash - # $_[1] = final value - # $_[2] = operation 'u' - # $_[3 .. $#_] = optional user callback arguments - - my $self = shift; # Tie::Watch object - my $val = $self->Fetch(@_); # variable's final value - my $aref = $self->Args('-destroy'); # argument reference - my $call = $TRACE{$aref->[0]}->[1]->{-destroy}; # active flag/callbacks - return $val unless $call->[0]; # if destroy inactive - - foreach my $aref ( reverse @$call[ 1 .. $#{@$call} ] ) { - my ( @args_copy ) = @$aref; - my $sub = shift @args_copy; # user's callback - my $val = $self->Fetch(@_); # get final value - &$sub(undef, $val, 'u', @args_copy); # invoke user callback - $self->Destroy(@_); # destroy variable - } - -} # end destroy - -sub Tk::Widget::traceVariable { - - my( $parent, $vref, $op, $callback ) = @_; - - { - $^W = 0; - croak "Illegal parent '$parent', not a widget" unless ref $parent; - croak "Illegal variable '$vref', not a reference" unless ref $vref; - croak "Illegal trace operation '$op'" unless $op; - croak "Illegal trace operation '$op'" if $op =~ /[^rwu]/; - croak "Illegal callback ($callback)" unless $callback; - } - - # Need to add our internal callback to user's callback arg list - # so we can call ours first, followed by the user's callback and - # any user arguments. Trace callbacks are activated as requied. - - my $trace = $TRACE{$vref}; - if ( not defined $trace ) { - my $watch = Tie::Watch->new( - -variable => $vref, - -fetch => [ \&fetch, $vref ], - -store => [ \&store, $vref ], - -destroy => [ \&destroy, $vref ], - ); - $trace = $TRACE{$vref} = - [$watch, - { - -fetch => [ 0 ], - -store => [ 0 ], - -destroy => [ 0 ], - } - ]; - } - - $callback = [ $callback ] if ref $callback eq 'CODE'; - - foreach my $o (split '', $op) { - push @{$trace->[1]->{$OP{$o}}}, $callback; - $trace->[1]->{$OP{$o}}->[0] = 1; # activate - } - - return $trace; # for peeking - -} # end traceVariable - -sub Tk::Widget::traceVdelete { - - my ( $parent, $vref, $op_not_honored, $callabck_not_honored ) = @_; - - if ( defined $TRACE{$vref}->[0] ) { - $$vref = $TRACE{$vref}->[0]->Fetch; - $TRACE{$vref}->[0]->Unwatch; - delete $TRACE{$vref}; - } - -} # end traceVdelete - -sub Tk::Widget::traceVinfo { - - my ( $parent, $vref ) = @_; - - return ( defined $TRACE{$vref}->[0] ) ? $TRACE{$vref}->[0]->Info : undef; - -} # end traceVinfo - -=head1 NAME - -Tk::Trace - emulate Tcl/Tk B<trace> functions. - -=head1 SYNOPSIS - - use Tk::Trace - - $mw->traceVariable(\$v, 'wru' => [\&update_meter, $scale]); - %vinfo = $mw->traceVinfo(\$v); - print "Trace info :\n ", join("\n ", @{$vinfo{-legible}}), "\n"; - $mw->traceVdelete(\$v); - -=head1 DESCRIPTION - -This class module emulates the Tcl/Tk B<trace> family of commands by -binding subroutines of your devising to Perl variables using simple -B<Tie::Watch> features. - -Callback format is patterned after the Perl/Tk scheme: supply either a -code reference, or, supply an array reference and pass the callback -code reference in the first element of the array, followed by callback -arguments. - -User callbacks are passed these arguments: - - $_[0] = undef for a scalar, index/key for array/hash - $_[1] = variable's current (read), new (write), final (undef) value - $_[2] = operation (r, w, or u) - $_[3 .. $#_] = optional user callback arguments - -As a Trace user, you have an important responsibility when writing your -callback, since you control the final value assigned to the variable. -A typical callback might look like: - - sub callback { - my($index, $value, $op, @args) = @_; - return if $op eq 'u'; - # .... code which uses $value ... - return $value; # variable's final value - } - -Note that the callback's return value becomes the variable's final value, -for either read or write traces. - -For write operations, the variable is updated with its new value before -the callback is invoked. - -Multiple read, write and undef callbacks can be attached to a variable, -which are invoked in reverse order of creation. - -=head1 METHODS - -=over 4 - -=item $mw->traceVariable(varRef, op => callback); - -B<varRef> is a reference to the scalar, array or hash variable you -wish to trace. B<op> is the trace operation, and can be any combination -of B<r> for read, B<w> for write, and B<u> for undef. B<callback> is a -standard Perl/Tk callback, and is invoked, depending upon the value of -B<op>, whenever the variable is read, written, or destroyed. - -=item %vinfo = $mw->traceVinfo(varRef); - -Returns a hash detailing the internals of the Trace object, with these -keys: - - %vinfo = ( - -variable => varRef - -debug => '0' - -shadow => '1' - -value => 'HELLO SCALAR' - -destroy => callback - -fetch => callback - -store => callback - -legible => above data formatted as a list of string, for printing - ); - -For array and hash Trace objects, the B<-value> key is replaced with a -B<-ptr> key which is a reference to the parallel array or hash. -Additionally, for an array or hash, there are key/value pairs for -all the variable specific callbacks. - -=item $mw->traceVdelete(\$v); - -Stop tracing the variable. - -=back - -=head1 EXAMPLES - - # Trace a Scale's variable and move a meter in unison. - - use Tk; - use Tk::widgets qw/Trace/; - - $pi = 3.1415926; - $mw = MainWindow->new; - $c = $mw->Canvas( qw/-width 200 -height 110 -bd 2 -relief sunken/ )->grid; - $c->createLine( qw/100 100 10 100 -tag meter -arrow last -width 5/ ); - $s = $mw->Scale( qw/-orient h -from 0 -to 100 -variable/ => \$v )->grid; - $mw->Label( -text => 'Slide Me for 5 Seconds' )->grid; - - $mw->traceVariable( \$v, 'w' => [ \&update_meter, $s ] ); - - $mw->after( 5000 => sub { - print "Untrace time ...\n"; - %vinfo = $s->traceVinfo( \$v ); - print "Watch info :\n ", join("\n ", @{$vinfo{-legible}}), "\n"; - $c->traceVdelete( \$v ); - }); - - MainLoop; - - sub update_meter { - my( $index, $value, $op, @args ) = @_; - return if $op eq 'u'; - $min = $s->cget( -from ); - $max = $s->cget( -to ); - $pos = $value / abs( $max - $min ); - $x = 100.0 - 90.0 * ( cos( $pos * $pi ) ); - $y = 100.0 - 90.0 * ( sin( $pos * $pi ) ); - $c->coords( qw/meter 100 100/, $x, $y ); - return $value; - } - - # Predictive text entry. - - use Tk; - use Tk::widgets qw/ LabEntry Trace /; - use strict; - - my @words = qw/radio television telephone turntable microphone/; - - my $mw = MainWindow->new; - - my $e = $mw->LabEntry( - qw/ -label Thing -width 40 /, - -labelPack => [ qw/ -side left / ], - -textvariable => \my $thing, - ); - my $t = $mw->Text( qw/ -height 10 -width 50 / );; - - $t->pack( $e, qw/ -side top / ); - - $e->focus; - $e->traceVariable( \$thing, 'w', [ \&trace_thing, $e, $t ] ); - - foreach my $k ( 1 .. 12 ) { - $e->bind( "<F${k}>" => [ \&ins, $t, Ev('K') ] ); - } - $e->bind( '<Return>' => - sub { - print "$thing\n"; - $_[0]->delete( 0, 'end' ); - } - ); - - MainLoop; - - sub trace_thing { - - my( $index, $value, $op, $e, $t ) = @_; - - return unless $value; - - $t->delete( qw/ 1.0 end / ); - foreach my $w ( @words ) { - if ( $w =~ /^$value/ ) { - $t->insert( 'end', "$w\n" ); - } - } - - return $value; - - } # end trace_thing - - sub ins { - - my( $e, $t, $K ) = @_; - - my( $index ) = $K =~ /^F(\d+)$/; - - $e->delete( 0, 'end' ); - $e->insert( 'end', $t->get( "$index.0", "$index.0 lineend" ) ); - $t->delete( qw/ 1.0 end / ); - - } # end ins - -=head1 HISTORY - - Stephen.O.Lidie@Lehigh.EDU, Lehigh University Computing Center, 2000/08/01 - . Version 1.0, for Tk800.022. - - sol0@Lehigh.EDU, Lehigh University Computing Center, 2003/09/22 - . Version 1.1, for Tk804.025, add support for multiple traces of the same - type on the same variable. - -=head1 COPYRIGHT - -Copyright (C) 2000 - 2003 Stephen O. Lidie. All rights reserved. - -This program is free software; you can redistribute it and/or modify it under -the same terms as Perl itself. - -=cut - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Tree.pm b/Master/tlpkg/tlperl.old/lib/Tk/Tree.pm deleted file mode 100644 index 6d4f76b0c63..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Tree.pm +++ /dev/null @@ -1,228 +0,0 @@ -package Tk::Tree; -# Tree -- TixTree widget -# -# Derived from Tree.tcl in Tix 4.1 -# -# Chris Dean <ctdean@cogit.com> - -use vars qw($VERSION); -$VERSION = '4.005'; # $Id: //depot/Tkutf8/Tixish/Tree.pm#5 $ - -use Tk (); -use Tk::Derived; -use Tk::HList; -use base qw(Tk::Derived Tk::HList); -use strict; - -Construct Tk::Widget 'Tree'; - -sub Tk::Widget::ScrlTree { shift->Scrolled('Tree' => @_) } - -sub Populate -{ - my( $w, $args ) = @_; - - $w->SUPER::Populate( $args ); - - $w->ConfigSpecs( - -ignoreinvoke => ['PASSIVE', 'ignoreInvoke', 'IgnoreInvoke', 0], - -opencmd => ['CALLBACK', 'openCmd', 'OpenCmd', 'OpenCmd' ], - -indicatorcmd => ['CALLBACK', 'indicatorCmd', 'IndicatorCmd', 'IndicatorCmd'], - -closecmd => ['CALLBACK', 'closeCmd', 'CloseCmd', 'CloseCmd'], - -indicator => ['SELF', 'indicator', 'Indicator', 1], - -indent => ['SELF', 'indent', 'Indent', 20], - -width => ['SELF', 'width', 'Width', 20], - -itemtype => ['SELF', 'itemtype', 'Itemtype', 'imagetext'], - -foreground => ['SELF'], - ); -} - -sub autosetmode -{ - my( $w ) = @_; - $w->setmode(); -} - -sub IndicatorCmd -{ - my( $w, $ent, $event ) = @_; - - my $mode = $w->getmode( $ent ); - - if ( $event eq '<Arm>' ) - { - if ($mode eq 'open' ) - { - $w->_indicator_image( $ent, 'plusarm' ); - } - else - { - $w->_indicator_image( $ent, 'minusarm' ); - } - } - elsif ( $event eq '<Disarm>' ) - { - if ($mode eq 'open' ) - { - $w->_indicator_image( $ent, 'plus' ); - } - else - { - $w->_indicator_image( $ent, 'minus' ); - } - } - elsif( $event eq '<Activate>' ) - { - $w->Activate( $ent, $mode ); - $w->Callback( -browsecmd => $ent ); - } -} - -sub close -{ - my( $w, $ent ) = @_; - my $mode = $w->getmode( $ent ); - $w->Activate( $ent, $mode ) if( $mode eq 'close' ); -} - -sub open -{ - my( $w, $ent ) = @_; - my $mode = $w->getmode( $ent ); - $w->Activate( $ent, $mode ) if( $mode eq 'open' ); -} - -sub getmode -{ - my( $w, $ent ) = @_; - - return( 'none' ) unless $w->indicatorExists( $ent ); - - my $img = $w->_indicator_image( $ent ); - return( 'open' ) if( $img eq 'plus' || $img eq 'plusarm' ); - return( 'close' ); -} - -sub setmode -{ - my ($w,$ent,$mode) = @_; - unless (defined $mode) - { - $mode = 'none'; - my @args; - push(@args,$ent) if defined $ent; - my @children = $w->infoChildren( @args ); - if ( @children ) - { - $mode = 'close'; - foreach my $c (@children) - { - $mode = 'open' if $w->infoHidden( $c ); - $w->setmode( $c ); - } - } - } - - if (defined $ent) - { - if ( $mode eq 'open' ) - { - $w->_indicator_image( $ent, 'plus' ); - } - elsif ( $mode eq 'close' ) - { - $w->_indicator_image( $ent, 'minus' ); - } - elsif( $mode eq 'none' ) - { - $w->_indicator_image( $ent, undef ); - } - } -} - -sub Activate -{ - my( $w, $ent, $mode ) = @_; - if ( $mode eq 'open' ) - { - $w->Callback( -opencmd => $ent ); - $w->_indicator_image( $ent, 'minus' ); - } - elsif ( $mode eq 'close' ) - { - $w->Callback( -closecmd => $ent ); - $w->_indicator_image( $ent, 'plus' ); - } - else - { - - } -} - -sub OpenCmd -{ - my( $w, $ent ) = @_; - # The default action - foreach my $kid ($w->infoChildren( $ent )) - { - $w->show( -entry => $kid ); - } -} - -sub CloseCmd -{ - my( $w, $ent ) = @_; - - # The default action - foreach my $kid ($w->infoChildren( $ent )) - { - $w->hide( -entry => $kid ); - } -} - -sub Command -{ - my( $w, $ent ) = @_; - - return if $w->{Configure}{-ignoreInvoke}; - - $w->Activate( $ent, $w->getmode( $ent ) ) if $w->indicatorExists( $ent ); -} - -sub _indicator_image -{ - my( $w, $ent, $image ) = @_; - my $data = $w->privateData(); - if (@_ > 2) - { - if (defined $image) - { - $w->indicatorCreate( $ent, -itemtype => 'image' ) - unless $w->indicatorExists($ent); - $data->{$ent} = $image; - $w->indicatorConfigure( $ent, -image => $w->Getimage( $image ) ); - } - else - { - $w->indicatorDelete( $ent ) if $w->indicatorExists( $ent ); - delete $data->{$ent}; - } - } - return $data->{$ent}; -} - -1; - -__END__ - -# Copyright (c) 1996, Expert Interface Technologies -# See the file "license.terms" for information on usage and redistribution -# of this file, and for a DISCLAIMER OF ALL WARRANTIES. -# -# The file man.macros and some of the macros used by this file are -# copyrighted: (c) 1990 The Regents of the University of California. -# (c) 1994-1995 Sun Microsystems, Inc. -# The license terms of the Tcl/Tk distrobution are in the file -# license.tcl. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Widget.pm b/Master/tlpkg/tlperl.old/lib/Tk/Widget.pm deleted file mode 100644 index e94c037e6fe..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Widget.pm +++ /dev/null @@ -1,1510 +0,0 @@ -# Copyright (c) 1995-2004 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 = sprintf '4.%03d', q$Revision: #30 $ =~ /\D(\d+)\s*$/; - -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 Labelframe; -sub Listbox; -sub Menu; -sub Menubutton; -sub Message; -sub Panedwindow; -sub Radiobutton; -sub Scale; -sub Scrollbar; -sub Spinbox; -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 subfonts)] - ); - -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 caret scaling useinputmethods windowingsystem)]); - - -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); - @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 $@; - unless (ref $obj) - { - die "No value from $cmd $lname" unless defined $obj; - warn "$cmd '$lname' returned '$obj'" unless $obj eq $lname; - $obj = $parent->Widget($lname = $obj); - die "$obj from $lname" unless ref $obj; - } - 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; don't load .pm use XS code from perl core though - -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) && ref($_[0]) && $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 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 afterIdle -{ - my $w = shift; - return Tk::After->new($w,'idle','once',@_); -} - -sub afterInfo { - my ($w, $id) = @_; - if (defined $id) { - return ($id->[4], $id->[2], $id->[3]); - } else { - return sort( keys %{$w->{_After_}} ); - } -} - -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($sub, %args); - for(my $i=0; $i<=$#args; $i++) - { - if (ref $args[$i] eq 'CODE') - { - if (defined $sub) - { - croak "Multiple code definitions not allowed in Tk::Widget::Busy"; - } - $sub = $args[$i]; - } - else - { - $args{$args[$i]} = $args[$i+1]; $i++; - } - } - 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; - if ($sub) - { - eval { $sub->() }; - my $err = $@; - $w->Unbusy(-recurse => $recurse); - die $err if $err; - } -} - -sub _busy -{ - my ($w,$f) = @_; - $w->bell if $f; - $w->break; -} - -sub Unbusy -{ - my ($w) = @_; - $w->update; - $w->grabRelease if Tk::Exists($w); - my $old = delete $w->{'Busy'}; - if (defined $old) - { - local $SIG{'__DIE__'}; - eval { &{pop(@$old)} } while (@$old); - } - $w->update if Tk::Exists($w); -} - -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]); - $mw->XMouseWheelBind($class); -} - -sub PriorNextBind -{ - my ($mw,$class) = @_; - $mw->bind($class,'<Next>', ['yview','scroll',1,'pages']); - $mw->bind($class,'<Prior>', ['yview','scroll',-1,'pages']); -} - -sub XMouseWheelBind -{ - my ($mw,$class) = @_; - # <4> and <5> are how mousewheel looks on X - # <4> and <5> are how mousewheel looks on X - $mw->bind($class,'<Shift-4>', ['xview','scroll',-1,'units']); - $mw->bind($class,'<Shift-5>', ['xview','scroll',1,'units']); - $mw->bind($class,'<Button-6>', ['xview','scroll',-1,'units']); - $mw->bind($class,'<Button-7>', ['xview','scroll',1,'units']); -} - -sub YMouseWheelBind -{ - my ($mw,$class) = @_; - # <4> and <5> are how mousewheel looks on X - $mw->bind($class,'<4>', ['yview','scroll',-1,'units']); - $mw->bind($class,'<5>', ['yview','scroll',1,'units']); -} - -sub YscrollBind -{ - my ($mw,$class) = @_; - $mw->PriorNextBind($class); - $mw->bind($class,'<Up>', ['yview','scroll',-1,'units']); - $mw->bind($class,'<Down>', ['yview','scroll',1,'units']); - $mw->YMouseWheelBind($class); -} - -sub XYscrollBind -{ - my ($mw,$class) = @_; - $mw->YscrollBind($class); - $mw->XscrollBind($class); - # <4> and <5> are how mousewheel looks on X -} - -sub MouseWheelBind -{ - my($mw,$class) = @_; - - # The MouseWheel will typically only fire on Windows. However, one - # could use the "event generate" command to produce MouseWheel - # events on other platforms. - - $mw->Tk::bind($class, '<MouseWheel>', - [ sub { $_[0]->yview('scroll',-($_[1]/120)*3,'units') }, Tk::Ev("D")]); - - if ($Tk::platform eq 'unix') - { - # Support for mousewheels on Linux/Unix commonly comes through mapping - # the wheel to the extended buttons. If you have a mousewheel, find - # Linux configuration info at: - # http://www.inria.fr/koala/colas/mouse-wheel-scroll/ - $mw->Tk::bind($class, '<4>', - sub { $_[0]->yview('scroll', -3, 'units') - unless $Tk::strictMotif; - }); - $mw->Tk::bind($class, '<5>', - sub { $_[0]->yview('scroll', 3, 'units') - unless $Tk::strictMotif; - }); - } -} - -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) = @_; - $kind = 'Pane' if $kind eq 'Frame'; - # 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; - } -} - -sub ConfigSpecs { - - my $w = shift; - - return map { ( $_->[0], [ $w, @$_[ 1 .. 4 ] ] ) } $w->configure; - -} - -*GetSelection = - ($Tk::platform eq 'unix' - ? sub - { - my $w = shift; - my $sel = @_ ? shift : "PRIMARY"; - my $txt = eval { local $SIG{__DIE__}; - $w->SelectionGet(-selection => $sel, -type => "UTF8_STRING") - }; - if ($@) - { - $txt = eval { local $SIG{__DIE__}; - $w->SelectionGet(-selection => $sel) - }; - if ($@) - { - die "could not find default selection"; - } - } - $txt; - } - : sub - { - my $w = shift; - my $sel = @_ ? shift : "PRIMARY"; - my $txt = eval { local $SIG{__DIE__}; - $w->SelectionGet(-selection => $sel) - }; - if ($@) - { - die "could not find default selection"; - } - $txt; - } - ); - -1; -__END__ - -sub bindDump { - - # Dump lots of good binding information. This pretty-print subroutine - # is, essentially, the following code in disguise: - # - # print "Binding information for $w\n"; - # foreach my $tag ($w->bindtags) { - # printf "\n Binding tag '$tag' has these bindings:\n"; - # foreach my $binding ($w->bind($tag)) { - # printf " $binding\n"; - # } - # } - - my ($w) = @_; - - my (@bindtags) = $w->bindtags; - my $digits = length( scalar @bindtags ); - my ($spc1, $spc2) = ($digits + 33, $digits + 35); - my $format1 = "%${digits}d."; - my $format2 = ' ' x ($digits + 2); - my $n = 0; - - my @out; - push @out, sprintf( "\n## Binding information for '%s', %s ##", $w->PathName, $w ); - - foreach my $tag (@bindtags) { - my (@bindings) = $w->bind($tag); - $n++; # count this bindtag - - if ($#bindings == -1) { - push @out, sprintf( "\n$format1 Binding tag '$tag' has no bindings.\n", $n ); - } else { - push @out, sprintf( "\n$format1 Binding tag '$tag' has these bindings:\n", $n ); - - foreach my $binding ( @bindings ) { - my $callback = $w->bind($tag, $binding); - push @out, sprintf( "$format2%27s : %-40s\n", $binding, $callback ); - - if ($callback =~ /SCALAR/) { - if (ref $$callback) { - push @out, sprintf( "%s %s\n", ' ' x $spc1, $$callback ); - } else { - push @out, sprintf( "%s '%s'\n", ' ' x $spc1, $$callback ); - } - } elsif ($callback =~ /ARRAY/) { - if (ref $callback->[0]) { - push @out, sprintf( "%s %s\n", ' ' x $spc1, $callback->[0], "\n" ); - } else { - push @out, sprintf( "%s '%s'\n", ' ' x $spc1, $callback->[0], "\n" ); - } - foreach my $arg (@$callback[1 .. $#{@$callback}]) { - if (ref $arg) { - push @out, sprintf( "%s %-40s", ' ' x $spc2, $arg ); - } else { - push @out, sprintf( "%s '%s'", ' ' x $spc2, $arg ); - } - - if (ref $arg eq 'Tk::Ev') { - if ($arg =~ /SCALAR/) { - push @out, sprintf( ": '$$arg'" ); - } else { - push @out, sprintf( ": '%s'", join("' '", @$arg) ); - } - } - - push @out, sprintf( "\n" ); - } # forend callback arguments - } # ifend callback - - } # forend all bindings for one tag - - } # ifend have bindings - - } # forend all tags - push @out, sprintf( "\n" ); - return @out; - -} # end bindDump - - -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/tlpkg/tlperl.old/lib/Tk/Wm.pm b/Master/tlpkg/tlperl.old/lib/Tk/Wm.pm deleted file mode 100644 index ffbe4877857..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Wm.pm +++ /dev/null @@ -1,174 +0,0 @@ -# Copyright (c) 1995-2003 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 = sprintf '4.%03d', q$Revision: #14 $ =~ /\D(\d+)\s*$/; - -use Tk::Submethods; - -*{Tk::Wm::wmGrid} = sub { shift->wm("grid", @_) }; -*{Tk::Wm::wmTracing} = sub { shift->wm("tracing", @_) }; - -Direct Tk::Submethods ('wm' => [qw(aspect attributes client colormapwindows command - deiconify focusmodel frame geometry group - iconbitmap iconify iconimage iconmask iconname - iconwindow maxsize minsize overrideredirect positionfrom - protocol resizable 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); - # adjust to not cross screen borders - if ($X < 0) { $X = 0 } - if ($Y < 0) { $Y = 0 } - if ($mw > $w->screenwidth) { $X = 0 } - if ($mh > $w->screenheight) { $Y = 0 } - $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/tlpkg/tlperl.old/lib/Tk/X.pm b/Master/tlpkg/tlperl.old/lib/Tk/X.pm deleted file mode 100644 index 06eefbf6bd9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/X.pm +++ /dev/null @@ -1,398 +0,0 @@ -package Tk::X; - -use strict; -use Carp; -use vars qw($VERSION @EXPORT $AUTOLOAD); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Xlib/X/X.pm#4 $ -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/tlpkg/tlperl.old/lib/Tk/X11/X.h b/Master/tlpkg/tlperl.old/lib/Tk/X11/X.h deleted file mode 100644 index 95db07f903f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/X11/X.h +++ /dev/null @@ -1,677 +0,0 @@ -/* - * $XConsortium: X.h,v 1.66 88/09/06 15:55:56 jim Exp $ - */ - -/* Definitions for the X window system likely to be used by applications */ - -#ifndef X_H -#define X_H - -/*********************************************************** -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, -and the Massachusetts Institute of Technology, Cambridge, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Digital or MIT not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ -#define X_PROTOCOL 11 /* current protocol version */ -#define X_PROTOCOL_REVISION 0 /* current minor version */ - -#if defined(MAC_TCL) || defined(MAC_OSX_TK) -# define Cursor XCursor -# define Region XRegion -#endif - -/* Resources */ - -#ifdef _WIN64 -typedef __int64 XID; -#else -typedef unsigned long XID; -#endif - -typedef XID Window; -typedef XID Drawable; -typedef XID Font; -typedef XID Pixmap; -typedef XID Cursor; -typedef XID Colormap; -typedef XID GContext; -typedef XID KeySym; - -typedef unsigned long Mask; - -typedef unsigned long Atom; - -typedef unsigned long VisualID; - -typedef unsigned long Time; - -typedef unsigned long KeyCode; /* In order to use IME, the Macintosh needs - * to pack 3 bytes into the keyCode field in - * the XEvent. In the real X.h, a KeyCode is - * defined as a short, which wouldn't be big - * enough. */ - -/***************************************************************** - * RESERVED RESOURCE AND CONSTANT DEFINITIONS - *****************************************************************/ - -#define None 0L /* universal null resource or null atom */ - -#define ParentRelative 1L /* background pixmap in CreateWindow - and ChangeWindowAttributes */ - -#define CopyFromParent 0L /* border pixmap in CreateWindow - and ChangeWindowAttributes - special VisualID and special window - class passed to CreateWindow */ - -#define PointerWindow 0L /* destination window in SendEvent */ -#define InputFocus 1L /* destination window in SendEvent */ - -#define PointerRoot 1L /* focus window in SetInputFocus */ - -#define AnyPropertyType 0L /* special Atom, passed to GetProperty */ - -#define AnyKey 0L /* special Key Code, passed to GrabKey */ - -#define AnyButton 0L /* special Button Code, passed to GrabButton */ - -#define AllTemporary 0L /* special Resource ID passed to KillClient */ - -#define CurrentTime 0L /* special Time */ - -#define NoSymbol 0L /* special KeySym */ - -/***************************************************************** - * EVENT DEFINITIONS - *****************************************************************/ - -/* Input Event Masks. Used as event-mask window attribute and as arguments - to Grab requests. Not to be confused with event names. */ - -#define NoEventMask 0L -#define KeyPressMask (1L<<0) -#define KeyReleaseMask (1L<<1) -#define ButtonPressMask (1L<<2) -#define ButtonReleaseMask (1L<<3) -#define EnterWindowMask (1L<<4) -#define LeaveWindowMask (1L<<5) -#define PointerMotionMask (1L<<6) -#define PointerMotionHintMask (1L<<7) -#define Button1MotionMask (1L<<8) -#define Button2MotionMask (1L<<9) -#define Button3MotionMask (1L<<10) -#define Button4MotionMask (1L<<11) -#define Button5MotionMask (1L<<12) -#define ButtonMotionMask (1L<<13) -#define KeymapStateMask (1L<<14) -#define ExposureMask (1L<<15) -#define VisibilityChangeMask (1L<<16) -#define StructureNotifyMask (1L<<17) -#define ResizeRedirectMask (1L<<18) -#define SubstructureNotifyMask (1L<<19) -#define SubstructureRedirectMask (1L<<20) -#define FocusChangeMask (1L<<21) -#define PropertyChangeMask (1L<<22) -#define ColormapChangeMask (1L<<23) -#define OwnerGrabButtonMask (1L<<24) - -/* Event names. Used in "type" field in XEvent structures. Not to be -confused with event masks above. They start from 2 because 0 and 1 -are reserved in the protocol for errors and replies. */ - -#define KeyPress 2 -#define KeyRelease 3 -#define ButtonPress 4 -#define ButtonRelease 5 -#define MotionNotify 6 -#define EnterNotify 7 -#define LeaveNotify 8 -#define FocusIn 9 -#define FocusOut 10 -#define KeymapNotify 11 -#define Expose 12 -#define GraphicsExpose 13 -#define NoExpose 14 -#define VisibilityNotify 15 -#define CreateNotify 16 -#define DestroyNotify 17 -#define UnmapNotify 18 -#define MapNotify 19 -#define MapRequest 20 -#define ReparentNotify 21 -#define ConfigureNotify 22 -#define ConfigureRequest 23 -#define GravityNotify 24 -#define ResizeRequest 25 -#define CirculateNotify 26 -#define CirculateRequest 27 -#define PropertyNotify 28 -#define SelectionClear 29 -#define SelectionRequest 30 -#define SelectionNotify 31 -#define ColormapNotify 32 -#define ClientMessage 33 -#define MappingNotify 34 -#define LASTEvent 35 /* must be bigger than any event # */ - - -/* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer, - state in various key-, mouse-, and button-related events. */ - -#define ShiftMask (1<<0) -#define LockMask (1<<1) -#define ControlMask (1<<2) -#define Mod1Mask (1<<3) -#define Mod2Mask (1<<4) -#define Mod3Mask (1<<5) -#define Mod4Mask (1<<6) -#define Mod5Mask (1<<7) - -/* modifier names. Used to build a SetModifierMapping request or - to read a GetModifierMapping request. These correspond to the - masks defined above. */ -#define ShiftMapIndex 0 -#define LockMapIndex 1 -#define ControlMapIndex 2 -#define Mod1MapIndex 3 -#define Mod2MapIndex 4 -#define Mod3MapIndex 5 -#define Mod4MapIndex 6 -#define Mod5MapIndex 7 - - -/* button masks. Used in same manner as Key masks above. Not to be confused - with button names below. */ - -#define Button1Mask (1<<8) -#define Button2Mask (1<<9) -#define Button3Mask (1<<10) -#define Button4Mask (1<<11) -#define Button5Mask (1<<12) - -#define AnyModifier (1<<15) /* used in GrabButton, GrabKey */ - - -/* button names. Used as arguments to GrabButton and as detail in ButtonPress - and ButtonRelease events. Not to be confused with button masks above. - Note that 0 is already defined above as "AnyButton". */ - -#define Button1 1 -#define Button2 2 -#define Button3 3 -#define Button4 4 -#define Button5 5 - -/* Notify modes */ - -#define NotifyNormal 0 -#define NotifyGrab 1 -#define NotifyUngrab 2 -#define NotifyWhileGrabbed 3 - -#define NotifyHint 1 /* for MotionNotify events */ - -/* Notify detail */ - -#define NotifyAncestor 0 -#define NotifyVirtual 1 -#define NotifyInferior 2 -#define NotifyNonlinear 3 -#define NotifyNonlinearVirtual 4 -#define NotifyPointer 5 -#define NotifyPointerRoot 6 -#define NotifyDetailNone 7 - -/* Visibility notify */ - -#define VisibilityUnobscured 0 -#define VisibilityPartiallyObscured 1 -#define VisibilityFullyObscured 2 - -/* Circulation request */ - -#define PlaceOnTop 0 -#define PlaceOnBottom 1 - -/* protocol families */ - -#define FamilyInternet 0 -#define FamilyDECnet 1 -#define FamilyChaos 2 - -/* Property notification */ - -#define PropertyNewValue 0 -#define PropertyDelete 1 - -/* Color Map notification */ - -#define ColormapUninstalled 0 -#define ColormapInstalled 1 - -/* GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes */ - -#define GrabModeSync 0 -#define GrabModeAsync 1 - -/* GrabPointer, GrabKeyboard reply status */ - -#define GrabSuccess 0 -#define AlreadyGrabbed 1 -#define GrabInvalidTime 2 -#define GrabNotViewable 3 -#define GrabFrozen 4 - -/* AllowEvents modes */ - -#define AsyncPointer 0 -#define SyncPointer 1 -#define ReplayPointer 2 -#define AsyncKeyboard 3 -#define SyncKeyboard 4 -#define ReplayKeyboard 5 -#define AsyncBoth 6 -#define SyncBoth 7 - -/* Used in SetInputFocus, GetInputFocus */ - -#define RevertToNone (int)None -#define RevertToPointerRoot (int)PointerRoot -#define RevertToParent 2 - -/***************************************************************** - * ERROR CODES - *****************************************************************/ - -#define Success 0 /* everything's okay */ -#define BadRequest 1 /* bad request code */ -#define BadValue 2 /* int parameter out of range */ -#define BadWindow 3 /* parameter not a Window */ -#define BadPixmap 4 /* parameter not a Pixmap */ -#define BadAtom 5 /* parameter not an Atom */ -#define BadCursor 6 /* parameter not a Cursor */ -#define BadFont 7 /* parameter not a Font */ -#define BadMatch 8 /* parameter mismatch */ -#define BadDrawable 9 /* parameter not a Pixmap or Window */ -#define BadAccess 10 /* depending on context: - - key/button already grabbed - - attempt to free an illegal - cmap entry - - attempt to store into a read-only - color map entry. - - attempt to modify the access control - list from other than the local host. - */ -#define BadAlloc 11 /* insufficient resources */ -#define BadColor 12 /* no such colormap */ -#define BadGC 13 /* parameter not a GC */ -#define BadIDChoice 14 /* choice not in range or already used */ -#define BadName 15 /* font or color name doesn't exist */ -#define BadLength 16 /* Request length incorrect */ -#define BadImplementation 17 /* server is defective */ - -#define FirstExtensionError 128 -#define LastExtensionError 255 - -/***************************************************************** - * WINDOW DEFINITIONS - *****************************************************************/ - -/* Window classes used by CreateWindow */ -/* Note that CopyFromParent is already defined as 0 above */ - -#define InputOutput 1 -#define InputOnly 2 - -/* Window attributes for CreateWindow and ChangeWindowAttributes */ - -#define CWBackPixmap (1L<<0) -#define CWBackPixel (1L<<1) -#define CWBorderPixmap (1L<<2) -#define CWBorderPixel (1L<<3) -#define CWBitGravity (1L<<4) -#define CWWinGravity (1L<<5) -#define CWBackingStore (1L<<6) -#define CWBackingPlanes (1L<<7) -#define CWBackingPixel (1L<<8) -#define CWOverrideRedirect (1L<<9) -#define CWSaveUnder (1L<<10) -#define CWEventMask (1L<<11) -#define CWDontPropagate (1L<<12) -#define CWColormap (1L<<13) -#define CWCursor (1L<<14) - -/* ConfigureWindow structure */ - -#define CWX (1<<0) -#define CWY (1<<1) -#define CWWidth (1<<2) -#define CWHeight (1<<3) -#define CWBorderWidth (1<<4) -#define CWSibling (1<<5) -#define CWStackMode (1<<6) - - -/* Bit Gravity */ - -#define ForgetGravity 0 -#define NorthWestGravity 1 -#define NorthGravity 2 -#define NorthEastGravity 3 -#define WestGravity 4 -#define CenterGravity 5 -#define EastGravity 6 -#define SouthWestGravity 7 -#define SouthGravity 8 -#define SouthEastGravity 9 -#define StaticGravity 10 - -/* Window gravity + bit gravity above */ - -#define UnmapGravity 0 - -/* Used in CreateWindow for backing-store hint */ - -#define NotUseful 0 -#define WhenMapped 1 -#define Always 2 - -/* Used in GetWindowAttributes reply */ - -#define IsUnmapped 0 -#define IsUnviewable 1 -#define IsViewable 2 - -/* Used in ChangeSaveSet */ - -#define SetModeInsert 0 -#define SetModeDelete 1 - -/* Used in ChangeCloseDownMode */ - -#define DestroyAll 0 -#define RetainPermanent 1 -#define RetainTemporary 2 - -/* Window stacking method (in configureWindow) */ - -#define Above 0 -#define Below 1 -#define TopIf 2 -#define BottomIf 3 -#define Opposite 4 - -/* Circulation direction */ - -#define RaiseLowest 0 -#define LowerHighest 1 - -/* Property modes */ - -#define PropModeReplace 0 -#define PropModePrepend 1 -#define PropModeAppend 2 - -/***************************************************************** - * GRAPHICS DEFINITIONS - *****************************************************************/ - -/* graphics functions, as in GC.alu */ - -#define GXclear 0x0 /* 0 */ -#define GXand 0x1 /* src AND dst */ -#define GXandReverse 0x2 /* src AND NOT dst */ -#define GXcopy 0x3 /* src */ -#define GXandInverted 0x4 /* NOT src AND dst */ -#define GXnoop 0x5 /* dst */ -#define GXxor 0x6 /* src XOR dst */ -#define GXor 0x7 /* src OR dst */ -#define GXnor 0x8 /* NOT src AND NOT dst */ -#define GXequiv 0x9 /* NOT src XOR dst */ -#define GXinvert 0xa /* NOT dst */ -#define GXorReverse 0xb /* src OR NOT dst */ -#define GXcopyInverted 0xc /* NOT src */ -#define GXorInverted 0xd /* NOT src OR dst */ -#define GXnand 0xe /* NOT src OR NOT dst */ -#define GXset 0xf /* 1 */ - -/* LineStyle */ - -#define LineSolid 0 -#define LineOnOffDash 1 -#define LineDoubleDash 2 - -/* capStyle */ - -#define CapNotLast 0 -#define CapButt 1 -#define CapRound 2 -#define CapProjecting 3 - -/* joinStyle */ - -#define JoinMiter 0 -#define JoinRound 1 -#define JoinBevel 2 - -/* fillStyle */ - -#define FillSolid 0 -#define FillTiled 1 -#define FillStippled 2 -#define FillOpaqueStippled 3 - -/* fillRule */ - -#define EvenOddRule 0 -#define WindingRule 1 - -/* subwindow mode */ - -#define ClipByChildren 0 -#define IncludeInferiors 1 - -/* SetClipRectangles ordering */ - -#define Unsorted 0 -#define YSorted 1 -#define YXSorted 2 -#define YXBanded 3 - -/* CoordinateMode for drawing routines */ - -#define CoordModeOrigin 0 /* relative to the origin */ -#define CoordModePrevious 1 /* relative to previous point */ - -/* Polygon shapes */ - -#define Complex 0 /* paths may intersect */ -#define Nonconvex 1 /* no paths intersect, but not convex */ -#define Convex 2 /* wholly convex */ - -/* Arc modes for PolyFillArc */ - -#define ArcChord 0 /* join endpoints of arc */ -#define ArcPieSlice 1 /* join endpoints to center of arc */ - -/* GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into - GC.stateChanges */ - -#define GCFunction (1L<<0) -#define GCPlaneMask (1L<<1) -#define GCForeground (1L<<2) -#define GCBackground (1L<<3) -#define GCLineWidth (1L<<4) -#define GCLineStyle (1L<<5) -#define GCCapStyle (1L<<6) -#define GCJoinStyle (1L<<7) -#define GCFillStyle (1L<<8) -#define GCFillRule (1L<<9) -#define GCTile (1L<<10) -#define GCStipple (1L<<11) -#define GCTileStipXOrigin (1L<<12) -#define GCTileStipYOrigin (1L<<13) -#define GCFont (1L<<14) -#define GCSubwindowMode (1L<<15) -#define GCGraphicsExposures (1L<<16) -#define GCClipXOrigin (1L<<17) -#define GCClipYOrigin (1L<<18) -#define GCClipMask (1L<<19) -#define GCDashOffset (1L<<20) -#define GCDashList (1L<<21) -#define GCArcMode (1L<<22) - -#define GCLastBit 22 -/***************************************************************** - * FONTS - *****************************************************************/ - -/* used in QueryFont -- draw direction */ - -#define FontLeftToRight 0 -#define FontRightToLeft 1 - -#define FontChange 255 - -/***************************************************************** - * IMAGING - *****************************************************************/ - -/* ImageFormat -- PutImage, GetImage */ - -#define XYBitmap 0 /* depth 1, XYFormat */ -#define XYPixmap 1 /* depth == drawable depth */ -#define ZPixmap 2 /* depth == drawable depth */ - -/***************************************************************** - * COLOR MAP STUFF - *****************************************************************/ - -/* For CreateColormap */ - -#define AllocNone 0 /* create map with no entries */ -#define AllocAll 1 /* allocate entire map writeable */ - - -/* Flags used in StoreNamedColor, StoreColors */ - -#define DoRed (1<<0) -#define DoGreen (1<<1) -#define DoBlue (1<<2) - -/***************************************************************** - * CURSOR STUFF - *****************************************************************/ - -/* QueryBestSize Class */ - -#define CursorShape 0 /* largest size that can be displayed */ -#define TileShape 1 /* size tiled fastest */ -#define StippleShape 2 /* size stippled fastest */ - -/***************************************************************** - * KEYBOARD/POINTER STUFF - *****************************************************************/ - -#define AutoRepeatModeOff 0 -#define AutoRepeatModeOn 1 -#define AutoRepeatModeDefault 2 - -#define LedModeOff 0 -#define LedModeOn 1 - -/* masks for ChangeKeyboardControl */ - -#define KBKeyClickPercent (1L<<0) -#define KBBellPercent (1L<<1) -#define KBBellPitch (1L<<2) -#define KBBellDuration (1L<<3) -#define KBLed (1L<<4) -#define KBLedMode (1L<<5) -#define KBKey (1L<<6) -#define KBAutoRepeatMode (1L<<7) - -#define MappingSuccess 0 -#define MappingBusy 1 -#define MappingFailed 2 - -#define MappingModifier 0 -#define MappingKeyboard 1 -#define MappingPointer 2 - -/***************************************************************** - * SCREEN SAVER STUFF - *****************************************************************/ - -#define DontPreferBlanking 0 -#define PreferBlanking 1 -#define DefaultBlanking 2 - -#define DisableScreenSaver 0 -#define DisableScreenInterval 0 - -#define DontAllowExposures 0 -#define AllowExposures 1 -#define DefaultExposures 2 - -/* for ForceScreenSaver */ - -#define ScreenSaverReset 0 -#define ScreenSaverActive 1 - -/***************************************************************** - * HOSTS AND CONNECTIONS - *****************************************************************/ - -/* for ChangeHosts */ - -#define HostInsert 0 -#define HostDelete 1 - -/* for ChangeAccessControl */ - -#define EnableAccess 1 -#define DisableAccess 0 - -/* Display classes used in opening the connection - * Note that the statically allocated ones are even numbered and the - * dynamically changeable ones are odd numbered */ - -#define StaticGray 0 -#define GrayScale 1 -#define StaticColor 2 -#define PseudoColor 3 -#define TrueColor 4 -#define DirectColor 5 - - -/* Byte order used in imageByteOrder and bitmapBitOrder */ - -#define LSBFirst 0 -#define MSBFirst 1 - -#if defined(MAC_TCL) || defined(MAC_OSX_TK) -# undef Cursor -# undef Region -#endif - -#endif /* X_H */ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/X11/Xatom.h b/Master/tlpkg/tlperl.old/lib/Tk/X11/Xatom.h deleted file mode 100644 index 485a4236db8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/X11/Xatom.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef XATOM_H -#define XATOM_H 1 - -/* THIS IS A GENERATED FILE - * - * Do not change! Changing this file implies a protocol change! - */ - -#define XA_PRIMARY ((Atom) 1) -#define XA_SECONDARY ((Atom) 2) -#define XA_ARC ((Atom) 3) -#define XA_ATOM ((Atom) 4) -#define XA_BITMAP ((Atom) 5) -#define XA_CARDINAL ((Atom) 6) -#define XA_COLORMAP ((Atom) 7) -#define XA_CURSOR ((Atom) 8) -#define XA_CUT_BUFFER0 ((Atom) 9) -#define XA_CUT_BUFFER1 ((Atom) 10) -#define XA_CUT_BUFFER2 ((Atom) 11) -#define XA_CUT_BUFFER3 ((Atom) 12) -#define XA_CUT_BUFFER4 ((Atom) 13) -#define XA_CUT_BUFFER5 ((Atom) 14) -#define XA_CUT_BUFFER6 ((Atom) 15) -#define XA_CUT_BUFFER7 ((Atom) 16) -#define XA_DRAWABLE ((Atom) 17) -#define XA_FONT ((Atom) 18) -#define XA_INTEGER ((Atom) 19) -#define XA_PIXMAP ((Atom) 20) -#define XA_POINT ((Atom) 21) -#define XA_RECTANGLE ((Atom) 22) -#define XA_RESOURCE_MANAGER ((Atom) 23) -#define XA_RGB_COLOR_MAP ((Atom) 24) -#define XA_RGB_BEST_MAP ((Atom) 25) -#define XA_RGB_BLUE_MAP ((Atom) 26) -#define XA_RGB_DEFAULT_MAP ((Atom) 27) -#define XA_RGB_GRAY_MAP ((Atom) 28) -#define XA_RGB_GREEN_MAP ((Atom) 29) -#define XA_RGB_RED_MAP ((Atom) 30) -#define XA_STRING ((Atom) 31) -#define XA_VISUALID ((Atom) 32) -#define XA_WINDOW ((Atom) 33) -#define XA_WM_COMMAND ((Atom) 34) -#define XA_WM_HINTS ((Atom) 35) -#define XA_WM_CLIENT_MACHINE ((Atom) 36) -#define XA_WM_ICON_NAME ((Atom) 37) -#define XA_WM_ICON_SIZE ((Atom) 38) -#define XA_WM_NAME ((Atom) 39) -#define XA_WM_NORMAL_HINTS ((Atom) 40) -#define XA_WM_SIZE_HINTS ((Atom) 41) -#define XA_WM_ZOOM_HINTS ((Atom) 42) -#define XA_MIN_SPACE ((Atom) 43) -#define XA_NORM_SPACE ((Atom) 44) -#define XA_MAX_SPACE ((Atom) 45) -#define XA_END_SPACE ((Atom) 46) -#define XA_SUPERSCRIPT_X ((Atom) 47) -#define XA_SUPERSCRIPT_Y ((Atom) 48) -#define XA_SUBSCRIPT_X ((Atom) 49) -#define XA_SUBSCRIPT_Y ((Atom) 50) -#define XA_UNDERLINE_POSITION ((Atom) 51) -#define XA_UNDERLINE_THICKNESS ((Atom) 52) -#define XA_STRIKEOUT_ASCENT ((Atom) 53) -#define XA_STRIKEOUT_DESCENT ((Atom) 54) -#define XA_ITALIC_ANGLE ((Atom) 55) -#define XA_X_HEIGHT ((Atom) 56) -#define XA_QUAD_WIDTH ((Atom) 57) -#define XA_WEIGHT ((Atom) 58) -#define XA_POINT_SIZE ((Atom) 59) -#define XA_RESOLUTION ((Atom) 60) -#define XA_COPYRIGHT ((Atom) 61) -#define XA_NOTICE ((Atom) 62) -#define XA_FONT_NAME ((Atom) 63) -#define XA_FAMILY_NAME ((Atom) 64) -#define XA_FULL_NAME ((Atom) 65) -#define XA_CAP_HEIGHT ((Atom) 66) -#define XA_WM_CLASS ((Atom) 67) -#define XA_WM_TRANSIENT_FOR ((Atom) 68) - -#define XA_LAST_PREDEFINED ((Atom) 68) -#endif /* XATOM_H */ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/X11/Xfuncproto.h b/Master/tlpkg/tlperl.old/lib/Tk/X11/Xfuncproto.h deleted file mode 100644 index a59379b3b65..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/X11/Xfuncproto.h +++ /dev/null @@ -1,60 +0,0 @@ -/* $XConsortium: Xfuncproto.h,v 1.7 91/05/13 20:49:21 rws Exp $ */ -/* - * Copyright 1989, 1991 by the Massachusetts Institute of Technology - * - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of M.I.T. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. M.I.T. makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - */ - -/* Definitions to make function prototypes manageable */ - -#ifndef _XFUNCPROTO_H_ -#define _XFUNCPROTO_H_ - -#ifndef NeedFunctionPrototypes -#define NeedFunctionPrototypes 1 -#endif /* NeedFunctionPrototypes */ - -#ifndef NeedVarargsPrototypes -#define NeedVarargsPrototypes 0 -#endif /* NeedVarargsPrototypes */ - -#if NeedFunctionPrototypes - -#ifndef NeedNestedPrototypes -#define NeedNestedPrototypes 1 -#endif /* NeedNestedPrototypes */ - -#ifndef _Xconst -#define _Xconst const -#endif /* _Xconst */ - -#ifndef NeedWidePrototypes -#ifdef NARROWPROTO -#define NeedWidePrototypes 0 -#else -#define NeedWidePrototypes 1 /* default to make interropt. easier */ -#endif -#endif /* NeedWidePrototypes */ - -#endif /* NeedFunctionPrototypes */ - -#ifdef __cplusplus -#define _XFUNCPROTOBEGIN extern "C" { -#define _XFUNCPROTOEND } -#endif - -#ifndef _XFUNCPROTOBEGIN -#define _XFUNCPROTOBEGIN -#define _XFUNCPROTOEND -#endif /* _XFUNCPROTOBEGIN */ - -#endif /* _XFUNCPROTO_H_ */ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/X11/Xlib.h b/Master/tlpkg/tlperl.old/lib/Tk/X11/Xlib.h deleted file mode 100644 index 0a9e3ddd45d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/X11/Xlib.h +++ /dev/null @@ -1,1214 +0,0 @@ -/* $XConsortium: Xlib.h,v 11.221 93/07/02 14:13:28 gildea Exp $ */ -/* - * Copyright 1985, 1986, 1987, 1991 by the Massachusetts Institute of Technology - * - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of M.I.T. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. M.I.T. makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * X Window System is a Trademark of MIT. - * - */ - - -/* - * Xlib.h - Header definition and support file for the C subroutine - * interface library (Xlib) to the X Window System Protocol (V11). - * Structures and symbols starting with "_" are private to the library. - */ -#ifndef _XLIB_H_ -#define _XLIB_H_ - -#define XlibSpecificationRelease 5 - -#if !defined(MAC_TCL) && !defined(MAC_OSX_TK) -# include <X11/X.h> -#endif -#ifdef MAC_TCL -# include <X.h> -# define Cursor XCursor -# define Region XRegion -#endif -#ifdef MAC_OSX_TK -# include <X11/X.h> -# define Cursor XCursor -# define Region XRegion -#endif - -/* applications should not depend on these two headers being included! */ -#ifdef MAC_TCL -#include <Xfuncproto.h> -#else -#include <X11/Xfuncproto.h> -#endif - -#ifndef X_WCHAR -#ifdef X_NOT_STDC_ENV -#define X_WCHAR -#endif -#endif - -#ifndef X_WCHAR -#include <stddef.h> -#else -/* replace this with #include or typedef appropriate for your system */ -typedef unsigned long wchar_t; -#endif - -typedef char *XPointer; - -#define Bool int -#if defined(MAC_TCL) || defined(MAC_OSX_TK) -/* Use define rather than typedef, since may need to undefine this later */ -#define Status int -#else -typedef int Status; -#endif -#define True 1 -#define False 0 - -#define QueuedAlready 0 -#define QueuedAfterReading 1 -#define QueuedAfterFlush 2 - -#define ConnectionNumber(dpy) ((dpy)->fd) -#define RootWindow(dpy, scr) (((dpy)->screens[(scr)]).root) -#define DefaultScreen(dpy) ((dpy)->default_screen) -#define DefaultRootWindow(dpy) (((dpy)->screens[(dpy)->default_screen]).root) -#define DefaultVisual(dpy, scr) (((dpy)->screens[(scr)]).root_visual) -#define DefaultGC(dpy, scr) (((dpy)->screens[(scr)]).default_gc) -#define BlackPixel(dpy, scr) (((dpy)->screens[(scr)]).black_pixel) -#define WhitePixel(dpy, scr) (((dpy)->screens[(scr)]).white_pixel) -#define AllPlanes ((unsigned long)~0L) -#define QLength(dpy) ((dpy)->qlen) -#define DisplayWidth(dpy, scr) (((dpy)->screens[(scr)]).width) -#define DisplayHeight(dpy, scr) (((dpy)->screens[(scr)]).height) -#define DisplayWidthMM(dpy, scr)(((dpy)->screens[(scr)]).mwidth) -#define DisplayHeightMM(dpy, scr)(((dpy)->screens[(scr)]).mheight) -#define DisplayPlanes(dpy, scr) (((dpy)->screens[(scr)]).root_depth) -#define DisplayCells(dpy, scr) (DefaultVisual((dpy), (scr))->map_entries) -#define ScreenCount(dpy) ((dpy)->nscreens) -#define ServerVendor(dpy) ((dpy)->vendor) -#define ProtocolVersion(dpy) ((dpy)->proto_major_version) -#define ProtocolRevision(dpy) ((dpy)->proto_minor_version) -#define VendorRelease(dpy) ((dpy)->release) -#define DisplayString(dpy) ((dpy)->display_name) -#define DefaultDepth(dpy, scr) (((dpy)->screens[(scr)]).root_depth) -#define DefaultColormap(dpy, scr)(((dpy)->screens[(scr)]).cmap) -#define BitmapUnit(dpy) ((dpy)->bitmap_unit) -#define BitmapBitOrder(dpy) ((dpy)->bitmap_bit_order) -#define BitmapPad(dpy) ((dpy)->bitmap_pad) -#define ImageByteOrder(dpy) ((dpy)->byte_order) -#define NextRequest(dpy) ((dpy)->request + 1) -#define LastKnownRequestProcessed(dpy) ((dpy)->last_request_read) - -/* macros for screen oriented applications (toolkit) */ -#define ScreenOfDisplay(dpy, scr)(&((dpy)->screens[(scr)])) -#define DefaultScreenOfDisplay(dpy) (&((dpy)->screens[(dpy)->default_screen])) -#define DisplayOfScreen(s) ((s)->display) -#define RootWindowOfScreen(s) ((s)->root) -#define BlackPixelOfScreen(s) ((s)->black_pixel) -#define WhitePixelOfScreen(s) ((s)->white_pixel) -#define DefaultColormapOfScreen(s)((s)->cmap) -#define DefaultDepthOfScreen(s) ((s)->root_depth) -#define DefaultGCOfScreen(s) ((s)->default_gc) -#define DefaultVisualOfScreen(s)((s)->root_visual) -#define WidthOfScreen(s) ((s)->width) -#define HeightOfScreen(s) ((s)->height) -#define WidthMMOfScreen(s) ((s)->mwidth) -#define HeightMMOfScreen(s) ((s)->mheight) -#define PlanesOfScreen(s) ((s)->root_depth) -#define CellsOfScreen(s) (DefaultVisualOfScreen((s))->map_entries) -#define MinCmapsOfScreen(s) ((s)->min_maps) -#define MaxCmapsOfScreen(s) ((s)->max_maps) -#define DoesSaveUnders(s) ((s)->save_unders) -#define DoesBackingStore(s) ((s)->backing_store) -#define EventMaskOfScreen(s) ((s)->root_input_mask) - -/* - * Extensions need a way to hang private data on some structures. - */ -typedef struct _XExtData { - int number; /* number returned by XRegisterExtension */ - struct _XExtData *next; /* next item on list of data for structure */ - int (*free_private)(); /* called to free private storage */ - XPointer private_data; /* data private to this extension. */ -} XExtData; - -/* - * This file contains structures used by the extension mechanism. - */ -typedef struct { /* public to extension, cannot be changed */ - int extension; /* extension number */ - int major_opcode; /* major op-code assigned by server */ - int first_event; /* first event number for the extension */ - int first_error; /* first error number for the extension */ -} XExtCodes; - -/* - * Data structure for retrieving info about pixmap formats. - */ - -typedef struct { - int depth; - int bits_per_pixel; - int scanline_pad; -} XPixmapFormatValues; - - -/* - * Data structure for setting graphics context. - */ -typedef struct { - int function; /* logical operation */ - unsigned long plane_mask;/* plane mask */ - unsigned long foreground;/* foreground pixel */ - unsigned long background;/* background pixel */ - int line_width; /* line width */ - int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */ - int cap_style; /* CapNotLast, CapButt, - CapRound, CapProjecting */ - int join_style; /* JoinMiter, JoinRound, JoinBevel */ - int fill_style; /* FillSolid, FillTiled, - FillStippled, FillOpaeueStippled */ - int fill_rule; /* EvenOddRule, WindingRule */ - int arc_mode; /* ArcChord, ArcPieSlice */ - Pixmap tile; /* tile pixmap for tiling operations */ - Pixmap stipple; /* stipple 1 plane pixmap for stipping */ - int ts_x_origin; /* offset for tile or stipple operations */ - int ts_y_origin; - Font font; /* default text font for text operations */ - int subwindow_mode; /* ClipByChildren, IncludeInferiors */ - Bool graphics_exposures;/* boolean, should exposures be generated */ - int clip_x_origin; /* origin for clipping */ - int clip_y_origin; - Pixmap clip_mask; /* bitmap clipping; other calls for rects */ - int dash_offset; /* patterned/dashed line information */ - char dashes; -} XGCValues; - -/* - * Graphics context. The contents of this structure are implementation - * dependent. A GC should be treated as opaque by application code. - */ - -typedef XGCValues *GC; - -/* - * Visual structure; contains information about colormapping possible. - */ -typedef struct { - XExtData *ext_data; /* hook for extension to hang data */ - VisualID visualid; /* visual id of this visual */ -#if defined(__cplusplus) || defined(c_plusplus) - int c_class; /* C++ class of screen (monochrome, etc.) */ -#else - int class; /* class of screen (monochrome, etc.) */ -#endif - unsigned long red_mask, green_mask, blue_mask; /* mask values */ - int bits_per_rgb; /* log base 2 of distinct color values */ - int map_entries; /* color map entries */ -} Visual; - -/* - * Depth structure; contains information for each possible depth. - */ -typedef struct { - int depth; /* this depth (Z) of the depth */ - int nvisuals; /* number of Visual types at this depth */ - Visual *visuals; /* list of visuals possible at this depth */ -} Depth; - -/* - * Information about the screen. The contents of this structure are - * implementation dependent. A Screen should be treated as opaque - * by application code. - */ -typedef struct { - XExtData *ext_data; /* hook for extension to hang data */ - struct _XDisplay *display;/* back pointer to display structure */ - Window root; /* Root window id. */ - int width, height; /* width and height of screen */ - int mwidth, mheight; /* width and height of in millimeters */ - int ndepths; /* number of depths possible */ - Depth *depths; /* list of allowable depths on the screen */ - int root_depth; /* bits per pixel */ - Visual *root_visual; /* root visual */ - GC default_gc; /* GC for the root root visual */ - Colormap cmap; /* default color map */ - unsigned long white_pixel; - unsigned long black_pixel; /* White and Black pixel values */ - int max_maps, min_maps; /* max and min color maps */ - int backing_store; /* Never, WhenMapped, Always */ - Bool save_unders; - long root_input_mask; /* initial root input mask */ -} Screen; - -/* - * Format structure; describes ZFormat data the screen will understand. - */ -typedef struct { - XExtData *ext_data; /* hook for extension to hang data */ - int depth; /* depth of this image format */ - int bits_per_pixel; /* bits/pixel at this depth */ - int scanline_pad; /* scanline must padded to this multiple */ -} ScreenFormat; - -/* - * Data structure for setting window attributes. - */ -typedef struct { - Pixmap background_pixmap; /* background or None or ParentRelative */ - unsigned long background_pixel; /* background pixel */ - Pixmap border_pixmap; /* border of the window */ - unsigned long border_pixel; /* border pixel value */ - int bit_gravity; /* one of bit gravity values */ - int win_gravity; /* one of the window gravity values */ - int backing_store; /* NotUseful, WhenMapped, Always */ - unsigned long backing_planes;/* planes to be preseved if possible */ - unsigned long backing_pixel;/* value to use in restoring planes */ - Bool save_under; /* should bits under be saved? (popups) */ - long event_mask; /* set of events that should be saved */ - long do_not_propagate_mask; /* set of events that should not propagate */ - Bool override_redirect; /* boolean value for override-redirect */ - Colormap colormap; /* color map to be associated with window */ - Cursor cursor; /* cursor to be displayed (or None) */ -} XSetWindowAttributes; - -typedef struct { - int x, y; /* location of window */ - int width, height; /* width and height of window */ - int border_width; /* border width of window */ - int depth; /* depth of window */ - Visual *visual; /* the associated visual structure */ - Window root; /* root of screen containing window */ -#if defined(__cplusplus) || defined(c_plusplus) - int c_class; /* C++ InputOutput, InputOnly*/ -#else - int class; /* InputOutput, InputOnly*/ -#endif - int bit_gravity; /* one of bit gravity values */ - int win_gravity; /* one of the window gravity values */ - int backing_store; /* NotUseful, WhenMapped, Always */ - unsigned long backing_planes;/* planes to be preserved if possible */ - unsigned long backing_pixel;/* value to be used when restoring planes */ - Bool save_under; /* boolean, should bits under be saved? */ - Colormap colormap; /* color map to be associated with window */ - Bool map_installed; /* boolean, is color map currently installed*/ - int map_state; /* IsUnmapped, IsUnviewable, IsViewable */ - long all_event_masks; /* set of events all people have interest in*/ - long your_event_mask; /* my event mask */ - long do_not_propagate_mask; /* set of events that should not propagate */ - Bool override_redirect; /* boolean value for override-redirect */ - Screen *screen; /* back pointer to correct screen */ -} XWindowAttributes; - -/* - * Data structure for host setting; getting routines. - * - */ - -typedef struct { - int family; /* for example FamilyInternet */ - int length; /* length of address, in bytes */ - char *address; /* pointer to where to find the bytes */ -} XHostAddress; - -/* - * Data structure for "image" data, used by image manipulation routines. - */ -typedef struct _XImage { - int width, height; /* size of image */ - int xoffset; /* number of pixels offset in X direction */ - int format; /* XYBitmap, XYPixmap, ZPixmap */ - char *data; /* pointer to image data */ - int byte_order; /* data byte order, LSBFirst, MSBFirst */ - int bitmap_unit; /* quant. of scanline 8, 16, 32 */ - int bitmap_bit_order; /* LSBFirst, MSBFirst */ - int bitmap_pad; /* 8, 16, 32 either XY or ZPixmap */ - int depth; /* depth of image */ - int bytes_per_line; /* accelarator to next line */ - int bits_per_pixel; /* bits per pixel (ZPixmap) */ - unsigned long red_mask; /* bits in z arrangment */ - unsigned long green_mask; - unsigned long blue_mask; - XPointer obdata; /* hook for the object routines to hang on */ - struct funcs { /* image manipulation routines */ - struct _XImage *(*create_image)(); -#if NeedFunctionPrototypes - int (*destroy_image) (struct _XImage *); - unsigned long (*get_pixel) (struct _XImage *, int, int); - int (*put_pixel) (struct _XImage *, int, int, unsigned long); - struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int); - int (*add_pixel) (struct _XImage *, long); -#else - int (*destroy_image)(); - unsigned long (*get_pixel)(); - int (*put_pixel)(); - struct _XImage *(*sub_image)(); - int (*add_pixel)(); -#endif - } f; -} XImage; - -/* - * Data structure for XReconfigureWindow - */ -typedef struct { - int x, y; - int width, height; - int border_width; - Window sibling; - int stack_mode; -} XWindowChanges; - -/* - * Data structure used by color operations - */ -typedef struct { - unsigned long pixel; - unsigned short red, green, blue; - char flags; /* do_red, do_green, do_blue */ - char pad; -} XColor; - -/* - * Data structures for graphics operations. On most machines, these are - * congruent with the wire protocol structures, so reformatting the data - * can be avoided on these architectures. - */ -typedef struct { - short x1, y1, x2, y2; -} XSegment; - -typedef struct { - short x, y; -} XPoint; - -typedef struct { - short x, y; - unsigned short width, height; -} XRectangle; - -typedef struct { - short x, y; - unsigned short width, height; - short angle1, angle2; -} XArc; - - -/* Data structure for XChangeKeyboardControl */ - -typedef struct { - int key_click_percent; - int bell_percent; - int bell_pitch; - int bell_duration; - int led; - int led_mode; - int key; - int auto_repeat_mode; /* On, Off, Default */ -} XKeyboardControl; - -/* Data structure for XGetKeyboardControl */ - -typedef struct { - int key_click_percent; - int bell_percent; - unsigned int bell_pitch, bell_duration; - unsigned long led_mask; - int global_auto_repeat; - char auto_repeats[32]; -} XKeyboardState; - -/* Data structure for XGetMotionEvents. */ - -typedef struct { - Time time; - short x, y; -} XTimeCoord; - -/* Data structure for X{Set,Get}ModifierMapping */ - -typedef struct { - int max_keypermod; /* The server's max # of keys per modifier */ - KeyCode *modifiermap; /* An 8 by max_keypermod array of modifiers */ -} XModifierKeymap; - - -/* - * Display datatype maintaining display specific data. - * The contents of this structure are implementation dependent. - * A Display should be treated as opaque by application code. - */ -typedef struct _XDisplay { - XExtData *ext_data; /* hook for extension to hang data */ - struct _XFreeFuncs *free_funcs; /* internal free functions */ - int fd; /* Network socket. */ - int conn_checker; /* ugly thing used by _XEventsQueued */ - int proto_major_version;/* maj. version of server's X protocol */ - int proto_minor_version;/* minor version of servers X protocol */ - char *vendor; /* vendor of the server hardware */ - XID resource_base; /* resource ID base */ - XID resource_mask; /* resource ID mask bits */ - XID resource_id; /* allocator current ID */ - int resource_shift; /* allocator shift to correct bits */ - XID (*resource_alloc)(); /* allocator function */ - int byte_order; /* screen byte order, LSBFirst, MSBFirst */ - int bitmap_unit; /* padding and data requirements */ - int bitmap_pad; /* padding requirements on bitmaps */ - int bitmap_bit_order; /* LeastSignificant or MostSignificant */ - int nformats; /* number of pixmap formats in list */ - ScreenFormat *pixmap_format; /* pixmap format list */ - int vnumber; /* Xlib's X protocol version number. */ - int release; /* release of the server */ - struct _XSQEvent *head, *tail; /* Input event queue. */ - int qlen; /* Length of input event queue */ - unsigned long last_request_read; /* seq number of last event read */ - unsigned long request; /* sequence number of last request. */ - char *last_req; /* beginning of last request, or dummy */ - char *buffer; /* Output buffer starting address. */ - char *bufptr; /* Output buffer index pointer. */ - char *bufmax; /* Output buffer maximum+1 address. */ - unsigned max_request_size; /* maximum number 32 bit words in request*/ - struct _XrmHashBucketRec *db; - int (*synchandler)(); /* Synchronization handler */ - char *display_name; /* "host:display" string used on this connect*/ - int default_screen; /* default screen for operations */ - int nscreens; /* number of screens on this server*/ - Screen *screens; /* pointer to list of screens */ - unsigned long motion_buffer; /* size of motion buffer */ - unsigned long flags; /* internal connection flags */ - int min_keycode; /* minimum defined keycode */ - int max_keycode; /* maximum defined keycode */ - KeySym *keysyms; /* This server's keysyms */ - XModifierKeymap *modifiermap; /* This server's modifier keymap */ - int keysyms_per_keycode;/* number of rows */ - char *xdefaults; /* contents of defaults from server */ - char *scratch_buffer; /* place to hang scratch buffer */ - unsigned long scratch_length; /* length of scratch buffer */ - int ext_number; /* extension number on this display */ - struct _XExten *ext_procs; /* extensions initialized on this display */ - /* - * the following can be fixed size, as the protocol defines how - * much address space is available. - * While this could be done using the extension vector, there - * may be MANY events processed, so a search through the extension - * list to find the right procedure for each event might be - * expensive if many extensions are being used. - */ - Bool (*event_vec[128])(); /* vector for wire to event */ - int (*wire_vec[128])(); /* vector for event to wire */ - KeySym lock_meaning; /* for XLookupString */ - struct _XLockInfo *lock; /* multi-thread state, display lock */ - struct _XInternalAsync *async_handlers; /* for internal async */ - unsigned long bigreq_size; /* max size of big requests */ - struct _XLockPtrs *lock_fns; /* pointers to threads functions */ - /* things above this line should not move, for binary compatibility */ - struct _XKeytrans *key_bindings; /* for XLookupString */ - Font cursor_font; /* for XCreateFontCursor */ - struct _XDisplayAtoms *atoms; /* for XInternAtom */ - unsigned int mode_switch; /* keyboard group modifiers */ - struct _XContextDB *context_db; /* context database */ - Bool (**error_vec)(); /* vector for wire to error */ - /* - * Xcms information - */ - struct { - XPointer defaultCCCs; /* pointer to an array of default XcmsCCC */ - XPointer clientCmaps; /* pointer to linked list of XcmsCmapRec */ - XPointer perVisualIntensityMaps; - /* linked list of XcmsIntensityMap */ - } cms; - struct _XIMFilter *im_filters; - struct _XSQEvent *qfree; /* unallocated event queue elements */ - unsigned long next_event_serial_num; /* inserted into next queue elt */ - int (*savedsynchandler)(); /* user synchandler when Xlib usurps */ -} Display; - -#if NeedFunctionPrototypes /* prototypes require event type definitions */ -#undef _XEVENT_ -#endif -#ifndef _XEVENT_ - -#define XMaxTransChars 4 - -/* - * Definitions of specific events. - */ -typedef struct { - int type; /* of event */ - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; /* "event" window it is reported relative to */ - Window root; /* root window that the event occured on */ - Window subwindow; /* child window */ - Time time; /* milliseconds */ - int x, y; /* pointer x, y coordinates in event window */ - int x_root, y_root; /* coordinates relative to root */ - unsigned int state; /* key or button mask */ - unsigned int keycode; /* detail */ - Bool same_screen; /* same screen flag */ - char trans_chars[XMaxTransChars]; - /* translated characters */ - int nbytes; -} XKeyEvent; -typedef XKeyEvent XKeyPressedEvent; -typedef XKeyEvent XKeyReleasedEvent; - -typedef struct { - int type; /* of event */ - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; /* "event" window it is reported relative to */ - Window root; /* root window that the event occured on */ - Window subwindow; /* child window */ - Time time; /* milliseconds */ - int x, y; /* pointer x, y coordinates in event window */ - int x_root, y_root; /* coordinates relative to root */ - unsigned int state; /* key or button mask */ - unsigned int button; /* detail */ - Bool same_screen; /* same screen flag */ -} XButtonEvent; -typedef XButtonEvent XButtonPressedEvent; -typedef XButtonEvent XButtonReleasedEvent; - -typedef struct { - int type; /* of event */ - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; /* "event" window reported relative to */ - Window root; /* root window that the event occured on */ - Window subwindow; /* child window */ - Time time; /* milliseconds */ - int x, y; /* pointer x, y coordinates in event window */ - int x_root, y_root; /* coordinates relative to root */ - unsigned int state; /* key or button mask */ - char is_hint; /* detail */ - Bool same_screen; /* same screen flag */ -} XMotionEvent; -typedef XMotionEvent XPointerMovedEvent; - -typedef struct { - int type; /* of event */ - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; /* "event" window reported relative to */ - Window root; /* root window that the event occured on */ - Window subwindow; /* child window */ - Time time; /* milliseconds */ - int x, y; /* pointer x, y coordinates in event window */ - int x_root, y_root; /* coordinates relative to root */ - int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */ - int detail; - /* - * NotifyAncestor, NotifyVirtual, NotifyInferior, - * NotifyNonlinear,NotifyNonlinearVirtual - */ - Bool same_screen; /* same screen flag */ - Bool focus; /* boolean focus */ - unsigned int state; /* key or button mask */ -} XCrossingEvent; -typedef XCrossingEvent XEnterWindowEvent; -typedef XCrossingEvent XLeaveWindowEvent; - -typedef struct { - int type; /* FocusIn or FocusOut */ - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; /* window of event */ - int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */ - int detail; - /* - * NotifyAncestor, NotifyVirtual, NotifyInferior, - * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer, - * NotifyPointerRoot, NotifyDetailNone - */ -} XFocusChangeEvent; -typedef XFocusChangeEvent XFocusInEvent; -typedef XFocusChangeEvent XFocusOutEvent; - -/* generated on EnterWindow and FocusIn when KeyMapState selected */ -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; - char key_vector[32]; -} XKeymapEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; - int x, y; - int width, height; - int count; /* if non-zero, at least this many more */ -} XExposeEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Drawable drawable; - int x, y; - int width, height; - int count; /* if non-zero, at least this many more */ - int major_code; /* core is CopyArea or CopyPlane */ - int minor_code; /* not defined in the core */ -} XGraphicsExposeEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Drawable drawable; - int major_code; /* core is CopyArea or CopyPlane */ - int minor_code; /* not defined in the core */ -} XNoExposeEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; - int state; /* Visibility state */ -} XVisibilityEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window parent; /* parent of the window */ - Window window; /* window id of window created */ - int x, y; /* window location */ - int width, height; /* size of window */ - int border_width; /* border width */ - Bool override_redirect; /* creation should be overridden */ -} XCreateWindowEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window event; - Window window; -} XDestroyWindowEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window event; - Window window; - Bool from_configure; -} XUnmapEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window event; - Window window; - Bool override_redirect; /* boolean, is override set... */ -} XMapEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window parent; - Window window; -} XMapRequestEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window event; - Window window; - Window parent; - int x, y; - Bool override_redirect; -} XReparentEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window event; - Window window; - int x, y; - int width, height; - int border_width; - Window above; - Bool override_redirect; -} XConfigureEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window event; - Window window; - int x, y; -} XGravityEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; - int width, height; -} XResizeRequestEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window parent; - Window window; - int x, y; - int width, height; - int border_width; - Window above; - int detail; /* Above, Below, TopIf, BottomIf, Opposite */ - unsigned long value_mask; -} XConfigureRequestEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window event; - Window window; - int place; /* PlaceOnTop, PlaceOnBottom */ -} XCirculateEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window parent; - Window window; - int place; /* PlaceOnTop, PlaceOnBottom */ -} XCirculateRequestEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; - Atom atom; - Time time; - int state; /* NewValue, Deleted */ -} XPropertyEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; - Atom selection; - Time time; -} XSelectionClearEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window owner; - Window requestor; - Atom selection; - Atom target; - Atom property; - Time time; -} XSelectionRequestEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window requestor; - Atom selection; - Atom target; - Atom property; /* ATOM or None */ - Time time; -} XSelectionEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; - Colormap colormap; /* COLORMAP or None */ -#if defined(__cplusplus) || defined(c_plusplus) - Bool c_new; /* C++ */ -#else - Bool new; -#endif - int state; /* ColormapInstalled, ColormapUninstalled */ -} XColormapEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; - Atom message_type; - int format; - union { - char b[20]; - short s[10]; - long l[5]; - } data; -} XClientMessageEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display; /* Display the event was read from */ - Window window; /* unused */ - int request; /* one of MappingModifier, MappingKeyboard, - MappingPointer */ - int first_keycode; /* first keycode */ - int count; /* defines range of change w. first_keycode*/ -} XMappingEvent; - -typedef struct { - int type; - Display *display; /* Display the event was read from */ - XID resourceid; /* resource id */ - unsigned long serial; /* serial number of failed request */ - unsigned char error_code; /* error code of failed request */ - unsigned char request_code; /* Major op-code of failed request */ - unsigned char minor_code; /* Minor op-code of failed request */ -} XErrorEvent; - -typedef struct { - int type; - unsigned long serial; /* # of last request processed by server */ - Bool send_event; /* true if this came from a SendEvent request */ - Display *display;/* Display the event was read from */ - Window window; /* window on which event was requested in event mask */ -} XAnyEvent; - -/* - * this union is defined so Xlib can always use the same sized - * event structure internally, to avoid memory fragmentation. - */ -typedef union _XEvent { - int type; /* must not be changed; first element */ - XAnyEvent xany; - XKeyEvent xkey; - XButtonEvent xbutton; - XMotionEvent xmotion; - XCrossingEvent xcrossing; - XFocusChangeEvent xfocus; - XExposeEvent xexpose; - XGraphicsExposeEvent xgraphicsexpose; - XNoExposeEvent xnoexpose; - XVisibilityEvent xvisibility; - XCreateWindowEvent xcreatewindow; - XDestroyWindowEvent xdestroywindow; - XUnmapEvent xunmap; - XMapEvent xmap; - XMapRequestEvent xmaprequest; - XReparentEvent xreparent; - XConfigureEvent xconfigure; - XGravityEvent xgravity; - XResizeRequestEvent xresizerequest; - XConfigureRequestEvent xconfigurerequest; - XCirculateEvent xcirculate; - XCirculateRequestEvent xcirculaterequest; - XPropertyEvent xproperty; - XSelectionClearEvent xselectionclear; - XSelectionRequestEvent xselectionrequest; - XSelectionEvent xselection; - XColormapEvent xcolormap; - XClientMessageEvent xclient; - XMappingEvent xmapping; - XErrorEvent xerror; - XKeymapEvent xkeymap; - long pad[24]; -} XEvent; -#endif - -#define XAllocID(dpy) ((*(dpy)->resource_alloc)((dpy))) - -/* - * per character font metric information. - */ -typedef struct { - short lbearing; /* origin to left edge of raster */ - short rbearing; /* origin to right edge of raster */ - short width; /* advance to next char's origin */ - short ascent; /* baseline to top edge of raster */ - short descent; /* baseline to bottom edge of raster */ - unsigned short attributes; /* per char flags (not predefined) */ -} XCharStruct; - -/* - * To allow arbitrary information with fonts, there are additional properties - * returned. - */ -typedef struct { - Atom name; - unsigned long card32; -} XFontProp; - -typedef struct { - XExtData *ext_data; /* hook for extension to hang data */ - Font fid; /* Font id for this font */ - unsigned direction; /* hint about direction the font is painted */ - unsigned min_char_or_byte2;/* first character */ - unsigned max_char_or_byte2;/* last character */ - unsigned min_byte1; /* first row that exists */ - unsigned max_byte1; /* last row that exists */ - Bool all_chars_exist;/* flag if all characters have non-zero size*/ - unsigned default_char; /* char to print for undefined character */ - int n_properties; /* how many properties there are */ - XFontProp *properties; /* pointer to array of additional properties*/ - XCharStruct min_bounds; /* minimum bounds over all existing char*/ - XCharStruct max_bounds; /* maximum bounds over all existing char*/ - XCharStruct *per_char; /* first_char to last_char information */ - int ascent; /* log. extent above baseline for spacing */ - int descent; /* log. descent below baseline for spacing */ -} XFontStruct; - -/* - * PolyText routines take these as arguments. - */ -typedef struct { - char *chars; /* pointer to string */ - int nchars; /* number of characters */ - int delta; /* delta between strings */ - Font font; /* font to print it in, None don't change */ -} XTextItem; - -typedef struct { /* normal 16 bit characters are two bytes */ - unsigned char byte1; - unsigned char byte2; -} XChar2b; - -typedef struct { - XChar2b *chars; /* two byte characters */ - int nchars; /* number of characters */ - int delta; /* delta between strings */ - Font font; /* font to print it in, None don't change */ -} XTextItem16; - - -typedef union { Display *display; - GC gc; - Visual *visual; - Screen *screen; - ScreenFormat *pixmap_format; - XFontStruct *font; } XEDataObject; - -typedef struct { - XRectangle max_ink_extent; - XRectangle max_logical_extent; -} XFontSetExtents; - -typedef struct _XFontSet *XFontSet; - -typedef struct { - char *chars; - int nchars; - int delta; - XFontSet font_set; -} XmbTextItem; - -typedef struct { - wchar_t *chars; - int nchars; - int delta; - XFontSet font_set; -} XwcTextItem; - -typedef void (*XIMProc)(); - -typedef struct _XIM *XIM; -typedef struct _XIC *XIC; - -typedef unsigned long XIMStyle; - -typedef struct { - unsigned short count_styles; - XIMStyle *supported_styles; -} XIMStyles; - -#define XIMPreeditArea 0x0001L -#define XIMPreeditCallbacks 0x0002L -#define XIMPreeditPosition 0x0004L -#define XIMPreeditNothing 0x0008L -#define XIMPreeditNone 0x0010L -#define XIMStatusArea 0x0100L -#define XIMStatusCallbacks 0x0200L -#define XIMStatusNothing 0x0400L -#define XIMStatusNone 0x0800L - -#define XNVaNestedList "XNVaNestedList" -#define XNClientWindow "clientWindow" -#define XNInputStyle "inputStyle" -#define XNFocusWindow "focusWindow" -#define XNResourceName "resourceName" -#define XNResourceClass "resourceClass" -#define XNGeometryCallback "geometryCallback" -#define XNFilterEvents "filterEvents" -#define XNPreeditStartCallback "preeditStartCallback" -#define XNPreeditDoneCallback "preeditDoneCallback" -#define XNPreeditDrawCallback "preeditDrawCallback" -#define XNPreeditCaretCallback "preeditCaretCallback" -#define XNPreeditAttributes "preeditAttributes" -#define XNStatusStartCallback "statusStartCallback" -#define XNStatusDoneCallback "statusDoneCallback" -#define XNStatusDrawCallback "statusDrawCallback" -#define XNStatusAttributes "statusAttributes" -#define XNArea "area" -#define XNAreaNeeded "areaNeeded" -#define XNSpotLocation "spotLocation" -#define XNColormap "colorMap" -#define XNStdColormap "stdColorMap" -#define XNForeground "foreground" -#define XNBackground "background" -#define XNBackgroundPixmap "backgroundPixmap" -#define XNFontSet "fontSet" -#define XNLineSpace "lineSpace" -#define XNCursor "cursor" - -#define XBufferOverflow -1 -#define XLookupNone 1 -#define XLookupChars 2 -#define XLookupKeySym 3 -#define XLookupBoth 4 - -#if NeedFunctionPrototypes -typedef void *XVaNestedList; -#else -typedef XPointer XVaNestedList; -#endif - -typedef struct { - XPointer client_data; - XIMProc callback; -} XIMCallback; - -typedef unsigned long XIMFeedback; - -#define XIMReverse 1 -#define XIMUnderline (1<<1) -#define XIMHighlight (1<<2) -#define XIMPrimary (1<<5) -#define XIMSecondary (1<<6) -#define XIMTertiary (1<<7) - -typedef struct _XIMText { - unsigned short length; - XIMFeedback *feedback; - Bool encoding_is_wchar; - union { - char *multi_byte; - wchar_t *wide_char; - } string; -} XIMText; - -typedef struct _XIMPreeditDrawCallbackStruct { - int caret; /* Cursor offset within pre-edit string */ - int chg_first; /* Starting change position */ - int chg_length; /* Length of the change in character count */ - XIMText *text; -} XIMPreeditDrawCallbackStruct; - -typedef enum { - XIMForwardChar, XIMBackwardChar, - XIMForwardWord, XIMBackwardWord, - XIMCaretUp, XIMCaretDown, - XIMNextLine, XIMPreviousLine, - XIMLineStart, XIMLineEnd, - XIMAbsolutePosition, - XIMDontChange -} XIMCaretDirection; - -typedef enum { - XIMIsInvisible, /* Disable caret feedback */ - XIMIsPrimary, /* UI defined caret feedback */ - XIMIsSecondary /* UI defined caret feedback */ -} XIMCaretStyle; - -typedef struct _XIMPreeditCaretCallbackStruct { - int position; /* Caret offset within pre-edit string */ - XIMCaretDirection direction; /* Caret moves direction */ - XIMCaretStyle style; /* Feedback of the caret */ -} XIMPreeditCaretCallbackStruct; - -typedef enum { - XIMTextType, - XIMBitmapType -} XIMStatusDataType; - -typedef struct _XIMStatusDrawCallbackStruct { - XIMStatusDataType type; - union { - XIMText *text; - Pixmap bitmap; - } data; -} XIMStatusDrawCallbackStruct; - -typedef int (*XErrorHandler) ( /* WARNING, this type not in Xlib spec */ -#if NeedFunctionPrototypes - Display* /* display */, - XErrorEvent* /* error_event */ -#endif -); - -_XFUNCPROTOBEGIN - - - -#include "../../../pTk/tkIntXlibDecls.h" - -_XFUNCPROTOEND - -#if defined(MAC_TCL) || defined(MAC_OSX_TK) -# undef Cursor -#endif - -#endif /* _XLIB_H_ */ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/X11/Xutil.h b/Master/tlpkg/tlperl.old/lib/Tk/X11/Xutil.h deleted file mode 100644 index af44e0e9c2e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/X11/Xutil.h +++ /dev/null @@ -1,855 +0,0 @@ -/* $XConsortium: Xutil.h,v 11.73 91/07/30 16:21:37 rws Exp $ */ - -/*********************************************************** -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, -and the Massachusetts Institute of Technology, Cambridge, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Digital or MIT not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ - -#ifndef _XUTIL_H_ -#define _XUTIL_H_ - -/* You must include <X11/Xlib.h> before including this file */ - -#if defined(MAC_TCL) || defined(MAC_OSX_TK) -# define Region XRegion -#endif - -/* - * Bitmask returned by XParseGeometry(). Each bit tells if the corresponding - * value (x, y, width, height) was found in the parsed string. - */ -#define NoValue 0x0000 -#define XValue 0x0001 -#define YValue 0x0002 -#define WidthValue 0x0004 -#define HeightValue 0x0008 -#define AllValues 0x000F -#define XNegative 0x0010 -#define YNegative 0x0020 - -/* - * new version containing base_width, base_height, and win_gravity fields; - * used with WM_NORMAL_HINTS. - */ -typedef struct { - long flags; /* marks which fields in this structure are defined */ - int x, y; /* obsolete for new window mgrs, but clients */ - int width, height; /* should set so old wm's don't mess up */ - int min_width, min_height; - int max_width, max_height; - int width_inc, height_inc; - struct { - int x; /* numerator */ - int y; /* denominator */ - } min_aspect, max_aspect; - int base_width, base_height; /* added by ICCCM version 1 */ - int win_gravity; /* added by ICCCM version 1 */ -} XSizeHints; - -/* - * The next block of definitions are for window manager properties that - * clients and applications use for communication. - */ - -/* flags argument in size hints */ -#define USPosition (1L << 0) /* user specified x, y */ -#define USSize (1L << 1) /* user specified width, height */ - -#define PPosition (1L << 2) /* program specified position */ -#define PSize (1L << 3) /* program specified size */ -#define PMinSize (1L << 4) /* program specified minimum size */ -#define PMaxSize (1L << 5) /* program specified maximum size */ -#define PResizeInc (1L << 6) /* program specified resize increments */ -#define PAspect (1L << 7) /* program specified min and max aspect ratios */ -#define PBaseSize (1L << 8) /* program specified base for incrementing */ -#define PWinGravity (1L << 9) /* program specified window gravity */ - -/* obsolete */ -#define PAllHints (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect) - - - -typedef struct { - long flags; /* marks which fields in this structure are defined */ - Bool input; /* does this application rely on the window manager to - get keyboard input? */ - int initial_state; /* see below */ - Pixmap icon_pixmap; /* pixmap to be used as icon */ - Window icon_window; /* window to be used as icon */ - int icon_x, icon_y; /* initial position of icon */ - Pixmap icon_mask; /* icon mask bitmap */ - XID window_group; /* id of related window group */ - /* this structure may be extended in the future */ -} XWMHints; - -/* definition for flags of XWMHints */ - -#define InputHint (1L << 0) -#define StateHint (1L << 1) -#define IconPixmapHint (1L << 2) -#define IconWindowHint (1L << 3) -#define IconPositionHint (1L << 4) -#define IconMaskHint (1L << 5) -#define WindowGroupHint (1L << 6) -#define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint| \ -IconPositionHint|IconMaskHint|WindowGroupHint) - -/* definitions for initial window state */ -#define WithdrawnState 0 /* for windows that are not mapped */ -#define NormalState 1 /* most applications want to start this way */ -#define IconicState 3 /* application wants to start as an icon */ - -/* - * Obsolete states no longer defined by ICCCM - */ -#define DontCareState 0 /* don't know or care */ -#define ZoomState 2 /* application wants to start zoomed */ -#define InactiveState 4 /* application believes it is seldom used; */ - /* some wm's may put it on inactive menu */ - - -/* - * new structure for manipulating TEXT properties; used with WM_NAME, - * WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND. - */ -typedef struct { - unsigned char *value; /* same as Property routines */ - Atom encoding; /* prop type */ - int format; /* prop data format: 8, 16, or 32 */ - unsigned long nitems; /* number of data items in value */ -} XTextProperty; - -#define XNoMemory -1 -#define XLocaleNotSupported -2 -#define XConverterNotFound -3 - -typedef enum { - XStringStyle, /* STRING */ - XCompoundTextStyle, /* COMPOUND_TEXT */ - XTextStyle, /* text in owner's encoding (current locale)*/ - XStdICCTextStyle /* STRING, else COMPOUND_TEXT */ -} XICCEncodingStyle; - -typedef struct { - int min_width, min_height; - int max_width, max_height; - int width_inc, height_inc; -} XIconSize; - -typedef struct { - char *res_name; - char *res_class; -} XClassHint; - -/* - * These macros are used to give some sugar to the image routines so that - * naive people are more comfortable with them. - */ -#define XDestroyImage(ximage) \ - ((*((ximage)->f.destroy_image))((ximage))) -#define XGetPixel(ximage, x, y) \ - ((*((ximage)->f.get_pixel))((ximage), (x), (y))) -#define XPutPixel(ximage, x, y, pixel) \ - ((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel))) -#define XSubImage(ximage, x, y, width, height) \ - ((*((ximage)->f.sub_image))((ximage), (x), (y), (width), (height))) -#define XAddPixel(ximage, value) \ - ((*((ximage)->f.add_pixel))((ximage), (value))) - -/* - * Compose sequence status structure, used in calling XLookupString. - */ -typedef struct _XComposeStatus { - XPointer compose_ptr; /* state table pointer */ - int chars_matched; /* match state */ -} XComposeStatus; - -/* - * Keysym macros, used on Keysyms to test for classes of symbols - */ -#define IsKeypadKey(keysym) \ - (((unsigned)(keysym) >= XK_KP_Space) && ((unsigned)(keysym) <= XK_KP_Equal)) - -#define IsCursorKey(keysym) \ - (((unsigned)(keysym) >= XK_Home) && ((unsigned)(keysym) < XK_Select)) - -#define IsPFKey(keysym) \ - (((unsigned)(keysym) >= XK_KP_F1) && ((unsigned)(keysym) <= XK_KP_F4)) - -#define IsFunctionKey(keysym) \ - (((unsigned)(keysym) >= XK_F1) && ((unsigned)(keysym) <= XK_F35)) - -#define IsMiscFunctionKey(keysym) \ - (((unsigned)(keysym) >= XK_Select) && ((unsigned)(keysym) <= XK_Break)) - -#define IsModifierKey(keysym) \ - ((((unsigned)(keysym) >= XK_Shift_L) && ((unsigned)(keysym) <= XK_Hyper_R)) \ - || ((unsigned)(keysym) == XK_Mode_switch) \ - || ((unsigned)(keysym) == XK_Num_Lock)) -/* - * opaque reference to Region data type - */ -typedef struct _XRegion *Region; - -/* Return values from XRectInRegion() */ - -#define RectangleOut 0 -#define RectangleIn 1 -#define RectanglePart 2 - - -/* - * Information used by the visual utility routines to find desired visual - * type from the many visuals a display may support. - */ - -typedef struct { - Visual *visual; - VisualID visualid; - int screen; - int depth; -#if defined(__cplusplus) || defined(c_plusplus) - int c_class; /* C++ */ -#else - int class; -#endif - unsigned long red_mask; - unsigned long green_mask; - unsigned long blue_mask; - int colormap_size; - int bits_per_rgb; -} XVisualInfo; - -#define VisualNoMask 0x0 -#define VisualIDMask 0x1 -#define VisualScreenMask 0x2 -#define VisualDepthMask 0x4 -#define VisualClassMask 0x8 -#define VisualRedMaskMask 0x10 -#define VisualGreenMaskMask 0x20 -#define VisualBlueMaskMask 0x40 -#define VisualColormapSizeMask 0x80 -#define VisualBitsPerRGBMask 0x100 -#define VisualAllMask 0x1FF - -/* - * This defines a window manager property that clients may use to - * share standard color maps of type RGB_COLOR_MAP: - */ -typedef struct { - Colormap colormap; - unsigned long red_max; - unsigned long red_mult; - unsigned long green_max; - unsigned long green_mult; - unsigned long blue_max; - unsigned long blue_mult; - unsigned long base_pixel; - VisualID visualid; /* added by ICCCM version 1 */ - XID killid; /* added by ICCCM version 1 */ -} XStandardColormap; - -#define ReleaseByFreeingColormap ((XID) 1L) /* for killid field above */ - - -/* - * return codes for XReadBitmapFile and XWriteBitmapFile - */ -#define BitmapSuccess 0 -#define BitmapOpenFailed 1 -#define BitmapFileInvalid 2 -#define BitmapNoMemory 3 - -/**************************************************************** - * - * Context Management - * - ****************************************************************/ - - -/* Associative lookup table return codes */ - -#define XCSUCCESS 0 /* No error. */ -#define XCNOMEM 1 /* Out of memory */ -#define XCNOENT 2 /* No entry in table */ - -typedef int XContext; - -#define XUniqueContext() ((XContext) XrmUniqueQuark()) -#define XStringToContext(string) ((XContext) XrmStringToQuark(string)) - -_XFUNCPROTOBEGIN - -/* The following declarations are alphabetized. */ - -extern XClassHint *XAllocClassHint ( -#if NeedFunctionPrototypes - void -#endif -); - -extern XIconSize *XAllocIconSize ( -#if NeedFunctionPrototypes - void -#endif -); - -extern XSizeHints *XAllocSizeHints ( -#if NeedFunctionPrototypes - void -#endif -); - -extern XStandardColormap *XAllocStandardColormap ( -#if NeedFunctionPrototypes - void -#endif -); - -extern XWMHints *XAllocWMHints ( -#if NeedFunctionPrototypes - void -#endif -); - -extern void XClipBox( -#if NeedFunctionPrototypes - Region /* r */, - XRectangle* /* rect_return */ -#endif -); - -extern Region XCreateRegion( -#if NeedFunctionPrototypes - void -#endif -); - -extern char *XDefaultString( -#if NeedFunctionPrototypes - void -#endif -); - -extern int XDeleteContext( -#if NeedFunctionPrototypes - Display* /* display */, - XID /* rid */, - XContext /* context */ -#endif -); - -extern void XDestroyRegion( -#if NeedFunctionPrototypes - Region /* r */ -#endif -); - -extern void XEmptyRegion( -#if NeedFunctionPrototypes - Region /* r */ -#endif -); - -extern void XEqualRegion( -#if NeedFunctionPrototypes - Region /* r1 */, - Region /* r2 */ -#endif -); - -extern int XFindContext( -#if NeedFunctionPrototypes - Display* /* display */, - XID /* rid */, - XContext /* context */, - XPointer* /* data_return */ -#endif -); - -extern int XGetClassHint( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XClassHint* /* class_hints_return */ -#endif -); - -extern int XGetIconSizes( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XIconSize** /* size_list_return */, - int* /* count_return */ -#endif -); - -extern int XGetNormalHints( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XSizeHints* /* hints_return */ -#endif -); - -extern int XGetRGBColormaps( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XStandardColormap** /* stdcmap_return */, - int* /* count_return */, - Atom /* property */ -#endif -); - -extern int XGetSizeHints( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XSizeHints* /* hints_return */, - Atom /* property */ -#endif -); - -extern int XGetStandardColormap( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XStandardColormap* /* colormap_return */, - Atom /* property */ -#endif -); - -extern int XGetTextProperty( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* window */, - XTextProperty* /* text_prop_return */, - Atom /* property */ -#endif -); - - -extern int XGetWMClientMachine( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XTextProperty* /* text_prop_return */ -#endif -); - -extern XWMHints *XGetWMHints( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */ -#endif -); - -extern int XGetWMIconName( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XTextProperty* /* text_prop_return */ -#endif -); - -extern int XGetWMName( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XTextProperty* /* text_prop_return */ -#endif -); - -extern int XGetWMNormalHints( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XSizeHints* /* hints_return */, - long* /* supplied_return */ -#endif -); - -extern int XGetWMSizeHints( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XSizeHints* /* hints_return */, - long* /* supplied_return */, - Atom /* property */ -#endif -); - -extern int XGetZoomHints( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XSizeHints* /* zhints_return */ -#endif -); - -extern void XIntersectRegion( -#if NeedFunctionPrototypes - Region /* sra */, - Region /* srb */, - Region /* dr_return */ -#endif -); - -extern int XLookupString( -#if NeedFunctionPrototypes - XKeyEvent* /* event_struct */, - char* /* buffer_return */, - int /* bytes_buffer */, - KeySym* /* keysym_return */, - XComposeStatus* /* status_in_out */ -#endif -); - -extern int XMatchVisualInfo( -#if NeedFunctionPrototypes - Display* /* display */, - int /* screen */, - int /* depth */, - int /* class */, - XVisualInfo* /* vinfo_return */ -#endif -); - -extern void XOffsetRegion( -#if NeedFunctionPrototypes - Region /* r */, - int /* dx */, - int /* dy */ -#endif -); - -extern Bool XPointInRegion( -#if NeedFunctionPrototypes - Region /* r */, - int /* x */, - int /* y */ -#endif -); - -extern Region XPolygonRegion( -#if NeedFunctionPrototypes - XPoint* /* points */, - int /* n */, - int /* fill_rule */ -#endif -); - -extern int XRectInRegion( -#if NeedFunctionPrototypes - Region /* r */, - int /* x */, - int /* y */, - unsigned int /* width */, - unsigned int /* height */ -#endif -); - -extern int XSaveContext( -#if NeedFunctionPrototypes - Display* /* display */, - XID /* rid */, - XContext /* context */, - _Xconst char* /* data */ -#endif -); - -extern void XSetClassHint( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XClassHint* /* class_hints */ -#endif -); - -extern void XSetIconSizes( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XIconSize* /* size_list */, - int /* count */ -#endif -); - -extern void XSetNormalHints( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XSizeHints* /* hints */ -#endif -); - -extern void XSetRGBColormaps( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XStandardColormap* /* stdcmaps */, - int /* count */, - Atom /* property */ -#endif -); - -extern void XSetSizeHints( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XSizeHints* /* hints */, - Atom /* property */ -#endif -); - -extern void XSetStandardProperties( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - _Xconst char* /* window_name */, - _Xconst char* /* icon_name */, - Pixmap /* icon_pixmap */, - char** /* argv */, - int /* argc */, - XSizeHints* /* hints */ -#endif -); - -extern void XSetTextProperty( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XTextProperty* /* text_prop */, - Atom /* property */ -#endif -); - -extern void XSetWMHints( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XWMHints* /* wm_hints */ -#endif -); - -extern void XSetWMIconName( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XTextProperty* /* text_prop */ -#endif -); - -extern void XSetWMName( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XTextProperty* /* text_prop */ -#endif -); - -extern void XSetWMNormalHints( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XSizeHints* /* hints */ -#endif -); - -extern void XSetWMProperties( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XTextProperty* /* window_name */, - XTextProperty* /* icon_name */, - char** /* argv */, - int /* argc */, - XSizeHints* /* normal_hints */, - XWMHints* /* wm_hints */, - XClassHint* /* class_hints */ -#endif -); - -extern void XmbSetWMProperties( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - _Xconst char* /* window_name */, - _Xconst char* /* icon_name */, - char** /* argv */, - int /* argc */, - XSizeHints* /* normal_hints */, - XWMHints* /* wm_hints */, - XClassHint* /* class_hints */ -#endif -); - -extern void XSetWMSizeHints( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XSizeHints* /* hints */, - Atom /* property */ -#endif -); - -extern void XSetRegion( -#if NeedFunctionPrototypes - Display* /* display */, - GC /* gc */, - Region /* r */ -#endif -); - -extern void XSetStandardColormap( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XStandardColormap* /* colormap */, - Atom /* property */ -#endif -); - -extern void XSetZoomHints( -#if NeedFunctionPrototypes - Display* /* display */, - Window /* w */, - XSizeHints* /* zhints */ -#endif -); - -extern void XShrinkRegion( -#if NeedFunctionPrototypes - Region /* r */, - int /* dx */, - int /* dy */ -#endif -); - -extern void XSubtractRegion( -#if NeedFunctionPrototypes - Region /* sra */, - Region /* srb */, - Region /* dr_return */ -#endif -); - -extern int XmbTextListToTextProperty( -#if NeedFunctionPrototypes - Display* /* display */, - char** /* list */, - int /* count */, - XICCEncodingStyle /* style */, - XTextProperty* /* text_prop_return */ -#endif -); - -extern int XwcTextListToTextProperty( -#if NeedFunctionPrototypes - Display* /* display */, - wchar_t** /* list */, - int /* count */, - XICCEncodingStyle /* style */, - XTextProperty* /* text_prop_return */ -#endif -); - -extern void XwcFreeStringList( -#if NeedFunctionPrototypes - wchar_t** /* list */ -#endif -); - -extern int XTextPropertyToStringList( -#if NeedFunctionPrototypes - XTextProperty* /* text_prop */, - char*** /* list_return */, - int* /* count_return */ -#endif -); - -extern int XmbTextPropertyToTextList( -#if NeedFunctionPrototypes - Display* /* display */, - XTextProperty* /* text_prop */, - char*** /* list_return */, - int* /* count_return */ -#endif -); - -extern int XwcTextPropertyToTextList( -#if NeedFunctionPrototypes - Display* /* display */, - XTextProperty* /* text_prop */, - wchar_t*** /* list_return */, - int* /* count_return */ -#endif -); - -extern void XUnionRectWithRegion( -#if NeedFunctionPrototypes - XRectangle* /* rectangle */, - Region /* src_region */, - Region /* dest_region_return */ -#endif -); - -extern void XUnionRegion( -#if NeedFunctionPrototypes - Region /* sra */, - Region /* srb */, - Region /* dr_return */ -#endif -); - -extern int XWMGeometry( -#if NeedFunctionPrototypes - Display* /* display */, - int /* screen_number */, - _Xconst char* /* user_geometry */, - _Xconst char* /* default_geometry */, - unsigned int /* border_width */, - XSizeHints* /* hints */, - int* /* x_return */, - int* /* y_return */, - int* /* width_return */, - int* /* height_return */, - int* /* gravity_return */ -#endif -); - -extern void XXorRegion( -#if NeedFunctionPrototypes - Region /* sra */, - Region /* srb */, - Region /* dr_return */ -#endif -); - -_XFUNCPROTOEND - -#if defined(MAC_TCL) || defined(MAC_OSX_TK) -# undef Region -#endif - -#endif /* _XUTIL_H_ */ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/X11/cursorfont.h b/Master/tlpkg/tlperl.old/lib/Tk/X11/cursorfont.h deleted file mode 100644 index 617274fa806..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/X11/cursorfont.h +++ /dev/null @@ -1,79 +0,0 @@ -/* $XConsortium: cursorfont.h,v 1.2 88/09/06 16:44:27 jim Exp $ */ -#define XC_num_glyphs 154 -#define XC_X_cursor 0 -#define XC_arrow 2 -#define XC_based_arrow_down 4 -#define XC_based_arrow_up 6 -#define XC_boat 8 -#define XC_bogosity 10 -#define XC_bottom_left_corner 12 -#define XC_bottom_right_corner 14 -#define XC_bottom_side 16 -#define XC_bottom_tee 18 -#define XC_box_spiral 20 -#define XC_center_ptr 22 -#define XC_circle 24 -#define XC_clock 26 -#define XC_coffee_mug 28 -#define XC_cross 30 -#define XC_cross_reverse 32 -#define XC_crosshair 34 -#define XC_diamond_cross 36 -#define XC_dot 38 -#define XC_dotbox 40 -#define XC_double_arrow 42 -#define XC_draft_large 44 -#define XC_draft_small 46 -#define XC_draped_box 48 -#define XC_exchange 50 -#define XC_fleur 52 -#define XC_gobbler 54 -#define XC_gumby 56 -#define XC_hand1 58 -#define XC_hand2 60 -#define XC_heart 62 -#define XC_icon 64 -#define XC_iron_cross 66 -#define XC_left_ptr 68 -#define XC_left_side 70 -#define XC_left_tee 72 -#define XC_leftbutton 74 -#define XC_ll_angle 76 -#define XC_lr_angle 78 -#define XC_man 80 -#define XC_middlebutton 82 -#define XC_mouse 84 -#define XC_pencil 86 -#define XC_pirate 88 -#define XC_plus 90 -#define XC_question_arrow 92 -#define XC_right_ptr 94 -#define XC_right_side 96 -#define XC_right_tee 98 -#define XC_rightbutton 100 -#define XC_rtl_logo 102 -#define XC_sailboat 104 -#define XC_sb_down_arrow 106 -#define XC_sb_h_double_arrow 108 -#define XC_sb_left_arrow 110 -#define XC_sb_right_arrow 112 -#define XC_sb_up_arrow 114 -#define XC_sb_v_double_arrow 116 -#define XC_shuttle 118 -#define XC_sizing 120 -#define XC_spider 122 -#define XC_spraycan 124 -#define XC_star 126 -#define XC_target 128 -#define XC_tcross 130 -#define XC_top_left_arrow 132 -#define XC_top_left_corner 134 -#define XC_top_right_corner 136 -#define XC_top_side 138 -#define XC_top_tee 140 -#define XC_trek 142 -#define XC_ul_angle 144 -#define XC_umbrella 146 -#define XC_ur_angle 148 -#define XC_watch 150 -#define XC_xterm 152 diff --git a/Master/tlpkg/tlperl.old/lib/Tk/X11/keysym.h b/Master/tlpkg/tlperl.old/lib/Tk/X11/keysym.h deleted file mode 100644 index 027afe08d5f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/X11/keysym.h +++ /dev/null @@ -1,39 +0,0 @@ -/* $XConsortium: keysym.h,v 1.13 91/03/13 20:09:49 rws Exp $ */ - -/*********************************************************** -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, -and the Massachusetts Institute of Technology, Cambridge, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Digital or MIT not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ - -/* default keysyms */ -#define XK_MISCELLANY -#define XK_LATIN1 -#define XK_LATIN2 -#define XK_LATIN3 -#define XK_LATIN4 -#define XK_GREEK - -#ifdef MAC_TCL -#include <keysymdef.h> -#else -#include <X11/keysymdef.h> -#endif diff --git a/Master/tlpkg/tlperl.old/lib/Tk/X11/keysymdef.h b/Master/tlpkg/tlperl.old/lib/Tk/X11/keysymdef.h deleted file mode 100644 index b22d41b3385..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/X11/keysymdef.h +++ /dev/null @@ -1,1169 +0,0 @@ -/* $XConsortium: keysymdef.h,v 1.15 93/04/02 10:57:36 rws Exp $ */ - -/*********************************************************** -Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, -and the Massachusetts Institute of Technology, Cambridge, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that copyright notice and this permission notice appear in -supporting documentation, and that the names of Digital or MIT not be -used in advertising or publicity pertaining to distribution of the -software without specific, written prior permission. - -DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL -DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR -ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - -******************************************************************/ - -#define XK_VoidSymbol 0xFFFFFF /* void symbol */ - -#ifdef XK_MISCELLANY -/* - * TTY Functions, cleverly chosen to map to ascii, for convenience of - * programming, but could have been arbitrary (at the cost of lookup - * tables in client code. - */ - -#define XK_BackSpace 0xFF08 /* back space, back char */ -#define XK_Tab 0xFF09 -#define XK_Linefeed 0xFF0A /* Linefeed, LF */ -#define XK_Clear 0xFF0B -#define XK_Return 0xFF0D /* Return, enter */ -#define XK_Pause 0xFF13 /* Pause, hold */ -#define XK_Scroll_Lock 0xFF14 -#define XK_Sys_Req 0xFF15 -#define XK_Escape 0xFF1B -#define XK_Delete 0xFFFF /* Delete, rubout */ - - - -/* International & multi-key character composition */ - -#define XK_Multi_key 0xFF20 /* Multi-key character compose */ - -/* Japanese keyboard support */ - -#define XK_Kanji 0xFF21 /* Kanji, Kanji convert */ -#define XK_Muhenkan 0xFF22 /* Cancel Conversion */ -#define XK_Henkan_Mode 0xFF23 /* Start/Stop Conversion */ -#define XK_Henkan 0xFF23 /* Alias for Henkan_Mode */ -#define XK_Romaji 0xFF24 /* to Romaji */ -#define XK_Hiragana 0xFF25 /* to Hiragana */ -#define XK_Katakana 0xFF26 /* to Katakana */ -#define XK_Hiragana_Katakana 0xFF27 /* Hiragana/Katakana toggle */ -#define XK_Zenkaku 0xFF28 /* to Zenkaku */ -#define XK_Hankaku 0xFF29 /* to Hankaku */ -#define XK_Zenkaku_Hankaku 0xFF2A /* Zenkaku/Hankaku toggle */ -#define XK_Touroku 0xFF2B /* Add to Dictionary */ -#define XK_Massyo 0xFF2C /* Delete from Dictionary */ -#define XK_Kana_Lock 0xFF2D /* Kana Lock */ -#define XK_Kana_Shift 0xFF2E /* Kana Shift */ -#define XK_Eisu_Shift 0xFF2F /* Alphanumeric Shift */ -#define XK_Eisu_toggle 0xFF30 /* Alphanumeric toggle */ - -/* Cursor control & motion */ - -#define XK_Home 0xFF50 -#define XK_Left 0xFF51 /* Move left, left arrow */ -#define XK_Up 0xFF52 /* Move up, up arrow */ -#define XK_Right 0xFF53 /* Move right, right arrow */ -#define XK_Down 0xFF54 /* Move down, down arrow */ -#define XK_Prior 0xFF55 /* Prior, previous */ -#define XK_Page_Up 0xFF55 -#define XK_Next 0xFF56 /* Next */ -#define XK_Page_Down 0xFF56 -#define XK_End 0xFF57 /* EOL */ -#define XK_Begin 0xFF58 /* BOL */ - -/* Special Windows keyboard keys */ - -#define XK_Win_L 0xFF5B /* Left-hand Windows */ -#define XK_Win_R 0xFF5C /* Right-hand Windows */ -#define XK_App 0xFF5D /* Menu key */ - -/* Misc Functions */ - -#define XK_Select 0xFF60 /* Select, mark */ -#define XK_Print 0xFF61 -#define XK_Execute 0xFF62 /* Execute, run, do */ -#define XK_Insert 0xFF63 /* Insert, insert here */ -#define XK_Undo 0xFF65 /* Undo, oops */ -#define XK_Redo 0xFF66 /* redo, again */ -#define XK_Menu 0xFF67 -#define XK_Find 0xFF68 /* Find, search */ -#define XK_Cancel 0xFF69 /* Cancel, stop, abort, exit */ -#define XK_Help 0xFF6A /* Help, ? */ -#define XK_Break 0xFF6B -#define XK_Mode_switch 0xFF7E /* Character set switch */ -#define XK_script_switch 0xFF7E /* Alias for mode_switch */ -#define XK_Num_Lock 0xFF7F - -/* Keypad Functions, keypad numbers cleverly chosen to map to ascii */ - -#define XK_KP_Space 0xFF80 /* space */ -#define XK_KP_Tab 0xFF89 -#define XK_KP_Enter 0xFF8D /* enter */ -#define XK_KP_F1 0xFF91 /* PF1, KP_A, ... */ -#define XK_KP_F2 0xFF92 -#define XK_KP_F3 0xFF93 -#define XK_KP_F4 0xFF94 -#define XK_KP_Home 0xFF95 -#define XK_KP_Left 0xFF96 -#define XK_KP_Up 0xFF97 -#define XK_KP_Right 0xFF98 -#define XK_KP_Down 0xFF99 -#define XK_KP_Prior 0xFF9A -#define XK_KP_Page_Up 0xFF9A -#define XK_KP_Next 0xFF9B -#define XK_KP_Page_Down 0xFF9B -#define XK_KP_End 0xFF9C -#define XK_KP_Begin 0xFF9D -#define XK_KP_Insert 0xFF9E -#define XK_KP_Delete 0xFF9F -#define XK_KP_Equal 0xFFBD /* equals */ -#define XK_KP_Multiply 0xFFAA -#define XK_KP_Add 0xFFAB -#define XK_KP_Separator 0xFFAC /* separator, often comma */ -#define XK_KP_Subtract 0xFFAD -#define XK_KP_Decimal 0xFFAE -#define XK_KP_Divide 0xFFAF - -#define XK_KP_0 0xFFB0 -#define XK_KP_1 0xFFB1 -#define XK_KP_2 0xFFB2 -#define XK_KP_3 0xFFB3 -#define XK_KP_4 0xFFB4 -#define XK_KP_5 0xFFB5 -#define XK_KP_6 0xFFB6 -#define XK_KP_7 0xFFB7 -#define XK_KP_8 0xFFB8 -#define XK_KP_9 0xFFB9 - - - -/* - * Auxilliary Functions; note the duplicate definitions for left and right - * function keys; Sun keyboards and a few other manufactures have such - * function key groups on the left and/or right sides of the keyboard. - * We've not found a keyboard with more than 35 function keys total. - */ - -#define XK_F1 0xFFBE -#define XK_F2 0xFFBF -#define XK_F3 0xFFC0 -#define XK_F4 0xFFC1 -#define XK_F5 0xFFC2 -#define XK_F6 0xFFC3 -#define XK_F7 0xFFC4 -#define XK_F8 0xFFC5 -#define XK_F9 0xFFC6 -#define XK_F10 0xFFC7 -#define XK_F11 0xFFC8 -#define XK_L1 0xFFC8 -#define XK_F12 0xFFC9 -#define XK_L2 0xFFC9 -#define XK_F13 0xFFCA -#define XK_L3 0xFFCA -#define XK_F14 0xFFCB -#define XK_L4 0xFFCB -#define XK_F15 0xFFCC -#define XK_L5 0xFFCC -#define XK_F16 0xFFCD -#define XK_L6 0xFFCD -#define XK_F17 0xFFCE -#define XK_L7 0xFFCE -#define XK_F18 0xFFCF -#define XK_L8 0xFFCF -#define XK_F19 0xFFD0 -#define XK_L9 0xFFD0 -#define XK_F20 0xFFD1 -#define XK_L10 0xFFD1 -#define XK_F21 0xFFD2 -#define XK_R1 0xFFD2 -#define XK_F22 0xFFD3 -#define XK_R2 0xFFD3 -#define XK_F23 0xFFD4 -#define XK_R3 0xFFD4 -#define XK_F24 0xFFD5 -#define XK_R4 0xFFD5 -#define XK_F25 0xFFD6 -#define XK_R5 0xFFD6 -#define XK_F26 0xFFD7 -#define XK_R6 0xFFD7 -#define XK_F27 0xFFD8 -#define XK_R7 0xFFD8 -#define XK_F28 0xFFD9 -#define XK_R8 0xFFD9 -#define XK_F29 0xFFDA -#define XK_R9 0xFFDA -#define XK_F30 0xFFDB -#define XK_R10 0xFFDB -#define XK_F31 0xFFDC -#define XK_R11 0xFFDC -#define XK_F32 0xFFDD -#define XK_R12 0xFFDD -#define XK_F33 0xFFDE -#define XK_R13 0xFFDE -#define XK_F34 0xFFDF -#define XK_R14 0xFFDF -#define XK_F35 0xFFE0 -#define XK_R15 0xFFE0 - -/* Modifiers */ - -#define XK_Shift_L 0xFFE1 /* Left shift */ -#define XK_Shift_R 0xFFE2 /* Right shift */ -#define XK_Control_L 0xFFE3 /* Left control */ -#define XK_Control_R 0xFFE4 /* Right control */ -#define XK_Caps_Lock 0xFFE5 /* Caps lock */ -#define XK_Shift_Lock 0xFFE6 /* Shift lock */ - -#define XK_Meta_L 0xFFE7 /* Left meta */ -#define XK_Meta_R 0xFFE8 /* Right meta */ -#define XK_Alt_L 0xFFE9 /* Left alt */ -#define XK_Alt_R 0xFFEA /* Right alt */ -#define XK_Super_L 0xFFEB /* Left super */ -#define XK_Super_R 0xFFEC /* Right super */ -#define XK_Hyper_L 0xFFED /* Left hyper */ -#define XK_Hyper_R 0xFFEE /* Right hyper */ -#endif /* XK_MISCELLANY */ - -/* - * Latin 1 - * Byte 3 = 0 - */ -#ifdef XK_LATIN1 -#define XK_space 0x020 -#define XK_exclam 0x021 -#define XK_quotedbl 0x022 -#define XK_numbersign 0x023 -#define XK_dollar 0x024 -#define XK_percent 0x025 -#define XK_ampersand 0x026 -#define XK_apostrophe 0x027 -#define XK_quoteright 0x027 /* deprecated */ -#define XK_parenleft 0x028 -#define XK_parenright 0x029 -#define XK_asterisk 0x02a -#define XK_plus 0x02b -#define XK_comma 0x02c -#define XK_minus 0x02d -#define XK_period 0x02e -#define XK_slash 0x02f -#define XK_0 0x030 -#define XK_1 0x031 -#define XK_2 0x032 -#define XK_3 0x033 -#define XK_4 0x034 -#define XK_5 0x035 -#define XK_6 0x036 -#define XK_7 0x037 -#define XK_8 0x038 -#define XK_9 0x039 -#define XK_colon 0x03a -#define XK_semicolon 0x03b -#define XK_less 0x03c -#define XK_equal 0x03d -#define XK_greater 0x03e -#define XK_question 0x03f -#define XK_at 0x040 -#define XK_A 0x041 -#define XK_B 0x042 -#define XK_C 0x043 -#define XK_D 0x044 -#define XK_E 0x045 -#define XK_F 0x046 -#define XK_G 0x047 -#define XK_H 0x048 -#define XK_I 0x049 -#define XK_J 0x04a -#define XK_K 0x04b -#define XK_L 0x04c -#define XK_M 0x04d -#define XK_N 0x04e -#define XK_O 0x04f -#define XK_P 0x050 -#define XK_Q 0x051 -#define XK_R 0x052 -#define XK_S 0x053 -#define XK_T 0x054 -#define XK_U 0x055 -#define XK_V 0x056 -#define XK_W 0x057 -#define XK_X 0x058 -#define XK_Y 0x059 -#define XK_Z 0x05a -#define XK_bracketleft 0x05b -#define XK_backslash 0x05c -#define XK_bracketright 0x05d -#define XK_asciicircum 0x05e -#define XK_underscore 0x05f -#define XK_grave 0x060 -#define XK_quoteleft 0x060 /* deprecated */ -#define XK_a 0x061 -#define XK_b 0x062 -#define XK_c 0x063 -#define XK_d 0x064 -#define XK_e 0x065 -#define XK_f 0x066 -#define XK_g 0x067 -#define XK_h 0x068 -#define XK_i 0x069 -#define XK_j 0x06a -#define XK_k 0x06b -#define XK_l 0x06c -#define XK_m 0x06d -#define XK_n 0x06e -#define XK_o 0x06f -#define XK_p 0x070 -#define XK_q 0x071 -#define XK_r 0x072 -#define XK_s 0x073 -#define XK_t 0x074 -#define XK_u 0x075 -#define XK_v 0x076 -#define XK_w 0x077 -#define XK_x 0x078 -#define XK_y 0x079 -#define XK_z 0x07a -#define XK_braceleft 0x07b -#define XK_bar 0x07c -#define XK_braceright 0x07d -#define XK_asciitilde 0x07e - -#define XK_nobreakspace 0x0a0 -#define XK_exclamdown 0x0a1 -#define XK_cent 0x0a2 -#define XK_sterling 0x0a3 -#define XK_currency 0x0a4 -#define XK_yen 0x0a5 -#define XK_brokenbar 0x0a6 -#define XK_section 0x0a7 -#define XK_diaeresis 0x0a8 -#define XK_copyright 0x0a9 -#define XK_ordfeminine 0x0aa -#define XK_guillemotleft 0x0ab /* left angle quotation mark */ -#define XK_notsign 0x0ac -#define XK_hyphen 0x0ad -#define XK_registered 0x0ae -#define XK_macron 0x0af -#define XK_degree 0x0b0 -#define XK_plusminus 0x0b1 -#define XK_twosuperior 0x0b2 -#define XK_threesuperior 0x0b3 -#define XK_acute 0x0b4 -#define XK_mu 0x0b5 -#define XK_paragraph 0x0b6 -#define XK_periodcentered 0x0b7 -#define XK_cedilla 0x0b8 -#define XK_onesuperior 0x0b9 -#define XK_masculine 0x0ba -#define XK_guillemotright 0x0bb /* right angle quotation mark */ -#define XK_onequarter 0x0bc -#define XK_onehalf 0x0bd -#define XK_threequarters 0x0be -#define XK_questiondown 0x0bf -#define XK_Agrave 0x0c0 -#define XK_Aacute 0x0c1 -#define XK_Acircumflex 0x0c2 -#define XK_Atilde 0x0c3 -#define XK_Adiaeresis 0x0c4 -#define XK_Aring 0x0c5 -#define XK_AE 0x0c6 -#define XK_Ccedilla 0x0c7 -#define XK_Egrave 0x0c8 -#define XK_Eacute 0x0c9 -#define XK_Ecircumflex 0x0ca -#define XK_Ediaeresis 0x0cb -#define XK_Igrave 0x0cc -#define XK_Iacute 0x0cd -#define XK_Icircumflex 0x0ce -#define XK_Idiaeresis 0x0cf -#define XK_ETH 0x0d0 -#define XK_Eth 0x0d0 /* deprecated */ -#define XK_Ntilde 0x0d1 -#define XK_Ograve 0x0d2 -#define XK_Oacute 0x0d3 -#define XK_Ocircumflex 0x0d4 -#define XK_Otilde 0x0d5 -#define XK_Odiaeresis 0x0d6 -#define XK_multiply 0x0d7 -#define XK_Ooblique 0x0d8 -#define XK_Ugrave 0x0d9 -#define XK_Uacute 0x0da -#define XK_Ucircumflex 0x0db -#define XK_Udiaeresis 0x0dc -#define XK_Yacute 0x0dd -#define XK_THORN 0x0de -#define XK_Thorn 0x0de /* deprecated */ -#define XK_ssharp 0x0df -#define XK_agrave 0x0e0 -#define XK_aacute 0x0e1 -#define XK_acircumflex 0x0e2 -#define XK_atilde 0x0e3 -#define XK_adiaeresis 0x0e4 -#define XK_aring 0x0e5 -#define XK_ae 0x0e6 -#define XK_ccedilla 0x0e7 -#define XK_egrave 0x0e8 -#define XK_eacute 0x0e9 -#define XK_ecircumflex 0x0ea -#define XK_ediaeresis 0x0eb -#define XK_igrave 0x0ec -#define XK_iacute 0x0ed -#define XK_icircumflex 0x0ee -#define XK_idiaeresis 0x0ef -#define XK_eth 0x0f0 -#define XK_ntilde 0x0f1 -#define XK_ograve 0x0f2 -#define XK_oacute 0x0f3 -#define XK_ocircumflex 0x0f4 -#define XK_otilde 0x0f5 -#define XK_odiaeresis 0x0f6 -#define XK_division 0x0f7 -#define XK_oslash 0x0f8 -#define XK_ugrave 0x0f9 -#define XK_uacute 0x0fa -#define XK_ucircumflex 0x0fb -#define XK_udiaeresis 0x0fc -#define XK_yacute 0x0fd -#define XK_thorn 0x0fe -#define XK_ydiaeresis 0x0ff -#endif /* XK_LATIN1 */ - -/* - * Latin 2 - * Byte 3 = 1 - */ - -#ifdef XK_LATIN2 -#define XK_Aogonek 0x1a1 -#define XK_breve 0x1a2 -#define XK_Lstroke 0x1a3 -#define XK_Lcaron 0x1a5 -#define XK_Sacute 0x1a6 -#define XK_Scaron 0x1a9 -#define XK_Scedilla 0x1aa -#define XK_Tcaron 0x1ab -#define XK_Zacute 0x1ac -#define XK_Zcaron 0x1ae -#define XK_Zabovedot 0x1af -#define XK_aogonek 0x1b1 -#define XK_ogonek 0x1b2 -#define XK_lstroke 0x1b3 -#define XK_lcaron 0x1b5 -#define XK_sacute 0x1b6 -#define XK_caron 0x1b7 -#define XK_scaron 0x1b9 -#define XK_scedilla 0x1ba -#define XK_tcaron 0x1bb -#define XK_zacute 0x1bc -#define XK_doubleacute 0x1bd -#define XK_zcaron 0x1be -#define XK_zabovedot 0x1bf -#define XK_Racute 0x1c0 -#define XK_Abreve 0x1c3 -#define XK_Lacute 0x1c5 -#define XK_Cacute 0x1c6 -#define XK_Ccaron 0x1c8 -#define XK_Eogonek 0x1ca -#define XK_Ecaron 0x1cc -#define XK_Dcaron 0x1cf -#define XK_Dstroke 0x1d0 -#define XK_Nacute 0x1d1 -#define XK_Ncaron 0x1d2 -#define XK_Odoubleacute 0x1d5 -#define XK_Rcaron 0x1d8 -#define XK_Uring 0x1d9 -#define XK_Udoubleacute 0x1db -#define XK_Tcedilla 0x1de -#define XK_racute 0x1e0 -#define XK_abreve 0x1e3 -#define XK_lacute 0x1e5 -#define XK_cacute 0x1e6 -#define XK_ccaron 0x1e8 -#define XK_eogonek 0x1ea -#define XK_ecaron 0x1ec -#define XK_dcaron 0x1ef -#define XK_dstroke 0x1f0 -#define XK_nacute 0x1f1 -#define XK_ncaron 0x1f2 -#define XK_odoubleacute 0x1f5 -#define XK_udoubleacute 0x1fb -#define XK_rcaron 0x1f8 -#define XK_uring 0x1f9 -#define XK_tcedilla 0x1fe -#define XK_abovedot 0x1ff -#endif /* XK_LATIN2 */ - -/* - * Latin 3 - * Byte 3 = 2 - */ - -#ifdef XK_LATIN3 -#define XK_Hstroke 0x2a1 -#define XK_Hcircumflex 0x2a6 -#define XK_Iabovedot 0x2a9 -#define XK_Gbreve 0x2ab -#define XK_Jcircumflex 0x2ac -#define XK_hstroke 0x2b1 -#define XK_hcircumflex 0x2b6 -#define XK_idotless 0x2b9 -#define XK_gbreve 0x2bb -#define XK_jcircumflex 0x2bc -#define XK_Cabovedot 0x2c5 -#define XK_Ccircumflex 0x2c6 -#define XK_Gabovedot 0x2d5 -#define XK_Gcircumflex 0x2d8 -#define XK_Ubreve 0x2dd -#define XK_Scircumflex 0x2de -#define XK_cabovedot 0x2e5 -#define XK_ccircumflex 0x2e6 -#define XK_gabovedot 0x2f5 -#define XK_gcircumflex 0x2f8 -#define XK_ubreve 0x2fd -#define XK_scircumflex 0x2fe -#endif /* XK_LATIN3 */ - - -/* - * Latin 4 - * Byte 3 = 3 - */ - -#ifdef XK_LATIN4 -#define XK_kra 0x3a2 -#define XK_kappa 0x3a2 /* deprecated */ -#define XK_Rcedilla 0x3a3 -#define XK_Itilde 0x3a5 -#define XK_Lcedilla 0x3a6 -#define XK_Emacron 0x3aa -#define XK_Gcedilla 0x3ab -#define XK_Tslash 0x3ac -#define XK_rcedilla 0x3b3 -#define XK_itilde 0x3b5 -#define XK_lcedilla 0x3b6 -#define XK_emacron 0x3ba -#define XK_gcedilla 0x3bb -#define XK_tslash 0x3bc -#define XK_ENG 0x3bd -#define XK_eng 0x3bf -#define XK_Amacron 0x3c0 -#define XK_Iogonek 0x3c7 -#define XK_Eabovedot 0x3cc -#define XK_Imacron 0x3cf -#define XK_Ncedilla 0x3d1 -#define XK_Omacron 0x3d2 -#define XK_Kcedilla 0x3d3 -#define XK_Uogonek 0x3d9 -#define XK_Utilde 0x3dd -#define XK_Umacron 0x3de -#define XK_amacron 0x3e0 -#define XK_iogonek 0x3e7 -#define XK_eabovedot 0x3ec -#define XK_imacron 0x3ef -#define XK_ncedilla 0x3f1 -#define XK_omacron 0x3f2 -#define XK_kcedilla 0x3f3 -#define XK_uogonek 0x3f9 -#define XK_utilde 0x3fd -#define XK_umacron 0x3fe -#endif /* XK_LATIN4 */ - -/* - * Katakana - * Byte 3 = 4 - */ - -#ifdef XK_KATAKANA -#define XK_overline 0x47e -#define XK_kana_fullstop 0x4a1 -#define XK_kana_openingbracket 0x4a2 -#define XK_kana_closingbracket 0x4a3 -#define XK_kana_comma 0x4a4 -#define XK_kana_conjunctive 0x4a5 -#define XK_kana_middledot 0x4a5 /* deprecated */ -#define XK_kana_WO 0x4a6 -#define XK_kana_a 0x4a7 -#define XK_kana_i 0x4a8 -#define XK_kana_u 0x4a9 -#define XK_kana_e 0x4aa -#define XK_kana_o 0x4ab -#define XK_kana_ya 0x4ac -#define XK_kana_yu 0x4ad -#define XK_kana_yo 0x4ae -#define XK_kana_tsu 0x4af -#define XK_kana_tu 0x4af /* deprecated */ -#define XK_prolongedsound 0x4b0 -#define XK_kana_A 0x4b1 -#define XK_kana_I 0x4b2 -#define XK_kana_U 0x4b3 -#define XK_kana_E 0x4b4 -#define XK_kana_O 0x4b5 -#define XK_kana_KA 0x4b6 -#define XK_kana_KI 0x4b7 -#define XK_kana_KU 0x4b8 -#define XK_kana_KE 0x4b9 -#define XK_kana_KO 0x4ba -#define XK_kana_SA 0x4bb -#define XK_kana_SHI 0x4bc -#define XK_kana_SU 0x4bd -#define XK_kana_SE 0x4be -#define XK_kana_SO 0x4bf -#define XK_kana_TA 0x4c0 -#define XK_kana_CHI 0x4c1 -#define XK_kana_TI 0x4c1 /* deprecated */ -#define XK_kana_TSU 0x4c2 -#define XK_kana_TU 0x4c2 /* deprecated */ -#define XK_kana_TE 0x4c3 -#define XK_kana_TO 0x4c4 -#define XK_kana_NA 0x4c5 -#define XK_kana_NI 0x4c6 -#define XK_kana_NU 0x4c7 -#define XK_kana_NE 0x4c8 -#define XK_kana_NO 0x4c9 -#define XK_kana_HA 0x4ca -#define XK_kana_HI 0x4cb -#define XK_kana_FU 0x4cc -#define XK_kana_HU 0x4cc /* deprecated */ -#define XK_kana_HE 0x4cd -#define XK_kana_HO 0x4ce -#define XK_kana_MA 0x4cf -#define XK_kana_MI 0x4d0 -#define XK_kana_MU 0x4d1 -#define XK_kana_ME 0x4d2 -#define XK_kana_MO 0x4d3 -#define XK_kana_YA 0x4d4 -#define XK_kana_YU 0x4d5 -#define XK_kana_YO 0x4d6 -#define XK_kana_RA 0x4d7 -#define XK_kana_RI 0x4d8 -#define XK_kana_RU 0x4d9 -#define XK_kana_RE 0x4da -#define XK_kana_RO 0x4db -#define XK_kana_WA 0x4dc -#define XK_kana_N 0x4dd -#define XK_voicedsound 0x4de -#define XK_semivoicedsound 0x4df -#define XK_kana_switch 0xFF7E /* Alias for mode_switch */ -#endif /* XK_KATAKANA */ - -/* - * Arabic - * Byte 3 = 5 - */ - -#ifdef XK_ARABIC -#define XK_Arabic_comma 0x5ac -#define XK_Arabic_semicolon 0x5bb -#define XK_Arabic_question_mark 0x5bf -#define XK_Arabic_hamza 0x5c1 -#define XK_Arabic_maddaonalef 0x5c2 -#define XK_Arabic_hamzaonalef 0x5c3 -#define XK_Arabic_hamzaonwaw 0x5c4 -#define XK_Arabic_hamzaunderalef 0x5c5 -#define XK_Arabic_hamzaonyeh 0x5c6 -#define XK_Arabic_alef 0x5c7 -#define XK_Arabic_beh 0x5c8 -#define XK_Arabic_tehmarbuta 0x5c9 -#define XK_Arabic_teh 0x5ca -#define XK_Arabic_theh 0x5cb -#define XK_Arabic_jeem 0x5cc -#define XK_Arabic_hah 0x5cd -#define XK_Arabic_khah 0x5ce -#define XK_Arabic_dal 0x5cf -#define XK_Arabic_thal 0x5d0 -#define XK_Arabic_ra 0x5d1 -#define XK_Arabic_zain 0x5d2 -#define XK_Arabic_seen 0x5d3 -#define XK_Arabic_sheen 0x5d4 -#define XK_Arabic_sad 0x5d5 -#define XK_Arabic_dad 0x5d6 -#define XK_Arabic_tah 0x5d7 -#define XK_Arabic_zah 0x5d8 -#define XK_Arabic_ain 0x5d9 -#define XK_Arabic_ghain 0x5da -#define XK_Arabic_tatweel 0x5e0 -#define XK_Arabic_feh 0x5e1 -#define XK_Arabic_qaf 0x5e2 -#define XK_Arabic_kaf 0x5e3 -#define XK_Arabic_lam 0x5e4 -#define XK_Arabic_meem 0x5e5 -#define XK_Arabic_noon 0x5e6 -#define XK_Arabic_ha 0x5e7 -#define XK_Arabic_heh 0x5e7 /* deprecated */ -#define XK_Arabic_waw 0x5e8 -#define XK_Arabic_alefmaksura 0x5e9 -#define XK_Arabic_yeh 0x5ea -#define XK_Arabic_fathatan 0x5eb -#define XK_Arabic_dammatan 0x5ec -#define XK_Arabic_kasratan 0x5ed -#define XK_Arabic_fatha 0x5ee -#define XK_Arabic_damma 0x5ef -#define XK_Arabic_kasra 0x5f0 -#define XK_Arabic_shadda 0x5f1 -#define XK_Arabic_sukun 0x5f2 -#define XK_Arabic_switch 0xFF7E /* Alias for mode_switch */ -#endif /* XK_ARABIC */ - -/* - * Cyrillic - * Byte 3 = 6 - */ -#ifdef XK_CYRILLIC -#define XK_Serbian_dje 0x6a1 -#define XK_Macedonia_gje 0x6a2 -#define XK_Cyrillic_io 0x6a3 -#define XK_Ukrainian_ie 0x6a4 -#define XK_Ukranian_je 0x6a4 /* deprecated */ -#define XK_Macedonia_dse 0x6a5 -#define XK_Ukrainian_i 0x6a6 -#define XK_Ukranian_i 0x6a6 /* deprecated */ -#define XK_Ukrainian_yi 0x6a7 -#define XK_Ukranian_yi 0x6a7 /* deprecated */ -#define XK_Cyrillic_je 0x6a8 -#define XK_Serbian_je 0x6a8 /* deprecated */ -#define XK_Cyrillic_lje 0x6a9 -#define XK_Serbian_lje 0x6a9 /* deprecated */ -#define XK_Cyrillic_nje 0x6aa -#define XK_Serbian_nje 0x6aa /* deprecated */ -#define XK_Serbian_tshe 0x6ab -#define XK_Macedonia_kje 0x6ac -#define XK_Byelorussian_shortu 0x6ae -#define XK_Cyrillic_dzhe 0x6af -#define XK_Serbian_dze 0x6af /* deprecated */ -#define XK_numerosign 0x6b0 -#define XK_Serbian_DJE 0x6b1 -#define XK_Macedonia_GJE 0x6b2 -#define XK_Cyrillic_IO 0x6b3 -#define XK_Ukrainian_IE 0x6b4 -#define XK_Ukranian_JE 0x6b4 /* deprecated */ -#define XK_Macedonia_DSE 0x6b5 -#define XK_Ukrainian_I 0x6b6 -#define XK_Ukranian_I 0x6b6 /* deprecated */ -#define XK_Ukrainian_YI 0x6b7 -#define XK_Ukranian_YI 0x6b7 /* deprecated */ -#define XK_Cyrillic_JE 0x6b8 -#define XK_Serbian_JE 0x6b8 /* deprecated */ -#define XK_Cyrillic_LJE 0x6b9 -#define XK_Serbian_LJE 0x6b9 /* deprecated */ -#define XK_Cyrillic_NJE 0x6ba -#define XK_Serbian_NJE 0x6ba /* deprecated */ -#define XK_Serbian_TSHE 0x6bb -#define XK_Macedonia_KJE 0x6bc -#define XK_Byelorussian_SHORTU 0x6be -#define XK_Cyrillic_DZHE 0x6bf -#define XK_Serbian_DZE 0x6bf /* deprecated */ -#define XK_Cyrillic_yu 0x6c0 -#define XK_Cyrillic_a 0x6c1 -#define XK_Cyrillic_be 0x6c2 -#define XK_Cyrillic_tse 0x6c3 -#define XK_Cyrillic_de 0x6c4 -#define XK_Cyrillic_ie 0x6c5 -#define XK_Cyrillic_ef 0x6c6 -#define XK_Cyrillic_ghe 0x6c7 -#define XK_Cyrillic_ha 0x6c8 -#define XK_Cyrillic_i 0x6c9 -#define XK_Cyrillic_shorti 0x6ca -#define XK_Cyrillic_ka 0x6cb -#define XK_Cyrillic_el 0x6cc -#define XK_Cyrillic_em 0x6cd -#define XK_Cyrillic_en 0x6ce -#define XK_Cyrillic_o 0x6cf -#define XK_Cyrillic_pe 0x6d0 -#define XK_Cyrillic_ya 0x6d1 -#define XK_Cyrillic_er 0x6d2 -#define XK_Cyrillic_es 0x6d3 -#define XK_Cyrillic_te 0x6d4 -#define XK_Cyrillic_u 0x6d5 -#define XK_Cyrillic_zhe 0x6d6 -#define XK_Cyrillic_ve 0x6d7 -#define XK_Cyrillic_softsign 0x6d8 -#define XK_Cyrillic_yeru 0x6d9 -#define XK_Cyrillic_ze 0x6da -#define XK_Cyrillic_sha 0x6db -#define XK_Cyrillic_e 0x6dc -#define XK_Cyrillic_shcha 0x6dd -#define XK_Cyrillic_che 0x6de -#define XK_Cyrillic_hardsign 0x6df -#define XK_Cyrillic_YU 0x6e0 -#define XK_Cyrillic_A 0x6e1 -#define XK_Cyrillic_BE 0x6e2 -#define XK_Cyrillic_TSE 0x6e3 -#define XK_Cyrillic_DE 0x6e4 -#define XK_Cyrillic_IE 0x6e5 -#define XK_Cyrillic_EF 0x6e6 -#define XK_Cyrillic_GHE 0x6e7 -#define XK_Cyrillic_HA 0x6e8 -#define XK_Cyrillic_I 0x6e9 -#define XK_Cyrillic_SHORTI 0x6ea -#define XK_Cyrillic_KA 0x6eb -#define XK_Cyrillic_EL 0x6ec -#define XK_Cyrillic_EM 0x6ed -#define XK_Cyrillic_EN 0x6ee -#define XK_Cyrillic_O 0x6ef -#define XK_Cyrillic_PE 0x6f0 -#define XK_Cyrillic_YA 0x6f1 -#define XK_Cyrillic_ER 0x6f2 -#define XK_Cyrillic_ES 0x6f3 -#define XK_Cyrillic_TE 0x6f4 -#define XK_Cyrillic_U 0x6f5 -#define XK_Cyrillic_ZHE 0x6f6 -#define XK_Cyrillic_VE 0x6f7 -#define XK_Cyrillic_SOFTSIGN 0x6f8 -#define XK_Cyrillic_YERU 0x6f9 -#define XK_Cyrillic_ZE 0x6fa -#define XK_Cyrillic_SHA 0x6fb -#define XK_Cyrillic_E 0x6fc -#define XK_Cyrillic_SHCHA 0x6fd -#define XK_Cyrillic_CHE 0x6fe -#define XK_Cyrillic_HARDSIGN 0x6ff -#endif /* XK_CYRILLIC */ - -/* - * Greek - * Byte 3 = 7 - */ - -#ifdef XK_GREEK -#define XK_Greek_ALPHAaccent 0x7a1 -#define XK_Greek_EPSILONaccent 0x7a2 -#define XK_Greek_ETAaccent 0x7a3 -#define XK_Greek_IOTAaccent 0x7a4 -#define XK_Greek_IOTAdiaeresis 0x7a5 -#define XK_Greek_OMICRONaccent 0x7a7 -#define XK_Greek_UPSILONaccent 0x7a8 -#define XK_Greek_UPSILONdieresis 0x7a9 -#define XK_Greek_OMEGAaccent 0x7ab -#define XK_Greek_accentdieresis 0x7ae -#define XK_Greek_horizbar 0x7af -#define XK_Greek_alphaaccent 0x7b1 -#define XK_Greek_epsilonaccent 0x7b2 -#define XK_Greek_etaaccent 0x7b3 -#define XK_Greek_iotaaccent 0x7b4 -#define XK_Greek_iotadieresis 0x7b5 -#define XK_Greek_iotaaccentdieresis 0x7b6 -#define XK_Greek_omicronaccent 0x7b7 -#define XK_Greek_upsilonaccent 0x7b8 -#define XK_Greek_upsilondieresis 0x7b9 -#define XK_Greek_upsilonaccentdieresis 0x7ba -#define XK_Greek_omegaaccent 0x7bb -#define XK_Greek_ALPHA 0x7c1 -#define XK_Greek_BETA 0x7c2 -#define XK_Greek_GAMMA 0x7c3 -#define XK_Greek_DELTA 0x7c4 -#define XK_Greek_EPSILON 0x7c5 -#define XK_Greek_ZETA 0x7c6 -#define XK_Greek_ETA 0x7c7 -#define XK_Greek_THETA 0x7c8 -#define XK_Greek_IOTA 0x7c9 -#define XK_Greek_KAPPA 0x7ca -#define XK_Greek_LAMDA 0x7cb -#define XK_Greek_LAMBDA 0x7cb -#define XK_Greek_MU 0x7cc -#define XK_Greek_NU 0x7cd -#define XK_Greek_XI 0x7ce -#define XK_Greek_OMICRON 0x7cf -#define XK_Greek_PI 0x7d0 -#define XK_Greek_RHO 0x7d1 -#define XK_Greek_SIGMA 0x7d2 -#define XK_Greek_TAU 0x7d4 -#define XK_Greek_UPSILON 0x7d5 -#define XK_Greek_PHI 0x7d6 -#define XK_Greek_CHI 0x7d7 -#define XK_Greek_PSI 0x7d8 -#define XK_Greek_OMEGA 0x7d9 -#define XK_Greek_alpha 0x7e1 -#define XK_Greek_beta 0x7e2 -#define XK_Greek_gamma 0x7e3 -#define XK_Greek_delta 0x7e4 -#define XK_Greek_epsilon 0x7e5 -#define XK_Greek_zeta 0x7e6 -#define XK_Greek_eta 0x7e7 -#define XK_Greek_theta 0x7e8 -#define XK_Greek_iota 0x7e9 -#define XK_Greek_kappa 0x7ea -#define XK_Greek_lamda 0x7eb -#define XK_Greek_lambda 0x7eb -#define XK_Greek_mu 0x7ec -#define XK_Greek_nu 0x7ed -#define XK_Greek_xi 0x7ee -#define XK_Greek_omicron 0x7ef -#define XK_Greek_pi 0x7f0 -#define XK_Greek_rho 0x7f1 -#define XK_Greek_sigma 0x7f2 -#define XK_Greek_finalsmallsigma 0x7f3 -#define XK_Greek_tau 0x7f4 -#define XK_Greek_upsilon 0x7f5 -#define XK_Greek_phi 0x7f6 -#define XK_Greek_chi 0x7f7 -#define XK_Greek_psi 0x7f8 -#define XK_Greek_omega 0x7f9 -#define XK_Greek_switch 0xFF7E /* Alias for mode_switch */ -#endif /* XK_GREEK */ - -/* - * Technical - * Byte 3 = 8 - */ - -#ifdef XK_TECHNICAL -#define XK_leftradical 0x8a1 -#define XK_topleftradical 0x8a2 -#define XK_horizconnector 0x8a3 -#define XK_topintegral 0x8a4 -#define XK_botintegral 0x8a5 -#define XK_vertconnector 0x8a6 -#define XK_topleftsqbracket 0x8a7 -#define XK_botleftsqbracket 0x8a8 -#define XK_toprightsqbracket 0x8a9 -#define XK_botrightsqbracket 0x8aa -#define XK_topleftparens 0x8ab -#define XK_botleftparens 0x8ac -#define XK_toprightparens 0x8ad -#define XK_botrightparens 0x8ae -#define XK_leftmiddlecurlybrace 0x8af -#define XK_rightmiddlecurlybrace 0x8b0 -#define XK_topleftsummation 0x8b1 -#define XK_botleftsummation 0x8b2 -#define XK_topvertsummationconnector 0x8b3 -#define XK_botvertsummationconnector 0x8b4 -#define XK_toprightsummation 0x8b5 -#define XK_botrightsummation 0x8b6 -#define XK_rightmiddlesummation 0x8b7 -#define XK_lessthanequal 0x8bc -#define XK_notequal 0x8bd -#define XK_greaterthanequal 0x8be -#define XK_integral 0x8bf -#define XK_therefore 0x8c0 -#define XK_variation 0x8c1 -#define XK_infinity 0x8c2 -#define XK_nabla 0x8c5 -#define XK_approximate 0x8c8 -#define XK_similarequal 0x8c9 -#define XK_ifonlyif 0x8cd -#define XK_implies 0x8ce -#define XK_identical 0x8cf -#define XK_radical 0x8d6 -#define XK_includedin 0x8da -#define XK_includes 0x8db -#define XK_intersection 0x8dc -#define XK_union 0x8dd -#define XK_logicaland 0x8de -#define XK_logicalor 0x8df -#define XK_partialderivative 0x8ef -#define XK_function 0x8f6 -#define XK_leftarrow 0x8fb -#define XK_uparrow 0x8fc -#define XK_rightarrow 0x8fd -#define XK_downarrow 0x8fe -#endif /* XK_TECHNICAL */ - -/* - * Special - * Byte 3 = 9 - */ - -#ifdef XK_SPECIAL -#define XK_blank 0x9df -#define XK_soliddiamond 0x9e0 -#define XK_checkerboard 0x9e1 -#define XK_ht 0x9e2 -#define XK_ff 0x9e3 -#define XK_cr 0x9e4 -#define XK_lf 0x9e5 -#define XK_nl 0x9e8 -#define XK_vt 0x9e9 -#define XK_lowrightcorner 0x9ea -#define XK_uprightcorner 0x9eb -#define XK_upleftcorner 0x9ec -#define XK_lowleftcorner 0x9ed -#define XK_crossinglines 0x9ee -#define XK_horizlinescan1 0x9ef -#define XK_horizlinescan3 0x9f0 -#define XK_horizlinescan5 0x9f1 -#define XK_horizlinescan7 0x9f2 -#define XK_horizlinescan9 0x9f3 -#define XK_leftt 0x9f4 -#define XK_rightt 0x9f5 -#define XK_bott 0x9f6 -#define XK_topt 0x9f7 -#define XK_vertbar 0x9f8 -#endif /* XK_SPECIAL */ - -/* - * Publishing - * Byte 3 = a - */ - -#ifdef XK_PUBLISHING -#define XK_emspace 0xaa1 -#define XK_enspace 0xaa2 -#define XK_em3space 0xaa3 -#define XK_em4space 0xaa4 -#define XK_digitspace 0xaa5 -#define XK_punctspace 0xaa6 -#define XK_thinspace 0xaa7 -#define XK_hairspace 0xaa8 -#define XK_emdash 0xaa9 -#define XK_endash 0xaaa -#define XK_signifblank 0xaac -#define XK_ellipsis 0xaae -#define XK_doubbaselinedot 0xaaf -#define XK_onethird 0xab0 -#define XK_twothirds 0xab1 -#define XK_onefifth 0xab2 -#define XK_twofifths 0xab3 -#define XK_threefifths 0xab4 -#define XK_fourfifths 0xab5 -#define XK_onesixth 0xab6 -#define XK_fivesixths 0xab7 -#define XK_careof 0xab8 -#define XK_figdash 0xabb -#define XK_leftanglebracket 0xabc -#define XK_decimalpoint 0xabd -#define XK_rightanglebracket 0xabe -#define XK_marker 0xabf -#define XK_oneeighth 0xac3 -#define XK_threeeighths 0xac4 -#define XK_fiveeighths 0xac5 -#define XK_seveneighths 0xac6 -#define XK_trademark 0xac9 -#define XK_signaturemark 0xaca -#define XK_trademarkincircle 0xacb -#define XK_leftopentriangle 0xacc -#define XK_rightopentriangle 0xacd -#define XK_emopencircle 0xace -#define XK_emopenrectangle 0xacf -#define XK_leftsinglequotemark 0xad0 -#define XK_rightsinglequotemark 0xad1 -#define XK_leftdoublequotemark 0xad2 -#define XK_rightdoublequotemark 0xad3 -#define XK_prescription 0xad4 -#define XK_minutes 0xad6 -#define XK_seconds 0xad7 -#define XK_latincross 0xad9 -#define XK_hexagram 0xada -#define XK_filledrectbullet 0xadb -#define XK_filledlefttribullet 0xadc -#define XK_filledrighttribullet 0xadd -#define XK_emfilledcircle 0xade -#define XK_emfilledrect 0xadf -#define XK_enopencircbullet 0xae0 -#define XK_enopensquarebullet 0xae1 -#define XK_openrectbullet 0xae2 -#define XK_opentribulletup 0xae3 -#define XK_opentribulletdown 0xae4 -#define XK_openstar 0xae5 -#define XK_enfilledcircbullet 0xae6 -#define XK_enfilledsqbullet 0xae7 -#define XK_filledtribulletup 0xae8 -#define XK_filledtribulletdown 0xae9 -#define XK_leftpointer 0xaea -#define XK_rightpointer 0xaeb -#define XK_club 0xaec -#define XK_diamond 0xaed -#define XK_heart 0xaee -#define XK_maltesecross 0xaf0 -#define XK_dagger 0xaf1 -#define XK_doubledagger 0xaf2 -#define XK_checkmark 0xaf3 -#define XK_ballotcross 0xaf4 -#define XK_musicalsharp 0xaf5 -#define XK_musicalflat 0xaf6 -#define XK_malesymbol 0xaf7 -#define XK_femalesymbol 0xaf8 -#define XK_telephone 0xaf9 -#define XK_telephonerecorder 0xafa -#define XK_phonographcopyright 0xafb -#define XK_caret 0xafc -#define XK_singlelowquotemark 0xafd -#define XK_doublelowquotemark 0xafe -#define XK_cursor 0xaff -#endif /* XK_PUBLISHING */ - -/* - * APL - * Byte 3 = b - */ - -#ifdef XK_APL -#define XK_leftcaret 0xba3 -#define XK_rightcaret 0xba6 -#define XK_downcaret 0xba8 -#define XK_upcaret 0xba9 -#define XK_overbar 0xbc0 -#define XK_downtack 0xbc2 -#define XK_upshoe 0xbc3 -#define XK_downstile 0xbc4 -#define XK_underbar 0xbc6 -#define XK_jot 0xbca -#define XK_quad 0xbcc -#define XK_uptack 0xbce -#define XK_circle 0xbcf -#define XK_upstile 0xbd3 -#define XK_downshoe 0xbd6 -#define XK_rightshoe 0xbd8 -#define XK_leftshoe 0xbda -#define XK_lefttack 0xbdc -#define XK_righttack 0xbfc -#endif /* XK_APL */ - -/* - * Hebrew - * Byte 3 = c - */ - -#ifdef XK_HEBREW -#define XK_hebrew_doublelowline 0xcdf -#define XK_hebrew_aleph 0xce0 -#define XK_hebrew_bet 0xce1 -#define XK_hebrew_beth 0xce1 /* deprecated */ -#define XK_hebrew_gimel 0xce2 -#define XK_hebrew_gimmel 0xce2 /* deprecated */ -#define XK_hebrew_dalet 0xce3 -#define XK_hebrew_daleth 0xce3 /* deprecated */ -#define XK_hebrew_he 0xce4 -#define XK_hebrew_waw 0xce5 -#define XK_hebrew_zain 0xce6 -#define XK_hebrew_zayin 0xce6 /* deprecated */ -#define XK_hebrew_chet 0xce7 -#define XK_hebrew_het 0xce7 /* deprecated */ -#define XK_hebrew_tet 0xce8 -#define XK_hebrew_teth 0xce8 /* deprecated */ -#define XK_hebrew_yod 0xce9 -#define XK_hebrew_finalkaph 0xcea -#define XK_hebrew_kaph 0xceb -#define XK_hebrew_lamed 0xcec -#define XK_hebrew_finalmem 0xced -#define XK_hebrew_mem 0xcee -#define XK_hebrew_finalnun 0xcef -#define XK_hebrew_nun 0xcf0 -#define XK_hebrew_samech 0xcf1 -#define XK_hebrew_samekh 0xcf1 /* deprecated */ -#define XK_hebrew_ayin 0xcf2 -#define XK_hebrew_finalpe 0xcf3 -#define XK_hebrew_pe 0xcf4 -#define XK_hebrew_finalzade 0xcf5 -#define XK_hebrew_finalzadi 0xcf5 /* deprecated */ -#define XK_hebrew_zade 0xcf6 -#define XK_hebrew_zadi 0xcf6 /* deprecated */ -#define XK_hebrew_qoph 0xcf7 -#define XK_hebrew_kuf 0xcf7 /* deprecated */ -#define XK_hebrew_resh 0xcf8 -#define XK_hebrew_shin 0xcf9 -#define XK_hebrew_taw 0xcfa -#define XK_hebrew_taf 0xcfa /* deprecated */ -#define XK_Hebrew_switch 0xFF7E /* Alias for mode_switch */ -#endif /* XK_HEBREW */ - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/X11/license.terms b/Master/tlpkg/tlperl.old/lib/Tk/X11/license.terms deleted file mode 100644 index 03ca6fcb319..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/X11/license.terms +++ /dev/null @@ -1,39 +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. - -GOVERNMENT USE: If you are acquiring this software on behalf of the -U.S. government, the Government shall have only "Restricted Rights" -in the software and related documentation as defined in the Federal -Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you -are acquiring the software on behalf of the Department of Defense, the -software shall be classified as "Commercial Computer Software" and the -Government shall have only "Restricted Rights" as defined in Clause -252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the -authors grant the U.S. Government and others acting in its behalf -permission to use and distribute the software in accordance with the -terms specified in this license. diff --git a/Master/tlpkg/tlperl.old/lib/Tk/X11Font.pm b/Master/tlpkg/tlperl.old/lib/Tk/X11Font.pm deleted file mode 100644 index 870dfd4b7dc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/X11Font.pm +++ /dev/null @@ -1,184 +0,0 @@ -package Tk::X11Font; -use vars qw($VERSION); -$VERSION = '4.007'; # $Id: //depot/Tkutf8/Tk/X11Font.pm#7 $ - -require Tk::Widget; -require Tk::Xlib; -use strict; - -Construct Tk::Widget 'X11Font'; - -my @field = qw(foundry family weight slant swidth adstyle pixel - point xres yres space avgwidth registry encoding); - -map { eval "sub \u$_ { shift->elem('$_', \@_) }" } @field; - -use overload '""' => 'as_string'; - -sub new -{ - my $pkg = shift; - my $w = shift; - - my %me = (); - my $d = $w->Display; - - local $_; - - if(scalar(@_) == 1) - { - my $pattern = shift; - - if($pattern =~ /\A(-[^-]*){14}\Z/) - { - @me{@field} = split(/-/, substr($pattern,1)); - } - else - { - $me{Name} = $pattern; - - if($pattern =~ /^[^-]?-([^-]*-){2,}/) - { - my $f = $d->XListFonts($pattern,1); - - if($f && $f =~ /\A(-[^-]*){14}/) - { - my @f = split(/-/, substr($f,1)); - my @n = split(/-/, $pattern); - my %f = (); - my $i = 0; - - shift @n if($pattern =~ /\A-/); - - while(@n && @f) - { - if($n[0] eq '*') - { - shift @n; - } - elsif($n[0] eq $f[0]) - { - $f{$field[$i]} = shift @n; - } - $i++; - shift @f; - } - - %me = %f - unless(@n); - } - } - } - } - else - { - %me = @_; - } - - map { $me{$_} ||= '*' } @field; - - $me{Display} = $d; - $me{MainWin} = $w->MainWindow; - - bless \%me, $pkg; -} - -sub Pattern -{ - my $me = shift; - return join('-', '',@{$me}{@field}); -} - -sub Name -{ - my $me = shift; - my $max = wantarray ? shift || 128 : 1; - - if ($^O eq 'MSWin32' or ($^O eq 'cygwin' and $Tk::platform eq 'MSWin32')) - { - my $name = $me->{Name}; - if (!defined $name) - { - my $fm = $me->{'family'} || 'system'; - my $sz = -int($me->{'point'}/10) || -($me->{'pixel'}) || 12; - my @opt = (-family => $fm, -size => $sz ); - my $wt = $me->{'weight'}; - if (defined $wt) - { - $wt = 'normal' unless $wt =~ /bold/i; - push(@opt,-weight => lc($wt)); - } - my $sl = $me->{'slant'}; - if (defined $sl) - { - $sl = ($sl =~ /^[io]/) ? 'italic' : 'roman'; - push(@opt,-slant => $sl); - } - $name = join(' ',@opt); - } - return $name; - } - else - { - my $name = $me->{Name} || - join('-', '',@{$me}{@field}); - return $me->{Display}->XListFonts($name,$max); - } -} - -sub as_string -{ - return shift->Name; -} - -sub elem -{ - my $me = shift; - my $elem = shift; - - return undef - if(exists $me->{'Name'}); - - my $old = $me->{$elem}; - - $me->{$elem} = shift - if(@_); - - $old; -} - -sub Clone -{ - my $me = shift; - - $me = bless { %$me }, ref($me); - - unless(exists $me->{'Name'}) - { - while(@_) - { - my $k = shift; - my $v = shift || $me->{MainWin}->BackTrace('Tk::Font->Clone( key => value, ... )'); - $me->{$k} = $v; - } - } - - $me; -} - -sub ascent -{ - my $me = shift; - my $name = $me->Name; - $me->{MainWin}->fontMetrics($name, '-ascent'); -} - -sub descent -{ - my $me = shift; - my $name = $me->Name; - $me->{MainWin}->fontMetrics($name, '-descent'); -} - -1; - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Xcamel.gif b/Master/tlpkg/tlperl.old/lib/Tk/Xcamel.gif Binary files differdeleted file mode 100644 index cb88bc0afd8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Xcamel.gif +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Xlib.pm b/Master/tlpkg/tlperl.old/lib/Tk/Xlib.pm deleted file mode 100644 index 1432361dc18..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Xlib.pm +++ /dev/null @@ -1,15 +0,0 @@ -package Tk::Xlib; -require DynaLoader; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Xlib/Xlib.pm#4 $ - -use Tk qw($XS_VERSION); -use Exporter; - -use base qw(DynaLoader Exporter); -@EXPORT_OK = qw(XDrawString XLoadFont XDrawRectangle); - -bootstrap Tk::Xlib; - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/Xrm.pm b/Master/tlpkg/tlperl.old/lib/Tk/Xrm.pm deleted file mode 100644 index 271ad59a237..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/Xrm.pm +++ /dev/null @@ -1,11 +0,0 @@ -package Tk::Xrm; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/Xrm.pm#4 $ - -use Tk (); -1; -__END__ - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/act_folder.xbm b/Master/tlpkg/tlperl.old/lib/Tk/act_folder.xbm deleted file mode 100644 index fc82949945b..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/act_folder.xpm b/Master/tlpkg/tlperl.old/lib/Tk/act_folder.xpm deleted file mode 100644 index 0e7d682713a..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/anim.gif b/Master/tlpkg/tlperl.old/lib/Tk/anim.gif Binary files differdeleted file mode 100644 index 96a50b701be..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/anim.gif +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/Tk/arrowdownwin.xbm b/Master/tlpkg/tlperl.old/lib/Tk/arrowdownwin.xbm deleted file mode 100644 index ea43fc75e7a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/arrowdownwin.xbm +++ /dev/null @@ -1,5 +0,0 @@ -#define arrowdownwin2_width 9 -#define arrowdownwin2_height 13 -static char arrowdownwin2_bits[] = { - 0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x7c,0xfe,0x38,0xfe,0x10, - 0xfe,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0xfe,0x00,0xfe}; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/balArrow.xbm b/Master/tlpkg/tlperl.old/lib/Tk/balArrow.xbm deleted file mode 100644 index ee0664a4727..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/cbxarrow.xbm b/Master/tlpkg/tlperl.old/lib/Tk/cbxarrow.xbm deleted file mode 100644 index ae4054488b9..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/file.xbm b/Master/tlpkg/tlperl.old/lib/Tk/file.xbm deleted file mode 100644 index 7bf12bb4c9f..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/file.xpm b/Master/tlpkg/tlperl.old/lib/Tk/file.xpm deleted file mode 100644 index 10cc24f9a1e..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/folder.xbm b/Master/tlpkg/tlperl.old/lib/Tk/folder.xbm deleted file mode 100644 index 0398f0de777..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/folder.xpm b/Master/tlpkg/tlperl.old/lib/Tk/folder.xpm deleted file mode 100644 index fda7c15a549..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/icon.gif b/Master/tlpkg/tlperl.old/lib/Tk/icon.gif Binary files differdeleted file mode 100644 index dfe6b6621f2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/icon.gif +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/Tk/install.pm b/Master/tlpkg/tlperl.old/lib/Tk/install.pm deleted file mode 100644 index 2392dc84fca..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/install.pm +++ /dev/null @@ -1,37 +0,0 @@ -package Tk::install; -require Exporter; - -use vars qw($VERSION @EXPORT); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/install.pm#4 $ - -use base qw(Exporter); -@EXPORT = qw(installbin); - -use Config; - -sub installbin -{ - my $prog = shift(@ARGV); - my $start = $Config{'startperl'}; - my $perl = $Config{'perl'} || 'perl'; - $start =~ s/$perl$/$prog/; - while (($src,$dst) = splice(@ARGV,0,2)) - { - open(SRC,"<$src") || die "Cannot open $src:$!"; - my $line = <SRC>; - $line =~ s/^#!\s*\S+/$start/; - warn $line; - chmod(0755,$dst) if (-f $dst); - open(DST,">$dst") || die "Cannot open $dst:$!"; - print "installbin $src => $dst\n"; - do - { - print DST $line; - } while (defined($line = <SRC>)); - close(SRC); - close(DST); - chmod(0555,$dst); - } -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/license.terms b/Master/tlpkg/tlperl.old/lib/Tk/license.terms deleted file mode 100644 index 6a5d3728366..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/openfile.xbm b/Master/tlpkg/tlperl.old/lib/Tk/openfile.xbm deleted file mode 100644 index 859e2e57608..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/openfolder.xbm b/Master/tlpkg/tlperl.old/lib/Tk/openfolder.xbm deleted file mode 100644 index 59ee624efd0..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/openfolder.xpm b/Master/tlpkg/tlperl.old/lib/Tk/openfolder.xpm deleted file mode 100644 index 191fe1e72bc..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/prolog.ps b/Master/tlpkg/tlperl.old/lib/Tk/prolog.ps deleted file mode 100644 index 409e06a65a0..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/reindex.pl b/Master/tlpkg/tlperl.old/lib/Tk/reindex.pl deleted file mode 100644 index 7af5cc1d13f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/reindex.pl +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/perl - -use lib qw(/home1/gbartels/textlist); -use Tk; - -use Tk::TextReindex qw(Tk::ROText ROTextReindex); - -$mw=new MainWindow; - -my $idx; - -$w=$mw->ROTextReindex()->pack(-side => "top"); -$t=$mw->Label(-textvariable => \$idx)->pack(-side => "bottom"); - -$w->bind('<Key>',sub{$idx=$w->index("insert")}); - -$w->insert('end',"abcd\n"); -$w->insert('end',"efgh\n"); -$w->insert('end',"mnop\n"); -$w->insert('end',"qrst\n"); -$w->insert('end',"uvwx\n"); - -$w->insert('2.0',"ijkl\n"); - -my $string = $w->get('4.0'); - - -my $result = "reading index 4.0 : expect string to equal >q<, actual value is $string \n"; -$w->insert('end',$result); - -print $result; - -MainLoop; diff --git a/Master/tlpkg/tlperl.old/lib/Tk/srcfile.xpm b/Master/tlpkg/tlperl.old/lib/Tk/srcfile.xpm deleted file mode 100644 index 06a40a96c84..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/textfile.xpm b/Master/tlpkg/tlperl.old/lib/Tk/textfile.xpm deleted file mode 100644 index 8fa8d2f9032..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/tkGlue.def b/Master/tlpkg/tlperl.old/lib/Tk/tkGlue.def deleted file mode 100644 index 2f1662c71c2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/tkGlue.def +++ /dev/null @@ -1,130 +0,0 @@ -#ifdef CAN_PROTOTYPE -#define XSdec(x) XS(x) -#else -#define XSdec(x) void x() -#endif - -#define TKXSRETURN(off) \ - STMT_START { \ - IV ptkAdj = (off); \ - XSRETURN(ptkAdj); \ - } STMT_END - -#ifndef PATCHLEVEL -#include <patchlevel.h> -#endif - -#if defined(PATCHLEVEL) && (PATCHLEVEL < 5) -#define PL_sv_undef sv_undef -#define PL_tainting tainting -#define PL_tainted tainted -#define PL_stack_base stack_base -#define PL_stack_sp stack_sp -#define PL_curcop curcop -#endif - -#ifndef CopSTASH -#define CopSTASH(c) c->cop_stash -#define CopSTASH_set(c,h) (CopSTASH(c) = h) -#endif - -#ifndef dTHX -#define dTHR int maybeTHR -#endif - -#ifndef dTHXs -#ifdef PERL_IMPLICIT_SYS -#define dTHXs dTHX -#else -#define dTHR int maybeTHR -#endif -#endif - -#ifndef ERRSV -#define ERRSV GvSV(errgv) -#endif - -#ifndef aTHX_ -#define aTHX_ -#endif - -#ifndef pTHX_ -#define pTHX_ -#endif - -#ifdef dirty -#undef dirty -#endif -#ifdef bufptr -#undef bufptr -#endif -#ifdef colors -#undef colors -#endif -#ifdef JOIN -#undef JOIN -#endif - -#ifdef na -#if PATCHLEVEL >= 5 -#undef na -#endif -#endif - - -#define Tcl_Interp HV -#define LangCallback SV -#define Var SV * -#define LangResultSave AV -struct Lang_CmdInfo; -#define Tcl_Command struct Lang_CmdInfo * -struct WrappedRegExp; -#define Tcl_RegExp struct WrappedRegExp * -#define Tcl_Obj SV -#define Tcl_DString SV * - -#ifndef PerlIO -#define PerlIO FILE -#define PerlIO_stderr() stderr -#define PerlIO_printf fprintf -#define PerlIO_flush(f) Fflush(f) -#define PerlIO_vprintf(f,fmt,a) vfprintf(f,fmt,a) -#define PerlIO_putc(f,c) fputc(c,f) -#define PerlIO_fileno(f) fileno(f) - -/* Now our interface to Configure's FILE_xxx macros */ - -#ifdef USE_STDIO_PTR -#define PerlIO_has_cntptr(f) 1 -#define PerlIO_get_ptr(f) FILE_ptr(f) -#define PerlIO_get_cnt(f) FILE_cnt(f) - -#ifdef FILE_CNT_LVALUE -#define PerlIO_canset_cnt(f) 1 -#ifdef FILE_PTR_LVALUE -#define PerlIO_fast_gets(f) 1 -#endif -#define PerlIO_set_cnt(f,c) (FILE_cnt(f) = (c)) -#else -#define PerlIO_canset_cnt(f) 0 -#define PerlIO_set_cnt(f,c) abort() -#endif - -#ifdef FILE_PTR_LVALUE -#define PerlIO_set_ptrcnt(f,p,c) (FILE_ptr(f) = (p), PerlIO_set_cnt(f,c)) -#else -#define PerlIO_set_ptrcnt(f,p,c) abort() -#endif - -#else /* USE_STDIO_PTR */ - -#define PerlIO_has_cntptr(f) 0 -#define PerlIO_get_cnt(f) (abort(),0) -#define PerlIO_get_ptr(f) (abort(),0) -#define PerlIO_set_cnt(f,c) abort() -#define PerlIO_set_ptrcnt(f,p,c) abort() - -#endif /* USE_STDIO_PTR */ - -#endif - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/tkGlue.h b/Master/tlpkg/tlperl.old/lib/Tk/tkGlue.h deleted file mode 100644 index 31a7f861700..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/tkGlue.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef _TKGLUE -#define _TKGLUE - -#ifndef BASEEXT -#define BASEEXT "Tk" -#endif - -#ifndef _TKOPTION -#include "pTk/tkOption.h" -#include "pTk/tkOption_f.h" -#endif - -typedef struct EventAndKeySym - {XEvent event; - KeySym keySym; - Tcl_Interp *interp; - Tk_Window tkwin; - SV *window; - } EventAndKeySym; - -typedef struct Lang_CmdInfo - {Tcl_CmdInfo Tk; - Tcl_Interp *interp; - Tk_Window tkwin; - SV *image; - Tk_Font tkfont; - } Lang_CmdInfo; - -#include "vtab.def" - - -#define VTABLE_INIT() IMPORT_VTABLES - -extern Lang_CmdInfo *WindowCommand _ANSI_ARGS_((SV *win,HV **hptr, int moan)); -extern Tk_Window SVtoWindow _ANSI_ARGS_((SV *win)); -extern Tk_Font SVtoFont _ANSI_ARGS_((SV *win)); -extern int Call_Tk _ANSI_ARGS_((Lang_CmdInfo *info,int argc, SV **args)); -extern HV *InterpHv _ANSI_ARGS_((Tcl_Interp *interp,int fatal)); -extern SV *WidgetRef _ANSI_ARGS_((Tcl_Interp *interp, char *path)); -extern SV *ObjectRef _ANSI_ARGS_((Tcl_Interp *interp, char *path)); -extern SV *TkToWidget _ANSI_ARGS_((Tk_Window tkwin,Tcl_Interp **pinterp)); -extern SV *FindTkVarName _ANSI_ARGS_((CONST char *varName,int flags)); -extern void EnterWidgetMethods _ANSI_ARGS_((char *package, ...)); -extern SV *MakeReference _ANSI_ARGS_((SV * sv)); -extern Tk_Window TkToMainWindow _ANSI_ARGS_((Tk_Window tkwin)); -extern void Lang_TkSubCommand _ANSI_ARGS_ ((char *name, Tcl_ObjCmdProc *proc)); -extern void Lang_TkCommand _ANSI_ARGS_ ((char *name, Tcl_ObjCmdProc *proc)); -extern SV *XEvent_Info _((EventAndKeySym *obj,char *s)); -extern EventAndKeySym *SVtoEventAndKeySym _((SV *arg)); -extern int XSTkCommand _ANSI_ARGS_((CV *cv, int mwcd, Tcl_ObjCmdProc *proc, int items, SV **args)); - -extern XS(XStoWidget); - -EXTERN void ClearErrorInfo _ANSI_ARGS_((SV *interp)); -EXTERN Tk_Window mainWindow; -EXTERN void DumpStack _ANSI_ARGS_((CONST char *who)); -EXTERN void Boot_Glue (pTHX); -EXTERN void Boot_Tix (pTHX); -EXTERN void install_vtab _ANSI_ARGS_((char *name, void *table, size_t size)); -extern SV *TagIt _((SV *sv, char *type)); -extern void Font_DESTROY _((SV *sv)); -struct pTkCheckChain; -extern void Tk_CheckHash _((SV *sv,struct pTkCheckChain *chain)); - -extern int has_highbit(CONST char *s,int l); -extern SV * sv_maybe_utf8(SV *sv); -extern SV * Lang_SystemEncoding(void); - -#ifndef WIN32 -#define HWND void * -#endif -EXTERN HWND SVtoHWND _ANSI_ARGS_((SV *win)); - -#ifdef WIN32 -#include "pTk/tkWinInt.h" -#endif - -#endif - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/tkGlue.m b/Master/tlpkg/tlperl.old/lib/Tk/tkGlue.m deleted file mode 100644 index 922d1426a55..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/tkGlue.m +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef _TKGLUE_VM -#define _TKGLUE_VM -#include "tkGlue_f.h" -#ifndef NO_VTABLES -#ifndef Call_Tk -# define Call_Tk (*TkglueVptr->V_Call_Tk) -#endif - -#ifndef EnterWidgetMethods -# define EnterWidgetMethods (*TkglueVptr->V_EnterWidgetMethods) -#endif - -#ifndef FindTkVarName -# define FindTkVarName (*TkglueVptr->V_FindTkVarName) -#endif - -#ifndef InterpHv -# define InterpHv (*TkglueVptr->V_InterpHv) -#endif - -#ifndef Lang_TkCommand -# define Lang_TkCommand (*TkglueVptr->V_Lang_TkCommand) -#endif - -#ifndef Lang_TkSubCommand -# define Lang_TkSubCommand (*TkglueVptr->V_Lang_TkSubCommand) -#endif - -#ifndef MakeReference -# define MakeReference (*TkglueVptr->V_MakeReference) -#endif - -#ifndef ObjectRef -# define ObjectRef (*TkglueVptr->V_ObjectRef) -#endif - -#ifndef SVtoFont -# define SVtoFont (*TkglueVptr->V_SVtoFont) -#endif - -#ifndef SVtoHWND -# define SVtoHWND (*TkglueVptr->V_SVtoHWND) -#endif - -#ifndef SVtoWindow -# define SVtoWindow (*TkglueVptr->V_SVtoWindow) -#endif - -#ifndef TkToMainWindow -# define TkToMainWindow (*TkglueVptr->V_TkToMainWindow) -#endif - -#ifndef TkToWidget -# define TkToWidget (*TkglueVptr->V_TkToWidget) -#endif - -#ifndef WidgetRef -# define WidgetRef (*TkglueVptr->V_WidgetRef) -#endif - -#ifndef WindowCommand -# define WindowCommand (*TkglueVptr->V_WindowCommand) -#endif - -#ifndef XSTkCommand -# define XSTkCommand (*TkglueVptr->V_XSTkCommand) -#endif - -#ifndef install_vtab -# define install_vtab (*TkglueVptr->V_install_vtab) -#endif - -#endif /* NO_VTABLES */ -#endif /* _TKGLUE_VM */ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/tkGlue.t b/Master/tlpkg/tlperl.old/lib/Tk/tkGlue.t deleted file mode 100644 index ff689ff5539..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/tkGlue.t +++ /dev/null @@ -1,70 +0,0 @@ -#ifdef _TKGLUE -#ifndef Call_Tk -VFUNC(int,Call_Tk,V_Call_Tk,_ANSI_ARGS_((Lang_CmdInfo *info,int argc, SV **args))) -#endif /* #ifndef Call_Tk */ - -#ifndef EnterWidgetMethods -VFUNC(void,EnterWidgetMethods,V_EnterWidgetMethods,_ANSI_ARGS_((char *package, ...))) -#endif /* #ifndef EnterWidgetMethods */ - -#ifndef FindTkVarName -VFUNC(SV *,FindTkVarName,V_FindTkVarName,_ANSI_ARGS_((CONST char *varName,int flags))) -#endif /* #ifndef FindTkVarName */ - -#ifndef InterpHv -VFUNC(HV *,InterpHv,V_InterpHv,_ANSI_ARGS_((Tcl_Interp *interp,int fatal))) -#endif /* #ifndef InterpHv */ - -#ifndef Lang_TkCommand -VFUNC(void,Lang_TkCommand,V_Lang_TkCommand,_ANSI_ARGS_((char *name, Tcl_ObjCmdProc *proc))) -#endif /* #ifndef Lang_TkCommand */ - -#ifndef Lang_TkSubCommand -VFUNC(void,Lang_TkSubCommand,V_Lang_TkSubCommand,_ANSI_ARGS_((char *name, Tcl_ObjCmdProc *proc))) -#endif /* #ifndef Lang_TkSubCommand */ - -#ifndef MakeReference -VFUNC(SV *,MakeReference,V_MakeReference,_ANSI_ARGS_((SV * sv))) -#endif /* #ifndef MakeReference */ - -#ifndef ObjectRef -VFUNC(SV *,ObjectRef,V_ObjectRef,_ANSI_ARGS_((Tcl_Interp *interp, char *path))) -#endif /* #ifndef ObjectRef */ - -#ifndef SVtoFont -VFUNC(Tk_Font,SVtoFont,V_SVtoFont,_ANSI_ARGS_((SV *win))) -#endif /* #ifndef SVtoFont */ - -#ifndef SVtoHWND -VFUNC(HWND,SVtoHWND,V_SVtoHWND,_ANSI_ARGS_((SV *win))) -#endif /* #ifndef SVtoHWND */ - -#ifndef SVtoWindow -VFUNC(Tk_Window,SVtoWindow,V_SVtoWindow,_ANSI_ARGS_((SV *win))) -#endif /* #ifndef SVtoWindow */ - -#ifndef TkToMainWindow -VFUNC(Tk_Window,TkToMainWindow,V_TkToMainWindow,_ANSI_ARGS_((Tk_Window tkwin))) -#endif /* #ifndef TkToMainWindow */ - -#ifndef TkToWidget -VFUNC(SV *,TkToWidget,V_TkToWidget,_ANSI_ARGS_((Tk_Window tkwin,Tcl_Interp **pinterp))) -#endif /* #ifndef TkToWidget */ - -#ifndef WidgetRef -VFUNC(SV *,WidgetRef,V_WidgetRef,_ANSI_ARGS_((Tcl_Interp *interp, char *path))) -#endif /* #ifndef WidgetRef */ - -#ifndef WindowCommand -VFUNC(Lang_CmdInfo *,WindowCommand,V_WindowCommand,_ANSI_ARGS_((SV *win,HV **hptr, int moan))) -#endif /* #ifndef WindowCommand */ - -#ifndef XSTkCommand -VFUNC(int,XSTkCommand,V_XSTkCommand,_ANSI_ARGS_((CV *cv, int mwcd, Tcl_ObjCmdProc *proc, int items, SV **args))) -#endif /* #ifndef XSTkCommand */ - -#ifndef install_vtab -VFUNC(void,install_vtab,V_install_vtab,_ANSI_ARGS_((char *name, void *table, size_t size))) -#endif /* #ifndef install_vtab */ - -#endif /* _TKGLUE */ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/tkGlue_f.h b/Master/tlpkg/tlperl.old/lib/Tk/tkGlue_f.h deleted file mode 100644 index 8255c08dc3f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/tkGlue_f.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef TKGLUE_VT -#define TKGLUE_VT -typedef struct TkglueVtab -{ - unsigned (*tabSize)(void); -#define VFUNC(type,name,mem,args) type (*mem) args; -#define VVAR(type,name,mem) type (*mem); -#include "tkGlue.t" -#undef VFUNC -#undef VVAR -} TkglueVtab; -extern TkglueVtab *TkglueVptr; -extern TkglueVtab *TkglueVGet(void); -#endif /* TKGLUE_VT */ diff --git a/Master/tlpkg/tlperl.old/lib/Tk/tranicon.gif b/Master/tlpkg/tlperl.old/lib/Tk/tranicon.gif Binary files differdeleted file mode 100644 index dc7d494c572..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/tranicon.gif +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/Tk/typemap b/Master/tlpkg/tlperl.old/lib/Tk/typemap deleted file mode 100644 index 29138850ab3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/typemap +++ /dev/null @@ -1,96 +0,0 @@ -TYPEMAP -Tk_Window T_TK_WINDOW -Tk_Image T_TK_IMAGE -TkWindow * T_TKWINDOW -Display * T_IVOBJ -Screen * T_IVOBJ -Visual * T_IVOBJ -Window T_IVOBJ -Colormap T_IVOBJ -GC T_IVOBJ -Font T_IVOBJ -Atom T_IV -HANDLE T_IV -BOOL T_IV -HWND T_TK_HWND -FILE * T_NIO -hash_ptr * T_PTR -Tk_3DBorder T_IVOBJ -Tk_Uid T_TK_UID -Tcl_Interp * T_TK_INTERP -Tk_Font T_TK_FONT -EventAndKeySym * T_TK_XEVENT -LangCallback * T_TK_CALLBACK -LangFontInfo * T_PVOBJ -const char * T_PV - -INPUT -T_PVOBJ - if (sv_isobject($arg)) { - STRLEN sz; - $var = ($type) SvPV((SV*)SvRV($arg),sz); - if (sz != sizeof(*$var)) - croak(\"$arg too small (%d) for $var $type (%d)\",sz,sizeof(*$var)); - } - else - croak(\"$var is not an object\") - -T_TK_WINDOW - $var = SVtoWindow($arg) - -T_TK_CALLBACK - $var = LangMakeCallback($arg) - - -T_TK_HWND - $var = SVtoHWND($arg) - -T_TK_XEVENT - $var = SVtoEventAndKeySym($arg) - -T_TK_FONT - $var = SVtoFont($arg) - -T_TK_IMAGE - $var = SVtoImage($arg) - -T_TKWINDOW - $var = (TkWindow *) SVtoWindow($arg) - -T_TK_INTERP - $var = WindowCommand($arg,NULL,1)->interp - -T_TK_UID - $var = Tk_GetUid(SvPV($arg,na)) - -T_IVOBJ - if (sv_isa($arg, \"${ntype}\")) { - $var = INT2PTR($type, SvIV(SvRV($arg))); - } - else { - $var = ($type) NULL; - croak(\"$var is not of type ${ntype}\"); - } - -T_NIO - if (sv_isa($arg, \"${Package}\")) { - $var = IoIFP(sv_2io(SvRV($arg))); - } - else - croak(\"$var is not of type ${Package}\") - - -OUTPUT -T_IVOBJ - sv_setref_iv($arg, \"${ntype}\", PTR2IV($var)); - -T_TK_UID - sv_setpv($arg,$var); - -T_TK_WINDOW - SvSetMagicSV($arg,TkToWidget($var,NULL)); - -T_TKWINDOW - SvSetMagicSV($arg,TkToWidget((Tk_Window) $var,NULL)); - - diff --git a/Master/tlpkg/tlperl.old/lib/Tk/vtab.def b/Master/tlpkg/tlperl.old/lib/Tk/vtab.def deleted file mode 100644 index 7663df7d6f4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/vtab.def +++ /dev/null @@ -1,90 +0,0 @@ -#define IMPORT_VTABLE(ptr,type,name) do { \ - ptr = INT2PTR(type *,SvIV(get_sv(name,GV_ADDWARN|GV_ADD))); \ - if ((*ptr->tabSize)() != sizeof(type)) { \ - Perl_warn(aTHX_ "%s wrong size for %s",name,#type); \ - } \ - } while (0) - -#ifdef WIN32 -#define DECLARE_VTABLES \ -LangVtab *LangVptr; \ -TcldeclsVtab *TcldeclsVptr; \ -TkVtab *TkVptr; \ -TkdeclsVtab *TkdeclsVptr; \ -TkeventVtab *TkeventVptr; \ -TkglueVtab *TkglueVptr; \ -TkintVtab *TkintVptr; \ -TkintdeclsVtab *TkintdeclsVptr; \ -TkintplatdeclsVtab *TkintplatdeclsVptr;\ -TkintxlibdeclsVtab *TkintxlibdeclsVptr;\ -TkoptionVtab *TkoptionVptr; \ -TkplatdeclsVtab *TkplatdeclsVptr - -#define IMPORT_VTABLES do { \ -IMPORT_VTABLE(LangVptr , LangVtab,"Tk::LangVtab"); \ -IMPORT_VTABLE(TcldeclsVptr , TcldeclsVtab,"Tk::TcldeclsVtab"); \ -IMPORT_VTABLE(TkVptr , TkVtab,"Tk::TkVtab"); \ -IMPORT_VTABLE(TkdeclsVptr , TkdeclsVtab,"Tk::TkdeclsVtab"); \ -IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \ -IMPORT_VTABLE(TkglueVptr , TkglueVtab,"Tk::TkglueVtab"); \ -IMPORT_VTABLE(TkintVptr , TkintVtab,"Tk::TkintVtab"); \ -IMPORT_VTABLE(TkintdeclsVptr , TkintdeclsVtab,"Tk::TkintdeclsVtab"); \ -IMPORT_VTABLE(TkintplatdeclsVptr,TkintplatdeclsVtab,"Tk::TkintplatdeclsVtab"); \ -IMPORT_VTABLE(TkintxlibdeclsVptr,TkintxlibdeclsVtab,"Tk::TkintxlibdeclsVtab"); \ -IMPORT_VTABLE(TkoptionVptr , TkoptionVtab,"Tk::TkoptionVtab"); \ -IMPORT_VTABLE(TkplatdeclsVptr , TkplatdeclsVtab,"Tk::TkplatdeclsVtab"); \ -} while (0) -#else -#define DECLARE_VTABLES \ -LangVtab *LangVptr; \ -TcldeclsVtab *TcldeclsVptr; \ -TkVtab *TkVptr; \ -TkdeclsVtab *TkdeclsVptr; \ -TkeventVtab *TkeventVptr; \ -TkglueVtab *TkglueVptr; \ -TkintVtab *TkintVptr; \ -TkintdeclsVtab *TkintdeclsVptr; \ -TkoptionVtab *TkoptionVptr; \ -XlibVtab *XlibVptr - -#define IMPORT_VTABLES do { \ -IMPORT_VTABLE(LangVptr , LangVtab,"Tk::LangVtab"); \ -IMPORT_VTABLE(TcldeclsVptr , TcldeclsVtab,"Tk::TcldeclsVtab"); \ -IMPORT_VTABLE(TkVptr , TkVtab,"Tk::TkVtab"); \ -IMPORT_VTABLE(TkdeclsVptr , TkdeclsVtab,"Tk::TkdeclsVtab"); \ -IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \ -IMPORT_VTABLE(TkglueVptr , TkglueVtab,"Tk::TkglueVtab"); \ -IMPORT_VTABLE(TkintVptr , TkintVtab,"Tk::TkintVtab"); \ -IMPORT_VTABLE(TkintdeclsVptr , TkintdeclsVtab,"Tk::TkintdeclsVtab"); \ -IMPORT_VTABLE(TkoptionVptr , TkoptionVtab,"Tk::TkoptionVtab"); \ -IMPORT_VTABLE(XlibVptr , XlibVtab,"Tk::XlibVtab"); \ -} while (0) -#endif -#define DECLARE_TIX \ -TixVtab *TixVptr; \ -TixintVtab *TixintVptr - -#define IMPORT_TIX do { \ -IMPORT_VTABLE(TixVptr , TixVtab,"Tk::TixVtab"); \ -IMPORT_VTABLE(TixintVptr , TixintVtab,"Tk::TixintVtab"); \ -} while (0) -#define DECLARE_PHOTO \ -ImgintVtab *ImgintVptr; \ -TkimgphotoVtab *TkimgphotoVptr - -#define IMPORT_PHOTO do { \ -IMPORT_VTABLE(ImgintVptr , ImgintVtab,"Tk::ImgintVtab"); \ -IMPORT_VTABLE(TkimgphotoVptr , TkimgphotoVtab,"Tk::TkimgphotoVtab"); \ -} while (0) -#define DECLARE_EVENT \ -TkeventVtab *TkeventVptr - -#define IMPORT_EVENT do { \ -IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \ -} while (0) -#define DECLARE_TIXXPM \ -TiximgxpmVtab *TiximgxpmVptr - -#define IMPORT_TIXXPM do { \ -IMPORT_VTABLE(TiximgxpmVptr , TiximgxpmVtab,"Tk::TiximgxpmVtab"); \ -} while (0) diff --git a/Master/tlpkg/tlperl.old/lib/Tk/widgets.pm b/Master/tlpkg/tlperl.old/lib/Tk/widgets.pm deleted file mode 100644 index 0d628027810..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Tk/widgets.pm +++ /dev/null @@ -1,21 +0,0 @@ -package Tk::widgets; -use Carp; - -use vars qw($VERSION); -$VERSION = '4.004'; # $Id: //depot/Tkutf8/Tk/widgets.pm#4 $ - -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/tlpkg/tlperl.old/lib/Tk/win.xbm b/Master/tlpkg/tlperl.old/lib/Tk/win.xbm deleted file mode 100644 index 13c05e8c2d7..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/winfolder.xpm b/Master/tlpkg/tlperl.old/lib/Tk/winfolder.xpm deleted file mode 100644 index 73fe734c6d0..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/Tk/wintext.xpm b/Master/tlpkg/tlperl.old/lib/Tk/wintext.xpm deleted file mode 100644 index 50b2d5587dd..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/UNIVERSAL.pm b/Master/tlpkg/tlperl.old/lib/UNIVERSAL.pm deleted file mode 100644 index 7b7bfc4058a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/UNIVERSAL.pm +++ /dev/null @@ -1,147 +0,0 @@ -package UNIVERSAL; - -our $VERSION = '1.01'; - -# 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 C<< $obj->isa( TYPE ) >> - -=item C<< CLASS->isa( TYPE ) >> - -=item C<isa( VAL, TYPE )> - -Where - -=over 4 - -=item C<TYPE> - -is a package name - -=item C<$obj> - -is a blessed reference or a string containing a package name - -=item C<CLASS> - -is a package name - -=item C<VAL> - -is any of the above or an unblessed reference - -=back - -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 C<< $obj->can( METHOD ) >> - -=item C<< CLASS->can( METHOD ) >> - -=item C<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 C<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 a function. - - -=back - -=head1 EXPORTS - -None by default. - -You may request the import of all three functions (C<isa>, C<can>, and -C<VERSION>), however it isn't usually necessary to do so. Perl magically -makes these functions act as methods on all objects. The one exception is -C<isa>, which is useful as a function when operating on non-blessed -references. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Win32.pm b/Master/tlpkg/tlperl.old/lib/Win32.pm deleted file mode 100644 index e55bfee4dfe..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32.pm +++ /dev/null @@ -1,712 +0,0 @@ -package Win32; - -BEGIN { - use strict; - use vars qw|$VERSION @ISA @EXPORT @EXPORT_OK|; - - require Exporter; - require DynaLoader; - - @ISA = qw|Exporter DynaLoader|; - $VERSION = '0.2601'; - - @EXPORT = qw( - NULL - WIN31_CLASS - OWNER_SECURITY_INFORMATION - GROUP_SECURITY_INFORMATION - DACL_SECURITY_INFORMATION - SACL_SECURITY_INFORMATION - MB_ICONHAND - MB_ICONQUESTION - MB_ICONEXCLAMATION - MB_ICONASTERISK - MB_ICONWARNING - MB_ICONERROR - MB_ICONINFORMATION - MB_ICONSTOP - ); - @EXPORT_OK = qw( - GetOSName - SW_HIDE - SW_SHOWNORMAL - SW_SHOWMINIMIZED - SW_SHOWMAXIMIZED - SW_SHOWNOACTIVATE - - CSIDL_DESKTOP - CSIDL_PROGRAMS - CSIDL_PERSONAL - CSIDL_FAVORITES - CSIDL_STARTUP - CSIDL_RECENT - CSIDL_SENDTO - CSIDL_STARTMENU - CSIDL_MYMUSIC - CSIDL_MYVIDEO - CSIDL_DESKTOPDIRECTORY - CSIDL_NETHOOD - CSIDL_FONTS - CSIDL_TEMPLATES - CSIDL_COMMON_STARTMENU - CSIDL_COMMON_PROGRAMS - CSIDL_COMMON_STARTUP - CSIDL_COMMON_DESKTOPDIRECTORY - CSIDL_APPDATA - CSIDL_PRINTHOOD - CSIDL_LOCAL_APPDATA - CSIDL_COMMON_FAVORITES - CSIDL_INTERNET_CACHE - CSIDL_COOKIES - CSIDL_HISTORY - CSIDL_COMMON_APPDATA - CSIDL_WINDOWS - CSIDL_SYSTEM - CSIDL_PROGRAM_FILES - CSIDL_MYPICTURES - CSIDL_PROFILE - CSIDL_PROGRAM_FILES_COMMON - CSIDL_COMMON_TEMPLATES - CSIDL_COMMON_DOCUMENTS - CSIDL_COMMON_ADMINTOOLS - CSIDL_ADMINTOOLS - CSIDL_COMMON_MUSIC - CSIDL_COMMON_PICTURES - CSIDL_COMMON_VIDEO - CSIDL_RESOURCES - CSIDL_RESOURCES_LOCALIZED - CSIDL_CDBURN_AREA - ); -} - -# Routines available in core: -# Win32::GetLastError -# Win32::LoginName -# Win32::NodeName -# Win32::DomainName -# Win32::FsType -# Win32::GetCwd -# Win32::GetOSVersion -# Win32::FormatMessage ERRORCODE -# Win32::Spawn COMMAND, ARGS, PID -# Win32::GetTickCount -# Win32::IsWinNT -# Win32::IsWin95 - -# We won't bother with the constant stuff, too much of a hassle. Just hard -# code it here. - -sub NULL { 0 } -sub WIN31_CLASS { &NULL } - -sub OWNER_SECURITY_INFORMATION { 0x00000001 } -sub GROUP_SECURITY_INFORMATION { 0x00000002 } -sub DACL_SECURITY_INFORMATION { 0x00000004 } -sub SACL_SECURITY_INFORMATION { 0x00000008 } - -sub MB_ICONHAND { 0x00000010 } -sub MB_ICONQUESTION { 0x00000020 } -sub MB_ICONEXCLAMATION { 0x00000030 } -sub MB_ICONASTERISK { 0x00000040 } -sub MB_ICONWARNING { 0x00000030 } -sub MB_ICONERROR { 0x00000010 } -sub MB_ICONINFORMATION { 0x00000040 } -sub MB_ICONSTOP { 0x00000010 } - -# -# Newly added constants. These have an empty prototype, unlike the -# the ones above, which aren't prototyped for compatibility reasons. -# -sub SW_HIDE () { 0 } -sub SW_SHOWNORMAL () { 1 } -sub SW_SHOWMINIMIZED () { 2 } -sub SW_SHOWMAXIMIZED () { 3 } -sub SW_SHOWNOACTIVATE () { 4 } - -sub CSIDL_DESKTOP () { 0x0000 } # <desktop> -sub CSIDL_PROGRAMS () { 0x0002 } # Start Menu\Programs -sub CSIDL_PERSONAL () { 0x0005 } # "My Documents" folder -sub CSIDL_FAVORITES () { 0x0006 } # <user name>\Favorites -sub CSIDL_STARTUP () { 0x0007 } # Start Menu\Programs\Startup -sub CSIDL_RECENT () { 0x0008 } # <user name>\Recent -sub CSIDL_SENDTO () { 0x0009 } # <user name>\SendTo -sub CSIDL_STARTMENU () { 0x000B } # <user name>\Start Menu -sub CSIDL_MYMUSIC () { 0x000D } # "My Music" folder -sub CSIDL_MYVIDEO () { 0x000E } # "My Videos" folder -sub CSIDL_DESKTOPDIRECTORY () { 0x0010 } # <user name>\Desktop -sub CSIDL_NETHOOD () { 0x0013 } # <user name>\nethood -sub CSIDL_FONTS () { 0x0014 } # windows\fonts -sub CSIDL_TEMPLATES () { 0x0015 } -sub CSIDL_COMMON_STARTMENU () { 0x0016 } # All Users\Start Menu -sub CSIDL_COMMON_PROGRAMS () { 0x0017 } # All Users\Start Menu\Programs -sub CSIDL_COMMON_STARTUP () { 0x0018 } # All Users\Startup -sub CSIDL_COMMON_DESKTOPDIRECTORY () { 0x0019 } # All Users\Desktop -sub CSIDL_APPDATA () { 0x001A } # Application Data, new for NT4 -sub CSIDL_PRINTHOOD () { 0x001B } # <user name>\PrintHood -sub CSIDL_LOCAL_APPDATA () { 0x001C } # non roaming, user\Local Settings\Application Data -sub CSIDL_COMMON_FAVORITES () { 0x001F } -sub CSIDL_INTERNET_CACHE () { 0x0020 } -sub CSIDL_COOKIES () { 0x0021 } -sub CSIDL_HISTORY () { 0x0022 } -sub CSIDL_COMMON_APPDATA () { 0x0023 } # All Users\Application Data -sub CSIDL_WINDOWS () { 0x0024 } # GetWindowsDirectory() -sub CSIDL_SYSTEM () { 0x0025 } # GetSystemDirectory() -sub CSIDL_PROGRAM_FILES () { 0x0026 } # C:\Program Files -sub CSIDL_MYPICTURES () { 0x0027 } # "My Pictures", new for Win2K -sub CSIDL_PROFILE () { 0x0028 } # USERPROFILE -sub CSIDL_PROGRAM_FILES_COMMON () { 0x002B } # C:\Program Files\Common -sub CSIDL_COMMON_TEMPLATES () { 0x002D } # All Users\Templates -sub CSIDL_COMMON_DOCUMENTS () { 0x002E } # All Users\Documents -sub CSIDL_COMMON_ADMINTOOLS () { 0x002F } # All Users\Start Menu\Programs\Administrative Tools -sub CSIDL_ADMINTOOLS () { 0x0030 } # <user name>\Start Menu\Programs\Administrative Tools -sub CSIDL_COMMON_MUSIC () { 0x0035 } # All Users\My Music -sub CSIDL_COMMON_PICTURES () { 0x0036 } # All Users\My Pictures -sub CSIDL_COMMON_VIDEO () { 0x0037 } # All Users\My Video -sub CSIDL_RESOURCES () { 0x0038 } # %windir%\Resources\, For theme and other windows resources. -sub CSIDL_RESOURCES_LOCALIZED () { 0x0039 } # %windir%\Resources\<LangID>, for theme and other windows specific resources. -sub CSIDL_CDBURN_AREA () { 0x003B } # <user name>\Local Settings\Application Data\Microsoft\CD Burning - -### This method is just a simple interface into GetOSVersion(). More -### specific or demanding situations should use that instead. - -my ($found_os, $found_desc); - -sub GetOSName { - my ($os,$desc,$major, $minor, $build, $id)=("",""); - unless (defined $found_os) { - # If we have a run this already, we have the results cached - # If so, return them - - # Use the standard API call to determine the version - ($desc, $major, $minor, $build, $id) = Win32::GetOSVersion(); - - # If id==0 then its a win32s box -- Meaning Win3.11 - unless($id) { - $os = 'Win32s'; - } - else { - # Magic numbers from MSDN documentation of OSVERSIONINFO - # Most version names can be parsed from just the id and minor - # version - $os = { - 1 => { - 0 => "95", - 10 => "98", - 90 => "Me" - }, - 2 => { - 0 => "NT4", - 1 => "XP/.Net", - 2 => "2003", - 51 => "NT3.51" - } - }->{$id}->{$minor}; - } - - # This _really_ shouldnt happen. At least not for quite a while - # Politely warn and return undef - unless (defined $os) { - warn qq[Windows version [$id:$major:$minor] unknown!]; - return undef; - } - - my $tag = ""; - - # But distinguising W2k and Vista from NT4 requires looking at the major version - if ($os eq "NT4") { - $os = {5 => "2000", 6 => "Vista"}->{$major} || "NT4"; - } - - # For the rest we take a look at the build numbers and try to deduce - # the exact release name, but we put that in the $desc - elsif ($os eq "95") { - if ($build eq '67109814') { - $tag = '(a)'; - } - elsif ($build eq '67306684') { - $tag = '(b1)'; - } - elsif ($build eq '67109975') { - $tag = '(b2)'; - } - } - elsif ($os eq "98" && $build eq '67766446') { - $tag = '(2nd ed)'; - } - - if (length $tag) { - if (length $desc) { - $desc = "$tag $desc"; - } - else { - $desc = $tag; - } - } - - # cache the results, so we dont have to do this again - $found_os = "Win$os"; - $found_desc = $desc; - } - - return wantarray ? ($found_os, $found_desc) : $found_os; -} - -bootstrap Win32; - -1; - -__END__ - -=head1 NAME - -Win32 - Interfaces to some Win32 API Functions - -=head1 DESCRIPTION - -Perl on Win32 contains several functions to access Win32 APIs. Some -are included in Perl itself (on Win32) and some are only available -after explicitly requesting the Win32 module with: - - use Win32; - -The builtin functions are marked as [CORE] and the other ones -as [EXT] in the following alphabetical listing. - -=head2 Alphabetical Listing of Win32 Functions - -=over - -=item Win32::AbortSystemShutdown(MACHINE) - -[EXT] Aborts a system shutdown (started by the -InitiateSystemShutdown function) on the specified MACHINE. - -=item Win32::BuildNumber() - -[CORE] Returns the ActivePerl build number. This function is -only available in the ActivePerl binary distribution. - -=item Win32::CopyFile(FROM, TO, OVERWRITE) - -[CORE] The Win32::CopyFile() function copies an existing file to a new -file. All file information like creation time and file attributes will -be copied to the new file. However it will B<not> copy the security -information. If the destination file already exists it will only be -overwritten when the OVERWRITE parameter is true. But even this will -not overwrite a read-only file; you have to unlink() it first -yourself. - -=item Win32::DomainName() - -[CORE] Returns the name of the Microsoft Network domain that the -owner of the current perl process is logged into. This function does -B<not> work on Windows 9x. - -=item Win32::ExpandEnvironmentStrings(STRING) - -[EXT] Takes STRING and replaces all referenced environment variable -names with their defined values. References to environment variables -take the form C<%VariableName%>. Case is ignored when looking up the -VariableName in the environment. If the variable is not found then the -original C<%VariableName%> text is retained. Has the same effect -as the following: - - $string =~ s/%([^%]*)%/$ENV{$1} || "%$1%"/eg - -=item Win32::FormatMessage(ERRORCODE) - -[CORE] Converts the supplied Win32 error number (e.g. returned by -Win32::GetLastError()) to a descriptive string. Analogous to the -perror() standard-C library function. Note that C<$^E> used -in a string context has much the same effect. - - C:\> perl -e "$^E = 26; print $^E;" - The specified disk or diskette cannot be accessed - -=item Win32::FsType() - -[CORE] Returns the name of the filesystem of the currently active -drive (like 'FAT' or 'NTFS'). In list context it returns three values: -(FSTYPE, FLAGS, MAXCOMPLEN). FSTYPE is the filesystem type as -before. FLAGS is a combination of values of the following table: - - 0x00000001 supports case-sensitive filenames - 0x00000002 preserves the case of filenames - 0x00000004 supports Unicode in filenames - 0x00000008 preserves and enforces ACLs - 0x00000010 supports file-based compression - 0x00000020 supports disk quotas - 0x00000040 supports sparse files - 0x00000080 supports reparse points - 0x00000100 supports remote storage - 0x00008000 is a compressed volume (e.g. DoubleSpace) - 0x00010000 supports object identifiers - 0x00020000 supports the Encrypted File System (EFS) - -MAXCOMPLEN is the maximum length of a filename component (the part -between two backslashes) on this file system. - -=item Win32::FreeLibrary(HANDLE) - -[EXT] Unloads a previously loaded dynamic-link library. The HANDLE is -no longer valid after this call. See L<LoadLibrary|Win32::LoadLibrary(LIBNAME)> -for information on dynamically loading a library. - -=item Win32::GetArchName() - -[EXT] Use of this function is deprecated. It is equivalent with -$ENV{PROCESSOR_ARCHITECTURE}. This might not work on Win9X. - -=item Win32::GetChipName() - -[EXT] Returns the processor type: 386, 486 or 586 for Intel processors, -21064 for the Alpha chip. - -=item Win32::GetCwd() - -[CORE] Returns the current active drive and directory. This function -does not return a UNC path, since the functionality required for such -a feature is not available under Windows 95. - -=item Win32::GetFileVersion(FILENAME) - -[EXT] Returns the file version number from the VERSIONINFO resource of -the executable file or DLL. This is a tuple of four 16 bit numbers. -In list context these four numbers will be returned. In scalar context -they are concatenated into a string, separated by dots. - -=item Win32::GetFolderPath(FOLDER [, CREATE]) - -[EXT] Returns the full pathname of one of the Windows special folders. -The folder will be created if it doesn't exist and the optional CREATE -argument is true. The following FOLDER constants are defined by the -Win32 module, but only exported on demand: - - CSIDL_ADMINTOOLS - CSIDL_APPDATA - CSIDL_CDBURN_AREA - CSIDL_COMMON_ADMINTOOLS - CSIDL_COMMON_APPDATA - CSIDL_COMMON_DESKTOPDIRECTORY - CSIDL_COMMON_DOCUMENTS - CSIDL_COMMON_FAVORITES - CSIDL_COMMON_MUSIC - CSIDL_COMMON_PICTURES - CSIDL_COMMON_PROGRAMS - CSIDL_COMMON_STARTMENU - CSIDL_COMMON_STARTUP - CSIDL_COMMON_TEMPLATES - CSIDL_COMMON_VIDEO - CSIDL_COOKIES - CSIDL_DESKTOP - CSIDL_DESKTOPDIRECTORY - CSIDL_FAVORITES - CSIDL_FONTS - CSIDL_HISTORY - CSIDL_INTERNET_CACHE - CSIDL_LOCAL_APPDATA - CSIDL_MYMUSIC - CSIDL_MYPICTURES - CSIDL_MYVIDEO - CSIDL_NETHOOD - CSIDL_PERSONAL - CSIDL_PRINTHOOD - CSIDL_PROFILE - CSIDL_PROGRAMS - CSIDL_PROGRAM_FILES - CSIDL_PROGRAM_FILES_COMMON - CSIDL_RECENT - CSIDL_RESOURCES - CSIDL_RESOURCES_LOCALIZED - CSIDL_SENDTO - CSIDL_STARTMENU - CSIDL_STARTUP - CSIDL_SYSTEM - CSIDL_TEMPLATES - CSIDL_WINDOWS - -Note that not all folders are defined on all versions of Windows. - -Please refer to the MSDN documentation of the CSIDL constants, -currently available at: - -http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp - -=item Win32::GetFullPathName(FILENAME) - -[CORE] GetFullPathName combines the FILENAME with the current drive -and directory name and returns a fully qualified (aka, absolute) -path name. In list context it returns two elements: (PATH, FILE) where -PATH is the complete pathname component (including trailing backslash) -and FILE is just the filename part. Note that no attempt is made to -convert 8.3 components in the supplied FILENAME to longnames or -vice-versa. Compare with Win32::GetShortPathName and -Win32::GetLongPathName. - -=item Win32::GetLastError() - -[CORE] Returns the last error value generated by a call to a Win32 API -function. Note that C<$^E> used in a numeric context amounts to the -same value. - -=item Win32::GetLongPathName(PATHNAME) - -[CORE] Returns a representation of PATHNAME composed of longname -components (if any). The result may not necessarily be longer -than PATHNAME. No attempt is made to convert PATHNAME to the -absolute path. Compare with Win32::GetShortPathName and -Win32::GetFullPathName. - -=item Win32::GetNextAvailDrive() - -[CORE] Returns a string in the form of "<d>:" where <d> is the first -available drive letter. - -=item Win32::GetOSVersion() - -[CORE] Returns the list (STRING, MAJOR, MINOR, BUILD, ID), where the -elements are, respectively: An arbitrary descriptive string, the major -version number of the operating system, the minor version number, the -build number, and a digit indicating the actual operating system. -For the ID, the values are 0 for Win32s, 1 for Windows 9X/Me and 2 for -Windows NT/2000/XP/2003. In scalar context it returns just the ID. - -Currently known values for ID MAJOR and MINOR are as follows: - - OS ID MAJOR MINOR - Win32s 0 - - - Windows 95 1 4 0 - Windows 98 1 4 10 - Windows Me 1 4 90 - Windows NT 3.51 2 3 51 - Windows NT 4 2 4 0 - Windows 2000 2 5 0 - Windows XP 2 5 1 - Windows Server 2003 2 5 2 - Windows Vista 2 6 0 - -On Windows NT 4 SP6 and later this function returns the following -additional values: SPMAJOR, SPMINOR, SUITEMASK, PRODUCTTYPE. - -SPMAJOR and SPMINOR are are the version numbers of the latest -installed service pack. - -SUITEMASK is a bitfield identifying the product suites available on -the system. Known bits are: - - VER_SUITE_SMALLBUSINESS 0x00000001 - VER_SUITE_ENTERPRISE 0x00000002 - VER_SUITE_BACKOFFICE 0x00000004 - VER_SUITE_COMMUNICATIONS 0x00000008 - VER_SUITE_TERMINAL 0x00000010 - VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020 - VER_SUITE_EMBEDDEDNT 0x00000040 - VER_SUITE_DATACENTER 0x00000080 - VER_SUITE_SINGLEUSERTS 0x00000100 - VER_SUITE_PERSONAL 0x00000200 - VER_SUITE_BLADE 0x00000400 - VER_SUITE_EMBEDDED_RESTRICTED 0x00000800 - VER_SUITE_SECURITY_APPLIANCE 0x00001000 - -The VER_SUITE_xxx names are listed here to crossreference the Microsoft -documentation. The Win32 module does not provide symbolic names for these -constants. - -PRODUCTTYPE provides additional information about the system. It should -be one of the following integer values: - - 1 - Workstation (NT 4, 2000 Pro, XP Home, XP Pro) - 2 - Domaincontroller - 3 - Server - -=item Win32::GetOSName() - -[EXT] In scalar context returns the name of the Win32 operating system -being used. In list context returns a two element list of the OS name -and whatever edition information is known about the particular build -(for Win9X boxes) and whatever service packs have been installed. -The latter is roughly equivalent to the first item returned by -GetOSVersion() in list context. - -Currently the possible values for the OS name are - - Win32s Win95 Win98 WinMe WinNT3.51 WinNT4 Win2000 WinXP/.Net Win2003 - -This routine is just a simple interface into GetOSVersion(). More -specific or demanding situations should use that instead. Another -option would be to use POSIX::uname(), however the latter appears to -report only the OS family name and not the specific OS. In scalar -context it returns just the ID. - -The name "WinXP/.Net" is used for historical reasons only, to maintain -backwards compatibility of the Win32 module. Windows .NET Server has -been renamed as Windows 2003 Server before final release and uses a -different major/minor version number than Windows XP. - -=item Win32::GetShortPathName(PATHNAME) - -[CORE] Returns a representation of PATHNAME that is composed of short -(8.3) path components where available. For path components where the -file system has not generated the short form the returned path will -use the long form, so this function might still for instance return a -path containing spaces. Compare with Win32::GetFullPathName and -Win32::GetLongPathName. - -=item Win32::GetProcAddress(INSTANCE, PROCNAME) - -[EXT] Returns the address of a function inside a loaded library. The -information about what you can do with this address has been lost in -the mist of time. Use the Win32::API module instead of this deprecated -function. - -=item Win32::GetTickCount() - -[CORE] Returns the number of milliseconds elapsed since the last -system boot. Resolution is limited to system timer ticks (about 10ms -on WinNT and 55ms on Win9X). - -=item Win32::GuidGen() - -[EXT] Creates a globally unique 128 bit integer that can be used as a -persistent identifier in a distributed setting. To a very high degree -of certainty this function returns a unique value. No other -invocation, on the same or any other system (networked or not), should -return the same value. - -The return value is formatted according to OLE conventions, as groups -of hex digits with surrounding braces. For example: - - {09531CF1-D0C7-4860-840C-1C8C8735E2AD} - -=item Win32::InitiateSystemShutdown - -(MACHINE, MESSAGE, TIMEOUT, FORCECLOSE, REBOOT) - -[EXT] Shutsdown the specified MACHINE, notifying users with the -supplied MESSAGE, within the specified TIMEOUT interval. Forces -closing of all documents without prompting the user if FORCECLOSE is -true, and reboots the machine if REBOOT is true. This function works -only on WinNT. - -=item Win32::IsAdminUser() - -[EXT] Returns non zero if the account in whose security context the -current process/thread is running belongs to the local group of -Administrators in the built-in system domain; returns 0 if not. -Returns the undefined value and prints a warning if an error occurred. -This function always returns 1 on Win9X. - -=item Win32::IsWinNT() - -[CORE] Returns non zero if the Win32 subsystem is Windows NT. - -=item Win32::IsWin95() - -[CORE] Returns non zero if the Win32 subsystem is Windows 95. - -=item Win32::LoadLibrary(LIBNAME) - -[EXT] Loads a dynamic link library into memory and returns its module -handle. This handle can be used with Win32::GetProcAddress and -Win32::FreeLibrary. This function is deprecated. Use the Win32::API -module instead. - -=item Win32::LoginName() - -[CORE] Returns the username of the owner of the current perl process. - -=item Win32::LookupAccountName(SYSTEM, ACCOUNT, DOMAIN, SID, SIDTYPE) - -[EXT] Looks up ACCOUNT on SYSTEM and returns the domain name the SID and -the SID type. - -=item Win32::LookupAccountSID(SYSTEM, SID, ACCOUNT, DOMAIN, SIDTYPE) - -[EXT] Looks up SID on SYSTEM and returns the account name, domain name, -and the SID type. - -=item Win32::MsgBox(MESSAGE [, FLAGS [, TITLE]]) - -[EXT] Create a dialogbox containing MESSAGE. FLAGS specifies the -required icon and buttons according to the following table: - - 0 = OK - 1 = OK and Cancel - 2 = Abort, Retry, and Ignore - 3 = Yes, No and Cancel - 4 = Yes and No - 5 = Retry and Cancel - - MB_ICONSTOP "X" in a red circle - MB_ICONQUESTION question mark in a bubble - MB_ICONEXCLAMATION exclamation mark in a yellow triangle - MB_ICONINFORMATION "i" in a bubble - -TITLE specifies an optional window title. The default is "Perl". - -The function returns the menu id of the selected push button: - - 0 Error - - 1 OK - 2 Cancel - 3 Abort - 4 Retry - 5 Ignore - 6 Yes - 7 No - -=item Win32::NodeName() - -[CORE] Returns the Microsoft Network node-name of the current machine. - -=item Win32::RegisterServer(LIBRARYNAME) - -[EXT] Loads the DLL LIBRARYNAME and calls the function DllRegisterServer. - -=item Win32::SetChildShowWindow(SHOWWINDOW) - -[CORE] Sets the I<ShowMode> of child processes started by system(). -By default system() will create a new console window for child -processes if Perl itself is not running from a console. Calling -SetChildShowWindow(0) will make these new console windows invisible. -Calling SetChildShowWindow() without arguments reverts system() to the -default behavior. The return value of SetChildShowWindow() is the -previous setting or C<undef>. - -[EXT] The following symbolic constants for SHOWWINDOW are available -(but not exported) from the Win32 module: SW_HIDE, SW_SHOWNORMAL, -SW_SHOWMINIMIZED, SW_SHOWMAXIMIZED and SW_SHOWNOACTIVATE. - -=item Win32::SetCwd(NEWDIRECTORY) - -[CORE] Sets the current active drive and directory. This function does not -work with UNC paths, since the functionality required to required for -such a feature is not available under Windows 95. - -=item Win32::SetLastError(ERROR) - -[CORE] Sets the value of the last error encountered to ERROR. This is -that value that will be returned by the Win32::GetLastError() -function. - -=item Win32::Sleep(TIME) - -[CORE] Pauses for TIME milliseconds. The timeslices are made available -to other processes and threads. - -=item Win32::Spawn(COMMAND, ARGS, PID) - -[CORE] Spawns a new process using the supplied COMMAND, passing in -arguments in the string ARGS. The pid of the new process is stored in -PID. This function is deprecated. Please use the Win32::Process module -instead. - -=item Win32::UnregisterServer(LIBRARYNAME) - -[EXT] Loads the DLL LIBRARYNAME and calls the function -DllUnregisterServer. - -=back - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Win32/API.pm b/Master/tlpkg/tlperl.old/lib/Win32/API.pm deleted file mode 100644 index e1bac5cda48..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/API.pm +++ /dev/null @@ -1,745 +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.47 -# Date: 12 Nov 2007 -# Author: Aldo Calpini <dada@perl.it> -# Maintainer: Cosimo Streppone <cosimo@cpan.org> -# -# Changes for gcc/cygwin: Daniel Risacher <magnus@alum.mit.edu> -# ported from 0.41 based on Daniel's patch by Reini Urban <rurban@x-ray.at> -# -# $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; -BEGIN { - if ($^O eq 'cygwin') { - require File::Basename; - } -} - -####################################################################### -# STATIC OBJECT PROPERTIES -# -$VERSION = '0.47'; - -#### 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 = {}; - - if ($^O eq 'cygwin' and $dll ne File::Basename::basename($dll)) { - # need to convert $dll to win32 path - # isn't there an API for this? - my $newdll = `cygpath -w "$dll"`; - chomp $newdll; - DEBUG "(PM)new: converted '$dll' to\n '$newdll'\n"; - $dll = $newdll; - } - - #### avoid loading a library more than once - if(exists($Libraries{$dll})) { - DEBUG "Win32::API::new: Library '$dll' already loaded, handle=$Libraries{$dll}\n"; - $hdll = $Libraries{$dll}; - } else { - DEBUG "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(); - DEBUG "FAILED Loading library '$dll': $!\n"; - delete $Libraries{$dll}; - 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(); - DEBUG "FAILED GetProcAddress for Proc '$proc': $!\n"; - return undef; - } - DEBUG "GetProcAddress('$proc') = '$hproc'\n"; - - #### 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}++; - - DEBUG "Object blessed!\n"; - - #### 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) { - DEBUG "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> ). - -=head1 MAINTAINER - -Cosimo Streppone ( I<cosimo@cpan.org> ) - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Win32/API.pm.orig b/Master/tlpkg/tlperl.old/lib/Win32/API.pm.orig deleted file mode 100644 index 9e4accd8bf6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/API.pm.orig +++ /dev/null @@ -1,741 +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.47
-# Date: 12 Nov 2007
-# Author: Aldo Calpini <dada@perl.it>
-# Maintainer: Cosimo Streppone <cosimo@cpan.org>
-#
-# Changes for gcc/cygwin: Daniel Risacher <magnus@alum.mit.edu>
-# ported from 0.41 based on Daniel's patch by Reini Urban <rurban@x-ray.at>
-#
-# $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;
-use File::Basename ();
-
-#######################################################################
-# STATIC OBJECT PROPERTIES
-#
-$VERSION = '0.47';
-
-#### 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 = {};
-
- if ($^O eq 'cygwin' and $dll ne File::Basename::basename($dll)) {
- # need to convert $dll to win32 path
- # isn't there an API for this?
- my $newdll = `cygpath -w "$dll"`;
- chomp $newdll;
- DEBUG "(PM)new: converted '$dll' to\n '$newdll'\n";
- $dll = $newdll;
- }
-
- #### avoid loading a library more than once
- if(exists($Libraries{$dll})) {
- DEBUG "Win32::API::new: Library '$dll' already loaded, handle=$Libraries{$dll}\n";
- $hdll = $Libraries{$dll};
- } else {
- DEBUG "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();
- DEBUG "FAILED Loading library '$dll': $!\n";
- delete $Libraries{$dll};
- 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();
- DEBUG "FAILED GetProcAddress for Proc '$proc': $!\n";
- return undef;
- }
- DEBUG "GetProcAddress('$proc') = '$hproc'\n";
-
- #### 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}++;
-
- DEBUG "Object blessed!\n";
-
- #### 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) {
- DEBUG "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> ).
-
-=head1 MAINTAINER
-
-Cosimo Streppone ( I<cosimo@cpan.org> )
-
-=cut
diff --git a/Master/tlpkg/tlperl.old/lib/Win32/API/Callback.pm b/Master/tlpkg/tlperl.old/lib/Win32/API/Callback.pm deleted file mode 100644 index 22de9d4f46a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/API/Callback.pm +++ /dev/null @@ -1,174 +0,0 @@ -package Win32::API::Callback; - -# See the bottom of this file for the POD documentation. Search for the -# string '=head'. - -####################################################################### -# -# Win32::API::Callback - Perl Win32 API Import Facility -# -# Author: Aldo Calpini <dada@perl.it> -# Maintainer: Cosimo Streppone <cosimo@cpan.org> -# -# $Id: Callback.pm,v 1.0 2001/10/30 13:57:31 dada Exp $ -# -####################################################################### - -$VERSION = '0.47'; - -require Exporter; # to export the constants to the main:: space -require DynaLoader; # to dynuhlode the module. -@ISA = qw( Exporter DynaLoader ); - -sub DEBUG { - if ($WIN32::API::DEBUG) { - printf @_ if @_ or return 1; - } else { - return 0; - } -} - -use Win32::API; -use Win32::API::Type; -use Win32::API::Struct; - -####################################################################### -# 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. -# - -sub AUTOLOAD { - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - #reset $! to zero to reset any current errors. - $!=0; - my $val = constant($constname, @_ ? $_[0] : 0); - if ($! != 0) { - if ($! =~ /Invalid/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD; - } else { - ($pack,$file,$line) = caller; - die "Your vendor has not defined Win32::API::Callback macro $constname, used at $file line $line."; - } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - - -####################################################################### -# dynamically load in the API extension module. -# -bootstrap Win32::API::Callback; - -####################################################################### -# PUBLIC METHODS -# -sub new { - my($class, $proc, $in, $out) = @_; - my %self = (); - - # printf "(PM)Callback::new: got proc='%s', in='%s', out='%s'\n", $proc, $in, $out; - - $self{in} = []; - if(ref($in) eq 'ARRAY') { - foreach (@$in) { - push(@{ $self{in} }, Win32::API::type_to_num($_)); - } - } else { - my @in = split '', $in; - foreach (@in) { - push(@{ $self{in} }, Win32::API::type_to_num($_)); - } - } - $self{out} = Win32::API::type_to_num($out); - $self{sub} = $proc; - my $self = bless \%self, $class; - - DEBUG "(PM)Callback::new: calling CallbackCreate($self)...\n"; - my $hproc = CallbackCreate($self); - - DEBUG "(PM)Callback::new: hproc=$hproc\n"; - - #### ...if that fails, set $! accordingly - if(!$hproc) { - $! = Win32::GetLastError(); - return undef; - } - - #### ok, let's stuff the object - $self->{code} = $hproc; - $self->{sub} = $proc; - - #### cast the spell - return $self; -} - -sub MakeStruct { - my($self, $n, $addr) = @_; - DEBUG "(PM)Win32::API::Callback::MakeStruct: got self='$self'\n"; - my $struct = Win32::API::Struct->new($self->{intypes}->[$n]); - $struct->FromMemory($addr); - return $struct; -} - -1; - -__END__ - -####################################################################### -# DOCUMENTATION -# - -=head1 NAME - -Win32::API::Callback - Callback support for Win32::API - -=head1 SYNOPSIS - - use Win32::API; - use Win32::API::Callback; - - my $callback = Win32::API::Callback->new( - sub { my($a, $b) = @_; return $a+$b; }, - "NN", "N", - ); - - Win32::API->Import( - 'mydll', 'two_integers_cb', 'KNN', 'N', - ); - - $sum = two_integers_cb( $callback, 3, 2 ); - - -=head1 FOREWORDS - -=over 4 - -=item * -Support for this module is B<highly experimental> at this point. - -=item * -I won't be surprised if it doesn't work for you. - -=item * -Feedback is very appreciated. - -=item * -Documentation is in the work. Either see the SYNOPSIS above -or the samples in the F<samples> directory. - -=back - -=head1 AUTHOR - -Aldo Calpini ( I<dada@perl.it> ). - -=head1 MAINTAINER - -Cosimo Streppone ( I<cosimo@cpan.org> ). - -=cut - diff --git a/Master/tlpkg/tlperl.old/lib/Win32/API/Struct.pm b/Master/tlpkg/tlperl.old/lib/Win32/API/Struct.pm deleted file mode 100644 index 05a4c8c60a5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/API/Struct.pm +++ /dev/null @@ -1,532 +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 -# -# Author: Aldo Calpini <dada@perl.it> -# Maintainer: Cosimo Streppone <cosimo@cpan.org> -# -# $Id: Struct.pm,v 1.0 2001/10/30 13:57:31 dada Exp $ -####################################################################### - -$VERSION = '0.47'; - -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> ). - -=head1 MAINTAINER - -Cosimo Streppone ( I<cosimo@cpan.org> ). - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Win32/API/Test.pm b/Master/tlpkg/tlperl.old/lib/Win32/API/Test.pm deleted file mode 100644 index 6cbeed6bfac..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/API/Test.pm +++ /dev/null @@ -1,120 +0,0 @@ -# -# Win32::API::Test - Test helper package for Win32::API -# -# Version: 0.01 -# Date: 23 Dec 2006 -# Author: Cosimo Streppone <cosimo@cpan.org> -# -# $Id: API.pm,v 1.0 2001/10/30 13:57:31 dada Exp $ -# -package Win32::API::Test; - -sub compiler_name () { - use Config; - my $cc = $Config{ccname}; - if($cc eq 'cl' || $cc eq 'cl.exe') - { - $cc = 'cl'; - } - return($cc); -} - -sub compiler_version () { - use Config; - my $ver = $Config{ccversion} || 0; - if( $ver =~ /^(\d+\.\d+)/ ) - { - $ver = 0 + $1; - } - return($ver); -} - -# -# Run the compiler and get version from there... -# User might be running a compiler different from -# that used to build perl. -# For example, Cosimo does. For testing, of course. -# -# *** -# *** IT DOES NOT WORK NOW. -# *** FOR REASONS I DON'T KNOW, CL.EXE OUTPUTS ITS -# *** VERSION STRING IN THE FIRST TWO LINES THAT -# *** I'M NOT ABLE TO CATCH... -# *** -# -sub compiler_version_from_shell () { - my $cc = compiler_name(); - my $ver; - # MSVC - if($cc eq 'cl') - { - my @ver = `$cc`; - my $ver = join('',@ver); - print 'VER:'.$ver.':'."\n"; - if($ver =~ /Version (\d[\d\.]+)/ms ) - { - $ver = $1; - } - } - # GCC - elsif($cc eq 'cc' || $cc eq 'gcc' || $cc eq 'winegcc' ) - { - $ver = join('', `$cc --version`); - if($ver =~ /gcc.*(\d[\d+]+)/ms ) - { - $ver = $1; - } - } - # Borland C - elsif($cc eq 'bcc32' || $cc eq 'bcc') - { - $ver = join('', `$cc`); - if($ver =~ /Borland C\+\+ (\d[\d\.]+)/ms ) - { - $ver = $1; - } - } - return($ver); -} - -sub find_test_dll () { - require File::Spec; - my $dll_name = $_[0]; - my @paths = qw(.. ../t ../t/dll . ./dll ./t/dll); - while(my $path = shift @paths) - { - $dll = File::Spec->catfile($path, $dll_name); - return $dll if -s $dll; - } - return(undef); -} - -1; - -__END__ - - -####################################################################### -# DOCUMENTATION -# - -=head1 NAME - -Win32::API::Test - Test helper package for Win32::API - -=head1 SYNOPSIS - - my $test_dll = Win32::API::Test::find_test_dll('API_test.dll'); - -Check the t/*.t test scripts for more details. - -=head1 DESCRIPTION - -Simple package to hold Win32::API test suite helper functions. -No more, no less. - -=head1 AUTHOR - -Cosimo Streppone ( I<cosimo@cpan.org> ) - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Win32/API/Type.pm b/Master/tlpkg/tlperl.old/lib/Win32/API/Type.pm deleted file mode 100644 index 334b0b731e1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/API/Type.pm +++ /dev/null @@ -1,446 +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 -# -# Author: Aldo Calpini <dada@perl.it> -# Maintainer: Cosimo Streppone <cosimo@cpan.org> -# -# $Id: Type.pm,v 1.0 2001/10/30 13:57:31 dada Exp $ -####################################################################### - -$VERSION = '0.47'; - -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 = (); - -# Initialize data structures at startup. -# Aldo wants to keep the <DATA> approach. -# -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; - } -} -close(DATA); - -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> ). - -=head1 MAINTAINER - -Cosimo Streppone ( I<cosimo@cpan.org> ). - -=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/tlpkg/tlperl.old/lib/Win32/ChangeNotify.pm b/Master/tlpkg/tlperl.old/lib/Win32/ChangeNotify.pm deleted file mode 100644 index a86682da376..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/ChangeNotify.pm +++ /dev/null @@ -1,198 +0,0 @@ -#--------------------------------------------------------------------- -package Win32::ChangeNotify; -# -# Copyright 1998 Christopher J. Madsen -# -# Created: 3 Feb 1998 from the ActiveWare version -# (c) 1995 Microsoft Corporation. All rights reserved. -# Developed by ActiveWare Internet Corp., http://www.ActiveWare.com -# -# Other modifications (c) 1997 by Gurusamy Sarathy <gsar@activestate.com> -# -# Author: Christopher J. Madsen <cjm@pobox.com> -# Version: 1.02 (13-Jun-1999) -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the -# GNU General Public License or the Artistic License for more details. -# -# Monitor directory for changes -#--------------------------------------------------------------------- -# 1.04 -Minor changes by Yves Orton to fix the trueness of $subtree (Dec 2002) - -$VERSION = '1.05'; - -use Carp; -use Win32::IPC 1.00 '/./'; # Import everything -require Exporter; -require DynaLoader; - -@ISA = qw(Exporter DynaLoader Win32::IPC); -# 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( - FILE_NOTIFY_CHANGE_ATTRIBUTES - FILE_NOTIFY_CHANGE_DIR_NAME - FILE_NOTIFY_CHANGE_FILE_NAME - FILE_NOTIFY_CHANGE_LAST_WRITE - FILE_NOTIFY_CHANGE_SECURITY - FILE_NOTIFY_CHANGE_SIZE - INFINITE -); -@EXPORT_OK = qw( - wait_all wait_any -); - -sub AUTOLOAD { - # This AUTOLOAD is used to 'autoload' constants from the constant() - # XS function. - - my $constname; - ($constname = $AUTOLOAD) =~ s/.*:://; - if ($constname =~ /^(?:FILE_NOTIFY_CHANGE_|INFINITE)/) { - local $! = 0; - my $val = constant($constname); - croak("$constname is not defined by Win32::ChangeNotify") if $! != 0; - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; - } -} # end AUTOLOAD - -bootstrap Win32::ChangeNotify; - -sub new { - my ($class,$path,$subtree,$filter) = @_; - - if ($filter =~ /\A[\s|A-Z_]+\Z/i) { - $filter = 0; - foreach (split(/[\s|]+/, $_[3])) { - $filter |= constant("FILE_NOTIFY_CHANGE_" . uc $_); - carp "Invalid filter $_" if $!; - } - } - _new($class,$path,$subtree,$filter); -} # end new - -sub Close { &close } - -sub FindFirst { $_[0] = Win32::ChangeNotify->_new(@_[1..3]); } - -sub FindNext { &reset } - -1; -__END__ - -=head1 NAME - -Win32::ChangeNotify - Monitor events related to files and directories - -=head1 SYNOPSIS - - require Win32::ChangeNotify; - - $notify = Win32::ChangeNotify->new($Path,$WatchSubTree,$Events); - $notify->wait or warn "Something failed: $!\n"; - # There has been a change. - -=head1 DESCRIPTION - -This module allows the user to use a Win32 change notification event -object from Perl. This allows the Perl program to monitor events -relating to files and directory trees. - -Unfortunately, the Win32 API which implements this feature does not -provide any indication of I<what> triggered the notification (as far -as I know). If you're monitoring a directory for file changes, and -you need to know I<which> file changed, you'll have to find some other -way of determining that. Depending on exactly what you're trying to -do, you may be able to check file timestamps to find recently changed -files. Or, you may need to cache the directory contents somewhere and -compare the current contents to your cached copy when you receive a -change notification. - -The C<wait> method and C<wait_all> & C<wait_any> functions are -inherited from the L<"Win32::IPC"> module. - -=head2 Methods - -=over 4 - -=item $notify = Win32::ChangeNotify->new($path, $subtree, $filter) - -Constructor for a new ChangeNotification object. C<$path> is the -directory to monitor. If C<$subtree> is true, then all directories -under C<$path> will be monitored. C<$filter> indicates what events -should trigger a notification. It should be a string containing any -of the following flags (separated by whitespace and/or C<|>). - - ATTRIBUTES Any attribute change - DIR_NAME Any directory name change - FILE_NAME Any file name change (creating/deleting/renaming) - LAST_WRITE Any change to a file's last write time - SECURITY Any security descriptor change - SIZE Any change in a file's size - -(C<$filter> can also be an integer composed from the -C<FILE_NOTIFY_CHANGE_*> constants.) - -=item $notify->close - -Shut down monitoring. You could just C<undef $notify> instead (but -C<close> works even if there are other copies of the object). This -happens automatically when your program exits. - -=item $notify->reset - -Resets the ChangeNotification object after a change has been detected. -The object will become signalled again after the next change. (It is -OK to call this immediately after C<new>, but it is not required.) - -=item $notify->wait - -See L<"Win32::IPC">. Remember to call C<reset> afterwards if you want -to continue monitoring. - -=back - -=head2 Deprecated Functions and Methods - -B<Win32::ChangeNotify> still supports the ActiveWare syntax, but its -use is deprecated. - -=over 4 - -=item FindFirst($Obj,$PathName,$WatchSubTree,$Filter) - -Use - - $Obj = Win32::ChangeNotify->new($PathName,$WatchSubTree,$Filter) - -instead. - -=item $obj->FindNext() - -Use C<$obj-E<gt>reset> instead. - -=item $obj->Close() - -Use C<$obj-E<gt>close> instead. - -=back - -=head1 AUTHOR - -Christopher J. Madsen E<lt>F<cjm@pobox.com>E<gt> - -Loosely based on the original module by ActiveWare Internet Corp., -F<http://www.ActiveWare.com> - -=cut - -# Local Variables: -# tmtrack-file-task: "Win32::ChangeNotify" -# End: diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Client.pl b/Master/tlpkg/tlperl.old/lib/Win32/Client.pl deleted file mode 100644 index 6ae585b7c91..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Client.pl +++ /dev/null @@ -1,63 +0,0 @@ -use strict; -use Win32::Pipe; - -#### -# You may notice that named pipe names are case INsensitive! -#### - -my $PipeName = "\\\\.\\pipe\\TEST this LoNG Named Pipe!"; - -print "I am falling asleep for few seconds, so that we give time\nFor the server to get up and running.\n"; -sleep(4); -print "\nOpening a pipe ...\n"; - -if (my $Pipe = Win32::Pipe->new($PipeName)) { - print "\n\nPipe has been opened, writing data to it...\n"; - print "-------------------------------------------\n"; - $Pipe->Write("\n" . Win32::Pipe::Credit() . "\n\n"); - while () { - print "\nCommands:\n"; - print " FILE:xxxxx Dumps the file xxxxx.\n"; - print " Credit Dumps the credit screen.\n"; - print " Quit Quits this client (server remains running).\n"; - print " Exit Exits both client and server.\n"; - print " -----------------------------------------\n"; - - my $In = <STDIN>; - chop($In); - - if ((my $File = $In) =~ s/^file:(.*)/$1/i){ - if (-s $File) { - if (open(FILE, "< $File")) { - while ($File = <FILE>) { - $In .= $File; - }; - close(FILE); - } - } - } - - if ($In =~ /^credit$/i){ - $In = "\n" . Win32::Pipe::Credit() . "\n\n"; - } - - unless ($Pipe->Write($In)) { - print "Writing to pipe failed.\n"; - last; - } - - if ($In =~ /^(exit|quit)$/i) { - print "\nATTENTION: Closing due to user request.\n"; - last; - } - } - print "Closing...\n"; - $Pipe->Close(); -} -else { - my($Error, $ErrorText) = Win32::Pipe::Error(); - print "Error:$Error \"$ErrorText\"\n"; - sleep(4); -} - -print "Done...\n"; diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Clipboard.pm b/Master/tlpkg/tlperl.old/lib/Win32/Clipboard.pm deleted file mode 100644 index ba4038a5ade..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Clipboard.pm +++ /dev/null @@ -1,369 +0,0 @@ -package Win32::Clipboard; -####################################################################### -# -# Win32::Clipboard - Interaction with the Windows clipboard -# -# Version: 0.52 -# Author: Aldo Calpini <dada@perl.it> -# -# Modified by: Hideyo Imazu <himazu@gmail.com> -# -####################################################################### - -require Exporter; # to export the constants to the main:: space -require DynaLoader; # to dynuhlode the module. - -@ISA = qw( Exporter DynaLoader ); -@EXPORT = qw( - CF_TEXT - CF_BITMAP - CF_METAFILEPICT - CF_SYLK - CF_DIF - CF_TIFF - CF_OEMTEXT - CF_DIB - CF_PALETTE - CF_PENDATA - CF_RIFF - CF_WAVE - CF_UNICODETEXT - CF_ENHMETAFILE - CF_HDROP - CF_LOCALE -); - -####################################################################### -# 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. -# - -sub AUTOLOAD { - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - #reset $! to zero to reset any current errors. - local $! = 0; - my $val = constant($constname, @_ ? $_[0] : 0); - if ($! != 0) { - if ($! =~ /Invalid/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD; - } else { - my ($pack, $file, $line) = caller; - die "Win32::Clipboard::$constname is not defined, used at $file line $line."; - } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - - -####################################################################### -# STATIC OBJECT PROPERTIES -# -$VERSION = "0.5201"; - -####################################################################### -# FUNCTIONS -# - -sub new { - my($class, $value) = @_; - my $self = "I'm the Clipboard!"; - Set($value) if defined($value); - return bless(\$self); -} - -sub Version { - return $VERSION; -} - -sub Get { - if( IsBitmap() ) { return GetBitmap(); } - elsif( IsFiles() ) { return GetFiles(); } - else { return GetText(); } -} - -sub TIESCALAR { - my $class = shift; - my $value = shift; - Set($value) if defined $value; - my $self = "I'm the Clipboard!"; - return bless \$self, $class; -} - -sub FETCH { Get() } -sub STORE { shift; Set(@_) } - -sub DESTROY { - my($self) = @_; - undef $self; - StopClipboardViewer(); -} - -END { - StopClipboardViewer(); -} - -####################################################################### -# dynamically load in the Clipboard.pll module. -# - -bootstrap Win32::Clipboard; - -####################################################################### -# a little hack to use the module itself as a class. -# - -sub main::Win32::Clipboard { - my($value) = @_; - my $self={}; - my $result = Win32::Clipboard::Set($value) if defined($value); - return bless($self, "Win32::Clipboard"); -} - -1; - -__END__ - -=head1 NAME - -Win32::Clipboard - Interaction with the Windows clipboard - -=head1 SYNOPSIS - - use Win32::Clipboard; - - $CLIP = Win32::Clipboard(); - - print "Clipboard contains: ", $CLIP->Get(), "\n"; - - $CLIP->Set("some text to copy into the clipboard"); - - $CLIP->Empty(); - - $CLIP->WaitForChange(); - print "Clipboard has changed!\n"; - - -=head1 DESCRIPTION - -This module lets you interact with the Windows clipboard: you can get its content, -set it, empty it, or let your script sleep until it changes. -This version supports 3 formats for clipboard data: - -=over 4 - -=item * -text (C<CF_TEXT>) - -The clipboard contains some text; this is the B<only> format you can use to set -clipboard data; you get it as a single string. - -Example: - - $text = Win32::Clipboard::GetText(); - print $text; - -=item * -bitmap (C<CF_DIB>) - -The clipboard contains an image, either a bitmap or a picture copied in the -clipboard from a graphic application. The data you get is a binary buffer -ready to be written to a bitmap (BMP format) file. - -Example: - - $image = Win32::Clipboard::GetBitmap(); - open BITMAP, ">some.bmp"; - binmode BITMAP; - print BITMAP $image; - close BITMAP; - -=item * -list of files (C<CF_HDROP>) - -The clipboard contains files copied or cutted from an Explorer-like -application; you get a list of filenames. - -Example: - - @files = Win32::Clipboard::GetFiles(); - print join("\n", @files); - -=back - -=head2 REFERENCE - -All the functions can be used either with their full name (eg. B<Win32::Clipboard::Get>) -or as methods of a C<Win32::Clipboard> object. -For the syntax, refer to L</SYNOPSIS> above. Note also that you can create a clipboard -object and set its content at the same time with: - - $CLIP = Win32::Clipboard("blah blah blah"); - -or with the more common form: - - $CLIP = new Win32::Clipboard("blah blah blah"); - -If you prefer, you can even tie the Clipboard to a variable like this: - - tie $CLIP, 'Win32::Clipboard'; - - print "Clipboard content: $CLIP\n"; - - $CLIP = "some text to copy to the clipboard..."; - -In this case, you can still access other methods using the tied() function: - - tied($CLIP)->Empty; - print "got the picture" if tied($CLIP)->IsBitmap; - -=over 4 - -=item Empty() - -Empty the clipboard. - -=for html <P> - -=item EnumFormats() - -Returns an array of identifiers describing the format for the data currently in the -clipboard. Formats can be standard ones (described in the L</CONSTANTS> section) or -application-defined custom ones. See also IsFormatAvailable(). - -=for html <P> - -=item Get() - -Returns the clipboard content; note that the result depends on the nature of -clipboard data; to ensure that you get only the desired format, you should use -GetText(), GetBitmap() or GetFiles() instead. Get() is in fact implemented as: - - if( IsBitmap() ) { return GetBitmap(); } - elsif( IsFiles() ) { return GetFiles(); } - else { return GetText(); } - -See also IsBitmap(), IsFiles(), IsText(), EnumFormats() and IsFormatAvailable() -to check the clipboard format before getting data. - -=for html <P> - -=item GetAs(FORMAT) - -Returns the clipboard content in the desired FORMAT (can be one of the constants -defined in the L</CONSTANTS> section or a custom format). Note that the only -meaningful identifiers are C<CF_TEXT>, C<CF_DIB> and C<CF_HDROP>; any other -format is treated as a string. - -=for html <P> - -=item GetBitmap() - -Returns the clipboard content as an image, or C<undef> on errors. - -=for html <P> - -=item GetFiles() - -Returns the clipboard content as a list of filenames, or C<undef> on errors. - -=for html <P> - -=item GetFormatName(FORMAT) - -Returns the name of the specified custom clipboard format, or C<undef> on errors; -note that you cannot get the name of the standard formats (described in the -L</CONSTANTS> section). - -=for html <P> - -=item GetText() - -Returns the clipboard content as a string, or C<undef> on errors. - -=for html <P> - -=item IsBitmap() - -Returns a boolean value indicating if the clipboard contains an image. -See also GetBitmap(). - -=for html <P> - -=item IsFiles() - -Returns a boolean value indicating if the clipboard contains a list of -files. See also GetFiles(). - -=for html <P> - -=item IsFormatAvailable(FORMAT) - -Checks if the clipboard data matches the specified FORMAT (one of the constants -described in the L</CONSTANTS> section); returns zero if the data does not match, -a nonzero value if it matches. - -=for html <P> - -=item IsText() - -Returns a boolean value indicating if the clipboard contains text. -See also GetText(). - -=for html <P> - -=item Set(VALUE) - -Set the clipboard content to the specified string. - -=for html <P> - -=item WaitForChange([TIMEOUT]) - -This function halts the script until the clipboard content changes. If you specify -a C<TIMEOUT> value (in milliseconds), the function will return when this timeout -expires, even if the clipboard hasn't changed. If no value is given, it will wait -indefinitely. Returns 1 if the clipboard has changed, C<undef> on errors. - -=back - -=head2 CONSTANTS - -These constants are the standard clipboard formats recognized by Win32::Clipboard: - - CF_TEXT 1 - CF_DIB 8 - CF_HDROP 15 - -The following formats are B<not recognized> by Win32::Clipboard; they are, -however, exported constants and can eventually be used with the EnumFormats(), -IsFormatAvailable() and GetAs() functions: - - CF_BITMAP 2 - CF_METAFILEPICT 3 - CF_SYLK 4 - CF_DIF 5 - CF_TIFF 6 - CF_OEMTEXT 7 - CF_PALETTE 9 - CF_PENDATA 10 - CF_RIFF 11 - CF_WAVE 12 - CF_UNICODETEXT 13 - CF_ENHMETAFILE 14 - CF_LOCALE 16 - -=head1 AUTHOR - -This version was released by Hideyo Imazu <F<himazu@gmail.com>>. - -Aldo Calpini <F<dada@perl.it>> was the former maintainer. - -Original XS porting by Gurusamy Sarathy <F<gsar@activestate.com>>. - -=cut - - diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Console.pm b/Master/tlpkg/tlperl.old/lib/Win32/Console.pm deleted file mode 100644 index 1e3876a6a33..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Console.pm +++ /dev/null @@ -1,1463 +0,0 @@ -####################################################################### -# -# Win32::Console - Win32 Console and Character Mode Functions -# -####################################################################### - -package Win32::Console; - -require Exporter; -require DynaLoader; - -$VERSION = "0.07"; - -@ISA= qw( Exporter DynaLoader ); -@EXPORT = qw( - BACKGROUND_BLUE - BACKGROUND_GREEN - BACKGROUND_INTENSITY - BACKGROUND_RED - CAPSLOCK_ON - CONSOLE_TEXTMODE_BUFFER - CTRL_BREAK_EVENT - CTRL_C_EVENT - ENABLE_ECHO_INPUT - ENABLE_LINE_INPUT - ENABLE_MOUSE_INPUT - ENABLE_PROCESSED_INPUT - ENABLE_PROCESSED_OUTPUT - ENABLE_WINDOW_INPUT - ENABLE_WRAP_AT_EOL_OUTPUT - ENHANCED_KEY - FILE_SHARE_READ - FILE_SHARE_WRITE - FOREGROUND_BLUE - FOREGROUND_GREEN - FOREGROUND_INTENSITY - FOREGROUND_RED - LEFT_ALT_PRESSED - LEFT_CTRL_PRESSED - NUMLOCK_ON - GENERIC_READ - GENERIC_WRITE - RIGHT_ALT_PRESSED - RIGHT_CTRL_PRESSED - SCROLLLOCK_ON - SHIFT_PRESSED - STD_INPUT_HANDLE - STD_OUTPUT_HANDLE - STD_ERROR_HANDLE - $FG_BLACK - $FG_GRAY - $FG_BLUE - $FG_LIGHTBLUE - $FG_RED - $FG_LIGHTRED - $FG_GREEN - $FG_LIGHTGREEN - $FG_MAGENTA - $FG_LIGHTMAGENTA - $FG_CYAN - $FG_LIGHTCYAN - $FG_BROWN - $FG_YELLOW - $FG_LIGHTGRAY - $FG_WHITE - $BG_BLACK - $BG_GRAY - $BG_BLUE - $BG_LIGHTBLUE - $BG_RED - $BG_LIGHTRED - $BG_GREEN - $BG_LIGHTGREEN - $BG_MAGENTA - $BG_LIGHTMAGENTA - $BG_CYAN - $BG_LIGHTCYAN - $BG_BROWN - $BG_YELLOW - $BG_LIGHTGRAY - $BG_WHITE - $ATTR_NORMAL - $ATTR_INVERSE - @CONSOLE_COLORS -); - - -####################################################################### -# 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. -# - -sub AUTOLOAD { - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - #reset $! to zero to reset any current errors. - local $! = 0; - my $val = constant($constname, @_ ? $_[0] : 0); - if ($! != 0) { -# if ($! =~ /Invalid/) { -# $AutoLoader::AUTOLOAD = $AUTOLOAD; -# goto &AutoLoader::AUTOLOAD; -# } else { - ($pack, $file, $line) = caller; undef $pack; - die "Symbol Win32::Console::$constname not defined, used at $file line $line."; -# } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - - -####################################################################### -# STATIC OBJECT PROPERTIES -# - -# %HandlerRoutineStack = (); -# $HandlerRoutineRegistered = 0; - -####################################################################### -# PUBLIC METHODS -# - -#======== -sub new { -#======== - my($class, $param1, $param2) = @_; - - my $self = {}; - - if (defined($param1) - and ($param1 == constant("STD_INPUT_HANDLE", 0) - or $param1 == constant("STD_OUTPUT_HANDLE", 0) - or $param1 == constant("STD_ERROR_HANDLE", 0))) - { - $self->{'handle'} = _GetStdHandle($param1); - } - else { - $param1 = constant("GENERIC_READ", 0) | constant("GENERIC_WRITE", 0) unless $param1; - $param2 = constant("FILE_SHARE_READ", 0) | constant("FILE_SHARE_WRITE", 0) unless $param2; - $self->{'handle'} = _CreateConsoleScreenBuffer($param1, $param2, - constant("CONSOLE_TEXTMODE_BUFFER", 0)); - } - bless $self, $class; - return $self; -} - -#============ -sub Display { -#============ - my($self) = @_; - return undef unless ref($self); - return _SetConsoleActiveScreenBuffer($self->{'handle'}); -} - -#=========== -sub Select { -#=========== - my($self, $type) = @_; - return undef unless ref($self); - return _SetStdHandle($type, $self->{'handle'}); -} - -#=========== -sub SetIcon { -#=========== - my($self, $icon) = @_; - $icon = $self unless ref($self); - return _SetConsoleIcon($icon); -} - -#========== -sub Title { -#========== - my($self, $title) = @_; - $title = $self unless ref($self); - - if (defined($title)) { - return _SetConsoleTitle($title); - } - else { - return _GetConsoleTitle(); - } -} - -#============== -sub WriteChar { -#============== - my($self, $text, $col, $row) = @_; - return undef unless ref($self); - return _WriteConsoleOutputCharacter($self->{'handle'},$text,$col,$row); -} - -#============= -sub ReadChar { -#============= - my($self, $size, $col, $row) = @_; - return undef unless ref($self); - - my $buffer = (" " x $size); - if (_ReadConsoleOutputCharacter($self->{'handle'}, $buffer, $size, $col, $row)) { - return $buffer; - } - else { - return undef; - } -} - -#============== -sub WriteAttr { -#============== - my($self, $attr, $col, $row) = @_; - return undef unless ref($self); - return _WriteConsoleOutputAttribute($self->{'handle'}, $attr, $col, $row); -} - -#============= -sub ReadAttr { -#============= - my($self, $size, $col, $row) = @_; - return undef unless ref($self); - return _ReadConsoleOutputAttribute($self->{'handle'}, $size, $col, $row); -} - -#========== -sub Write { -#========== - my($self,$string) = @_; - return undef unless ref($self); - return _WriteConsole($self->{'handle'}, $string); -} - -#============= -sub ReadRect { -#============= - my($self, $left, $top, $right, $bottom) = @_; - return undef unless ref($self); - - my $col = $right - $left + 1; - my $row = $bottom - $top + 1; - - my $buffer = (" " x ($col*$row*4)); - if (_ReadConsoleOutput($self->{'handle'}, $buffer, - $col, $row, 0, 0, - $left, $top, $right, $bottom)) - { - return $buffer; - } - else { - return undef; - } -} - -#============== -sub WriteRect { -#============== - my($self, $buffer, $left, $top, $right, $bottom) = @_; - return undef unless ref($self); - - my $col = $right - $left + 1; - my $row = $bottom - $top + 1; - - return _WriteConsoleOutput($self->{'handle'}, $buffer, - $col, $row, 0, 0, - $left, $top, $right, $bottom); -} - -#=========== -sub Scroll { -#=========== - my($self, $left1, $top1, $right1, $bottom1, - $col, $row, $char, $attr, - $left2, $top2, $right2, $bottom2) = @_; - return undef unless ref($self); - - return _ScrollConsoleScreenBuffer($self->{'handle'}, - $left1, $top1, $right1, $bottom1, - $col, $row, $char, $attr, - $left2, $top2, $right2, $bottom2); -} - -#============== -sub MaxWindow { -#============== - my($self, $flag) = @_; - return undef unless ref($self); - - if (not defined($flag)) { - my @info = _GetConsoleScreenBufferInfo($self->{'handle'}); - return $info[9], $info[10]; - } - else { - return _GetLargestConsoleWindowSize($self->{'handle'}); - } -} - -#========= -sub Info { -#========= - my($self) = @_; - return undef unless ref($self); - return _GetConsoleScreenBufferInfo($self->{'handle'}); -} - -#=========== -sub Window { -#=========== - my($self, $flag, $left, $top, $right, $bottom) = @_; - return undef unless ref($self); - - if (not defined($flag)) { - my @info = _GetConsoleScreenBufferInfo($self->{'handle'}); - return $info[5], $info[6], $info[7], $info[8]; - } - else { - return _SetConsoleWindowInfo($self->{'handle'}, $flag, $left, $top, $right, $bottom); - } -} - -#============== -sub GetEvents { -#============== - my($self) = @_; - return undef unless ref($self); - return _GetNumberOfConsoleInputEvents($self->{'handle'}); -} - -#========== -sub Flush { -#========== - my($self) = @_; - return undef unless ref($self); - return _FlushConsoleInputBuffer($self->{'handle'}); -} - -#============== -sub InputChar { -#============== - my($self, $number) = @_; - return undef unless ref($self); - - $number = 1 unless defined($number); - - my $buffer = (" " x $number); - if (_ReadConsole($self->{'handle'}, $buffer, $number) == $number) { - return $buffer; - } - else { - return undef; - } -} - -#========== -sub Input { -#========== - my($self) = @_; - return undef unless ref($self); - return _ReadConsoleInput($self->{'handle'}); -} - -#============== -sub PeekInput { -#============== - my($self) = @_; - return undef unless ref($self); - return _PeekConsoleInput($self->{'handle'}); -} - -#=============== -sub WriteInput { -#=============== - my($self) = shift; - return undef unless ref($self); - return _WriteConsoleInput($self->{'handle'}, @_); -} - -#========= -sub Mode { -#========= - my($self, $mode) = @_; - return undef unless ref($self); - if (defined($mode)) { - return _SetConsoleMode($self->{'handle'}, $mode); - } - else { - return _GetConsoleMode($self->{'handle'}); - } -} - -#======== -sub Cls { -#======== - my($self, $attr) = @_; - return undef unless ref($self); - - $attr = $ATTR_NORMAL unless defined($attr); - - my ($x, $y) = $self->Size(); - my($left, $top, $right ,$bottom) = $self->Window(); - my $vx = $right - $left; - my $vy = $bottom - $top; - $self->FillChar(" ", $x*$y, 0, 0); - $self->FillAttr($attr, $x*$y, 0, 0); - $self->Cursor(0, 0); - $self->Window(1, 0, 0, $vx, $vy); -} - -#========= -sub Attr { -#========= - my($self, $attr) = @_; - return undef unless ref($self); - - if (not defined($attr)) { - return (_GetConsoleScreenBufferInfo($self->{'handle'}))[4]; - } - else { - return _SetConsoleTextAttribute($self->{'handle'}, $attr); - } -} - -#=========== -sub Cursor { -#=========== - my($self, $col, $row, $size, $visi) = @_; - return undef unless ref($self); - - my $curr_row = 0; - my $curr_col = 0; - my $curr_size = 0; - my $curr_visi = 0; - my $return = 0; - my $discard = 0; - - - if (defined($col)) { - $row = -1 if not defined($row); - if ($col == -1 or $row == -1) { - ($discard, $discard, $curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'}); - $col=$curr_col if $col==-1; - $row=$curr_row if $row==-1; - } - $return += _SetConsoleCursorPosition($self->{'handle'}, $col, $row); - if (defined($size) and defined($visi)) { - if ($size == -1 or $visi == -1) { - ($curr_size, $curr_visi) = _GetConsoleCursorInfo($self->{'handle'}); - $size = $curr_size if $size == -1; - $visi = $curr_visi if $visi == -1; - } - $size = 1 if $size < 1; - $size = 99 if $size > 99; - $return += _SetConsoleCursorInfo($self->{'handle'}, $size, $visi); - } - return $return; - } - else { - ($discard, $discard, $curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'}); - ($curr_size, $curr_visi) = _GetConsoleCursorInfo($self->{'handle'}); - return ($curr_col, $curr_row, $curr_size, $curr_visi); - } -} - -#========= -sub Size { -#========= - my($self, $col, $row) = @_; - return undef unless ref($self); - - if (not defined($col)) { - ($col, $row) = _GetConsoleScreenBufferInfo($self->{'handle'}); - return ($col, $row); - } - else { - $row = -1 if not defined($row); - if ($col == -1 or $row == -1) { - ($curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'}); - $col=$curr_col if $col==-1; - $row=$curr_row if $row==-1; - } - return _SetConsoleScreenBufferSize($self->{'handle'}, $col, $row); - } -} - -#============= -sub FillAttr { -#============= - my($self, $attr, $number, $col, $row) = @_; - return undef unless ref($self); - - $number = 1 unless $number; - - if (!defined($col) or !defined($row) or $col == -1 or $row == -1) { - ($discard, $discard, - $curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'}); - $col = $curr_col if !defined($col) or $col == -1; - $row = $curr_row if !defined($row) or $row == -1; - } - return _FillConsoleOutputAttribute($self->{'handle'}, $attr, $number, $col, $row); -} - -#============= -sub FillChar { -#============= - my($self, $char, $number, $col, $row) = @_; - return undef unless ref($self); - - if (!defined($col) or !defined($row) or $col == -1 or $row == -1) { - ($discard, $discard, - $curr_col, $curr_row) = _GetConsoleScreenBufferInfo($self->{'handle'}); - $col = $curr_col if !defined($col) or $col == -1; - $row = $curr_row if !defined($row) or $row == -1; - } - return _FillConsoleOutputCharacter($self->{'handle'}, $char, $number, $col, $row); -} - -#============ -sub InputCP { -#============ - my($self, $codepage) = @_; - $codepage = $self if (defined($self) and ref($self) ne "Win32::Console"); - if (defined($codepage)) { - return _SetConsoleCP($codepage); - } - else { - return _GetConsoleCP(); - } -} - -#============= -sub OutputCP { -#============= - my($self, $codepage) = @_; - $codepage = $self if (defined($self) and ref($self) ne "Win32::Console"); - if (defined($codepage)) { - return _SetConsoleOutputCP($codepage); - } - else { - return _GetConsoleOutputCP(); - } -} - -#====================== -sub GenerateCtrlEvent { -#====================== - my($self, $type, $pid) = @_; - $type = constant("CTRL_C_EVENT", 0) unless defined($type); - $pid = 0 unless defined($pid); - return _GenerateConsoleCtrlEvent($type, $pid); -} - -#=================== -#sub SetCtrlHandler { -#=================== -# my($name, $add) = @_; -# $add = 1 unless defined($add); -# my @nor = keys(%HandlerRoutineStack); -# if ($add == 0) { -# foreach $key (@nor) { -# delete $HandlerRoutineStack{$key}, last if $HandlerRoutineStack{$key}==$name; -# } -# $HandlerRoutineRegistered--; -# } else { -# if ($#nor == -1) { -# my $r = _SetConsoleCtrlHandler(); -# if (!$r) { -# print "WARNING: SetConsoleCtrlHandler failed...\n"; -# } -# } -# $HandlerRoutineRegistered++; -# $HandlerRoutineStack{$HandlerRoutineRegistered} = $name; -# } -#} - -#=================== -sub get_Win32_IPC_HANDLE { # So Win32::IPC can wait on a console handle -#=================== - $_[0]->{'handle'}; -} - -######################################################################## -# PRIVATE METHODS -# - -#================ -#sub CtrlHandler { -#================ -# my($ctrltype) = @_; -# my $routine; -# my $result = 0; -# CALLEM: foreach $routine (sort { $b <=> $a } keys %HandlerRoutineStack) { -# #print "CtrlHandler: calling $HandlerRoutineStack{$routine}($ctrltype)\n"; -# $result = &{"main::".$HandlerRoutineStack{$routine}}($ctrltype); -# last CALLEM if $result; -# } -# return $result; -#} - -#============ -sub DESTROY { -#============ - my($self) = @_; - _CloseHandle($self->{'handle'}); -} - -####################################################################### -# dynamically load in the Console.pll module. -# - -bootstrap Win32::Console; - -####################################################################### -# ADDITIONAL CONSTANTS EXPORTED IN THE MAIN NAMESPACE -# - -$FG_BLACK = 0; -$FG_GRAY = constant("FOREGROUND_INTENSITY",0); -$FG_BLUE = constant("FOREGROUND_BLUE",0); -$FG_LIGHTBLUE = constant("FOREGROUND_BLUE",0)| - constant("FOREGROUND_INTENSITY",0); -$FG_RED = constant("FOREGROUND_RED",0); -$FG_LIGHTRED = constant("FOREGROUND_RED",0)| - constant("FOREGROUND_INTENSITY",0); -$FG_GREEN = constant("FOREGROUND_GREEN",0); -$FG_LIGHTGREEN = constant("FOREGROUND_GREEN",0)| - constant("FOREGROUND_INTENSITY",0); -$FG_MAGENTA = constant("FOREGROUND_RED",0)| - constant("FOREGROUND_BLUE",0); -$FG_LIGHTMAGENTA = constant("FOREGROUND_RED",0)| - constant("FOREGROUND_BLUE",0)| - constant("FOREGROUND_INTENSITY",0); -$FG_CYAN = constant("FOREGROUND_GREEN",0)| - constant("FOREGROUND_BLUE",0); -$FG_LIGHTCYAN = constant("FOREGROUND_GREEN",0)| - constant("FOREGROUND_BLUE",0)| - constant("FOREGROUND_INTENSITY",0); -$FG_BROWN = constant("FOREGROUND_RED",0)| - constant("FOREGROUND_GREEN",0); -$FG_YELLOW = constant("FOREGROUND_RED",0)| - constant("FOREGROUND_GREEN",0)| - constant("FOREGROUND_INTENSITY",0); -$FG_LIGHTGRAY = constant("FOREGROUND_RED",0)| - constant("FOREGROUND_GREEN",0)| - constant("FOREGROUND_BLUE",0); -$FG_WHITE = constant("FOREGROUND_RED",0)| - constant("FOREGROUND_GREEN",0)| - constant("FOREGROUND_BLUE",0)| - constant("FOREGROUND_INTENSITY",0); - -$BG_BLACK = 0; -$BG_GRAY = constant("BACKGROUND_INTENSITY",0); -$BG_BLUE = constant("BACKGROUND_BLUE",0); -$BG_LIGHTBLUE = constant("BACKGROUND_BLUE",0)| - constant("BACKGROUND_INTENSITY",0); -$BG_RED = constant("BACKGROUND_RED",0); -$BG_LIGHTRED = constant("BACKGROUND_RED",0)| - constant("BACKGROUND_INTENSITY",0); -$BG_GREEN = constant("BACKGROUND_GREEN",0); -$BG_LIGHTGREEN = constant("BACKGROUND_GREEN",0)| - constant("BACKGROUND_INTENSITY",0); -$BG_MAGENTA = constant("BACKGROUND_RED",0)| - constant("BACKGROUND_BLUE",0); -$BG_LIGHTMAGENTA = constant("BACKGROUND_RED",0)| - constant("BACKGROUND_BLUE",0)| - constant("BACKGROUND_INTENSITY",0); -$BG_CYAN = constant("BACKGROUND_GREEN",0)| - constant("BACKGROUND_BLUE",0); -$BG_LIGHTCYAN = constant("BACKGROUND_GREEN",0)| - constant("BACKGROUND_BLUE",0)| - constant("BACKGROUND_INTENSITY",0); -$BG_BROWN = constant("BACKGROUND_RED",0)| - constant("BACKGROUND_GREEN",0); -$BG_YELLOW = constant("BACKGROUND_RED",0)| - constant("BACKGROUND_GREEN",0)| - constant("BACKGROUND_INTENSITY",0); -$BG_LIGHTGRAY = constant("BACKGROUND_RED",0)| - constant("BACKGROUND_GREEN",0)| - constant("BACKGROUND_BLUE",0); -$BG_WHITE = constant("BACKGROUND_RED",0)| - constant("BACKGROUND_GREEN",0)| - constant("BACKGROUND_BLUE",0)| - constant("BACKGROUND_INTENSITY",0); - -$ATTR_NORMAL = $FG_LIGHTGRAY|$BG_BLACK; -$ATTR_INVERSE = $FG_BLACK|$BG_LIGHTGRAY; - -for my $fg ($FG_BLACK, $FG_GRAY, $FG_BLUE, $FG_GREEN, - $FG_CYAN, $FG_RED, $FG_MAGENTA, $FG_BROWN, - $FG_LIGHTBLUE, $FG_LIGHTGREEN, $FG_LIGHTCYAN, - $FG_LIGHTRED, $FG_LIGHTMAGENTA, $FG_YELLOW, - $FG_LIGHTGRAY, $FG_WHITE) -{ - for my $bg ($BG_BLACK, $BG_GRAY, $BG_BLUE, $BG_GREEN, - $BG_CYAN, $BG_RED, $BG_MAGENTA, $BG_BROWN, - $BG_LIGHTBLUE, $BG_LIGHTGREEN, $BG_LIGHTCYAN, - $BG_LIGHTRED, $BG_LIGHTMAGENTA, $BG_YELLOW, - $BG_LIGHTGRAY, $BG_WHITE) - { - push(@CONSOLE_COLORS, $fg|$bg); - } -} - -# Preloaded methods go here. - -#Currently Autoloading is not implemented in Perl for win32 -# Autoload methods go after __END__, and are processed by the autosplit program. - -1; - -__END__ - -=head1 NAME - -Win32::Console - Win32 Console and Character Mode Functions - - -=head1 DESCRIPTION - -This module implements the Win32 console and character mode -functions. They give you full control on the console input and output, -including: support of off-screen console buffers (eg. multiple screen -pages) - -=over - -=item * - -reading and writing of characters, attributes and whole portions of -the screen - -=item * - -complete processing of keyboard and mouse events - -=item * - -some very funny additional features :) - -=back - -Those functions should also make possible a port of the Unix's curses -library; if there is anyone interested (and/or willing to contribute) -to this project, e-mail me. Thank you. - - -=head1 REFERENCE - - -=head2 Methods - -=over - -=item Alloc - -Allocates a new console for the process. Returns C<undef> on errors, a -nonzero value on success. A process cannot be associated with more -than one console, so this method will fail if there is already an -allocated console. Use Free to detach the process from the console, -and then call Alloc to create a new console. See also: C<Free> - -Example: - - $CONSOLE->Alloc(); - -=item Attr [attr] - -Gets or sets the current console attribute. This attribute is used by -the Write method. - -Example: - - $attr = $CONSOLE->Attr(); - $CONSOLE->Attr($FG_YELLOW | $BG_BLUE); - -=item Close - -Closes a shortcut object. Note that it is not "strictly" required to -close the objects you created, since the Win32::Shortcut objects are -automatically closed when the program ends (or when you elsehow -destroy such an object). - -Example: - - $LINK->Close(); - -=item Cls [attr] - -Clear the console, with the specified I<attr> if given, or using -ATTR_NORMAL otherwise. - -Example: - - $CONSOLE->Cls(); - $CONSOLE->Cls($FG_WHITE | $BG_GREEN); - -=item Cursor [x, y, size, visible] - -Gets or sets cursor position and appearance. Returns C<undef> on -errors, or a 4-element list containing: I<x>, I<y>, I<size>, -I<visible>. I<x> and I<y> are the current cursor position; ... - -Example: - - ($x, $y, $size, $visible) = $CONSOLE->Cursor(); - - # Get position only - ($x, $y) = $CONSOLE->Cursor(); - - $CONSOLE->Cursor(40, 13, 50, 1); - - # Set position only - $CONSOLE->Cursor(40, 13); - - # Set size and visibility without affecting position - $CONSOLE->Cursor(-1, -1, 50, 1); - -=item Display - -Displays the specified console on the screen. Returns C<undef> on errors, -a nonzero value on success. - -Example: - - $CONSOLE->Display(); - -=item FillAttr [attribute, number, col, row] - -Fills the specified number of consecutive attributes, beginning at -I<col>, I<row>, with the value specified in I<attribute>. Returns the -number of attributes filled, or C<undef> on errors. See also: -C<FillChar>. - -Example: - - $CONSOLE->FillAttr($FG_BLACK | $BG_BLACK, 80*25, 0, 0); - -=item FillChar char, number, col, row - -Fills the specified number of consecutive characters, beginning at -I<col>, I<row>, with the character specified in I<char>. Returns the -number of characters filled, or C<undef> on errors. See also: -C<FillAttr>. - -Example: - - $CONSOLE->FillChar("X", 80*25, 0, 0); - -=item Flush - -Flushes the console input buffer. All the events in the buffer are -discarded. Returns C<undef> on errors, a nonzero value on success. - -Example: - - $CONSOLE->Flush(); - -=item Free - -Detaches the process from the console. Returns C<undef> on errors, a -nonzero value on success. See also: C<Alloc>. - -Example: - - $CONSOLE->Free(); - -=item GenerateCtrlEvent [type, processgroup] - -Sends a break signal of the specified I<type> to the specified -I<processgroup>. I<type> can be one of the following constants: - - CTRL_BREAK_EVENT - CTRL_C_EVENT - -they signal, respectively, the pressing of Control + Break and of -Control + C; if not specified, it defaults to CTRL_C_EVENT. -I<processgroup> is the pid of a process sharing the same console. If -omitted, it defaults to 0 (the current process), which is also the -only meaningful value that you can pass to this function. Returns -C<undef> on errors, a nonzero value on success. - -Example: - - # break this script now - $CONSOLE->GenerateCtrlEvent(); - -=item GetEvents - -Returns the number of unread input events in the console's input -buffer, or C<undef> on errors. See also: C<Input>, C<InputChar>, -C<PeekInput>, C<WriteInput>. - -Example: - - $events = $CONSOLE->GetEvents(); - -=item Info - -Returns an array of informations about the console (or C<undef> on -errors), which contains: - -=over - -=item * - -columns (X size) of the console buffer. - -=item * - -rows (Y size) of the console buffer. - -=item * - -current column (X position) of the cursor. - -=item * - -current row (Y position) of the cursor. - -=item * - -current attribute used for C<Write>. - -=item * - -left column (X of the starting point) of the current console window. - -=item * - -top row (Y of the starting point) of the current console window. - -=item * - -right column (X of the final point) of the current console window. - -=item * - -bottom row (Y of the final point) of the current console window. - -=item * - -maximum number of columns for the console window, given the current -buffer size, font and the screen size. - -=item * - -maximum number of rows for the console window, given the current -buffer size, font and the screen size. - -=back - -See also: C<Attr>, C<Cursor>, C<Size>, C<Window>, C<MaxWindow>. - -Example: - - @info = $CONSOLE->Info(); - print "Cursor at $info[3], $info[4].\n"; - -=item Input - -Reads an event from the input buffer. Returns a list of values, which -depending on the event's nature are: - -=over - -=item keyboard event - -The list will contain: - -=over - -=item * - -event type: 1 for keyboard - -=item * - -key down: TRUE if the key is being pressed, FALSE if the key is being released - -=item * - -repeat count: the number of times the key is being held down - -=item * - -virtual keycode: the virtual key code of the key - -=item * - -virtual scancode: the virtual scan code of the key - -=item * - -char: the ASCII code of the character (if the key is a character key, 0 otherwise) - -=item * - -control key state: the state of the control keys (SHIFTs, CTRLs, ALTs, etc.) - -=back - -=item mouse event - -The list will contain: - -=over - -=item * - -event type: 2 for mouse - -=item * - -mouse pos. X: X coordinate (column) of the mouse location - -=item * - -mouse pos. Y: Y coordinate (row) of the mouse location - -=item * - -button state: the mouse button(s) which are pressed - -=item * - -control key state: the state of the control keys (SHIFTs, CTRLs, ALTs, etc.) - -=item * - -event flags: the type of the mouse event - -=back - -=back - -This method will return C<undef> on errors. Note that the events -returned are depending on the input C<Mode> of the console; for example, -mouse events are not intercepted unless ENABLE_MOUSE_INPUT is -specified. See also: C<GetEvents>, C<InputChar>, C<Mode>, -C<PeekInput>, C<WriteInput>. - -Example: - - @event = $CONSOLE->Input(); - -=item InputChar number - -Reads and returns I<number> characters from the console input buffer, -or C<undef> on errors. See also: C<Input>, C<Mode>. - -Example: - - $key = $CONSOLE->InputChar(1); - -=item InputCP [codepage] - -Gets or sets the input code page used by the console. Note that this -doesn't apply to a console object, but to the standard input -console. This attribute is used by the Write method. See also: -C<OutputCP>. - -Example: - - $codepage = $CONSOLE->InputCP(); - $CONSOLE->InputCP(437); - - # you may want to use the non-instanciated form to avoid confuzion :) - $codepage = Win32::Console::InputCP(); - Win32::Console::InputCP(437); - -=item MaxWindow - -Returns the size of the largest possible console window, based on the -current font and the size of the display. The result is C<undef> on -errors, otherwise a 2-element list containing col, row. - -Example: - - ($maxCol, $maxRow) = $CONSOLE->MaxWindow(); - -=item Mode [flags] - -Gets or sets the input or output mode of a console. I<flags> can be a -combination of the following constants: - - ENABLE_LINE_INPUT - ENABLE_ECHO_INPUT - ENABLE_PROCESSED_INPUT - ENABLE_WINDOW_INPUT - ENABLE_MOUSE_INPUT - ENABLE_PROCESSED_OUTPUT - ENABLE_WRAP_AT_EOL_OUTPUT - -For more informations on the meaning of those flags, please refer to -the L<"Microsoft's Documentation">. - -Example: - - $mode = $CONSOLE->Mode(); - $CONSOLE->Mode(ENABLE_MOUSE_INPUT | ENABLE_PROCESSED_INPUT); - -=item MouseButtons - -Returns the number of the buttons on your mouse, or C<undef> on errors. - -Example: - - print "Your mouse has ", $CONSOLE->MouseButtons(), " buttons.\n"; - -=item new Win32::Console standard_handle - -=item new Win32::Console [accessmode, sharemode] - -Creates a new console object. The first form creates a handle to a -standard channel, I<standard_handle> can be one of the following: - - STD_OUTPUT_HANDLE - STD_ERROR_HANDLE - STD_INPUT_HANDLE - -The second form, instead, creates a console screen buffer in memory, -which you can access for reading and writing as a normal console, and -then redirect on the standard output (the screen) with C<Display>. In -this case, you can specify one or both of the following values for -I<accessmode>: - - GENERIC_READ - GENERIC_WRITE - -which are the permissions you will have on the created buffer, and one -or both of the following values for I<sharemode>: - - FILE_SHARE_READ - FILE_SHARE_WRITE - -which affect the way the console can be shared. If you don't specify -any of those parameters, all 4 flags will be used. - -Example: - - $STDOUT = new Win32::Console(STD_OUTPUT_HANDLE); - $STDERR = new Win32::Console(STD_ERROR_HANDLE); - $STDIN = new Win32::Console(STD_INPUT_HANDLE); - - $BUFFER = new Win32::Console(); - $BUFFER = new Win32::Console(GENERIC_READ | GENERIC_WRITE); - -=item OutputCP [codepage] - -Gets or sets the output code page used by the console. Note that this -doesn't apply to a console object, but to the standard output console. -See also: C<InputCP>. - -Example: - - $codepage = $CONSOLE->OutputCP(); - $CONSOLE->OutputCP(437); - - # you may want to use the non-instanciated form to avoid confuzion :) - $codepage = Win32::Console::OutputCP(); - Win32::Console::OutputCP(437); - -=item PeekInput - -Does exactly the same as C<Input>, except that the event read is not -removed from the input buffer. See also: C<GetEvents>, C<Input>, -C<InputChar>, C<Mode>, C<WriteInput>. - -Example: - - @event = $CONSOLE->PeekInput(); - -=item ReadAttr [number, col, row] - -Reads the specified I<number> of consecutive attributes, beginning at -I<col>, I<row>, from the console. Returns the attributes read (a -variable containing one character for each attribute), or C<undef> on -errors. You can then pass the returned variable to C<WriteAttr> to -restore the saved attributes on screen. See also: C<ReadChar>, -C<ReadRect>. - -Example: - - $colors = $CONSOLE->ReadAttr(80*25, 0, 0); - -=item ReadChar [number, col, row] - -Reads the specified I<number> of consecutive characters, beginning at -I<col>, I<row>, from the console. Returns a string containing the -characters read, or C<undef> on errors. You can then pass the -returned variable to C<WriteChar> to restore the saved characters on -screen. See also: C<ReadAttr>, C<ReadRect>. - -Example: - - $chars = $CONSOLE->ReadChar(80*25, 0, 0); - -=item ReadRect left, top, right, bottom - -Reads the content (characters and attributes) of the rectangle -specified by I<left>, I<top>, I<right>, I<bottom> from the console. -Returns a string containing the rectangle read, or C<undef> on errors. -You can then pass the returned variable to C<WriteRect> to restore the -saved rectangle on screen (or on another console). See also: -C<ReadAttr>, C<ReadChar>. - -Example: - - $rect = $CONSOLE->ReadRect(0, 0, 80, 25); - -=item Scroll left, top, right, bottom, col, row, char, attr, - [cleft, ctop, cright, cbottom] - -Moves a block of data in a console buffer; the block is identified by -I<left>, I<top>, I<right>, I<bottom>, while I<row>, I<col> identify -the new location of the block. The cells left empty as a result of -the move are filled with the character I<char> and attribute I<attr>. -Optionally you can specify a clipping region with I<cleft>, I<ctop>, -I<cright>, I<cbottom>, so that the content of the console outside this -rectangle are unchanged. Returns C<undef> on errors, a nonzero value -on success. - -Example: - - # scrolls the screen 10 lines down, filling with black spaces - $CONSOLE->Scroll(0, 0, 80, 25, 0, 10, " ", $FG_BLACK | $BG_BLACK); - -=item Select standard_handle - -Redirects a standard handle to the specified console. -I<standard_handle> can have one of the following values: - - STD_INPUT_HANDLE - STD_OUTPUT_HANDLE - STD_ERROR_HANDLE - -Returns C<undef> on errors, a nonzero value on success. - -Example: - - $CONSOLE->Select(STD_OUTPUT_HANDLE); - -=item SetIcon icon_file - -Sets the icon in the title bar of the current console window. - -Example: - - $CONSOLE->SetIcon("C:/My/Path/To/Custom.ico"); - -=item Size [col, row] - -Gets or sets the console buffer size. - -Example: - - ($x, $y) = $CONSOLE->Size(); - $CONSOLE->Size(80, 25); - -=item Title [title] - -Gets or sets the title of the current console window. - -Example: - - $title = $CONSOLE->Title(); - $CONSOLE->Title("This is a title"); - -=item Window [flag, left, top, right, bottom] - -Gets or sets the current console window size. If called without -arguments, returns a 4-element list containing the current window -coordinates in the form of I<left>, I<top>, I<right>, I<bottom>. To -set the window size, you have to specify an additional I<flag> -parameter: if it is 0 (zero), coordinates are considered relative to -the current coordinates; if it is non-zero, coordinates are absolute. - -Example: - - ($left, $top, $right, $bottom) = $CONSOLE->Window(); - $CONSOLE->Window(1, 0, 0, 80, 50); - -=item Write string - -Writes I<string> on the console, using the current attribute, that you -can set with C<Attr>, and advancing the cursor as needed. This isn't -so different from Perl's "print" statement. Returns the number of -characters written or C<undef> on errors. See also: C<WriteAttr>, -C<WriteChar>, C<WriteRect>. - -Example: - - $CONSOLE->Write("Hello, world!"); - -=item WriteAttr attrs, col, row - -Writes the attributes in the string I<attrs>, beginning at I<col>, -I<row>, without affecting the characters that are on screen. The -string attrs can be the result of a C<ReadAttr> function, or you can -build your own attribute string; in this case, keep in mind that every -attribute is treated as a character, not a number (see example). -Returns the number of attributes written or C<undef> on errors. See -also: C<Write>, C<WriteChar>, C<WriteRect>. - -Example: - - $CONSOLE->WriteAttr($attrs, 0, 0); - - # note the use of chr()... - $attrs = chr($FG_BLACK | $BG_WHITE) x 80; - $CONSOLE->WriteAttr($attrs, 0, 0); - -=item WriteChar chars, col, row - -Writes the characters in the string I<attr>, beginning at I<col>, I<row>, -without affecting the attributes that are on screen. The string I<chars> -can be the result of a C<ReadChar> function, or a normal string. Returns -the number of characters written or C<undef> on errors. See also: -C<Write>, C<WriteAttr>, C<WriteRect>. - -Example: - - $CONSOLE->WriteChar("Hello, worlds!", 0, 0); - -=item WriteInput (event) - -Pushes data in the console input buffer. I<(event)> is a list of values, -for more information see C<Input>. The string chars can be the result of -a C<ReadChar> function, or a normal string. Returns the number of -characters written or C<undef> on errors. See also: C<Write>, -C<WriteAttr>, C<WriteRect>. - -Example: - - $CONSOLE->WriteInput(@event); - -=item WriteRect rect, left, top, right, bottom - -Writes a rectangle of characters and attributes (contained in I<rect>) -on the console at the coordinates specified by I<left>, I<top>, -I<right>, I<bottom>. I<rect> can be the result of a C<ReadRect> -function. Returns C<undef> on errors, otherwise a 4-element list -containing the coordinates of the affected rectangle, in the format -I<left>, I<top>, I<right>, I<bottom>. See also: C<Write>, -C<WriteAttr>, C<WriteChar>. - -Example: - - $CONSOLE->WriteRect($rect, 0, 0, 80, 25); - -=back - - -=head2 Constants - -The following constants are exported in the main namespace of your -script using Win32::Console: - - BACKGROUND_BLUE - BACKGROUND_GREEN - BACKGROUND_INTENSITY - BACKGROUND_RED - CAPSLOCK_ON - CONSOLE_TEXTMODE_BUFFER - ENABLE_ECHO_INPUT - ENABLE_LINE_INPUT - ENABLE_MOUSE_INPUT - ENABLE_PROCESSED_INPUT - ENABLE_PROCESSED_OUTPUT - ENABLE_WINDOW_INPUT - ENABLE_WRAP_AT_EOL_OUTPUT - ENHANCED_KEY - FILE_SHARE_READ - FILE_SHARE_WRITE - FOREGROUND_BLUE - FOREGROUND_GREEN - FOREGROUND_INTENSITY - FOREGROUND_RED - LEFT_ALT_PRESSED - LEFT_CTRL_PRESSED - NUMLOCK_ON - GENERIC_READ - GENERIC_WRITE - RIGHT_ALT_PRESSED - RIGHT_CTRL_PRESSED - SCROLLLOCK_ON - SHIFT_PRESSED - STD_INPUT_HANDLE - STD_OUTPUT_HANDLE - STD_ERROR_HANDLE - -Additionally, the following variables can be used: - - $FG_BLACK - $FG_GRAY - $FG_BLUE - $FG_LIGHTBLUE - $FG_RED - $FG_LIGHTRED - $FG_GREEN - $FG_LIGHTGREEN - $FG_MAGENTA - $FG_LIGHTMAGENTA - $FG_CYAN - $FG_LIGHTCYAN - $FG_BROWN - $FG_YELLOW - $FG_LIGHTGRAY - $FG_WHITE - - $BG_BLACK - $BG_GRAY - $BG_BLUE - $BG_LIGHTBLUE - $BG_RED - $BG_LIGHTRED - $BG_GREEN - $BG_LIGHTGREEN - $BG_MAGENTA - $BG_LIGHTMAGENTA - $BG_CYAN - $BG_LIGHTCYAN - $BG_BROWN - $BG_YELLOW - $BG_LIGHTGRAY - $BG_WHITE - - $ATTR_NORMAL - $ATTR_INVERSE - -ATTR_NORMAL is set to gray foreground on black background (DOS's -standard colors). - - -=head2 Microsoft's Documentation - -Documentation for the Win32 Console and Character mode Functions can -be found on Microsoft's site at this URL: - -http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/sys/src/conchar.htm - -A reference of the available functions is at: - -http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/sys/src/conchar_34.htm - - -=head1 AUTHOR - -Aldo Calpini <a.calpini@romagiubileo.it> - -=head1 CREDITS - -Thanks to: Jesse Dougherty, Dave Roth, ActiveWare, and the -Perl-Win32-Users community. - -=head1 DISCLAIMER - -This program is FREE; you can redistribute, modify, disassemble, or -even reverse engineer this software at your will. Keep in mind, -however, that NOTHING IS GUARANTEED to work and everything you do is -AT YOUR OWN RISK - I will not take responsibility for any damage, loss -of money and/or health that may arise from the use of this program! - -This is distributed under the terms of Larry Wall's Artistic License. diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Event.pm b/Master/tlpkg/tlperl.old/lib/Win32/Event.pm deleted file mode 100644 index 5faddf5a76e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Event.pm +++ /dev/null @@ -1,104 +0,0 @@ -#--------------------------------------------------------------------- -package Win32::Event; -# -# Copyright 1998 Christopher J. Madsen -# -# Author: Christopher J. Madsen <cjm@pobox.com> -# Created: 3 Feb 1998 from the ActiveWare version -# Version: 1.00 (6-Feb-1998) -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the -# GNU General Public License or the Artistic License for more details. -# -# Use Win32 event objects for synchronization -#--------------------------------------------------------------------- - -$VERSION = '1.01'; - -use Win32::IPC 1.00 '/./'; # Import everything -require Exporter; -require DynaLoader; - -@ISA = qw(Exporter DynaLoader Win32::IPC); -@EXPORT_OK = qw( - wait_all wait_any INFINITE -); - -bootstrap Win32::Event; - -1; -__END__ - -=head1 NAME - -Win32::Event - Use Win32 event objects from Perl - -=head1 SYNOPSIS - - use Win32::Event; - - $event = Win32::Event->new($manual,$initial,$name); - $event->wait(); - -=head1 DESCRIPTION - -This module allows access to the Win32 event objects. The C<wait> -method and C<wait_all> & C<wait_any> functions are inherited from the -L<"Win32::IPC"> module. - -=head2 Methods - -=over 4 - -=item $event = Win32::Event->new([$manual, [$initial, [$name]]]) - -Constructor for a new event object. If C<$manual> is true, you must -manually reset the event after it is signalled (the default is false). -If C<$initial> is true, the initial state of the object is signalled -(default false). If C<$name> is omitted, creates an unnamed event -object. - -If C<$name> signifies an existing event object, then C<$manual> and -C<$initial> are ignored and the object is opened. If this happens, -C<$^E> will be set to 183 (ERROR_ALREADY_EXISTS). - -=item $event = Win32::Event->open($name) - -Constructor for opening an existing event object. - -=item $event->pulse - -Signal the C<$event> and then immediately reset it. If C<$event> is a -manual-reset event, releases all threads currently blocking on it. If -it's an auto-reset event, releases just one thread. - -If no threads are waiting, just resets the event. - -=item $event->reset - -Reset the C<$event> to nonsignalled. - -=item $event->set - -Set the C<$event> to signalled. - -=item $event->wait([$timeout]) - -Wait for C<$event> to be signalled. See L<"Win32::IPC">. - -=back - -=head1 AUTHOR - -Christopher J. Madsen E<lt>F<cjm@pobox.com>E<gt> - -=cut - -# Local Variables: -# tmtrack-file-task: "Win32::Event" -# End: diff --git a/Master/tlpkg/tlperl.old/lib/Win32/EventLog.pm b/Master/tlpkg/tlperl.old/lib/Win32/EventLog.pm deleted file mode 100644 index 141821556e7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/EventLog.pm +++ /dev/null @@ -1,471 +0,0 @@ -# -# EventLog.pm -# -# Creates an object oriented interface to the Windows NT Evenlog -# Written by Jesse Dougherty -# - -package Win32::EventLog; - -use strict; -use vars qw($VERSION $AUTOLOAD @ISA @EXPORT $GetMessageText); -$VERSION = '0.074'; - -require Exporter; -require DynaLoader; - -die "The Win32::Eventlog module works only on Windows NT" - unless Win32::IsWinNT(); - -@ISA= qw(Exporter DynaLoader); -@EXPORT = qw( - EVENTLOG_AUDIT_FAILURE - EVENTLOG_AUDIT_SUCCESS - EVENTLOG_BACKWARDS_READ - EVENTLOG_END_ALL_PAIRED_EVENTS - EVENTLOG_END_PAIRED_EVENT - EVENTLOG_ERROR_TYPE - EVENTLOG_FORWARDS_READ - EVENTLOG_INFORMATION_TYPE - EVENTLOG_PAIRED_EVENT_ACTIVE - EVENTLOG_PAIRED_EVENT_INACTIVE - EVENTLOG_SEEK_READ - EVENTLOG_SEQUENTIAL_READ - EVENTLOG_START_PAIRED_EVENT - EVENTLOG_SUCCESS - EVENTLOG_WARNING_TYPE -); - -$GetMessageText=0; - -sub AUTOLOAD { - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - # reset $! to zero to reset any current errors. - local $! = 0; - my $val = constant($constname, @_ ? $_[0] : 0); - if ($!) { - if ($! =~ /Invalid/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD; - } - else { - my ($pack,$file,$line) = caller; - die "Unknown Win32::EventLog macro $constname, at $file line $line.\n"; - } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - -# -# new() -# -# Win32::EventLog->new("source name", "ServerName"); -# -sub new { - die "usage: PACKAGE->new(SOURCENAME[, SERVERNAME])\n" unless @_ > 1; - my ($class,$source,$server) = @_; - my $handle; - - # Create new handle - if ($source !~ /\\/) { - OpenEventLog($handle, $server, $source); - } - else { - OpenBackupEventLog($handle, $server, $source); - } - return bless {handle => $handle, - Source => $source, - Computer => $server} => $class; -} - -sub DESTROY {shift->Close} - -# -# Open (the rather braindead old way) -# A variable initialized to empty must be supplied as the first -# arg, followed by whatever new() takes -# -sub Open { - $_[0] = Win32::EventLog->new($_[1],$_[2]); -} - -sub OpenBackup { - my ($class,$source,$server) = @_; - OpenBackupEventLog(my $handle, $server, $source); - return bless {handle => $handle, - Source => $source, - Computer => $server} => $class; -} - -sub Backup { - die " usage: OBJECT->Backup(FILENAME)\n" unless @_ == 2; - my ($self,$file) = @_; - return BackupEventLog($self->{handle}, $file); -} - -sub Close { - my $self = shift; - CloseEventLog($self->{handle}); - $self->{handle} = 0; -} - -# Read -# Note: the EventInfo arguement requires a hash reference. -sub Read { - my $self = shift; - - die "usage: OBJECT->Read(FLAGS, RECORDOFFSET, HASHREF)\n" unless @_ == 3; - - my ($readflags,$recordoffset) = @_; - # The following is stolen shamelessly from Wyt's tests for the registry. - my $result = ReadEventLog($self->{handle}, $readflags, $recordoffset, - my $header, my $source, my $computer, my $sid, - my $data, my $strings); - my ($length, - $reserved, - $recordnumber, - $timegenerated, - $timewritten, - $eventid, - $eventtype, - $numstrings, - $eventcategory, - $reservedflags, - $closingrecordnumber, - $stringoffset, - $usersidlength, - $usersidoffset, - $datalength, - $dataoffset) = unpack('l6s4l6', $header); - - # make a hash out of the values returned from ReadEventLog. - my %h = ( Source => $source, - Computer => $computer, - Length => $datalength, - Category => $eventcategory, - RecordNumber => $recordnumber, - TimeGenerated => $timegenerated, - Timewritten => $timewritten, - EventID => $eventid, - EventType => $eventtype, - ClosingRecordNumber => $closingrecordnumber, - User => $sid, - Strings => $strings, - Data => $data, - ); - - # get the text message here - if ($result and $GetMessageText) { - GetEventLogText($source, $eventid, $strings, $numstrings, my $message); - $h{Message} = $message; - } - - if (ref($_[2]) eq 'HASH') { - %{$_[2]} = %h; # this needed for Read(...,\%foo) case - } - else { - $_[2] = \%h; - } - return $result; -} - -sub GetMessageText { - my $self = shift; - local $^W; - GetEventLogText($self->{Source}, - $self->{EventID}, - $self->{Strings}, - $self->{Strings} =~ tr/\0/\0/, - my $message); - - $self->{Message} = $message; - return $message; -} - -sub Report { - die "usage: OBJECT->Report( HASHREF )\n" unless @_ == 2; - my ($self,$EventInfo) = @_; - - die "Win32::EventLog::Report requires a hash reference as arg 2\n" - unless ref($EventInfo) eq "HASH"; - - my $computer = $EventInfo->{Computer} ? $EventInfo->{Computer} - : $self->{Computer}; - my $source = exists($EventInfo->{Source}) ? $EventInfo->{Source} - : $self->{Source}; - - return WriteEventLog($computer, $source, $EventInfo->{EventType}, - $EventInfo->{Category}, $EventInfo->{EventID}, 0, - $EventInfo->{Data}, split(/\0/, $EventInfo->{Strings})); - -} - -sub GetOldest { - my $self = shift; - die "usage: OBJECT->GetOldest( SCALAREF )\n" unless @_ == 1; - return GetOldestEventLogRecord($self->{handle},$_[0]); -} - -sub GetNumber { - my $self = shift; - die "usage: OBJECT->GetNumber( SCALARREF )\n" unless @_ == 1; - return GetNumberOfEventLogRecords($self->{handle}, $_[0]); -} - -sub Clear { - my ($self,$file) = @_; - die "usage: OBJECT->Clear( FILENAME )\n" unless @_ == 2; - return ClearEventLog($self->{handle}, $file); -} - -bootstrap Win32::EventLog; - -1; -__END__ - -=head1 NAME - -Win32::EventLog - Process Win32 Event Logs from Perl - -=head1 SYNOPSIS - - use Win32::EventLog - $handle=Win32::EventLog->new("Application"); - -=head1 DESCRIPTION - -This module implements most of the functionality available from the -Win32 API for accessing and manipulating Win32 Event Logs. The access -to the EventLog routines is divided into those that relate to an -EventLog object and its associated methods and those that relate other -EventLog tasks (like adding an EventLog record). - -=head1 The EventLog Object and its Methods - -The following methods are available to open, read, close and backup -EventLogs. - -=over 4 - -=item Win32::EventLog->new(SOURCENAME [,SERVERNAME]); - -The new() method creates a new EventLog object and returns a handle -to it. This hande is then used to call the methods below. - -The method is overloaded in that if the supplied SOURCENAME -argument contains one or more literal '\' characters (an illegal -character in a SOURCENAME), it assumes that you are trying to open -a backup eventlog and uses SOURCENAME as the backup eventlog to -open. Note that when opening a backup eventlog, the SERVERNAME -argument is ignored (as it is in the underlying Win32 API). For -EventLogs on remote machines, the SOURCENAME parameter must -therefore be specified as a UNC path. - -=item $handle->Backup(FILENAME); - -The Backup() method backs up the EventLog represented by $handle. It -takes a single arguemt, FILENAME. When $handle represents an -EventLog on a remote machine, FILENAME is filename on the remote -machine and cannot be a UNC path (i.e you must use F<C:\TEMP\App.EVT>). -The method will fail if the log file already exists. - -=item $handle->Read(FLAGS, OFFSET, HASHREF); - -The Read() method read an EventLog entry from the EventLog represented -by $handle. - -=item $handle->Close(); - -The Close() method closes the EventLog represented by $handle. After -Close() has been called, any further attempt to use the EventLog -represented by $handle will fail. - -=item $handle->GetOldest(SCALARREF); - -The GetOldest() method number of the the oldest EventLog record in -the EventLog represented by $handle. This is required to correctly -compute the OFFSET required by the Read() method. - -=item $handle->GetNumber(SCALARREF); - -The GetNumber() method returns the number of EventLog records in -the EventLog represented by $handle. The number of the most recent -record in the EventLog is therefore computed by - - $handle->GetOldest($oldest); - $handle->GetNumber($lastRec); - $lastRecOffset=$oldest+$lastRec; - -=item $handle->Clear(FILENAME); - -The Clear() method clears the EventLog represented by $handle. If -you provide a non-null FILENAME, the EventLog will be backed up -into FILENAME before the EventLog is cleared. The method will fail -if FILENAME is specified and the file refered to exists. Note also -that FILENAME specifies a file local to the machine on which the -EventLog resides and cannot be specified as a UNC name. - -=item $handle->Report(HASHREF); - -The Report() method generates an EventLog entry. The HASHREF should -contain the following keys: - -=over 4 - -=item C<Computer> - -The C<Computer> field specfies which computer you want the EventLog -entry recorded. If this key doesn't exist, the server name used to -create the $handle is used. - -=item C<Source> - -The C<Source> field specifies the source that generated the EventLog -entry. If this key doesn't exist, the source name used to create the -$handle is used. - -=item C<EventType> - -The C<EventType> field should be one of the constants - -=over 4 - -=item C<EVENTLOG_ERROR_TYPE> - -An Error event is being logged. - -=item C<EVENTLOG_WARNING_TYPE> - -A Warning event is being logged. - -=item C<EVENTLOG_INFORMATION_TYPE> - -An Information event is being logged. - -=item C<EVENTLOG_AUDIT_SUCCESS> - -A Success Audit event is being logged (typically in the Security -EventLog). - -=item C<EVENTLOG_AUDIT_FAILURE> - -A Failure Audit event is being logged (typically in the Security -EventLog). - -=back - -These constants are exported into the main namespace by default. - -=item C<Category> - -The C<Category> field can have any value you want. It is specific to -the particular Source. - -=item C<EventID> - -The C<EventID> field should contain the ID of the message that this -event pertains too. This assumes that you have an associated message -file (indirectly referenced by the field C<Source>). - -=item C<Data> - -The C<Data> field contains raw data associated with this event. - -=item C<Strings> - -The C<Strings> field contains the single string that itself contains -NUL terminated sub-strings. This are used with the EventID to generate -the message as seen from (for example) the Event Viewer application. - -=back - -=back - -=head1 Other Win32::EventLog functions. - -The following functions are part of the Win32::EventLog package but -are not callable from an EventLog object. - -=over 4 - -=item GetMessageText(HASHREF); - -The GetMessageText() function assumes that HASHREF was obtained by -a call to C<$handle-E<gt>Read()>. It returns the formatted string that -represents the fully resolved text of the EventLog message (such as -would be seen in the Windows NT Event Viewer). For convenience, the -key 'Message' in the supplied HASHREF is also set to the return value -of this function. - -If you set the variable $Win32::EventLog::GetMessageText to 1 then -each call to C<$handle-E<gt>Read()> will call this function automatically. - -=back - -=head1 Example 1 - -The following example illustrates the way in which the EventLog module -can be used. It opens the System EventLog and reads through it from -oldest to newest records. For each record from the B<Source> EventLog -it extracts the full text of the Entry and prints the EventLog message -text out. - - use Win32::EventLog; - - $handle=Win32::EventLog->new("System", $ENV{ComputerName}) - or die "Can't open Application EventLog\n"; - $handle->GetNumber($recs) - or die "Can't get number of EventLog records\n"; - $handle->GetOldest($base) - or die "Can't get number of oldest EventLog record\n"; - - while ($x < $recs) { - $handle->Read(EVENTLOG_FORWARDS_READ|EVENTLOG_SEEK_READ, - $base+$x, - $hashRef) - or die "Can't read EventLog entry #$x\n"; - if ($hashRef->{Source} eq "EventLog") { - Win32::EventLog::GetMessageText($hashRef); - print "Entry $x: $hashRef->{Message}\n"; - } - $x++; - } - -=head1 Example 2 - -To backup and clear the EventLogs on a remote machine, do the following :- - - use Win32::EventLog; - - $myServer="\\\\my-server"; # your servername here. - my($date)=join("-", ((split(/\s+/, scalar(localtime)))[0,1,2,4])); - my($dest); - - for my $eventLog ("Application", "System", "Security") { - $handle=Win32::EventLog->new($eventLog, $myServer) - or die "Can't open Application EventLog on $myServer\n"; - - $dest="C:\\BackupEventLogs\\$eventLog\\$date.evt"; - $handle->Backup($dest) - or warn "Could not backup and clear the $eventLog EventLog on $myServer ($^E)\n"; - - $handle->Close; - } - -Note that only the Clear method is required. Note also that if the -file $dest exists, the function will fail. - -=head1 BUGS - -None currently known. - -The test script for 'make test' should be re-written to use the -EventLog object. - -=head1 AUTHOR - -Original code by Jesse Dougherty for HiP Communications. Additional -fixes and updates attributed to Martin Pauley -<martin.pauley@ulsterbank.ltd.uk>) and Bret Giddings (bret@essex.ac.uk). diff --git a/Master/tlpkg/tlperl.old/lib/Win32/File.pm b/Master/tlpkg/tlperl.old/lib/Win32/File.pm deleted file mode 100644 index d67a25448c8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/File.pm +++ /dev/null @@ -1,118 +0,0 @@ -package Win32::File; - -# -# File.pm -# Written by Douglas_Lankshear@ActiveWare.com -# -# subsequent hacks: -# Gurusamy Sarathy -# - -$VERSION = '0.05'; - -require Exporter; -require DynaLoader; - -@ISA= qw( Exporter DynaLoader ); -@EXPORT = qw( - ARCHIVE - COMPRESSED - DIRECTORY - HIDDEN - NORMAL - OFFLINE - READONLY - SYSTEM - TEMPORARY - ); -@EXPORT_OK = qw(GetAttributes SetAttributes); - -=head1 NAME - -Win32::File - manage file attributes in perl - -=head1 SYNOPSIS - - use Win32::File; - -=head1 DESCRIPTION - -This module offers the retrieval and setting of file attributes. - -=head1 Functions - -=head2 NOTE - -All of the functions return FALSE (0) if they fail, unless otherwise noted. -The function names are exported into the caller's namespace by request. - -=over 10 - -=item GetAttributes(filename, returnedAttributes) - -Gets the attributes of a file or directory. returnedAttributes will be set -to the OR-ed combination of the filename attributes. - -=item SetAttributes(filename, newAttributes) - -Sets the attributes of a file or directory. newAttributes must be an OR-ed -combination of the attributes. - -=back - -=head1 Constants - -The following constants are exported by default. - -=over 10 - -=item ARCHIVE - -=item COMPRESSED - -=item DIRECTORY - -=item HIDDEN - -=item NORMAL - -=item OFFLINE - -=item READONLY - -=item SYSTEM - -=item TEMPORARY - -=back - -=cut - -sub AUTOLOAD -{ - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - #reset $! to zero to reset any current errors. - local $! = 0; - my $val = constant($constname); - if($! != 0) - { - if($! =~ /Invalid/) - { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD; - } - else - { - ($pack,$file,$line) = caller; - die "Your vendor has not defined Win32::File macro $constname, used in $file at line $line."; - } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - -bootstrap Win32::File; - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Win32/FileSecurity.pm b/Master/tlpkg/tlperl.old/lib/Win32/FileSecurity.pm deleted file mode 100644 index 6c6e5865336..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/FileSecurity.pm +++ /dev/null @@ -1,308 +0,0 @@ -package Win32::FileSecurity; - -# -# FileSecurity.pm -# By Monte Mitzelfelt, monte@conchas.nm.org -# Larry Wall's Artistic License applies to all related Perl -# and C code for this module -# Thanks to the guys at ActiveWare! -# ver 0.67 ALPHA 1997.07.07 -# - -require Exporter; -require DynaLoader; -use Carp ; - -$VERSION = '1.04'; - -require Win32 unless defined &Win32::IsWinNT; -croak "The Win32::FileSecurity module works only on Windows NT" unless Win32::IsWinNT(); - -@ISA= qw( Exporter DynaLoader ); - -require Exporter ; -require DynaLoader ; - -@ISA = qw(Exporter DynaLoader) ; -@EXPORT_OK = qw( - Get - Set - EnumerateRights - MakeMask - DELETE - READ_CONTROL - WRITE_DAC - WRITE_OWNER - SYNCHRONIZE - STANDARD_RIGHTS_REQUIRED - STANDARD_RIGHTS_READ - STANDARD_RIGHTS_WRITE - STANDARD_RIGHTS_EXECUTE - STANDARD_RIGHTS_ALL - SPECIFIC_RIGHTS_ALL - ACCESS_SYSTEM_SECURITY - MAXIMUM_ALLOWED - GENERIC_READ - GENERIC_WRITE - GENERIC_EXECUTE - GENERIC_ALL - F - FULL - R - READ - C - CHANGE - A - ADD - ) ; - -sub AUTOLOAD { - local($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - #reset $! to zero to reset any current errors. - local $! = 0; - $val = constant($constname); - if($! != 0) { - if($! =~ /Invalid/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD; - } - else { - ($pack,$file,$line) = caller; - die "Your vendor has not defined Win32::FileSecurity macro " - ."$constname, used in $file at line $line."; - } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - -bootstrap Win32::FileSecurity; - -1; - -__END__ - -=head1 NAME - -Win32::FileSecurity - manage FileSecurity Discretionary Access Control Lists in perl - -=head1 SYNOPSIS - - use Win32::FileSecurity; - -=head1 DESCRIPTION - -This module offers control over the administration of system FileSecurity DACLs. -You may want to use Get and EnumerateRights to get an idea of what mask values -correspond to what rights as viewed from File Manager. - -=head1 CONSTANTS - - DELETE, READ_CONTROL, WRITE_DAC, WRITE_OWNER, - SYNCHRONIZE, STANDARD_RIGHTS_REQUIRED, - STANDARD_RIGHTS_READ, STANDARD_RIGHTS_WRITE, - STANDARD_RIGHTS_EXECUTE, STANDARD_RIGHTS_ALL, - SPECIFIC_RIGHTS_ALL, ACCESS_SYSTEM_SECURITY, - MAXIMUM_ALLOWED, GENERIC_READ, GENERIC_WRITE, - GENERIC_EXECUTE, GENERIC_ALL, F, FULL, R, READ, - C, CHANGE - -=head1 FUNCTIONS - -=head2 NOTE: - -All of the functions return false if they fail, unless otherwise noted. -Errors returned via $! containing both Win32 GetLastError() and a text message -indicating Win32 function that failed. - -=over 10 - -=item constant( $name, $set ) - -Stores the value of named constant $name into $set. -Same as C<$set = Win32::FileSecurity::NAME_OF_CONSTANT();>. - -=item Get( $filename, \%permisshash ) - -Gets the DACLs of a file or directory. - -=item Set( $filename, \%permisshash ) - -Sets the DACL for a file or directory. - -=item EnumerateRights( $mask, \@rightslist ) - -Turns the bitmask in $mask into a list of strings in @rightslist. - -=item MakeMask( qw( DELETE READ_CONTROL ) ) - -Takes a list of strings representing constants and returns a bitmasked -integer value. - -=back - -=head2 %permisshash - -Entries take the form $permisshash{USERNAME} = $mask ; - -=head1 EXAMPLE1 - - # Gets the rights for all files listed on the command line. - use Win32::FileSecurity qw(Get EnumerateRights); - - foreach( @ARGV ) { - next unless -e $_ ; - if ( Get( $_, \%hash ) ) { - while( ($name, $mask) = each %hash ) { - print "$name:\n\t"; - EnumerateRights( $mask, \@happy ) ; - print join( "\n\t", @happy ), "\n"; - } - } - else { - print( "Error #", int( $! ), ": $!" ) ; - } - } - -=head1 EXAMPLE2 - - # Gets existing DACL and modifies Administrator rights - use Win32::FileSecurity qw(MakeMask Get Set); - - # These masks show up as Full Control in File Manager - $file = MakeMask( qw( FULL ) ); - - $dir = MakeMask( qw( - FULL - GENERIC_ALL - ) ); - - foreach( @ARGV ) { - s/\\$//; - next unless -e; - Get( $_, \%hash ) ; - $hash{Administrator} = ( -d ) ? $dir : $file ; - Set( $_, \%hash ) ; - } - -=head1 COMMON MASKS FROM CACLS AND WINFILE - -=head2 READ - - MakeMask( qw( FULL ) ); # for files - MakeMask( qw( READ GENERIC_READ GENERIC_EXECUTE ) ); # for directories - -=head2 CHANGE - - MakeMask( qw( CHANGE ) ); # for files - MakeMask( qw( CHANGE GENERIC_WRITE GENERIC_READ GENERIC_EXECUTE ) ); # for directories - -=head2 ADD & READ - - MakeMask( qw( ADD GENERIC_READ GENERIC_EXECUTE ) ); # for directories only! - -=head2 FULL - - MakeMask( qw( FULL ) ); # for files - MakeMask( qw( FULL GENERIC_ALL ) ); # for directories - -=head1 RESOURCES - -From Microsoft: check_sd - http://premium.microsoft.com/download/msdn/samples/2760.exe - -(thanks to Guert Schimmel at Sybase for turning me on to this one) - -=head1 VERSION - -1.03 ALPHA 97-12-14 - -=head1 REVISION NOTES - -=over 10 - -=item 1.03 ALPHA 1998.01.11 - -Imported diffs from 0.67 (parent) version - -=item 1.02 ALPHA 1997.12.14 - -Pod fixes, @EXPORT list additions <gsar@activestate.com> - -Fix unitialized vars on unknown ACLs <jmk@exc.bybyte.de> - -=item 1.01 ALPHA 1997.04.25 - -CORE Win32 version imported from 0.66 <gsar@activestate.com> - -=item 0.67 ALPHA 1997.07.07 - -Kludged bug in mapping bits to separate ACE's. Notably, this screwed -up CHANGE access by leaving out a delete bit in the -C<INHERIT_ONLY_ACE | OBJECT_INHERIT_ACE> Access Control Entry. - -May need to rethink... - -=item 0.66 ALPHA 1997.03.13 - -Fixed bug in memory allocation check - -=item 0.65 ALPHA 1997.02.25 - -Tested with 5.003 build 303 - -Added ISA exporter, and @EXPORT_OK - -Added F, FULL, R, READ, C, CHANGE as composite pre-built mask names. - -Added server\ to keys returned in hash from Get - -Made constants and MakeMask case insensitive (I don't know why I did that) - -Fixed mask comparison in ListDacl and Enumerate Rights from simple & mask -to exact bit match ! ( ( x & y ) ^ x ) makes sure all bits in x -are set in y - -Fixed some "wild" pointers - -=item 0.60 ALPHA 1996.07.31 - -Now suitable for file and directory permissions - -Included ListDacl.exe in bundle for debugging - -Added "intuitive" inheritance for directories, basically functions like FM -triggered by presence of GENERIC_ rights this may need to change - -see EXAMPLE2 - -Changed from AddAccessAllowedAce to AddAce for control over inheritance - -=item 0.51 ALPHA 1996.07.20 - -Fixed memory allocation bug - -=item 0.50 ALPHA 1996.07.29 - -Base functionality - -Using AddAccessAllowedAce - -Suitable for file permissions - -=back - -=head1 KNOWN ISSUES / BUGS - -=over 10 - -=item 1 - -May not work on remote drives. - -=item 2 - -Errors croak, don't return via $! as documented. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Win32/IPC.pm b/Master/tlpkg/tlperl.old/lib/Win32/IPC.pm deleted file mode 100644 index c97279b24c5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/IPC.pm +++ /dev/null @@ -1,195 +0,0 @@ -#--------------------------------------------------------------------- -package Win32::IPC; -# -# Copyright 1998 Christopher J. Madsen -# -# Created: 3 Feb 1998 from the ActiveWare version -# (c) 1995 Microsoft Corporation. All rights reserved. -# Developed by ActiveWare Internet Corp., http://www.ActiveWare.com -# -# Other modifications (c) 1997 by Gurusamy Sarathy <gsar@activestate.com> -# -# Author: Christopher J. Madsen <cjm@pobox.com> -# Version: 1.03 (11-Jul-2003) -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the -# GNU General Public License or the Artistic License for more details. -# -# Base class for Win32 synchronization objects -#--------------------------------------------------------------------- - -$VERSION = '1.03'; - -require Exporter; -require DynaLoader; -use strict; -use vars qw($AUTOLOAD $VERSION @ISA @EXPORT @EXPORT_OK); - -@ISA = qw(Exporter DynaLoader); -@EXPORT = qw( - INFINITE - WaitForMultipleObjects -); -@EXPORT_OK = qw( - wait_any wait_all -); - -sub AUTOLOAD { - # This AUTOLOAD is used to 'autoload' constants from the constant() - # XS function. - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - local $! = 0; - my $val = constant($constname); - if ($! != 0) { - my ($pack,$file,$line) = caller; - die "Your vendor has not defined Win32::IPC macro $constname, used at $file line $line."; - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} # end AUTOLOAD - -bootstrap Win32::IPC; - -# How's this for cryptic? Use wait_any or wait_all! -sub WaitForMultipleObjects -{ - my $result = (($_[1] ? wait_all($_[0], $_[2]) - : wait_any($_[0], $_[2])) - ? 1 - : 0); - @{$_[0]} = (); # Bug for bug compatibility! Use wait_any or wait_all! - $result; -} # end WaitForMultipleObjects - -1; -__END__ - -=head1 NAME - -Win32::IPC - Base class for Win32 synchronization objects - -=head1 SYNOPSIS - - use Win32::Event 1.00 qw(wait_any); - #Create objects. - - wait_any(@ListOfObjects,$timeout); - -=head1 DESCRIPTION - -This module is loaded by the other Win32 synchronization modules. You -shouldn't need to load it yourself. It supplies the wait functions to -those modules. - -The synchronization modules are L<"Win32::ChangeNotify">, -L<"Win32::Event">, L<"Win32::Mutex">, & L<"Win32::Semaphore">. - -In addition, you can use C<wait_any> and C<wait_all> with -L<"Win32::Console"> and L<"Win32::Process"> objects. (However, those -modules do not export the wait functions; you must load one of the -synchronization modules (or just Win32::IPC)). - -=head2 Methods - -B<Win32::IPC> supplies one method to all synchronization objects. - -=over 4 - -=item $obj->wait([$timeout]) - -Waits for C<$obj> to become signalled. C<$timeout> is the maximum time -to wait (in milliseconds). If C<$timeout> is omitted, waits forever. -If C<$timeout> is 0, returns immediately. - -Returns: - - +1 The object is signalled - -1 The object is an abandoned mutex - 0 Timed out - undef An error occurred - -=back - -=head2 Functions - -=over 4 - -=item wait_any(@objects, [$timeout]) - -Waits for at least one of the C<@objects> to become signalled. -C<$timeout> is the maximum time to wait (in milliseconds). If -C<$timeout> is omitted, waits forever. If C<$timeout> is 0, returns -immediately. - -The return value indicates which object ended the wait: - - +N $object[N-1] is signalled - -N $object[N-1] is an abandoned mutex - 0 Timed out - undef An error occurred - -If more than one object became signalled, the one with the lowest -index is used. - -=item wait_all(@objects, [$timeout]) - -This is the same as C<wait_any>, but it waits for all the C<@objects> -to become signalled. The return value indicates the last object to -become signalled, and is negative if at least one of the C<@objects> -is an abandoned mutex. - -=back - -=head2 Deprecated Functions and Methods - -B<Win32::IPC> still supports the ActiveWare syntax, but its use is -deprecated. - -=over 4 - -=item INFINITE - -Constant value for an infinite timeout. Omit the C<$timeout> argument -instead. - -=item WaitForMultipleObjects(\@objects, $wait_all, $timeout) - -Warning: C<WaitForMultipleObjects> erases C<@objects>! -Use C<wait_all> or C<wait_any> instead. - -=item $obj->Wait($timeout) - -Similar to C<not $obj-E<gt>wait($timeout)>. - -=back - -=head1 INTERNALS - -The C<wait_any> and C<wait_all> functions support two kinds of -objects. Objects derived from C<Win32::IPC> are expected to consist -of a reference to a scalar containing the Win32 HANDLE as an IV. - -Other objects (for which C<UNIVERSAL::isa($object, "Win32::IPC")> is -false), are expected to implement a C<get_Win32_IPC_HANDLE> method. -When called in scalar context with no arguments, this method should -return a Win32 HANDLE (as an IV) suitable for passing to the Win32 -WaitForMultipleObjects API function. - -=head1 AUTHOR - -Christopher J. Madsen E<lt>F<cjm@pobox.com>E<gt> - -Loosely based on the original module by ActiveWare Internet Corp., -F<http://www.ActiveWare.com> - -=cut - -# Local Variables: -# tmtrack-file-task: "Win32::IPC" -# End: diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Internet.pm b/Master/tlpkg/tlperl.old/lib/Win32/Internet.pm deleted file mode 100644 index f6dac3130af..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Internet.pm +++ /dev/null @@ -1,3009 +0,0 @@ -####################################################################### -# -# Win32::Internet - Perl Module for Internet Extensions -# ^^^^^^^^^^^^^^^ -# This module creates an object oriented interface to the Win32 -# Internet Functions (WININET.DLL). -# -# Version: 0.08 (14 Feb 1997) -# Version: 0.081 (25 Sep 1999) -# Version: 0.082 (04 Sep 2001) -# -####################################################################### - -# changes: -# - fixed 2 bugs in Option(s) related subs -# - works with build 30x also - -package Win32::Internet; - -require Exporter; # to export the constants to the main:: space -require DynaLoader; # to dynuhlode the module. - -# use Win32::WinError; # for windows constants. - -@ISA= qw( Exporter DynaLoader ); -@EXPORT = qw( - HTTP_ADDREQ_FLAG_ADD - HTTP_ADDREQ_FLAG_REPLACE - HTTP_QUERY_ALLOW - HTTP_QUERY_CONTENT_DESCRIPTION - HTTP_QUERY_CONTENT_ID - HTTP_QUERY_CONTENT_LENGTH - HTTP_QUERY_CONTENT_TRANSFER_ENCODING - HTTP_QUERY_CONTENT_TYPE - HTTP_QUERY_COST - HTTP_QUERY_CUSTOM - HTTP_QUERY_DATE - HTTP_QUERY_DERIVED_FROM - HTTP_QUERY_EXPIRES - HTTP_QUERY_FLAG_REQUEST_HEADERS - HTTP_QUERY_FLAG_SYSTEMTIME - HTTP_QUERY_LANGUAGE - HTTP_QUERY_LAST_MODIFIED - HTTP_QUERY_MESSAGE_ID - HTTP_QUERY_MIME_VERSION - HTTP_QUERY_PRAGMA - HTTP_QUERY_PUBLIC - HTTP_QUERY_RAW_HEADERS - HTTP_QUERY_RAW_HEADERS_CRLF - HTTP_QUERY_REQUEST_METHOD - HTTP_QUERY_SERVER - HTTP_QUERY_STATUS_CODE - HTTP_QUERY_STATUS_TEXT - HTTP_QUERY_URI - HTTP_QUERY_USER_AGENT - HTTP_QUERY_VERSION - HTTP_QUERY_WWW_LINK - ICU_BROWSER_MODE - ICU_DECODE - ICU_ENCODE_SPACES_ONLY - ICU_ESCAPE - ICU_NO_ENCODE - ICU_NO_META - ICU_USERNAME - INTERNET_FLAG_PASSIVE - INTERNET_FLAG_ASYNC - INTERNET_HYPERLINK - INTERNET_FLAG_KEEP_CONNECTION - INTERNET_FLAG_MAKE_PERSISTENT - INTERNET_FLAG_NO_AUTH - INTERNET_FLAG_NO_AUTO_REDIRECT - INTERNET_FLAG_NO_CACHE_WRITE - INTERNET_FLAG_NO_COOKIES - INTERNET_FLAG_READ_PREFETCH - INTERNET_FLAG_RELOAD - INTERNET_FLAG_RESYNCHRONIZE - INTERNET_FLAG_TRANSFER_ASCII - INTERNET_FLAG_TRANSFER_BINARY - INTERNET_INVALID_PORT_NUMBER - INTERNET_INVALID_STATUS_CALLBACK - INTERNET_OPEN_TYPE_DIRECT - INTERNET_OPEN_TYPE_PROXY - INTERNET_OPEN_TYPE_PROXY_PRECONFIG - INTERNET_OPTION_CONNECT_BACKOFF - INTERNET_OPTION_CONNECT_RETRIES - INTERNET_OPTION_CONNECT_TIMEOUT - INTERNET_OPTION_CONTROL_SEND_TIMEOUT - INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT - INTERNET_OPTION_DATA_SEND_TIMEOUT - INTERNET_OPTION_DATA_RECEIVE_TIMEOUT - INTERNET_OPTION_HANDLE_SIZE - INTERNET_OPTION_LISTEN_TIMEOUT - INTERNET_OPTION_PASSWORD - INTERNET_OPTION_READ_BUFFER_SIZE - INTERNET_OPTION_USER_AGENT - INTERNET_OPTION_USERNAME - INTERNET_OPTION_VERSION - INTERNET_OPTION_WRITE_BUFFER_SIZE - INTERNET_SERVICE_FTP - INTERNET_SERVICE_GOPHER - INTERNET_SERVICE_HTTP - INTERNET_STATUS_CLOSING_CONNECTION - INTERNET_STATUS_CONNECTED_TO_SERVER - INTERNET_STATUS_CONNECTING_TO_SERVER - INTERNET_STATUS_CONNECTION_CLOSED - INTERNET_STATUS_HANDLE_CLOSING - INTERNET_STATUS_HANDLE_CREATED - INTERNET_STATUS_NAME_RESOLVED - INTERNET_STATUS_RECEIVING_RESPONSE - INTERNET_STATUS_REDIRECT - INTERNET_STATUS_REQUEST_COMPLETE - INTERNET_STATUS_REQUEST_SENT - INTERNET_STATUS_RESOLVING_NAME - INTERNET_STATUS_RESPONSE_RECEIVED - INTERNET_STATUS_SENDING_REQUEST -); - - -####################################################################### -# 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. -# - -sub AUTOLOAD { - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - #reset $! to zero to reset any current errors. - local $! = 0; - my $val = constant($constname, @_ ? $_[0] : 0); - if ($! != 0) { - - # [dada] This results in an ugly Autoloader error - #if ($! =~ /Invalid/) { - # $AutoLoader::AUTOLOAD = $AUTOLOAD; - # goto &AutoLoader::AUTOLOAD; - #} else { - - # [dada] ... I prefer this one :) - - ($pack,$file,$line) = caller; undef $pack; - die "Win32::Internet::$constname is not defined, used at $file line $line."; - - #} - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - - -####################################################################### -# STATIC OBJECT PROPERTIES -# -$VERSION = "0.082"; - -%callback_code = (); -%callback_info = (); - - -####################################################################### -# PUBLIC METHODS -# - -#======== ### CLASS CONSTRUCTOR -sub new { -#======== - my($class, $useragent, $opentype, $proxy, $proxybypass, $flags) = @_; - my $self = {}; - - if(ref($useragent) and ref($useragent) eq "HASH") { - $opentype = $useragent->{'opentype'}; - $proxy = $useragent->{'proxy'}; - $proxybypass = $useragent->{'proxybypass'}; - $flags = $useragent->{'flags'}; - my $myuseragent = $useragent->{'useragent'}; - undef $useragent; - $useragent = $myuseragent; - } - - $useragent = "Perl-Win32::Internet/".$VERSION unless defined($useragent); - $opentype = constant("INTERNET_OPEN_TYPE_DIRECT",0) unless defined($opentype); - $proxy = "" unless defined($proxy); - $proxybypass = "" unless defined($proxybypass); - $flags = 0 unless defined($flags); - - - my $handle = InternetOpen($useragent, $opentype, $proxy, $proxybypass, $flags); - if ($handle) { - $self->{'connections'} = 0; - $self->{'pasv'} = 0; - $self->{'handle'} = $handle; - $self->{'useragent'} = $useragent; - $self->{'proxy'} = $proxy; - $self->{'proxybypass'} = $proxybypass; - $self->{'flags'} = $flags; - $self->{'Type'} = "Internet"; - - # [dada] I think it's better to call SetStatusCallback explicitly... - #if($flags & constant("INTERNET_FLAG_ASYNC",0)) { - # my $callbackresult=InternetSetStatusCallback($handle); - # if($callbackresult==&constant("INTERNET_INVALID_STATUS_CALLBACK",0)) { - # $self->{'Error'} = -2; - # } - #} - - bless $self; - } else { - $self->{'handle'} = undef; - bless $self; - } - $self; -} - - -#============ -sub OpenURL { -#============ - my($self,$new,$URL) = @_; - return undef unless ref($self); - - my $newhandle=InternetOpenUrl($self->{'handle'},$URL,"",0,0,0); - if(!$newhandle) { - $self->{'Error'} = "Cannot open URL."; - return undef; - } else { - $self->{'connections'}++; - $_[1] = _new($newhandle); - $_[1]->{'Type'} = "URL"; - $_[1]->{'URL'} = $URL; - return $newhandle; - } -} - - -#================ -sub TimeConvert { -#================ - my($self, $sec, $min, $hour, $day, $mon, $year, $wday, $rfc) = @_; - return undef unless ref($self); - - if(!defined($rfc)) { - return InternetTimeToSystemTime($sec); - } else { - return InternetTimeFromSystemTime($sec, $min, $hour, - $day, $mon, $year, - $wday, $rfc); - } -} - - -#======================= -sub QueryDataAvailable { -#======================= - my($self) = @_; - return undef unless ref($self); - - return InternetQueryDataAvailable($self->{'handle'}); -} - - -#============= -sub ReadFile { -#============= - my($self, $buffersize) = @_; - return undef unless ref($self); - - my $howmuch = InternetQueryDataAvailable($self->{'handle'}); - $buffersize = $howmuch unless defined($buffersize); - return InternetReadFile($self->{'handle'}, ($howmuch<$buffersize) ? $howmuch - : $buffersize); -} - - -#=================== -sub ReadEntireFile { -#=================== - my($handle) = @_; - my $content = ""; - my $buffersize = 16000; - my $howmuch = 0; - my $buffer = ""; - - $handle = $handle->{'handle'} if defined($handle) and ref($handle); - - $howmuch = InternetQueryDataAvailable($handle); - # print "\nReadEntireFile: $howmuch bytes to read...\n"; - - while($howmuch>0) { - $buffer = InternetReadFile($handle, ($howmuch<$buffersize) ? $howmuch - : $buffersize); - # print "\nReadEntireFile: ", length($buffer), " bytes read...\n"; - - if(!defined($buffer)) { - return undef; - } else { - $content .= $buffer; - } - $howmuch = InternetQueryDataAvailable($handle); - # print "\nReadEntireFile: still $howmuch bytes to read...\n"; - - } - return $content; -} - - -#============= -sub FetchURL { -#============= - # (OpenURL+Read+Close)... - my($self, $URL) = @_; - return undef unless ref($self); - - my $newhandle = InternetOpenUrl($self->{'handle'}, $URL, "", 0, 0, 0); - if(!$newhandle) { - $self->{'Error'} = "Cannot open URL."; - return undef; - } else { - my $content = ReadEntireFile($newhandle); - InternetCloseHandle($newhandle); - return $content; - } -} - - -#================ -sub Connections { -#================ - my($self) = @_; - return undef unless ref($self); - - return $self->{'connections'} if $self->{'Type'} eq "Internet"; - return undef; -} - - -#================ -sub GetResponse { -#================ - my($num, $text) = InternetGetLastResponseInfo(); - return $text; -} - -#=========== -sub Option { -#=========== - my($self, $option, $value) = @_; - return undef unless ref($self); - - my $retval = 0; - - $option = constant("INTERNET_OPTION_USER_AGENT", 0) unless defined($option); - - if(!defined($value)) { - $retval = InternetQueryOption($self->{'handle'}, $option); - } else { - $retval = InternetSetOption($self->{'handle'}, $option, $value); - } - return $retval; -} - - -#============== -sub UserAgent { -#============== - my($self, $value) = @_; - return undef unless ref($self); - - return Option($self, constant("INTERNET_OPTION_USER_AGENT", 0), $value); -} - - -#============= -sub Username { -#============= - my($self, $value) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "HTTP" and $self->{'Type'} ne "FTP") { - $self->{'Error'} = "Username() only on FTP or HTTP sessions."; - return undef; - } - - return Option($self, constant("INTERNET_OPTION_USERNAME", 0), $value); -} - - -#============= -sub Password { -#============= - my($self, $value)=@_; - return undef unless ref($self); - - if($self->{'Type'} ne "HTTP" and $self->{'Type'} ne "FTP") { - $self->{'Error'} = "Password() only on FTP or HTTP sessions."; - return undef; - } - - return Option($self, constant("INTERNET_OPTION_PASSWORD", 0), $value); -} - - -#=================== -sub ConnectTimeout { -#=================== - my($self, $value) = @_; - return undef unless ref($self); - - return Option($self, constant("INTERNET_OPTION_CONNECT_TIMEOUT", 0), $value); -} - - -#=================== -sub ConnectRetries { -#=================== - my($self, $value) = @_; - return undef unless ref($self); - - return Option($self, constant("INTERNET_OPTION_CONNECT_RETRIES", 0), $value); -} - - -#=================== -sub ConnectBackoff { -#=================== - my($self,$value)=@_; - return undef unless ref($self); - - return Option($self, constant("INTERNET_OPTION_CONNECT_BACKOFF", 0), $value); -} - - -#==================== -sub DataSendTimeout { -#==================== - my($self,$value) = @_; - return undef unless ref($self); - - return Option($self, constant("INTERNET_OPTION_DATA_SEND_TIMEOUT", 0), $value); -} - - -#======================= -sub DataReceiveTimeout { -#======================= - my($self, $value) = @_; - return undef unless ref($self); - - return Option($self, constant("INTERNET_OPTION_DATA_RECEIVE_TIMEOUT", 0), $value); -} - - -#========================== -sub ControlReceiveTimeout { -#========================== - my($self, $value) = @_; - return undef unless ref($self); - - return Option($self, constant("INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT", 0), $value); -} - - -#======================= -sub ControlSendTimeout { -#======================= - my($self, $value) = @_; - return undef unless ref($self); - - return Option($self, constant("INTERNET_OPTION_CONTROL_SEND_TIMEOUT", 0), $value); -} - - -#================ -sub QueryOption { -#================ - my($self, $option) = @_; - return undef unless ref($self); - - return InternetQueryOption($self->{'handle'}, $option); -} - - -#============== -sub SetOption { -#============== - my($self, $option, $value) = @_; - return undef unless ref($self); - - return InternetSetOption($self->{'handle'}, $option, $value); -} - - -#============= -sub CrackURL { -#============= - my($self, $URL, $flags) = @_; - return undef unless ref($self); - - $flags = constant("ICU_ESCAPE", 0) unless defined($flags); - - my @newurl = InternetCrackUrl($URL, $flags); - - if(!defined($newurl[0])) { - $self->{'Error'} = "Cannot crack URL."; - return undef; - } else { - return @newurl; - } -} - - -#============== -sub CreateURL { -#============== - my($self, $scheme, $hostname, $port, - $username, $password, - $path, $extrainfo, $flags) = @_; - return undef unless ref($self); - - if(ref($scheme) and ref($scheme) eq "HASH") { - $flags = $hostname; - $hostname = $scheme->{'hostname'}; - $port = $scheme->{'port'}; - $username = $scheme->{'username'}; - $password = $scheme->{'password'}; - $path = $scheme->{'path'}; - $extrainfo = $scheme->{'extrainfo'}; - my $myscheme = $scheme->{'scheme'}; - undef $scheme; - $scheme = $myscheme; - } - - $hostname = "" unless defined($hostname); - $port = 0 unless defined($port); - $username = "" unless defined($username); - $password = "" unless defined($password); - $path = "" unless defined($path); - $extrainfo = "" unless defined($extrainfo); - $flags = constant("ICU_ESCAPE", 0) unless defined($flags); - - my $newurl = InternetCreateUrl($scheme, $hostname, $port, - $username, $password, - $path, $extrainfo, $flags); - if(!defined($newurl)) { - $self->{'Error'} = "Cannot create URL."; - return undef; - } else { - return $newurl; - } -} - - -#==================== -sub CanonicalizeURL { -#==================== - my($self, $URL, $flags) = @_; - return undef unless ref($self); - - my $newurl = InternetCanonicalizeUrl($URL, $flags); - if(!defined($newurl)) { - $self->{'Error'} = "Cannot canonicalize URL."; - return undef; - } else { - return $newurl; - } -} - - -#=============== -sub CombineURL { -#=============== - my($self, $baseURL, $relativeURL, $flags) = @_; - return undef unless ref($self); - - my $newurl = InternetCombineUrl($baseURL, $relativeURL, $flags); - if(!defined($newurl)) { - $self->{'Error'} = "Cannot combine URL(s)."; - return undef; - } else { - return $newurl; - } -} - - -#====================== -sub SetStatusCallback { -#====================== - my($self) = @_; - return undef unless ref($self); - - my $callback = InternetSetStatusCallback($self->{'handle'}); - print "callback=$callback, constant=",constant("INTERNET_INVALID_STATUS_CALLBACK", 0), "\n"; - if($callback == constant("INTERNET_INVALID_STATUS_CALLBACK", 0)) { - return undef; - } else { - return $callback; - } -} - - -#====================== -sub GetStatusCallback { -#====================== - my($self, $context) = @_; - $context = $self if not defined $context; - return($callback_code{$context}, $callback_info{$context}); -} - - -#========== -sub Error { -#========== - my($self) = @_; - return undef unless ref($self); - - require Win32 unless defined &Win32::GetLastError; - my $errtext = ""; - my $tmp = ""; - my $errnum = Win32::GetLastError(); - - if($errnum < 12000) { - $errtext = Win32::FormatMessage($errnum); - $errtext =~ s/[\r\n]//g; - } elsif($errnum == 12003) { - ($tmp, $errtext) = InternetGetLastResponseInfo(); - chomp $errtext; - 1 while($errtext =~ s/(.*)\n//); # the last line should be significative... - # otherwise call GetResponse() to get it whole - } elsif($errnum >= 12000) { - $errtext = FormatMessage($errnum); - $errtext =~ s/[\r\n]//g; - } else { - $errtext="Error"; - } - if($errnum == 0 and defined($self->{'Error'})) { - if($self->{'Error'} == -2) { - $errnum = -2; - $errtext = "Asynchronous operations not available."; - } else { - $errnum = -1; - $errtext = $self->{'Error'}; - } - } - return (wantarray)? ($errnum, $errtext) : "\[".$errnum."\] ".$errtext; -} - - -#============ -sub Version { -#============ - my $dll = InternetDllVersion(); - $dll =~ s/\0//g; - return (wantarray)? ($Win32::Internet::VERSION, $dll) - : $Win32::Internet::VERSION."/".$dll; -} - - -#========== -sub Close { -#========== - my($self, $handle) = @_; - if(!defined($handle)) { - return undef unless ref($self); - $handle = $self->{'handle'}; - } - InternetCloseHandle($handle); -} - - - -####################################################################### -# FTP CLASS METHODS -# - -#======== ### FTP CONSTRUCTOR -sub FTP { -#======== - my($self, $new, $server, $username, $password, $port, $pasv, $context) = @_; - return undef unless ref($self); - - if(ref($server) and ref($server) eq "HASH") { - $port = $server->{'port'}; - $username = $server->{'username'}; - $password = $password->{'host'}; - my $myserver = $server->{'server'}; - $pasv = $server->{'pasv'}; - $context = $server->{'context'}; - undef $server; - $server = $myserver; - } - - $server = "" unless defined($server); - $username = "anonymous" unless defined($username); - $password = "" unless defined($password); - $port = 21 unless defined($port); - $context = 0 unless defined($context); - - $pasv = $self->{'pasv'} unless defined $pasv; - $pasv = $pasv ? constant("INTERNET_FLAG_PASSIVE",0) : 0; - - my $newhandle = InternetConnect($self->{'handle'}, $server, $port, - $username, $password, - constant("INTERNET_SERVICE_FTP", 0), - $pasv, $context); - if($newhandle) { - $self->{'connections'}++; - $_[1] = _new($newhandle); - $_[1]->{'Type'} = "FTP"; - $_[1]->{'Mode'} = "bin"; - $_[1]->{'pasv'} = $pasv; - $_[1]->{'username'} = $username; - $_[1]->{'password'} = $password; - $_[1]->{'server'} = $server; - return $newhandle; - } else { - return undef; - } -} - -#======== -sub Pwd { -#======== - my($self) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "FTP" or !defined($self->{'handle'})) { - $self->{'Error'} = "Pwd() only on FTP sessions."; - return undef; - } - - return FtpGetCurrentDirectory($self->{'handle'}); -} - - -#======= -sub Cd { -#======= - my($self, $path) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "FTP" || !defined($self->{'handle'})) { - $self->{'Error'} = "Cd() only on FTP sessions."; - return undef; - } - - my $retval = FtpSetCurrentDirectory($self->{'handle'}, $path); - if(!defined($retval)) { - return undef; - } else { - return $path; - } -} -#==================== -sub Cwd { Cd(@_); } -sub Chdir { Cd(@_); } -#==================== - - -#========== -sub Mkdir { -#========== - my($self, $path) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "FTP" or !defined($self->{'handle'})) { - $self->{'Error'} = "Mkdir() only on FTP sessions."; - return undef; - } - - my $retval = FtpCreateDirectory($self->{'handle'}, $path); - $self->{'Error'} = "Can't create directory." unless defined($retval); - return $retval; -} -#==================== -sub Md { Mkdir(@_); } -#==================== - - -#========= -sub Mode { -#========= - my($self, $value) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "FTP" or !defined($self->{'handle'})) { - $self->{'Error'} = "Mode() only on FTP sessions."; - return undef; - } - - if(!defined($value)) { - return $self->{'Mode'}; - } else { - my $modesub = ($value =~ /^a/i) ? "Ascii" : "Binary"; - $self->$modesub($_[0]); - } - return $self->{'Mode'}; -} - - -#========== -sub Rmdir { -#========== - my($self, $path) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "FTP" or !defined($self->{'handle'})) { - $self->{'Error'} = "Rmdir() only on FTP sessions."; - return undef; - } - my $retval = FtpRemoveDirectory($self->{'handle'}, $path); - $self->{'Error'} = "Can't remove directory." unless defined($retval); - return $retval; -} -#==================== -sub Rd { Rmdir(@_); } -#==================== - - -#========= -sub Pasv { -#========= - my($self, $value) = @_; - return undef unless ref($self); - - if(defined($value) and $self->{'Type'} eq "Internet") { - if($value == 0) { - $self->{'pasv'} = 0; - } else { - $self->{'pasv'} = 1; - } - } - return $self->{'pasv'}; -} - -#========= -sub List { -#========= - my($self, $pattern, $retmode) = @_; - return undef unless ref($self); - - my $retval = ""; - my $size = ""; - my $attr = ""; - my $ctime = ""; - my $atime = ""; - my $mtime = ""; - my $csec = 0; my $cmin = 0; my $chou = 0; my $cday = 0; my $cmon = 0; my $cyea = 0; - my $asec = 0; my $amin = 0; my $ahou = 0; my $aday = 0; my $amon = 0; my $ayea = 0; - my $msec = 0; my $mmin = 0; my $mhou = 0; my $mday = 0; my $mmon = 0; my $myea = 0; - my $newhandle = 0; - my $nextfile = 1; - my @results = (); - my ($filename, $altname, $file); - - if($self->{'Type'} ne "FTP") { - $self->{'Error'} = "List() only on FTP sessions."; - return undef; - } - - $pattern = "" unless defined($pattern); - $retmode = 1 unless defined($retmode); - - if($retmode == 2) { - - ( $newhandle,$filename, $altname, $size, $attr, - $csec, $cmin, $chou, $cday, $cmon, $cyea, - $asec, $amin, $ahou, $aday, $amon, $ayea, - $msec, $mmin, $mhou, $mday, $mmon, $myea - ) = FtpFindFirstFile($self->{'handle'}, $pattern, 0, 0); - - if(!$newhandle) { - $self->{'Error'} = "Can't read FTP directory."; - return undef; - } else { - - while($nextfile) { - $ctime = join(",", ($csec, $cmin, $chou, $cday, $cmon, $cyea)); - $atime = join(",", ($asec, $amin, $ahou, $aday, $amon, $ayea)); - $mtime = join(",", ($msec, $mmin, $mhou, $mday, $mmon, $myea)); - push(@results, $filename, $altname, $size, $attr, $ctime, $atime, $mtime); - - ( $nextfile, $filename, $altname, $size, $attr, - $csec, $cmin, $chou, $cday, $cmon, $cyea, - $asec, $amin, $ahou, $aday, $amon, $ayea, - $msec, $mmin, $mhou, $mday, $mmon, $myea - ) = InternetFindNextFile($newhandle); - - } - InternetCloseHandle($newhandle); - return @results; - - } - - } elsif($retmode == 3) { - - ( $newhandle,$filename, $altname, $size, $attr, - $csec, $cmin, $chou, $cday, $cmon, $cyea, - $asec, $amin, $ahou, $aday, $amon, $ayea, - $msec, $mmin, $mhou, $mday, $mmon, $myea - ) = FtpFindFirstFile($self->{'handle'}, $pattern, 0, 0); - - if(!$newhandle) { - $self->{'Error'} = "Can't read FTP directory."; - return undef; - - } else { - - while($nextfile) { - $ctime = join(",", ($csec, $cmin, $chou, $cday, $cmon, $cyea)); - $atime = join(",", ($asec, $amin, $ahou, $aday, $amon, $ayea)); - $mtime = join(",", ($msec, $mmin, $mhou, $mday, $mmon, $myea)); - $file = { "name" => $filename, - "altname" => $altname, - "size" => $size, - "attr" => $attr, - "ctime" => $ctime, - "atime" => $atime, - "mtime" => $mtime, - }; - push(@results, $file); - - ( $nextfile, $filename, $altname, $size, $attr, - $csec, $cmin, $chou, $cday, $cmon, $cyea, - $asec, $amin, $ahou, $aday, $amon, $ayea, - $msec, $mmin, $mhou, $mday, $mmon, $myea - ) = InternetFindNextFile($newhandle); - - } - InternetCloseHandle($newhandle); - return @results; - } - - } else { - - ($newhandle, $filename) = FtpFindFirstFile($self->{'handle'}, $pattern, 0, 0); - - if(!$newhandle) { - $self->{'Error'} = "Can't read FTP directory."; - return undef; - - } else { - - while($nextfile) { - push(@results, $filename); - - ($nextfile, $filename) = InternetFindNextFile($newhandle); - # print "List.no more files\n" if !$nextfile; - - } - InternetCloseHandle($newhandle); - return @results; - } - } -} -#==================== -sub Ls { List(@_); } -sub Dir { List(@_); } -#==================== - - -#================= -sub FileAttrInfo { -#================= - my($self,$attr) = @_; - my @attrinfo = (); - push(@attrinfo, "READONLY") if $attr & 1; - push(@attrinfo, "HIDDEN") if $attr & 2; - push(@attrinfo, "SYSTEM") if $attr & 4; - push(@attrinfo, "DIRECTORY") if $attr & 16; - push(@attrinfo, "ARCHIVE") if $attr & 32; - push(@attrinfo, "NORMAL") if $attr & 128; - push(@attrinfo, "TEMPORARY") if $attr & 256; - push(@attrinfo, "COMPRESSED") if $attr & 2048; - return (wantarray)? @attrinfo : join(" ", @attrinfo); -} - - -#=========== -sub Binary { -#=========== - my($self) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "FTP") { - $self->{'Error'} = "Binary() only on FTP sessions."; - return undef; - } - $self->{'Mode'} = "bin"; - return undef; -} -#====================== -sub Bin { Binary(@_); } -#====================== - - -#========== -sub Ascii { -#========== - my($self) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "FTP") { - $self->{'Error'} = "Ascii() only on FTP sessions."; - return undef; - } - $self->{'Mode'} = "asc"; - return undef; -} -#===================== -sub Asc { Ascii(@_); } -#===================== - - -#======== -sub Get { -#======== - my($self, $remote, $local, $overwrite, $flags, $context) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "FTP") { - $self->{'Error'} = "Get() only on FTP sessions."; - return undef; - } - my $mode = ($self->{'Mode'} eq "asc" ? 1 : 2); - - $remote = "" unless defined($remote); - $local = $remote unless defined($local); - $overwrite = 0 unless defined($overwrite); - $flags = 0 unless defined($flags); - $context = 0 unless defined($context); - - my $retval = FtpGetFile($self->{'handle'}, - $remote, - $local, - $overwrite, - $flags, - $mode, - $context); - $self->{'Error'} = "Can't get file." unless defined($retval); - return $retval; -} - - -#=========== -sub Rename { -#=========== - my($self, $oldname, $newname) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "FTP") { - $self->{'Error'} = "Rename() only on FTP sessions."; - return undef; - } - - my $retval = FtpRenameFile($self->{'handle'}, $oldname, $newname); - $self->{'Error'} = "Can't rename file." unless defined($retval); - return $retval; -} -#====================== -sub Ren { Rename(@_); } -#====================== - - -#=========== -sub Delete { -#=========== - my($self, $filename) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "FTP") { - $self->{'Error'} = "Delete() only on FTP sessions."; - return undef; - } - my $retval = FtpDeleteFile($self->{'handle'}, $filename); - $self->{'Error'} = "Can't delete file." unless defined($retval); - return $retval; -} -#====================== -sub Del { Delete(@_); } -#====================== - - -#======== -sub Put { -#======== - my($self, $local, $remote, $context) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "FTP") { - $self->{'Error'} = "Put() only on FTP sessions."; - return undef; - } - my $mode = ($self->{'Mode'} eq "asc" ? 1 : 2); - - $context = 0 unless defined($context); - - my $retval = FtpPutFile($self->{'handle'}, $local, $remote, $mode, $context); - $self->{'Error'} = "Can't put file." unless defined($retval); - return $retval; -} - - -####################################################################### -# HTTP CLASS METHODS -# - -#========= ### HTTP CONSTRUCTOR -sub HTTP { -#========= - my($self, $new, $server, $username, $password, $port, $flags, $context) = @_; - return undef unless ref($self); - - if(ref($server) and ref($server) eq "HASH") { - my $myserver = $server->{'server'}; - $username = $server->{'username'}; - $password = $password->{'host'}; - $port = $server->{'port'}; - $flags = $server->{'flags'}; - $context = $server->{'context'}; - undef $server; - $server = $myserver; - } - - $server = "" unless defined($server); - $username = "anonymous" unless defined($username); - $password = "" unless defined($password); - $port = 80 unless defined($port); - $flags = 0 unless defined($flags); - $context = 0 unless defined($context); - - my $newhandle = InternetConnect($self->{'handle'}, $server, $port, - $username, $password, - constant("INTERNET_SERVICE_HTTP", 0), - $flags, $context); - if($newhandle) { - $self->{'connections'}++; - $_[1] = _new($newhandle); - $_[1]->{'Type'} = "HTTP"; - $_[1]->{'username'} = $username; - $_[1]->{'password'} = $password; - $_[1]->{'server'} = $server; - $_[1]->{'accept'} = "text/*\0image/gif\0image/jpeg\0\0"; - return $newhandle; - } else { - return undef; - } -} - - -#================ -sub OpenRequest { -#================ - # alternatively to Request: - # it creates a new HTTP_Request object - # you can act upon it with AddHeader, SendRequest, ReadFile, QueryInfo, Close, ... - - my($self, $new, $path, $method, $version, $referer, $accept, $flags, $context) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "HTTP") { - $self->{'Error'} = "OpenRequest() only on HTTP sessions."; - return undef; - } - - if(ref($path) and ref($path) eq "HASH") { - $method = $path->{'method'}; - $version = $path->{'version'}; - $referer = $path->{'referer'}; - $accept = $path->{'accept'}; - $flags = $path->{'flags'}; - $context = $path->{'context'}; - my $mypath = $path->{'path'}; - undef $path; - $path = $mypath; - } - - $method = "GET" unless defined($method); - $path = "/" unless defined($path); - $version = "HTTP/1.0" unless defined($version); - $referer = "" unless defined($referer); - $accept = $self->{'accept'} unless defined($accept); - $flags = 0 unless defined($flags); - $context = 0 unless defined($context); - - $path = "/".$path if substr($path,0,1) ne "/"; - # accept string list needs to be terminated by double-NULL - $accept .= "\0\0" unless $accept =~ /\0\0\z/; - - my $newhandle = HttpOpenRequest($self->{'handle'}, - $method, - $path, - $version, - $referer, - $accept, - $flags, - $context); - if($newhandle) { - $_[1] = _new($newhandle); - $_[1]->{'Type'} = "HTTP_Request"; - $_[1]->{'method'} = $method; - $_[1]->{'request'} = $path; - $_[1]->{'accept'} = $accept; - return $newhandle; - } else { - return undef; - } -} - -#================ -sub SendRequest { -#================ - my($self, $postdata) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "HTTP_Request") { - $self->{'Error'} = "SendRequest() only on HTTP requests."; - return undef; - } - - $postdata = "" unless defined($postdata); - - return HttpSendRequest($self->{'handle'}, "", $postdata); -} - - -#============== -sub AddHeader { -#============== - my($self, $header, $flags) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "HTTP_Request") { - $self->{'Error'} = "AddHeader() only on HTTP requests."; - return undef; - } - - $flags = constant("HTTP_ADDREQ_FLAG_ADD", 0) if (!defined($flags) or $flags == 0); - - return HttpAddRequestHeaders($self->{'handle'}, $header, $flags); -} - - -#============== -sub QueryInfo { -#============== - my($self, $header, $flags) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "HTTP_Request") { - $self->{'Error'}="QueryInfo() only on HTTP requests."; - return undef; - } - - $flags = constant("HTTP_QUERY_CUSTOM", 0) if (!defined($flags) and defined($header)); - my @queryresult = HttpQueryInfo($self->{'handle'}, $flags, $header); - return (wantarray)? @queryresult : join(" ", @queryresult); -} - - -#============ -sub Request { -#============ - # HttpOpenRequest+HttpAddHeaders+HttpSendRequest+InternetReadFile+HttpQueryInfo - my($self, $path, $method, $version, $referer, $accept, $flags, $postdata) = @_; - return undef unless ref($self); - - if($self->{'Type'} ne "HTTP") { - $self->{'Error'} = "Request() only on HTTP sessions."; - return undef; - } - - if(ref($path) and ref($path) eq "HASH") { - $method = $path->{'method'}; - $version = $path->{'version'}; - $referer = $path->{'referer'}; - $accept = $path->{'accept'}; - $flags = $path->{'flags'}; - $postdata = $path->{'postdata'}; - my $mypath = $path->{'path'}; - undef $path; - $path = $mypath; - } - - my $content = ""; - my $result = ""; - my @queryresult = (); - my $statuscode = ""; - my $headers = ""; - - $path = "/" unless defined($path); - $method = "GET" unless defined($method); - $version = "HTTP/1.0" unless defined($version); - $referer = "" unless defined($referer); - $accept = $self->{'accept'} unless defined($accept); - $flags = 0 unless defined($flags); - $postdata = "" unless defined($postdata); - - $path = "/".$path if substr($path,0,1) ne "/"; - # accept string list needs to be terminated by double-NULL - $accept .= "\0\0" unless $accept =~ /\0\0\z/; - - my $newhandle = HttpOpenRequest($self->{'handle'}, - $method, - $path, - $version, - $referer, - $accept, - $flags, - 0); - - if($newhandle) { - - $result = HttpSendRequest($newhandle, "", $postdata); - - if(defined($result)) { - $statuscode = HttpQueryInfo($newhandle, - constant("HTTP_QUERY_STATUS_CODE", 0), ""); - $headers = HttpQueryInfo($newhandle, - constant("HTTP_QUERY_RAW_HEADERS_CRLF", 0), ""); - $content = ReadEntireFile($newhandle); - - InternetCloseHandle($newhandle); - - return($statuscode, $headers, $content); - } else { - return undef; - } - } else { - return undef; - } -} - - -####################################################################### -# END OF THE PUBLIC METHODS -# - - -#========= ### SUB-CLASSES CONSTRUCTOR -sub _new { -#========= - my $self = {}; - if ($_[0]) { - $self->{'handle'} = $_[0]; - bless $self; - } else { - undef($self); - } - $self; -} - - -#============ ### CLASS DESTRUCTOR -sub DESTROY { -#============ - my($self) = @_; - # print "Closing handle $self->{'handle'}...\n"; - InternetCloseHandle($self->{'handle'}); - # [dada] rest in peace -} - - -#============= -sub callback { -#============= - my($name, $status, $info) = @_; - $callback_code{$name} = $status; - $callback_info{$name} = $info; -} - -####################################################################### -# dynamically load in the Internet.pll module. -# - -bootstrap Win32::Internet; - -# Preloaded methods go here. - -#Currently Autoloading is not implemented in Perl for win32 -# Autoload methods go after __END__, and are processed by the autosplit program. - -1; -__END__ - -=head1 NAME - -Win32::Internet - Access to WININET.DLL functions - -=head1 INTRODUCTION - -This extension to Perl implements the Win32 Internet APIs (found in -F<WININET.DLL>). They give a complete support for HTTP, FTP and GOPHER -connections. - -See the L<"Version History"> and the L<"Functions Table"> for a list -of the currently supported features. You should also get a copy of the -L<"Microsoft Win32 Internet Functions"> documentation. - -=head1 REFERENCE - -To use this module, first add the following line at the beginning of -your script: - - use Win32::Internet; - -Then you have to open an Internet connection with this command: - - $Connection = new Win32::Internet(); - -This is required to use any of the function of this module. It will -create an Internet object in Perl on which you can act upon with the -L<"General Internet Functions"> explained later. - -The objects available are: - -=over - -=item * - -Internet connections (the main object, see C<new>) - -=item * - -URLs (see C<OpenURL>) - -=item * - -FTP sessions (see C<FTP>) - -=item * - -HTTP sessions (see C<HTTP>) - -=item * - -HTTP requests (see C<OpenRequest>) - -=back - -As in the good Perl tradition, there are in this extension different -ways to do the same thing; there are, in fact, different levels of -implementation of the Win32 Internet Functions. Some routines use -several Win32 API functions to perform a complex task in a single -call; they are simpler to use, but of course less powerful. - -There are then other functions that implement nothing more and nothing -less than the corresponding API function, so you can use all of their -power, but with some additional programming steps. - -To make an example, there is a function called C<FetchURL> that you -can use to fetch the content of any HTTP, FTP or GOPHER URL with this -simple commands: - - $INET = new Win32::Internet(); - $file = $INET->FetchURL("http://www.yahoo.com"); - -You can have the same result (and this is actually what is done by -C<FetchURL>) this way: - - $INET = new Win32::Internet(); - $URL = $INET->OpenURL("http://www.yahoo.com"); - $file = $URL->ReadFile(); - $URL->Close(); - -Or, you can open a complete HTTP session: - - $INET = new Win32::Internet(); - $HTTP = $INET->HTTP("www.yahoo.com", "anonymous", "dada@divinf.it"); - ($statuscode, $headers, $file) = $HTTP->Request("/"); - $HTTP->Close(); - -Finally, you can choose to manage even the HTTP request: - - $INET = new Win32::Internet(); - $HTTP = $INET->HTTP("www.yahoo.com", "anonymous", "dada@divinf.it"); - $HTTP->OpenRequest($REQ, "/"); - $REQ->AddHeader("If-Modified-Since: Saturday, 16-Nov-96 15:58:50 GMT"); - $REQ->SendRequest(); - $statuscode = $REQ->QueryInfo("",HTTP_QUERY_STATUS_CODE); - $lastmodified = $REQ->QueryInfo("Last-Modified"); - $file = $REQ->ReadEntireFile(); - $REQ->Close(); - $HTTP->Close(); - -To open and control a complete FTP session, type: - - $Connection->FTP($Session, "ftp://ftp.activeware.com", "anonymous", "dada\@divinf.it"); - -This will create an FTP object in Perl to which you can apply the L<"FTP -functions"> provided by the package: - - $Session->Cd("/ntperl/perl5.001m/CurrentBuild"); - $Session->Ascii(); - $Session->Get("110-i86.zip"); - $Session->Close(); - -For a more complete example, see the TEST.PL file that comes with the -package. - -=head2 General Internet Functions - -B<General Note> - -All methods assume that you have the line: - - use Win32::Internet; - -somewhere before the method calls, and that you have an Internet -object called $INET which was created using this call: - - $INET = new Win32::Internet(); - -See C<new> for more information. - -B<Methods> - -=over - -=item CanonicalizeURL URL, [flags] - -Converts a URL to a canonical format, which includes converting unsafe -characters to escape sequences. Returns the canonicalized URL or -C<undef> on errors. For the possible values of I<flags>, refer to the -L<"Microsoft Win32 Internet Functions"> document. See also -C<CombineURL> and C<OpenURL>. - -Example: - - $cURL = $INET->CanonicalizeURL($URL); - $URL = $INET->CanonicalizeURL($cURL, ICU_DECODE); - -=item Close - -=item Close object - -Closes an Internet connection. This can be applied to any -Win32::Internet object (Internet connections, URLs, FTP sessions, -etc.). Note that it is not "strictly" required to close the -connections you create, since the Win32::Internet objects are -automatically closed when the program ends (or when you elsehow -destroy such an object). - -Example: - - $INET->Close(); - $FTP->Close(); - $INET->Close($FTP); # same as above... - -=item CombineURL baseURL, relativeURL, [flags] - -Combines a base and relative URL into a single URL. Returns the -(canonicalized) combined URL or C<undef> on errors. For the possible -values of I<flags>, refer to the L<"Microsoft Win32 Internet -Functions"> document. See also C<CombineURL> and C<OpenURL>. - -Example: - - $URL = $INET->CombineURL("http://www.divinf.it/dada/perl/internet", ".."); - -=item ConnectBackoff [value] - -Reads or sets the delay value, in milliseconds, to wait between -connection retries. If no I<value> parameter is specified, the -current value is returned; otherwise, the delay between retries is set -to I<value>. See also C<ConnectTimeout>, C<ConnectRetries>, -C<QueryOption> and C<SetOption>. - -Example: - - $HTTP->ConnectBackoff(2000); - $backoff = $HTTP->ConnectBackoff(); - -=item ConnectRetries [value] - -Reads or sets the number of times a connection is retried before -considering it failed. If no I<value> parameter is specified, the -current value is returned; otherwise, the number of retries is set to -I<value>. The default value for C<ConnectRetries> is 5. See also -C<ConnectBackoff>, C<ConnectTimeout>, C<QueryOption> and C<SetOption>. - -Example: - - $HTTP->ConnectRetries(20); - $retries = $HTTP->ConnectRetries(); - -=item ConnectTimeout [value] - -Reads or sets the timeout value (in milliseconds) before a connection -is considered failed. If no I<value> parameter is specified, the -current value is returned; otherwise, the timeout is set to I<value>. -The default value for C<ConnectTimeout> is infinite. See also -C<ConnectBackoff>, C<ConnectRetries>, C<QueryOption> and C<SetOption>. - -Example: - - $HTTP->ConnectTimeout(10000); - $timeout = $HTTP->ConnectTimeout(); - -=item ControlReceiveTimeout [value] - -Reads or sets the timeout value (in milliseconds) to use for non-data -(control) receive requests before they are canceled. Currently, this -value has meaning only for C<FTP> sessions. If no I<value> parameter -is specified, the current value is returned; otherwise, the timeout is -set to I<value>. The default value for C<ControlReceiveTimeout> is -infinite. See also C<ControlSendTimeout>, C<QueryOption> and -C<SetOption>. - -Example: - - $HTTP->ControlReceiveTimeout(10000); - $timeout = $HTTP->ControlReceiveTimeout(); - -=item ControlSendTimeout [value] - -Reads or sets the timeout value (in milliseconds) to use for non-data -(control) send requests before they are canceled. Currently, this -value has meaning only for C<FTP> sessions. If no I<value> parameter -is specified, the current value is returned; otherwise, the timeout is -set to I<value>. The default value for C<ControlSendTimeout> is -infinite. See also C<ControlReceiveTimeout>, C<QueryOption> and -C<SetOption>. - -Example: - - $HTTP->ControlSendTimeout(10000); - $timeout = $HTTP->ControlSendTimeout(); - -=item CrackURL URL, [flags] - -Splits an URL into its component parts and returns them in an array. -Returns C<undef> on errors, otherwise the array will contain the -following values: I<scheme, host, port, username, password, path, -extrainfo>. - -For example, the URL "http://www.divinf.it/index.html#top" can be -splitted in: - - http, www.divinf.it, 80, anonymous, dada@divinf.it, /index.html, #top - -If you don't specify a I<flags> parameter, ICU_ESCAPE will be used by -default; for the possible values of I<flags> refer to the L<"Microsoft -Win32 Internet Functions"> documentation. See also C<CreateURL>. - -Example: - - @parts=$INET->CrackURL("http://www.activeware.com"); - ($scheme, $host, $port, $user, $pass, $path, $extra) = - $INET->CrackURL("http://www.divinf.it:80/perl-win32/index.sht#feedback"); - -=item CreateURL scheme, hostname, port, username, password, path, extrainfo, [flags] - -=item CreateURL hashref, [flags] - -Creates a URL from its component parts. Returns C<undef> on errors, -otherwise the created URL. - -If you pass I<hashref> (a reference to an hash array), the following -values are taken from the array: - - %hash=( - "scheme" => "scheme", - "hostname" => "hostname", - "port" => port, - "username" => "username", - "password" => "password", - "path" => "path", - "extrainfo" => "extrainfo", - ); - -If you don't specify a I<flags> parameter, ICU_ESCAPE will be used by -default; for the other possible values of I<flags> refer to the -L<"Microsoft Win32 Internet Functions"> documentation. See also -C<CrackURL>. - -Example: - - $URL=$I->CreateURL("http", "www.divinf.it", 80, "", "", "/perl-win32/index.sht", "#feedback"); - $URL=$I->CreateURL(\%params); - -=item DataReceiveTimeout [value] - -Reads or sets the timeout value (in milliseconds) to use for data -receive requests before they are canceled. If no I<value> parameter -is specified, the current value is returned; otherwise, the timeout is -set to I<value>. The default value for DataReceiveTimeout is -infinite. See also C<DataSendTimeout>, C<QueryOption> and -C<SetOption>. - -Example: - - $HTTP->DataReceiveTimeout(10000); - $timeout = $HTTP->DataReceiveTimeout(); - -=item DataSendTimeout [value] - -Reads or sets the timeout value (in milliseconds) to use for data send -requests before they are canceled. If no I<value> parameter is -specified, the current value is returned; otherwise, the timeout is -set to I<value>. The default value for DataSendTimeout is infinite. -See also C<DataReceiveTimeout>, C<QueryOption> and C<SetOption>. - -Example: - - $HTTP->DataSendTimeout(10000); - $timeout = $HTTP->DataSendTimeout(); - -=item Error - -Returns the last recorded error in the form of an array or string -(depending upon the context) containing the error number and an error -description. Can be applied on any Win32::Internet object (FTP -sessions, etc.). There are 3 types of error you can encounter; they -are recognizable by the error number returned: - -=over - -=item * -1 - -A "trivial" error has occurred in the package. For example, you tried -to use a method on the wrong type of object. - -=item * 1 .. 11999 - -A generic error has occurred and the Win32::GetLastError error message -is returned. - -=item * 12000 and higher - -An Internet error has occurred; the extended Win32 Internet API error -message is returned. - -=back - -See also C<GetResponse>. - -Example: - - die $INET->Error(), qq(\n); - ($ErrNum, $ErrText) = $INET->Error(); - -=item FetchURL URL - -Fetch the content of an HTTP, FTP or GOPHER URL. Returns the content -of the file read (or C<undef> if there was an error and nothing was -read). See also C<OpenURL> and C<ReadFile>. - -Example: - - $file = $INET->FetchURL("http://www.yahoo.com/"); - $file = $INET->FetchURL("ftp://www.activeware.com/contrib/internet.zip"); - -=item FTP ftpobject, server, username, password, [port, pasv, context] - -=item FTP ftpobject, hashref - -Opens an FTP connection to server logging in with the given -I<username> and I<password>. - -The parameters and their values are: - -=over - -=item * server - -The server to connect to. Default: I<none>. - -=item * username - -The username used to login to the server. Default: anonymous. - -=item * password - -The password used to login to the server. Default: I<none>. - -=item * port - -The port of the FTP service on the server. Default: 21. - -=item * pasv - -If it is a value other than 0, use passive transfer mode. Default is -taken from the parent Internet connection object; you can set this -value with the C<Pasv> method. - -=item * context - -A number to identify this operation if it is asynchronous. See -C<SetStatusCallback> and C<GetStatusCallback> for more info on -asynchronous operations. Default: I<none>. - -=back - -If you pass I<hashref> (a reference to an hash array), the following -values are taken from the array: - - %hash=( - "server" => "server", - "username" => "username", - "password" => "password", - "port" => port, - "pasv" => pasv, - "context" => context, - ); - -This method returns C<undef> if the connection failed, a number -otherwise. You can then call any of the L<"FTP functions"> as methods -of the newly created I<ftpobject>. - -Example: - - $result = $INET->FTP($FTP, "ftp.activeware.com", "anonymous", "dada\@divinf.it"); - # and then for example... - $FTP->Cd("/ntperl/perl5.001m/CurrentBuild"); - - $params{"server"} = "ftp.activeware.com"; - $params{"password"} = "dada\@divinf.it"; - $params{"pasv"} = 0; - $result = $INET->FTP($FTP,\%params); - -=item GetResponse - -Returns the text sent by a remote server in response to the last -function executed. It applies on any Win32::Internet object, -particularly of course on L<FTP sessions|"FTP functions">. See also -the C<Error> function. - -Example: - - print $INET->GetResponse(); - $INET->FTP($FTP, "ftp.activeware.com", "anonymous", "dada\@divinf.it"); - print $FTP->GetResponse(); - -=item GetStatusCallback context - -Returns information about the progress of the asynchronous operation -identified by I<context>; those informations consist of two values: a -status code (one of the INTERNET_STATUS_* L<"Constants">) and an -additional value depending on the status code; for example, if the -status code returned is INTERNET_STATUS_HANDLE_CREATED, the second -value will hold the handle just created. For more informations on -those values, please refer to the L<"Microsoft Win32 Internet -Functions"> documentation. See also C<SetStatusCallback>. - -Example: - - ($status, $info) = $INET->GetStatusCallback(1); - -=item HTTP httpobject, server, username, password, [port, flags, context] - -=item HTTP httpobject, hashref - -Opens an HTTP connection to I<server> logging in with the given -I<username> and I<password>. - -The parameters and their values are: - -=over - -=item * server - -The server to connect to. Default: I<none>. - -=item * username - -The username used to login to the server. Default: anonymous. - -=item * password - -The password used to login to the server. Default: I<none>. - -=item * port - -The port of the HTTP service on the server. Default: 80. - -=item * flags - -Additional flags affecting the behavior of the function. Default: -I<none>. - -=item * context - -A number to identify this operation if it is asynchronous. See -C<SetStatusCallback> and C<GetStatusCallback> for more info on -asynchronous operations. Default: I<none>. - -=back - -Refer to the L<"Microsoft Win32 Internet Functions"> documentation for -more details on those parameters. - -If you pass I<hashref> (a reference to an hash array), the following -values are taken from the array: - - %hash=( - "server" => "server", - "username" => "username", - "password" => "password", - "port" => port, - "flags" => flags, - "context" => context, - ); - -This method returns C<undef> if the connection failed, a number -otherwise. You can then call any of the L<"HTTP functions"> as -methods of the newly created I<httpobject>. - -Example: - - $result = $INET->HTTP($HTTP,"www.activeware.com","anonymous","dada\@divinf.it"); - # and then for example... - ($statuscode, $headers, $file) = $HTTP->Request("/gifs/camel.gif"); - - $params{"server"} = "www.activeware.com"; - $params{"password"} = "dada\@divinf.it"; - $params{"flags"} = INTERNET_FLAG_RELOAD; - $result = $INET->HTTP($HTTP,\%params); - -=item new Win32::Internet [useragent, opentype, proxy, proxybypass, flags] - -=item new Win32::Internet [hashref] - -Creates a new Internet object and initializes the use of the Internet -functions; this is required before any of the functions of this -package can be used. Returns C<undef> if the connection fails, a number -otherwise. The parameters and their values are: - -=over - -=item * useragent - -The user agent passed to HTTP requests. See C<OpenRequest>. Default: -Perl-Win32::Internet/I<version>. - -=item * opentype - -How to access to the Internet (eg. directly or using a proxy). -Default: INTERNET_OPEN_TYPE_DIRECT. - -=item * proxy - -Name of the proxy server (or servers) to use. Default: I<none>. - -=item * proxybypass - -Optional list of host names or IP addresses, or both, that are known -locally. Default: I<none>. - -=item * flags - -Additional flags affecting the behavior of the function. Default: -I<none>. - -=back - -Refer to the L<"Microsoft Win32 Internet Functions"> documentation for -more details on those parameters. If you pass I<hashref> (a reference to -an hash array), the following values are taken from the array: - - %hash=( - "useragent" => "useragent", - "opentype" => "opentype", - "proxy" => "proxy", - "proxybypass" => "proxybypass", - "flags" => flags, - ); - -Example: - - $INET = new Win32::Internet(); - die qq(Cannot connect to Internet...\n) if ! $INET; - - $INET = new Win32::Internet("Mozilla/3.0", INTERNET_OPEN_TYPE_PROXY, "www.microsoft.com", ""); - - $params{"flags"} = INTERNET_FLAG_ASYNC; - $INET = new Win32::Internet(\%params); - -=item OpenURL urlobject, URL - -Opens a connection to an HTTP, FTP or GOPHER Uniform Resource Location -(URL). Returns C<undef> on errors or a number if the connection was -succesful. You can then retrieve the URL content by applying the -methods C<QueryDataAvailable> and C<ReadFile> on the newly created -I<urlobject>. See also C<FetchURL>. - -Example: - - $INET->OpenURL($URL, "http://www.yahoo.com/"); - $bytes = $URL->QueryDataAvailable(); - $file = $URL->ReadEntireFile(); - $URL->Close(); - -=item Password [password] - -Reads or sets the password used for an C<FTP> or C<HTTP> connection. -If no I<password> parameter is specified, the current value is -returned; otherwise, the password is set to I<password>. See also -C<Username>, C<QueryOption> and C<SetOption>. - -Example: - - $HTTP->Password("splurfgnagbxam"); - $password = $HTTP->Password(); - -=item QueryDataAvailable - -Returns the number of bytes of data that are available to be read -immediately by a subsequent call to C<ReadFile> (or C<undef> on -errors). Can be applied to URL or HTTP request objects. See -C<OpenURL> or C<OpenRequest>. - -Example: - - $INET->OpenURL($URL, "http://www.yahoo.com/"); - $bytes = $URL->QueryDataAvailable(); - -=item QueryOption option - -Queries an Internet option. For the possible values of I<option>, -refer to the L<"Microsoft Win32 Internet Functions"> document. See -also C<SetOption>. - -Example: - - $value = $INET->QueryOption(INTERNET_OPTION_CONNECT_TIMEOUT); - $value = $HTTP->QueryOption(INTERNET_OPTION_USERNAME); - -=item ReadEntireFile - -Reads all the data available from an opened URL or HTTP request -object. Returns what have been read or C<undef> on errors. See also -C<OpenURL>, C<OpenRequest> and C<ReadFile>. - -Example: - - $INET->OpenURL($URL, "http://www.yahoo.com/"); - $file = $URL->ReadEntireFile(); - -=item ReadFile bytes - -Reads I<bytes> bytes of data from an opened URL or HTTP request -object. Returns what have been read or C<undef> on errors. See also -C<OpenURL>, C<OpenRequest>, C<QueryDataAvailable> and -C<ReadEntireFile>. - -B<Note:> be careful to keep I<bytes> to an acceptable value (eg. don't -tell him to swallow megabytes at once...). C<ReadEntireFile> in fact -uses C<QueryDataAvailable> and C<ReadFile> in a loop to read no more -than 16k at a time. - -Example: - - $INET->OpenURL($URL, "http://www.yahoo.com/"); - $chunk = $URL->ReadFile(16000); - -=item SetOption option, value - -Sets an Internet option. For the possible values of I<option>, refer to -the L<"Microsoft Win32 Internet Functions"> document. See also -C<QueryOption>. - -Example: - - $INET->SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,10000); - $HTTP->SetOption(INTERNET_OPTION_USERNAME,"dada"); - -=item SetStatusCallback - -Initializes the callback routine used to return data about the -progress of an asynchronous operation. - -Example: - - $INET->SetStatusCallback(); - -This is one of the step required to perform asynchronous operations; -the complete procedure is: - - # use the INTERNET_FLAG_ASYNC when initializing - $params{'flags'}=INTERNET_FLAG_ASYNC; - $INET = new Win32::Internet(\%params); - - # initialize the callback routine - $INET->SetStatusCallback(); - - # specify the context parameter (the last 1 in this case) - $INET->HTTP($HTTP, "www.yahoo.com", "anonymous", "dada\@divinf.it", 80, 0, 1); - -At this point, control returns immediately to Perl and $INET->Error() -will return 997, which means an asynchronous I/O operation is -pending. Now, you can call - - $HTTP->GetStatusCallback(1); - -in a loop to verify what's happening; see also C<GetStatusCallback>. - -=item TimeConvert time - -=item TimeConvert seconds, minute, hours, day, month, year, - day_of_week, RFC - -The first form takes a HTTP date/time string and returns the date/time -converted in the following array: I<seconds, minute, hours, day, -month, year, day_of_week>. - -The second form does the opposite (or at least it should, because -actually seems to be malfunctioning): it takes the values and returns -an HTTP date/time string, in the RFC format specified by the I<RFC> -parameter (OK, I didn't find yet any accepted value in the range -0..2000, let me know if you have more luck with it). - -Example: - - ($sec, $min, $hour, $day, $mday, $year, $wday) = - $INET->TimeConvert("Sun, 26 Jan 1997 20:01:52 GMT"); - - # the opposite DOESN'T WORK! which value should $RFC have??? - $time = $INET->TimeConvert(52, 1, 20, 26, 1, 1997, 0, $RFC); - -=item UserAgent [name] - -Reads or sets the user agent used for HTTP requests. If no I<name> -parameter is specified, the current value is returned; otherwise, the -user agent is set to I<name>. See also C<QueryOption> and -C<SetOption>. - -Example: - - $INET->UserAgent("Mozilla/3.0"); - $useragent = $INET->UserAgent(); - -=item Username [name] - -Reads or sets the username used for an C<FTP> or C<HTTP> connection. -If no I<name> parameter is specified, the current value is returned; -otherwise, the username is set to I<name>. See also C<Password>, -C<QueryOption> and SetOption. - -Example: - - $HTTP->Username("dada"); - $username = $HTTP->Username(); - -=item Version - -Returns the version numbers for the Win32::Internet package and the -WININET.DLL version, as an array or string, depending on the context. -The string returned will contain "package_version/DLL_version", while -the array will contain: "package_version", "DLL_version". - -Example: - - $version = $INET->Version(); # should return "0.06/4.70.1215" - @version = $INET->Version(); # should return ("0.06", "4.70.1215") - -=back - - -=head2 FTP Functions - -B<General Note> - -All methods assume that you have the following lines: - - use Win32::Internet; - $INET = new Win32::Internet(); - $INET->FTP($FTP, "hostname", "username", "password"); - -somewhere before the method calls; in other words, we assume that you -have an Internet object called $INET and an open FTP session called -$FTP. - -See C<new> and C<FTP> for more information. - - -B<Methods> - -=over - -=item Ascii - -=item Asc - -Sets the ASCII transfer mode for this FTP session. It will be applied -to the subsequent C<Get> functions. See also the C<Binary> and -C<Mode> function. - -Example: - - $FTP->Ascii(); - -=item Binary - -=item Bin - -Sets the binary transfer mode for this FTP session. It will be -applied to the subsequent C<Get> functions. See also the C<Ascii> and -C<Mode> function. - -Example: - - $FTP->Binary(); - -=item Cd path - -=item Cwd path - -=item Chdir path - -Changes the current directory on the FTP remote host. Returns I<path> -or C<undef> on error. - -Example: - - $FTP->Cd("/pub"); - -=item Delete file - -=item Del file - -Deletes a file on the FTP remote host. Returns C<undef> on error. - -Example: - - $FTP->Delete("110-i86.zip"); - -=item Get remote, [local, overwrite, flags, context] - -Gets the I<remote> FTP file and saves it locally in I<local>. If -I<local> is not specified, it will be the same name as I<remote>. -Returns C<undef> on error. The parameters and their values are: - -=over - -=item * remote - -The name of the remote file on the FTP server. Default: I<none>. - -=item * local - -The name of the local file to create. Default: remote. - -=item * overwrite - -If 0, overwrites I<local> if it exists; with any other value, the -function fails if the I<local> file already exists. Default: 0. - -=item * flags - -Additional flags affecting the behavior of the function. Default: -I<none>. - -=item * context - -A number to identify this operation if it is asynchronous. See -C<SetStatusCallback> and C<GetStatusCallback> for more info on -asynchronous operations. Default: I<none>. - -=back - -Refer to the L<"Microsoft Win32 Internet Functions"> documentation for -more details on those parameters. - -Example: - - $FTP->Get("110-i86.zip"); - $FTP->Get("/pub/perl/languages/CPAN/00index.html", "CPAN_index.html"); - -=item List [pattern, listmode] - -=item Ls [pattern, listmode] - -=item Dir [pattern, listmode] - -Returns a list containing the files found in this directory, -eventually matching the given I<pattern> (which, if omitted, is -considered "*.*"). The content of the returned list depends on the -I<listmode> parameter, which can have the following values: - -=over - -=item * listmode=1 (or omitted) - -the list contains the names of the files found. Example: - - @files = $FTP->List(); - @textfiles = $FTP->List("*.txt"); - foreach $file (@textfiles) { - print "Name: ", $file, "\n"; - } - -=item * listmode=2 - -the list contains 7 values for each file, which respectively are: - -=over - -=item * the file name - -=item * the DOS short file name, aka 8.3 - -=item * the size - -=item * the attributes - -=item * the creation time - -=item * the last access time - -=item * the last modified time - -=back - -Example: - - @files = $FTP->List("*.*", 2); - for($i=0; $i<=$#files; $i+=7) { - print "Name: ", @files[$i], "\n"; - print "Size: ", @files[$i+2], "\n"; - print "Attr: ", @files[$i+3], "\n"; - } - -=item * listmode=3 - -the list contains a reference to an hash array for each found file; -each hash contains: - -=over - -=item * name => the file name - -=item * altname => the DOS short file name, aka 8.3 - -=item * size => the size - -=item * attr => the attributes - -=item * ctime => the creation time - -=item * atime => the last access time - -=item * mtime => the last modified time - -=back - -Example: - - @files = $FTP->List("*.*", 3); - foreach $file (@files) { - print $file->{'name'}, " ", $file->{'size'}, " ", $file->{'attr'}, "\n"; - } - -B<Note:> all times are reported as strings of the following format: -I<second, hour, minute, day, month, year>. - -Example: - - $file->{'mtime'} == "0,10,58,9,12,1996" stands for 09 Dec 1996 at 10:58:00 - -=back - -=item Mkdir name - -=item Md name - -Creates a directory on the FTP remote host. Returns C<undef> on error. - -Example: - - $FTP->Mkdir("NextBuild"); - -=item Mode [mode] - -If called with no arguments, returns the current transfer mode for -this FTP session ("asc" for ASCII or "bin" for binary). The I<mode> -argument can be "asc" or "bin", in which case the appropriate transfer -mode is selected. See also the Ascii and Binary functions. Returns -C<undef> on errors. - -Example: - - print "Current mode is: ", $FTP->Mode(); - $FTP->Mode("asc"); # ... same as $FTP->Ascii(); - -=item Pasv [mode] - -If called with no arguments, returns 1 if the current FTP session has -passive transfer mode enabled, 0 if not. - -You can call it with a I<mode> parameter (0/1) only as a method of a -Internet object (see C<new>), in which case it will set the default -value for the next C<FTP> objects you create (read: set it before, -because you can't change this value once you opened the FTP session). - -Example: - - print "Pasv is: ", $FTP->Pasv(); - - $INET->Pasv(1); - $INET->FTP($FTP,"ftp.activeware.com", "anonymous", "dada\@divinf.it"); - $FTP->Pasv(0); # this will be ignored... - -=item Put local, [remote, context] - -Upload the I<local> file to the FTP server saving it under the name -I<remote>, which if if omitted is the same name as I<local>. Returns -C<undef> on error. - -I<context> is a number to identify this operation if it is asynchronous. -See C<SetStatusCallback> and C<GetStatusCallback> for more info on -asynchronous operations. - -Example: - - $FTP->Put("internet.zip"); - $FTP->Put("d:/users/dada/temp.zip", "/temp/dada.zip"); - -=item Pwd - -Returns the current directory on the FTP server or C<undef> on errors. - -Example: - - $path = $FTP->Pwd(); - -=item Rename oldfile, newfile - -=item Ren oldfile, newfile - -Renames a file on the FTP remote host. Returns C<undef> on error. - -Example: - - $FTP->Rename("110-i86.zip", "68i-011.zip"); - -=item Rmdir name - -=item Rd name - -Removes a directory on the FTP remote host. Returns C<undef> on error. - -Example: - - $FTP->Rmdir("CurrentBuild"); - -=back - -=head2 HTTP Functions - -B<General Note> - -All methods assume that you have the following lines: - - use Win32::Internet; - $INET = new Win32::Internet(); - $INET->HTTP($HTTP, "hostname", "username", "password"); - -somewhere before the method calls; in other words, we assume that you -have an Internet object called $INET and an open HTTP session called -$HTTP. - -See C<new> and C<HTTP> for more information. - - -B<Methods> - -=over - -=item AddHeader header, [flags] - -Adds HTTP request headers to an HTTP request object created with -C<OpenRequest>. For the possible values of I<flags> refer to the -L<"Microsoft Win32 Internet Functions"> document. - -Example: - - $HTTP->OpenRequest($REQUEST,"/index.html"); - $REQUEST->AddHeader("If-Modified-Since: Sunday, 17-Nov-96 11:40:03 GMT"); - $REQUEST->AddHeader("Accept: text/html\r\n", HTTP_ADDREQ_FLAG_REPLACE); - -=item OpenRequest requestobject, [path, method, version, referer, accept, flags, context] - -=item OpenRequest requestobject, hashref - -Opens an HTTP request. Returns C<undef> on errors or a number if the -connection was succesful. You can then use one of the C<AddHeader>, -C<SendRequest>, C<QueryInfo>, C<QueryDataAvailable> and C<ReadFile> -methods on the newly created I<requestobject>. The parameters and -their values are: - -=over - -=item * path - -The object to request. This is generally a file name, an executable -module, etc. Default: / - -=item * method - -The method to use; can actually be GET, POST, HEAD or PUT. Default: -GET - -=item * version - -The HTTP version. Default: HTTP/1.0 - -=item * referer - -The URL of the document from which the URL in the request was -obtained. Default: I<none> - -=item * accept - -A single string with "\0" (ASCII zero) delimited list of content -types accepted. The string must be terminated by "\0\0". -Default: "text/*\0image/gif\0image/jpeg\0\0" - -=item * flags - -Additional flags affecting the behavior of the function. Default: -I<none> - -=item * context - -A number to identify this operation if it is asynchronous. See -C<SetStatusCallback> and C<GetStatusCallback> for more info on -asynchronous operations. Default: I<none> - -=back - -Refer to the L<"Microsoft Win32 Internet Functions"> documentation for -more details on those parameters. If you pass I<hashref> (a reference to -an hash array), the following values are taken from the array: - - %hash=( - "path" => "path", - "method" => "method", - "version" => "version", - "referer" => "referer", - "accept" => "accept", - "flags" => flags, - "context" => context, - ); - -See also C<Request>. - -Example: - - $HTTP->OpenRequest($REQUEST, "/index.html"); - $HTTP->OpenRequest($REQUEST, "/index.html", "GET", "HTTP/0.9"); - - $params{"path"} = "/index.html"; - $params{"flags"} = " - $HTTP->OpenRequest($REQUEST, \%params); - -=item QueryInfo header, [flags] - -Queries information about an HTTP request object created with -C<OpenRequest>. You can specify an I<header> (for example, -"Content-type") and/or one or more I<flags>. If you don't specify -I<flags>, HTTP_QUERY_CUSTOM will be used by default; this means that -I<header> should contain a valid HTTP header name. For the possible -values of I<flags> refer to the L<"Microsoft Win32 Internet -Functions"> document. - -Example: - - $HTTP->OpenRequest($REQUEST,"/index.html"); - $statuscode = $REQUEST->QueryInfo("", HTTP_QUERY_STATUS_CODE); - $headers = $REQUEST->QueryInfo("", HTTP_QUERY_RAW_HEADERS_CRLF); # will get all the headers - $length = $REQUEST->QueryInfo("Content-length"); - -=item Request [path, method, version, referer, accept, flags] - -=item Request hashref - -Performs an HTTP request and returns an array containing the status -code, the headers and the content of the file. It is a one-step -procedure that makes an C<OpenRequest>, a C<SendRequest>, some -C<QueryInfo>, C<ReadFile> and finally C<Close>. For a description of -the parameters, see C<OpenRequest>. - -Example: - - ($statuscode, $headers, $file) = $HTTP->Request("/index.html"); - ($s, $h, $f) = $HTTP->Request("/index.html", "GET", "HTTP/1.0"); - -=item SendRequest [postdata] - -Send an HTTP request to the destination server. I<postdata> are any -optional data to send immediately after the request header; this is -generally used for POST or PUT requests. See also C<OpenRequest>. - -Example: - - $HTTP->OpenRequest($REQUEST, "/index.html"); - $REQUEST->SendRequest(); - - # A POST request... - $HTTP->OpenRequest($REQUEST, "/cgi-bin/somescript.pl", "POST"); - - #This line is a must -> (thanks Philip :) - $REQUEST->AddHeader("Content-Type: application/x-www-form-urlencoded"); - - $REQUEST->SendRequest("key1=value1&key2=value2&key3=value3"); - -=back - - -=head1 APPENDIX - - -=head2 Microsoft Win32 Internet Functions - -Complete documentation for the Microsoft Win32 Internet Functions can -be found, in both HTML and zipped Word format, at this address: - - http://www.microsoft.com/intdev/sdk/docs/wininet/ - -=head2 Functions Table - -This table reports the correspondence between the functions offered by -WININET.DLL and their implementation in the Win32::Internet -extension. Functions showing a "---" are not currently -implemented. Functions enclosed in parens ( ) aren't implemented -straightforwardly, but in a higher-level routine, eg. together with -other functions. - - WININET.DLL Win32::Internet - - InternetOpen new Win32::Internet - InternetConnect FTP / HTTP - InternetCloseHandle Close - InternetQueryOption QueryOption - InternetSetOption SetOption - InternetSetOptionEx --- - InternetSetStatusCallback SetStatusCallback - InternetStatusCallback GetStatusCallback - InternetConfirmZoneCrossing --- - InternetTimeFromSystemTime TimeConvert - InternetTimeToSystemTime TimeConvert - InternetAttemptConnect --- - InternetReadFile ReadFile - InternetSetFilePointer --- - InternetFindNextFile (List) - InternetQueryDataAvailable QueryDataAvailable - InternetGetLastResponseInfo GetResponse - InternetWriteFile --- - InternetCrackUrl CrackURL - InternetCreateUrl CreateURL - InternetCanonicalizeUrl CanonicalizeURL - InternetCombineUrl CombineURL - InternetOpenUrl OpenURL - FtpFindFirstFile (List) - FtpGetFile Get - FtpPutFile Put - FtpDeleteFile Delete - FtpRenameFile Rename - FtpOpenFile --- - FtpCreateDirectory Mkdir - FtpRemoveDirectory Rmdir - FtpSetCurrentDirectory Cd - FtpGetCurrentDirectory Pwd - HttpOpenRequest OpenRequest - HttpAddRequestHeaders AddHeader - HttpSendRequest SendRequest - HttpQueryInfo QueryInfo - InternetErrorDlg --- - - -Actually, I don't plan to add support for Gopher, Cookie and Cache -functions. I will if there will be consistent requests to do so. - -There are a number of higher-level functions in the Win32::Internet -that simplify some usual procedures, calling more that one WININET API -function. This table reports those functions and the relative WININET -functions they use. - - Win32::Internet WININET.DLL - - FetchURL InternetOpenUrl - InternetQueryDataAvailable - InternetReadFile - InternetCloseHandle - - ReadEntireFile InternetQueryDataAvailable - InternetReadFile - - Request HttpOpenRequest - HttpSendRequest - HttpQueryInfo - InternetQueryDataAvailable - InternetReadFile - InternetCloseHandle - - List FtpFindFirstFile - InternetFindNextFile - - -=head2 Constants - -Those are the constants exported by the package in the main namespace -(eg. you can use them in your scripts); for their meaning and proper -use, refer to the Microsoft Win32 Internet Functions document. - - HTTP_ADDREQ_FLAG_ADD - HTTP_ADDREQ_FLAG_REPLACE - HTTP_QUERY_ALLOW - HTTP_QUERY_CONTENT_DESCRIPTION - HTTP_QUERY_CONTENT_ID - HTTP_QUERY_CONTENT_LENGTH - HTTP_QUERY_CONTENT_TRANSFER_ENCODING - HTTP_QUERY_CONTENT_TYPE - HTTP_QUERY_COST - HTTP_QUERY_CUSTOM - HTTP_QUERY_DATE - HTTP_QUERY_DERIVED_FROM - HTTP_QUERY_EXPIRES - HTTP_QUERY_FLAG_REQUEST_HEADERS - HTTP_QUERY_FLAG_SYSTEMTIME - HTTP_QUERY_LANGUAGE - HTTP_QUERY_LAST_MODIFIED - HTTP_QUERY_MESSAGE_ID - HTTP_QUERY_MIME_VERSION - HTTP_QUERY_PRAGMA - HTTP_QUERY_PUBLIC - HTTP_QUERY_RAW_HEADERS - HTTP_QUERY_RAW_HEADERS_CRLF - HTTP_QUERY_REQUEST_METHOD - HTTP_QUERY_SERVER - HTTP_QUERY_STATUS_CODE - HTTP_QUERY_STATUS_TEXT - HTTP_QUERY_URI - HTTP_QUERY_USER_AGENT - HTTP_QUERY_VERSION - HTTP_QUERY_WWW_LINK - ICU_BROWSER_MODE - ICU_DECODE - ICU_ENCODE_SPACES_ONLY - ICU_ESCAPE - ICU_NO_ENCODE - ICU_NO_META - ICU_USERNAME - INTERNET_FLAG_PASSIVE - INTERNET_FLAG_ASYNC - INTERNET_FLAG_HYPERLINK - INTERNET_FLAG_KEEP_CONNECTION - INTERNET_FLAG_MAKE_PERSISTENT - INTERNET_FLAG_NO_AUTH - INTERNET_FLAG_NO_AUTO_REDIRECT - INTERNET_FLAG_NO_CACHE_WRITE - INTERNET_FLAG_NO_COOKIES - INTERNET_FLAG_READ_PREFETCH - INTERNET_FLAG_RELOAD - INTERNET_FLAG_RESYNCHRONIZE - INTERNET_FLAG_TRANSFER_ASCII - INTERNET_FLAG_TRANSFER_BINARY - INTERNET_INVALID_PORT_NUMBER - INTERNET_INVALID_STATUS_CALLBACK - INTERNET_OPEN_TYPE_DIRECT - INTERNET_OPEN_TYPE_PROXY - INTERNET_OPEN_TYPE_PROXY_PRECONFIG - INTERNET_OPTION_CONNECT_BACKOFF - INTERNET_OPTION_CONNECT_RETRIES - INTERNET_OPTION_CONNECT_TIMEOUT - INTERNET_OPTION_CONTROL_SEND_TIMEOUT - INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT - INTERNET_OPTION_DATA_SEND_TIMEOUT - INTERNET_OPTION_DATA_RECEIVE_TIMEOUT - INTERNET_OPTION_HANDLE_TYPE - INTERNET_OPTION_LISTEN_TIMEOUT - INTERNET_OPTION_PASSWORD - INTERNET_OPTION_READ_BUFFER_SIZE - INTERNET_OPTION_USER_AGENT - INTERNET_OPTION_USERNAME - INTERNET_OPTION_VERSION - INTERNET_OPTION_WRITE_BUFFER_SIZE - INTERNET_SERVICE_FTP - INTERNET_SERVICE_GOPHER - INTERNET_SERVICE_HTTP - INTERNET_STATUS_CLOSING_CONNECTION - INTERNET_STATUS_CONNECTED_TO_SERVER - INTERNET_STATUS_CONNECTING_TO_SERVER - INTERNET_STATUS_CONNECTION_CLOSED - INTERNET_STATUS_HANDLE_CLOSING - INTERNET_STATUS_HANDLE_CREATED - INTERNET_STATUS_NAME_RESOLVED - INTERNET_STATUS_RECEIVING_RESPONSE - INTERNET_STATUS_REDIRECT - INTERNET_STATUS_REQUEST_COMPLETE - INTERNET_STATUS_REQUEST_SENT - INTERNET_STATUS_RESOLVING_NAME - INTERNET_STATUS_RESPONSE_RECEIVED - INTERNET_STATUS_SENDING_REQUEST - - -=head1 VERSION HISTORY - -=over - -=item * 0.082 (4 Sep 2001) - -=over - -=item * - -Fix passive FTP mode. INTERNET_FLAG_PASSIVE was misspelled in earlier -versions (as INTERNET_CONNECT_FLAG_PASSIVE) and wouldn't work. Found -by Steve Raynesford <stever@evolvecomm.com>. - -=back - -=item * 0.081 (25 Sep 1999) - -=over - -=item * - -Documentation converted to pod format by Jan Dubois <JanD@ActiveState.com>. - -=item * - -Minor changes from Perl 5.005xx compatibility. - -=back - -=item * 0.08 (14 Feb 1997) - -=over - -=item * - -fixed 2 more bugs in Option(s) related subs (thanks to Brian -Helterline!). - -=item * - -Error() now gets error messages directly from WININET.DLL. - -=item * - -The PLL file now comes in 2 versions, one for Perl version 5.001 -(build 100) and one for Perl version 5.003 (build 300 and -higher). Everybody should be happy now :) - -=item * - -added an installation program. - -=back - -=item * 0.07 (10 Feb 1997) - -=over - -=item * - -fixed a bug in Version() introduced with 0.06... - -=item * - -completely reworked PM file, fixed *lots* of minor bugs, and removed -almost all the warnings with "perl -w". - -=back - -=item * 0.06 (26 Jan 1997) - -=over - -=item * - -fixed another hideous bug in "new" (the 'class' parameter was still -missing). - -=item * - -added support for asynchronous operations (work still in embryo). - -=item * - -removed the ending \0 (ASCII zero) from the DLL version returned by -"Version". - -=item * - -added a lot of constants. - -=item * - -added safefree() after every safemalloc() in C... wonder why I didn't -it before :) - -=item * - -added TimeConvert, which actually works one way only. - -=back - -=item * 0.05f (29 Nov 1996) - -=over - -=item * - -fixed a bug in "new" (parameters passed were simply ignored). - -=item * - -fixed another bug: "Chdir" and "Cwd" were aliases of RMDIR instead of -CD.. - -=back - -=item * 0.05 (29 Nov 1996) - -=over - -=item * - -added "CrackURL" and "CreateURL". - -=item * - -corrected an error in TEST.PL (there was a GetUserAgent instead of -UserAgent). - -=back - -=item * 0.04 (25 Nov 1996) - -=over - -=item * - -added "Version" to retrieve package and DLL versions. - -=item * - -added proxies and other options to "new". - -=item * - -changed "OpenRequest" and "Request" to read parameters from a hash. - -=item * - -added "SetOption/QueryOption" and a lot of relative functions -(connect, username, password, useragent, etc.). - -=item * - -added "CanonicalizeURL" and "CombineURL". - -=item * - -"Error" covers a wider spectrum of errors. - -=back - -=item * 0.02 (18 Nov 1996) - -=over - -=item * - -added support for HTTP sessions and requests. - -=back - -=item * 0.01 (11 Nov 1996) - -=over - -=item * - -fetching of HTTP, FTP and GOPHER URLs. - -=item * - -complete set of commands to manage an FTP session. - -=back - -=back - -=head1 AUTHOR - -Version 0.08 (14 Feb 1997) by Aldo Calpini <a.calpini@romagiubileo.it> - - -=head1 CREDITS - -Win32::Internet is based on the Win32::Registry code written by Jesse -Dougherty. - -Additional thanks to: Carl Tichler for his help in the initial -development; Tore Haraldsen, Brian Helterline for the bugfixes; Dave -Roth for his great source code examples. - - -=head1 DISCLAIMER - -This program is FREE; you can redistribute, modify, disassemble, or -even reverse engineer this software at your will. Keep in mind, -however, that NOTHING IS GUARANTEED to work and everything you do is -AT YOUR OWN RISK - I will not take responsability for any damage, loss -of money and/or health that may arise from the use of this program! - -This is distributed under the terms of Larry Wall's Artistic License. diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Job.pm b/Master/tlpkg/tlperl.old/lib/Win32/Job.pm deleted file mode 100644 index 3350f76400d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Job.pm +++ /dev/null @@ -1,370 +0,0 @@ -package Win32::Job; - -use strict; -use base qw(DynaLoader); -use vars qw($VERSION); - -$VERSION = '0.01'; - -use constant WIN32s => 0; -use constant WIN9X => 1; -use constant WINNT => 2; - -require Win32 unless defined &Win32::GetOSVersion; -my @ver = Win32::GetOSVersion; -die "Win32::Job is not supported on $ver[0]" unless ( - $ver[4] == WINNT and ( - $ver[1] > 5 or - ($ver[1] == 5 and $ver[2] > 0) or - ($ver[1] == 5 and $ver[2] == 0 and $ver[3] >= 0) - ) -); - -Win32::Job->bootstrap($VERSION); - -1; - -__END__ - -=head1 NAME - -Win32::Job - Run sub-processes in a "job" environment - -=head1 SYNOPSIS - - use Win32::Job; - - my $job = Win32::Job->new; - - # Run 'perl Makefile.PL' for 10 seconds - $job->spawn($Config{perlpath}, "perl Makefile.PL"); - $job->run(10); - -=head1 PLATFORMS - -Win32::Job requires Windows 2000 or later. Windows 95, 98, NT, and Me are not -supported. - -=head1 DESCRIPTION - -Windows 2000 introduced the concept of a "job": a collection of processes -which can be controlled as a single unit. For example, you can reliably kill a -process and all of its children by launching the process in a job, then -telling Windows to kill all processes in the job. Win32::Job makes this -feature available to Perl. - -For example, imagine you want to allow 2 minutes for a process to complete. -If you have control over the child process, you can probably just run it in -the background, then poll every second to see if it has finished. - -That's fine as long as the child process doesn't spawn any child processes. -What if it does? If you wrote the child process yourself and made an effort to -clean up your child processes before terminating, you don't have to worry. -If not, you will leave hanging processes (called "zombie" processes in Unix). - -With Win32::Job, just create a new Job, then use the job to spawn the child -process. All I<its> children will also be created in the new Job. When you -time out, just call the job's kill() method and the entire process tree will -be terminated. - -=head1 Using Win32::Job - -The following methods are available: - -=over 4 - -=item 1 - -new() - - new(); - -Creates a new Job object using the Win32 API call CreateJobObject(). The job -is created with a default security context, and is unnamed. - -Note: this method returns C<undef> if CreateJobObject() fails. Look at C<$^E> -for more detailed error information. - -=item 2 - -spawn() - - spawn($exe, $args, \%opts); - -Creates a new process and associates it with the Job. The process is initially -suspended, and can be resumed with one of the other methods. Uses the Win32 -API call CreateProcess(). Returns the PID of the newly created process. - -Note: this method returns C<undef> if CreateProcess() fails. See C<$^E> for -more detailed error information. One reason this will fail is if the calling -process is itself part of a job, and the job's security context does not allow -child processes to be created in a different job context than the parent. - -The arguments are described here: - -=over 4 - -=item 1 - -$exe - -The executable program to run. This may be C<undef>, in which case the first -argument in $args is the program to run. - -If this has path information in it, it is used "as is" and passed to -CreateProcess(), which interprets it as either an absolute path, or a -path relative to the current drive and directory. If you did not specify an -extension, ".exe" is assumed. - -If there are no path separators (either backslashes or forward slashes), -then Win32::Job will search the current directory and your PATH, looking -for the file. In addition, if you did not specify an extension, then -Win32::Job checks ".exe", ".com", and ".bat" in order. If it finds a ".bat" -file, Win32::Job will actually call F<cmd.exe> and prepend "cmd.exe" to the -$args. - -For example, assuming a fairly normal PATH: - - spawn(q{c:\winnt\system\cmd.exe}, q{cmd /C "echo %PATH%"}) - exefile: c:\winnt\system\cmd.exe - cmdline: cmd /C "echo %PATH%" - - spawn("cmd.exe", q{cmd /C "echo %PATH%"}) - exefile: c:\winnt\system\cmd.exe - cmdline: cmd /C "echo %PATH%" - -=item 2 - -$args - -The commandline to pass to the executable program. The first word will be -C<argv[0]> to an EXE file, so you should repeat the command name in $args. - -For example: - - $job->spawn($Config{perlpath}, "perl foo.pl"); - -In this case, the "perl" is ignored, since perl.exe doesn't use it. - -=item 3 - -%opts - -A hash reference for advanced options. This parameter is optional. -the following keys are recognized: - -=over 4 - -=item cwd - -A string specifying the current directory of the new process. - -By default, the process shares the parent's current directory, C<.>. - -=item new_console - -A boolean; if true, the process is started in a new console window. - -By default, the process shares the parent's console. This has no effect on GUI -programs which do not interact with the console. - -=item window_attr - -Either C<minimized>, which displays the new window minimized; C<maximimzed>, -which shows the new window maximized; or C<hidden>, which does not display the -new window. - -By default, the window is displayed using its application's defaults. - -=item new_group - -A boolean; if true, the process is the root of a new process group. This -process group includes all descendents of the child. - -By default, the process is in the parent's process group (but in a new job). - -=item no_window - -A boolean; if true, the process is run without a console window. This flag is -only valid when starting a console application, otherwise it is ignored. If you -are launching a GUI application, use the C<window_attr> tag instead. - -By default, the process shares its parent's console. - -=item stdin - -An open input filehandle, or the name of an existing file. The resulting -filehandle will be used for the child's standard input handle. - -By default, the child process shares the parent's standard input. - -=item stdout - -An open output filehandle or filename (will be opened for append). The -resulting filehandle will be used for the child's standard output handle. - -By default, the child process shares the parent's standard output. - -=item stderr - -An open output filehandle or filename (will be opened for append). The -resulting filehandle will be used for the child's standard error handle. - -By default, the child process shares the parent's standard error. - -=back - -Unrecognized keys are ignored. - -=back - -=item 3 - -run() - - run($timeout, $which); - -Provides a simple way to run the programs with a time limit. The -$timeout is in seconds with millisecond accuracy. This call blocks for -up to $timeout seconds, or until the processes finish. - -The $which parameter specifies whether to wait for I<all> processes to -complete within the $timeout, or whether to wait for I<any> process to -complete. You should set this to a boolean, where a true value means to -wait for I<all> the processes to complete, and a false value to wait -for I<any>. If you do not specify $which, it defaults to true (C<all>). - -Returns a boolean indicating whether the processes exited by themselves, -or whether the time expired. A true return value means the processes -exited normally; a false value means one or more processes was killed -will $timeout. - -You can get extended information on process exit codes using the -status() method. - -For example, this is how to build two perl modules at the same time, -with a 5 minute timeout: - - use Win32::Job; - $job = Win32::Job->new; - $job->spawn("cmd", q{cmd /C "cd Mod1 && nmake"}); - $job->spawn("cmd", q{cmd /C "cd Mod2 && nmake"}); - $ok = $job->run(5 * 60); - print "Mod1 and Mod2 built ok!\n" if $ok; - -=item 4 - -watch() - - watch(\&handler, $interval, $which); - - handler($job); - -Provides more fine-grained control over how to stop the programs. You specify -a callback and an interval in seconds, and Win32::Job will call the "watchdog" -function at this interval, either until the processes finish or your watchdog -tells Win32::Job to stop. You must return a value indicating whether to stop: a -true value means to terminate the processes immediately. - -The $which parameter has the same meaning as run()'s. - -Returns a boolean with the same meaning as run()'s. - -The handler may do anything it wants. One useful application of the watch() -method is to check the filesize of the output file, and terminate the Job if -the file becomes larger than a certain limit: - - use Win32::Job; - $job = Win32::Job->new; - $job->spawn("cmd", q{cmd /C "cd Mod1 && nmake"}, { - stdin => 'NUL', # the NUL device - stdout => 'stdout.log', - stderr => 'stdout.log', - }); - $ok = $job->watch(sub { - return 1 if -s "stdout.log" > 1_000_000; - }, 1); - print "Mod1 built ok!\n" if $ok; - -=item 5 - -status() - - status() - -Returns a hash containing information about the processes in the job. -Only returns valid information I<after> calling either run() or watch(); -returns an empty hash if you have not yet called them. May be called from a -watch() callback, in which case the C<exitcode> field should be ignored. - -The keys of the hash are the process IDs; the values are a subhash -containing the following keys: - -=over 4 - -=item exitcode - -The exit code returned by the process. If the process was killed because -of a timeout, the value is 293. - -=item time - -The time accumulated by the process. This is yet another subhash containing -the subkeys (i) C<user>, the amount of time the process spent in user -space; (ii) C<kernel>, the amount of time the process spent in kernel space; -and (iii) C<elapsed>, the total time the process was running. - -=back - -=item 6 - -kill() - - kill(); - -Kills all processes and subprocesses in the Job. Has no return value. -Sets the exit code to all processes killed to 293, which you can check -for in the status() return value. - -=back - -=head1 SEE ALSO - -For more information about jobs, see Microsoft's online help at - - http://msdn.microsoft.com/ - -For other modules which do similar things (but not as well), see: - -=over 4 - -=item 1 - -Win32::Process - -Low-level access to creating processes in Win32. See L<Win32::Process>. - -=item 2 - -Win32::Console - -Low-level access to consoles in Win32. See L<Win32::Console>. - -=item 3 - -Win32::ProcFarm - -Manage pools of threads to perform CPU-intensive tasks on Windows. See -L<Win32::ProcFarm>. - -=back - -=head1 AUTHOR - -ActiveState (support@ActiveState.com) - -=head1 COPYRIGHT - -Copyright (c) 2002, ActiveState Corporation. All Rights Reserved. - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Mutex.pm b/Master/tlpkg/tlperl.old/lib/Win32/Mutex.pm deleted file mode 100644 index 801c2d35cda..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Mutex.pm +++ /dev/null @@ -1,125 +0,0 @@ -#--------------------------------------------------------------------- -package Win32::Mutex; -# -# Copyright 1998 Christopher J. Madsen -# -# Created: 3 Feb 1998 from the ActiveWare version -# (c) 1995 Microsoft Corporation. All rights reserved. -# Developed by ActiveWare Internet Corp., http://www.ActiveWare.com -# -# Other modifications (c) 1997 by Gurusamy Sarathy <gsar@activestate.com> -# -# Author: Christopher J. Madsen <cjm@pobox.com> -# Version: 1.00 (6-Feb-1998) -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the -# GNU General Public License or the Artistic License for more details. -# -# Use Win32 mutex objects for synchronization -#--------------------------------------------------------------------- - -$VERSION = '1.02'; - -use Win32::IPC 1.00 '/./'; # Import everything -require Exporter; -require DynaLoader; - -@ISA = qw(Exporter DynaLoader Win32::IPC); -@EXPORT_OK = qw( - wait_all wait_any -); - -bootstrap Win32::Mutex; - -sub Create { $_[0] = Win32::Mutex->new(@_[1..2]) } -sub Open { $_[0] = Win32::Mutex->open($_[1]) } -sub Release { &release } - -1; -__END__ - -=head1 NAME - -Win32::Mutex - Use Win32 mutex objects from Perl - -=head1 SYNOPSIS - - require Win32::Mutex; - - $mutex = Win32::Mutex->new($initial,$name); - $mutex->wait; - -=head1 DESCRIPTION - -This module allows access to the Win32 mutex objects. The C<wait> -method and C<wait_all> & C<wait_any> functions are inherited from the -L<"Win32::IPC"> module. - -=head2 Methods - -=over 4 - -=item $mutex = Win32::Mutex->new([$initial, [$name]]) - -Constructor for a new mutex object. If C<$initial> is true, requests -immediate ownership of the mutex (default false). If C<$name> is -omitted, creates an unnamed mutex object. - -If C<$name> signifies an existing mutex object, then C<$initial> is -ignored and the object is opened. If this happens, C<$^E> will be set -to 183 (ERROR_ALREADY_EXISTS). - -=item $mutex = Win32::Mutex->open($name) - -Constructor for opening an existing mutex object. - -=item $mutex->release - -Release ownership of a C<$mutex>. You should have obtained ownership -of the mutex through C<new> or one of the wait functions. Returns -true if successful. - -=item $mutex->wait([$timeout]) - -Wait for ownership of C<$mutex>. See L<"Win32::IPC">. - -=back - -=head2 Deprecated Functions and Methods - -B<Win32::Mutex> still supports the ActiveWare syntax, but its use is -deprecated. - -=over 4 - -=item Create($MutObj,$Initial,$Name) - -Use C<$MutObj = Win32::Mutex-E<gt>new($Initial,$Name)> instead. - -=item Open($MutObj,$Name) - -Use C<$MutObj = Win32::Mutex-E<gt>open($Name)> instead. - -=item $MutObj->Release() - -Use C<$MutObj-E<gt>release> instead. - -=back - -=head1 AUTHOR - -Christopher J. Madsen E<lt>F<cjm@pobox.com>E<gt> - -Loosely based on the original module by ActiveWare Internet Corp., -F<http://www.ActiveWare.com> - -=cut - -# Local Variables: -# tmtrack-file-task: "Win32::Mutex" -# End: diff --git a/Master/tlpkg/tlperl.old/lib/Win32/NetAdmin.pm b/Master/tlpkg/tlperl.old/lib/Win32/NetAdmin.pm deleted file mode 100644 index ace31a619e4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/NetAdmin.pm +++ /dev/null @@ -1,419 +0,0 @@ -package Win32::NetAdmin; - -# -#NetAdmin.pm -#Written by Douglas_Lankshear@ActiveWare.com -# - -$VERSION = '0.08'; - -require Exporter; -require DynaLoader; - -require Win32 unless defined &Win32::IsWinNT; -die "The Win32::NetAdmin module works only on Windows NT" unless Win32::IsWinNT(); - -@ISA= 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( - DOMAIN_ALIAS_RID_ACCOUNT_OPS - DOMAIN_ALIAS_RID_ADMINS - DOMAIN_ALIAS_RID_BACKUP_OPS - DOMAIN_ALIAS_RID_GUESTS - DOMAIN_ALIAS_RID_POWER_USERS - DOMAIN_ALIAS_RID_PRINT_OPS - DOMAIN_ALIAS_RID_REPLICATOR - DOMAIN_ALIAS_RID_SYSTEM_OPS - DOMAIN_ALIAS_RID_USERS - DOMAIN_GROUP_RID_ADMINS - DOMAIN_GROUP_RID_GUESTS - DOMAIN_GROUP_RID_USERS - DOMAIN_USER_RID_ADMIN - DOMAIN_USER_RID_GUEST - FILTER_TEMP_DUPLICATE_ACCOUNT - FILTER_NORMAL_ACCOUNT - FILTER_INTERDOMAIN_TRUST_ACCOUNT - FILTER_WORKSTATION_TRUST_ACCOUNT - FILTER_SERVER_TRUST_ACCOUNT - SV_TYPE_WORKSTATION - SV_TYPE_SERVER - SV_TYPE_SQLSERVER - SV_TYPE_DOMAIN_CTRL - SV_TYPE_DOMAIN_BAKCTRL - SV_TYPE_TIMESOURCE - SV_TYPE_AFP - SV_TYPE_NOVELL - SV_TYPE_DOMAIN_MEMBER - SV_TYPE_PRINT - SV_TYPE_PRINTQ_SERVER - SV_TYPE_DIALIN - SV_TYPE_DIALIN_SERVER - SV_TYPE_XENIX_SERVER - SV_TYPE_NT - SV_TYPE_WFW - SV_TYPE_POTENTIAL_BROWSER - SV_TYPE_BACKUP_BROWSER - SV_TYPE_MASTER_BROWSER - SV_TYPE_DOMAIN_MASTER - SV_TYPE_DOMAIN_ENUM - SV_TYPE_SERVER_UNIX - SV_TYPE_SERVER_MFPN - SV_TYPE_SERVER_NT - SV_TYPE_SERVER_OSF - SV_TYPE_SERVER_VMS - SV_TYPE_WINDOWS - SV_TYPE_DFS - SV_TYPE_ALTERNATE_XPORT - SV_TYPE_LOCAL_LIST_ONLY - SV_TYPE_ALL - UF_TEMP_DUPLICATE_ACCOUNT - UF_NORMAL_ACCOUNT - UF_INTERDOMAIN_TRUST_ACCOUNT - UF_WORKSTATION_TRUST_ACCOUNT - UF_SERVER_TRUST_ACCOUNT - UF_MACHINE_ACCOUNT_MASK - UF_ACCOUNT_TYPE_MASK - UF_DONT_EXPIRE_PASSWD - UF_SETTABLE_BITS - UF_SCRIPT - UF_ACCOUNTDISABLE - UF_HOMEDIR_REQUIRED - UF_LOCKOUT - UF_PASSWD_NOTREQD - UF_PASSWD_CANT_CHANGE - USE_FORCE - USE_LOTS_OF_FORCE - USE_NOFORCE - USER_PRIV_MASK - USER_PRIV_GUEST - USER_PRIV_USER - USER_PRIV_ADMIN -); - -@EXPORT_OK = qw( - GetError - GetDomainController - GetAnyDomainController - UserCreate - UserDelete - UserGetAttributes - UserSetAttributes - UserChangePassword - UsersExist - GetUsers - GroupCreate - GroupDelete - GroupGetAttributes - GroupSetAttributes - GroupAddUsers - GroupDeleteUsers - GroupIsMember - GroupGetMembers - LocalGroupCreate - LocalGroupDelete - LocalGroupGetAttributes - LocalGroupSetAttributes - LocalGroupIsMember - LocalGroupGetMembers - LocalGroupGetMembersWithDomain - LocalGroupAddUsers - LocalGroupDeleteUsers - GetServers - GetTransports - LoggedOnUsers - GetAliasFromRID - GetUserGroupFromRID - GetServerDisks -); -$EXPORT_TAGS{ALL}= \@EXPORT_OK; - -=head1 NAME - -Win32::NetAdmin - manage network groups and users in perl - -=head1 SYNOPSIS - - use Win32::NetAdmin; - -=head1 DESCRIPTION - -This module offers control over the administration of groups and users over a -network. - -=head1 FUNCTIONS - -=head2 NOTE - -All of the functions return false if they fail, unless otherwise noted. -When a function fails call Win32::NetAdmin::GetError() rather than -GetLastError() or $^E to retrieve the error code. - -C<server> is optional for all the calls below. If not given the local machine is -assumed. - -=over 10 - -=item GetError() - -Returns the error code of the last call to this module. - -=item GetDomainController(server, domain, returnedName) - -Returns the name of the domain controller for server. - -=item GetAnyDomainController(server, domain, returnedName) - -Returns the name of any domain controller for a domain that is directly trusted -by the server. - -=item UserCreate(server, userName, password, passwordAge, privilege, homeDir, comment, flags, scriptPath) - -Creates a user on server with password, passwordAge, privilege, homeDir, comment, -flags, and scriptPath. - -=item UserDelete(server, user) - -Deletes a user from server. - -=item UserGetAttributes(server, userName, password, passwordAge, privilege, homeDir, comment, flags, scriptPath) - -Gets password, passwordAge, privilege, homeDir, comment, flags, and scriptPath -for user. - -=item UserSetAttributes(server, userName, password, passwordAge, privilege, homeDir, comment, flags, scriptPath) - -Sets password, passwordAge, privilege, homeDir, comment, flags, and scriptPath -for user. - -=item UserChangePassword(domainname, username, oldpassword, newpassword) - -Changes a users password. Can be run under any account. - -=item UsersExist(server, userName) - -Checks if a user exists. - -=item GetUsers(server, filter, userRef) - -Fills userRef with user names if it is an array reference and with the user -names and the full names if it is a hash reference. - -=item GroupCreate(server, group, comment) - -Creates a group. - -=item GroupDelete(server, group) - -Deletes a group. - -=item GroupGetAttributes(server, groupName, comment) - -Gets the comment. - -=item GroupSetAttributes(server, groupName, comment) - -Sets the comment. - -=item GroupAddUsers(server, groupName, users) - -Adds a user to a group. - -=item GroupDeleteUsers(server, groupName, users) - -Deletes a users from a group. - -=item GroupIsMember(server, groupName, user) - -Returns TRUE if user is a member of groupName. - -=item GroupGetMembers(server, groupName, userArrayRef) - -Fills userArrayRef with the members of groupName. - -=item LocalGroupCreate(server, group, comment) - -Creates a local group. - -=item LocalGroupDelete(server, group) - -Deletes a local group. - -=item LocalGroupGetAttributes(server, groupName, comment) - -Gets the comment. - -=item LocalGroupSetAttributes(server, groupName, comment) - -Sets the comment. - -=item LocalGroupIsMember(server, groupName, user) - -Returns TRUE if user is a member of groupName. - -=item LocalGroupGetMembers(server, groupName, userArrayRef) - -Fills userArrayRef with the members of groupName. - -=item LocalGroupGetMembersWithDomain(server, groupName, userRef) - -This function is similar LocalGroupGetMembers but accepts an array or -a hash reference. Unlike LocalGroupGetMembers it returns each user name -as C<DOMAIN\USERNAME>. If a hash reference is given, the function -returns to each user or group name the type (group, user, alias etc.). -The possible types are as follows: - - $SidTypeUser = 1; - $SidTypeGroup = 2; - $SidTypeDomain = 3; - $SidTypeAlias = 4; - $SidTypeWellKnownGroup = 5; - $SidTypeDeletedAccount = 6; - $SidTypeInvalid = 7; - $SidTypeUnknown = 8; - -=item LocalGroupAddUsers(server, groupName, users) - -Adds a user to a group. - -=item LocalGroupDeleteUsers(server, groupName, users) - -Deletes a users from a group. - -=item GetServers(server, domain, flags, serverRef) - -Gets an array of server names or an hash with the server names and the -comments as seen in the Network Neighborhood or the server manager. -For flags, see SV_TYPE_* constants. - -=item GetTransports(server, transportRef) - -Enumerates the network transports of a computer. If transportRef is an array -reference, it is filled with the transport names. If transportRef is a hash -reference then a hash of hashes is filled with the data for the transports. - -=item LoggedOnUsers(server, userRef) - -Gets an array or hash with the users logged on at the specified computer. If -userRef is a hash reference, the value is a semikolon separated string of -username, logon domain and logon server. - -=item GetAliasFromRID(server, RID, returnedName) - -=item GetUserGroupFromRID(server, RID, returnedName) - -Retrieves the name of an alias (i.e local group) or a user group for a RID -from the specified server. These functions can be used for example to get the -account name for the administrator account if it is renamed or localized. - -Possible values for C<RID>: - - DOMAIN_ALIAS_RID_ACCOUNT_OPS - DOMAIN_ALIAS_RID_ADMINS - DOMAIN_ALIAS_RID_BACKUP_OPS - DOMAIN_ALIAS_RID_GUESTS - DOMAIN_ALIAS_RID_POWER_USERS - DOMAIN_ALIAS_RID_PRINT_OPS - DOMAIN_ALIAS_RID_REPLICATOR - DOMAIN_ALIAS_RID_SYSTEM_OPS - DOMAIN_ALIAS_RID_USERS - DOMAIN_GROUP_RID_ADMINS - DOMAIN_GROUP_RID_GUESTS - DOMAIN_GROUP_RID_USERS - DOMAIN_USER_RID_ADMIN - DOMAIN_USER_RID_GUEST - -=item GetServerDisks(server, arrayRef) - -Returns an array with the disk drives of the specified server. The array -contains two-character strings (drive letter followed by a colon). - -=back - -=head1 EXAMPLE - - # Simple script using Win32::NetAdmin to set the login script for - # all members of the NT group "Domain Users". Only works if you - # run it on the PDC. (From Robert Spier <rspier@seas.upenn.edu>) - # - # FILTER_TEMP_DUPLICATE_ACCOUNTS - # Enumerates local user account data on a domain controller. - # - # FILTER_NORMAL_ACCOUNT - # Enumerates global user account data on a computer. - # - # FILTER_INTERDOMAIN_TRUST_ACCOUNT - # Enumerates domain trust account data on a domain controller. - # - # FILTER_WORKSTATION_TRUST_ACCOUNT - # Enumerates workstation or member server account data on a domain - # controller. - # - # FILTER_SERVER_TRUST_ACCOUNT - # Enumerates domain controller account data on a domain controller. - - - use Win32::NetAdmin qw(GetUsers GroupIsMember - UserGetAttributes UserSetAttributes); - - my %hash; - GetUsers("", FILTER_NORMAL_ACCOUNT , \%hash) - or die "GetUsers() failed: $^E"; - - foreach (keys %hash) { - my ($password, $passwordAge, $privilege, - $homeDir, $comment, $flags, $scriptPath); - if (GroupIsMember("", "Domain Users", $_)) { - print "Updating $_ ($hash{$_})\n"; - UserGetAttributes("", $_, $password, $passwordAge, $privilege, - $homeDir, $comment, $flags, $scriptPath) - or die "UserGetAttributes() failed: $^E"; - $scriptPath = "dnx_login.bat"; # this is the new login script - UserSetAttributes("", $_, $password, $passwordAge, $privilege, - $homeDir, $comment, $flags, $scriptPath) - or die "UserSetAttributes() failed: $^E"; - } - } - -=cut - -sub AUTOLOAD { - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - #reset $! to zero to reset any current errors. - local $! = 0; - my $val = constant($constname); - if ($! != 0) { - if ($! =~ /Invalid/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD; - } - else { - ($pack,$file,$line) = caller; - die "Your vendor has not defined Win32::NetAdmin macro $constname, used in $file at line $line."; - } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - -$SidTypeUser = 1; -$SidTypeGroup = 2; -$SidTypeDomain = 3; -$SidTypeAlias = 4; -$SidTypeWellKnownGroup = 5; -$SidTypeDeletedAccount = 6; -$SidTypeInvalid = 7; -$SidTypeUnknown = 8; - -sub GetError() { - our $__lastError; - $__lastError; -} - -bootstrap Win32::NetAdmin; - -1; -__END__ - diff --git a/Master/tlpkg/tlperl.old/lib/Win32/NetResource.pm b/Master/tlpkg/tlperl.old/lib/Win32/NetResource.pm deleted file mode 100644 index 04ac87acabd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/NetResource.pm +++ /dev/null @@ -1,456 +0,0 @@ -package Win32::NetResource; - -require Exporter; -require DynaLoader; -require AutoLoader; - -$VERSION = '0.053'; - -@ISA = 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( - RESOURCEDISPLAYTYPE_DOMAIN - RESOURCEDISPLAYTYPE_FILE - RESOURCEDISPLAYTYPE_GENERIC - RESOURCEDISPLAYTYPE_GROUP - RESOURCEDISPLAYTYPE_SERVER - RESOURCEDISPLAYTYPE_SHARE - RESOURCEDISPLAYTYPE_TREE - RESOURCETYPE_ANY - RESOURCETYPE_DISK - RESOURCETYPE_PRINT - RESOURCETYPE_UNKNOWN - RESOURCEUSAGE_CONNECTABLE - RESOURCEUSAGE_CONTAINER - RESOURCEUSAGE_RESERVED - RESOURCE_CONNECTED - RESOURCE_GLOBALNET - RESOURCE_REMEMBERED - STYPE_DISKTREE - STYPE_PRINTQ - STYPE_DEVICE - STYPE_IPC - STYPE_SPECIAL - SHARE_NETNAME_PARMNUM - SHARE_TYPE_PARMNUM - SHARE_REMARK_PARMNUM - SHARE_PERMISSIONS_PARMNUM - SHARE_MAX_USES_PARMNUM - SHARE_CURRENT_USES_PARMNUM - SHARE_PATH_PARMNUM - SHARE_PASSWD_PARMNUM - SHARE_FILE_SD_PARMNUM -); - -@EXPORT_OK = qw( - GetSharedResources - AddConnection - CancelConnection - WNetGetLastError - GetError - GetUNCName - NetShareAdd - NetShareCheck - NetShareDel - NetShareGetInfo - NetShareSetInfo -); - -=head1 NAME - -Win32::NetResource - manage network resources in perl - -=head1 SYNOPSIS - - use Win32::NetResource; - - $ShareInfo = { - 'path' => "C:\\MyShareDir", - 'netname' => "MyShare", - 'remark' => "It is good to share", - 'passwd' => "", - 'current-users' =>0, - 'permissions' => 0, - 'maxusers' => -1, - 'type' => 0, - }; - - Win32::NetResource::NetShareAdd( $ShareInfo,$parm ) - or die "unable to add share"; - - -=head1 DESCRIPTION - -This module offers control over the network resources of Win32.Disks, -printers etc can be shared over a network. - -=head1 DATA TYPES - -There are two main data types required to control network resources. -In Perl these are represented by hash types. - -=over 4 - -=item %NETRESOURCE - - KEY VALUE - - 'Scope' => Scope of an Enumeration - RESOURCE_CONNECTED, - RESOURCE_GLOBALNET, - RESOURCE_REMEMBERED. - - 'Type' => The type of resource to Enum - RESOURCETYPE_ANY All resources - RESOURCETYPE_DISK Disk resources - RESOURCETYPE_PRINT Print resources - - 'DisplayType' => The way the resource should be displayed. - RESOURCEDISPLAYTYPE_DOMAIN - The object should be displayed as a domain. - RESOURCEDISPLAYTYPE_GENERIC - The method used to display the object does not matter. - RESOURCEDISPLAYTYPE_SERVER - The object should be displayed as a server. - RESOURCEDISPLAYTYPE_SHARE - The object should be displayed as a sharepoint. - - 'Usage' => Specifies the Resources usage: - RESOURCEUSAGE_CONNECTABLE - RESOURCEUSAGE_CONTAINER. - - 'LocalName' => Name of the local device the resource is - connected to. - - 'RemoteName' => The network name of the resource. - - 'Comment' => A string comment. - - 'Provider' => Name of the provider of the resource. - -=back - -=item %SHARE_INFO - -This hash represents the SHARE_INFO_502 struct. - -=over 4 - - KEY VALUE - 'netname' => Name of the share. - 'type' => type of share. - 'remark' => A string comment. - 'permissions' => Permissions value - 'maxusers' => the max # of users. - 'current-users' => the current # of users. - 'path' => The path of the share. - 'passwd' => A password if one is req'd - -=back - -=head1 FUNCTIONS - -=head2 NOTE - -All of the functions return false if they fail. - -=over 4 - -=item GetSharedResources(\@Resources,dwType,\%NetResource = NULL) - -Creates a list in @Resources of %NETRESOURCE hash references. - -The return value indicates whether there was an error in accessing -any of the shared resources. All the shared resources that were -encountered (until the point of an error, if any) are pushed into -@Resources as references to %NETRESOURCE hashes. See example -below. The \%NetResource argument is optional. If it is not supplied, -the root (that is, the topmost container) of the network is assumed, -and all network resources available from the toplevel container will -be enumerated. - -=item AddConnection(\%NETRESOURCE,$Password,$UserName,$Connection) - -Makes a connection to a network resource specified by %NETRESOURCE - -=item CancelConnection($Name,$Connection,$Force) - -Cancels a connection to a network resource connected to local device -$name.$Connection is either 1 - persistent connection or 0, non-persistent. - -=item WNetGetLastError($ErrorCode,$Description,$Name) - -Gets the Extended Network Error. - -=item GetError( $ErrorCode ) - -Gets the last Error for a Win32::NetResource call. - -=item GetUNCName( $UNCName, $LocalPath ); - -Returns the UNC name of the disk share connected to $LocalPath in $UNCName. -$LocalPath should be a drive based path. e.g. "C:\\share\\subdir" - -=back - -=head2 NOTE - -$servername is optional for all the calls below. (if not given the -local machine is assumed.) - -=over 4 - -=item NetShareAdd(\%SHARE,$parm_err,$servername = NULL ) - -Add a share for sharing. - -=item NetShareCheck($device,$type,$servername = NULL ) - -Check if a directory or a device is available for connection from the -network through a share. This includes all directories that are -reachable through a shared directory or device, meaning that if C:\foo -is shared, C:\foo\bar is also available for sharing. This means that -this function is pretty useless, given that by default every disk -volume has an administrative share such as "C$" associated with its -root directory. - -$device must be a drive name, directory, or a device. For example, -"C:", "C:\dir", "LPT1", "D$", "IPC$" are all valid as the $device -argument. $type is an output argument that will be set to one of -the following constants that describe the type of share: - - STYPE_DISKTREE Disk drive - STYPE_PRINTQ Print queue - STYPE_DEVICE Communication device - STYPE_IPC Interprocess communication (IPC) - STYPE_SPECIAL Special share reserved for interprocess - communication (IPC$) or remote administration - of the server (ADMIN$). Can also refer to - administrative shares such as C$, D$, etc. - -=item NetShareDel( $netname, $servername = NULL ) - -Remove a share from a machines list of shares. - -=item NetShareGetInfo( $netname, \%SHARE,$servername=NULL ) - -Get the %SHARE_INFO information about the share $netname on the -server $servername. - -=item NetShareSetInfo( $netname,\%SHARE,$parm_err,$servername=NULL) - -Set the information for share $netname. - -=back - -=head1 EXAMPLE - -=over 4 - -=item Enumerating all resources on the network - - # - # This example displays all the share points in the entire - # visible part of the network. - # - - use strict; - use Win32::NetResource qw(:DEFAULT GetSharedResources GetError); - my $resources = []; - unless(GetSharedResources($resources, RESOURCETYPE_ANY)) { - my $err; - GetError($err); - warn Win32::FormatMessage($err); - } - - foreach my $href (@$resources) { - next if ($$href{DisplayType} != RESOURCEDISPLAYTYPE_SHARE); - print "-----\n"; - foreach( keys %$href){ - print "$_: $href->{$_}\n"; - } - } - -=item Enumerating all resources on a particular host - - # - # This example displays all the share points exported by the local - # host. - # - - use strict; - use Win32::NetResource qw(:DEFAULT GetSharedResources GetError); - if (GetSharedResources(my $resources, RESOURCETYPE_ANY, - { RemoteName => "\\\\" . Win32::NodeName() })) - { - foreach my $href (@$resources) { - print "-----\n"; - foreach(keys %$href) { print "$_: $href->{$_}\n"; } - } - } - -=back - -=head1 AUTHOR - -Jesse Dougherty for Hip Communications. - -Additional general cleanups and bug fixes by Gurusamy Sarathy <gsar@activestate.com>. - -=cut - -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/.*:://; - #reset $! to zero to reset any current errors. - local $! = 0; - my $val = constant($constname, @_ ? $_[0] : 0); - if ($! != 0) { - if ($! =~ /Invalid/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD; - } - else { - ($pack,$file,$line) = caller; - die "Your vendor has not defined Win32::NetResource macro $constname, used at $file line $line. -"; - } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - -sub AddConnection -{ - my $h = $_[0]; - die "AddConnection: HASH reference required" unless ref($h) eq "HASH"; - - # - # The last four items *must* not be deallocated until the - # _AddConnection() completes (since the packed structure is - # pointing into these values. - # - my $netres = pack( 'i4 p4', $h->{Scope}, - $h->{Type}, - $h->{DisplayType}, - $h->{Usage}, - $h->{LocalName}, - $h->{RemoteName}, - $h->{Comment}, - $h->{Provider}); - _AddConnection($netres,$_[1],$_[2],$_[3]); -} - -#use Data::Dumper; - -sub GetSharedResources -{ - die "GetSharedResources: ARRAY reference required" - if defined $_[0] and ref($_[0]) ne "ARRAY"; - - my $aref = []; - - # Get the shared resources. - - my $ret; - - if (@_ > 2 and $_[2]) { - my $netres = pack('i4 p4', @{$_[2]}{qw(Scope - Type - DisplayType - Usage - LocalName - RemoteName - Comment - Provider)}); - $ret = _GetSharedResources( $aref , $_[1], $netres ); - } - else { - $ret = _GetSharedResources( $aref , $_[1] ); - } - - # build the array of hashes in $_[0] -# print Dumper($aref); - foreach ( @$aref ) { - my %hash; - @hash{'Scope', - 'Type', - 'DisplayType', - 'Usage', - 'LocalName', - 'RemoteName', - 'Comment', - 'Provider'} = split /\001/, $_; - push @{$_[0]}, \%hash; - } - - $ret; -} - -sub NetShareAdd -{ - my $shareinfo = _hash2SHARE( $_[0] ); - _NetShareAdd($shareinfo,$_[1], $_[2] || ""); -} - -sub NetShareGetInfo -{ - my ($netinfo,$val); - $val = _NetShareGetInfo( $_[0],$netinfo,$_[2] || ""); - %{$_[1]} = %{_SHARE2hash( $netinfo )}; - $val; -} - -sub NetShareSetInfo -{ - my $shareinfo = _hash2SHARE( $_[1] ); - _NetShareSetInfo( $_[0],$shareinfo,$_[2],$_[3] || ""); -} - - -# These are private functions to work with the ShareInfo structure. -# please note that the implementation of these calls requires the -# SHARE_INFO_502 level of information. - -sub _SHARE2hash -{ - my %hash = (); - @hash{'type', - 'permissions', - 'maxusers', - 'current-users', - 'remark', - 'netname', - 'path', - 'passwd'} = unpack('i4 A257 A81 A257 A257',$_[0]); - - return \%hash; -} - -sub _hash2SHARE -{ - my $h = $_[0]; - die "Argument must be a HASH reference" unless ref($h) eq "HASH"; - - return pack 'i4 a257 a81 a257 a257', - @$h{'type', - 'permissions', - 'maxusers', - 'current-users', - 'remark', - 'netname', - 'path', - 'passwd'}; -} - - -bootstrap Win32::NetResource; - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Win32/ODBC.pm b/Master/tlpkg/tlperl.old/lib/Win32/ODBC.pm deleted file mode 100644 index a51616388ea..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/ODBC.pm +++ /dev/null @@ -1,1493 +0,0 @@ -package Win32::ODBC; - -$VERSION = '0.032'; - -# Win32::ODBC.pm -# +==========================================================+ -# | | -# | ODBC.PM package | -# | --------------- | -# | | -# | Copyright (c) 1996, 1997 Dave Roth. All rights reserved. | -# | This program is free software; you can redistribute | -# | it and/or modify it under the same terms as Perl itself. | -# | | -# +==========================================================+ -# -# -# based on original code by Dan DeMaggio (dmag@umich.edu) -# -# Use under GNU General Public License or Larry Wall's "Artistic License" -# -# Check the README.TXT file that comes with this package for details about -# it's history. -# - -require Exporter; -require DynaLoader; - -$ODBCPackage = "Win32::ODBC"; -$ODBCPackage::Version = 970208; -$::ODBC = $ODBCPackage; -$CacheConnection = 0; - - # Reserve ODBC in the main namespace for US! -*ODBC::=\%Win32::ODBC::; - - -@ISA= 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( - ODBC_ADD_DSN - ODBC_REMOVE_DSN - ODBC_CONFIG_DSN - ODBC_ADD_SYS_DSN - ODBC_REMOVE_SYS_DSN - ODBC_CONFIG_SYS_DSN - - SQL_DONT_CLOSE - SQL_DROP - SQL_CLOSE - SQL_UNBIND - SQL_RESET_PARAMS - - SQL_FETCH_NEXT - SQL_FETCH_FIRST - SQL_FETCH_LAST - SQL_FETCH_PRIOR - SQL_FETCH_ABSOLUTE - SQL_FETCH_RELATIVE - SQL_FETCH_BOOKMARK - - SQL_COLUMN_COUNT - SQL_COLUMN_NAME - SQL_COLUMN_TYPE - SQL_COLUMN_LENGTH - SQL_COLUMN_PRECISION - SQL_COLUMN_SCALE - SQL_COLUMN_DISPLAY_SIZE - SQL_COLUMN_NULLABLE - SQL_COLUMN_UNSIGNED - SQL_COLUMN_MONEY - SQL_COLUMN_UPDATABLE - SQL_COLUMN_AUTO_INCREMENT - SQL_COLUMN_CASE_SENSITIVE - SQL_COLUMN_SEARCHABLE - SQL_COLUMN_TYPE_NAME - SQL_COLUMN_TABLE_NAME - SQL_COLUMN_OWNER_NAME - SQL_COLUMN_QUALIFIER_NAME - SQL_COLUMN_LABEL - SQL_COLATT_OPT_MAX - SQL_COLUMN_DRIVER_START - SQL_COLATT_OPT_MIN - SQL_ATTR_READONLY - SQL_ATTR_WRITE - SQL_ATTR_READWRITE_UNKNOWN - SQL_UNSEARCHABLE - SQL_LIKE_ONLY - SQL_ALL_EXCEPT_LIKE - SQL_SEARCHABLE - ); - #The above are included for backward compatibility - - -sub new -{ - my ($n, $self); - my ($type) = shift; - my ($DSN) = shift; - my (@Results) = @_; - - if (ref $DSN){ - @Results = ODBCClone($DSN->{'connection'}); - }else{ - @Results = ODBCConnect($DSN, @Results); - } - @Results = processError(-1, @Results); - if (! scalar(@Results)){ - return undef; - } - $self = bless {}; - $self->{'connection'} = $Results[0]; - $ErrConn = $Results[0]; - $ErrText = $Results[1]; - $ErrNum = 0; - $self->{'DSN'} = $DSN; - $self; -} - -#### -# Close this ODBC session (or all sessions) -#### -sub Close -{ - my ($self, $Result) = shift; - $Result = DESTROY($self); - $self->{'connection'} = -1; - return $Result; -} - -#### -# Auto-Kill an instance of this module -#### -sub DESTROY -{ - my ($self) = shift; - my (@Results) = (0); - if($self->{'connection'} > -1){ - @Results = ODBCDisconnect($self->{'connection'}); - @Results = processError($self, @Results); - if ($Results[0]){ - undef $self->{'DSN'}; - undef @{$self->{'fnames'}}; - undef %{$self->{'field'}}; - undef %{$self->{'connection'}}; - } - } - return $Results[0]; -} - - -sub sql{ - return (Sql(@_)); -} - -#### -# Submit an SQL Execute statement for processing -#### -sub Sql{ - my ($self, $Sql, @Results) = @_; - @Results = ODBCExecute($self->{'connection'}, $Sql); - return updateResults($self, @Results); -} - -#### -# Retrieve data from a particular field -#### -sub Data{ - - # Change by JOC 06-APR-96 - # Altered by Dave Roth <dave@roth.net> 96.05.07 - my($self) = shift; - my(@Fields) = @_; - my(@Results, $Results, $Field); - - if ($self->{'Dirty'}){ - GetData($self); - $self->{'Dirty'} = 0; - } - @Fields = @{$self->{'fnames'}} if (! scalar(@Fields)); - foreach $Field (@Fields) { - if (wantarray) { - push(@Results, data($self, $Field)); - } else { - $Results .= data($self, $Field); - } - } - return wantarray ? @Results : $Results; -} - -sub DataHash{ - my($self, @Results) = @_; - my(%Results, $Element); - - if ($self->{'Dirty'}){ - GetData($self); - $self->{'Dirty'} = 0; - } - @Results = @{$self->{'fnames'}} if (! scalar(@Results)); - foreach $Element (@Results) { - $Results{$Element} = data($self, $Element); - } - - return %Results; -} - -#### -# Retrieve data from the data buffer -#### -sub data -{ $_[0]->{'data'}->{$_[1]}; } - - -sub fetchrow{ - return (FetchRow(@_)); -} -#### -# Put a row from an ODBC data set into data buffer -#### -sub FetchRow{ - my ($self, @Results) = @_; - my ($item, $num, $sqlcode); - # Added by JOC 06-APR-96 - # $num = 0; - $num = 0; - undef $self->{'data'}; - - - @Results = ODBCFetch($self->{'connection'}, @Results); - if (! (@Results = processError($self, @Results))){ - #### - # There should be an innocuous error "No records remain" - # This indicates no more records in the dataset - #### - return undef; - } - # Set the Dirty bit so we will go and extract data via the - # ODBCGetData function. Otherwise use the cache. - $self->{'Dirty'} = 1; - - # Return the array of field Results. - return @Results; -} - -sub GetData{ - my($self) = @_; - my @Results; - my $num = 0; - - @Results = ODBCGetData($self->{'connection'}); - if (!(@Results = processError($self, @Results))){ - return undef; - } - #### - # This is a special case. Do not call processResults - #### - ClearError(); - foreach (@Results){ - s/ +$// if defined $_; # HACK - $self->{'data'}->{ ${$self->{'fnames'}}[$num] } = $_; - $num++; - } - # return is a hack to interface with a assoc array. - return wantarray? (1, 1): 1; -} - -#### -# See if any more ODBC Results Sets -# Added by Brian Dunfordshore <Brian_Dunfordshore@bridge.com> -# 96.07.10 -#### -sub MoreResults{ - my ($self) = @_; - - my(@Results) = ODBCMoreResults($self->{'connection'}); - return (processError($self, @Results))[0]; -} - -#### -# Retrieve the catalog from the current DSN -# NOTE: All Field names are uppercase!!! -#### -sub Catalog{ - my ($self) = shift; - my ($Qualifier, $Owner, $Name, $Type) = @_; - my (@Results) = ODBCTableList($self->{'connection'}, $Qualifier, $Owner, $Name, $Type); - - # If there was an error return 0 else 1 - return (updateResults($self, @Results) != 1); -} - -#### -# Return an array of names from the catalog for the current DSN -# TableList($Qualifier, $Owner, $Name, $Type) -# Return: (array of names of tables) -# NOTE: All Field names are uppercase!!! -#### -sub TableList{ - my ($self) = shift; - my (@Results) = @_; - if (! scalar(@Results)){ - @Results = ("", "", "%", "TABLE"); - } - - if (! Catalog($self, @Results)){ - return undef; - } - undef @Results; - while (FetchRow($self)){ - push(@Results, Data($self, "TABLE_NAME")); - } - return sort(@Results); -} - - -sub fieldnames{ - return (FieldNames(@_)); -} -#### -# Return an array of fieldnames extracted from the current dataset -#### -sub FieldNames { $self = shift; return @{$self->{'fnames'}}; } - - -#### -# Closes this connection. This is used mostly for testing. You should -# probably use Close(). -#### -sub ShutDown{ - my($self) = @_; - print "\nClosing connection $self->{'connection'}..."; - $self->Close(); - print "\nDone\n"; -} - -#### -# Return this connection number -#### -sub Connection{ - my($self) = @_; - return $self->{'connection'}; -} - -#### -# Returns the current connections that are in use. -#### -sub GetConnections{ - return ODBCGetConnections(); -} - -#### -# Set the Max Buffer Size for this connection. This determines just how much -# ram can be allocated when a fetch() is performed that requires a HUGE amount -# of memory. The default max is 10k and the absolute max is 100k. -# This will probably never be used but I put it in because I noticed a fetch() -# of a MEMO field in an Access table was something like 4Gig. Maybe I did -# something wrong, but after checking several times I decided to impliment -# this limit thingie. -#### -sub SetMaxBufSize{ - my($self, $Size) = @_; - my(@Results) = ODBCSetMaxBufSize($self->{'connection'}, $Size); - return (processError($self, @Results))[0]; -} - -#### -# Returns the Max Buffer Size for this connection. See SetMaxBufSize(). -#### -sub GetMaxBufSize{ - my($self) = @_; - my(@Results) = ODBCGetMaxBufSize($self->{'connection'}); - return (processError($self, @Results))[0]; -} - - -#### -# Returns the DSN for this connection as an associative array. -#### -sub GetDSN{ - my($self, $DSN) = @_; - if(! ref($self)){ - $DSN = $self; - $self = 0; - } - if (! $DSN){ - $self = $self->{'connection'}; - } - my(@Results) = ODBCGetDSN($self, $DSN); - return (processError($self, @Results)); -} - -#### -# Returns an associative array of $XXX{'DSN'}=Description -#### -sub DataSources{ - my($self, $DSN) = @_; - if(! ref $self){ - $DSN = $self; - $self = 0; - } - my(@Results) = ODBCDataSources($DSN); - return (processError($self, @Results)); -} - -#### -# Returns an associative array of $XXX{'Driver Name'}=Driver Attributes -#### -sub Drivers{ - my($self) = @_; - if(! ref $self){ - $self = 0; - } - my(@Results) = ODBCDrivers(); - return (processError($self, @Results)); -} - -#### -# Returns the number of Rows that were affected by the previous SQL command. -#### -sub RowCount{ - my($self, $Connection) = @_; - if (! ref($self)){ - $Connection = $self; - $self = 0; - } - if (! $Connection){$Connection = $self->{'connection'};} - my(@Results) = ODBCRowCount($Connection); - return (processError($self, @Results))[0]; -} - -#### -# Returns the Statement Close Type -- how does ODBC Close a statment. -# Types: -# SQL_DROP -# SQL_CLOSE -# SQL_UNBIND -# SQL_RESET_PARAMS -#### -sub GetStmtCloseType{ - my($self, $Connection) = @_; - if (! ref($self)){ - $Connection = $self; - $self = 0; - } - if (! $Connection){$Connection = $self->{'connection'};} - my(@Results) = ODBCGetStmtCloseType($Connection); - return (processError($self, @Results)); -} - -#### -# Sets the Statement Close Type -- how does ODBC Close a statment. -# Types: -# SQL_DROP -# SQL_CLOSE -# SQL_UNBIND -# SQL_RESET_PARAMS -# Returns the newly set value. -#### -sub SetStmtCloseType{ - my($self, $Type, $Connection) = @_; - if (! ref($self)){ - $Connection = $Type; - $Type = $self; - $self = 0; - } - if (! $Connection){$Connection = $self->{'connection'};} - my(@Results) = ODBCSetStmtCloseType($Connection, $Type); - return (processError($self, @Results))[0]; -} - -sub ColAttributes{ - my($self, $Type, @Field) = @_; - my(%Results, @Results, $Results, $Attrib, $Connection, $Temp); - if (! ref($self)){ - $Type = $Field; - $Field = $self; - $self = 0; - } - $Connection = $self->{'connection'}; - if (! scalar(@Field)){ @Field = $self->fieldnames;} - foreach $Temp (@Field){ - @Results = ODBCColAttributes($Connection, $Temp, $Type); - ($Attrib) = processError($self, @Results); - if (wantarray){ - $Results{$Temp} = $Attrib; - }else{ - $Results .= "$Temp"; - } - } - return wantarray? %Results:$Results; -} - -sub GetInfo{ - my($self, $Type) = @_; - my($Connection, @Results); - if(! ref $self){ - $Type = $self; - $self = 0; - $Connection = 0; - }else{ - $Connection = $self->{'connection'}; - } - @Results = ODBCGetInfo($Connection, $Type); - return (processError($self, @Results))[0]; -} - -sub GetConnectOption{ - my($self, $Type) = @_; - my(@Results); - if(! ref $self){ - $Type = $self; - $self = 0; - } - @Results = ODBCGetConnectOption($self->{'connection'}, $Type); - return (processError($self, @Results))[0]; -} - -sub SetConnectOption{ - my($self, $Type, $Value) = @_; - if(! ref $self){ - $Value = $Type; - $Type = $self; - $self = 0; - } - my(@Results) = ODBCSetConnectOption($self->{'connection'}, $Type, $Value); - return (processError($self, @Results))[0]; -} - - -sub Transact{ - my($self, $Type) = @_; - my(@Results); - if(! ref $self){ - $Type = $self; - $self = 0; - } - @Results = ODBCTransact($self->{'connection'}, $Type); - return (processError($self, @Results))[0]; -} - - -sub SetPos{ - my($self, @Results) = @_; - @Results = ODBCSetPos($self->{'connection'}, @Results); - $self->{'Dirty'} = 1; - return (processError($self, @Results))[0]; -} - -sub ConfigDSN{ - my($self) = shift @_; - my($Type, $Connection); - if(! ref $self){ - $Type = $self; - $Connection = 0; - $self = 0; - }else{ - $Type = shift @_; - $Connection = $self->{'connection'}; - } - my($Driver, @Attributes) = @_; - @Results = ODBCConfigDSN($Connection, $Type, $Driver, @Attributes); - return (processError($self, @Results))[0]; -} - - -sub Version{ - my($self, @Packages) = @_; - my($Temp, @Results); - if (! ref($self)){ - push(@Packages, $self); - } - my($ExtName, $ExtVersion) = Info(); - if (! scalar(@Packages)){ - @Packages = ("ODBC.PM", "ODBC.PLL"); - } - foreach $Temp (@Packages){ - if ($Temp =~ /pll/i){ - push(@Results, "ODBC.PM:$Win32::ODBC::Version"); - }elsif ($Temp =~ /pm/i){ - push(@Results, "ODBC.PLL:$ExtVersion"); - } - } - return @Results; -} - - -sub SetStmtOption{ - my($self, $Option, $Value) = @_; - if(! ref $self){ - $Value = $Option; - $Option = $self; - $self = 0; - } - my(@Results) = ODBCSetStmtOption($self->{'connection'}, $Option, $Value); - return (processError($self, @Results))[0]; -} - -sub GetStmtOption{ - my($self, $Type) = @_; - if(! ref $self){ - $Type = $self; - $self = 0; - } - my(@Results) = ODBCGetStmtOption($self->{'connection'}, $Type); - return (processError($self, @Results))[0]; -} - -sub GetFunctions{ - my($self, @Results)=@_; - @Results = ODBCGetFunctions($self->{'connection'}, @Results); - return (processError($self, @Results)); -} - -sub DropCursor{ - my($self) = @_; - my(@Results) = ODBCDropCursor($self->{'connection'}); - return (processError($self, @Results))[0]; -} - -sub SetCursorName{ - my($self, $Name) = @_; - my(@Results) = ODBCSetCursorName($self->{'connection'}, $Name); - return (processError($self, @Results))[0]; -} - -sub GetCursorName{ - my($self) = @_; - my(@Results) = ODBCGetCursorName($self->{'connection'}); - return (processError($self, @Results))[0]; -} - -sub GetSQLState{ - my($self) = @_; - my(@Results) = ODBCGetSQLState($self->{'connection'}); - return (processError($self, @Results))[0]; -} - - -# ----------- R e s u l t P r o c e s s i n g F u n c t i o n s ---------- -#### -# Generic processing of data into associative arrays -#### -sub updateResults{ - my ($self, $Error, @Results) = @_; - - undef %{$self->{'field'}}; - - ClearError($self); - if ($Error){ - SetError($self, $Results[0], $Results[1]); - return ($Error); - } - - @{$self->{'fnames'}} = @Results; - - foreach (0..$#{$self->{'fnames'}}){ - s/ +$//; - $self->{'field'}->{${$self->{'fnames'}}[$_]} = $_; - } - return undef; -} - -# ---------------------------------------------------------------------------- -# ----------------- D e b u g g i n g F u n c t i o n s -------------------- - -sub Debug{ - my($self, $iDebug, $File) = @_; - my(@Results); - if (! ref($self)){ - if (defined $self){ - $File = $iDebug; - $iDebug = $self; - } - $Connection = 0; - $self = 0; - }else{ - $Connection = $self->{'connection'}; - } - push(@Results, ($Connection, $iDebug)); - push(@Results, $File) if ($File ne ""); - @Results = ODBCDebug(@Results); - return (processError($self, @Results))[0]; -} - -#### -# Prints out the current dataset (used mostly for testing) -#### -sub DumpData { - my($self) = @_; my($f, $goo); - - # Changed by JOC 06-Apr-96 - # print "\nDumping Data for connection: $conn->{'connection'}\n"; - print "\nDumping Data for connection: $self->{'connection'}\n"; - print "Error: \""; - print $self->Error(); - print "\"\n"; - if (! $self->Error()){ - foreach $f ($self->FieldNames){ - print $f . " "; - $goo .= "-" x length($f); - $goo .= " "; - } - print "\n$goo\n"; - while ($self->FetchRow()){ - foreach $f ($self->FieldNames){ - print $self->Data($f) . " "; - } - print "\n"; - } - } -} - -sub DumpError{ - my($self) = @_; - my($ErrNum, $ErrText, $ErrConn); - my($Temp); - - print "\n---------- Error Report: ----------\n"; - if (ref $self){ - ($ErrNum, $ErrText, $ErrConn) = $self->Error(); - ($Temp = $self->GetDSN()) =~ s/.*DSN=(.*?);.*/$1/i; - print "Errors for \"$Temp\" on connection " . $self->{'connection'} . ":\n"; - }else{ - ($ErrNum, $ErrText, $ErrConn) = Error(); - print "Errors for the package:\n"; - } - - print "Connection Number: $ErrConn\nError number: $ErrNum\nError message: \"$ErrText\"\n"; - print "-----------------------------------\n"; - -} - -#### -# Submit an SQL statement and print data about it (used mostly for testing) -#### -sub Run{ - my($self, $Sql) = @_; - - print "\nExcecuting connection $self->{'connection'}\nsql statement: \"$Sql\"\n"; - $self->Sql($Sql); - print "Error: \""; - print $self->error; - print "\"\n"; - print "--------------------\n\n"; -} - -# ---------------------------------------------------------------------------- -# ----------- E r r o r P r o c e s s i n g F u n c t i o n s ------------ - -#### -# Process Errors returned from a call to ODBCxxxx(). -# It is assumed that the Win32::ODBC function returned the following structure: -# ($ErrorNumber, $ResultsText, ...) -# $ErrorNumber....0 = No Error -# >0 = Error Number -# $ResultsText.....if no error then this is the first Results element. -# if error then this is the error text. -#### -sub processError{ - my($self, $Error, @Results) = @_; - if ($Error){ - SetError($self, $Results[0], $Results[1]); - undef @Results; - } - return @Results; -} - -#### -# Return the last recorded error message -#### -sub error{ - return (Error(@_)); -} - -sub Error{ - my($self) = @_; - if(ref($self)){ - if($self->{'ErrNum'}){ - my($State) = ODBCGetSQLState($self->{'connection'}); - return (wantarray)? ($self->{'ErrNum'}, $self->{'ErrText'}, $self->{'connection'}, $State) :"[$self->{'ErrNum'}] [$self->{'connection'}] [$State] \"$self->{'ErrText'}\""; - } - }elsif ($ErrNum){ - return (wantarray)? ($ErrNum, $ErrText, $ErrConn):"[$ErrNum] [$ErrConn] \"$ErrText\""; - } - return undef -} - -#### -# SetError: -# Assume that if $self is not a reference then it is just a placeholder -# and should be ignored. -#### -sub SetError{ - my($self, $Num, $Text, $Conn) = @_; - if (ref $self){ - $self->{'ErrNum'} = $Num; - $self->{'ErrText'} = $Text; - $Conn = $self->{'connection'} if ! $Conn; - } - $ErrNum = $Num; - $ErrText = $Text; - - #### - # Test Section Begin - #### -# $! = ($Num, $Text); - #### - # Test Section End - #### - - $ErrConn = $Conn; -} - -sub ClearError{ - my($self, $Num, $Text) = @_; - if (ref $self){ - undef $self->{'ErrNum'}; - undef $self->{'ErrText'}; - }else{ - undef $ErrConn; - undef $ErrNum; - undef $ErrText; - } - ODBCCleanError(); - return 1; -} - - -sub GetError{ - my($self, $Connection) = @_; - my(@Results); - if (! ref($self)){ - $Connection = $self; - $self = 0; - }else{ - if (! defined($Connection)){ - $Connection = $self->{'connection'}; - } - } - - @Results = ODBCGetError($Connection); - return @Results; -} - - - - -# ---------------------------------------------------------------------------- -# ------------------ A U T O L O A D F U N C T I O N ----------------------- - -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/.*:://; - #reset $! to zero to reset any current errors. - local $! = 0; - $val = constant($constname); - - if ($! != 0) { - if ($! =~ /Invalid/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD; - } - else { - - # Added by JOC 06-APR-96 - # $pack = 0; - $pack = 0; - ($pack,$file,$line) = caller; - print "Your vendor has not defined Win32::ODBC macro $constname, used in $file at line $line."; - } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - - - # -------------------------------------------------------------- - # - # - # Make sure that we shutdown ODBC and free memory even if we are - # using perlis.dll on Win32 platform! -END{ -# ODBCShutDown() unless $CacheConnection; -} - - -bootstrap Win32::ODBC; - -# Preloaded methods go here. - -# Autoload methods go after __END__, and are processed by the autosplit program. - -1; -__END__ - -=head1 NAME - -Win32::ODBC - ODBC Extension for Win32 - -=head1 SYNOPSIS - -To use this module, include the following statement at the top of your -script: - - use Win32::ODBC; - -Next, create a data connection to your DSN: - - $Data = new Win32::ODBC("MyDSN"); - -B<NOTE>: I<MyDSN> can be either the I<DSN> as defined in the ODBC -Administrator, I<or> it can be an honest-to-God I<DSN Connect String>. - - Example: "DSN=My Database;UID=Brown Cow;PWD=Moo;" - -You should check to see if C<$Data> is indeed defined, otherwise there -has been an error. - -You can now send SQL queries and retrieve info to your heart's -content! See the description of the methods provided by this module -below and also the file F<TEST.PL> as referred to in L<INSTALLATION -NOTES> to see how it all works. - -Finally, B<MAKE SURE> that you close your connection when you are -finished: - - $Data->Close(); - -=head1 DESCRIPTION - -=head2 Background - -This is a hack of Dan DeMaggio's <dmag@umich.edu> F<NTXS.C> ODBC -implementation. I have recoded and restructured most of it including -most of the F<ODBC.PM> package, but its very core is still based on -Dan's code (thanks Dan!). - -The history of this extension is found in the file F<HISTORY.TXT> that -comes with the original archive (see L<INSTALLATION NOTES> below). - -=head2 Benefits - -And what are the benefits of this module? - -=over - -=item * - -The number of ODBC connections is limited by memory and ODBC itself -(have as many as you want!). - -=item * - -The working limit for the size of a field is 10,240 bytes, but you can -increase that limit (if needed) to a max of 2,147,483,647 bytes. (You -can always recompile to increase the max limit.) - -=item * - -You can open a connection by either specifing a DSN or a connection -string! - -=item * - -You can open and close the connections in any order! - -=item * - -Other things that I can not think of right now... :) - -=back - -=head1 CONSTANTS - -This package defines a number of constants. You may refer to each of -these constants using the notation C<ODBC::xxxxx>, where C<xxxxx> is -the constant. - -Example: - - print ODBC::SQL_SQL_COLUMN_NAME, "\n"; - -=head1 SPECIAL NOTATION - -For the method documentation that follows, an B<*> following the -method parameters indicates that that method is new or has been -modified for this version. - -=head1 CONSTRUCTOR - -=over - -=item new ( ODBC_OBJECT | DSN [, (OPTION1, VALUE1), (OPTION2, VALUE2) ...] ) -* - -Creates a new ODBC connection based on C<DSN>, or, if you specify an -already existing ODBC object, then a new ODBC object will be created -but using the ODBC Connection specified by C<ODBC_OBJECT>. (The new -object will be a new I<hstmt> using the I<hdbc> connection in -C<ODBC_OBJECT>.) - -C<DSN> is I<Data Source Name> or a proper C<ODBCDriverConnect> string. - -You can specify SQL Connect Options that are implemented before the -actual connection to the DSN takes place. These option/values are the -same as specified in C<GetConnectOption>/C<SetConnectOption> (see -below) and are defined in the ODBC API specs. - -Returns a handle to the database on success, or I<undef> on failure. - -=back - -=head1 METHODS - -=over - -=item Catalog ( QUALIFIER, OWNER, NAME, TYPE ) - -Tells ODBC to create a data set that contains table information about -the DSN. Use C<Fetch> and C<Data> or C<DataHash> to retrieve the data. -The returned format is: - - [Qualifier] [Owner] [Name] [Type] - -Returns I<true> on error. - -=item ColAttributes ( ATTRIBUTE [, FIELD_NAMES ] ) - -Returns the attribute C<ATTRIBUTE> on each of the fields in the list -C<FIELD_NAMES> in the current record set. If C<FIELD_NAMES> is empty, -then all fields are assumed. The attributes are returned as an -associative array. - -=item ConfigDSN ( OPTION, DRIVER, ATTRIBUTE1 [, ATTRIBUTE2, ATTRIBUTE3, ... -] ) - -Configures a DSN. C<OPTION> takes on one of the following values: - - ODBC_ADD_DSN.......Adds a new DSN. - ODBC_MODIFY_DSN....Modifies an existing DSN. - ODBC_REMOVE_DSN....Removes an existing DSN. - - ODBC_ADD_SYS_DSN.......Adds a new System DSN. - ODBC_MODIFY_SYS_DSN....Modifies an existing System DSN. - ODBC_REMOVE_SYS_DSN....Removes an existing System DSN. - -You must specify the driver C<DRIVER> (which can be retrieved by using -C<DataSources> or C<Drivers>). - -C<ATTRIBUTE1> B<should> be I<"DSN=xxx"> where I<xxx> is the name of -the DSN. Other attributes can be any DSN attribute such as: - - "UID=Cow" - "PWD=Moo" - "Description=My little bitty Data Source Name" - -Returns I<true> on success, I<false> on failure. - -B<NOTE 1>: If you use C<ODBC_ADD_DSN>, then you must include at least -I<"DSN=xxx"> and the location of the database. - -Example: For MS Access databases, you must specify the -I<DatabaseQualifier>: - - "DBQ=c:\\...\\MyDatabase.mdb" - -B<NOTE 2>: If you use C<ODBC_MODIFY_DSN>, then you need only specify -the I<"DNS=xxx"> attribute. Any other attribute you include will be -changed to what you specify. - -B<NOTE 3>: If you use C<ODBC_REMOVE_DSN>, then you need only specify -the I<"DSN=xxx"> attribute. - -=item Connection () - -Returns the connection number associated with the ODBC connection. - -=item Close () - -Closes the ODBC connection. No return value. - -=item Data ( [ FIELD_NAME ] ) - -Returns the contents of column name C<FIELD_NAME> or the current row -(if nothing is specified). - -=item DataHash ( [ FIELD1, FIELD2, ... ] ) - -Returns the contents for C<FIELD1, FIELD2, ...> or the entire row (if -nothing is specified) as an associative array consisting of: - - {Field Name} => Field Data - -=item DataSources () - -Returns an associative array of Data Sources and ODBC remarks about them. -They are returned in the form of: - - $ArrayName{'DSN'}=Driver - -where I<DSN> is the Data Source Name and ODBC Driver used. - -=item Debug ( [ 1 | 0 ] ) - -Sets the debug option to on or off. If nothing is specified, then -nothing is changed. - -Returns the debugging value (I<1> or I<0>). - -=item Drivers () - -Returns an associative array of ODBC Drivers and their attributes. -They are returned in the form of: - - $ArrayName{'DRIVER'}=Attrib1;Attrib2;Attrib3;... - -where I<DRIVER> is the ODBC Driver Name and I<AttribX> are the -driver-defined attributes. - -=item DropCursor ( [ CLOSE_TYPE ] ) - -Drops the cursor associated with the ODBC object. This forces the -cursor to be deallocated. This overrides C<SetStmtCloseType>, but the -ODBC object does not lose the C<StmtCloseType> setting. C<CLOSE_TYPE> -can be any valid C<SmtpCloseType> and will perform a close on the stmt -using the specified close type. - -Returns I<true> on success, I<false> on failure. - -=item DumpData () - -Dumps to the screen the fieldnames and all records of the current data -set. Used primarily for debugging. No return value. - -=item Error () - -Returns the last encountered error. The returned value is context -dependent: - -If called in a I<scalar> context, then a I<3-element array> is -returned: - - ( ERROR_NUMBER, ERROR_TEXT, CONNECTION_NUMBER ) - -If called in a I<string> context, then a I<string> is returned: - - "[ERROR_NUMBER] [CONNECTION_NUMBER] [ERROR_TEXT]" - -If debugging is on then two more variables are returned: - - ( ..., FUNCTION, LEVEL ) - -where C<FUNCTION> is the name of the function in which the error -occurred, and C<LEVEL> represents extra information about the error -(usually the location of the error). - -=item FetchRow ( [ ROW [, TYPE ] ] ) - -Retrieves the next record from the keyset. When C<ROW> and/or C<TYPE> -are specified, the call is made using C<SQLExtendedFetch> instead of -C<SQLFetch>. - -B<NOTE 1>: If you are unaware of C<SQLExtendedFetch> and its -implications, stay with just regular C<FetchRow> with no parameters. - -B<NOTE 2>: The ODBC API explicitly warns against mixing calls to -C<SQLFetch> and C<SQLExtendedFetch>; use one or the other but not -both. - -If I<ROW> is specified, it moves the keyset B<RELATIVE> C<ROW> number -of rows. - -If I<ROW> is specified and C<TYPE> is B<not>, then the type used is -B<RELATIVE>. - -Returns I<true> when another record is available to read, and I<false> -when there are no more records. - -=item FieldNames () - -Returns an array of fieldnames found in the current data set. There is -no guarantee on order. - -=item GetConnections () - -Returns an array of connection numbers showing what connections are -currently open. - -=item GetConnectOption ( OPTION ) - -Returns the value of the specified connect option C<OPTION>. Refer to -ODBC documentation for more information on the options and values. - -Returns a string or scalar depending upon the option specified. - -=item GetCursorName () - -Returns the name of the current cursor as a string or I<undef>. - -=item GetData () - -Retrieves the current row from the dataset. This is not generally -used by users; it is used internally. - -Returns an array of field data where the first element is either -I<false> (if successful) and I<true> (if B<not> successful). - -=item getDSN ( [ DSN ] ) - -Returns an associative array indicating the configuration for the -specified DSN. - -If no DSN is specified then the current connection is used. - -The returned associative array consists of: - - keys=DSN keyword; values=Keyword value. $Data{$Keyword}=Value - -=item GetFunctions ( [ FUNCTION1, FUNCTION2, ... ] ) - -Returns an associative array indicating the ability of the ODBC Driver -to support the specified functions. If no functions are specified, -then a 100 element associative array is returned containing all -possible functions and their values. - -C<FUNCTION> must be in the form of an ODBC API constant like -C<SQL_API_SQLTRANSACT>. - -The returned array will contain the results like: - - $Results{SQL_API_SQLTRANSACT}=Value - -Example: - - $Results = $O->GetFunctions( - $O->SQL_API_SQLTRANSACT, - SQL_API_SQLSETCONNECTOPTION - ); - $ConnectOption = $Results{SQL_API_SQLSETCONNECTOPTION}; - $Transact = $Results{SQL_API_SQLTRANSACT}; - -=item GetInfo ( OPTION ) - -Returns a string indicating the value of the particular -option specified. - -=item GetMaxBufSize () - -Returns the current allocated limit for I<MaxBufSize>. For more info, -see C<SetMaxBufSize>. - -=item GetSQLState () * - -Returns a string indicating the SQL state as reported by ODBC. The SQL -state is a code that the ODBC Manager or ODBC Driver returns after the -execution of a SQL function. This is helpful for debugging purposes. - -=item GetStmtCloseType ( [ CONNECTION ] ) - -Returns a string indicating the type of closure that will be used -everytime the I<hstmt> is freed. See C<SetStmtCloseType> for details. - -By default, the connection of the current object will be used. If -C<CONNECTION> is a valid connection number, then it will be used. - -=item GetStmtOption ( OPTION ) - -Returns the value of the specified statement option C<OPTION>. Refer -to ODBC documentation for more information on the options and values. - -Returns a string or scalar depending upon the option specified. - -=item MoreResults () - -This will report whether there is data yet to be retrieved from the -query. This can happen if the query was a multiple select. - -Example: - - "SELECT * FROM [foo] SELECT * FROM [bar]" - -B<NOTE>: Not all drivers support this. - -Returns I<1> if there is more data, I<undef> otherwise. - -=item RowCount ( CONNECTION ) - -For I<UPDATE>, I<INSERT> and I<DELETE> statements, the returned value -is the number of rows affected by the request or I<-1> if the number -of affected rows is not available. - -B<NOTE 1>: This function is not supported by all ODBC drivers! Some -drivers do support this but not for all statements (e.g., it is -supported for I<UPDATE>, I<INSERT> and I<DELETE> commands but not for -the I<SELECT> command). - -B<NOTE 2>: Many data sources cannot return the number of rows in a -result set before fetching them; for maximum interoperability, -applications should not rely on this behavior. - -Returns the number of affected rows, or I<-1> if not supported by the -driver in the current context. - -=item Run ( SQL ) - -Executes the SQL command B<SQL> and dumps to the screen info about -it. Used primarily for debugging. - -No return value. - -=item SetConnectOption ( OPTION ) * - -Sets the value of the specified connect option B<OPTION>. Refer to -ODBC documentation for more information on the options and values. - -Returns I<true> on success, I<false> otherwise. - -=item SetCursorName ( NAME ) * - -Sets the name of the current cursor. - -Returns I<true> on success, I<false> otherwise. - -=item SetPos ( ROW [, OPTION, LOCK ] ) * - -Moves the cursor to the row C<ROW> within the current keyset (B<not> -the current data/result set). - -Returns I<true> on success, I<false> otherwise. - -=item SetMaxBufSize ( SIZE ) - -This sets the I<MaxBufSize> for a particular connection. This will -most likely never be needed but... - -The amount of memory that is allocated to retrieve the field data of a -record is dynamic and changes when it need to be larger. I found that -a memo field in an MS Access database ended up requesting 4 Gig of -space. This was a bit much so there is an imposed limit (2,147,483,647 -bytes) that can be allocated for data retrieval. - -Since it is possible that someone has a database with field data -greater than 10,240, you can use this function to increase the limit -up to a ceiling of 2,147,483,647 (recompile if you need more). - -Returns the max number of bytes. - -=item SetStmtCloseType ( TYPE [, CONNECTION ] ) - -Sets a particular I<hstmt> close type for the connection. This is the -same as C<ODBCFreeStmt(hstmt, TYPE)>. By default, the connection of -the current object will be used. If C<CONNECTION> is a valid -connection number, then it will be used. - -C<TYPE> may be one of: - - SQL_CLOSE - SQL_DROP - SQL_UNBIND - SQL_RESET_PARAMS - -Returns a string indicating the newly set type. - -=item SetStmtOption ( OPTION ) * - -Sets the value of the specified statement option C<OPTION>. Refer to -ODBC documentation for more information on the options and values. - -Returns I<true> on success, I<false> otherwise. - -=item ShutDown () - -Closes the ODBC connection and dumps to the screen info about -it. Used primarily for debugging. - -No return value. - -=item Sql ( SQL_STRING ) - -Executes the SQL command C<SQL_STRING> on the current connection. - -Returns I<?> on success, or an error number on failure. - -=item TableList ( QUALIFIER, OWNER, NAME, TYPE ) - -Returns the catalog of tables that are available in the DSN. For an -unknown parameter, just specify the empty string I<"">. - -Returns an array of table names. - -=item Transact ( TYPE ) * - -Forces the ODBC connection to perform a I<rollback> or I<commit> -transaction. - -C<TYPE> may be one of: - - SQL_COMMIT - SQL_ROLLBACK - -B<NOTE>: This only works with ODBC drivers that support transactions. -Your driver supports it if I<true> is returned from: - - $O->GetFunctions($O->SQL_API_SQLTRANSACT)[1] - -(See C<GetFunctions> for more details.) - -Returns I<true> on success, I<false> otherwise. - -=item Version ( PACKAGES ) - -Returns an array of version numbers for the requested packages -(F<ODBC.pm> or F<ODBC.PLL>). If the list C<PACKAGES> is empty, then -all version numbers are returned. - -=back - -=head1 LIMITATIONS - -What known problems does this thing have? - -=over - -=item * - -If the account under which the process runs does not have write -permission on the default directory (for the process, not the ODBC -DSN), you will probably get a runtime error during a -C<SQLConnection>. I don't think that this is a problem with the code, -but more like a problem with ODBC. This happens because some ODBC -drivers need to write a temporary file. I noticed this using the MS -Jet Engine (Access Driver). - -=item * - -This module has been neither optimized for speed nor optimized for -memory consumption. - -=back - -=head1 INSTALLATION NOTES - -If you wish to use this module with a build of Perl other than -ActivePerl, you may wish to fetch the original source distribution for -this module at: - - ftp://ftp.roth.net:/pub/ntperl/ODBC/970208/Bin/Win32_ODBC_Build_CORE.zip - -or one of the other archives at that same location. See the included -README for hints on installing this module manually, what to do if you -get a I<parse exception>, and a pointer to a test script for this -module. - -=head1 OTHER DOCUMENTATION - -Find a FAQ for Win32::ODBC at: - - http://www.roth.net/odbc/odbcfaq.htm - -=head1 AUTHOR - -Dave Roth <rothd@roth.net> - -=head1 CREDITS - -Based on original code by Dan DeMaggio <dmag@umich.edu> - -=head1 DISCLAIMER - -I do not guarantee B<ANYTHING> with this package. If you use it you -are doing so B<AT YOUR OWN RISK>! I may or may not support this -depending on my time schedule. - -=head1 HISTORY - -Last Modified 1999.09.25. - -=head1 COPYRIGHT - -Copyright (c) 1996-1998 Dave Roth. All rights reserved. - -Courtesy of Roth Consulting: http://www.roth.net/consult/ - -Use under GNU General Public License. Details can be found at: -http://www.gnu.org/copyleft/gpl.html - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Win32/PerfLib.pm b/Master/tlpkg/tlperl.old/lib/Win32/PerfLib.pm deleted file mode 100644 index 2b773d68f4b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/PerfLib.pm +++ /dev/null @@ -1,538 +0,0 @@ -package Win32::PerfLib; - -use strict; -use Carp; -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD); - -require Exporter; -require DynaLoader; -require AutoLoader; - -@ISA = qw(Exporter DynaLoader); - -@EXPORT = qw( - PERF_100NSEC_MULTI_TIMER - PERF_100NSEC_MULTI_TIMER_INV - PERF_100NSEC_TIMER - PERF_100NSEC_TIMER_INV - PERF_AVERAGE_BASE - PERF_AVERAGE_BULK - PERF_AVERAGE_TIMER - PERF_COUNTER_BASE - PERF_COUNTER_BULK_COUNT - PERF_COUNTER_COUNTER - PERF_COUNTER_DELTA - PERF_COUNTER_ELAPSED - PERF_COUNTER_FRACTION - PERF_COUNTER_HISTOGRAM - PERF_COUNTER_HISTOGRAM_TYPE - PERF_COUNTER_LARGE_DELTA - PERF_COUNTER_LARGE_QUEUELEN_TYPE - PERF_COUNTER_LARGE_RAWCOUNT - PERF_COUNTER_LARGE_RAWCOUNT_HEX - PERF_COUNTER_MULTI_BASE - PERF_COUNTER_MULTI_TIMER - PERF_COUNTER_MULTI_TIMER_INV - PERF_COUNTER_NODATA - PERF_COUNTER_QUEUELEN - PERF_COUNTER_QUEUELEN_TYPE - PERF_COUNTER_RATE - PERF_COUNTER_RAWCOUNT - PERF_COUNTER_RAWCOUNT_HEX - PERF_COUNTER_TEXT - PERF_COUNTER_TIMER - PERF_COUNTER_TIMER_INV - PERF_COUNTER_VALUE - PERF_DATA_REVISION - PERF_DATA_VERSION - PERF_DELTA_BASE - PERF_DELTA_COUNTER - PERF_DETAIL_ADVANCED - PERF_DETAIL_EXPERT - PERF_DETAIL_NOVICE - PERF_DETAIL_WIZARD - PERF_DISPLAY_NOSHOW - PERF_DISPLAY_NO_SUFFIX - PERF_DISPLAY_PERCENT - PERF_DISPLAY_PER_SEC - PERF_DISPLAY_SECONDS - PERF_ELAPSED_TIME - PERF_INVERSE_COUNTER - PERF_MULTI_COUNTER - PERF_NO_INSTANCES - PERF_NO_UNIQUE_ID - PERF_NUMBER_DECIMAL - PERF_NUMBER_DEC_1000 - PERF_NUMBER_HEX - PERF_OBJECT_TIMER - PERF_RAW_BASE - PERF_RAW_FRACTION - PERF_SAMPLE_BASE - PERF_SAMPLE_COUNTER - PERF_SAMPLE_FRACTION - PERF_SIZE_DWORD - PERF_SIZE_LARGE - PERF_SIZE_VARIABLE_LEN - PERF_SIZE_ZERO - PERF_TEXT_ASCII - PERF_TEXT_UNICODE - PERF_TIMER_100NS - PERF_TIMER_TICK - PERF_TYPE_COUNTER - PERF_TYPE_NUMBER - PERF_TYPE_TEXT - PERF_TYPE_ZERO - ); - -$VERSION = '0.05'; - -sub AUTOLOAD { - - my $constname; - ($constname = $AUTOLOAD) =~ s/.*:://; - local $! = 0; - my $val = constant($constname); - if ($! != 0) { - if ($! =~ /Invalid/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD; - } - else { - croak "Your vendor has not defined Win32::PerfLib macro $constname"; - } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - -bootstrap Win32::PerfLib $VERSION; - -# Preloaded methods go here. - -sub new -{ - my $proto = shift; - my $class = ref($proto) || $proto; - my $comp = shift; - my $handle; - my $self = {}; - if(PerfLibOpen($comp,$handle)) - { - $self->{handle} = $handle; - bless $self, $class; - return $self; - } - else - { - return undef; - } - -} - -sub Close -{ - my $self = shift; - return PerfLibClose($self->{handle}); -} - -sub DESTROY -{ - my $self = shift; - if(!PerfLibClose($self->{handle})) - { - croak "Error closing handle!\n"; - } -} - -sub GetCounterNames -{ - my($machine,$href) = @_; - if(ref $href ne "HASH") - { - croak("usage: Win32::PerfLib::GetCounterNames(machine,hashRef)\n"); - } - my($data,@data,$num,$name); - my $retval = PerfLibGetNames($machine,$data); - if($retval) - { - @data = split(/\0/, $data); - while(@data) - { - $num = shift @data; - $name = shift @data; - $href->{$num} = $name; - } - } - $retval; -} - -sub GetCounterHelp -{ - my($machine,$href) = @_; - if(ref $href ne "HASH") - { - croak("usage: Win32::PerfLib::GetCounterHelp(machine,hashRef)\n"); - } - my($data,@data,$num,$name); - my $retval = PerfLibGetHelp($machine,$data); - if($retval) - { - @data = split(/\0/, $data); - while(@data) - { - $num = shift @data; - $name = shift @data; - $href->{$num} = $name; - } - } - $retval; -} - -sub GetObjectList -{ - my $self = shift; - my $object = shift; - my $data = shift; - if(ref $data ne "HASH") - { - croak("reference isn't a hash reference!\n"); - } - return PerfLibGetObjects($self->{handle}, $object, $data); -} - -sub GetCounterType -{ - my $type = shift; - my $retval; - if( &Win32::PerfLib::PERF_100NSEC_MULTI_TIMER == $type ) - { - $retval = "PERF_100NSEC_MULTI_TIMER"; - } - elsif( &Win32::PerfLib::PERF_100NSEC_MULTI_TIMER_INV == $type ) - { - $retval = "PERF_100NSEC_MULTI_TIMER_INV"; - } - elsif( &Win32::PerfLib::PERF_100NSEC_TIMER == $type ) - { - $retval = "PERF_100NSEC_TIMER"; - } - elsif( &Win32::PerfLib::PERF_100NSEC_TIMER_INV == $type ) - { - $retval = "PERF_100NSEC_TIMER_INV"; - } - elsif( &Win32::PerfLib::PERF_AVERAGE_BASE == $type ) - { - $retval = "PERF_AVERAGE_BASE"; - } - elsif( &Win32::PerfLib::PERF_AVERAGE_BULK == $type ) - { - $retval = "PERF_AVERAGE_BULK"; - } - elsif( &Win32::PerfLib::PERF_AVERAGE_TIMER == $type ) - { - $retval = "PERF_AVERAGE_TIMER"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_BULK_COUNT == $type ) - { - $retval = "PERF_COUNTER_BULK_COUNT"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_COUNTER == $type ) - { - $retval = "PERF_COUNTER_COUNTER"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_DELTA == $type ) - { - $retval = "PERF_COUNTER_DELTA"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_LARGE_DELTA == $type ) - { - $retval = "PERF_COUNTER_LARGE_DELTA"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_LARGE_QUEUELEN_TYPE == $type ) - { - $retval = "PERF_COUNTER_LARGE_QUEUELEN_TYPE"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_LARGE_RAWCOUNT == $type ) - { - $retval = "PERF_COUNTER_LARGE_RAWCOUNT"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_LARGE_RAWCOUNT_HEX == $type ) - { - $retval = "PERF_COUNTER_LARGE_RAWCOUNT_HEX"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_MULTI_BASE == $type ) - { - $retval = "PERF_COUNTER_MULTI_BASE"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_MULTI_TIMER == $type ) - { - $retval = "PERF_COUNTER_MULTI_TIMER"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_MULTI_TIMER_INV == $type ) - { - $retval = "PERF_COUNTER_MULTI_TIMER_INV"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_NODATA == $type ) - { - $retval = "PERF_COUNTER_NODATA"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_QUEUELEN_TYPE == $type ) - { - $retval = "PERF_COUNTER_QUEUELEN_TYPE"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_RAWCOUNT == $type ) - { - $retval = "PERF_COUNTER_RAWCOUNT"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_RAWCOUNT_HEX == $type ) - { - $retval = "PERF_COUNTER_RAWCOUNT_HEX"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_TEXT == $type ) - { - $retval = "PERF_COUNTER_TEXT"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_TIMER == $type ) - { - $retval = "PERF_COUNTER_TIMER"; - } - elsif( &Win32::PerfLib::PERF_COUNTER_TIMER_INV == $type ) - { - $retval = "PERF_COUNTER_TIMER_INV"; - } - elsif( &Win32::PerfLib::PERF_ELAPSED_TIME == $type ) - { - $retval = "PERF_ELAPSED_TIME"; - } - elsif( &Win32::PerfLib::PERF_RAW_BASE == $type ) - { - $retval = "PERF_RAW_BASE"; - } - elsif( &Win32::PerfLib::PERF_RAW_FRACTION == $type ) - { - $retval = "PERF_RAW_FRACTION"; - } - elsif( &Win32::PerfLib::PERF_SAMPLE_BASE == $type ) - { - $retval = "PERF_SAMPLE_BASE"; - } - elsif( &Win32::PerfLib::PERF_SAMPLE_COUNTER == $type ) - { - $retval = "PERF_SAMPLE_COUNTER"; - } - elsif( &Win32::PerfLib::PERF_SAMPLE_FRACTION == $type ) - { - $retval = "PERF_SAMPLE_FRACTION"; - } - $retval; -} - - - -1; -__END__ - -=head1 NAME - -Win32::PerfLib - accessing the Windows NT Performance Counter - -=head1 SYNOPSIS - - use Win32::PerfLib; - my $server = ""; - Win32::PerfLib::GetCounterNames($server, \%counter); - %r_counter = map { $counter{$_} => $_ } keys %counter; - # retrieve the id for process object - $process_obj = $r_counter{Process}; - # retrieve the id for the process ID counter - $process_id = $r_counter{'ID Process'}; - - # create connection to $server - $perflib = new Win32::PerfLib($server); - $proc_ref = {}; - # get the performance data for the process object - $perflib->GetObjectList($process_obj, $proc_ref); - $perflib->Close(); - $instance_ref = $proc_ref->{Objects}->{$process_obj}->{Instances}; - foreach $p (sort keys %{$instance_ref}) - { - $counter_ref = $instance_ref->{$p}->{Counters}; - foreach $i (keys %{$counter_ref}) - { - if($counter_ref->{$i}->{CounterNameTitleIndex} == $process_id) - { - printf( "% 6d %s\n", $counter_ref->{$i}->{Counter}, - $instance_ref->{$p}->{Name} - ); - } - } - } - -=head1 DESCRIPTION - -This module allows to retrieve the performance counter of any computer -(running Windows NT) in the network. - -=head1 FUNCTIONS - -=head2 NOTE - -All of the functions return false if they fail, unless otherwise noted. -If the $server argument is undef the local machine is assumed. - -=over 10 - -=item Win32::PerfLib::GetCounterNames($server,$hashref) - -Retrieves the counter names and their indices from the registry and stores them -in the hash reference - -=item Win32::PerfLib::GetCounterHelp($server,$hashref) - -Retrieves the counter help strings and their indices from the registry and -stores them in the hash reference - -=item $perflib = Win32::PerfLib->new ($server) - -Creates a connection to the performance counters of the given server - -=item $perflib->GetObjectList($objectid,$hashref) - -retrieves the object and counter list of the given performance object. - -=item $perflib->Close($hashref) - -closes the connection to the performance counters - -=item Win32::PerfLib::GetCounterType(countertype) - -converts the counter type to readable string as referenced in L<calc.html> so -that it is easier to find the appropriate formula to calculate the raw counter -data. - -=back - -=head1 Datastructures - -The performance data is returned in the following data structure: - -=over 10 - -=item Level 1 - - $hashref = { - 'NumObjectTypes' => VALUE - 'Objects' => HASHREF - 'PerfFreq' => VALUE - 'PerfTime' => VALUE - 'PerfTime100nSec' => VALUE - 'SystemName' => STRING - 'SystemTime' => VALUE - } - -=item Level 2 - -The hash reference $hashref->{Objects} has the returned object ID(s) as keys and -a hash reference to the object counter data as value. Even there is only one -object requested in the call to GetObjectList there may be more than one object -in the result. - - $hashref->{Objects} = { - <object1> => HASHREF - <object2> => HASHREF - ... - } - -=item Level 3 - -Each returned object ID has object-specific performance information. If an -object has instances like the process object there is also a reference to -the instance information. - - $hashref->{Objects}->{<object1>} = { - 'DetailLevel' => VALUE - 'Instances' => HASHREF - 'Counters' => HASHREF - 'NumCounters' => VALUE - 'NumInstances' => VALUE - 'ObjectHelpTitleIndex' => VALUE - 'ObjectNameTitleIndex' => VALUE - 'PerfFreq' => VALUE - 'PerfTime' => VALUE - } - -=item Level 4 - -If there are instance information for the object available they are stored in -the 'Instances' hashref. If the object has no instances there is an 'Counters' -key instead. The instances or counters are numbered. - - $hashref->{Objects}->{<object1>}->{Instances} = { - <1> => HASHREF - <2> => HASHREF - ... - <n> => HASHREF - } - or - $hashref->{Objects}->{<object1>}->{Counters} = { - <1> => HASHREF - <2> => HASHREF - ... - <n> => HASHREF - } - -=item Level 5 - - $hashref->{Objects}->{<object1>}->{Instances}->{<1>} = { - Counters => HASHREF - Name => STRING - ParentObjectInstance => VALUE - ParentObjectTitleIndex => VALUE - } - or - $hashref->{Objects}->{<object1>}->{Counters}->{<1>} = { - Counter => VALUE - CounterHelpTitleIndex => VALUE - CounterNameTitleIndex => VALUE - CounterSize => VALUE - CounterType => VALUE - DefaultScale => VALUE - DetailLevel => VALUE - Display => STRING - } - -=item Level 6 - - $hashref->{Objects}->{<object1>}->{Instances}->{<1>}->{Counters} = { - <1> => HASHREF - <2> => HASHREF - ... - <n> => HASHREF - } - -=item Level 7 - - $hashref->{Objects}->{<object1>}->{Instances}->{<1>}->{Counters}->{<1>} = { - Counter => VALUE - CounterHelpTitleIndex => VALUE - CounterNameTitleIndex => VALUE - CounterSize => VALUE - CounterType => VALUE - DefaultScale => VALUE - DetailLevel => VALUE - Display => STRING - } - -Depending on the B<CounterType> there are calculations to do (see calc.html). - -=back - -=head1 AUTHOR - -Jutta M. Klebe, jmk@bybyte.de - -=head1 SEE ALSO - -perl(1). - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Pipe.pm b/Master/tlpkg/tlperl.old/lib/Win32/Pipe.pm deleted file mode 100644 index a99d5a0da08..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Pipe.pm +++ /dev/null @@ -1,414 +0,0 @@ -package Win32::Pipe; - -$VERSION = '0.022'; - -# Win32::Pipe.pm -# +==========================================================+ -# | | -# | PIPE.PM package | -# | --------------- | -# | Release v96.05.11 | -# | | -# | Copyright (c) 1996 Dave Roth. All rights reserved. | -# | This program is free software; you can redistribute | -# | it and/or modify it under the same terms as Perl itself. | -# | | -# +==========================================================+ -# -# -# Use under GNU General Public License or Larry Wall's "Artistic License" -# -# Check the README.TXT file that comes with this package for details about -# it's history. -# - -require Exporter; -require DynaLoader; - -@ISA= 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(); - -$ErrorNum = 0; -$ErrorText = ""; - -sub new -{ - my ($self, $Pipe); - my ($Type, $Name, $Time) = @_; - - if (! $Time){ - $Time = DEFAULT_WAIT_TIME(); - } - $Pipe = PipeCreate($Name, $Time); - if ($Pipe){ - $self = bless {}; - $self->{'Pipe'} = $Pipe; - }else{ - ($ErrorNum, $ErrorText) = PipeError(); - return undef; - } - $self; -} - -sub Write{ - my($self, $Data) = @_; - $Data = PipeWrite($self->{'Pipe'}, $Data); - return $Data; -} - -sub Read{ - my($self) = @_; - my($Data); - $Data = PipeRead($self->{'Pipe'}); - return $Data; -} - -sub Error{ - my($self) = @_; - my($MyError, $MyErrorText, $Temp); - if (! ref($self)){ - undef $Temp; - }else{ - $Temp = $self->{'Pipe'}; - } - ($MyError, $MyErrorText) = PipeError($Temp); - return wantarray? ($MyError, $MyErrorText):"[$MyError] \"$MyErrorText\""; -} - - -sub Close{ - my ($self) = shift; - PipeClose($self->{'Pipe'}); - $self->{'Pipe'} = 0; -} - -sub Connect{ - my ($self) = @_; - my ($Result); - $Result = PipeConnect($self->{'Pipe'}); - return $Result; -} - -sub Disconnect{ - my ($self, $iPurge) = @_; - my ($Result); - if (! $iPurge){ - $iPurge = 1; - } - $Result = PipeDisconnect($self->{'Pipe'}, $iPurge); - return $Result; -} - -sub BufferSize{ - my($self) = @_; - my($Result) = PipeBufferSize($self->{'Pipe'}); - return $Result; -} - -sub ResizeBuffer{ - my($self, $Size) = @_; - my($Result) = PipeResizeBuffer($self->{'Pipe'}, $Size); - return $Result; -} - - -#### -# Auto-Kill an instance of this module -#### -sub DESTROY -{ - my ($self) = shift; - Close($self); -} - - -sub Credit{ - my($Name, $Version, $Date, $Author, $CompileDate, $CompileTime, $Credits) = Win32::Pipe::Info(); - my($Out, $iWidth); - $iWidth = 60; - $Out .= "\n"; - $Out .= " +". "=" x ($iWidth). "+\n"; - $Out .= " |". Center("", $iWidth). "|\n"; - $Out .= " |" . Center("", $iWidth). "|\n"; - $Out .= " |". Center("$Name", $iWidth). "|\n"; - $Out .= " |". Center("-" x length("$Name"), $iWidth). "|\n"; - $Out .= " |". Center("", $iWidth). "|\n"; - - $Out .= " |". Center("Version $Version ($Date)", $iWidth). "|\n"; - $Out .= " |". Center("by $Author", $iWidth). "|\n"; - $Out .= " |". Center("Compiled on $CompileDate at $CompileTime.", $iWidth). "|\n"; - $Out .= " |". Center("", $iWidth). "|\n"; - $Out .= " |". Center("Credits:", $iWidth). "|\n"; - $Out .= " |". Center(("-" x length("Credits:")), $iWidth). "|\n"; - foreach $Temp (split("\n", $Credits)){ - $Out .= " |". Center("$Temp", $iWidth). "|\n"; - } - $Out .= " |". Center("", $iWidth). "|\n"; - $Out .= " +". "=" x ($iWidth). "+\n"; - return $Out; -} - -sub Center{ - local($Temp, $Width) = @_; - local($Len) = ($Width - length($Temp)) / 2; - return " " x int($Len) . $Temp . " " x (int($Len) + (($Len != int($Len))? 1:0)); -} - -# ------------------ A U T O L O A D F U N C T I O N --------------------- - -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/.*:://; - #reset $! to zero to reset any current errors. - local $! = 0; - $val = constant($constname, @_ ? $_[0] : 0); - - if ($! != 0) { - if ($! =~ /Invalid/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD; - } - else { - - # Added by JOC 06-APR-96 - # $pack = 0; - $pack = 0; - ($pack,$file,$line) = caller; - print "Your vendor has not defined Win32::Pipe macro $constname, used in $file at line $line."; - } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - -bootstrap Win32::Pipe; - -1; -__END__ - -=head1 NAME - -Win32::Pipe - Win32 Named Pipe - -=head1 SYNOPSIS - -To use this extension, follow these basic steps. First, you need to -'use' the pipe extension: - - use Win32::Pipe; - -Then you need to create a server side of a named pipe: - - $Pipe = new Win32::Pipe("My Pipe Name"); - -or if you are going to connect to pipe that has already been created: - - $Pipe = new Win32::Pipe("\\\\server\\pipe\\My Pipe Name"); - - NOTE: The "\\\\server\\pipe\\" is necessary when connecting - to an existing pipe! If you are accessing the same - machine you could use "\\\\.\\pipe\\" but either way - works fine. - -You should check to see if C<$Pipe> is indeed defined otherwise there -has been an error. - -Whichever end is the server, it must now wait for a connection... - - $Result = $Pipe->Connect(); - - NOTE: The client end does not do this! When the client creates - the pipe it has already connected! - -Now you can read and write data from either end of the pipe: - - $Data = $Pipe->Read(); - - $Result = $Pipe->Write("Howdy! This is cool!"); - -When the server is finished it must disconnect: - - $Pipe->Disconnect(); - -Now the server could C<Connect> again (and wait for another client) or -it could destroy the named pipe... - - $Data->Close(); - -The client should C<Close> in order to properly end the session. - -=head1 DESCRIPTION - -=head2 General Use - -This extension gives Win32 Perl the ability to use Named Pipes. Why? -Well considering that Win32 Perl does not (yet) have the ability to -C<fork> I could not see what good the C<pipe(X,Y)> was. Besides, where -I am as an admin I must have several perl daemons running on several -NT Servers. It dawned on me one day that if I could pipe all these -daemons' output to my workstation (across the net) then it would be -much easier to monitor. This was the impetus for an extension using -Named Pipes. I think that it is kinda cool. :) - -=head2 Benefits - -And what are the benefits of this module? - -=over - -=item * - -You may create as many named pipes as you want (uh, well, as many as -your resources will allow). - -=item * - -Currently there is a limit of 256 instances of a named pipe (once a -pipe is created you can have 256 client/server connections to that -name). - -=item * - -The default buffer size is 512 bytes; this can be altered by the -C<ResizeBuffer> method. - -=item * - -All named pipes are byte streams. There is currently no way to alter a -pipe to be message based. - -=item * - -Other things that I cannot think of right now... :) - -=back - -=head1 CONSTRUCTOR - -=over - -=item new ( NAME ) - -Creates a named pipe if used in server context or a connection to the -specified named pipe if used in client context. Client context is -determined by prepending $Name with "\\\\". - -Returns I<true> on success, I<false> on failure. - -=back - -=head1 METHODS - -=over - -=item BufferSize () - -Returns the size of the instance of the buffer of the named pipe. - -=item Connect () - -Tells the named pipe to create an instance of the named pipe and wait -until a client connects. Returns I<true> on success, I<false> on -failure. - -=item Close () - -Closes the named pipe. - -=item Disconnect () - -Disconnects (and destroys) the instance of the named pipe from the -client. Returns I<true> on success, I<false> on failure. - -=item Error () - -Returns the last error messages pertaining to the named pipe. If used -in context to the package. Returns a list containing C<ERROR_NUMBER> -and C<ERROR_TEXT>. - -=item Read () - -Reads from the named pipe. Returns data read from the pipe on success, -undef on failure. - -=item ResizeBuffer ( SIZE ) - -Sets the size of the buffer of the instance of the named pipe to -C<SIZE>. Returns the size of the buffer on success, I<false> on -failure. - -=item Write ( DATA ) - -Writes C<DATA> to the named pipe. Returns I<true> on success, I<false> -on failure. - -=back - -=head1 LIMITATIONS - -What known problems does this thing have? - -=over - -=item * - -If someone is waiting on a C<Read> and the other end terminates then -you will wait for one B<REALLY> long time! (If anyone has an idea on -how I can detect the termination of the other end let me know!) - -=item * - -All pipes are blocking. I am considering using threads and callbacks -into Perl to perform async IO but this may be too much for my time -stress. ;) - -=item * - -There is no security placed on these pipes. - -=item * - -This module has neither been optimized for speed nor optimized for -memory consumption. This may run into memory bloat. - -=back - -=head1 INSTALLATION NOTES - -If you wish to use this module with a build of Perl other than -ActivePerl, you may wish to fetch the source distribution for this -module. The source is included as part of the C<libwin32> bundle, -which you can find in any CPAN mirror here: - - modules/by-authors/Gurusamy_Sarathy/libwin32-0.151.tar.gz - -The source distribution also contains a pair of sample client/server -test scripts. For the latest information on this module, consult the -following web site: - - http://www.roth.net/perl - -=head1 AUTHOR - -Dave Roth <rothd@roth.net> - -=head1 DISCLAIMER - -I do not guarantee B<ANYTHING> with this package. If you use it you -are doing so B<AT YOUR OWN RISK>! I may or may not support this -depending on my time schedule. - -=head1 COPYRIGHT - -Copyright (c) 1996 Dave Roth. 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/tlpkg/tlperl.old/lib/Win32/Process.pm b/Master/tlpkg/tlperl.old/lib/Win32/Process.pm deleted file mode 100644 index f07169b4080..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Process.pm +++ /dev/null @@ -1,217 +0,0 @@ -package Win32::Process; - -require Exporter; -require DynaLoader; -@ISA = qw(Exporter DynaLoader); - -$VERSION = '0.10'; - -# 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( - CREATE_DEFAULT_ERROR_MODE - CREATE_NEW_CONSOLE - CREATE_NEW_PROCESS_GROUP - CREATE_NO_WINDOW - CREATE_SEPARATE_WOW_VDM - CREATE_SUSPENDED - CREATE_UNICODE_ENVIRONMENT - DEBUG_ONLY_THIS_PROCESS - DEBUG_PROCESS - DETACHED_PROCESS - HIGH_PRIORITY_CLASS - IDLE_PRIORITY_CLASS - INFINITE - NORMAL_PRIORITY_CLASS - REALTIME_PRIORITY_CLASS - THREAD_PRIORITY_ABOVE_NORMAL - THREAD_PRIORITY_BELOW_NORMAL - THREAD_PRIORITY_ERROR_RETURN - THREAD_PRIORITY_HIGHEST - THREAD_PRIORITY_IDLE - THREAD_PRIORITY_LOWEST - THREAD_PRIORITY_NORMAL - THREAD_PRIORITY_TIME_CRITICAL -); - -@EXPORT_OK = qw( - STILL_ACTIVE -); - -sub AUTOLOAD { - # This AUTOLOAD is used to 'autoload' constants from the constant() - # XS function. - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - local $! = 0; - my $val = constant($constname); - if ($! != 0) { - my ($pack,$file,$line) = caller; - die "Your vendor has not defined Win32::Process macro $constname, used at $file line $line."; - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} # end AUTOLOAD - -bootstrap Win32::Process; - -# Win32::IPC > 1.02 uses the get_Win32_IPC_HANDLE method: -*get_Win32_IPC_HANDLE = \&get_process_handle; - -1; -__END__ - -=head1 NAME - -Win32::Process - Create and manipulate processes. - -=head1 SYNOPSIS - - use Win32::Process; - use Win32; - - sub ErrorReport{ - print Win32::FormatMessage( Win32::GetLastError() ); - } - - Win32::Process::Create($ProcessObj, - "C:\\winnt\\system32\\notepad.exe", - "notepad temp.txt", - 0, - NORMAL_PRIORITY_CLASS, - ".")|| die ErrorReport(); - - $ProcessObj->Suspend(); - $ProcessObj->Resume(); - $ProcessObj->Wait(INFINITE); - -=head1 DESCRIPTION - -This module provides access to the process control functions in the -Win32 API. - -=head1 METHODS - -=over 8 - -=item Win32::Process::Create($obj,$appname,$cmdline,$iflags,$cflags,$curdir) - -Creates a new process. - - Args: - - $obj container for process object - $appname full path name of executable module - $cmdline command line args - $iflags flag: inherit calling processes handles or not - $cflags flags for creation (see exported vars below) - $curdir working dir of new process - -Returns non-zero on success, 0 on failure. - -=item Win32::Process::Open($obj,$pid,$iflags) - -Creates a handle Perl can use to an existing process as identified by $pid. -The $iflags is the inherit flag that is passed to OpenProcess. Currently -Win32::Process objects created using Win32::Process::Open cannot Suspend -or Resume the process. All other calls should work. - -Win32::Process::Open returns non-zero on success, 0 on failure. - -=item Win32::Process::KillProcess($pid, $exitcode) - -Terminates any process identified by $pid. $exitcode will be set to -the exit code of the process. - -=item $ProcessObj->Suspend() - -Suspend the process associated with the $ProcessObj. - -=item $ProcessObj->Resume() - -Resume a suspended process. - -=item $ProcessObj->Kill($exitcode) - -Kill the associated process, have it terminate with exit code $ExitCode. - -=item $ProcessObj->GetPriorityClass($class) - -Get the priority class of the process. - -=item $ProcessObj->SetPriorityClass($class) - -Set the priority class of the process (see exported values below for -options). - -=item $ProcessObj->GetProcessAffinityMask($processAffinityMask, $systemAffinityMask) - -Get the process affinity mask. This is a bitvector in which each bit -represents the processors that a process is allowed to run on. - -=item $ProcessObj->SetProcessAffinityMask($processAffinityMask) - -Set the process affinity mask. Only available on Windows NT. - -=item $ProcessObj->GetExitCode($exitcode) - -Retrieve the exitcode of the process. Will return STILL_ACTIVE if the -process is still running. The STILL_ACTIVE constant is only exported -by explicit request. - -=item $ProcessObj->Wait($timeout) - -Wait for the process to die. $timeout should be specified in milliseconds. -To wait forever, specify the constant C<INFINITE>. - -=item $ProcessObj->GetProcessID() - -Returns the Process ID. - -=item Win32::Process::GetCurrentProcessID() - -Returns the current process ID, which is the same as $$. But not on cygwin, -where $$ is the cygwin-internal PID and not the windows PID. -On cygwin GetCurrentProcessID() returns the windows PID as needed for all -the Win32::Process functions. - -=back - -=head1 EXPORTS - -The following constants are exported by default: - - CREATE_DEFAULT_ERROR_MODE - CREATE_NEW_CONSOLE - CREATE_NEW_PROCESS_GROUP - CREATE_NO_WINDOW - CREATE_SEPARATE_WOW_VDM - CREATE_SUSPENDED - CREATE_UNICODE_ENVIRONMENT - DEBUG_ONLY_THIS_PROCESS - DEBUG_PROCESS - DETACHED_PROCESS - HIGH_PRIORITY_CLASS - IDLE_PRIORITY_CLASS - INFINITE - NORMAL_PRIORITY_CLASS - REALTIME_PRIORITY_CLASS - THREAD_PRIORITY_ABOVE_NORMAL - THREAD_PRIORITY_BELOW_NORMAL - THREAD_PRIORITY_ERROR_RETURN - THREAD_PRIORITY_HIGHEST - THREAD_PRIORITY_IDLE - THREAD_PRIORITY_LOWEST - THREAD_PRIORITY_NORMAL - THREAD_PRIORITY_TIME_CRITICAL - -The following additional constants are exported by request only: - - STILL_ACTIVE - -=cut - -# Local Variables: -# tmtrack-file-task: "Win32::Process" -# End: diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Registry.pm b/Master/tlpkg/tlperl.old/lib/Win32/Registry.pm deleted file mode 100644 index c83fca5a3b1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Registry.pm +++ /dev/null @@ -1,547 +0,0 @@ -package Win32::Registry; - -=head1 NAME - -Win32::Registry - accessing the Windows registry [obsolete, use Win32::TieRegistry] - -=head1 SYNOPSIS - - use Win32::Registry; - my $tips; - $::HKEY_LOCAL_MACHINE->Open("SOFTWARE\\Microsoft\\Windows" - ."\\CurrentVersion\\Explorer\\Tips", $tips) - or die "Can't open tips: $^E"; - my ($type, $value); - $tips->QueryValueEx("18", $type, $value) or die "No tip #18: $^E"; - print "Here's a tip: $value\n"; - -=head1 DESCRIPTION - - NOTE: This module provides a very klunky interface to access the - Windows registry, and is not currently being developed actively. It - only exists for backward compatibility with old code that uses it. - For more powerful and flexible ways to access the registry, use - Win32::TieRegistry. - -Win32::Registry provides an object oriented interface to the Windows -Registry. - -The following "root" registry objects are exported to the main:: name -space. Additional keys must be opened by calling the provided methods -on one of these. - - $HKEY_CLASSES_ROOT - $HKEY_CURRENT_USER - $HKEY_LOCAL_MACHINE - $HKEY_USERS - $HKEY_PERFORMANCE_DATA - $HKEY_CURRENT_CONFIG - $HKEY_DYN_DATA - -=cut - -use strict; -require Exporter; -require DynaLoader; -use Win32::WinError; - -require Win32 unless defined &Win32::GetLastError; - -use vars qw($VERSION $AUTOLOAD @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); - -$VERSION = '0.07'; - -@ISA = qw( Exporter DynaLoader ); -@EXPORT = qw( - HKEY_CLASSES_ROOT - HKEY_CURRENT_USER - HKEY_LOCAL_MACHINE - HKEY_PERFORMANCE_DATA - HKEY_CURRENT_CONFIG - HKEY_DYN_DATA - HKEY_USERS - KEY_ALL_ACCESS - KEY_CREATE_LINK - KEY_CREATE_SUB_KEY - KEY_ENUMERATE_SUB_KEYS - KEY_EXECUTE - KEY_NOTIFY - KEY_QUERY_VALUE - KEY_READ - KEY_SET_VALUE - KEY_WRITE - REG_BINARY - REG_CREATED_NEW_KEY - REG_DWORD - REG_DWORD_BIG_ENDIAN - REG_DWORD_LITTLE_ENDIAN - REG_EXPAND_SZ - REG_FULL_RESOURCE_DESCRIPTOR - REG_LEGAL_CHANGE_FILTER - REG_LEGAL_OPTION - REG_LINK - REG_MULTI_SZ - REG_NONE - REG_NOTIFY_CHANGE_ATTRIBUTES - REG_NOTIFY_CHANGE_LAST_SET - REG_NOTIFY_CHANGE_NAME - REG_NOTIFY_CHANGE_SECURITY - REG_OPENED_EXISTING_KEY - REG_OPTION_BACKUP_RESTORE - REG_OPTION_CREATE_LINK - REG_OPTION_NON_VOLATILE - REG_OPTION_RESERVED - REG_OPTION_VOLATILE - REG_REFRESH_HIVE - REG_RESOURCE_LIST - REG_RESOURCE_REQUIREMENTS_LIST - REG_SZ - REG_WHOLE_HIVE_VOLATILE -); - -@EXPORT_OK = qw( - RegCloseKey - RegConnectRegistry - RegCreateKey - RegCreateKeyEx - RegDeleteKey - RegDeleteValue - RegEnumKey - RegEnumValue - RegFlushKey - RegGetKeySecurity - RegLoadKey - RegNotifyChangeKeyValue - RegOpenKey - RegOpenKeyEx - RegQueryInfoKey - RegQueryValue - RegQueryValueEx - RegReplaceKey - RegRestoreKey - RegSaveKey - RegSetKeySecurity - RegSetValue - RegSetValueEx - RegUnLoadKey -); -$EXPORT_TAGS{ALL}= \@EXPORT_OK; - -bootstrap Win32::Registry; - -sub import { - my $pkg = shift; - if ($_[0] && "Win32" eq $_[0]) { - Exporter::export($pkg, "Win32", @EXPORT_OK); - shift; - } - Win32::Registry->export_to_level(1+$Exporter::ExportLevel, $pkg, @_); -} - -####################################################################### -# 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. - -sub AUTOLOAD { - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - #reset $! to zero to reset any current errors. - local $! = 0; - my $val = constant($constname, 0); - if ($! != 0) { - if ($! =~ /Invalid/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD; - } - else { - my ($pack,$file,$line) = caller; - die "Unknown constant $constname in Win32::Registry " - . "at $file line $line.\n"; - } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - -####################################################################### -# _new is a private constructor, not intended for public use. -# - -sub _new { - my $self; - if ($_[0]) { - $self->{'handle'} = $_[0]; - bless $self; - } - $self; -} - -#define the basic registry objects to be exported. -#these had to be hardwired unfortunately. -# XXX Yuck! - -{ - package main; - use vars qw( - $HKEY_CLASSES_ROOT - $HKEY_CURRENT_USER - $HKEY_LOCAL_MACHINE - $HKEY_USERS - $HKEY_PERFORMANCE_DATA - $HKEY_CURRENT_CONFIG - $HKEY_DYN_DATA - ); -} - -$::HKEY_CLASSES_ROOT = _new(&HKEY_CLASSES_ROOT); -$::HKEY_CURRENT_USER = _new(&HKEY_CURRENT_USER); -$::HKEY_LOCAL_MACHINE = _new(&HKEY_LOCAL_MACHINE); -$::HKEY_USERS = _new(&HKEY_USERS); -$::HKEY_PERFORMANCE_DATA = _new(&HKEY_PERFORMANCE_DATA); -$::HKEY_CURRENT_CONFIG = _new(&HKEY_CURRENT_CONFIG); -$::HKEY_DYN_DATA = _new(&HKEY_DYN_DATA); - -=head2 Methods - -The following methods are supported. Note that subkeys can be -specified as a path name, separated by backslashes (which may -need to be doubled if you put them in double quotes). - -=over 8 - -=item Open - - $reg_obj->Open($sub_key_name, $sub_reg_obj); - -Opens a subkey of a registry object, returning the new registry object -in $sub_reg_obj. - -=cut - -sub Open { - my $self = shift; - die 'usage: $obj->Open($sub_key_name, $sub_reg_obj)' if @_ != 2; - - my ($subkey) = @_; - my ($result,$subhandle); - - $result = RegOpenKey($self->{'handle'},$subkey,$subhandle); - $_[1] = _new($subhandle); - - return 0 unless $_[1]; - $! = Win32::GetLastError() unless $result; - return $result; -} - -=item Close - - $reg_obj->Close(); - -Closes an open registry key. - -=cut - -sub Close { - my $self = shift; - die 'usage: $obj->Close()' if @_ != 0; - - return unless exists $self->{'handle'}; - my $result = RegCloseKey($self->{'handle'}); - if ($result) { - delete $self->{'handle'}; - } - else { - $! = Win32::GetLastError(); - } - return $result; -} - -sub DESTROY { - my $self = shift; - return unless exists $self->{'handle'}; - RegCloseKey($self->{'handle'}); - delete $self->{'handle'}; -} - - -=item Connect - - $reg_obj->Connect($node_name, $new_reg_obj); - -Connects to a remote Registry on the node specified by $node_name, -returning it in $new_reg_obj. Returns false if it fails. - -=cut - -sub Connect { - my $self = shift; - die 'usage: $obj->Connect($node_name, $new_reg_obj)' if @_ != 2; - - my ($node) = @_; - my ($result,$subhandle); - - $result = RegConnectRegistry ($node, $self->{'handle'}, $subhandle); - $_[1] = _new($subhandle); - - return 0 unless $_[1]; - $! = Win32::GetLastError() unless $result; - return $result; -} - -=item Create - - $reg_obj->Create($sub_key_name, $new_reg_obj); - -Opens the subkey specified by $sub_key_name, returning the new registry -object in $new_reg_obj. If the specified subkey doesn't exist, it is -created. - -=cut - -sub Create { - my $self = shift; - die 'usage: $obj->Create($sub_key_name, $new_reg_obj)' if @_ != 2; - - my ($subkey) = @_; - my ($result,$subhandle); - - $result = RegCreateKey($self->{'handle'},$subkey,$subhandle); - $_[1] = _new ($subhandle); - - return 0 unless $_[1]; - $! = Win32::GetLastError() unless $result; - return $result; -} - -=item SetValue - - $reg_obj->SetValue($sub_key_name, $type, $value); - -Sets the default value for a subkey specified by $sub_key_name. - -=cut - -sub SetValue { - my $self = shift; - die 'usage: $obj->SetValue($subkey, $type, $value)' if @_ != 3; - my $result = RegSetValue($self->{'handle'}, @_); - $! = Win32::GetLastError() unless $result; - return $result; -} - -=item SetValueEx - - $reg_obj->SetValueEx($value_name, $reserved, $type, $value); - -Sets the value for the value name identified by $value_name -in the key specified by $reg_obj. - -=cut - -sub SetValueEx { - my $self = shift; - die 'usage: $obj->SetValueEx($value_name, $reserved, $type, $value)' if @_ != 4; - my $result = RegSetValueEx($self->{'handle'}, @_); - $! = Win32::GetLastError() unless $result; - return $result; -} - -=item QueryValue - - $reg_obj->QueryValue($sub_key_name, $value); - -Gets the default value of the subkey specified by $sub_key_name. - -=cut - -sub QueryValue { - my $self = shift; - die 'usage: $obj->QueryValue($sub_key_name, $value)' if @_ != 2; - my $result = RegQueryValue($self->{'handle'}, $_[0], $_[1]); - $! = Win32::GetLastError() unless $result; - return $result; -} - -=item QueryKey - - $reg_obj->QueryKey($classref, $number_of_subkeys, $number_of_values); - -Gets information on a key specified by $reg_obj. - -=cut - -sub QueryKey { - my $garbage; - my $self = shift; - die 'usage: $obj->QueryKey($classref, $number_of_subkeys, $number_of_values)' - if @_ != 3; - - my $result = RegQueryInfoKey($self->{'handle'}, $_[0], - $garbage, $garbage, $_[1], - $garbage, $garbage, $_[2], - $garbage, $garbage, $garbage, $garbage); - - $! = Win32::GetLastError() unless $result; - return $result; -} - -=item QueryValueEx - - $reg_obj->QueryValueEx($value_name, $type, $value); - -Gets the value for the value name identified by $value_name -in the key specified by $reg_obj. - -=cut - -sub QueryValueEx { - my $self = shift; - die 'usage: $obj->QueryValueEx($value_name, $type, $value)' if @_ != 3; - my $result = RegQueryValueEx($self->{'handle'}, $_[0], undef, $_[1], $_[2]); - $! = Win32::GetLastError() unless $result; - return $result; -} - -=item GetKeys - - my @keys; - $reg_obj->GetKeys(\@keys); - -Populates the supplied array reference with the names of all the keys -within the registry object $reg_obj. - -=cut - -sub GetKeys { - my $self = shift; - die 'usage: $obj->GetKeys($arrayref)' if @_ != 1 or ref($_[0]) ne 'ARRAY'; - - my ($result, $i, $keyname); - $keyname = "DummyVal"; - $i = 0; - $result = 1; - - while ( $result ) { - $result = RegEnumKey( $self->{'handle'},$i++, $keyname ); - if ($result) { - push( @{$_[0]}, $keyname ); - } - } - return(1); -} - -=item GetValues - - my %values; - $reg_obj->GetValues(\%values); - -Populates the supplied hash reference with entries of the form - - $value_name => [ $value_name, $type, $data ] - -for each value in the registry object $reg_obj. - -=cut - -sub GetValues { - my $self = shift; - die 'usage: $obj->GetValues($hashref)' if @_ != 1; - - my ($result,$name,$type,$data,$i); - $name = "DummyVal"; - $i = 0; - while ( $result=RegEnumValue( $self->{'handle'}, - $i++, - $name, - undef, - $type, - $data )) - { - $_[0]->{$name} = [ $name, $type, $data ]; - } - return(1); -} - -=item DeleteKey - - $reg_obj->DeleteKey($sub_key_name); - -Deletes a subkey specified by $sub_key_name from the registry. - -=cut - -sub DeleteKey { - my $self = shift; - die 'usage: $obj->DeleteKey($sub_key_name)' if @_ != 1; - my $result = RegDeleteKey($self->{'handle'}, @_); - $! = Win32::GetLastError() unless $result; - return $result; -} - -=item DeleteValue - - $reg_obj->DeleteValue($value_name); - -Deletes a value identified by $value_name from the registry. - -=cut - -sub DeleteValue { - my $self = shift; - die 'usage: $obj->DeleteValue($value_name)' if @_ != 1; - my $result = RegDeleteValue($self->{'handle'}, @_); - $! = Win32::GetLastError() unless $result; - return $result; -} - -=item Save - - $reg_obj->Save($filename); - -Saves the hive specified by $reg_obj to a file. - -=cut - -sub Save { - my $self = shift; - die 'usage: $obj->Save($filename)' if @_ != 1; - my $result = RegSaveKey($self->{'handle'}, @_); - $! = Win32::GetLastError() unless $result; - return $result; -} - -=item Load - - $reg_obj->Load($sub_key_name, $file_name); - -Loads a key specified by $sub_key_name from a file. - -=cut - -sub Load { - my $self = shift; - die 'usage: $obj->Load($sub_key_name, $file_name)' if @_ != 2; - my $result = RegLoadKey($self->{'handle'}, @_); - $! = Win32::GetLastError() unless $result; - return $result; -} - -=item UnLoad - - $reg_obj->Unload($sub_key_name); - -Unloads a registry hive. - -=cut - -sub UnLoad { - my $self = shift; - die 'usage: $obj->UnLoad($sub_key_name)' if @_ != 1; - my $result = RegUnLoadKey($self->{'handle'}, @_); - $! = Win32::GetLastError() unless $result; - return $result; -} - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Semaphore.pm b/Master/tlpkg/tlperl.old/lib/Win32/Semaphore.pm deleted file mode 100644 index 2e2096eb6ed..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Semaphore.pm +++ /dev/null @@ -1,128 +0,0 @@ -#--------------------------------------------------------------------- -package Win32::Semaphore; -# -# Copyright 1998 Christopher J. Madsen -# -# Created: 3 Feb 1998 from the ActiveWare version -# (c) 1995 Microsoft Corporation. All rights reserved. -# Developed by ActiveWare Internet Corp., http://www.ActiveWare.com -# -# Other modifications (c) 1997 by Gurusamy Sarathy <gsar@activestate.com> -# -# Author: Christopher J. Madsen <cjm@pobox.com> -# Version: 1.00 (6-Feb-1998) -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the -# GNU General Public License or the Artistic License for more details. -# -# Use Win32 semaphore objects for synchronization -#--------------------------------------------------------------------- - -$VERSION = '1.02'; - -use Win32::IPC 1.00 '/./'; # Import everything -require Exporter; -require DynaLoader; - -@ISA = qw(Exporter DynaLoader Win32::IPC); -@EXPORT_OK = qw( - wait_all wait_any -); - -bootstrap Win32::Semaphore; - -sub Create { $_[0] = new('Win32::Semaphore',@_[1..3]) } -sub Open { $_[0] = Win32::Semaphore->open($_[1]) } -sub Release { &release } - -1; -__END__ - -=head1 NAME - -Win32::Semaphore - Use Win32 semaphore objects from Perl - -=head1 SYNOPSIS - require Win32::Semaphore; - - $sem = Win32::Semaphore->new($initial,$maximum,$name); - $sem->wait; - -=head1 DESCRIPTION - -This module allows access to Win32 semaphore objects. The C<wait> -method and C<wait_all> & C<wait_any> functions are inherited from the -L<"Win32::IPC"> module. - -=head2 Methods - -=over 4 - -=item $semaphore = Win32::Semaphore->new($initial, $maximum, [$name]) - -Constructor for a new semaphore object. C<$initial> is the initial -count, and C<$maximum> is the maximum count for the semaphore. If -C<$name> is omitted, creates an unnamed semaphore object. - -If C<$name> signifies an existing semaphore object, then C<$initial> -and C<$maximum> are ignored and the object is opened. If this -happens, C<$^E> will be set to 183 (ERROR_ALREADY_EXISTS). - -=item $semaphore = Win32::Semaphore->open($name) - -Constructor for opening an existing semaphore object. - -=item $semaphore->release([$increment, [$previous]]) - -Increment the count of C<$semaphore> by C<$increment> (default 1). -If C<$increment> plus the semaphore's current count is more than its -maximum count, the count is not changed. Returns true if the -increment is successful. - -The semaphore's count (before incrementing) is stored in the second -argument (if any). - -It is not necessary to wait on a semaphore before calling C<release>, -but you'd better know what you're doing. - -=item $semaphore->wait([$timeout]) - -Wait for C<$semaphore>'s count to be nonzero, then decrement it by 1. -See L<"Win32::IPC">. - -=back - -=head2 Deprecated Functions and Methods - -B<Win32::Semaphore> still supports the ActiveWare syntax, but its use -is deprecated. - -=over 4 - -=item Win32::Semaphore::Create($SemObject,$Initial,$Max,$Name) - -Use C<$SemObject = Win32::Semaphore-E<gt>new($Initial,$Max,$Name)> instead. - -=item Win32::Semaphore::Open($SemObject, $Name) - -Use C<$SemObject = Win32::Semaphore-E<gt>open($Name)> instead. - -=item $SemObj->Release($Count,$LastVal) - -Use C<$SemObj-E<gt>release($Count,$LastVal)> instead. - -=back - -=head1 AUTHOR - -Christopher J. Madsen E<lt>F<cjm@pobox.com>E<gt> - -Loosely based on the original module by ActiveWare Internet Corp., -F<http://www.ActiveWare.com> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Server.pl b/Master/tlpkg/tlperl.old/lib/Win32/Server.pl deleted file mode 100644 index ecfb91ba864..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Server.pl +++ /dev/null @@ -1,48 +0,0 @@ -use strict; -use Win32::Pipe; - -my $PipeName = "TEST this long named pipe!"; -my $NewSize = 2048; -my $iMessage; - -while () { - print "Creating pipe \"$PipeName\".\n"; - if (my $Pipe = new Win32::Pipe($PipeName)) { - my $PipeSize = $Pipe->BufferSize(); - print "This pipe's current size is $PipeSize byte" . (($PipeSize == 1)? "":"s") . ".\nWe shall change it to $NewSize ..."; - print +(($Pipe->ResizeBuffer($NewSize) == $NewSize)? "Successful":"Unsucessful") . "!\n\n"; - - print "\n\nR e a d y f o r r e a d i n g :\n"; - print "-----------------------------------\n"; - - print "Openning the pipe...\n"; - while ($Pipe->Connect()) { - while () { - ++$iMessage; - print "Reading Message #$iMessage: "; - my $In = $Pipe->Read(); - unless ($In) { - print "Recieved no data, closing connection....\n"; - last; - } - if ($In =~ /^quit/i){ - print "\n\nQuitting this connection....\n"; - last; - } - elsif ($In =~ /^exit/i){ - print "\n\nExitting.....\n"; - exit; - } - else{ - print "\"$In\"\n"; - } - } - print "Disconnecting...\n"; - $Pipe->Disconnect(); - } - print "Closing...\n"; - $Pipe->Close(); - } -} - -print "You can't get here...\n"; diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Service.pm b/Master/tlpkg/tlperl.old/lib/Win32/Service.pm deleted file mode 100644 index 0ae33b13ef8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Service.pm +++ /dev/null @@ -1,103 +0,0 @@ -package Win32::Service; - -# -# Service.pm -# Written by Douglas_Lankshear@ActiveWare.com -# -# subsequently hacked by Gurusamy Sarathy <gsar@activestate.com> -# - -$VERSION = '0.05'; - -require Exporter; -require DynaLoader; - -require Win32 unless defined &Win32::IsWinNT; -die "The Win32::Service module works only on Windows NT" unless Win32::IsWinNT(); - -@ISA= qw( Exporter DynaLoader ); -@EXPORT_OK = - qw( - StartService - StopService - GetStatus - PauseService - ResumeService - GetServices - ); - -=head1 NAME - -Win32::Service - manage system services in perl - -=head1 SYNOPSIS - - use Win32::Service; - -=head1 DESCRIPTION - -This module offers control over the administration of system services. - -=head1 FUNCTIONS - -=head2 NOTE: - -All of the functions return false if they fail, unless otherwise noted. -If hostName is an empty string, the local machine is assumed. - -=over 10 - -=item StartService(hostName, serviceName) - -Start the service serviceName on machine hostName. - -=item StopService(hostName, serviceName) - -Stop the service serviceName on the machine hostName. - -=item GetStatus(hostName, serviceName, status) - -Get the status of a service. The third argument must be a hash -reference that will be populated with entries corresponding -to the SERVICE_STATUS structure of the Win32 API. See the -Win32 Platform SDK documentation for details of this structure. - -=item PauseService(hostName, serviceName) - -=item ResumeService(hostName, serviceName) - -=item GetServices(hostName, hashref) - -Enumerates both active and inactive Win32 services at the specified host. -The hashref is populated with the descriptive service names as keys -and the short names as the values. - -=back - -=cut - -sub AUTOLOAD -{ - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - #reset $! to zero to reset any current errors. - local $! = 0; - my $val = constant($constname); - if ($! != 0) { - if($! =~ /Invalid/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD; - } - else { - ($pack,$file,$line) = caller; - die "Your vendor has not defined Win32::Service macro $constname, used in $file at line $line."; - } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - -bootstrap Win32::Service; - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Shortcut.pm b/Master/tlpkg/tlperl.old/lib/Win32/Shortcut.pm deleted file mode 100644 index d4dadafdcf2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Shortcut.pm +++ /dev/null @@ -1,323 +0,0 @@ -package Win32::Shortcut; -####################################################################### -# -# Win32::Shortcut - Perl Module for Shell Link Interface -# ^^^^^^^^^^^^^^^ -# This module creates an object oriented interface to the Win32 -# Shell Links (IShellLink interface). -# -####################################################################### - -$VERSION = "0.04"; - -require Exporter; -require DynaLoader; - -@ISA= qw( Exporter DynaLoader ); -@EXPORT = qw( - SW_SHOWMAXIMIZED - SW_SHOWMINNOACTIVE - SW_SHOWNORMAL -); - - -####################################################################### -# 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. -# - -sub AUTOLOAD { - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - #reset $! to zero to reset any current errors. - local $!; - my $val = constant($constname, @_ ? $_[0] : 0); - if ($!) { - my(undef, $file, $line) = caller; - die "Win32::Shortcut::$constname is not defined, used at $file line $line."; - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - - -####################################################################### -# PUBLIC METHODS -# - -#======== -sub new { -#======== - my($class, $file) = @_; - my $self = {}; - my $ilink = 0; - my $ifile = 0; - - ($ilink, $ifile) = _Instance(); - - if($ilink and $ifile) { - $self->{'ilink'} = $ilink; - $self->{'ifile'} = $ifile; - bless $self; - # Initialize properties - $self->{'File'} = ""; - $self->{'Path'} = ""; - $self->{'Arguments'} = ""; - $self->{'WorkingDirectory'} = ""; - $self->{'Description'} = ""; - $self->{'ShowCmd'} = 0; - $self->{'Hotkey'} = 0; - $self->{'IconLocation'} = ""; - $self->{'IconNumber'} = 0; - - $self->Load($file) if $file; - - } else { - return undef; - } - $self; -} - -#========= -sub Load { -#========= - my($self, $file) = @_; - return undef unless ref($self); - - my $result = _Load($self->{'ilink'}, $self->{'ifile'}, $file); - - if ($result) { - - # fill the properties of $self - $self->{'File'} = $file; - $self->{'Path'} = _GetPath($self->{'ilink'}, $self->{'ifile'},0); - $self->{'ShortPath'} = _GetPath($self->{'ilink'}, $self->{'ifile'},1); - $self->{'Arguments'} = _GetArguments($self->{'ilink'}, $self->{'ifile'}); - $self->{'WorkingDirectory'} = _GetWorkingDirectory($self->{'ilink'}, $self->{'ifile'}); - $self->{'Description'} = _GetDescription($self->{'ilink'}, $self->{'ifile'}); - $self->{'ShowCmd'} = _GetShowCmd($self->{'ilink'}, $self->{'ifile'}); - $self->{'Hotkey'} = _GetHotkey($self->{'ilink'}, $self->{'ifile'}); - ($self->{'IconLocation'}, - $self->{'IconNumber'}) = _GetIconLocation($self->{'ilink'}, $self->{'ifile'}); - } - return $result; -} - - -#======== -sub Set { -#======== - my($self, $path, $arguments, $dir, $description, $show, $hotkey, - $iconlocation, $iconnumber) = @_; - return undef unless ref($self); - - $self->{'Path'} = $path; - $self->{'Arguments'} = $arguments; - $self->{'WorkingDirectory'} = $dir; - $self->{'Description'} = $description; - $self->{'ShowCmd'} = $show; - $self->{'Hotkey'} = $hotkey; - $self->{'IconLocation'} = $iconlocation; - $self->{'IconNumber'} = $iconnumber; - return 1; -} - - -#========= -sub Save { -#========= - my($self, $file) = @_; - return unless ref($self); - - $file = $self->{'File'} unless $file; - return unless $file; - - require Win32 unless defined &Win32::GetFullPathName; - $file = Win32::GetFullPathName($file); - - _SetPath($self->{'ilink'}, $self->{'ifile'}, $self->{'Path'}); - _SetArguments($self->{'ilink'}, $self->{'ifile'}, $self->{'Arguments'}); - _SetWorkingDirectory($self->{'ilink'}, $self->{'ifile'}, $self->{'WorkingDirectory'}); - _SetDescription($self->{'ilink'}, $self->{'ifile'}, $self->{'Description'}); - _SetShowCmd($self->{'ilink'}, $self->{'ifile'}, $self->{'ShowCmd'}); - _SetHotkey($self->{'ilink'}, $self->{'ifile'}, $self->{'Hotkey'}); - _SetIconLocation($self->{'ilink'}, $self->{'ifile'}, - $self->{'IconLocation'}, $self->{'IconNumber'}); - - my $result = _Save($self->{'ilink'}, $self->{'ifile'}, $file); - if ($result) { - $self->{'File'} = $file unless $self->{'File'}; - } - return $result; -} - -#============ -sub Resolve { -#============ - my($self, $flags) = @_; - return undef unless ref($self); - $flags = 1 unless defined($flags); - my $result = _Resolve($self->{'ilink'}, $self->{'ifile'}, $flags); - return $result; -} - - -#========== -sub Close { -#========== - my($self) = @_; - return undef unless ref($self); - - my $result = _Release($self->{'ilink'}, $self->{'ifile'}); - $self->{'released'} = 1; - return $result; -} - -#========= -sub Path { -#========= - my($self, $value) = @_; - return undef unless ref($self); - - if(not defined($value)) { - return $self->{'Path'}; - } else { - $self->{'Path'} = $value; - } - return $self->{'Path'}; -} - -#============== -sub ShortPath { -#============== - my($self) = @_; - return undef unless ref($self); - return $self->{'ShortPath'}; -} - -#============== -sub Arguments { -#============== - my($self, $value) = @_; - return undef unless ref($self); - - if(not defined($value)) { - return $self->{'Arguments'}; - } else { - $self->{'Arguments'} = $value; - } - return $self->{'Arguments'}; -} - -#===================== -sub WorkingDirectory { -#===================== - my($self, $value) = @_; - return undef unless ref($self); - - if(not defined($value)) { - return $self->{'WorkingDirectory'}; - } else { - $self->{'WorkingDirectory'} = $value; - } - return $self->{'WorkingDirectory'}; -} - - -#================ -sub Description { -#================ - my($self, $value) = @_; - return undef unless ref($self); - - if(not defined($value)) { - return $self->{'Description'}; - } else { - $self->{'Description'} = $value; - } - return $self->{'Description'}; -} - -#============ -sub ShowCmd { -#============ - my($self, $value) = @_; - return undef unless ref($self); - - if(not defined($value)) { - return $self->{'ShowCmd'}; - } else { - $self->{'ShowCmd'} = $value; - } - return $self->{'ShowCmd'}; -} - -#=========== -sub Hotkey { -#=========== - my($self, $value) = @_; - return undef unless ref($self); - - if(not defined($value)) { - return $self->{'Hotkey'}; - } else { - $self->{'Hotkey'} = $value; - } - return $self->{'Hotkey'}; -} - -#================= -sub IconLocation { -#================= - my($self, $value) = @_; - return undef unless ref($self); - - if(not defined($value)) { - return $self->{'IconLocation'}; - } else { - $self->{'IconLocation'} = $value; - } - return $self->{'IconLocation'}; -} - -#=============== -sub IconNumber { -#=============== - my($self, $value) = @_; - return undef unless ref($self); - - if(not defined($value)) { - return $self->{'IconNumber'}; - } else { - $self->{'IconNumber'} = $value; - } - return $self->{'IconNumber'}; -} - -#============ -sub Version { -#============ - # [dada] to get rid of the "used only once" warning... - return $VERSION; -} - - -####################################################################### -# PRIVATE METHODS -# - -#============ -sub DESTROY { -#============ - my($self) = @_; - - if (not $self->{'released'}) { - _Release($self->{'ilink'}, $self->{'ifile'}); - $self->{'released'} = 1; - } -} - -bootstrap Win32::Shortcut; - -1; diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Sound.pm b/Master/tlpkg/tlperl.old/lib/Win32/Sound.pm deleted file mode 100644 index a8d52a95117..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Sound.pm +++ /dev/null @@ -1,582 +0,0 @@ -####################################################################### -# -# Win32::Sound - An extension to play with Windows sounds -# -# Author: Aldo Calpini <dada@divinf.it> -# Version: 0.47 -# Info: -# http://www.divinf.it/dada/perl -# http://www.perl.com/CPAN/authors/Aldo_Calpini -# -####################################################################### -# Version history: -# 0.01 (19 Nov 1996) file created -# 0.03 (08 Apr 1997) first release -# 0.30 (20 Oct 1998) added Volume/Format/Devices/DeviceInfo -# (thanks Dave Roth!) -# 0.40 (16 Mar 1999) added the WaveOut object -# 0.45 (09 Apr 1999) added $! support, documentation et goodies -# 0.46 (25 Sep 1999) fixed small bug in DESTROY, wo was used without being -# initialized (Gurusamy Sarathy <gsar@activestate.com>) -# 0.47 (22 May 2000) support for passing Unicode string to Play() -# (Doug Lankshear <dougl@activestate.com>) - -package Win32::Sound; - -# See the bottom of this file for the POD documentation. -# Search for the string '=head'. - -require Exporter; # to export the constants to the main:: space -require DynaLoader; # to dynuhlode the module. - -@ISA= qw( Exporter DynaLoader ); -@EXPORT = qw( - SND_ASYNC - SND_NODEFAULT - SND_LOOP - SND_NOSTOP -); - -####################################################################### -# 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. -# - -sub AUTOLOAD { - my($constname); - ($constname = $AUTOLOAD) =~ s/.*:://; - #reset $! to zero to reset any current errors. - local $! = 0; - my $val = constant($constname, @_ ? $_[0] : 0); - if ($! != 0) { - - # [dada] This results in an ugly Autoloader error - - #if ($! =~ /Invalid/) { - # $AutoLoader::AUTOLOAD = $AUTOLOAD; - # goto &AutoLoader::AUTOLOAD; - #} else { - - # [dada] ... I prefer this one :) - - ($pack, $file, $line) = caller; - undef $pack; # [dada] and get rid of "used only once" warning... - die "Win32::Sound::$constname is not defined, used at $file line $line."; - - #} - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - - -####################################################################### -# STATIC OBJECT PROPERTIES -# -$VERSION="0.47"; -undef unless $VERSION; # [dada] to avoid "possible typo" warning - -####################################################################### -# METHODS -# - -sub Version { $VERSION } - -sub Volume { - my(@in) = @_; - # Allows '0%'..'100%' - $in[0] =~ s{ ([\d\.]+)%$ }{ int($1*100/255) }ex if defined $in[0]; - $in[1] =~ s{ ([\d\.]+)%$ }{ int($1*100/255) }ex if defined $in[1]; - _Volume(@in); -} - -####################################################################### -# dynamically load in the Sound.dll module. -# - -bootstrap Win32::Sound; - -####################################################################### -# Win32::Sound::WaveOut -# - -package Win32::Sound::WaveOut; - -sub new { - my($class, $one, $two, $three) = @_; - my $self = {}; - bless($self, $class); - - if($one !~ /^\d+$/ - and not defined($two) - and not defined($three)) { - # Looks like a file - $self->Open($one); - } else { - # Default format if not given - $self->{samplerate} = ($one or 44100); - $self->{bits} = ($two or 16); - $self->{channels} = ($three or 2); - $self->OpenDevice(); - } - return $self; -} - -sub Volume { - my(@in) = @_; - # Allows '0%'..'100%' - $in[0] =~ s{ ([\d\.]+)%$ }{ int($1*255/100) }ex if defined $in[0]; - $in[1] =~ s{ ([\d\.]+)%$ }{ int($1*255/100) }ex if defined $in[1]; - _Volume(@in); -} - -sub Pitch { - my($self, $pitch) = @_; - my($int, $frac); - if(defined($pitch)) { - $pitch =~ /(\d+).?(\d+)?/; - $int = $1; - $frac = $2 or 0; - $int = $int << 16; - $frac = eval("0.$frac * 65536"); - $pitch = $int + $frac; - return _Pitch($self, $pitch); - } else { - $pitch = _Pitch($self); - $int = ($pitch & 0xFFFF0000) >> 16; - $frac = $pitch & 0x0000FFFF; - return eval("$int.$frac"); - } -} - -sub PlaybackRate { - my($self, $rate) = @_; - my($int, $frac); - if(defined($rate)) { - $rate =~ /(\d+).?(\d+)?/; - $int = $1; - $frac = $2 or 0; - $int = $int << 16; - $frac = eval("0.$frac * 65536"); - $rate = $int + $frac; - return _PlaybackRate($self, $rate); - } else { - $rate = _PlaybackRate($self); - $int = ($rate & 0xFFFF0000) >> 16; - $frac = $rate & 0x0000FFFF; - return eval("$int.$frac"); - } -} - -# Preloaded methods go here. - -#Currently Autoloading is not implemented in Perl for win32 -# Autoload methods go after __END__, and are processed by the autosplit program. - -1; -__END__ - - -=head1 NAME - -Win32::Sound - An extension to play with Windows sounds - -=head1 SYNOPSIS - - use Win32::Sound; - Win32::Sound::Volume('100%'); - Win32::Sound::Play("file.wav"); - Win32::Sound::Stop(); - - # ...and read on for more fun ;-) - -=head1 FUNCTIONS - -=over 4 - -=item B<Win32::Sound::Play(SOUND, [FLAGS])> - -Plays the specified sound: SOUND can the be name of a WAV file -or one of the following predefined sound names: - - SystemDefault - SystemAsterisk - SystemExclamation - SystemExit - SystemHand - SystemQuestion - SystemStart - -Additionally, if the named sound could not be found, the -function plays the system default sound (unless you specify the -C<SND_NODEFAULT> flag). If no parameters are given, this function -stops the sound actually playing (see also Win32::Sound::Stop). - -FLAGS can be a combination of the following constants: - -=over 4 - -=item C<SND_ASYNC> - -The sound is played asynchronously and the function -returns immediately after beginning the sound -(if this flag is not specified, the sound is -played synchronously and the function returns -when the sound ends). - -=item C<SND_LOOP> - -The sound plays repeatedly until it is stopped. -You must also specify C<SND_ASYNC> flag. - -=item C<SND_NODEFAULT> - -No default sound is used. If the specified I<sound> -cannot be found, the function returns without -playing anything. - -=item C<SND_NOSTOP> - -If a sound is already playing, the function fails. -By default, any new call to the function will stop -previously playing sounds. - -=back - -=item B<Win32::Sound::Stop()> - -Stops the sound currently playing. - -=item B<Win32::Sound::Volume()> - -Returns the wave device volume; if -called in an array context, returns left -and right values. Otherwise, returns a single -32 bit value (left in the low word, right -in the high word). -In case of error, returns C<undef> and sets -$!. - -Examples: - - ($L, $R) = Win32::Sound::Volume(); - if( not defined Win32::Sound::Volume() ) { - die "Can't get volume: $!"; - } - -=item B<Win32::Sound::Volume(LEFT, [RIGHT])> - -Sets the wave device volume; if two arguments -are given, sets left and right channels -independently, otherwise sets them both to -LEFT (eg. RIGHT=LEFT). Values range from -0 to 65535 (0xFFFF), but they can also be -given as percentage (use a string containing -a number followed by a percent sign). - -Returns C<undef> and sets $! in case of error, -a true value if successful. - -Examples: - - Win32::Sound::Volume('50%'); - Win32::Sound::Volume(0xFFFF, 0x7FFF); - Win32::Sound::Volume('100%', '50%'); - Win32::Sound::Volume(0); - -=item B<Win32::Sound::Format(filename)> - -Returns information about the specified WAV file format; -the array contains: - -=over - -=item * sample rate (in Hz) - -=item * bits per sample (8 or 16) - -=item * channels (1 for mono, 2 for stereo) - -=back - -Example: - - ($hz, $bits, $channels) - = Win32::Sound::Format("file.wav"); - - -=item B<Win32::Sound::Devices()> - -Returns all the available sound devices; -their names contain the type of the -device (WAVEOUT, WAVEIN, MIDIOUT, -MIDIIN, AUX or MIXER) and -a zero-based ID number: valid devices -names are for example: - - WAVEOUT0 - WAVEOUT1 - WAVEIN0 - MIDIOUT0 - MIDIIN0 - AUX0 - AUX1 - AUX2 - -There are also two special device -names, C<WAVE_MAPPER> and C<MIDI_MAPPER> -(the default devices for wave output -and midi output). - -Example: - - @devices = Win32::Sound::Devices(); - -=item Win32::Sound::DeviceInfo(DEVICE) - -Returns an associative array of information -about the sound device named DEVICE (the -same format of Win32::Sound::Devices). - -The content of the array depends on the device -type queried. Each device type returns B<at least> -the following information: - - manufacturer_id - product_id - name - driver_version - -For additional data refer to the following -table: - - WAVEIN..... formats - channels - - WAVEOUT.... formats - channels - support - - MIDIOUT.... technology - voices - notes - channels - support - - AUX........ technology - support - - MIXER...... destinations - support - -The meaning of the fields, where not -obvious, can be evinced from the -Microsoft SDK documentation (too long -to report here, maybe one day... :-). - -Example: - - %info = Win32::Sound::DeviceInfo('WAVE_MAPPER'); - print "$info{name} version $info{driver_version}\n"; - -=back - -=head1 THE WaveOut PACKAGE - -Win32::Sound also provides a different, more -powerful approach to wave audio data with its -C<WaveOut> package. It has methods to load and -then play WAV files, with the additional feature -of specifying the start and end range, so you -can play only a portion of an audio file. - -Furthermore, it is possible to load arbitrary -binary data to the soundcard to let it play and -save them back into WAV files; in a few words, -you can do some sound synthesis work. - -=head2 FUNCTIONS - -=over - -=item new Win32::Sound::WaveOut(FILENAME) - -=item new Win32::Sound::WaveOut(SAMPLERATE, BITS, CHANNELS) - -=item new Win32::Sound::WaveOut() - -This function creates a C<WaveOut> object; the -first form opens the specified wave file (see -also C<Open()> ), so you can directly C<Play()> it. - -The second (and third) form opens the -wave output device with the format given -(or if none given, defaults to 44.1kHz, -16 bits, stereo); to produce something -audible you can either C<Open()> a wave file -or C<Load()> binary data to the soundcard -and then C<Write()> it. - -=item Close() - -Closes the wave file currently opened. - -=item CloseDevice() - -Closes the wave output device; you can change -format and reopen it with C<OpenDevice()>. - -=item GetErrorText(ERROR) - -Returns the error text associated with -the specified ERROR number; note it only -works for wave-output-specific errors. - -=item Load(DATA) - -Loads the DATA buffer in the soundcard. -The format of the data buffer depends -on the format used; for example, with -8 bit mono each sample is one character, -while with 16 bit stereo each sample is -four characters long (two 16 bit values -for left and right channels). The sample -rate defines how much samples are in one -second of sound. For example, to fit one -second at 44.1kHz 16 bit stereo your buffer -must contain 176400 bytes (44100 * 4). - -=item Open(FILE) - -Opens the specified wave FILE. - -=item OpenDevice() - -Opens the wave output device with the -current sound format (not needed unless -you used C<CloseDevice()>). - -=item Pause() - -Pauses the sound currently playing; -use C<Restart()> to continue playing. - -=item Play( [FROM, TO] ) - -Plays the opened wave file. You can optionally -specify a FROM - TO range, where FROM and TO -are expressed in samples (or use FROM=0 for the -first sample and TO=-1 for the last sample). -Playback happens always asynchronously, eg. in -the background. - -=item Position() - -Returns the sample number currently playing; -note that the play position is not zeroed -when the sound ends, so you have to call a -C<Reset()> between plays to receive the -correct position in the current sound. - -=item Reset() - -Stops playing and resets the play position -(see C<Position()>). - -=item Restart() - -Continues playing the sound paused by C<Pause()>. - -=item Save(FILE, [DATA]) - -Writes the DATA buffer (if not given, uses the -buffer currently loaded in the soundcard) -to the specified wave FILE. - -=item Status() - -Returns 0 if the soundcard is currently playing, -1 if it's free, or C<undef> on errors. - -=item Unload() - -Frees the soundcard from the loaded data. - -=item Volume( [LEFT, RIGHT] ) - -Gets or sets the volume for the wave output device. -It works the same way as Win32::Sound::Volume. - -=item Write() - -Plays the data currently loaded in the soundcard; -playback happens always asynchronously, eg. in -the background. - -=back - -=head2 THE SOUND FORMAT - -The sound format is stored in three properties of -the C<WaveOut> object: C<samplerate>, C<bits> and -C<channels>. -If you need to change them without creating a -new object, you should close before and reopen -afterwards the device. - - $WAV->CloseDevice(); - $WAV->{samplerate} = 44100; # 44.1kHz - $WAV->{bits} = 8; # 8 bit - $WAV->{channels} = 1; # mono - $WAV->OpenDevice(); - -You can also use the properties to query the -sound format currently used. - -=head2 EXAMPLE - -This small example produces a 1 second sinusoidal -wave at 440Hz and saves it in F<sinus.wav>: - - use Win32::Sound; - - # Create the object - $WAV = new Win32::Sound::WaveOut(44100, 8, 2); - - $data = ""; - $counter = 0; - $increment = 440/44100; - - # Generate 44100 samples ( = 1 second) - for $i (1..44100) { - - # Calculate the pitch - # (range 0..255 for 8 bits) - $v = sin($counter/2*3.14) * 128 + 128; - - # "pack" it twice for left and right - $data .= pack("cc", $v, $v); - - $counter += $increment; - } - - $WAV->Load($data); # get it - $WAV->Write(); # hear it - 1 until $WAV->Status(); # wait for completion - $WAV->Save("sinus.wav"); # write to disk - $WAV->Unload(); # drop it - -=head1 VERSION - -Win32::Sound version 0.46, 25 Sep 1999. - -=head1 AUTHOR - -Aldo Calpini, C<dada@divinf.it> - -Parts of the code provided and/or suggested by Dave Roth. - -=cut - - diff --git a/Master/tlpkg/tlperl.old/lib/Win32/Test.pl b/Master/tlpkg/tlperl.old/lib/Win32/Test.pl deleted file mode 100644 index 235e94bdd78..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/Test.pl +++ /dev/null @@ -1,477 +0,0 @@ -##### -# T E S T . P L -# ------------- -# A test script for exercising the Win32::ODBC extension. Install -# the ODBC.PLL extension and the ODBC.PM wrapper, set up an ODBC -# DSN (Data Source Name) by the ODBC administrator, then give this a try! -# -# READ THE DOCUMENTATION -- I AM NOT RESPOSIBLE FOR ANY PROBLEMS THAT -# THIS MAY CAUSE WHATSOEVER. BY USING THIS OR ANY --- -# OF THE WIN32::ODBC PARTS FOUND IN THE DISTRIBUTION YOU ARE AGREEING -# WITH THE TERMS OF THIS DISTRIBUTION!!!!! -# -# -# You have been warned. -# --- ---- ---- ------ -# -# Updated to test newest version v961007. Dave Roth <rothd@roth.net> -# This version contains a small sample database (in MS Access 7.0 -# format) called ODBCTest.mdb. Place this database in the same -# directory as this test.pl file. -# -# -------------------------------------------------------------------- -# -# SYNTAX: -# perl test.pl ["DSN Name" [Max Rows]] -# -# DSN Name....Name of DSN that will be used. If this is -# omitted then we will use the obnoxious default DSN. -# Max Rows....Maximum number of rows wanted to be retrieved from -# the DSN. -# - If this is 0 then the request is to retrieve as -# many as possible. -# - If this is a value greater than that which the DSN -# driver can handle the value will be the greatest -# the DSN driver allows. -# - If omitted then we use the default value. -##### - - use Win32::ODBC; - - - $TempDSN = "Win32 ODBC Test --123xxYYzz987--"; - $iTempDSN = 1; - - if (!($DSN = $ARGV[0])){ - $DSN = $TempDSN; - } - $MaxRows = 8 unless defined ($MaxRows = $ARGV[1]); - - $DriverType = "Microsoft Access Driver (*.mdb)"; - $Desc = "Description=The Win32::ODBC Test DSN for Perl"; - $Dir = Win32::GetCwd(); - $DBase = "ODBCTest.mdb"; - - $iWidth=60; - %SQLStmtTypes = (SQL_CLOSE, "SQL_CLOSE", SQL_DROP, "SQL_DROP", SQL_UNBIND, "SQL_UNBIND", SQL_RESET_PARAMS, "SQL_RESET_PARAMS"); - -# Initialize(); - - ($Name, $Version, $Date, $Author, $CompileDate, $CompileTime, $Credits) = Win32::ODBC::Info(); - print "\n"; - print "\t+", "=" x ($iWidth), "+\n"; - print "\t|", Center("", $iWidth), "|\n"; - print "\t|", Center("", $iWidth), "|\n"; - print "\t|", Center("$Name", $iWidth), "|\n"; - print "\t|", Center("-" x length("$Name"), $iWidth), "|\n"; - print "\t|", Center("", $iWidth), "|\n"; - - print "\t|", Center("Version $Version ($Date)", $iWidth), "|\n"; - print "\t|", Center("by $Author", $iWidth), "|\n"; - print "\t|", Center("Compiled on $CompileDate at $CompileTime.", $iWidth), "|\n"; - print "\t|", Center("", $iWidth), "|\n"; - print "\t|", Center("Credits:", $iWidth), "|\n"; - print "\t|", Center(("-" x length("Credits:")), $iWidth), "|\n"; - foreach $Temp (split("\n", $Credits)){ - print "\t|", Center("$Temp", $iWidth), "|\n"; - } - print "\t|", Center("", $iWidth), "|\n"; - print "\t+", "=" x ($iWidth), "+\n"; - -#### -# T E S T 1 -#### - PrintTest(1, "Dump available ODBC Drivers"); - print "\nAvailable ODBC Drivers:\n"; - if (!(%Drivers = Win32::ODBC::Drivers())){ - $Failed{'Test 1'} = "Drivers(): " . Win32::ODBC::Error(); - } - foreach $Driver (keys(%Drivers)){ - print " Driver=\"$Driver\"\n Attributes: ", join("\n" . " "x14, sort(split(';', $Drivers{$Driver}))), "\n\n"; - } - - -#### -# T E S T 2 -#### - PrintTest(2,"Dump available datasources"); - - #### - # Notice you don't need an instantiated object to use this... - #### - print "\nHere are the available datasources...\n"; - if (!(%DSNs = Win32::ODBC::DataSources())){ - $Failed{'Test 2'} = "DataSources(): " . Win32::ODBC::Error(); - } - foreach $Temp (keys(%DSNs)){ - if (($Temp eq $TempDSN) && ($DSNs{$Temp} eq $DriverType)){ - $iTempDSNExists++; - } - if ($DSN =~ /$Temp/i){ - $iTempDSN = 0; - $DriverType = $DSNs{$Temp}; - } - print "\tDSN=\"$Temp\" (\"$DSNs{$Temp}\")\n"; - } - -#### -# T E S T 2.5 -#### - # IF WE DO NOT find the DSN the user specified... - if ($iTempDSN){ - PrintTest("2.5", "Create a Temporary DSN"); - - print "\n\tCould not find the DSN (\"$DSN\") so we will\n\tuse a temporary one (\"$TempDSN\")...\n\n"; - - $DSN = $TempDSN; - - if (! $iTempDSNExists){ - print "\tAdding DSN \"$DSN\"..."; - if (Win32::ODBC::ConfigDSN(ODBC_ADD_DSN, $DriverType, ("DSN=$DSN", "Description=The Win32 ODBC Test DSN for Perl", "DBQ=$Dir\\$DBase", "DEFAULTDIR=$Dir", "UID=", "PWD="))){ - print "Successful!\n"; - }else{ - print "Failure\n"; - $Failed{'Test 2.5'} = "ConfigDSN(): Could not add \"$DSN\": " . Win32::ODBC::Error(); - # If we failed here then use the last DSN we listed in Test 2 - $DriverType = $DSNs{$Temp}; - $DSN = $Temp; - print "\n\tCould not add a temporary DSN so using the last one listed:\n"; - print "\t\t$DSN ($DriverType)\n"; - - } - } - } - -#### -# Report What Driver/DSN we are using -#### - - print "\n\nWe are using the DSN:\n\tDSN = \"$DSN\"\n"; - print "\tDriver = \"$DriverType\"\n\n"; - - -#### -# T E S T 3 -#### - PrintTest(3, "Open several ODBC connections"); - print "\n\tOpening ODBC connection for \"$DSN\"...\n\t\t"; - if (!($O = new Win32::ODBC($DSN))){ - print "Failure. \n\n"; - $Failed{'Test 3a'} = "new(): " . Win32::ODBC::Error(); - PresentErrors(); - exit(); - }else{ - print "Success (connection #", $O->Connection(), ")\n\n"; - } - - print "\tOpening ODBC connection for \"$DSN\"...\n\t\t"; - if (!($O2 = new Win32::ODBC($DSN))){ - $Failed{'Test 3b'} = "new(): " . Win32::ODBC::Error(); - print "Failure. \n\n"; - }else{ - print "Success (connection #", $O2->Connection(), ")\n\n"; - } - - print "\tOpening ODBC connection for \"$DSN\"\n\t\t"; - if (!($O3 = new Win32::ODBC($DSN))){ - $Failed{'Test 3c'} = "new(): " . Win32::ODBC::Error(); - print "Failure. \n\n"; - }else{ - print "Success (connection #", $O3->Connection(), ")\n\n"; - } - - -#### -# T E S T 4 -#### - PrintTest(4, "Close all but one connection"); - - print "\n\tCurrently open ODBC connections are: \"", join(", ", sort($O2->GetConnections())), "\"\n"; - print "\tClosing ODBC connection #", $O2->Connection(), "...\n"; - print "\t\t...", (($O2->Close())? "Successful.":"Failure."), "\n"; - - print "\n\tCurrently open ODBC connections are: \"", join(", ", sort($O3->GetConnections())), "\"\n"; - print "\tClosing ODBC connection #", $O3->Connection(), "...\n"; - print "\t\t...", (($O3->Close())? "Successful.":"Failure."), "\n"; - - print "\n\tCurrently open ODBC connections are: \"", join(", ", sort($O2->GetConnections())), "\"\n"; - -#### -# T E S T 5 -#### - PrintTest(5, "Set/query Max Buffer size for a connection"); - - srand(time); - $Temp = int(rand(10240)) + 10240; - print "\nMaximum Buffer Size for connection #", $O->Connection(), ":\n"; - print "\tValue set at ", $O->GetMaxBufSize(), "\n"; - - print "\tSetting Maximum Buffer Size to $Temp... it has been set to ", $O->SetMaxBufSize($Temp), "\n"; - print "\tValue set at ", $O->GetMaxBufSize(), "\n"; - - $Temp += int(rand(10240)) + 102400; - print "\tSetting Maximum Buffer Size to $Temp... (can not be more than 102400)\n\t\t...it has been set to ", $O->SetMaxBufSize($Temp), "\n"; - print "\tValue set at ", $O->GetMaxBufSize(), "\n"; - - $Temp = int(rand(1024)) + 2048; - print "\tSetting Maximum Buffer Size to $Temp... it has been set to ", $O->SetMaxBufSize($Temp), "\n"; - - print "\tValue set at ", $O->GetMaxBufSize(), "\n"; - - -#### -# T E S T 6 -#### - PrintTest(6, "Set/query Stmt Close Type"); - - print "\n\tStatement Close Type is currently set as ", $O->GetStmtCloseType(), " " . $O->Error . "\n"; - print "\tSetting Statement Close Type to SQL_CLOSE: (returned code of ", $O->SetStmtCloseType(SQL_CLOSE), ")" . $O->Error . "\n"; - print "\tStatement Close Type is currently set as ", $O->GetStmtCloseType(), " " . $O->Error ."\n"; - - -#### -# T E S T 7 -#### - PrintTest(7, "Dump DSN for current connection"); - - if (! (%DSNAttributes = $O->GetDSN())){ - $Failed{'Test 7'} = "GetDSN(): " . $O->Error(); - }else{ - print"\nThe DSN for connection #", $O->Connection(), ":\n"; - print "\tDSN...\n"; - foreach (sort(keys(%DSNAttributes))){ - print "\t$_ = \"$DSNAttributes{$_}\"\n"; - } - } - - - -#### -# T E S T 8 -#### - PrintTest(8, "Dump list of ALL tables in datasource"); - - print "\nList of tables for \"$DSN\"\n\n"; - $Num = 0; - if ($O->Catalog("", "", "%", "'TABLE','VIEW','SYSTEM TABLE', 'GLOBAL TEMPORARY','LOCAL TEMPORARY','ALIAS','SYNONYM'")){ - - print "\tCursor is currently named \"", $O->GetCursorName(), "\".\n"; - print "\tRenaming cursor to \"TestCursor\"...", (($O->SetCursorName("TestCursor"))? "Success":"Failure"), ".\n"; - print "\tCursor is currently named \"", $O->GetCursorName(), "\".\n\n"; - - @FieldNames = $O->FieldNames(); - - $~ = "Test_8_Header"; - write; - - $~ = "Test_8_Body"; - while($O->FetchRow()){ - undef %Data; - %Data = $O->DataHash(); - write; - } - } - print "\n\tTotal number of tables displayed: $Num\n"; - - - -#### -# T E S T 9 -#### - PrintTest(9, "Dump list of non-system tables and views in datasource"); - - print "\n"; - $Num = 0; - - foreach $Temp ($O->TableList("", "", "%", "TABLE, VIEW, SYSTEM_TABLE")){ - $Table = $Temp; - print "\t", ++$Num, ".) \"$Temp\"\n"; - } - print "\n\tTotal number of tables displayed: $Num\n"; - - -#### -# T E S T 10 -#### - PrintTest(10, "Dump contents of the table: \"$Table\""); - - print "\n"; - - print "\tResetting (dropping) cursor...", (($O->DropCursor())? "Successful":"Failure"), ".\n\n"; - - print "\tCurrently the cursor type is: ", $O->GetStmtOption($O->SQL_CURSOR_TYPE), "\n"; - print "\tSetting Cursor to Dynamic (", ($O->SQL_CURSOR_DYNAMIC), ")...", (($O->SetStmtOption($O->SQL_CURSOR_TYPE, $O->SQL_CURSOR_DYNAMIC))? "Success":"Failure"), ".\n"; - print "\t\tThis may have failed depending on your ODBC Driver.\n"; - print "\t\tThis is not really a problem, it will default to another value.\n"; - print "\tUsing the cursor type of: ", $O->GetStmtOption($O->SQL_CURSOR_TYPE), "\n\n"; - - print "\tSetting the connection to only grab $MaxRows row", ($MaxRows == 1)? "":"s", " maximum..."; - if ($O->SetStmtOption($O->SQL_MAX_ROWS, $MaxRows)){ - print "Success!\n"; - }else{ - $Failed{'Test 10a'} = "SetStmtOption(): " . Win32::ODBC::Error(); - print "Failure.\n"; - } - - $iTemp = $O->GetStmtOption($O->SQL_MAX_ROWS); - print "\tUsing the maximum rows: ", (($iTemp)? $iTemp:"No maximum limit"), "\n\n"; - - print "\tCursor is currently named \"", $O->GetCursorName(), "\".\n"; - print "\tRenaming cursor to \"TestCursor\"...", (($O->SetCursorName("TestCursor"))? "Success":"Failure"), ".\n"; - print "\tCursor is currently named \"", $O->GetCursorName(), "\".\n\n"; - - if (! $O->Sql("SELECT * FROM [$Table]")){ - @FieldNames = $O->FieldNames(); - $Cols = $#FieldNames + 1; - $Cols = 8 if ($Cols > 8); - - $FmH = "format Test_10_Header =\n"; - $FmH2 = ""; - $FmH3 = ""; - $FmB = "format Test_10_Body = \n"; - $FmB2 = ""; - - for ($iTemp = 0; $iTemp < $Cols; $iTemp++){ - $FmH .= "@" . "<" x (80/$Cols - 2) . " "; - $FmH2 .= "\$FieldNames[$iTemp],"; - $FmH3 .= "-" x (80/$Cols - 1) . " "; - - $FmB .= "@" . "<" x (80/$Cols - 2) . " "; - $FmB2 .= "\$Data{\$FieldNames[$iTemp]},"; - } - chop $FmH2; - chop $FmB2; - - eval"$FmH\n$FmH2\n$FmH3\n.\n"; - eval "$FmB\n$FmB2\n.\n"; - - $~ = "Test_10_Header"; - write(); - $~ = "Test_10_Body"; - - # Fetch the next rowset - while($O->FetchRow()){ - undef %Data; - %Data = $O->DataHash(); - write(); - } - #### - # THE preceeding block could have been written like this: - # ------------------------------------------------------ - # - # print "\tCurrently the cursor type is: ", $O->GetStmtOption($O->SQL_CURSOR_TYPE), "\n"; - # print "\tSetting Cursor to Dynamic (", ($O->SQL_CURSOR_DYNAMIC), ")...", (($O->SetStmtOption($O->SQL_CURSOR_TYPE, $O->SQL_CURSOR_DYNAMIC))? "Success":"Failure"), ".\n"; - # print "\t\tThis may have failed depending on your ODBC Driver. No real problem.\n"; - # print "\tUsing the cursor type of: ", $O->GetStmtOption($O->SQL_CURSOR_TYPE), "\n\n"; - # - # print "\tSetting rowset size = 15 ...", (($O->SetStmtOption($O->SQL_ROWSET_SIZE, 15))? "Success":"Failure"), ".\n"; - # print "\tGetting rowset size: ", $O->GetStmtOption($O->SQL_ROWSET_SIZE), "\n\n"; - # - # while($O->FetchRow()){ - # $iNum = 1; - # # Position yourself in the rowset - # while($O->SetPos($iNum++ ,$O->SQL_POSITION, $O->SQL_LOCK_NO_CHANGE)){ - # undef %Data; - # %Data = $O->DataHash(); - # write(); - # } - # print "\t\tNext rowset...\n"; - # } - # - # The reason I didn't write it that way (which is easier) is to - # show that we can now SetPos(). Also Fetch() now uses - # SQLExtendedFetch() so it can position itself and retrieve - # rowsets. Notice earlier in this Test 10 we set the - # SQL_ROWSET_SIZE. If this was not set it would default to - # no limit (depending upon your ODBC Driver). - #### - - print "\n\tNo more records available.\n"; - }else{ - $Failed{'Test 10'} = "Sql(): " . $O->Error(); - } - - $O->Close(); - -#### -# T E S T 11 -#### - if ($iTempDSN){ - PrintTest(11, "Remove the temporary DSN"); - print "\n\tRemoving the temporary DSN:\n"; - print "\t\tDSN = \"$DSN\"\n\t\tDriver = \"$DriverType\"\n"; - - if (Win32::ODBC::ConfigDSN(ODBC_REMOVE_DSN, $DriverType, "DSN=$DSN")){ - print "\tSuccessful!\n"; - }else{ - print "\tFailed.\n"; - $Failed{'Test 11'} = "ConfigDSN(): Could not remove \"$DSN\":" . Win32::ODBC::Error(); - } - } - - - PrintTest("E N D O F T E S T"); - PresentErrors(); - - - -#----------------------- F U N C T I O N S --------------------------- - -sub Error{ - my($Data) = @_; - $Data->DumpError() if ref($Data); - Win32::ODBC::DumpError() if ! ref($Data); -} - - -sub Center{ - local($Temp, $Width) = @_; - local($Len) = ($Width - length($Temp)) / 2; - return " " x int($Len), $Temp, " " x (int($Len) + (($Len != int($Len))? 1:0)); -} - -sub PrintTest{ - my($Num, $String) = @_; - my($Temp); - if (length($String)){ - $Temp = " T E S T $Num $String "; - }else{ - $Temp = " $Num "; - } - $Len = length($Temp); - print "\n", "-" x ((79 - $Len)/2), $Temp, "-" x ((79 - $Len)/2 - 1), "\n"; - print "\t$String\n"; -} - -sub PresentErrors{ - PrintTest("", "Error Report:"); - if (keys(%Failed)){ - print "The following were errors:\n"; - foreach (sort(keys(%Failed))){ - print "$_ = $Failed{$_}\n"; - } - }else{ - print "\n\nThere were no errors reported during this test.\n\n"; - } -} - - -sub Initialize{ -format Test_8_Header = - @<<<<<<<<<<<<<<<<<<<<<<<<<<< @|||||||||||| @|||||||||||| @||||||||||| - $FieldNames[0], $FieldNames[1], $FieldNames[2], $FieldNames[3] - ---------------------------- ------------- ------------- ------------ -. -format Test_8_Body = - @>. @<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<< @<<<<<<<<<<<< @<<<<<<<<<<< - ++$Num, $Data{$FieldNames[0]}, $Data{$FieldNames[1]}, $Data{$FieldNames[2]}, $Data{$FieldNames[3]} -. -format Test_9_Header = - @<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<< @<<<<<<<<<<<<<< @<<<<<<<<<<<<<< - $FieldNames[0], $FieldNames[1], $FieldNames[2], $FieldNames[3] -. -format Test_9_Body = - @<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<< @<<<<<<<<<<<<<< @<<<<<<<<<<<<<< - $Data{$FieldNames[0]}, $Data{$FieldNames[1]}, $Data{$FieldNames[2]}, $Data{$FieldNames[3]} -. -} diff --git a/Master/tlpkg/tlperl.old/lib/Win32/TieRegistry.pm b/Master/tlpkg/tlperl.old/lib/Win32/TieRegistry.pm deleted file mode 100644 index 0abbbddb6b8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/TieRegistry.pm +++ /dev/null @@ -1,3801 +0,0 @@ -# Win32/TieRegistry.pm -- Perl module to easily use a Registry -# (on Win32 systems so far). -# by Tye McQueen, tye@metronet.com, see http://www.metronet.com/~tye/. - -# -# Skip to "=head" line for user documentation. -# - - -package Win32::TieRegistry; - - -use strict; -use vars qw( $PACK $VERSION @ISA @EXPORT @EXPORT_OK ); - -$PACK= "Win32::TieRegistry"; # Used in error messages. -$VERSION= '0.26'; - - -use Carp; - -require Tie::Hash; -@ISA= qw(Tie::Hash); - -# Required other modules: -use Win32API::Registry 0.12 qw( :KEY_ :HKEY_ :REG_ ); - -#Optional other modules: -use vars qw( $_NoMoreItems $_FileNotFound $_TooSmall $_MoreData $_SetDualVar ); - -if( eval { require Win32::WinError } ) { - $_NoMoreItems= Win32::WinError::constant("ERROR_NO_MORE_ITEMS",0); - $_FileNotFound= Win32::WinError::constant("ERROR_FILE_NOT_FOUND",0); - $_TooSmall= Win32::WinError::constant("ERROR_INSUFFICIENT_BUFFER",0); - $_MoreData= Win32::WinError::constant("ERROR_MORE_DATA",0); -} else { - $_NoMoreItems= "^No more data"; - $_FileNotFound= "cannot find the file"; - $_TooSmall= " data area passed to "; - $_MoreData= "^more data is avail"; -} -if( $_SetDualVar= eval { require SetDualVar } ) { - import SetDualVar; -} - - -#Implementation details: -# When opened: -# HANDLE long; actual handle value -# MACHINE string; name of remote machine ("" if local) -# PATH list ref; machine-relative full path for this key: -# ["LMachine","System","Disk"] -# ["HKEY_LOCAL_MACHINE","System","Disk"] -# DELIM char; delimiter used to separate subkeys (def="\\") -# OS_DELIM char; always "\\" for Win32 -# ACCESS long; usually KEY_ALL_ACCESS, perhaps KEY_READ, etc. -# ROOTS string; var name for "Lmachine"->HKEY_LOCAL_MACHINE map -# FLAGS int; bits to control certain options -# Often: -# VALUES ref to list of value names (data/type never cached) -# SUBKEYS ref to list of subkey names -# SUBCLASSES ref to list of subkey classes -# SUBTIMES ref to list of subkey write times -# MEMBERS ref to list of subkey_name.DELIM's, DELIM.value_name's -# MEMBHASH hash ref to with MEMBERS as keys and 1's as values -# Once Key "Info" requested: -# Class CntSubKeys CntValues MaxSubKeyLen MaxSubClassLen -# MaxValNameLen MaxValDataLen SecurityLen LastWrite -# If is tied to a hash and iterating over key values: -# PREVIDX int; index of last MEMBERS element return -# If is the key object returned by Load(): -# UNLOADME list ref; information about Load()ed key -# If is a subkey of a "loaded" key other than the one returned by Load(): -# DEPENDON obj ref; object that can't be destroyed before us - - -#Package-local variables: - -# Option flag bits: -use vars qw( $Flag_ArrVal $Flag_TieVal $Flag_DualTyp $Flag_DualBin - $Flag_FastDel $Flag_HexDWord $Flag_Split $Flag_FixNulls ); -$Flag_ArrVal= 0x0001; -$Flag_TieVal= 0x0002; -$Flag_FastDel= 0x0004; -$Flag_HexDWord= 0x0008; -$Flag_Split= 0x0010; -$Flag_DualTyp= 0x0020; -$Flag_DualBin= 0x0040; -$Flag_FixNulls= 0x0080; - - -use vars qw( $RegObj %_Roots %RegHash $Registry ); - -# Short-hand for HKEY_* constants: -%_Roots= ( - "Classes" => HKEY_CLASSES_ROOT, - "CUser" => HKEY_CURRENT_USER, - "LMachine" => HKEY_LOCAL_MACHINE, - "Users" => HKEY_USERS, - "PerfData" => HKEY_PERFORMANCE_DATA, # Too picky to be useful - "CConfig" => HKEY_CURRENT_CONFIG, - "DynData" => HKEY_DYN_DATA, # Too picky to be useful -); - -# Basic master Registry object: -$RegObj= {}; -@$RegObj{qw( HANDLE MACHINE PATH DELIM OS_DELIM ACCESS FLAGS ROOTS )}= ( - "NONE", "", [], "\\", "\\", - KEY_READ|KEY_WRITE, $Flag_HexDWord|$Flag_FixNulls, "${PACK}::_Roots" ); -$RegObj->{FLAGS} |= $Flag_DualTyp|$Flag_DualBin if $_SetDualVar; -bless $RegObj; - -# Fill cache for master Registry object: -@$RegObj{qw( VALUES SUBKEYS SUBCLASSES SUBTIMES )}= ( - [], [ keys(%_Roots) ], [], [] ); -grep( s#$#$RegObj->{DELIM}#, - @{ $RegObj->{MEMBERS}= [ @{$RegObj->{SUBKEYS}} ] } ); -@$RegObj{qw( Class MaxSubKeyLen MaxSubClassLen MaxValNameLen - MaxValDataLen SecurityLen LastWrite CntSubKeys CntValues )}= - ( "", 0, 0, 0, 0, 0, 0, 0, 0 ); - -# Create master Registry tied hash: -$RegObj->Tie( \%RegHash ); - -# Create master Registry combination object and tied hash reference: -$Registry= \%RegHash; -bless $Registry; - - -# Preloaded methods go here. - - -# Map option names to name of subroutine that controls that option: -use vars qw( @_opt_subs %_opt_subs ); -@_opt_subs= qw( Delimiter ArrayValues TieValues SplitMultis DWordsToHex - FastDelete FixSzNulls DualTypes DualBinVals AllowLoad AllowSave ); -@_opt_subs{@_opt_subs}= @_opt_subs; - -sub import -{ - my $pkg= shift(@_); - my $level= $Exporter::ExportLevel; - my $expto= caller($level); - my @export= (); - my @consts= (); - my $registry= $Registry->Clone; - local( $_ ); - while( @_ ) { - $_= shift(@_); - if( /^\$(\w+::)*\w+$/ ) { - push( @export, "ObjVar" ) if /^\$RegObj$/; - push( @export, $_ ); - } elsif( /^\%(\w+::)*\w+$/ ) { - push( @export, $_ ); - } elsif( /^[$%]/ ) { - croak "${PACK}->import: Invalid variable name ($_)"; - } elsif( /^:/ || /^(H?KEY|REG)_/ ) { - push( @consts, $_ ); - } elsif( ! @_ ) { - croak "${PACK}->import: Missing argument after option ($_)"; - } elsif( exists $_opt_subs{$_} ) { - $_= $_opt_subs{$_}; - $registry->$_( shift(@_) ); - } elsif( /^TiedRef$/ ) { - $_= shift(@_); - if( ! ref($_) && /^(\$?)(\w+::)*\w+$/ ) { - $_= '$'.$_ unless '$' eq $1; - } elsif( "SCALAR" ne ref($_) ) { - croak "${PACK}->import: Invalid var after TiedRef ($_)"; - } - push( @export, $_ ); - } elsif( /^TiedHash$/ ) { - $_= shift(@_); - if( ! ref($_) && /^(\%?)(\w+::)*\w+$/ ) { - $_= '%'.$_ unless '%' eq $1; - } elsif( "HASH" ne ref($_) ) { - croak "${PACK}->import: Invalid var after TiedHash ($_)"; - } - push( @export, $_ ); - } elsif( /^ObjectRef$/ ) { - $_= shift(@_); - if( ! ref($_) && /^(\$?)(\w+::)*\w+$/ ) { - push( @export, "ObjVar" ); - $_= '$'.$_ unless '$' eq $1; - } elsif( "SCALAR" eq ref($_) ) { - push( @export, "ObjRef" ); - } else { - croak "${PACK}->import: Invalid var after ObjectRef ($_)"; - } - push( @export, $_ ); - } elsif( /^ExportLevel$/ ) { - $level= shift(@_); - $expto= caller($level); - } elsif( /^ExportTo$/ ) { - undef $level; - $expto= caller($level); - } else { - croak "${PACK}->import: Invalid option ($_)"; - } - } - Win32API::Registry->export( $expto, @consts ) if @consts; - @export= ('$Registry') unless @export; - while( @export ) { - $_= shift( @export ); - if( /^\$((?:\w+::)*)(\w+)$/ ) { - my( $pack, $sym )= ( $1, $2 ); - $pack= $expto unless defined($pack) && "" ne $pack; - no strict 'refs'; - *{"${pack}::$sym"}= \${"${pack}::$sym"}; - ${"${pack}::$sym"}= $registry; - } elsif( /^\%((?:\w+::)*)(\w+)$/ ) { - my( $pack, $sym )= ( $1, $2 ); - $pack= $expto unless defined($pack) && "" ne $pack; - no strict 'refs'; - *{"${pack}::$sym"}= \%{"${pack}::$sym"}; - $registry->Tie( \%{"${pack}::$sym"} ); - } elsif( "SCALAR" eq ref($_) ) { - $$_= $registry; - } elsif( "HASH" eq ref($_) ) { - $registry->Tie( $_ ); - } elsif( /^ObjVar$/ ) { - $_= shift( @_ ); - /^\$((?:\w+::)*)(\w+)$/; - my( $pack, $sym )= ( $1, $2 ); - $pack= $expto unless defined($pack) && "" ne $pack; - no strict 'refs'; - *{"${pack}::$sym"}= \${"${pack}::$sym"}; - ${"${pack}::$sym"}= $registry->ObjectRef; - } elsif( /^ObjRef$/ ) { - ${shift(@_)}= $registry->ObjectRef; - } else { - die "Impossible var to export ($_)"; - } - } -} - - -use vars qw( @_new_Opts %_new_Opts ); -@_new_Opts= qw( ACCESS DELIM MACHINE DEPENDON ); -@_new_Opts{@_new_Opts}= (1) x @_new_Opts; - -sub _new -{ - my $this= shift( @_ ); - $this= tied(%$this) if ref($this) && tied(%$this); - my $class= ref($this) || $this; - my $self= {}; - my( $handle, $rpath, $opts )= @_; - if( @_ < 2 || "ARRAY" ne ref($rpath) || 3 < @_ - || 3 == @_ && "HASH" ne ref($opts) ) { - croak "Usage: ${PACK}->_new( \$handle, \\\@path, {OPT=>VAL,...} );\n", - " options: @_new_Opts\nCalled"; - } - @$self{qw( HANDLE PATH )}= ( $handle, $rpath ); - @$self{qw( MACHINE ACCESS DELIM OS_DELIM ROOTS FLAGS )}= - ( $this->Machine, $this->Access, $this->Delimiter, - $this->OS_Delimiter, $this->_Roots, $this->_Flags ); - if( ref($opts) ) { - my @err= grep( ! $_new_Opts{$_}, keys(%$opts) ); - @err and croak "${PACK}->_new: Invalid options (@err)"; - @$self{ keys(%$opts) }= values(%$opts); - } - bless $self, $class; - return $self; -} - - -sub _split -{ - my $self= shift( @_ ); - $self= tied(%$self) if tied(%$self); - my $path= shift( @_ ); - my $delim= @_ ? shift(@_) : $self->Delimiter; - my $list= [ split( /\Q$delim/, $path ) ]; - return $list; -} - - -sub _rootKey -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my $keyPath= shift(@_); - my $delim= @_ ? shift(@_) : $self->Delimiter; - my( $root, $subPath ); - if( "ARRAY" eq ref($keyPath) ) { - $subPath= $keyPath; - } else { - $subPath= $self->_split( $keyPath, $delim ); - } - $root= shift( @$subPath ); - if( $root =~ /^HKEY_/ ) { - my $handle= Win32API::Registry::constant($root,0); - $handle or croak "Invalid HKEY_ constant ($root): $!"; - return( $self->_new( $handle, [$root], {DELIM=>$delim} ), - $subPath ); - } elsif( $root =~ /^([-+]|0x)?\d/ ) { - return( $self->_new( $root, [sprintf("0x%lX",$root)], - {DELIM=>$delim} ), - $subPath ); - } else { - my $roots= $self->Roots; - if( $roots->{$root} ) { - return( $self->_new( $roots->{$root}, [$root], {DELIM=>$delim} ), - $subPath ); - } - croak "No such root key ($root)"; - } -} - - -sub _open -{ - my $this= shift(@_); - $this= tied(%$this) if ref($this) && tied(%$this); - my $subPath= shift(@_); - my $sam= @_ ? shift(@_) : $this->Access; - my $subKey= join( $this->OS_Delimiter, @$subPath ); - my $handle= 0; - $this->RegOpenKeyEx( $subKey, 0, $sam, $handle ) - or return (); - return $this->_new( $handle, [ @{$this->_Path}, @$subPath ], - { ACCESS=>$sam, ( defined($this->{UNLOADME}) ? ("DEPENDON",$this) - : defined($this->{DEPENDON}) ? ("DEPENDON",$this->{DEPENDON}) : () ) - } ); -} - - -sub ObjectRef -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - return $self; -} - - -sub _constant -{ - my( $name, $desc )= @_; - my $value= Win32API::Registry::constant( $name, 0 ); - my $func= (caller(1))[3]; - if( 0 == $value ) { - if( $! =~ /invalid/i ) { - croak "$func: Invalid $desc ($name)"; - } elsif( 0 != $! ) { - croak "$func: \u$desc ($name) not support on this platform"; - } - } - return $value; -} - - -sub _connect -{ - my $this= shift(@_); - $this= tied(%$this) if ref($this) && tied(%$this); - my $subPath= pop(@_); - $subPath= $this->_split( $subPath ) unless ref($subPath); - my $machine= @_ ? shift(@_) : shift(@$subPath); - my $handle= 0; - my( $temp )= $this->_rootKey( [@$subPath] ); - $temp->RegConnectRegistry( $machine, $temp->Handle, $handle ) - or return (); - my $self= $this->_new( $handle, [shift(@$subPath)], {MACHINE=>$machine} ); - return( $self, $subPath ); -} - - -use vars qw( @Connect_Opts %Connect_Opts ); -@Connect_Opts= qw(Access Delimiter); -@Connect_Opts{@Connect_Opts}= (1) x @Connect_Opts; - -sub Connect -{ - my $this= shift(@_); - my $tied= ref($this) && tied(%$this); - $this= tied(%$this) if $tied; - my( $machine, $key, $opts )= @_; - my $delim= ""; - my $sam; - my $subPath; - if( @_ < 2 || 3 < @_ - || 3 == @_ && "HASH" ne ref($opts) ) { - croak "Usage: \$obj= ${PACK}->Connect(", - " \$Machine, \$subKey, { OPT=>VAL,... } );\n", - " options: @Connect_Opts\nCalled"; - } - if( ref($opts) ) { - my @err= grep( ! $Connect_Opts{$_}, keys(%$opts) ); - @err and croak "${PACK}->Connect: Invalid options (@err)"; - } - $delim= "$opts->{Delimiter}" if defined($opts->{Delimiter}); - $delim= $this->Delimiter if "" eq $delim; - $sam= defined($opts->{Access}) ? $opts->{Access} : $this->Access; - $sam= _constant($sam,"key access type") if $sam =~ /^KEY_/; - ( $this, $subPath )= $this->_connect( $machine, $key ); - return () unless defined($this); - my $self= $this->_open( $subPath, $sam ); - return () unless defined($self); - $self->Delimiter( $delim ); - $self= $self->TiedRef if $tied; - return $self; -} - - -my @_newVirtual_keys= qw( MEMBERS VALUES SUBKEYS SUBTIMES SUBCLASSES - Class SecurityLen LastWrite CntValues CntSubKeys - MaxValNameLen MaxValDataLen MaxSubKeyLen MaxSubClassLen ); - -sub _newVirtual -{ - my $self= shift(@_); - my( $rPath, $root, $opts )= @_; - my $new= $self->_new( "NONE", $rPath, $opts ) - or return (); - @{$new}{@_newVirtual_keys}= @{$root->ObjectRef}{@_newVirtual_keys}; - return $new; -} - - -#$key= new Win32::TieRegistry "LMachine/System/Disk"; -#$key= new Win32::TieRegistry "//Server1/LMachine/System/Disk"; -#Win32::TieRegistry->new( HKEY_LOCAL_MACHINE, {DELIM=>"/",ACCESS=>KEY_READ} ); -#Win32::TieRegistry->new( [ HKEY_LOCAL_MACHINE, ".../..." ], {DELIM=>$DELIM} ); -#$key->new( ... ); - -use vars qw( @new_Opts %new_Opts ); -@new_Opts= qw(Access Delimiter); -@new_Opts{@new_Opts}= (1) x @new_Opts; - -sub new -{ - my $this= shift( @_ ); - $this= tied(%$this) if ref($this) && tied(%$this); - if( ! ref($this) ) { - no strict "refs"; - my $self= ${"${this}::Registry"}; - croak "${this}->new failed since ${PACK}::new sees that ", - "\$${this}::Registry is not an object." - if ! ref($self); - $this= $self->Clone; - } - my( $subKey, $opts )= @_; - my $delim= ""; - my $dlen; - my $sam; - my $subPath; - if( @_ < 1 || 2 < @_ - || 2 == @_ && "HASH" ne ref($opts) ) { - croak "Usage: \$obj= ${PACK}->new( \$subKey, { OPT=>VAL,... } );\n", - " options: @new_Opts\nCalled"; - } - if( defined($opts) ) { - my @err= grep( ! $new_Opts{$_}, keys(%$opts) ); - @err and die "${PACK}->new: Invalid options (@err)"; - } - $delim= "$opts->{Delimiter}" if defined($opts->{Delimiter}); - $delim= $this->Delimiter if "" eq $delim; - $dlen= length($delim); - $sam= defined($opts->{Access}) ? $opts->{Access} : $this->Access; - $sam= _constant($sam,"key access type") if $sam =~ /^KEY_/; - if( "ARRAY" eq ref($subKey) ) { - $subPath= $subKey; - if( "NONE" eq $this->Handle && @$subPath ) { - ( $this, $subPath )= $this->_rootKey( $subPath ); - } - } elsif( $delim x 2 eq substr($subKey,0,2*$dlen) ) { - my $path= $this->_split( substr($subKey,2*$dlen), $delim ); - my $mach= shift(@$path); - if( ! @$path ) { - return $this->_newVirtual( $path, $Registry, - {MACHINE=>$mach,DELIM=>$delim,ACCESS=>$sam} ); - } - ( $this, $subPath )= $this->_connect( $mach, $path ); - return () if ! defined($this); - if( 0 == @$subPath ) { - $this->Delimiter( $delim ); - return $this; - } - } elsif( $delim eq substr($subKey,0,$dlen) ) { - ( $this, $subPath )= $this->_rootKey( substr($subKey,$dlen), $delim ); - } elsif( "NONE" eq $this->Handle && "" ne $subKey ) { - my( $mach )= $this->Machine; - if( $mach ) { - ( $this, $subPath )= $this->_connect( $mach, $subKey ); - } else { - ( $this, $subPath )= $this->_rootKey( $subKey, $delim ); - } - } else { - $subPath= $this->_split( $subKey, $delim ); - } - return () unless defined($this); - if( 0 == @$subPath && "NONE" eq $this->Handle ) { - return $this->_newVirtual( $this->_Path, $this, - { DELIM=>$delim, ACCESS=>$sam } ); - } - my $self= $this->_open( $subPath, $sam ); - return () unless defined($self); - $self->Delimiter( $delim ); - return $self; -} - - -sub Open -{ - my $self= shift(@_); - my $tied= ref($self) && tied(%$self); - $self= tied(%$self) if $tied; - $self= $self->new( @_ ); - $self= $self->TiedRef if defined($self) && $tied; - return $self; -} - - -sub Clone -{ - my $self= shift( @_ ); - my $new= $self->Open(""); - return $new; -} - - -{ my @flush; - sub Flush - { - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my( $flush )= shift(@_); - @_ and croak "Usage: \$key->Flush( \$bFlush );"; - return 0 if "NONE" eq $self->Handle; - @flush= qw( VALUES SUBKEYS SUBCLASSES SUBTIMES MEMBERS Class - CntSubKeys CntValues MaxSubKeyLen MaxSubClassLen - MaxValNameLen MaxValDataLen SecurityLen LastWrite PREVIDX ) - unless @flush; - delete( @$self{@flush} ); - if( defined($flush) && $flush ) { - return $self->RegFlushKey(); - } else { - return 1; - } - } -} - - -sub _DualVal -{ - my( $hRef, $num )= @_; - if( $_SetDualVar && $$hRef{$num} ) { - &SetDualVar( $num, "$$hRef{$num}", 0+$num ); - } - return $num; -} - - -use vars qw( @_RegDataTypes %_RegDataTypes ); -@_RegDataTypes= qw( REG_SZ REG_EXPAND_SZ REG_BINARY REG_LINK REG_MULTI_SZ - REG_DWORD_LITTLE_ENDIAN REG_DWORD_BIG_ENDIAN REG_DWORD - REG_RESOURCE_LIST REG_FULL_RESOURCE_DESCRIPTOR - REG_RESOURCE_REQUIREMENTS_LIST REG_NONE ); -# Make sure that REG_DWORD appears _after_ other REG_DWORD_* -# items above and that REG_NONE appears _last_. -foreach( @_RegDataTypes ) { - $_RegDataTypes{Win32API::Registry::constant($_,0)}= $_; -} - -sub GetValue -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - 1 == @_ or croak "Usage: (\$data,\$type)= \$key->GetValue('ValName');"; - my( $valName )= @_; - my( $valType, $valData, $dLen )= (0,"",0); - return () if "NONE" eq $self->Handle; - $self->RegQueryValueEx( $valName, [], $valType, $valData, - $dLen= ( defined($self->{MaxValDataLen}) ? $self->{MaxValDataLen} : 0 ) - ) or return (); - if( REG_DWORD == $valType ) { - my $val= unpack("L",$valData); - $valData= sprintf "0x%08.8lX", $val if $self->DWordsToHex; - &SetDualVar( $valData, $valData, $val ) if $self->DualBinVals - } elsif( REG_BINARY == $valType && length($valData) <= 4 ) { - &SetDualVar( $valData, $valData, hex reverse unpack("h*",$valData) ) - if $self->DualBinVals; - } elsif( ( REG_SZ == $valType || REG_EXPAND_SZ == $valType ) - && $self->FixSzNulls ) { - substr($valData,-1)= "" if "\0" eq substr($valData,-1); - } elsif( REG_MULTI_SZ == $valType && $self->SplitMultis ) { - ## $valData =~ s/\0\0$//; # Why does this often fail?? - substr($valData,-2)= "" if "\0\0" eq substr($valData,-2); - $valData= [ split( /\0/, $valData, -1 ) ] - } - if( ! wantarray ) { - return $valData; - } elsif( ! $self->DualTypes ) { - return( $valData, $valType ); - } else { - return( $valData, _DualVal( \%_RegDataTypes, $valType ) ); - } -} - - -sub _ErrNum -{ - # return $^E; - return Win32::GetLastError(); -} - - -sub _ErrMsg -{ - # return $^E; - return Win32::FormatMessage( Win32::GetLastError() ); -} - -sub _Err -{ - my $err; - # return $^E; - return _ErrMsg if ! $_SetDualVar; - return &SetDualVar( $err, _ErrMsg, _ErrNum ); -} - -sub _NoMoreItems -{ - return - $_NoMoreItems =~ /^\d/ - ? _ErrNum == $_NoMoreItems - : _ErrMsg =~ /$_NoMoreItems/io; -} - - -sub _FileNotFound -{ - return - $_FileNotFound =~ /^\d/ - ? _ErrNum == $_FileNotFound - : _ErrMsg =~ /$_FileNotFound/io; -} - - -sub _TooSmall -{ - return - $_TooSmall =~ /^\d/ - ? _ErrNum == $_TooSmall - : _ErrMsg =~ /$_TooSmall/io; -} - - -sub _MoreData -{ - return - $_MoreData =~ /^\d/ - ? _ErrNum == $_MoreData - : _ErrMsg =~ /$_MoreData/io; -} - - -sub _enumValues -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my( @names )= (); - my $pos= 0; - my $name= ""; - my $nlen= 1+$self->Information("MaxValNameLen"); - while( $self->RegEnumValue($pos++,$name,$nlen,[],[],[],[]) ) { - push( @names, $name ); - } - if( ! _NoMoreItems() ) { - return (); - } - $self->{VALUES}= \@names; - return 1; -} - - -sub ValueNames -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - @_ and croak "Usage: \@names= \$key->ValueNames;"; - $self->_enumValues unless $self->{VALUES}; - return @{$self->{VALUES}}; -} - - -sub _enumSubKeys -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my( @subkeys, @classes, @times )= (); - my $pos= 0; - my( $subkey, $class, $time )= ("","",""); - my( $namSiz, $clsSiz )= $self->Information( - qw( MaxSubKeyLen MaxSubClassLen )); - $namSiz++; $clsSiz++; - while( $self->RegEnumKeyEx( - $pos++, $subkey, $namSiz, [], $class, $clsSiz, $time ) ) { - push( @subkeys, $subkey ); - push( @classes, $class ); - push( @times, $time ); - } - if( ! _NoMoreItems() ) { - return (); - } - $self->{SUBKEYS}= \@subkeys; - $self->{SUBCLASSES}= \@classes; - $self->{SUBTIMES}= \@times; - return 1; -} - - -sub SubKeyNames -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - @_ and croak "Usage: \@names= \$key->SubKeyNames;"; - $self->_enumSubKeys unless $self->{SUBKEYS}; - return @{$self->{SUBKEYS}}; -} - - -sub SubKeyClasses -{ - my $self= shift(@_); - @_ and croak "Usage: \@classes= \$key->SubKeyClasses;"; - $self->_enumSubKeys unless $self->{SUBCLASSES}; - return @{$self->{SUBCLASSES}}; -} - - -sub SubKeyTimes -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - @_ and croak "Usage: \@times= \$key->SubKeyTimes;"; - $self->_enumSubKeys unless $self->{SUBTIMES}; - return @{$self->{SUBTIMES}}; -} - - -sub _MemberNames -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - @_ and croak "Usage: \$arrayRef= \$key->_MemberNames;"; - if( ! $self->{MEMBERS} ) { - $self->_enumValues unless $self->{VALUES}; - $self->_enumSubKeys unless $self->{SUBKEYS}; - my( @members )= ( map( $_.$self->{DELIM}, @{$self->{SUBKEYS}} ), - map( $self->{DELIM}.$_, @{$self->{VALUES}} ) ); - $self->{MEMBERS}= \@members; - } - return $self->{MEMBERS}; -} - - -sub _MembersHash -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - @_ and croak "Usage: \$hashRef= \$key->_MembersHash;"; - if( ! $self->{MEMBHASH} ) { - my $aRef= $self->_MemberNames; - $self->{MEMBHASH}= {}; - @{$self->{MEMBHASH}}{@$aRef}= (1) x @$aRef; - } - return $self->{MEMBHASH}; -} - - -sub MemberNames -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - @_ and croak "Usage: \@members= \$key->MemberNames;"; - return @{$self->_MemberNames}; -} - - -sub Information -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my( $time, $nkeys, $nvals, $xsec, $xkey, $xcls, $xname, $xdata )= - ("",0,0,0,0,0,0,0); - my $clen= 8; - if( ! $self->RegQueryInfoKey( [], [], $nkeys, $xkey, $xcls, - $nvals, $xname, $xdata, $xsec, $time ) ) { - return (); - } - if( defined($self->{Class}) ) { - $clen= length($self->{Class}); - } else { - $self->{Class}= ""; - } - while( ! $self->RegQueryInfoKey( $self->{Class}, $clen, - [],[],[],[],[],[],[],[],[]) - && _MoreData ) { - $clen *= 2; - } - my( %info ); - @info{ qw( LastWrite CntSubKeys CntValues SecurityLen - MaxValDataLen MaxSubKeyLen MaxSubClassLen MaxValNameLen ) - }= ( $time, $nkeys, $nvals, $xsec, - $xdata, $xkey, $xcls, $xname ); - if( @_ ) { - my( %check ); - @check{keys(%info)}= keys(%info); - my( @err )= grep( ! $check{$_}, @_ ); - if( @err ) { - croak "${PACK}::Information- Invalid info requested (@err)"; - } - return @info{@_}; - } else { - return %info; - } -} - - -sub Delimiter -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - $self= $RegObj unless ref($self); - my( $oldDelim )= $self->{DELIM}; - if( 1 == @_ && "" ne "$_[0]" ) { - delete $self->{MEMBERS}; - delete $self->{MEMBHASH}; - $self->{DELIM}= "$_[0]"; - } elsif( 0 != @_ ) { - croak "Usage: \$oldDelim= \$key->Delimiter(\$newDelim);"; - } - return $oldDelim; -} - - -sub Handle -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - @_ and croak "Usage: \$handle= \$key->Handle;"; - $self= $RegObj unless ref($self); - return $self->{HANDLE}; -} - - -sub Path -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - @_ and croak "Usage: \$path= \$key->Path;"; - my $delim= $self->{DELIM}; - $self= $RegObj unless ref($self); - if( "" eq $self->{MACHINE} ) { - return( $delim . join( $delim, @{$self->{PATH}} ) . $delim ); - } else { - return( $delim x 2 - . join( $delim, $self->{MACHINE}, @{$self->{PATH}} ) - . $delim ); - } -} - - -sub _Path -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - @_ and croak "Usage: \$arrRef= \$key->_Path;"; - $self= $RegObj unless ref($self); - return $self->{PATH}; -} - - -sub Machine -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - @_ and croak "Usage: \$machine= \$key->Machine;"; - $self= $RegObj unless ref($self); - return $self->{MACHINE}; -} - - -sub Access -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - @_ and croak "Usage: \$access= \$key->Access;"; - $self= $RegObj unless ref($self); - return $self->{ACCESS}; -} - - -sub OS_Delimiter -{ - my $self= shift(@_); - @_ and croak "Usage: \$backslash= \$key->OS_Delimiter;"; - return $self->{OS_DELIM}; -} - - -sub _Roots -{ - my $self= shift(@_); - $self= tied(%$self) if ref($self) && tied(%$self); - @_ and croak "Usage: \$varName= \$key->_Roots;"; - $self= $RegObj unless ref($self); - return $self->{ROOTS}; -} - - -sub Roots -{ - my $self= shift(@_); - $self= tied(%$self) if ref($self) && tied(%$self); - @_ and croak "Usage: \$hashRef= \$key->Roots;"; - $self= $RegObj unless ref($self); - return eval "\\%$self->{ROOTS}"; -} - - -sub TIEHASH -{ - my( $this )= shift(@_); - $this= tied(%$this) if ref($this) && tied(%$this); - my( $key )= @_; - if( 1 == @_ && ref($key) && "$key" =~ /=/ ) { - return $key; # $key is already an object (blessed reference). - } - return $this->new( @_ ); -} - - -sub Tie -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my( $hRef )= @_; - if( 1 != @_ || ! ref($hRef) || "$hRef" !~ /(^|=)HASH\(/ ) { - croak "Usage: \$key->Tie(\\\%hash);"; - } - return tie %$hRef, ref($self), $self; -} - - -sub TiedRef -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my $hRef= @_ ? shift(@_) : {}; - return () if ! defined($self); - $self->Tie($hRef); - bless $hRef, ref($self); - return $hRef; -} - - -sub _Flags -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my $oldFlags= $self->{FLAGS}; - if( 1 == @_ ) { - $self->{FLAGS}= shift(@_); - } elsif( 0 != @_ ) { - croak "Usage: \$oldBits= \$key->_Flags(\$newBits);"; - } - return $oldFlags; -} - - -sub ArrayValues -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my $oldFlag= $Flag_ArrVal == ( $Flag_ArrVal & $self->{FLAGS} ); - if( 1 == @_ ) { - my $bool= shift(@_); - if( $bool ) { - $self->{FLAGS} |= $Flag_ArrVal; - } else { - $self->{FLAGS} &= ~( $Flag_ArrVal | $Flag_TieVal ); - } - } elsif( 0 != @_ ) { - croak "Usage: \$oldBool= \$key->ArrayValues(\$newBool);"; - } - return $oldFlag; -} - - -sub TieValues -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my $oldFlag= $Flag_TieVal == ( $Flag_TieVal & $self->{FLAGS} ); - if( 1 == @_ ) { - my $bool= shift(@_); - if( $bool ) { - croak "${PACK}->TieValues cannot be enabled with this version"; - $self->{FLAGS} |= $Flag_TieVal; - } else { - $self->{FLAGS} &= ~$Flag_TieVal; - } - } elsif( 0 != @_ ) { - croak "Usage: \$oldBool= \$key->TieValues(\$newBool);"; - } - return $oldFlag; -} - - -sub FastDelete -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my $oldFlag= $Flag_FastDel == ( $Flag_FastDel & $self->{FLAGS} ); - if( 1 == @_ ) { - my $bool= shift(@_); - if( $bool ) { - $self->{FLAGS} |= $Flag_FastDel; - } else { - $self->{FLAGS} &= ~$Flag_FastDel; - } - } elsif( 0 != @_ ) { - croak "Usage: \$oldBool= \$key->FastDelete(\$newBool);"; - } - return $oldFlag; -} - - -sub SplitMultis -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my $oldFlag= $Flag_Split == ( $Flag_Split & $self->{FLAGS} ); - if( 1 == @_ ) { - my $bool= shift(@_); - if( $bool ) { - $self->{FLAGS} |= $Flag_Split; - } else { - $self->{FLAGS} &= ~$Flag_Split; - } - } elsif( 0 != @_ ) { - croak "Usage: \$oldBool= \$key->SplitMultis(\$newBool);"; - } - return $oldFlag; -} - - -sub DWordsToHex -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my $oldFlag= $Flag_HexDWord == ( $Flag_HexDWord & $self->{FLAGS} ); - if( 1 == @_ ) { - my $bool= shift(@_); - if( $bool ) { - $self->{FLAGS} |= $Flag_HexDWord; - } else { - $self->{FLAGS} &= ~$Flag_HexDWord; - } - } elsif( 0 != @_ ) { - croak "Usage: \$oldBool= \$key->DWordsToHex(\$newBool);"; - } - return $oldFlag; -} - - -sub FixSzNulls -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my $oldFlag= $Flag_FixNulls == ( $Flag_FixNulls & $self->{FLAGS} ); - if( 1 == @_ ) { - my $bool= shift(@_); - if( $bool ) { - $self->{FLAGS} |= $Flag_FixNulls; - } else { - $self->{FLAGS} &= ~$Flag_FixNulls; - } - } elsif( 0 != @_ ) { - croak "Usage: \$oldBool= \$key->FixSzNulls(\$newBool);"; - } - return $oldFlag; -} - - -sub DualTypes -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my $oldFlag= $Flag_DualTyp == ( $Flag_DualTyp & $self->{FLAGS} ); - if( 1 == @_ ) { - my $bool= shift(@_); - if( $bool ) { - croak "${PACK}->DualTypes cannot be enabled since ", - "SetDualVar module not installed" - unless $_SetDualVar; - $self->{FLAGS} |= $Flag_DualTyp; - } else { - $self->{FLAGS} &= ~$Flag_DualTyp; - } - } elsif( 0 != @_ ) { - croak "Usage: \$oldBool= \$key->DualTypes(\$newBool);"; - } - return $oldFlag; -} - - -sub DualBinVals -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my $oldFlag= $Flag_DualBin == ( $Flag_DualBin & $self->{FLAGS} ); - if( 1 == @_ ) { - my $bool= shift(@_); - if( $bool ) { - croak "${PACK}->DualBinVals cannot be enabled since ", - "SetDualVar module not installed" - unless $_SetDualVar; - $self->{FLAGS} |= $Flag_DualBin; - } else { - $self->{FLAGS} &= ~$Flag_DualBin; - } - } elsif( 0 != @_ ) { - croak "Usage: \$oldBool= \$key->DualBinVals(\$newBool);"; - } - return $oldFlag; -} - - -sub GetOptions -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my( $opt, $meth ); - if( ! @_ || 1 == @_ && "HASH" eq ref($_[0]) ) { - my $href= @_ ? $_[0] : {}; - foreach $opt ( grep !/^Allow/, @_opt_subs ) { - $meth= $_opt_subs{$opt}; - $href->{$opt}= $self->$meth(); - } - return @_ ? $self : $href; - } - my @old; - foreach $opt ( @_ ) { - $meth= $_opt_subs{$opt}; - if( defined $meth ) { - if( $opt eq "AllowLoad" || $opt eq "AllowSave" ) { - croak "${PACK}->GetOptions: Getting current setting of $opt ", - "not supported in this release"; - } - push( @old, $self->$meth() ); - } else { - croak "${PACK}->GetOptions: Invalid option ($opt) ", - "not one of ( ", join(" ",grep !/^Allow/, @_opt_subs), " )"; - } - } - return wantarray ? @old : $old[-1]; -} - - -sub SetOptions -{ - my $self= shift(@_); - # Don't get object if hash ref so "ref" returns original ref. - my( $opt, $meth, @old ); - while( @_ ) { - $opt= shift(@_); - $meth= $_opt_subs{$opt}; - if( ! @_ ) { - croak "${PACK}->SetOptions: Option value missing ", - "after option name ($opt)"; - } elsif( defined $meth ) { - push( @old, $self->$meth( shift(@_) ) ); - } elsif( $opt eq substr("reference",0,length($opt)) ) { - shift(@_) if @_; - push( @old, $self ); - } else { - croak "${PACK}->SetOptions: Invalid option ($opt) ", - "not one of ( @_opt_subs )"; - } - } - return wantarray ? @old : $old[-1]; -} - - -sub _parseTiedEnt -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my $ent= shift(@_); - my $delim= shift(@_); - my $dlen= length( $delim ); - my $parent= @_ ? shift(@_) : 0; - my $off; - if( $delim x 2 eq substr($ent,0,2*$dlen) && "NONE" eq $self->Handle ) { - if( 0 <= ( $off= index( $ent, $delim x 2, 2*$dlen ) ) ) { - return( substr( $ent, 0, $off ), substr( $ent, 2*$dlen+$off ) ); - } elsif( $delim eq substr($ent,-$dlen) ) { - return( substr($ent,0,-$dlen) ); - } elsif( 2*$dlen <= ( $off= rindex( $ent, $delim ) ) ) { - return( substr( $ent, 0, $off ), - undef, substr( $ent, $dlen+$off ) ); - } elsif( $parent ) { - return(); - } else { - return( $ent ); - } - } elsif( $delim eq substr($ent,0,$dlen) && "NONE" ne $self->Handle ) { - return( undef, substr($ent,$dlen) ); - } elsif( $self->{MEMBERS} && $self->_MembersHash->{$ent} ) { - return( substr($ent,0,-$dlen) ); - } elsif( 0 <= ( $off= index( $ent, $delim x 2 ) ) ) { - return( substr( $ent, 0, $off ), substr( $ent, 2*$dlen+$off ) ); - } elsif( $delim eq substr($ent,-$dlen) ) { - if( $parent - && 0 <= ( $off= rindex( $ent, $delim, length($ent)-2*$dlen ) ) ) { - return( substr($ent,0,$off), - undef, undef, substr($ent,$dlen+$off,-$dlen) ); - } else { - return( substr($ent,0,-$dlen) ); - } - } elsif( 0 <= ( $off= rindex( $ent, $delim ) ) ) { - return( - substr( $ent, 0, $off ), undef, substr( $ent, $dlen+$off ) ); - } else { - return( undef, undef, $ent ); - } -} - - -sub _FetchValue -{ - my $self= shift( @_ ); - my( $val, $createKey )= @_; - my( $data, $type ); - if( ( $data, $type )= $self->GetValue( $val ) ) { - return $self->ArrayValues ? [ $data, $type ] - : wantarray ? ( $data, $type ) - : $data; - } elsif( $createKey and $data= $self->new($val) ) { - return $data->TiedRef; - } else { - return (); - } -} - - -sub FETCH -{ - my $self= shift(@_); - my $ent= shift(@_); - my $delim= $self->Delimiter; - my( $key, $val, $ambig )= $self->_parseTiedEnt( $ent, $delim, 0 ); - my $sub; - if( defined($key) ) { - if( defined($self->{MEMBHASH}) - && $self->{MEMBHASH}->{$key.$delim} - && 0 <= index($key,$delim) ) { - return () - unless $sub= $self->new( $key, - {"Delimiter"=>$self->OS_Delimiter} ); - $sub->Delimiter($delim); - } else { - return () - unless $sub= $self->new( $key ); - } - } else { - $sub= $self; - } - if( defined($val) ) { - return $sub->_FetchValue( $val ); - } elsif( ! defined($ambig) ) { - return $sub->TiedRef; - } elsif( defined($key) ) { - return $sub->FETCH( $ambig ); - } else { - return $sub->_FetchValue( $ambig, "" ne $ambig ); - } -} - - -sub _FetchOld -{ - my( $self, $key )= @_; - my $old= $self->FETCH($key); - if( $old ) { - my $copy= {}; - %$copy= %$old; - return $copy; - } - # return $^E; - return _Err; -} - - -sub DELETE -{ - my $self= shift(@_); - my $ent= shift(@_); - my $delim= $self->Delimiter; - my( $key, $val, $ambig, $subkey )= $self->_parseTiedEnt( $ent, $delim, 1 ); - my $sub; - my $fast= defined(wantarray) ? $self->FastDelete : 2; - my $old= 1; # Value returned if FastDelete is set. - if( defined($key) - && ( defined($val) || defined($ambig) || defined($subkey) ) ) { - return () - unless $sub= $self->new( $key ); - } else { - $sub= $self; - } - if( defined($val) ) { - $old= $sub->GetValue($val) || _Err unless 2 <= $fast; - $sub->RegDeleteValue( $val ); - } elsif( defined($subkey) ) { - $old= $sub->_FetchOld( $subkey.$delim ) unless $fast; - $sub->RegDeleteKey( $subkey ); - } elsif( defined($ambig) ) { - if( defined($key) ) { - $old= $sub->DELETE($ambig); - } else { - $old= $sub->GetValue($ambig) || _Err unless 2 <= $fast; - if( defined( $old ) ) { - $sub->RegDeleteValue( $ambig ); - } else { - $old= $sub->_FetchOld( $ambig.$delim ) unless $fast; - $sub->RegDeleteKey( $ambig ); - } - } - } elsif( defined($key) ) { - $old= $sub->_FetchOld( $key.$delim ) unless $fast; - $sub->RegDeleteKey( $key ); - } else { - croak "${PACK}->DELETE: Key ($ent) can never be deleted"; - } - return $old; -} - - -sub SetValue -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - my $name= shift(@_); - my $data= shift(@_); - my( $type )= @_; - my $size; - if( ! defined($type) ) { - if( "ARRAY" eq ref($data) ) { - croak "${PACK}->SetValue: Value is array reference but ", - "no data type given" - unless 2 == @$data; - ( $data, $type )= @$data; - } else { - $type= REG_SZ; - } - } - $type= _constant($type,"registry value data type") if $type =~ /^REG_/; - if( REG_MULTI_SZ == $type && "ARRAY" eq ref($data) ) { - $data= join( "\0", @$data ) . "\0\0"; - ## $data= pack( "a*" x (1+@$data), map( $_."\0", @$data, "" ) ); - } elsif( ( REG_SZ == $type || REG_EXPAND_SZ == $type ) - && $self->FixSzNulls ) { - $data .= "\0" unless "\0" eq substr($data,0,-1); - } elsif( REG_DWORD == $type && $data =~ /^0x[0-9a-fA-F]{3,}$/ ) { - $data= pack( "L", hex($data) ); - # We could to $data=pack("L",$data) for REG_DWORD but I see - # no nice way to always destinguish when to do this or not. - } - return $self->RegSetValueEx( $name, 0, $type, $data, length($data) ); -} - - -sub StoreKey -{ - my $this= shift(@_); - $this= tied(%$this) if ref($this) && tied(%$this); - my $subKey= shift(@_); - my $data= shift(@_); - my $ent; - my $self; - if( ! ref($data) || "$data" !~ /(^|=)HASH/ ) { - croak "${PACK}->StoreKey: For ", $this->Path.$subKey, ",\n", - " subkey data must be a HASH reference"; - } - if( defined( $$data{""} ) && "HASH" eq ref($$data{""}) ) { - $self= $this->CreateKey( $subKey, delete $$data{""} ); - } else { - $self= $this->CreateKey( $subKey ); - } - return () if ! defined($self); - foreach $ent ( keys(%$data) ) { - return () - unless $self->STORE( $ent, $$data{$ent} ); - } - return $self; -} - - -# = { "" => {OPT=>VAL}, "val"=>[], "key"=>{} } creates a new key -# = "string" creates a new REG_SZ value -# = [ data, type ] creates a new value -sub STORE -{ - my $self= shift(@_); - my $ent= shift(@_); - my $data= shift(@_); - my $delim= $self->Delimiter; - my( $key, $val, $ambig, $subkey )= $self->_parseTiedEnt( $ent, $delim, 1 ); - my $sub; - if( defined($key) - && ( defined($val) || defined($ambig) || defined($subkey) ) ) { - return () - unless $sub= $self->new( $key ); - } else { - $sub= $self; - } - if( defined($val) ) { - croak "${PACK}->STORE: For ", $sub->Path.$delim.$val, ",\n", - " value data cannot be a HASH reference" - if ref($data) && "$data" =~ /(^|=)HASH/; - $sub->SetValue( $val, $data ); - } elsif( defined($subkey) ) { - croak "${PACK}->STORE: For ", $sub->Path.$subkey.$delim, ",\n", - " subkey data must be a HASH reference" - unless ref($data) && "$data" =~ /(^|=)HASH/; - $sub->StoreKey( $subkey, $data ); - } elsif( defined($ambig) ) { - if( ref($data) && "$data" =~ /(^|=)HASH/ ) { - $sub->StoreKey( $ambig, $data ); - } else { - $sub->SetValue( $ambig, $data ); - } - } elsif( defined($key) ) { - croak "${PACK}->STORE: For ", $sub->Path.$key.$delim, ",\n", - " subkey data must be a HASH reference" - unless ref($data) && "$data" =~ /(^|=)HASH/; - $sub->StoreKey( $key, $data ); - } else { - croak "${PACK}->STORE: Key ($ent) can never be created nor set"; - } -} - - -sub EXISTS -{ - my $self= shift(@_); - my $ent= shift(@_); - return defined( $self->FETCH($ent) ); -} - - -sub FIRSTKEY -{ - my $self= shift(@_); - my $members= $self->_MemberNames; - $self->{PREVIDX}= 0; - return @{$members} ? $members->[0] : undef; -} - - -sub NEXTKEY -{ - my $self= shift(@_); - my $prev= shift(@_); - my $idx= $self->{PREVIDX}; - my $members= $self->_MemberNames; - if( ! defined($idx) || $prev ne $members->[$idx] ) { - $idx= 0; - while( $idx < @$members && $prev ne $members->[$idx] ) { - $idx++; - } - } - $self->{PREVIDX}= ++$idx; - return $members->[$idx]; -} - - -sub DESTROY -{ - my $self= shift(@_); - return if tied(%$self); - my $unload; - local $@; - eval { $unload= $self->{UNLOADME}; 1 } - or return; - my $debug= $ENV{DEBUG_TIE_REGISTRY}; - if( defined($debug) ) { - if( 1 < $debug ) { - my $hand= $self->Handle; - my $dep= $self->{DEPENDON}; - carp "${PACK} destroying ", $self->Path, " (", - "NONE" eq $hand ? $hand : sprintf("0x%lX",$hand), ")", - defined($dep) ? (" [depends on ",$dep->Path,"]") : (); - } else { - warn "${PACK} destroying ", $self->Path, ".\n"; - } - } - $self->RegCloseKey - unless "NONE" eq $self->Handle; - if( defined($unload) ) { - if( defined($debug) && 1 < $debug ) { - my( $obj, $subKey, $file )= @$unload; - warn "Unloading ", $self->Path, - " (from ", $obj->Path, ", $subKey)...\n"; - } - $self->UnLoad - || warn "Couldn't unload ", $self->Path, ": ", _ErrMsg, "\n"; - ## carp "Never unloaded ${PACK}::Load($$unload[2])"; - } - #delete $self->{DEPENDON}; -} - - -use vars qw( @CreateKey_Opts %CreateKey_Opts %_KeyDispNames ); -@CreateKey_Opts= qw( Access Class Options Delimiter - Disposition Security Volatile Backup ); -@CreateKey_Opts{@CreateKey_Opts}= (1) x @CreateKey_Opts; -%_KeyDispNames= ( REG_CREATED_NEW_KEY() => "REG_CREATED_NEW_KEY", - REG_OPENED_EXISTING_KEY() => "REG_OPENED_EXISTING_KEY" ); - -sub CreateKey -{ - my $self= shift(@_); - my $tied= tied(%$self); - $self= tied(%$self) if $tied; - my( $subKey, $opts )= @_; - my( $sam )= $self->Access; - my( $delim )= $self->Delimiter; - my( $class )= ""; - my( $flags )= 0; - my( $secure )= []; - my( $garb )= []; - my( $result )= \$garb; - my( $handle )= 0; - if( @_ < 1 || 2 < @_ - || 2 == @_ && "HASH" ne ref($opts) ) { - croak "Usage: \$new= \$old->CreateKey( \$subKey, {OPT=>VAL,...} );\n", - " options: @CreateKey_Opts\nCalled"; - } - if( defined($opts) ) { - $sam= $opts->{"Access"} if defined($opts->{"Access"}); - $class= $opts->{Class} if defined($opts->{Class}); - $flags= $opts->{Options} if defined($opts->{Options}); - $delim= $opts->{"Delimiter"} if defined($opts->{"Delimiter"}); - $secure= $opts->{Security} if defined($opts->{Security}); - if( defined($opts->{Disposition}) ) { - "SCALAR" eq ref($opts->{Disposition}) - or croak "${PACK}->CreateKey option `Disposition'", - " must provide a scalar reference"; - $result= $opts->{Disposition}; - } - if( 0 == $flags ) { - $flags |= REG_OPTION_VOLATILE - if defined($opts->{Volatile}) && $opts->{Volatile}; - $flags |= REG_OPTION_BACKUP_RESTORE - if defined($opts->{Backup}) && $opts->{Backup}; - } - } - my $subPath= ref($subKey) ? $subKey : $self->_split($subKey,$delim); - $subKey= join( $self->OS_Delimiter, @$subPath ); - $self->RegCreateKeyEx( $subKey, 0, $class, $flags, $sam, - $secure, $handle, $$result ) - or return (); - if( ! ref($$result) && $self->DualTypes ) { - $$result= _DualVal( \%_KeyDispNames, $$result ); - } - my $new= $self->_new( $handle, [ @{$self->_Path}, @{$subPath} ] ); - $new->{ACCESS}= $sam; - $new->{DELIM}= $delim; - $new= $new->TiedRef if $tied; - return $new; -} - - -use vars qw( $Load_Cnt @Load_Opts %Load_Opts ); -$Load_Cnt= 0; -@Load_Opts= qw(NewSubKey); -@Load_Opts{@Load_Opts}= (1) x @Load_Opts; - -sub Load -{ - my $this= shift(@_); - my $tied= ref($this) && tied(%$this); - $this= tied(%$this) if $tied; - my( $file, $subKey, $opts )= @_; - if( 2 == @_ && "HASH" eq ref($subKey) ) { - $opts= $subKey; - undef $subKey; - } - @_ < 1 || 3 < @_ || defined($opts) && "HASH" ne ref($opts) - and croak "Usage: \$key= ", - "${PACK}->Load( \$fileName, [\$newSubKey,] {OPT=>VAL...} );\n", - " options: @Load_Opts @new_Opts\nCalled"; - if( defined($opts) && exists($opts->{NewSubKey}) ) { - $subKey= delete $opts->{NewSubKey}; - } - if( ! defined( $subKey ) ) { - if( "" ne $this->Machine ) { - ( $this )= $this->_connect( [$this->Machine,"LMachine"] ); - } else { - ( $this )= $this->_rootKey( "LMachine" ); # Could also be "Users" - } - $subKey= "PerlTie:$$." . ++$Load_Cnt; - } - $this->RegLoadKey( $subKey, $file ) - or return (); - my $self= $this->new( $subKey, defined($opts) ? $opts : () ); - if( ! defined( $self ) ) { - { my $err= Win32::GetLastError(); - #{ local( $^E ); #} - $this->RegUnLoadKey( $subKey ) or carp - "Can't unload $subKey from ", $this->Path, ": ", _ErrMsg, "\n"; - Win32::SetLastError($err); - } - return (); - } - $self->{UNLOADME}= [ $this, $subKey, $file ]; - $self= $self->TiedRef if $tied; - return $self; -} - - -sub UnLoad -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - @_ and croak "Usage: \$key->UnLoad;"; - my $unload= $self->{UNLOADME}; - "ARRAY" eq ref($unload) - or croak "${PACK}->UnLoad called on a key which was not Load()ed"; - my( $obj, $subKey, $file )= @$unload; - $self->RegCloseKey; - return Win32API::Registry::RegUnLoadKey( $obj->Handle, $subKey ); -} - - -sub AllowSave -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - return $self->AllowPriv( "SeBackupPrivilege", @_ ); -} - - -sub AllowLoad -{ - my $self= shift(@_); - $self= tied(%$self) if tied(%$self); - return $self->AllowPriv( "SeRestorePrivilege", @_ ); -} - - -# RegNotifyChangeKeyValue( hKey, bWatchSubtree, iNotifyFilter, hEvent, bAsync ) - - -sub RegCloseKey { my $self= shift(@_); - Win32API::Registry::RegCloseKey $self->Handle, @_; } -sub RegConnectRegistry { my $self= shift(@_); - Win32API::Registry::RegConnectRegistry @_; } -sub RegCreateKey { my $self= shift(@_); - Win32API::Registry::RegCreateKey $self->Handle, @_; } -sub RegCreateKeyEx { my $self= shift(@_); - Win32API::Registry::RegCreateKeyEx $self->Handle, @_; } -sub RegDeleteKey { my $self= shift(@_); - Win32API::Registry::RegDeleteKey $self->Handle, @_; } -sub RegDeleteValue { my $self= shift(@_); - Win32API::Registry::RegDeleteValue $self->Handle, @_; } -sub RegEnumKey { my $self= shift(@_); - Win32API::Registry::RegEnumKey $self->Handle, @_; } -sub RegEnumKeyEx { my $self= shift(@_); - Win32API::Registry::RegEnumKeyEx $self->Handle, @_; } -sub RegEnumValue { my $self= shift(@_); - Win32API::Registry::RegEnumValue $self->Handle, @_; } -sub RegFlushKey { my $self= shift(@_); - Win32API::Registry::RegFlushKey $self->Handle, @_; } -sub RegGetKeySecurity { my $self= shift(@_); - Win32API::Registry::RegGetKeySecurity $self->Handle, @_; } -sub RegLoadKey { my $self= shift(@_); - Win32API::Registry::RegLoadKey $self->Handle, @_; } -sub RegNotifyChangeKeyValue { my $self= shift(@_); - Win32API::Registry::RegNotifyChangeKeyValue $self->Handle, @_; } -sub RegOpenKey { my $self= shift(@_); - Win32API::Registry::RegOpenKey $self->Handle, @_; } -sub RegOpenKeyEx { my $self= shift(@_); - Win32API::Registry::RegOpenKeyEx $self->Handle, @_; } -sub RegQueryInfoKey { my $self= shift(@_); - Win32API::Registry::RegQueryInfoKey $self->Handle, @_; } -sub RegQueryMultipleValues { my $self= shift(@_); - Win32API::Registry::RegQueryMultipleValues $self->Handle, @_; } -sub RegQueryValue { my $self= shift(@_); - Win32API::Registry::RegQueryValue $self->Handle, @_; } -sub RegQueryValueEx { my $self= shift(@_); - Win32API::Registry::RegQueryValueEx $self->Handle, @_; } -sub RegReplaceKey { my $self= shift(@_); - Win32API::Registry::RegReplaceKey $self->Handle, @_; } -sub RegRestoreKey { my $self= shift(@_); - Win32API::Registry::RegRestoreKey $self->Handle, @_; } -sub RegSaveKey { my $self= shift(@_); - Win32API::Registry::RegSaveKey $self->Handle, @_; } -sub RegSetKeySecurity { my $self= shift(@_); - Win32API::Registry::RegSetKeySecurity $self->Handle, @_; } -sub RegSetValue { my $self= shift(@_); - Win32API::Registry::RegSetValue $self->Handle, @_; } -sub RegSetValueEx { my $self= shift(@_); - Win32API::Registry::RegSetValueEx $self->Handle, @_; } -sub RegUnLoadKey { my $self= shift(@_); - Win32API::Registry::RegUnLoadKey $self->Handle, @_; } -sub AllowPriv { my $self= shift(@_); - Win32API::Registry::AllowPriv @_; } - - -# Autoload methods go after =cut, and are processed by the autosplit program. - -1; -__END__ - -=head1 NAME - -Win32::TieRegistry - Powerful and easy ways to manipulate a registry -[on Win32 for now]. - -=head1 SYNOPSIS - - use Win32::TieRegistry 0.20 ( UseOptionName=>UseOptionValue[,...] ); - - $Registry->SomeMethodCall(arg1,...); - - $subKey= $Registry->{"Key\\SubKey\\"}; - $valueData= $Registry->{"Key\\SubKey\\\\ValueName"}; - $Registry->{"Key\\SubKey\\"}= { "NewSubKey" => {...} }; - $Registry->{"Key\\SubKey\\\\ValueName"}= "NewValueData"; - $Registry->{"\\ValueName"}= [ pack("fmt",$data), REG_DATATYPE ]; - -=head1 EXAMPLES - - use Win32::TieRegistry( Delimiter=>"#", ArrayValues=>0 ); - $pound= $Registry->Delimiter("/"); - $diskKey= $Registry->{"LMachine/System/Disk/"} - or die "Can't read LMachine/System/Disk key: $^E\n"; - $data= $key->{"/Information"} - or die "Can't read LMachine/System/Disk//Information value: $^E\n"; - $remoteKey= $Registry->{"//ServerA/LMachine/System/"} - or die "Can't read //ServerA/LMachine/System/ key: $^E\n"; - $remoteData= $remoteKey->{"Disk//Information"} - or die "Can't read ServerA's System/Disk//Information value: $^E\n"; - foreach $entry ( keys(%$diskKey) ) { - ... - } - foreach $subKey ( $diskKey->SubKeyNames ) { - ... - } - $diskKey->AllowSave( 1 ); - $diskKey->RegSaveKey( "C:/TEMP/DiskReg", [] ); - -=head1 DESCRIPTION - -The I<Win32::TieRegistry> module lets you manipulate the Registry -via objects [as in "object oriented"] or via tied hashes. But -you will probably mostly use a combination reference, that is, a -reference to a tied hash that has also been made an object so that -you can mix both access methods [as shown above]. - -If you did not get this module as part of L<libwin32>, you might -want to get a recent version of L<libwin32> from CPAN which should -include this module and the I<Win32API::Registry> module that it -uses. - -Skip to the L<SUMMARY> section if you just want to dive in and start -using the Registry from Perl. - -Accessing and manipulating the registry is extremely simple using -I<Win32::TieRegistry>. A single, simple expression can return -you almost any bit of information stored in the Registry. -I<Win32::TieRegistry> also gives you full access to the "raw" -underlying API calls so that you can do anything with the Registry -in Perl that you could do in C. But the "simple" interface has -been carefully designed to handle almost all operations itself -without imposing arbitrary limits while providing sensible -defaults so you can list only the parameters you care about. - -But first, an overview of the Registry itself. - -=head2 The Registry - -The Registry is a forest: a collection of several tree structures. -The root of each tree is a key. These root keys are identified by -predefined constants whose names start with "HKEY_". Although all -keys have a few attributes associated with each [a class, a time -stamp, and security information], the most important aspect of keys -is that each can contain subkeys and can contain values. - -Each subkey has a name: a string which cannot be blank and cannot -contain the delimiter character [backslash: C<'\\'>] nor nul -[C<'\0'>]. Each subkey is also a key and so can contain subkeys -and values [and has a class, time stamp, and security information]. - -Each value has a name: a string which E<can> be blank and E<can> -contain the delimiter character [backslash: C<'\\'>] and any -character except for null, C<'\0'>. Each value also has data -associated with it. Each value's data is a contiguous chunk of -bytes, which is exactly what a Perl string value is so Perl -strings will usually be used to represent value data. - -Each value also has a data type which says how to interpret the -value data. The primary data types are: - -=over - -=item REG_SZ - -A null-terminated string. - -=item REG_EXPAND_SZ - -A null-terminated string which contains substrings consisting of a -percent sign [C<'%'>], an environment variable name, then a percent -sign, that should be replaced with the value associate with that -environment variable. The system does I<not> automatically do this -substitution. - -=item REG_BINARY - -Some arbitrary binary value. You can think of these as being -"packed" into a string. - -If your system has the L<SetDualVar> module installed, -the C<DualBinVals()> option wasn't turned off, and you -fetch a C<REG_BINARY> value of 4 bytes or fewer, then -you can use the returned value in a numeric context to -get at the "unpacked" numeric value. See C<GetValue()> -for more information. - -=item REG_MULTI_SZ - -Several null-terminated strings concatenated together with an -extra trailing C<'\0'> at the end of the list. Note that the list -can include empty strings so use the value's length to determine -the end of the list, not the first occurrence of C<'\0\0'>. -It is best to set the C<SplitMultis()> option so I<Win32::TieRegistry> -will split these values into an array of strings for you. - -=item REG_DWORD - -A long [4-byte] integer value. These values are expected either -packed into a 4-character string or as a hex string of E<more than> -4 characters [but I<not> as a numeric value, unfortunately, as there is -no sure way to tell a numeric value from a packed 4-byte string that -just happens to be a string containing a valid numeric value]. - -How such values are returned depends on the C<DualBinVals()> and -C<DWordsToHex()> options. See C<GetValue()> for details. - -=back - -In the underlying Registry calls, most places which take a -subkey name also allow you to pass in a subkey "path" -- a -string of several subkey names separated by the delimiter -character, backslash [C<'\\'>]. For example, doing -C<RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM\\DISK",...)> is much -like opening the C<"SYSTEM"> subkey of C<HKEY_LOCAL_MACHINE>, -then opening its C<"DISK"> subkey, then closing the C<"SYSTEM"> -subkey. - -All of the I<Win32::TieRegistry> features allow you to use your -own delimiter in place of the system's delimiter, [C<'\\'>]. In -most of our examples we will use a forward slash [C<'/'>] as our -delimiter as it is easier to read and less error prone to use when -writing Perl code since you have to type two backslashes for each -backslash you want in a string. Note that this is true even when -using single quotes -- C<'\\HostName\LMachine\'> is an invalid -string and must be written as C<'\\\\HostName\\LMachine\\'>. - -You can also connect to the registry of other computers on your -network. This will be discussed more later. - -Although the Registry does not have a single root key, the -I<Win32::TieRegistry> module creates a virtual root key for you -which has all of the I<HKEY_*> keys as subkeys. - -=head2 Tied Hashes Documentation - -Before you can use a tied hash, you must create one. One way to -do that is via: - - use Win32::TieRegistry ( TiedHash => '%RegHash' ); - -which exports a C<%RegHash> variable into your package and ties it -to the virtual root key of the Registry. An alternate method is: - - my %RegHash; - use Win32::TieRegistry ( TiedHash => \%RegHash ); - -There are also several ways you can tie a hash variable to any -other key of the Registry, which are discussed later. - -Note that you will most likely use C<$Registry> instead of using -a tied hash. C<$Registry> is a reference to a hash that has -been tied to the virtual root of your computer's Registry [as if, -C<$Registry= \%RegHash>]. So you would use C<$Registry-E<gt>{Key}> -rather than C<$RegHash{Key}> and use C<keys %{$Registry}> rather -than C<keys %RegHash>, for example. - -For each hash which has been tied to a Registry key, the Perl -C<keys> function will return a list containing the name of each -of the key's subkeys with a delimiter character appended to it and -containing the name of each of the key's values with a delimiter -prepended to it. For example: - - keys( %{ $Registry->{"HKEY_CLASSES_ROOT\\batfile\\"} } ) - -might yield the following list value: - - ( "DefaultIcon\\", # The subkey named "DefaultIcon" - "shell\\", # The subkey named "shell" - "shellex\\", # The subkey named "shellex" - "\\", # The default value [named ""] - "\\EditFlags" ) # The value named "EditFlags" - -For the virtual root key, short-hand subkey names are used as -shown below. You can use the short-hand name, the regular -I<HKEY_*> name, or any numeric value to access these keys, but -the short-hand names are all that will be returned by the C<keys> -function. - -=over - -=item "Classes" for HKEY_CLASSES_ROOT - -Contains mappings between file name extensions and the uses -for such files along with configuration information for COM -[MicroSoft's Common Object Model] objects. Usually a link to -the C<"SOFTWARE\\Classes"> subkey of the C<HKEY_LOCAL_MACHINE> -key. - -=item "CUser" for HKEY_CURRENT_USER - -Contains information specific to the currently logged-in user. -Mostly software configuration information. Usually a link to -a subkey of the C<HKEY_USERS> key. - -=item "LMachine" for HKEY_LOCAL_MACHINE - -Contains all manner of information about the computer. - -=item "Users" for HKEY_USERS - -Contains one subkey, C<".DEFAULT">, which gets copied to a new -subkey whenever a new user is added. Also contains a subkey for -each user of the system, though only those for active users -[usually only one] are loaded at any given time. - -=item "PerfData" for HKEY_PERFORMANCE_DATA - -Used to access data about system performance. Access via this key -is "special" and all but the most carefully constructed calls will -fail, usually with C<ERROR_INSUFFICIENT_BUFFER>. For example, you -can't enumerate key names without also enumerating values which -require huge buffers but the exact buffer size required cannot be -determined beforehand because C<RegQueryInfoKey()> E<always> fails -with C<ERROR_INSUFFICIENT_BUFFER> for C<HKEY_PERFORMANCE_DATA> no -matter how it is called. So it is currently not very useful to -tie a hash to this key. You can use it to create an object to use -for making carefully constructed calls to the underlying Reg*() -routines. - -=item "CConfig" for HKEY_CURRENT_CONFIG - -Contains minimal information about the computer's current -configuration that is required very early in the boot process. -For example, setting for the display adapter such as screen -resolution and refresh rate are found in here. - -=item "DynData" for HKEY_DYN_DATA - -Dynamic data. We have found no documentation for this key. - -=back - -A tied hash is much like a regular hash variable in Perl -- you give -it a key string inside braces, [C<{> and C<}>], and it gives you -back a value [or lets you set a value]. For I<Win32::TieRegistry> -hashes, there are two types of values that will be returned. - -=over - -=item SubKeys - -If you give it a string which represents a subkey, then it will -give you back a reference to a hash which has been tied to that -subkey. It can't return the hash itself, so it returns a -reference to it. It also blesses that reference so that it is -also an object so you can use it to call method functions. - -=item Values - -If you give it a string which is a value name, then it will give -you back a string which is the data for that value. Alternately, -you can request that it give you both the data value string and -the data value type [we discuss how to request this later]. In -this case, it would return a reference to an array where the value -data string is element C<[0]> and the value data type is element -C<[1]>. - -=back - -The key string which you use in the tied hash must be interpreted -to determine whether it is a value name or a key name or a path -that combines several of these or even other things. There are -two simple rules that make this interpretation easy and -unambiguous: - - Put a delimiter after each key name. - Put a delimiter in front of each value name. - -Exactly how the key string will be intepreted is governed by the -following cases, in the order listed. These cases are designed -to "do what you mean". Most of the time you won't have to think -about them, especially if you follow the two simple rules above. -After the list of cases we give several examples which should be -clear enough so feel free to skip to them unless you are worried -about the details. - -=over - -=item Remote machines - -If the hash is tied to the virtual root of the registry [or the -virtual root of a remote machine's registry], then we treat hash -key strings which start with the delimiter character specially. - -If the hash key string starts with two delimiters in a row, then -those should be immediately followed by the name of a remote -machine whose registry we wish to connect to. That can be -followed by a delimiter and more subkey names, etc. If the -machine name is not following by anything, then a virtual root -for the remote machine's registry is created, a hash is tied to -it, and a reference to that hash it is returned. - -=item Hash key string starts with the delimiter - -If the hash is tied to a virtual root key, then the leading -delimiter is ignored. It should be followed by a valid Registry -root key name [either a short-hand name like C<"LMachine">, an -I<HKEY_*> value, or a numeric value]. This alternate notation is -allowed in order to be more consistant with the C<Open()> method -function. - -For all other Registry keys, the leading delimiter indicates -that the rest of the string is a value name. The leading -delimiter is stripped and the rest of the string [which can -be empty and can contain more delimiters] is used as a value -name with no further parsing. - -=item Exact match with direct subkey name followed by delimiter - -If you have already called the Perl C<keys> function on the tied -hash [or have already called C<MemberNames> on the object] and the -hash key string exactly matches one of the strings returned, then -no further parsing is done. In other words, if the key string -exactly matches the name of a direct subkey with a delimiter -appended, then a reference to a hash tied to that subkey is -returned [but only if C<keys> or C<MemberNames> has already -been called for that tied hash]. - -This is only important if you have selected a delimiter other than -the system default delimiter and one of the subkey names contains -the delimiter you have chosen. This rule allows you to deal with -subkeys which contain your chosen delimiter in their name as long -as you only traverse subkeys one level at a time and always -enumerate the list of members before doing so. - -The main advantage of this is that Perl code which recursively -traverses a hash will work on hashes tied to Registry keys even if -a non-default delimiter has been selected. - -=item Hash key string contains two delimiters in a row - -If the hash key string contains two [or more] delimiters in a row, -then the string is split between the first pair of delimiters. -The first part is interpreted as a subkey name or a path of subkey -names separated by delimiters and with a trailing delimiter. The -second part is interpreted as a value name with one leading -delimiter [any extra delimiters are considered part of the value -name]. - -=item Hash key string ends with a delimiter - -If the key string ends with a delimiter, then it is treated -as a subkey name or path of subkey names separated by delimiters. - -=item Hash key string contains a delimiter - -If the key string contains a delimiter, then it is split after -the last delimiter. The first part is treated as a subkey name or -path of subkey names separated by delimiters. The second part -is ambiguous and is treated as outlined in the next item. - -=item Hash key string contains no delimiters - -If the hash key string contains no delimiters, then it is ambiguous. - -If you are reading from the hash [fetching], then we first use the -key string as a value name. If there is a value with a matching -name in the Registry key which the hash is tied to, then the value -data string [and possibly the value data type] is returned. -Otherwise, we retry by using the hash key string as a subkey name. -If there is a subkey with a matching name, then we return a -reference to a hash tied to that subkey. Otherwise we return -C<undef>. - -If you are writing to the hash [storing], then we use the key -string as a subkey name only if the value you are storing is a -reference to a hash value. Otherwise we use the key string as -a value name. - -=back - -=head3 Examples - -Here are some examples showing different ways of accessing Registry -information using references to tied hashes: - -=over - -=item Canonical value fetch - - $tip18= $Registry->{"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\" - . 'Windows\\CurrentVersion\\Explorer\\Tips\\\\18'}; - -Should return the text of important tip number 18. Note that two -backslashes, C<"\\">, are required to get a single backslash into -a Perl double-quoted or single-qouted string. Note that C<"\\"> -is appended to each key name [C<"HKEY_LOCAL_MACHINE"> through -C<"Tips">] and C<"\\"> is prepended to the value name, C<"18">. - -=item Changing your delimiter - - $Registry->Delimiter("/"); - $tip18= $Registry->{"HKEY_LOCAL_MACHINE/Software/Microsoft/" - . 'Windows/CurrentVersion/Explorer/Tips//18'}; - -This usually makes things easier to read when working in Perl. -All remaining examples will assume the delimiter has been changed -as above. - -=item Using intermediate keys - - $ms= $Registry->{"LMachine/Software/Microsoft/"}; - $tips= $ms->{"Windows/CurrentVersion/Explorer/Tips/"}; - $tip18= $winlogon->{"/18"}; - -Same as above but opens more keys into the Registry which lets you -efficiently re-access those intermediate keys. This is slightly -less efficient if you never reuse those intermediate keys. - -=item Chaining in a single statement - - $tip18= $Registry->{"LMachine/Software/Microsoft/"}-> - {"Windows/CurrentVersion/Explorer/Tips/"}->{"/18"}; - -Like above, this creates intermediate key objects then uses -them to access other data. Once this statement finishes, the -intermediate key objects are destroyed. Several handles into -the Registry are opened and closed by this statement so it is -less efficient but there are times when this will be useful. - -=item Even less efficient example of chaining - - $tip18= $Registry->{"LMachine/Software/Microsoft"}-> - {"Windows/CurrentVersion/Explorer/Tips"}->{"/18"}; - -Because we left off the trailing delimiters, I<Win32::TieRegistry> -doesn't know whether final names, C<"Microsoft"> and C<"Tips">, -are subkey names or value names. So this statement ends up -executing the same code as the next one. - -=item What the above really does - - $tip18= $Registry->{"LMachine/Software/"}->{"Microsoft"}-> - {"Windows/CurrentVersion/Explorer/"}->{"Tips"}->{"/18"}; - -With more chains to go through, more temporary objects are created -and later destroyed than in our first chaining example. Also, -when C<"Microsoft"> is looked up, I<Win32::TieRegistry> first -tries to open it as a value and fails then tries it as a subkey. -The same is true for when it looks up C<"Tips">. - -=item Getting all of the tips - - $tips= $Registry->{"LMachine/Software/Microsoft/"}-> - {"Windows/CurrentVersion/Explorer/Tips/"} - or die "Can't find the Windows tips: $^E\n"; - foreach( keys %$tips ) { - print "$_: ", $tips->{$_}, "\n"; - } - -First notice that we actually check for failure for the first -time. We are assuming that the C<"Tips"> key contains no subkeys. -Otherwise the C<print> statement would show something like -C<"Win32::TieRegistry=HASH(0xc03ebc)"> for each subkey. - -The output from the above code will start something like: - - /0: If you don't know how to do something,[...] - -=back - -=head3 Deleting items - -You can use the Perl C<delete> function to delete a value from a -Registry key or to delete a subkey as long that subkey contains -no subkeys of its own. See L<More Examples>, below, for more -information. - -=head3 Storing items - -You can use the Perl assignment operator [C<=>] to create new -keys, create new values, or replace values. The values you store -should be in the same format as the values you would fetch from a -tied hash. For example, you can use a single assignment statement -to copy an entire Registry tree. The following statement: - - $Registry->{"LMachine/Software/Classes/Tie_Registry/"}= - $Registry->{"LMachine/Software/Classes/batfile/"}; - -creates a C<"Tie_Registry"> subkey under the C<"Software\\Classes"> -subkey of the C<HKEY_LOCAL_MACHINE> key. Then it populates it -with copies of all of the subkeys and values in the C<"batfile"> -subkey and all of its subkeys. Note that you need to have -called C<$Registry-E<gt>ArrayValues(1)> for the proper value data -type information to be copied. Note also that this release of -I<Win32::TieRegistry> does not copy key attributes such as class -name and security information [this is planned for a future release]. - -The following statement creates a whole subtree in the Registry: - - $Registry->{"LMachine/Software/FooCorp/"}= { - "FooWriter/" => { - "/Version" => "4.032", - "Startup/" => { - "/Title" => "Foo Writer Deluxe ][", - "/WindowSize" => [ pack("LL",$wid,$ht), "REG_BINARY" ], - "/TaskBarIcon" => [ "0x0001", "REG_DWORD" ], - }, - "Compatibility/" => { - "/AutoConvert" => "Always", - "/Default Palette" => "Windows Colors", - }, - }, - "/License", => "0123-9C8EF1-09-FC", - }; - -Note that all but the last Registry key used on the left-hand -side of the assignment [that is, "LMachine/Software/" but not -"FooCorp/"] must already exist for this statement to succeed. - -By using the leading a trailing delimiters on each subkey name and -value name, I<Win32::TieRegistry> will tell you if you try to assign -subkey information to a value or visa-versa. - -=head3 More examples - -=over - -=item Adding a new tip - - $tips= $Registry->{"LMachine/Software/Microsoft/"}-> - {"Windows/CurrentVersion/Explorer/Tips/"} - or die "Can't find the Windows tips: $^E\n"; - $tips{'/186'}= "Be very careful when making changes to the Registry!"; - -=item Deleting our new tip - - $tips= $Registry->{"LMachine/Software/Microsoft/"}-> - {"Windows/CurrentVersion/Explorer/Tips/"} - or die "Can't find the Windows tips: $^E\n"; - $tip186= delete $tips{'/186'}; - -Note that Perl's C<delete> function returns the value that was deleted. - -=item Adding a new tip differently - - $Registry->{"LMachine/Software/Microsoft/" . - "Windows/CurrentVersion/Explorer/Tips//186"}= - "Be very careful when making changes to the Registry!"; - -=item Deleting differently - - $tip186= delete $Registry->{"LMachine/Software/Microsoft/Windows/" . - "CurrentVersion/Explorer/Tips//186"}; - -Note that this only deletes the tail of what we looked up, the -C<"186"> value, not any of the keys listed. - -=item Deleting a key - -WARNING: The following code will delete all information about the -current user's tip preferences. Actually executing this command -would probably cause the user to see the Welcome screen the next -time they log in and may cause more serious problems. This -statement is shown as an example only and should not be used when -experimenting. - - $tips= delete $Registry->{"CUser/Software/Microsoft/Windows/" . - "CurrentVersion/Explorer/Tips/"}; - -This deletes the C<"Tips"> key and the values it contains. The -C<delete> function will return a reference to a hash [not a tied -hash] containing the value names and value data that were deleted. - -The information to be returned is copied from the Registry into a -regular Perl hash before the key is deleted. If the key has many -subkeys, this copying could take a significant amount of memory -and/or processor time. So you can disable this process by calling -the C<FastDelete> member function: - - $prevSetting= $regKey->FastDelete(1); - -which will cause all subsequent delete operations via C<$regKey> -to simply return a true value if they succeed. This optimization -is automatically done if you use C<delete> in a void context. - -=item Technical notes on deleting - -If you use C<delete> to delete a Registry key or value and use -the return value, then I<Win32::TieRegistry> usually looks up the -current contents of that key or value so they can be returned if -the deletion is successful. If the deletion succeeds but the -attempt to lookup the old contents failed, then the return value -of C<delete> will be C<$^E> from the failed part of the operation. - -=item Undeleting a key - - $Registry->{"LMachine/Software/Microsoft/Windows/" . - "CurrentVersion/Explorer/Tips/"}= $tips; - -This adds back what we just deleted. Note that this version of -I<Win32::TieRegistry> will use defaults for the key attributes -[such as class name and security] and will not restore the -previous attributes. - -=item Not deleting a key - -WARNING: Actually executing the following code could cause -serious problems. This statement is shown as an example only and -should not be used when experimenting. - - $res= delete $Registry->{"CUser/Software/Microsoft/Windows/"} - defined($res) || die "Can't delete URL key: $^E\n"; - -Since the "Windows" key should contain subkeys, that C<delete> -statement should make no changes to the Registry, return C<undef>, -and set C<$^E> to "Access is denied". - -=item Not deleting again - - $tips= $Registry->{"CUser/Software/Microsoft/Windows/" . - "CurrentVersion/Explorer/Tips/"}; - delete $tips; - -The Perl C<delete> function requires that its argument be an -expression that ends in a hash element lookup [or hash slice], -which is not the case here. The C<delete> function doesn't -know which hash $tips came from and so can't delete it. - -=back - -=head2 Objects Documentation - -The following member functions are defined for use on -I<Win32::TieRegistry> objects: - -=over - -=item new - -The C<new> method creates a new I<Win32::TieRegistry> object. -C<new> is mostly a synonym for C<Open()> so see C<Open()> below for -information on what arguments to pass in. Examples: - - $machKey= new Win32::TieRegistry "LMachine" - or die "Can't access HKEY_LOCAL_MACHINE key: $^E\n"; - $userKey= Win32::TieRegistry->new("CUser") - or die "Can't access HKEY_CURRENT_USER key: $^E\n"; - -Note that calling C<new> via a reference to a tied hash returns -a simple object, not a reference to a tied hash. - -=item Open - -=item $subKey= $key->Open( $sSubKey, $rhOptions ) - -The C<Open> method opens a Registry key and returns a new -I<Win32::TieRegistry> object associated with that Registry key. -If C<Open> is called via a reference to a tied hash, then C<Open> -returns another reference to a tied hash. Otherwise C<Open> -returns a simple object and you should then use C<TiedRef> to get -a reference to a tied hash. - -C<$sSubKey> is a string specifying a subkey to be opened. -Alternately C<$sSubKey> can be a reference to an array value -containing the list of increasingly deep subkeys specifying the -path to the subkey to be opened. - -C<$rhOptions> is an optional reference to a hash containing extra -options. The C<Open> method supports two options, C<"Delimiter"> -and C<"Access">, and C<$rhOptions> should have only have zero or -more of these strings as keys. See the "Examples" section below -for more information. - -The C<"Delimiter"> option specifies what string [usually a single -character] will be used as the delimiter to be appended to subkey -names and prepended to value names. If this option is not specified, -the new key [C<$subKey>] inherits the delimiter of the old key -[C<$key>]. - -The C<"Access"> option specifies what level of access to the -Registry key you wish to have once it has been opened. If this -option is not specified, the new key [C<$subKey>] is opened with -the same access level used when the old key [C<$key>] was opened. -The virtual root of the Registry pretends it was opened with -access C<KEY_READ()|KEY_WRITE()> so this is the default access when -opening keys directory via C<$Registry>. If you don't plan on -modifying a key, you should open it with C<KEY_READ> access as -you may not have C<KEY_WRITE> access to it or some of its subkeys. - -If the C<"Access"> option value is a string that starts with -C<"KEY_">, then it should match E<one> of the predefined access -levels [probably C<"KEY_READ">, C<"KEY_WRITE">, or -C<"KEY_ALL_ACCESS">] exported by the I<Win32API::Registry> module. -Otherwise, a numeric value is expected. For maximum flexibility, -include C<use Win32::TieRegistry qw(:KEY_);>, for example, near -the top of your script so you can specify more complicated access -levels such as C<KEY_READ()|KEY_WRITE()>. - -If C<$sSubKey> does not begin with the delimiter [or C<$sSubKey> -is an array reference], then the path to the subkey to be opened -will be relative to the path of the original key [C<$key>]. If -C<$sSubKey> begins with a single delimiter, then the path to the -subkey to be opened will be relative to the virtual root of the -Registry on whichever machine the original key resides. If -C<$sSubKey> begins with two consectutive delimiters, then those -must be followed by a machine name which causes the C<Connect()> -method function to be called. - -Examples: - - $machKey= $Registry->Open( "LMachine", {Access=>KEY_READ(),Delimiter=>"/"} ) - or die "Can't open HKEY_LOCAL_MACHINE key: $^E\n"; - $swKey= $machKey->Open( "Software" ); - $logonKey= $swKey->Open( "Microsoft/Windows NT/CurrentVersion/Winlogon/" ); - $NTversKey= $swKey->Open( ["Microsoft","Windows NT","CurrentVersion"] ); - $versKey= $swKey->Open( qw(Microsoft Windows CurrentVersion) ); - - $remoteKey= $Registry->Open( "//HostA/LMachine/System/", {Delimiter=>"/"} ) - or die "Can't connect to HostA or can't open subkey: $^E\n"; - -=item Clone - -=item $copy= $key->Clone - -Creates a new object that is associated with the same Registry key -as the invoking object. - -=item Connect - -=item $remoteKey= $Registry->Connect( $sMachineName, $sKeyPath, $rhOptions ) - -The C<Connect> method connects to the Registry of a remote machine, -and opens a key within it, then returns a new I<Win32::TieRegistry> -object associated with that remote Registry key. If C<Connect> -was called using a reference to a tied hash, then the return value -will also be a reference to a tied hash [or C<undef>]. Otherwise, -if you wish to use the returned object as a tied hash [not just as -an object], then use the C<TiedRef> method function after C<Connect>. - -C<$sMachineName> is the name of the remote machine. You don't have -to preceed the machine name with two delimiter characters. - -C<$sKeyPath> is a string specifying the remote key to be opened. -Alternately C<$sKeyPath> can be a reference to an array value -containing the list of increasingly deep keys specifying the path -to the key to be opened. - -C<$rhOptions> is an optional reference to a hash containing extra -options. The C<Connect> method supports two options, C<"Delimiter"> -and C<"Access">. See the C<Open> method documentation for more -information on these options. - -C<$sKeyPath> is already relative to the virtual root of the Registry -of the remote machine. A single leading delimiter on C<sKeyPath> -will be ignored and is not required. - -C<$sKeyPath> can be empty in which case C<Connect> will return an -object representing the virtual root key of the remote Registry. -Each subsequent use of C<Open> on this virtual root key will call -the system C<RegConnectRegistry> function. - -The C<Connect> method can be called via any I<Win32::TieRegistry> -object, not just C<$Registry>. Attributes such as the desired -level of access and the delimiter will be inherited from the -object used but the C<$sKeyPath> will always be relative to the -virtual root of the remote machine's registry. - -Examples: - - $remMachKey= $Registry->Connect( "HostA", "LMachine", {Delimiter->"/"} ) - or die "Can't connect to HostA's HKEY_LOCAL_MACHINE key: $^E\n"; - - $remVersKey= $remMachKey->Connect( "www.microsoft.com", - "LMachine/Software/Microsoft/Inetsrv/CurrentVersion/", - { Access=>KEY_READ, Delimiter=>"/" } ) - or die "Can't check what version of IIS Microsoft is running: $^E\n"; - - $remVersKey= $remMachKey->Connect( "www", - qw(LMachine Software Microsoft Inetsrv CurrentVersion) ) - or die "Can't check what version of IIS we are running: $^E\n"; - -=item ObjectRef - -=item $object_ref= $obj_or_hash_ref->ObjectRef - -For a simple object, just returns itself [C<$obj == $obj->ObjectRef>]. - -For a reference to a tied hash [if it is also an object], C<ObjectRef> -returns the simple object that the hash is tied to. - -This is primarilly useful when debugging since typing C<x $Registry> -will try to display your I<entire> registry contents to your screen. -But the debugger command C<x $Registry->ObjectRef> will just dump -the implementation details of the underlying object to your screen. - -=item Flush( $bFlush ) - -Flushes all cached information about the Registry key so that future -uses will get fresh data from the Registry. - -If the optional C<$bFlush> is specified and a true value, then -C<RegFlushKey()> will be called, which is almost never necessary. - -=item GetValue - -=item $ValueData= $key->GetValue( $sValueName ) - -=item ($ValueData,$ValueType)= $key->GetValue( $sValueName ) - -Gets a Registry value's data and data type. - -C<$ValueData> is usually just a Perl string that contains the -value data [packed into it]. For certain types of data, however, -C<$ValueData> may be processed as described below. - -C<$ValueType> is the C<REG_*> constant describing the type of value -data stored in C<$ValueData>. If the C<DualTypes()> option is on, -then C<$ValueType> will be a dual value. That is, when used in a -numeric context, C<$ValueType> will give the numeric value of a -C<REG_*> constant. However, when used in a non-numeric context, -C<$ValueType> will return the name of the C<REG_*> constant, for -example C<"REG_SZ"> [note the quotes]. So both of the following -can be true at the same time: - - $ValueType == REG_SZ() - $ValueType eq "REG_SZ" - -=over - -=item REG_SZ and REG_EXPAND_SZ - -If the C<FixSzNulls()> option is on, then the trailing C<'\0'> will be -stripped [unless there isn't one] before values of type C<REG_SZ> -and C<REG_EXPAND_SZ> are returned. Note that C<SetValue()> will add -a trailing C<'\0'> under similar circumstances. - -=item REG_MULTI_SZ - -If the C<SplitMultis()> option is on, then values of this type are -returned as a reference to an array containing the strings. For -example, a value that, with C<SplitMultis()> off, would be returned as: - - "Value1\000Value2\000\000" - -would be returned, with C<SplitMultis()> on, as: - - [ "Value1", "Value2" ] - -=item REG_DWORD - -If the C<DualBinVals()> option is on, then the value is returned -as a scalar containing both a string and a number [much like -the C<$!> variable -- see the L<SetDualVar> module for more -information] where the number part is the "unpacked" value. -Use the returned value in a numeric context to access this part -of the value. For example: - - $num= 0 + $Registry->{"CUser/Console//ColorTable01"}; - -If the C<DWordsToHex()> option is off, the string part of the -returned value is a packed, 4-byte string [use C<unpack("L",$value)> -to get the numeric value. - -If C<DWordsToHex()> is on, the string part of the returned value is -a 10-character hex strings [with leading "0x"]. You can use -C<hex($value)> to get the numeric value. - -Note that C<SetValue()> will properly understand each of these -returned value formats no matter how C<DualBinVals()> is set. - -=back - -=item ValueNames - -=item @names= $key->ValueNames - -Returns the list of value names stored directly in a Registry key. -Note that the names returned do I<not> have a delimiter prepended -to them like with C<MemberNames()> and tied hashes. - -Once you request this information, it is cached in the object and -future requests will always return the same list unless C<Flush()> -has been called. - -=item SubKeyNames - -=item @key_names= $key->SubKeyNames - -Returns the list of subkey names stored directly in a Registry key. -Note that the names returned do I<not> have a delimiter appended -to them like with C<MemberNames()> and tied hashes. - -Once you request this information, it is cached in the object and -future requests will always return the same list unless C<Flush()> -has been called. - -=item SubKeyClasses - -=item @classes= $key->SubKeyClasses - -Returns the list of classes for subkeys stored directly in a -Registry key. The classes are returned in the same order as -the subkey names returned by C<SubKeyNames()>. - -=item SubKeyTimes - -=item @times= $key->SubKeyTimes - -Returns the list of last-modified times for subkeys stored -directly in a Registry key. The times are returned in the same -order as the subkey names returned by C<SubKeyNames()>. Each -time is a C<FILETIME> structure packed into a Perl string. - -Once you request this information, it is cached in the object and -future requests will always return the same list unless C<Flush()> -has been called. - -=item MemberNames - -=item @members= $key->MemberNames - -Returns the list of subkey names and value names stored directly -in a Registry key. Subkey names have a delimiter appended to the -end and value names have a delimiter prepended to the front. - -Note that a value name could end in a delimiter [or could be C<""> -so that the member name returned is just a delimiter] so the -presence or absence of the leading delimiter is what should be -used to determine whether a particular name is for a subkey or a -value, not the presence or absence of a trailing delimiter. - -Once you request this information, it is cached in the object and -future requests will always return the same list unless C<Flush()> -has been called. - -=item Information - -=item %info= $key->Information - -=item @items= $key->Information( @itemNames ); - -Returns the following information about a Registry key: - -=over - -=item LastWrite - -A C<FILETIME> structure indicating when the key was last modified -and packed into a Perl string. - -=item CntSubKeys - -The number of subkeys stored directly in this key. - -=item CntValues - -The number of values stored directly in this key. - -=item SecurityLen - -The length [in bytes] of the largest[?] C<SECURITY_DESCRIPTOR> -associated with the Registry key. - -=item MaxValDataLen - -The length [in bytes] of the longest value data associated with -a value stored in this key. - -=item MaxSubKeyLen - -The length [in chars] of the longest subkey name associated with -a subkey stored in this key. - -=item MaxSubClassLen - -The length [in chars] of the longest class name associated with -a subkey stored directly in this key. - -=item MaxValNameLen - -The length [in chars] of the longest value name associated with -a value stored in this key. - -=back - -With no arguments, returns a hash [not a reference to a hash] where -the keys are the names for the items given above and the values -are the information describe above. For example: - - %info= ( "CntValues" => 25, # Key contains 25 values. - "MaxValNameLen" => 20, # One of which has a 20-char name. - "MaxValDataLen" => 42, # One of which has a 42-byte value. - "CntSubKeys" => 1, # Key has 1 immediate subkey. - "MaxSubKeyLen" => 13, # One of which has a 12-char name. - "MaxSubClassLen" => 0, # All of which have class names of "". - "SecurityLen" => 232, # One SECURITY_DESCRIPTOR is 232 bytes. - "LastWrite" => "\x90mZ\cX{\xA3\xBD\cA\c@\cA" - # Key was last modifed 1998/06/01 16:29:32 GMT - ); - -With arguments, each one must be the name of a item given above. -The return value is the information associated with the listed -names. In other words: - - return $key->Information( @names ); - -returns the same list as: - - %info= $key->Information; - return @info{@names}; - -=item Delimiter - -=item $oldDelim= $key->Delimiter - -=item $oldDelim= $key->Delimiter( $newDelim ) - -Gets and possibly changes the delimiter used for this object. The -delimiter is appended to subkey names and prepended to value names -in many return values. It is also used when parsing keys passed -to tied hashes. - -The delimiter defaults to backslash (C<'\\'>) but is inherited from -the object used to create a new object and can be specified by an -option when a new object is created. - -=item Handle - -=item $handle= $key->Handle - -Returns the raw C<HKEY> handle for the associated Registry key as -an integer value. This value can then be used to Reg*() calls -from I<Win32API::Registry>. However, it is usually easier to just -call the I<Win32API::Registry> calls directly via: - - $key->RegNotifyChangeKeyValue( ... ); - -For the virtual root of the local or a remote Registry, -C<Handle()> return C<"NONE">. - -=item Path - -=item $path= $key->Path - -Returns a string describing the path of key names to this -Registry key. The string is built so that if it were passed -to C<$Registry->Open()>, it would reopen the same Registry key -[except in the rare case where one of the key names contains -C<$key->Delimiter>]. - -=item Machine - -=item $computerName= $key->Machine - -Returns the name of the computer [or "machine"] on which this Registry -key resides. Returns C<""> for local Registry keys. - -=item Access - -Returns the numeric value of the bit mask used to specify the -types of access requested when this Registry key was opened. Can -be compared to C<KEY_*> values. - -=item OS_Delimiter - -Returns the delimiter used by the operating system's RegOpenKeyEx() -call. For Win32, this is always backslash (C<"\\">). - -=item Roots - -Returns the mapping from root key names like C<"LMachine"> to their -associated C<HKEY_*> constants. Primarily for internal use and -subject to change. - -=item Tie - -=item $key->Tie( \%hash ); - -Ties the referenced hash to that Registry key. Pretty much the -same as - - tie %hash, ref($key), $key; - -Since C<ref($key)> is the class [package] to tie the hash to and -C<TIEHASH()> just returns its argument, C<$key>, [without calling -C<new()>] when it sees that it is already a blessed object. - -=item TiedRef - -=item $TiedHashRef= $hash_or_obj_ref->TiedRef - -For a simple object, returns a reference to a hash tied to the -object. Used to promote a simple object into a combined object -and hash ref. - -If already a reference to a tied hash [that is also an object], -it just returns itself [C<$ref == $ref->TiedRef>]. - -Mostly used internally. - -=item ArrayValues - -=item $oldBool= $key->ArrayValues - -=item $oldBool= $key->ArrayValues( $newBool ) - -Gets the current setting of the C<ArrayValues> option and possibly -turns it on or off. - -When off, Registry values fetched via a tied hash are returned as -just a value scalar [the same as C<GetValue()> in a scalar context]. -When on, they are returned as a reference to an array containing -the value data as the C<[0]> element and the data type as the C<[1]> -element. - -=item TieValues - -=item $oldBool= TieValues - -=item $oldBool= TieValues( $newBool ) - -Gets the current setting of the C<TieValues> option and possibly -turns it on or off. - -Turning this option on is not yet supported in this release of -I<Win32::TieRegistry>. In a future release, turning this option -on will cause Registry values returned from a tied hash to be -a tied array that you can use to modify the value in the Registry. - -=item FastDelete - -=item $oldBool= $key->FastDelete - -=item $oldBool= $key->FastDelete( $newBool ) - -Gets the current setting of the C<FastDelete> option and possibly -turns it on or off. - -When on, successfully deleting a Registry key [via a tied hash] -simply returns C<1>. - -When off, successfully deleting a Registry key [via a tied hash -and not in a void context] returns a reference to a hash that -contains the values present in the key when it was deleted. This -hash is just like that returned when referencing the key before it -was deleted except that it is an ordinary hash, not one tied to -the I<Win32::TieRegistry> package. - -Note that deleting either a Registry key or value via a tied hash -I<in a void context> prevents any overhead in trying to build an -appropriate return value. - -Note that deleting a Registry I<value> via a tied hash [not in -a void context] returns the value data even if <FastDelete> is on. - -=item SplitMultis - -=item $oldBool= $key->SplitMultis - -=item $oldBool= $key->SplitMultis( $newBool ) - -Gets the current setting of the C<SplitMultis> option and possibly -turns it on or off. - -If on, Registry values of type C<REG_MULTI_SZ> are returned as -a reference to an array of strings. See C<GetValue()> for more -information. - -=item DWordsToHex - -=item $oldBool= $key->DWordsToHex - -=item $oldBool= $key->DWordsToHex( $newBool ) - -Gets the current setting of the C<DWordsToHex> option and possibly -turns it on or off. - -If on, Registry values of type C<REG_DWORD> are returned as a hex -string with leading C<"0x"> and longer than 4 characters. See -C<GetValue()> for more information. - -=item FixSzNulls - -=item $oldBool= $key->FixSzNulls - -=item $oldBool= $key->FixSzNulls( $newBool ) - -Gets the current setting of the C<FixSzNulls> option and possibly -turns it on or off. - -If on, Registry values of type C<REG_SZ> and C<REG_EXPAND_SZ> have -trailing C<'\0'>s added before they are set and stripped before -they are returned. See C<GetValue()> and C<SetValue()> for more -information. - -=item DualTypes - -=item $oldBool= $key->DualTypes - -=item $oldBool= $key->DualTypes( $newBool ) - -Gets the current setting of the C<DualTypes> option and possibly -turns it on or off. - -If on, data types are returned as a combined numeric/string value -holding both the numeric value of a C<REG_*> constant and the -string value of the constant's name. See C<GetValue()> for -more information. - -=item DualBinVals - -=item $oldBool= $key->DualBinVals - -=item $oldBool= $key->DualBinVals( $newBool ) - -Gets the current setting of the C<DualBinVals> option and possibly -turns it on or off. - -If on, Registry value data of type C<REG_BINARY> and no more than -4 bytes long and Registry values of type C<REG_DWORD> are returned -as a combined numeric/string value where the numeric value is the -"unpacked" binary value as returned by: - - hex reverse unpack( "h*", $valData ) - -on a "little-endian" computer. [Would be C<hex unpack("H*",$valData)> -on a "big-endian" computer if this module is ever ported to one.] - -See C<GetValue()> for more information. - -=item GetOptions - -=item @oldOptValues= $key->GetOptions( @optionNames ) - -=item $refHashOfOldOpts= $key->GetOptions() - -=item $key->GetOptions( \%hashForOldOpts ) - -Returns the current setting of any of the following options: - - Delimiter FixSzNulls DWordsToHex - ArrayValues SplitMultis DualBinVals - TieValues FastDelete DualTypes - -Pass in one or more of the above names (as strings) to get back -an array of the corresponding current settings in the same order: - - my( $fastDel, $delim )= $key->GetOptions("FastDelete","Delimiter"); - -Pass in no arguments to get back a reference to a hash where -the above option names are the keys and the values are -the corresponding current settings for each option: - - my $href= $key->GetOptions(); - my $delim= $href->{Delimiter}; - -Pass in a single reference to a hash to have the above key/value -pairs I<added> to the referenced hash. For this case, the -return value is the original object so further methods can be -chained after the call to GetOptions: - - my %oldOpts; - $key->GetOptions( \%oldOpts )->SetOptions( Delimiter => "/" ); - -=item SetOptions - -=item @oldOpts= $key->SetOptions( optNames=>$optValue,... ) - -Changes the current setting of any of the following options, -returning the previous setting(s): - - Delimiter FixSzNulls DWordsToHex AllowLoad - ArrayValues SplitMultis DualBinVals AllowSave - TieValues FastDelete DualTypes - -For C<AllowLoad> and C<AllowSave>, instead of the previous -setting, C<SetOptions> returns whether or not the change was -successful. - -In a scalar context, returns only the last item. The last -option can also be specified as C<"ref"> or C<"r"> [which doesn't -need to be followed by a value] to allow chaining: - - $key->SetOptions(AllowSave=>1,"ref")->RegSaveKey(...) - -=item SetValue - -=item $okay= $key->SetValue( $ValueName, $ValueData ); - -=item $okay= $key->SetValue( $ValueName, $ValueData, $ValueType ); - -Adds or replaces a Registry value. Returns a true value if -successfully, false otherwise. - -C<$ValueName> is the name of the value to add or replace and -should I<not> have a delimiter prepended to it. Case is ignored. - -C<$ValueType> is assumed to be C<REG_SZ> if it is omitted. Otherwise, -it should be one the C<REG_*> constants. - -C<$ValueData> is the data to be stored in the value, probably packed -into a Perl string. Other supported formats for value data are -listed below for each posible C<$ValueType>. - -=over - -=item REG_SZ or REG_EXPAND_SZ - -The only special processing for these values is the addition of -the required trailing C<'\0'> if it is missing. This can be -turned off by disabling the C<FixSzNulls> option. - -=item REG_MULTI_SZ - -These values can also be specified as a reference to a list of -strings. For example, the following two lines are equivalent: - - $key->SetValue( "Val1\000Value2\000LastVal\000\000", "REG_MULTI_SZ" ); - $key->SetValue( ["Val1","Value2","LastVal"], "REG_MULTI_SZ" ); - -Note that if the required two trailing nulls (C<"\000\000">) are -missing, then this release of C<SetValue()> will I<not> add them. - -=item REG_DWORD - -These values can also be specified as a hex value with the leading -C<"0x"> included and totaling I<more than> 4 bytes. These will be -packed into a 4-byte string via: - - $data= pack( "L", hex($data) ); - -=item REG_BINARY - -This value type is listed just to emphasize that no alternate -format is supported for it. In particular, you should I<not> pass -in a numeric value for this type of data. C<SetValue()> cannot -distinguish such from a packed string that just happens to match -a numeric value and so will treat it as a packed string. - -=back - -An alternate calling format: - - $okay= $key->SetValue( $ValueName, [ $ValueData, $ValueType ] ); - -[two arguments, the second of which is a reference to an array -containing the value data and value type] is supported to ease -using tied hashes with C<SetValue()>. - -=item CreateKey - -=item $newKey= $key->CreateKey( $subKey ); - -=item $newKey= $key->CreateKey( $subKey, { Option=>OptVal,... } ); - -Creates a Registry key or just updates attributes of one. Calls -C<RegCreateKeyEx()> then, if it succeeded, creates an object -associated with the [possibly new] subkey. - -C<$subKey> is the name of a subkey [or a path to one] to be -created or updated. It can also be a reference to an array -containing a list of subkey names. - -The second argument, if it exists, should be a reference to a -hash specifying options either to be passed to C<RegCreateKeyEx()> -or to be used when creating the associated object. The following -items are the supported keys for this options hash: - -=over - -=item Delimiter - -Specifies the delimiter to be used to parse C<$subKey> and to be -used in the new object. Defaults to C<$key->Delimiter>. - -=item Access - -Specifies the types of access requested when the subkey is opened. -Should be a numeric bit mask that combines one or more C<KEY_*> -constant values. - -=item Class - -The name to assign as the class of the new or updated subkey. -Defaults to C<""> as we have never seen a use for this information. - -=item Disposition - -Lets you specify a reference to a scalar where, upon success, will be -stored either C<REG_CREATED_NEW_KEY()> or C<REG_OPENED_EXISTING_KEY()> -depending on whether a new key was created or an existing key was -opened. - -If you, for example, did C<use Win32::TieRegistry qw(REG_CREATED_NEW_KEY)> -then you can use C<REG_CREATED_NEW_KEY()> to compare against the numeric -value stored in the referenced scalar. - -If the C<DualTypes> option is enabled, then in addition to the -numeric value described above, the referenced scalar will also -have a string value equal to either C<"REG_CREATED_NEW_KEY"> or -C<"REG_OPENED_EXISTING_KEY">, as appropriate. - -=item Security - -Lets you specify a C<SECURITY_ATTRIBUTES> structure packed into a -Perl string. See C<Win32API::Registry::RegCreateKeyEx()> for more -information. - -=item Volatile - -If true, specifies that the new key should be volatile, that is, -stored only in memory and not backed by a hive file [and not saved -if the computer is rebooted]. This option is ignored under -Windows 95. Specifying C<Volatile=E<GT>1> is the same as -specifying C<Options=E<GT>REG_OPTION_VOLATILE>. - -=item Backup - -If true, specifies that the new key should be opened for -backup/restore access. The C<Access> option is ignored. If the -calling process has enabled C<"SeBackupPrivilege">, then the -subkey is opened with C<KEY_READ> access as the C<"LocalSystem"> -user which should have access to all subkeys. If the calling -process has enabled C<"SeRestorePrivilege">, then the subkey is -opened with C<KEY_WRITE> access as the C<"LocalSystem"> user which -should have access to all subkeys. - -This option is ignored under Windows 95. Specifying C<Backup=E<GT>1> -is the same as specifying C<Options=E<GT>REG_OPTION_BACKUP_RESTORE>. - -=item Options - -Lets you specify options to the C<RegOpenKeyEx()> call. The value -for this option should be a numeric value combining zero or more -of the C<REG_OPTION_*> bit masks. You may with to used the -C<Volatile> and/or C<Backup> options instead of this one. - -=back - -=item StoreKey - -=item $newKey= $key->StoreKey( $subKey, \%Contents ); - -Primarily for internal use. - -Used to create or update a Registry key and any number of subkeys -or values under it or its subkeys. - -C<$subKey> is the name of a subkey to be created [or a path of -subkey names separated by delimiters]. If that subkey already -exists, then it is updated. - -C<\%Contents> is a reference to a hash containing pairs of -value names with value data and/or subkey names with hash -references similar to C<\%Contents>. Each of these cause -a value or subkey of C<$subKey> to be created or updated. - -If C<$Contents{""}> exists and is a reference to a hash, then -it used as the options argument when C<CreateKey()> is called -for C<$subKey>. This allows you to specify ... - - if( defined( $$data{""} ) && "HASH" eq ref($$data{""}) ) { - $self= $this->CreateKey( $subKey, delete $$data{""} ); - -=item Load - -=item $newKey= $key->Load( $file ) - -=item $newKey= $key->Load( $file, $newSubKey ) - -=item $newKey= $key->Load( $file, $newSubKey, { Option=>OptVal... } ) - -=item $newKey= $key->Load( $file, { Option=>OptVal... } ) - -Loads a hive file into a Registry. That is, creates a new subkey -and associates a hive file with it. - -C<$file> is a hive file, that is a file created by calling -C<RegSaveKey()>. The C<$file> path is interpreted relative to -C<%SystemRoot%/System32/config> on the machine where C<$key> -resides. - -C<$newSubKey> is the name to be given to the new subkey. If -C<$newSubKey> is specified, then C<$key> must be -C<HKEY_LOCAL_MACHINE> or C<HKEY_USERS> of the local computer -or a remote computer and C<$newSubKey> should not contain any -occurrences of either the delimiter or the OS delimiter. - -If C<$newSubKey> is not specified, then it is as if C<$key> -was C<$Registry-E<GT>{LMachine}> and C<$newSubKey> is -C<"PerlTie:999"> where C<"999"> is actually a sequence number -incremented each time this process calls C<Load()>. - -You can specify as the last argument a reference to a hash -containing options. You can specify the same options that you -can specify to C<Open()>. See C<Open()> for more information on -those. In addition, you can specify the option C<"NewSubKey">. -The value of this option is interpretted exactly as if it was -specified as the C<$newSubKey> parameter and overrides the -C<$newSubKey> if one was specified. - -The hive is automatically unloaded when the returned object -[C<$newKey>] is destroyed. Registry key objects opened within -the hive will keep a reference to the C<$newKey> object so that -it will not be destroyed before these keys are closed. - -=item UnLoad - -=item $okay= $key->UnLoad - -Unloads a hive that was loaded via C<Load()>. Cannot unload other -hives. C<$key> must be the return from a previous call to C<Load()>. -C<$key> is closed and then the hive is unloaded. - -=item AllowSave - -=item $okay= AllowSave( $bool ) - -Enables or disables the C<"ReBackupPrivilege"> privilege for the -current process. You will probably have to enable this privilege -before you can use C<RegSaveKey()>. - -The return value indicates whether the operation succeeded, not -whether the privilege was previously enabled. - -=item AllowLoad - -=item $okay= AllowLoad( $bool ) - -Enables or disables the C<"ReRestorePrivilege"> privilege for the -current process. You will probably have to enable this privilege -before you can use C<RegLoadKey()>, C<RegUnLoadKey()>, -C<RegReplaceKey()>, or C<RegRestoreKey> and thus C<Load()> and -C<UnLoad()>. - -The return value indicates whether the operation succeeded, not -whether the privilege was previously enabled. - -=back - -=head2 Exports [C<use> and C<import()>] - -To have nothing imported into your package, use something like: - - use Win32::TieRegistry 0.20 (); - -which would verify that you have at least version 0.20 but wouldn't -call C<import()>. The F<Changes> file can be useful in figuring out -which, if any, prior versions of I<Win32::TieRegistry> you want to -support in your script. - -The code - - use Win32::TieRegistry; - -imports the variable C<$Registry> into your package and sets it -to be a reference to a hash tied to a copy of the master Registry -virtual root object with the default options. One disadvantage -to this "default" usage is that Perl does not support checking -the module version when you use it. - -Alternately, you can specify a list of arguments on the C<use> -line that will be passed to the C<Win32::TieRegistry->import()> -method to control what items to import into your package. These -arguments fall into the following broad categories: - -=over - -=item Import a reference to a hash tied to a Registry virtual root - -You can request that a scalar variable be imported (possibly) -and set to be a reference to a hash tied to a Registry virtual root -using any of the following types of arguments or argument pairs: - -=over - -=item "TiedRef", '$scalar' - -=item "TiedRef", '$pack::scalar' - -=item "TiedRef", 'scalar' - -=item "TiedRef", 'pack::scalar' - -All of the above import a scalar named C<$scalar> into your package -(or the package named "pack") and then sets it. - -=item '$scalar' - -=item '$pack::scalar' - -These are equivalent to the previous items to support a more -traditional appearance to the list of exports. Note that the -scalar name cannot be "RegObj" here. - -=item "TiedRef", \$scalar - -=item \$scalar - -These versions don't import anything but set the referenced C<$scalar>. - -=back - -=item Import a hash tied to the Registry virtual root - -You can request that a hash variable be imported (possibly) -and tied to a Registry virtual root using any of the following -types of arguments or argument pairs: - -=over - -=item "TiedHash", '%hash' - -=item "TiedHash", '%pack::hash' - -=item "TiedHash", 'hash' - -=item "TiedHash", 'pack::hash' - -All of the above import a hash named C<%hash> into your package -(or the package named "pack") and then sets it. - -=item '%hash' - -=item '%pack::hash' - -These are equivalent to the previous items to support a more -traditional appearance to the list of exports. - -=item "TiedHash", \%hash - -=item \%hash - -These versions don't import anything but set the referenced C<%hash>. - -=back - -=item Import a Registry virtual root object - -You can request that a scalar variable be imported (possibly) -and set to be a Registry virtual root object using any of the -following types of arguments or argument pairs: - -=over - -=item "ObjectRef", '$scalar' - -=item "ObjectRef", '$pack::scalar' - -=item "ObjectRef", 'scalar' - -=item "ObjectRef", 'pack::scalar' - -All of the above import a scalar named C<$scalar> into your package -(or the package named "pack") and then sets it. - -=item '$RegObj' - -This is equivalent to the previous items for backward compatibility. - -=item "ObjectRef", \$scalar - -This version doesn't import anything but sets the referenced C<$scalar>. - -=back - -=item Import constant(s) exported by I<Win32API::Registry> - -You can list any constants that are exported by I<Win32API::Registry> -to have them imported into your package. These constants have names -starting with "KEY_" or "REG_" (or even "HKEY_"). - -You can also specify C<":KEY_">, C<":REG_">, and even C<":HKEY_"> to -import a whole set of constants. - -See I<Win32API::Registry> documentation for more information. - -=item Options - -You can list any option names that can be listed in the C<SetOptions()> -method call, each folowed by the value to use for that option. -A Registry virtual root object is created, all of these options are -set for it, then each variable to be imported/set is associated with -this object. - -In addition, the following special options are supported: - -=over - -=item ExportLevel - -Whether to import variables into your package or some -package that uses your package. Defaults to the value of -C<$Exporter::ExportLevel> and has the same meaning. See -the L<Exporter> module for more information. - -=item ExportTo - -The name of the package to import variables and constants into. -Overrides I<ExportLevel>. - -=back - -=back - -=head3 Specifying constants in your Perl code - -This module was written with a strong emphasis on the convenience of -the module user. Therefore, most places where you can specify a -constant like C<REG_SZ()> also allow you to specify a string -containing the name of the constant, C<"REG_SZ">. This is convenient -because you may not have imported that symbolic constant. - -Perl also emphasizes programmer convenience so the code C<REG_SZ> -can be used to mean C<REG_SZ()> or C<"REG_SZ"> or be illegal. -Note that using C<®_SZ> (as we've seen in much Win32 Perl code) -is not a good idea since it passes the current C<@_> to the -C<constant()> routine of the module which, at the least, can give -you a warning under B<-w>. - -Although greatly a matter of style, the "safest" practice is probably -to specifically list all constants in the C<use Win32::TieRegistry> -statement, specify C<use strict> [or at least C<use strict qw(subs)>], -and use bare constant names when you want the numeric value. This will -detect mispelled constant names at compile time. - - use strict; - my $Registry; - use Win32::TieRegistry 0.20 ( - TiedRef => \$Registry, Delimiter => "/", ArrayValues => 1, - SplitMultis => 1, AllowLoad => 1, - qw( REG_SZ REG_EXPAND_SZ REG_DWORD REG_BINARY REG_MULTI_SZ - KEY_READ KEY_WRITE KEY_ALL_ACCESS ), - ); - $Registry->{"LMachine/Software/FooCorp/"}= { - "FooWriter/" => { - "/Fonts" => [ ["Times","Courier","Lucinda"], REG_MULTI_SZ ], - "/WindowSize" => [ pack("LL",24,80), REG_BINARY ], - "/TaskBarIcon" => [ "0x0001", REG_DWORD ], - }, - } or die "Can't create Software/FooCorp/: $^E\n"; - -If you don't want to C<use strict qw(subs)>, the second safest practice -is similar to the above but use the C<REG_SZ()> form for constants -when possible and quoted constant names when required. Note that -C<qw()> is a form of quoting. - - use Win32::TieRegistry 0.20 qw( - TiedRef $Registry - Delimiter / ArrayValues 1 SplitMultis 1 AllowLoad 1 - REG_SZ REG_EXPAND_SZ REG_DWORD REG_BINARY REG_MULTI_SZ - KEY_READ KEY_WRITE KEY_ALL_ACCESS - ); - $Registry->{"LMachine/Software/FooCorp/"}= { - "FooWriter/" => { - "/Fonts" => [ ["Times","Courier","Lucinda"], REG_MULTI_SZ() ], - "/WindowSize" => [ pack("LL",24,80), REG_BINARY() ], - "/TaskBarIcon" => [ "0x0001", REG_DWORD() ], - }, - } or die "Can't create Software/FooCorp/: $^E\n"; - -The examples in this document mostly use quoted constant names -(C<"REG_SZ">) since that works regardless of which constants -you imported and whether or not you have C<use strict> in your -script. It is not the best choice for you to use for real -scripts (vs. examples) because it is less efficient and is not -supported by most other similar modules. - -=head1 SUMMARY - -Most things can be done most easily via tied hashes. Skip down to the -the L<Tied Hashes Summary> to get started quickly. - -=head2 Objects Summary - -Here are quick examples that document the most common functionality -of all of the method functions [except for a few almost useless ones]. - - # Just another way of saying Open(): - $key= new Win32::TieRegistry "LMachine\\Software\\", - { Access=>KEY_READ()|KEY_WRITE(), Delimiter=>"\\" }; - - # Open a Registry key: - $subKey= $key->Open( "SubKey/SubSubKey/", - { Access=>KEY_ALL_ACCESS, Delimiter=>"/" } ); - - # Connect to a remote Registry key: - $remKey= $Registry->Connect( "MachineName", "LMachine/", - { Access=>KEY_READ, Delimiter=>"/" } ); - - # Get value data: - $valueString= $key->GetValue("ValueName"); - ( $valueString, $valueType )= $key->GetValue("ValueName"); - - # Get list of value names: - @valueNames= $key->ValueNames; - - # Get list of subkey names: - @subKeyNames= $key->SubKeyNames; - - # Get combined list of value names (with leading delimiters) - # and subkey names (with trailing delimiters): - @memberNames= $key->MemberNames; - - # Get all information about a key: - %keyInfo= $key->Information; - # keys(%keyInfo)= qw( Class LastWrite SecurityLen - # CntSubKeys MaxSubKeyLen MaxSubClassLen - # CntValues MaxValNameLen MaxValDataLen ); - - # Get selected information about a key: - ( $class, $cntSubKeys )= $key->Information( "Class", "CntSubKeys" ); - - # Get and/or set delimiter: - $delim= $key->Delimiter; - $oldDelim= $key->Delimiter( $newDelim ); - - # Get "path" for an open key: - $path= $key->Path; - # For example, "/CUser/Control Panel/Mouse/" - # or "//HostName/LMachine/System/DISK/". - - # Get name of machine where key is from: - $mach= $key->Machine; - # Will usually be "" indicating key is on local machine. - - # Control different options (see main documentation for descriptions): - $oldBool= $key->ArrayValues( $newBool ); - $oldBool= $key->FastDelete( $newBool ); - $oldBool= $key->FixSzNulls( $newBool ); - $oldBool= $key->SplitMultis( $newBool ); - $oldBool= $key->DWordsToHex( $newBool ); - $oldBool= $key->DualBinVals( $newBool ); - $oldBool= $key->DualTypes( $newBool ); - @oldBools= $key->SetOptions( ArrayValues=>1, FastDelete=>1, FixSzNulls=>0, - Delimiter=>"/", AllowLoad=>1, AllowSave=>1 ); - @oldBools= $key->GetOptions( ArrayValues, FastDelete, FixSzNulls ); - - # Add or set a value: - $key->SetValue( "ValueName", $valueDataString ); - $key->SetValue( "ValueName", pack($format,$valueData), "REG_BINARY" ); - - # Add or set a key: - $key->CreateKey( "SubKeyName" ); - $key->CreateKey( "SubKeyName", - { Access=>"KEY_ALL_ACCESS", Class=>"ClassName", - Delimiter=>"/", Volatile=>1, Backup=>1 } ); - - # Load an off-line Registry hive file into the on-line Registry: - $newKey= $Registry->Load( "C:/Path/To/Hive/FileName" ); - $newKey= $key->Load( "C:/Path/To/Hive/FileName", "NewSubKeyName", - { Access=>"KEY_READ" } ); - # Unload a Registry hive file loaded via the Load() method: - $newKey->UnLoad; - - # (Dis)Allow yourself to load Registry hive files: - $success= $Registry->AllowLoad( $bool ); - - # (Dis)Allow yourself to save a Registry key to a hive file: - $success= $Registry->AllowSave( $bool ); - - # Save a Registry key to a new hive file: - $key->RegSaveKey( "C:/Path/To/Hive/FileName", [] ); - -=head3 Other Useful Methods - -See I<Win32API::Registry> for more information on these methods. -These methods are provided for coding convenience and are -identical to the I<Win32API::Registry> functions except that these -don't take a handle to a Registry key, instead getting the handle -from the invoking object [C<$key>]. - - $key->RegGetKeySecurity( $iSecInfo, $sSecDesc, $lenSecDesc ); - $key->RegLoadKey( $sSubKeyName, $sPathToFile ); - $key->RegNotifyChangeKeyValue( - $bWatchSubtree, $iNotifyFilter, $hEvent, $bAsync ); - $key->RegQueryMultipleValues( - $structValueEnts, $cntValueEnts, $Buffer, $lenBuffer ); - $key->RegReplaceKey( $sSubKeyName, $sPathToNewFile, $sPathToBackupFile ); - $key->RegRestoreKey( $sPathToFile, $iFlags ); - $key->RegSetKeySecurity( $iSecInfo, $sSecDesc ); - $key->RegUnLoadKey( $sSubKeyName ); - -=head2 Tied Hashes Summary - -For fast learners, this may be the only section you need to read. -Always append one delimiter to the end of each Registry key name -and prepend one delimiter to the front of each Registry value name. - -=head3 Opening keys - - use Win32::TieRegistry ( Delimiter=>"/", ArrayValues=>1 ); - $Registry->Delimiter("/"); # Set delimiter to "/". - $swKey= $Registry->{"LMachine/Software/"}; - $winKey= $swKey->{"Microsoft/Windows/CurrentVersion/"}; - $userKey= $Registry-> - {"CUser/Software/Microsoft/Windows/CurrentVersion/"}; - $remoteKey= $Registry->{"//HostName/LMachine/"}; - -=head3 Reading values - - $progDir= $winKey->{"/ProgramFilesDir"}; # "C:\\Program Files" - $tip21= $winKey->{"Explorer/Tips//21"}; # Text of tip #21. - - $winKey->ArrayValues(1); - ( $devPath, $type )= $winKey->{"/DevicePath"}; - # $devPath eq "%SystemRoot%\\inf" - # $type eq "REG_EXPAND_SZ" [if you have SetDualVar.pm installed] - # $type == REG_EXPAND_SZ() [if did C<use Win32::TieRegistry qw(:REG_)>] - -=head3 Setting values - - $winKey->{"Setup//SourcePath"}= "\\\\SwServer\\SwShare\\Windows"; - # Simple. Assumes data type of REG_SZ. - - $winKey->{"Setup//Installation Sources"}= - [ "D:\x00\\\\SwServer\\SwShare\\Windows\0\0", "REG_MULTI_SZ" ]; - # "\x00" and "\0" used to mark ends of each string and end of list. - - $winKey->{"Setup//Installation Sources"}= - [ ["D:","\\\\SwServer\\SwShare\\Windows"], "REG_MULTI_SZ" ]; - # Alternate method that is easier to read. - - $userKey->{"Explorer/Tips//DisplayInitialTipWindow"}= - [ pack("L",0), "REG_DWORD" ]; - $userKey->{"Explorer/Tips//Next"}= [ pack("S",3), "REG_BINARY" ]; - $userKey->{"Explorer/Tips//Show"}= [ pack("L",0), "REG_BINARY" ]; - -=head3 Adding keys - - $swKey->{"FooCorp/"}= { - "FooWriter/" => { - "/Version" => "4.032", - "Startup/" => { - "/Title" => "Foo Writer Deluxe ][", - "/WindowSize" => [ pack("LL",$wid,$ht), "REG_BINARY" ], - "/TaskBarIcon" => [ "0x0001", "REG_DWORD" ], - }, - "Compatibility/" => { - "/AutoConvert" => "Always", - "/Default Palette" => "Windows Colors", - }, - }, - "/License", => "0123-9C8EF1-09-FC", - }; - -=head3 Listing all subkeys and values - - @members= keys( %{$swKey} ); - @subKeys= grep( m#^/#, keys( %{$swKey->{"Classes/batfile/"}} ) ); - # @subKeys= ( "/", "/EditFlags" ); - @valueNames= grep( ! m#^/#, keys( %{$swKey->{"Classes/batfile/"}} ) ); - # @valueNames= ( "DefaultIcon/", "shell/", "shellex/" ); - -=head3 Deleting values or keys with no subkeys - - $oldValue= delete $userKey->{"Explorer/Tips//Next"}; - - $oldValues= delete $userKey->{"Explorer/Tips/"}; - # $oldValues will be reference to hash containing deleted keys values. - -=head3 Closing keys - - undef $swKey; # Explicit way to close a key. - $winKey= "Anything else"; # Implicitly closes a key. - exit 0; # Implicitly closes all keys. - -=head2 Tie::Registry - -This module was originally called I<Tie::Registry>. Changing code -that used I<Tie::Registry> over to I<Win32::TieRegistry> is trivial -as the module name should only be mentioned once, in the C<use> -line. However, finding all of the places that used I<Tie::Registry> -may not be completely trivial so we have included F<Tie/Registry.pm> -which you can install to provide backward compatibility. - -=head1 AUTHOR - -Tye McQueen. See http://www.metronet.com/~tye/ or e-mail -tye@metronet.com with bug reports. - -=head1 SEE ALSO - -I<Win32API::Registry> - Provides access to C<Reg*()>, C<HKEY_*>, -C<KEY_*>, C<REG_*> [required]. - -I<Win32::WinError> - Defines C<ERROR_*> values [optional]. - -L<SetDualVar> - For returning C<REG_*> values as combined -string/integer values [optional]. - -=head1 BUGS - -Perl5.004_02 has bugs that make I<Win32::TieRegistry> fail in -strange and subtle ways. - -Using I<Win32::TieRegistry> with versions of Perl prior to 5.005 -can be tricky or impossible. Most notes about this have been -removed from the documentation (they get rather complicated -and confusing). This includes references to C<$^E> perhaps not -being meaningful. - -Because Perl hashes are case sensitive, certain lookups are also -case sensistive. In particular, the root keys ("Classes", "CUser", -"LMachine", "Users", "PerfData", "CConfig", "DynData", and HKEY_*) -must always be entered without changing between upper and lower -case letters. Also, the special rule for matching subkey names -that contain the user-selected delimiter only works if case is -matched. All other key name and value name lookups should be case -insensitive because the underlying Reg*() calls ignore case. - -Information about each key is cached when using a tied hash. -This cache is not flushed nor updated when changes are made, -I<even when the same tied hash is used> to make the changes. - -Current implementations of Perl's "global destruction" phase can -cause objects returned by C<Load()> to be destroyed while keys -within the hive are still open, if the objects still exist when -the script starts to exit. When this happens, the automatic -C<UnLoad()> will report a failure and the hive will remain loaded -in the Registry. - -Trying to C<Load()> a hive file that is located on a remote network -share may silently delete all data from the hive. This is a bug -in the Win32 APIs, not any Perl code or modules. This module does -not try to protect you from this bug. - -There is no test suite. - -=head1 FUTURE DIRECTIONS - -The following items are desired by the author and may appear in a -future release of this module. - -=over - -=item TieValues option - -Currently described in main documentation but no yet implemented. - -=item AutoRefresh option - -Trigger use of C<RegNotifyChangeKeyValue()> to keep tied hash -caches up-to-date even when other programs make changes. - -=item Error options - -Allow the user to have unchecked calls (calls in a "void context") -to automatically report errors via C<warn> or C<die>. - -For complex operations, such a copying an entire subtree, provide -access to detailed information about errors (and perhaps some -warnings) that were encountered. Let the user control whether -the complex operation continues in spite of errors. - -=back - -=cut - -# Autoload not currently supported by Perl under Windows. diff --git a/Master/tlpkg/tlperl.old/lib/Win32/WinError.pm b/Master/tlpkg/tlperl.old/lib/Win32/WinError.pm deleted file mode 100644 index 46028a79321..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/WinError.pm +++ /dev/null @@ -1,1017 +0,0 @@ -package Win32::WinError; - -require Exporter; -require DynaLoader; - -$VERSION = '0.02'; - -@ISA = 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( - GetLastError - CACHE_E_FIRST - CACHE_E_LAST - CACHE_E_NOCACHE_UPDATED - CACHE_S_FIRST - CACHE_S_FORMATETC_NOTSUPPORTED - CACHE_S_LAST - CACHE_S_SAMECACHE - CACHE_S_SOMECACHES_NOTUPDATED - CLASSFACTORY_E_FIRST - CLASSFACTORY_E_LAST - CLASSFACTORY_S_FIRST - CLASSFACTORY_S_LAST - CLASS_E_CLASSNOTAVAILABLE - CLASS_E_NOAGGREGATION - CLIENTSITE_E_FIRST - CLIENTSITE_E_LAST - CLIENTSITE_S_FIRST - CLIENTSITE_S_LAST - CLIPBRD_E_BAD_DATA - CLIPBRD_E_CANT_CLOSE - CLIPBRD_E_CANT_EMPTY - CLIPBRD_E_CANT_OPEN - CLIPBRD_E_CANT_SET - CLIPBRD_E_FIRST - CLIPBRD_E_LAST - CLIPBRD_S_FIRST - CLIPBRD_S_LAST - CONVERT10_E_FIRST - CONVERT10_E_LAST - CONVERT10_E_OLESTREAM_BITMAP_TO_DIB - CONVERT10_E_OLESTREAM_FMT - CONVERT10_E_OLESTREAM_GET - CONVERT10_E_OLESTREAM_PUT - CONVERT10_E_STG_DIB_TO_BITMAP - CONVERT10_E_STG_FMT - CONVERT10_E_STG_NO_STD_STREAM - CONVERT10_S_FIRST - CONVERT10_S_LAST - CONVERT10_S_NO_PRESENTATION - CO_E_ALREADYINITIALIZED - CO_E_APPDIDNTREG - CO_E_APPNOTFOUND - CO_E_APPSINGLEUSE - CO_E_BAD_PATH - CO_E_CANTDETERMINECLASS - CO_E_CLASSSTRING - CO_E_CLASS_CREATE_FAILED - CO_E_DLLNOTFOUND - CO_E_ERRORINAPP - CO_E_ERRORINDLL - CO_E_FIRST - CO_E_IIDSTRING - CO_E_INIT_CLASS_CACHE - CO_E_INIT_MEMORY_ALLOCATOR - CO_E_INIT_ONLY_SINGLE_THREADED - CO_E_INIT_RPC_CHANNEL - CO_E_INIT_SCM_EXEC_FAILURE - CO_E_INIT_SCM_FILE_MAPPING_EXISTS - CO_E_INIT_SCM_MAP_VIEW_OF_FILE - CO_E_INIT_SCM_MUTEX_EXISTS - CO_E_INIT_SHARED_ALLOCATOR - CO_E_INIT_TLS - CO_E_INIT_TLS_CHANNEL_CONTROL - CO_E_INIT_TLS_SET_CHANNEL_CONTROL - CO_E_INIT_UNACCEPTED_USER_ALLOCATOR - CO_E_LAST - CO_E_NOTINITIALIZED - CO_E_OBJISREG - CO_E_OBJNOTCONNECTED - CO_E_OBJNOTREG - CO_E_OBJSRV_RPC_FAILURE - CO_E_RELEASED - CO_E_SCM_ERROR - CO_E_SCM_RPC_FAILURE - CO_E_SERVER_EXEC_FAILURE - CO_E_SERVER_STOPPING - CO_E_WRONGOSFORAPP - CO_S_FIRST - CO_S_LAST - DATA_E_FIRST - DATA_E_LAST - DATA_S_FIRST - DATA_S_LAST - DATA_S_SAMEFORMATETC - DISP_E_ARRAYISLOCKED - DISP_E_BADCALLEE - DISP_E_BADINDEX - DISP_E_BADPARAMCOUNT - DISP_E_BADVARTYPE - DISP_E_EXCEPTION - DISP_E_MEMBERNOTFOUND - DISP_E_NONAMEDARGS - DISP_E_NOTACOLLECTION - DISP_E_OVERFLOW - DISP_E_PARAMNOTFOUND - DISP_E_PARAMNOTOPTIONAL - DISP_E_TYPEMISMATCH - DISP_E_UNKNOWNINTERFACE - DISP_E_UNKNOWNLCID - DISP_E_UNKNOWNNAME - DRAGDROP_E_ALREADYREGISTERED - DRAGDROP_E_FIRST - DRAGDROP_E_INVALIDHWND - DRAGDROP_E_LAST - DRAGDROP_E_NOTREGISTERED - DRAGDROP_S_CANCEL - DRAGDROP_S_DROP - DRAGDROP_S_FIRST - DRAGDROP_S_LAST - DRAGDROP_S_USEDEFAULTCURSORS - DV_E_CLIPFORMAT - DV_E_DVASPECT - DV_E_DVTARGETDEVICE - DV_E_DVTARGETDEVICE_SIZE - DV_E_FORMATETC - DV_E_LINDEX - DV_E_NOIVIEWOBJECT - DV_E_STATDATA - DV_E_STGMEDIUM - DV_E_TYMED - ENUM_E_FIRST - ENUM_E_LAST - ENUM_S_FIRST - ENUM_S_LAST - EPT_S_CANT_CREATE - EPT_S_CANT_PERFORM_OP - EPT_S_INVALID_ENTRY - EPT_S_NOT_REGISTERED - ERROR_ACCESS_DENIED - ERROR_ACCOUNT_DISABLED - ERROR_ACCOUNT_EXPIRED - ERROR_ACCOUNT_LOCKED_OUT - ERROR_ACCOUNT_RESTRICTION - ERROR_ACTIVE_CONNECTIONS - ERROR_ADAP_HDW_ERR - ERROR_ADDRESS_ALREADY_ASSOCIATED - ERROR_ADDRESS_NOT_ASSOCIATED - ERROR_ALIAS_EXISTS - ERROR_ALLOTTED_SPACE_EXCEEDED - ERROR_ALREADY_ASSIGNED - ERROR_ALREADY_EXISTS - ERROR_ALREADY_REGISTERED - ERROR_ALREADY_RUNNING_LKG - ERROR_ALREADY_WAITING - ERROR_ARENA_TRASHED - ERROR_ARITHMETIC_OVERFLOW - ERROR_ATOMIC_LOCKS_NOT_SUPPORTED - ERROR_AUTODATASEG_EXCEEDS_64k - ERROR_BADDB - ERROR_BADKEY - ERROR_BAD_ARGUMENTS - ERROR_BAD_COMMAND - ERROR_BAD_DESCRIPTOR_FORMAT - ERROR_BAD_DEVICE - ERROR_BAD_DEV_TYPE - ERROR_BAD_DRIVER - ERROR_BAD_DRIVER_LEVEL - ERROR_BAD_ENVIRONMENT - ERROR_BAD_EXE_FORMAT - ERROR_BAD_FORMAT - ERROR_BAD_IMPERSONATION_LEVEL - ERROR_BAD_INHERITANCE_ACL - ERROR_BAD_LENGTH - ERROR_BAD_LOGON_SESSION_STATE - ERROR_BAD_NETPATH - ERROR_BAD_NET_NAME - ERROR_BAD_NET_RESP - ERROR_BAD_PATHNAME - ERROR_BAD_PIPE - ERROR_BAD_PROFILE - ERROR_BAD_PROVIDER - ERROR_BAD_REM_ADAP - ERROR_BAD_THREADID_ADDR - ERROR_BAD_TOKEN_TYPE - ERROR_BAD_UNIT - ERROR_BAD_USERNAME - ERROR_BAD_VALIDATION_CLASS - ERROR_BEGINNING_OF_MEDIA - ERROR_BOOT_ALREADY_ACCEPTED - ERROR_BROKEN_PIPE - ERROR_BUFFER_OVERFLOW - ERROR_BUSY - ERROR_BUSY_DRIVE - ERROR_BUS_RESET - ERROR_CALL_NOT_IMPLEMENTED - ERROR_CANCELLED - ERROR_CANCEL_VIOLATION - ERROR_CANNOT_COPY - ERROR_CANNOT_FIND_WND_CLASS - ERROR_CANNOT_IMPERSONATE - ERROR_CANNOT_MAKE - ERROR_CANNOT_OPEN_PROFILE - ERROR_CANTOPEN - ERROR_CANTREAD - ERROR_CANTWRITE - ERROR_CANT_ACCESS_DOMAIN_INFO - ERROR_CANT_DISABLE_MANDATORY - ERROR_CANT_OPEN_ANONYMOUS - ERROR_CAN_NOT_COMPLETE - ERROR_CAN_NOT_DEL_LOCAL_WINS - ERROR_CHILD_MUST_BE_VOLATILE - ERROR_CHILD_NOT_COMPLETE - ERROR_CHILD_WINDOW_MENU - ERROR_CIRCULAR_DEPENDENCY - ERROR_CLASS_ALREADY_EXISTS - ERROR_CLASS_DOES_NOT_EXIST - ERROR_CLASS_HAS_WINDOWS - ERROR_CLIPBOARD_NOT_OPEN - ERROR_CLIPPING_NOT_SUPPORTED - ERROR_CONNECTION_ABORTED - ERROR_CONNECTION_ACTIVE - ERROR_CONNECTION_COUNT_LIMIT - ERROR_CONNECTION_INVALID - ERROR_CONNECTION_REFUSED - ERROR_CONNECTION_UNAVAIL - ERROR_CONTROL_ID_NOT_FOUND - ERROR_COUNTER_TIMEOUT - ERROR_CRC - ERROR_CURRENT_DIRECTORY - ERROR_DATABASE_DOES_NOT_EXIST - ERROR_DC_NOT_FOUND - ERROR_DEPENDENT_SERVICES_RUNNING - ERROR_DESTROY_OBJECT_OF_OTHER_THREAD - ERROR_DEVICE_ALREADY_REMEMBERED - ERROR_DEVICE_IN_USE - ERROR_DEVICE_NOT_PARTITIONED - ERROR_DEV_NOT_EXIST - ERROR_DIRECTORY - ERROR_DIRECT_ACCESS_HANDLE - ERROR_DIR_NOT_EMPTY - ERROR_DIR_NOT_ROOT - ERROR_DISCARDED - ERROR_DISK_CHANGE - ERROR_DISK_CORRUPT - ERROR_DISK_FULL - ERROR_DISK_OPERATION_FAILED - ERROR_DISK_RECALIBRATE_FAILED - ERROR_DISK_RESET_FAILED - ERROR_DLL_INIT_FAILED - ERROR_DOMAIN_CONTROLLER_NOT_FOUND - ERROR_DOMAIN_EXISTS - ERROR_DOMAIN_LIMIT_EXCEEDED - ERROR_DOMAIN_TRUST_INCONSISTENT - ERROR_DRIVE_LOCKED - ERROR_DUPLICATE_SERVICE_NAME - ERROR_DUP_DOMAINNAME - ERROR_DUP_NAME - ERROR_DYNLINK_FROM_INVALID_RING - ERROR_EAS_DIDNT_FIT - ERROR_EAS_NOT_SUPPORTED - ERROR_EA_ACCESS_DENIED - ERROR_EA_FILE_CORRUPT - ERROR_EA_LIST_INCONSISTENT - ERROR_EA_TABLE_FULL - ERROR_END_OF_MEDIA - ERROR_ENVVAR_NOT_FOUND - ERROR_EOM_OVERFLOW - ERROR_EVENTLOG_CANT_START - ERROR_EVENTLOG_FILE_CHANGED - ERROR_EVENTLOG_FILE_CORRUPT - ERROR_EXCEPTION_IN_SERVICE - ERROR_EXCL_SEM_ALREADY_OWNED - ERROR_EXE_MARKED_INVALID - ERROR_EXTENDED_ERROR - ERROR_FAILED_SERVICE_CONTROLLER_CONNECT - ERROR_FAIL_I24 - ERROR_FILEMARK_DETECTED - ERROR_FILENAME_EXCED_RANGE - ERROR_FILE_CORRUPT - ERROR_FILE_EXISTS - ERROR_FILE_INVALID - ERROR_FILE_NOT_FOUND - ERROR_FLOPPY_BAD_REGISTERS - ERROR_FLOPPY_ID_MARK_NOT_FOUND - ERROR_FLOPPY_UNKNOWN_ERROR - ERROR_FLOPPY_WRONG_CYLINDER - ERROR_FULLSCREEN_MODE - ERROR_FULL_BACKUP - ERROR_GENERIC_NOT_MAPPED - ERROR_GEN_FAILURE - ERROR_GLOBAL_ONLY_HOOK - ERROR_GRACEFUL_DISCONNECT - ERROR_GROUP_EXISTS - ERROR_HANDLE_DISK_FULL - ERROR_HANDLE_EOF - ERROR_HOOK_NEEDS_HMOD - ERROR_HOOK_NOT_INSTALLED - ERROR_HOST_UNREACHABLE - ERROR_HOTKEY_ALREADY_REGISTERED - ERROR_HOTKEY_NOT_REGISTERED - ERROR_HWNDS_HAVE_DIFF_PARENT - ERROR_ILL_FORMED_PASSWORD - ERROR_INCORRECT_ADDRESS - ERROR_INC_BACKUP - ERROR_INFLOOP_IN_RELOC_CHAIN - ERROR_INSUFFICIENT_BUFFER - ERROR_INTERNAL_DB_CORRUPTION - ERROR_INTERNAL_DB_ERROR - ERROR_INTERNAL_ERROR - ERROR_INVALID_ACCEL_HANDLE - ERROR_INVALID_ACCESS - ERROR_INVALID_ACCOUNT_NAME - ERROR_INVALID_ACL - ERROR_INVALID_ADDRESS - ERROR_INVALID_AT_INTERRUPT_TIME - ERROR_INVALID_BLOCK - ERROR_INVALID_BLOCK_LENGTH - ERROR_INVALID_CATEGORY - ERROR_INVALID_COMBOBOX_MESSAGE - ERROR_INVALID_COMPUTERNAME - ERROR_INVALID_CURSOR_HANDLE - ERROR_INVALID_DATA - ERROR_INVALID_DATATYPE - ERROR_INVALID_DOMAINNAME - ERROR_INVALID_DOMAIN_ROLE - ERROR_INVALID_DOMAIN_STATE - ERROR_INVALID_DRIVE - ERROR_INVALID_DWP_HANDLE - ERROR_INVALID_EA_HANDLE - ERROR_INVALID_EA_NAME - ERROR_INVALID_EDIT_HEIGHT - ERROR_INVALID_ENVIRONMENT - ERROR_INVALID_EVENTNAME - ERROR_INVALID_EVENT_COUNT - ERROR_INVALID_EXE_SIGNATURE - ERROR_INVALID_FILTER_PROC - ERROR_INVALID_FLAGS - ERROR_INVALID_FLAG_NUMBER - ERROR_INVALID_FORM_NAME - ERROR_INVALID_FORM_SIZE - ERROR_INVALID_FUNCTION - ERROR_INVALID_GROUPNAME - ERROR_INVALID_GROUP_ATTRIBUTES - ERROR_INVALID_GW_COMMAND - ERROR_INVALID_HANDLE - ERROR_INVALID_HOOK_FILTER - ERROR_INVALID_HOOK_HANDLE - ERROR_INVALID_ICON_HANDLE - ERROR_INVALID_ID_AUTHORITY - ERROR_INVALID_INDEX - ERROR_INVALID_LB_MESSAGE - ERROR_INVALID_LEVEL - ERROR_INVALID_LIST_FORMAT - ERROR_INVALID_LOGON_HOURS - ERROR_INVALID_LOGON_TYPE - ERROR_INVALID_MEMBER - ERROR_INVALID_MENU_HANDLE - ERROR_INVALID_MESSAGE - ERROR_INVALID_MESSAGEDEST - ERROR_INVALID_MESSAGENAME - ERROR_INVALID_MINALLOCSIZE - ERROR_INVALID_MODULETYPE - ERROR_INVALID_MSGBOX_STYLE - ERROR_INVALID_NAME - ERROR_INVALID_NETNAME - ERROR_INVALID_ORDINAL - ERROR_INVALID_OWNER - ERROR_INVALID_PARAMETER - ERROR_INVALID_PASSWORD - ERROR_INVALID_PASSWORDNAME - ERROR_INVALID_PIXEL_FORMAT - ERROR_INVALID_PRIMARY_GROUP - ERROR_INVALID_PRINTER_COMMAND - ERROR_INVALID_PRINTER_NAME - ERROR_INVALID_PRINTER_STATE - ERROR_INVALID_PRIORITY - ERROR_INVALID_SCROLLBAR_RANGE - ERROR_INVALID_SECURITY_DESCR - ERROR_INVALID_SEGDPL - ERROR_INVALID_SEGMENT_NUMBER - ERROR_INVALID_SEPARATOR_FILE - ERROR_INVALID_SERVER_STATE - ERROR_INVALID_SERVICENAME - ERROR_INVALID_SERVICE_ACCOUNT - ERROR_INVALID_SERVICE_CONTROL - ERROR_INVALID_SERVICE_LOCK - ERROR_INVALID_SHARENAME - ERROR_INVALID_SHOWWIN_COMMAND - ERROR_INVALID_SID - ERROR_INVALID_SIGNAL_NUMBER - ERROR_INVALID_SPI_VALUE - ERROR_INVALID_STACKSEG - ERROR_INVALID_STARTING_CODESEG - ERROR_INVALID_SUB_AUTHORITY - ERROR_INVALID_TARGET_HANDLE - ERROR_INVALID_THREAD_ID - ERROR_INVALID_TIME - ERROR_INVALID_USER_BUFFER - ERROR_INVALID_VERIFY_SWITCH - ERROR_INVALID_WINDOW_HANDLE - ERROR_INVALID_WINDOW_STYLE - ERROR_INVALID_WORKSTATION - ERROR_IOPL_NOT_ENABLED - ERROR_IO_DEVICE - ERROR_IO_INCOMPLETE - ERROR_IO_PENDING - ERROR_IRQ_BUSY - ERROR_IS_JOINED - ERROR_IS_JOIN_PATH - ERROR_IS_JOIN_TARGET - ERROR_IS_SUBSTED - ERROR_IS_SUBST_PATH - ERROR_IS_SUBST_TARGET - ERROR_ITERATED_DATA_EXCEEDS_64k - ERROR_JOIN_TO_JOIN - ERROR_JOIN_TO_SUBST - ERROR_JOURNAL_HOOK_SET - ERROR_KEY_DELETED - ERROR_KEY_HAS_CHILDREN - ERROR_LABEL_TOO_LONG - ERROR_LAST_ADMIN - ERROR_LB_WITHOUT_TABSTOPS - ERROR_LISTBOX_ID_NOT_FOUND - ERROR_LM_CROSS_ENCRYPTION_REQUIRED - ERROR_LOCAL_USER_SESSION_KEY - ERROR_LOCKED - ERROR_LOCK_FAILED - ERROR_LOCK_VIOLATION - ERROR_LOGIN_TIME_RESTRICTION - ERROR_LOGIN_WKSTA_RESTRICTION - ERROR_LOGON_FAILURE - ERROR_LOGON_NOT_GRANTED - ERROR_LOGON_SESSION_COLLISION - ERROR_LOGON_SESSION_EXISTS - ERROR_LOGON_TYPE_NOT_GRANTED - ERROR_LOG_FILE_FULL - ERROR_LUIDS_EXHAUSTED - ERROR_MAPPED_ALIGNMENT - ERROR_MAX_THRDS_REACHED - ERROR_MEDIA_CHANGED - ERROR_MEMBERS_PRIMARY_GROUP - ERROR_MEMBER_IN_ALIAS - ERROR_MEMBER_IN_GROUP - ERROR_MEMBER_NOT_IN_ALIAS - ERROR_MEMBER_NOT_IN_GROUP - ERROR_METAFILE_NOT_SUPPORTED - ERROR_META_EXPANSION_TOO_LONG - ERROR_MOD_NOT_FOUND - ERROR_MORE_DATA - ERROR_MORE_WRITES - ERROR_MR_MID_NOT_FOUND - ERROR_NEGATIVE_SEEK - ERROR_NESTING_NOT_ALLOWED - ERROR_NETLOGON_NOT_STARTED - ERROR_NETNAME_DELETED - ERROR_NETWORK_ACCESS_DENIED - ERROR_NETWORK_BUSY - ERROR_NETWORK_UNREACHABLE - ERROR_NET_WRITE_FAULT - ERROR_NOACCESS - ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT - ERROR_NOLOGON_SERVER_TRUST_ACCOUNT - ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT - ERROR_NONE_MAPPED - ERROR_NON_MDICHILD_WINDOW - ERROR_NOTIFY_ENUM_DIR - ERROR_NOT_ALL_ASSIGNED - ERROR_NOT_CHILD_WINDOW - ERROR_NOT_CONNECTED - ERROR_NOT_CONTAINER - ERROR_NOT_DOS_DISK - ERROR_NOT_ENOUGH_MEMORY - ERROR_NOT_ENOUGH_QUOTA - ERROR_NOT_ENOUGH_SERVER_MEMORY - ERROR_NOT_JOINED - ERROR_NOT_LOCKED - ERROR_NOT_LOGON_PROCESS - ERROR_NOT_OWNER - ERROR_NOT_READY - ERROR_NOT_REGISTRY_FILE - ERROR_NOT_SAME_DEVICE - ERROR_NOT_SUBSTED - ERROR_NOT_SUPPORTED - ERROR_NO_BROWSER_SERVERS_FOUND - ERROR_NO_DATA - ERROR_NO_DATA_DETECTED - ERROR_NO_IMPERSONATION_TOKEN - ERROR_NO_INHERITANCE - ERROR_NO_LOGON_SERVERS - ERROR_NO_LOG_SPACE - ERROR_NO_MEDIA_IN_DRIVE - ERROR_NO_MORE_FILES - ERROR_NO_MORE_ITEMS - ERROR_NO_MORE_SEARCH_HANDLES - ERROR_NO_NETWORK - ERROR_NO_NET_OR_BAD_PATH - ERROR_NO_PROC_SLOTS - ERROR_NO_QUOTAS_FOR_ACCOUNT - ERROR_NO_SCROLLBARS - ERROR_NO_SECURITY_ON_OBJECT - ERROR_NO_SHUTDOWN_IN_PROGRESS - ERROR_NO_SIGNAL_SENT - ERROR_NO_SPOOL_SPACE - ERROR_NO_SUCH_ALIAS - ERROR_NO_SUCH_DOMAIN - ERROR_NO_SUCH_GROUP - ERROR_NO_SUCH_LOGON_SESSION - ERROR_NO_SUCH_MEMBER - ERROR_NO_SUCH_PACKAGE - ERROR_NO_SUCH_PRIVILEGE - ERROR_NO_SUCH_USER - ERROR_NO_SYSTEM_MENU - ERROR_NO_TOKEN - ERROR_NO_TRUST_LSA_SECRET - ERROR_NO_TRUST_SAM_ACCOUNT - ERROR_NO_UNICODE_TRANSLATION - ERROR_NO_USER_SESSION_KEY - ERROR_NO_VOLUME_LABEL - ERROR_NO_WILDCARD_CHARACTERS - ERROR_NT_CROSS_ENCRYPTION_REQUIRED - ERROR_NULL_LM_PASSWORD - ERROR_OPEN_FAILED - ERROR_OPEN_FILES - ERROR_OPERATION_ABORTED - ERROR_OUTOFMEMORY - ERROR_OUT_OF_PAPER - ERROR_OUT_OF_STRUCTURES - ERROR_PARTIAL_COPY - ERROR_PARTITION_FAILURE - ERROR_PASSWORD_EXPIRED - ERROR_PASSWORD_MUST_CHANGE - ERROR_PASSWORD_RESTRICTION - ERROR_PATH_BUSY - ERROR_PATH_NOT_FOUND - ERROR_PIPE_BUSY - ERROR_PIPE_CONNECTED - ERROR_PIPE_LISTENING - ERROR_PIPE_NOT_CONNECTED - ERROR_POPUP_ALREADY_ACTIVE - ERROR_PORT_UNREACHABLE - ERROR_POSSIBLE_DEADLOCK - ERROR_PRINTER_ALREADY_EXISTS - ERROR_PRINTER_DELETED - ERROR_PRINTER_DRIVER_ALREADY_INSTALLED - ERROR_PRINTER_DRIVER_IN_USE - ERROR_PRINTQ_FULL - ERROR_PRINT_CANCELLED - ERROR_PRINT_MONITOR_ALREADY_INSTALLED - ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED - ERROR_PRIVATE_DIALOG_INDEX - ERROR_PRIVILEGE_NOT_HELD - ERROR_PROCESS_ABORTED - ERROR_PROC_NOT_FOUND - ERROR_PROTOCOL_UNREACHABLE - ERROR_READ_FAULT - ERROR_REC_NON_EXISTENT - ERROR_REDIRECTOR_HAS_OPEN_HANDLES - ERROR_REDIR_PAUSED - ERROR_REGISTRY_CORRUPT - ERROR_REGISTRY_IO_FAILED - ERROR_REGISTRY_RECOVERED - ERROR_RELOC_CHAIN_XEEDS_SEGLIM - ERROR_REMOTE_SESSION_LIMIT_EXCEEDED - ERROR_REM_NOT_LIST - ERROR_REQUEST_ABORTED - ERROR_REQ_NOT_ACCEP - ERROR_RESOURCE_DATA_NOT_FOUND - ERROR_RESOURCE_LANG_NOT_FOUND - ERROR_RESOURCE_NAME_NOT_FOUND - ERROR_RESOURCE_TYPE_NOT_FOUND - ERROR_RETRY - ERROR_REVISION_MISMATCH - ERROR_RING2SEG_MUST_BE_MOVABLE - ERROR_RING2_STACK_IN_USE - ERROR_RPL_NOT_ALLOWED - ERROR_RXACT_COMMIT_FAILURE - ERROR_RXACT_INVALID_STATE - ERROR_SAME_DRIVE - ERROR_SCREEN_ALREADY_LOCKED - ERROR_SECRET_TOO_LONG - ERROR_SECTOR_NOT_FOUND - ERROR_SEEK - ERROR_SEEK_ON_DEVICE - ERROR_SEM_IS_SET - ERROR_SEM_NOT_FOUND - ERROR_SEM_OWNER_DIED - ERROR_SEM_TIMEOUT - ERROR_SEM_USER_LIMIT - ERROR_SERIAL_NO_DEVICE - ERROR_SERVER_DISABLED - ERROR_SERVER_HAS_OPEN_HANDLES - ERROR_SERVER_NOT_DISABLED - ERROR_SERVICE_ALREADY_RUNNING - ERROR_SERVICE_CANNOT_ACCEPT_CTRL - ERROR_SERVICE_DATABASE_LOCKED - ERROR_SERVICE_DEPENDENCY_DELETED - ERROR_SERVICE_DEPENDENCY_FAIL - ERROR_SERVICE_DISABLED - ERROR_SERVICE_DOES_NOT_EXIST - ERROR_SERVICE_EXISTS - ERROR_SERVICE_LOGON_FAILED - ERROR_SERVICE_MARKED_FOR_DELETE - ERROR_SERVICE_NEVER_STARTED - ERROR_SERVICE_NOT_ACTIVE - ERROR_SERVICE_NOT_FOUND - ERROR_SERVICE_NO_THREAD - ERROR_SERVICE_REQUEST_TIMEOUT - ERROR_SERVICE_SPECIFIC_ERROR - ERROR_SERVICE_START_HANG - ERROR_SESSION_CREDENTIAL_CONFLICT - ERROR_SETCOUNT_ON_BAD_LB - ERROR_SETMARK_DETECTED - ERROR_SHARING_BUFFER_EXCEEDED - ERROR_SHARING_PAUSED - ERROR_SHARING_VIOLATION - ERROR_SHUTDOWN_IN_PROGRESS - ERROR_SIGNAL_PENDING - ERROR_SIGNAL_REFUSED - ERROR_SOME_NOT_MAPPED - ERROR_SPECIAL_ACCOUNT - ERROR_SPECIAL_GROUP - ERROR_SPECIAL_USER - ERROR_SPL_NO_ADDJOB - ERROR_SPL_NO_STARTDOC - ERROR_SPOOL_FILE_NOT_FOUND - ERROR_STACK_OVERFLOW - ERROR_STATIC_INIT - ERROR_SUBST_TO_JOIN - ERROR_SUBST_TO_SUBST - ERROR_SUCCESS - ERROR_SWAPERROR - ERROR_SYSTEM_TRACE - ERROR_THREAD_1_INACTIVE - ERROR_TLW_WITH_WSCHILD - ERROR_TOKEN_ALREADY_IN_USE - ERROR_TOO_MANY_CMDS - ERROR_TOO_MANY_CONTEXT_IDS - ERROR_TOO_MANY_LUIDS_REQUESTED - ERROR_TOO_MANY_MODULES - ERROR_TOO_MANY_MUXWAITERS - ERROR_TOO_MANY_NAMES - ERROR_TOO_MANY_OPEN_FILES - ERROR_TOO_MANY_POSTS - ERROR_TOO_MANY_SECRETS - ERROR_TOO_MANY_SEMAPHORES - ERROR_TOO_MANY_SEM_REQUESTS - ERROR_TOO_MANY_SESS - ERROR_TOO_MANY_SIDS - ERROR_TOO_MANY_TCBS - ERROR_TRANSFORM_NOT_SUPPORTED - ERROR_TRUSTED_DOMAIN_FAILURE - ERROR_TRUSTED_RELATIONSHIP_FAILURE - ERROR_TRUST_FAILURE - ERROR_UNABLE_TO_LOCK_MEDIA - ERROR_UNABLE_TO_UNLOAD_MEDIA - ERROR_UNEXP_NET_ERR - ERROR_UNKNOWN_PORT - ERROR_UNKNOWN_PRINTER_DRIVER - ERROR_UNKNOWN_PRINTPROCESSOR - ERROR_UNKNOWN_PRINT_MONITOR - ERROR_UNKNOWN_REVISION - ERROR_UNRECOGNIZED_MEDIA - ERROR_UNRECOGNIZED_VOLUME - ERROR_USER_EXISTS - ERROR_USER_MAPPED_FILE - ERROR_VC_DISCONNECTED - ERROR_WAIT_NO_CHILDREN - ERROR_WINDOW_NOT_COMBOBOX - ERROR_WINDOW_NOT_DIALOG - ERROR_WINDOW_OF_OTHER_THREAD - ERROR_WINS_INTERNAL - ERROR_WRITE_FAULT - ERROR_WRITE_PROTECT - ERROR_WRONG_DISK - ERROR_WRONG_PASSWORD - E_ABORT - E_ACCESSDENIED - E_FAIL - E_HANDLE - E_INVALIDARG - E_NOINTERFACE - E_NOTIMPL - E_OUTOFMEMORY - E_POINTER - E_UNEXPECTED - FACILITY_CONTROL - FACILITY_DISPATCH - FACILITY_ITF - FACILITY_NT_BIT - FACILITY_NULL - FACILITY_RPC - FACILITY_STORAGE - FACILITY_WIN32 - FACILITY_WINDOWS - INPLACE_E_FIRST - INPLACE_E_LAST - INPLACE_E_NOTOOLSPACE - INPLACE_E_NOTUNDOABLE - INPLACE_S_FIRST - INPLACE_S_LAST - INPLACE_S_TRUNCATED - MARSHAL_E_FIRST - MARSHAL_E_LAST - MARSHAL_S_FIRST - MARSHAL_S_LAST - MEM_E_INVALID_LINK - MEM_E_INVALID_ROOT - MEM_E_INVALID_SIZE - MK_E_CANTOPENFILE - MK_E_CONNECTMANUALLY - MK_E_ENUMERATION_FAILED - MK_E_EXCEEDEDDEADLINE - MK_E_FIRST - MK_E_INTERMEDIATEINTERFACENOTSUPPORTED - MK_E_INVALIDEXTENSION - MK_E_LAST - MK_E_MUSTBOTHERUSER - MK_E_NEEDGENERIC - MK_E_NOINVERSE - MK_E_NOOBJECT - MK_E_NOPREFIX - MK_E_NOSTORAGE - MK_E_NOTBINDABLE - MK_E_NOTBOUND - MK_E_NO_NORMALIZED - MK_E_SYNTAX - MK_E_UNAVAILABLE - MK_S_FIRST - MK_S_HIM - MK_S_LAST - MK_S_ME - MK_S_MONIKERALREADYREGISTERED - MK_S_REDUCED_TO_SELF - MK_S_US - NOERROR - NO_ERROR - OLEOBJ_E_FIRST - OLEOBJ_E_INVALIDVERB - OLEOBJ_E_LAST - OLEOBJ_E_NOVERBS - OLEOBJ_S_CANNOT_DOVERB_NOW - OLEOBJ_S_FIRST - OLEOBJ_S_INVALIDHWND - OLEOBJ_S_INVALIDVERB - OLEOBJ_S_LAST - OLE_E_ADVF - OLE_E_ADVISENOTSUPPORTED - OLE_E_BLANK - OLE_E_CANTCONVERT - OLE_E_CANT_BINDTOSOURCE - OLE_E_CANT_GETMONIKER - OLE_E_CLASSDIFF - OLE_E_ENUM_NOMORE - OLE_E_FIRST - OLE_E_INVALIDHWND - OLE_E_INVALIDRECT - OLE_E_LAST - OLE_E_NOCACHE - OLE_E_NOCONNECTION - OLE_E_NOSTORAGE - OLE_E_NOTRUNNING - OLE_E_NOT_INPLACEACTIVE - OLE_E_OLEVERB - OLE_E_PROMPTSAVECANCELLED - OLE_E_STATIC - OLE_E_WRONGCOMPOBJ - OLE_S_FIRST - OLE_S_LAST - OLE_S_MAC_CLIPFORMAT - OLE_S_STATIC - OLE_S_USEREG - REGDB_E_CLASSNOTREG - REGDB_E_FIRST - REGDB_E_IIDNOTREG - REGDB_E_INVALIDVALUE - REGDB_E_KEYMISSING - REGDB_E_LAST - REGDB_E_READREGDB - REGDB_E_WRITEREGDB - REGDB_S_FIRST - REGDB_S_LAST - RPC_E_ATTEMPTED_MULTITHREAD - RPC_E_CALL_CANCELED - RPC_E_CALL_REJECTED - RPC_E_CANTCALLOUT_AGAIN - RPC_E_CANTCALLOUT_INASYNCCALL - RPC_E_CANTCALLOUT_INEXTERNALCALL - RPC_E_CANTCALLOUT_ININPUTSYNCCALL - RPC_E_CANTPOST_INSENDCALL - RPC_E_CANTTRANSMIT_CALL - RPC_E_CHANGED_MODE - RPC_E_CLIENT_CANTMARSHAL_DATA - RPC_E_CLIENT_CANTUNMARSHAL_DATA - RPC_E_CLIENT_DIED - RPC_E_CONNECTION_TERMINATED - RPC_E_DISCONNECTED - RPC_E_FAULT - RPC_E_INVALIDMETHOD - RPC_E_INVALID_CALLDATA - RPC_E_INVALID_DATA - RPC_E_INVALID_DATAPACKET - RPC_E_INVALID_PARAMETER - RPC_E_NOT_REGISTERED - RPC_E_OUT_OF_RESOURCES - RPC_E_RETRY - RPC_E_SERVERCALL_REJECTED - RPC_E_SERVERCALL_RETRYLATER - RPC_E_SERVERFAULT - RPC_E_SERVER_CANTMARSHAL_DATA - RPC_E_SERVER_CANTUNMARSHAL_DATA - RPC_E_SERVER_DIED - RPC_E_SERVER_DIED_DNE - RPC_E_SYS_CALL_FAILED - RPC_E_THREAD_NOT_INIT - RPC_E_UNEXPECTED - RPC_E_WRONG_THREAD - RPC_S_ADDRESS_ERROR - RPC_S_ALREADY_LISTENING - RPC_S_ALREADY_REGISTERED - RPC_S_BINDING_HAS_NO_AUTH - RPC_S_BINDING_INCOMPLETE - RPC_S_CALL_CANCELLED - RPC_S_CALL_FAILED - RPC_S_CALL_FAILED_DNE - RPC_S_CALL_IN_PROGRESS - RPC_S_CANNOT_SUPPORT - RPC_S_CANT_CREATE_ENDPOINT - RPC_S_COMM_FAILURE - RPC_S_DUPLICATE_ENDPOINT - RPC_S_ENTRY_ALREADY_EXISTS - RPC_S_ENTRY_NOT_FOUND - RPC_S_FP_DIV_ZERO - RPC_S_FP_OVERFLOW - RPC_S_FP_UNDERFLOW - RPC_S_GROUP_MEMBER_NOT_FOUND - RPC_S_INCOMPLETE_NAME - RPC_S_INTERFACE_NOT_FOUND - RPC_S_INTERNAL_ERROR - RPC_S_INVALID_AUTH_IDENTITY - RPC_S_INVALID_BINDING - RPC_S_INVALID_BOUND - RPC_S_INVALID_ENDPOINT_FORMAT - RPC_S_INVALID_NAF_ID - RPC_S_INVALID_NAME_SYNTAX - RPC_S_INVALID_NETWORK_OPTIONS - RPC_S_INVALID_NET_ADDR - RPC_S_INVALID_OBJECT - RPC_S_INVALID_RPC_PROTSEQ - RPC_S_INVALID_STRING_BINDING - RPC_S_INVALID_STRING_UUID - RPC_S_INVALID_TAG - RPC_S_INVALID_TIMEOUT - RPC_S_INVALID_VERS_OPTION - RPC_S_MAX_CALLS_TOO_SMALL - RPC_S_NAME_SERVICE_UNAVAILABLE - RPC_S_NOTHING_TO_EXPORT - RPC_S_NOT_ALL_OBJS_UNEXPORTED - RPC_S_NOT_CANCELLED - RPC_S_NOT_LISTENING - RPC_S_NOT_RPC_ERROR - RPC_S_NO_BINDINGS - RPC_S_NO_CALL_ACTIVE - RPC_S_NO_CONTEXT_AVAILABLE - RPC_S_NO_ENDPOINT_FOUND - RPC_S_NO_ENTRY_NAME - RPC_S_NO_INTERFACES - RPC_S_NO_MORE_BINDINGS - RPC_S_NO_MORE_MEMBERS - RPC_S_NO_PRINC_NAME - RPC_S_NO_PROTSEQS - RPC_S_NO_PROTSEQS_REGISTERED - RPC_S_OBJECT_NOT_FOUND - RPC_S_OUT_OF_RESOURCES - RPC_S_PROCNUM_OUT_OF_RANGE - RPC_S_PROTOCOL_ERROR - RPC_S_PROTSEQ_NOT_FOUND - RPC_S_PROTSEQ_NOT_SUPPORTED - RPC_S_SEC_PKG_ERROR - RPC_S_SERVER_TOO_BUSY - RPC_S_SERVER_UNAVAILABLE - RPC_S_STRING_TOO_LONG - RPC_S_TYPE_ALREADY_REGISTERED - RPC_S_UNKNOWN_AUTHN_LEVEL - RPC_S_UNKNOWN_AUTHN_SERVICE - RPC_S_UNKNOWN_AUTHN_TYPE - RPC_S_UNKNOWN_AUTHZ_SERVICE - RPC_S_UNKNOWN_IF - RPC_S_UNKNOWN_MGR_TYPE - RPC_S_UNSUPPORTED_AUTHN_LEVEL - RPC_S_UNSUPPORTED_NAME_SYNTAX - RPC_S_UNSUPPORTED_TRANS_SYN - RPC_S_UNSUPPORTED_TYPE - RPC_S_UUID_LOCAL_ONLY - RPC_S_UUID_NO_ADDRESS - RPC_S_WRONG_KIND_OF_BINDING - RPC_S_ZERO_DIVIDE - RPC_X_BAD_STUB_DATA - RPC_X_BYTE_COUNT_TOO_SMALL - RPC_X_ENUM_VALUE_OUT_OF_RANGE - RPC_X_INVALID_ES_ACTION - RPC_X_NO_MORE_ENTRIES - RPC_X_NULL_REF_POINTER - RPC_X_SS_CANNOT_GET_CALL_HANDLE - RPC_X_SS_CHAR_TRANS_OPEN_FAIL - RPC_X_SS_CHAR_TRANS_SHORT_FILE - RPC_X_SS_CONTEXT_DAMAGED - RPC_X_SS_HANDLES_MISMATCH - RPC_X_SS_IN_NULL_CONTEXT - RPC_X_WRONG_ES_VERSION - RPC_X_WRONG_STUB_VERSION - SEVERITY_ERROR - SEVERITY_SUCCESS - STG_E_ABNORMALAPIEXIT - STG_E_ACCESSDENIED - STG_E_CANTSAVE - STG_E_DISKISWRITEPROTECTED - STG_E_EXTANTMARSHALLINGS - STG_E_FILEALREADYEXISTS - STG_E_FILENOTFOUND - STG_E_INSUFFICIENTMEMORY - STG_E_INUSE - STG_E_INVALIDFLAG - STG_E_INVALIDFUNCTION - STG_E_INVALIDHANDLE - STG_E_INVALIDHEADER - STG_E_INVALIDNAME - STG_E_INVALIDPARAMETER - STG_E_INVALIDPOINTER - STG_E_LOCKVIOLATION - STG_E_MEDIUMFULL - STG_E_NOMOREFILES - STG_E_NOTCURRENT - STG_E_NOTFILEBASEDSTORAGE - STG_E_OLDDLL - STG_E_OLDFORMAT - STG_E_PATHNOTFOUND - STG_E_READFAULT - STG_E_REVERTED - STG_E_SEEKERROR - STG_E_SHAREREQUIRED - STG_E_SHAREVIOLATION - STG_E_TOOMANYOPENFILES - STG_E_UNIMPLEMENTEDFUNCTION - STG_E_UNKNOWN - STG_E_WRITEFAULT - STG_S_CONVERTED - S_FALSE - S_OK - TYPE_E_AMBIGUOUSNAME - TYPE_E_BADMODULEKIND - TYPE_E_BUFFERTOOSMALL - TYPE_E_CANTCREATETMPFILE - TYPE_E_CANTLOADLIBRARY - TYPE_E_CIRCULARTYPE - TYPE_E_DLLFUNCTIONNOTFOUND - TYPE_E_DUPLICATEID - TYPE_E_ELEMENTNOTFOUND - TYPE_E_INCONSISTENTPROPFUNCS - TYPE_E_INVALIDID - TYPE_E_INVALIDSTATE - TYPE_E_INVDATAREAD - TYPE_E_IOERROR - TYPE_E_LIBNOTREGISTERED - TYPE_E_NAMECONFLICT - TYPE_E_OUTOFBOUNDS - TYPE_E_QUALIFIEDNAMEDISALLOWED - TYPE_E_REGISTRYACCESS - TYPE_E_SIZETOOBIG - TYPE_E_TYPEMISMATCH - TYPE_E_UNDEFINEDTYPE - TYPE_E_UNKNOWNLCID - TYPE_E_UNSUPFORMAT - TYPE_E_WRONGTYPEKIND - VIEW_E_DRAW - VIEW_E_FIRST - VIEW_E_LAST - VIEW_S_ALREADY_FROZEN - VIEW_S_FIRST - VIEW_S_LAST -); - -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/.*:://; - #reset $! to zero to reset any current errors. - local $! = 0; - local $^E = 0; - my $val = constant($constname, @_ ? $_[0] : 0); - if ($! != 0) { - if ($! =~ /Invalid/) { - $AutoLoader::AUTOLOAD = $AUTOLOAD; - goto &AutoLoader::AUTOLOAD; - } - else { - ($pack,$file,$line) = caller; - die "Your vendor has not defined Win32::WinError macro $constname, used at $file line $line."; - } - } - eval "sub $AUTOLOAD { $val }"; - goto &$AUTOLOAD; -} - -bootstrap Win32::WinError; - -# Preloaded methods go here. - -# Autoload methods go after __END__, and are processed by the autosplit program. - -1; -__END__ diff --git a/Master/tlpkg/tlperl.old/lib/Win32/test-async.pl b/Master/tlpkg/tlperl.old/lib/Win32/test-async.pl deleted file mode 100644 index c47e2df04ec..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32/test-async.pl +++ /dev/null @@ -1,129 +0,0 @@ -# -# TEST-ASYNC.PL -# Test Win32::Internet's Asynchronous Operations -# by Aldo Calpini <dada@divinf.it> -# -# WARNING: this code is most likely to fail with almost-random errors -# I don't know what is wrong here, any hint will be greatly -# appreciated! - -use Win32::Internet; - -$params{'flags'} = INTERNET_FLAG_ASYNC; -$params{'opentype'} = INTERNET_OPEN_TYPE_DIRECT; -$I = new Win32::Internet(\%params); - -# print "Error: ", $I->Error(), "\n"; -print "I.handle=", $I->{'handle'}, "\n"; - -$return = $I->SetStatusCallback(); -print "SetStatusCallback=$return"; -print "ERROR" if $return eq undef; -print "\n"; - -$buffer = $I->QueryOption(INTERNET_OPTION_READ_BUFFER_SIZE); -print "Buffer=$buffer\n"; - -$host = "ftp.activeware.com"; -$user = "anonymous"; -$pass = "dada\@divinf.it"; - - -print "Doing FTP()...\n"; - -$handle2 = $I->FTP($FTP, $host, $user, $pass, 21, 1); - -print "Returned from FTP()...\n"; - -($n, $t) = $I->Error(); - -if($n == 997) { - print "Going asynchronous...\n"; - ($status, $info) = $I->GetStatusCallback(1); - while($status != 100 and $status != 70) { - if($oldstatus != $status) { - if($status == 60) { - $FTP->{'handle'} = $info; - } elsif($status == 10) { - print "resolving name... \n"; - } elsif($status == 11) { - print "name resolved... \n"; - } elsif($status == 20) { - print "connecting... \n"; - } elsif($status == 21) { - print "connected... \n"; - } elsif($status == 30) { - print "sending... \n"; - } elsif($status == 31) { - print "$info bytes sent. \n"; - } elsif($status == 40) { - print "receiving... \n"; - } elsif($status == 41) { - print "$info bytes received. \n"; - } else { - print "status=$status\n"; - } - } - $oldstatus = $status; - ($status, $info) = $I->GetStatusCallback(1); - } -} else { - print "Error=", $I->Error(), "\n"; -} -print "FTP.handle=", $FTP->{'handle'}, "\n"; -print "STATUS(after FTP)=", $I->GetStatusCallback(1), "\n"; - -# "/pub/microsoft/sdk/activex13.exe", - -print "Doing Get()...\n"; - -$file = "/Perl-Win32/perl5.001m/currentBuild/110-i86.zip"; - -$FTP->Get($file, "110-i86.zip", 1, 0, 2); - -print "Returned from Get()...\n"; - -($n, $t) = $I->Error(); -if($n == 997) { - print "Going asynchronous...\n"; - $bytes = 0; - $oldstatus = 0; - ($status, $info) = $I->GetStatusCallback(2); - while($status != 100 and $status != 70) { - # print "status=$status info=$info\n"; - # if($oldstatus!=$status) { - if($status == 10) { - print "resolving name... \n"; - } elsif($status == 11) { - print "name resolved... \n"; - } elsif($status == 20) { - print "connecting... \n"; - } elsif($status == 21) { - print "connected... \n"; - #} elsif($status == 30) { - # print "sending... \n"; - } elsif($status == 31) { - print "$info bytes sent. \n"; - #} elsif($status == 40) { - # print "receiving... \n"; - } elsif($status == 41) { - $bytes = $bytes+$info; - print "$bytes bytes received. \n"; - #} else { - # print "status=$status\n"; - } - # } - $oldstatus = $status; - undef $status, $info; - ($status, $info) = $I->GetStatusCallback(2); - } -} else { - print "Error=[$n] $t\n"; -} -print "\n"; -($status, $info) = $I->GetStatusCallback(2); -print "STATUS(after Get)=$status\n"; -print "Error=", $I->Error(), "\n"; -exit(0); - - diff --git a/Master/tlpkg/tlperl.old/lib/Win32API/Registry.pm b/Master/tlpkg/tlperl.old/lib/Win32API/Registry.pm deleted file mode 100644 index dbf98b4e2e9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32API/Registry.pm +++ /dev/null @@ -1,1792 +0,0 @@ -# Registry.pm -- Low-level access to functions/constants from WINREG.h - -package Win32API::Registry; - -use strict; -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); #@EXPORT_FAIL); -$VERSION= '0.24'; - -require Exporter; -require DynaLoader; -@ISA= qw(Exporter DynaLoader); - -@EXPORT= qw(); -%EXPORT_TAGS= ( - Func => [qw( regConstant regLastError - AllowPriv AbortSystemShutdown InitiateSystemShutdown - RegCloseKey RegConnectRegistry RegCreateKey - RegCreateKeyEx RegDeleteKey RegDeleteValue - RegEnumKey RegEnumKeyEx RegEnumValue - RegFlushKey RegGetKeySecurity RegLoadKey - RegNotifyChangeKeyValue RegOpenKey RegOpenKeyEx - RegQueryInfoKey RegQueryMultipleValues RegQueryValue - RegQueryValueEx RegReplaceKey RegRestoreKey - RegSaveKey RegSetKeySecurity RegSetValue - RegSetValueEx RegUnLoadKey )], - FuncA => [qw( - AbortSystemShutdownA InitiateSystemShutdownA - RegConnectRegistryA RegCreateKeyA RegCreateKeyExA - RegDeleteKeyA RegDeleteValueA RegEnumKeyA - RegEnumKeyExA RegEnumValueA RegLoadKeyA - RegOpenKeyA RegOpenKeyExA RegQueryInfoKeyA - RegQueryMultipleValuesA RegQueryValueA RegQueryValueExA - RegReplaceKeyA RegRestoreKeyA RegSaveKeyA - RegSetValueA RegSetValueExA RegUnLoadKeyA )], - FuncW => [qw( - AbortSystemShutdownW InitiateSystemShutdownW - RegConnectRegistryW RegCreateKeyW RegCreateKeyExW - RegDeleteKeyW RegDeleteValueW RegEnumKeyW - RegEnumKeyExW RegEnumValueW RegLoadKeyW - RegOpenKeyW RegOpenKeyExW RegQueryInfoKeyW - RegQueryMultipleValuesW RegQueryValueW RegQueryValueExW - RegReplaceKeyW RegRestoreKeyW RegSaveKeyW - RegSetValueW RegSetValueExW RegUnLoadKeyW )], - HKEY_ => [qw( - HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_CURRENT_USER - HKEY_DYN_DATA HKEY_LOCAL_MACHINE HKEY_PERFORMANCE_DATA - HKEY_USERS )], - KEY_ => [qw( - KEY_QUERY_VALUE KEY_SET_VALUE KEY_CREATE_SUB_KEY - KEY_ENUMERATE_SUB_KEYS KEY_NOTIFY KEY_CREATE_LINK - KEY_READ KEY_WRITE KEY_EXECUTE - KEY_ALL_ACCESS), - 'KEY_DELETE', # DELETE (0x00010000L) - 'KEY_READ_CONTROL', # READ_CONTROL (0x00020000L) - 'KEY_WRITE_DAC', # WRITE_DAC (0x00040000L) - 'KEY_WRITE_OWNER', # WRITE_OWNER (0x00080000L) - 'KEY_SYNCHRONIZE', # SYNCHRONIZE (0x00100000L) (not used) - ], - REG_ => [qw( - REG_OPTION_RESERVED REG_OPTION_NON_VOLATILE REG_OPTION_VOLATILE - REG_OPTION_CREATE_LINK REG_OPTION_BACKUP_RESTORE - REG_OPTION_OPEN_LINK REG_LEGAL_OPTION REG_CREATED_NEW_KEY - REG_OPENED_EXISTING_KEY REG_WHOLE_HIVE_VOLATILE REG_REFRESH_HIVE - REG_NO_LAZY_FLUSH REG_NOTIFY_CHANGE_ATTRIBUTES - REG_NOTIFY_CHANGE_NAME REG_NOTIFY_CHANGE_LAST_SET - REG_NOTIFY_CHANGE_SECURITY REG_LEGAL_CHANGE_FILTER - REG_NONE REG_SZ REG_EXPAND_SZ - REG_BINARY REG_DWORD REG_DWORD_LITTLE_ENDIAN - REG_DWORD_BIG_ENDIAN REG_LINK REG_MULTI_SZ - REG_RESOURCE_LIST REG_FULL_RESOURCE_DESCRIPTOR - REG_RESOURCE_REQUIREMENTS_LIST )], - SE_ => [qw( - SE_ASSIGNPRIMARYTOKEN_NAME SE_AUDIT_NAME - SE_BACKUP_NAME SE_CHANGE_NOTIFY_NAME - SE_CREATE_PAGEFILE_NAME SE_CREATE_PERMANENT_NAME - SE_CREATE_TOKEN_NAME SE_DEBUG_NAME - SE_INCREASE_QUOTA_NAME SE_INC_BASE_PRIORITY_NAME - SE_LOAD_DRIVER_NAME SE_LOCK_MEMORY_NAME - SE_MACHINE_ACCOUNT_NAME SE_PROF_SINGLE_PROCESS_NAME - SE_REMOTE_SHUTDOWN_NAME SE_RESTORE_NAME - SE_SECURITY_NAME SE_SHUTDOWN_NAME - SE_SYSTEMTIME_NAME SE_SYSTEM_ENVIRONMENT_NAME - SE_SYSTEM_PROFILE_NAME SE_TAKE_OWNERSHIP_NAME - SE_TCB_NAME SE_UNSOLICITED_INPUT_NAME )], -); -@EXPORT_OK= (); -{ my $ref; - foreach $ref ( values(%EXPORT_TAGS) ) { - push( @EXPORT_OK, @$ref ) unless $ref->[0] =~ /^SE_/; - } -} -$EXPORT_TAGS{ALL}= [ @EXPORT_OK ]; # \@EXPORT_OK once SE_* settles down. -# push( @EXPORT_OK, "JHEREG_TACOSALAD" ); # Used to test Mkconst2perl -push( @EXPORT_OK, @{$EXPORT_TAGS{SE_}} ); - -bootstrap Win32API::Registry $VERSION; - -# Preloaded methods go here. - -# To convert C constants to Perl code in cRegistry.pc -# [instead of C or C++ code in cRegistry.h]: -# * Modify F<Makefile.PL> to add WriteMakeFile() => -# CONST2PERL/postamble => [[ "Win32API::Registry" => ]] WRITE_PERL => 1. -# * Either comment out C<#include "cRegistry.h"> from F<Registry.xs> -# or make F<cRegistry.h> an empty file. -# * Make sure the following C<if> block is not commented out. -# * "nmake clean", "perl Makefile.PL", "nmake" - -if( ! defined ®_NONE ) { - require "Win32API/Registry/cRegistry.pc"; -} - -# This would be convenient but inconsistant and hard to explain: -#push( @{$EXPORT_TAGS{ALL}}, @{$EXPORT_TAGS{SE_}} ) -# if defined &SE_TCB_NAME; - -sub regConstant -{ - my( $name )= @_; - if( 1 != @_ || ! $name || $name =~ /\W/ ) { - require Carp; - Carp::croak( 'Usage: ',__PACKAGE__,'::regConstant("CONST_NAME")' ); - } - my $proto= prototype $name; - if( defined \&$name - && defined $proto - && "" eq $proto ) { - no strict 'refs'; - return &$name; - } - return undef; -} - -# We provide this for backwards compatibility: -sub constant -{ - my( $name )= @_; - my $value= regConstant( $name ); - if( defined $value ) { - $!= 0; - return $value; - } - $!= 11; # EINVAL - return 0; -} - -# BEGIN { -# my $code= 'return _regLastError(@_)'; -# local( $!, $^E )= ( 1, 1 ); -# if( $! ne $^E ) { -# $code= ' -# local( $^E )= _regLastError(@_); -# my $ret= $^E; -# return $ret; -# '; -# } -# eval "sub regLastError { $code }"; -# die "$@" if $@; -# } - -package Win32API::Registry::_error; - -use overload - '""' => sub { - require Win32 unless defined &Win32::FormatMessage; - $_ = Win32::FormatMessage(Win32API::Registry::_regLastError()); - tr/\r\n//d; - return $_; - }, - '0+' => sub { Win32API::Registry::_regLastError() }, - 'fallback' => 1; - -sub new { return bless {}, shift } -sub set { Win32API::Registry::_regLastError($_[1]); return $_[0] } - -package Win32API::Registry; - -my $_error = new Win32API::Registry::_error; - -sub regLastError { - require Carp; - Carp::croak('Usage: ',__PACKAGE__,'::regLastError( [$setWin32ErrCode] )') if @_ > 1; - $_error->set($_[0]) if defined $_[0]; - return $_error; -} - -# Since we ISA DynaLoader which ISA AutoLoader, we ISA AutoLoader so we -# need this next chunk to prevent Win32API::Registry->nonesuch() from -# looking for "nonesuch.al" and producing confusing error messages: -use vars qw($AUTOLOAD); -sub AUTOLOAD { - require Carp; - Carp::croak( - "Can't locate method $AUTOLOAD via package Win32API::Registry" ); -} - -# Replace "&rout;" with "goto &rout;" when that is supported on Win32. - -# Let user omit all buffer sizes: -sub RegEnumKeyExA { - if( 6 == @_ ) { splice(@_,4,0,[]); splice(@_,2,0,[]); } - &_RegEnumKeyExA; -} -sub RegEnumKeyExW { - if( 6 == @_ ) { splice(@_,4,0,[]); splice(@_,2,0,[]); } - &_RegEnumKeyExW; -} -sub RegEnumValueA { - if( 6 == @_ ) { splice(@_,2,0,[]); push(@_,[]); } - &_RegEnumValueA; -} -sub RegEnumValueW { - if( 6 == @_ ) { splice(@_,2,0,[]); push(@_,[]); } - &_RegEnumValueW; -} -sub RegQueryInfoKeyA { - if( 11 == @_ ) { splice(@_,2,0,[]); } - &_RegQueryInfoKeyA; -} -sub RegQueryInfoKeyW { - if( 11 == @_ ) { splice(@_,2,0,[]); } - &_RegQueryInfoKeyW; -} - -sub RegEnumKeyA { - push(@_,[]) if 3 == @_; - &_RegEnumKeyA; -} -sub RegEnumKeyW { - push(@_,[]) if 3 == @_; - &_RegEnumKeyW; -} -sub RegGetKeySecurity { - push(@_,[]) if 3 == @_; - &_RegGetKeySecurity; -} -sub RegQueryMultipleValuesA { - push(@_,[]) if 4 == @_; - &_RegQueryMultipleValuesA; -} -sub RegQueryMultipleValuesW { - push(@_,[]) if 4 == @_; - &_RegQueryMultipleValuesW; -} -sub RegQueryValueA { - push(@_,[]) if 3 == @_; - &_RegQueryValueA; -} -sub RegQueryValueW { - push(@_,[]) if 3 == @_; - &_RegQueryValueW; -} -sub RegQueryValueExA { - push(@_,[]) if 5 == @_; - &_RegQueryValueExA; -} -sub RegQueryValueExW { - push(@_,[]) if 5 == @_; - &_RegQueryValueExW; -} -sub RegSetValueA { - push(@_,0) if 4 == @_; - &_RegSetValueA; -} -sub RegSetValueW { - push(@_,0) if 4 == @_; - &_RegSetValueW; -} -sub RegSetValueExA { - push(@_,0) if 5 == @_; - &_RegSetValueExA; -} -sub RegSetValueExW { - push(@_,0) if 5 == @_; - &_RegSetValueExW; -} - -# Aliases for non-Unicode functions: -sub AbortSystemShutdown { &AbortSystemShutdownA; } -sub InitiateSystemShutdown { &InitiateSystemShutdownA; } -sub RegConnectRegistry { &RegConnectRegistryA; } -sub RegCreateKey { &RegCreateKeyA; } -sub RegCreateKeyEx { &RegCreateKeyExA; } -sub RegDeleteKey { &RegDeleteKeyA; } -sub RegDeleteValue { &RegDeleteValueA; } -sub RegEnumKey { &RegEnumKeyA; } -sub RegEnumKeyEx { &RegEnumKeyExA; } -sub RegEnumValue { &RegEnumValueA; } -sub RegLoadKey { &RegLoadKeyA; } -sub RegOpenKey { &RegOpenKeyA; } -sub RegOpenKeyEx { &RegOpenKeyExA; } -sub RegQueryInfoKey { &RegQueryInfoKeyA; } -sub RegQueryMultipleValues { &RegQueryMultipleValuesA; } -sub RegQueryValue { &RegQueryValueA; } -sub RegQueryValueEx { &RegQueryValueExA; } -sub RegReplaceKey { &RegReplaceKeyA; } -sub RegRestoreKey { &RegRestoreKeyA; } -sub RegSaveKey { &RegSaveKeyA; } -sub RegSetValue { &RegSetValueA; } -sub RegSetValueEx { &RegSetValueExA; } -sub RegUnLoadKey { &RegUnLoadKeyA; } - -1; -__END__ - -=head1 NAME - -Win32API::Registry - Low-level access to Win32 system API calls from WINREG.H - -=head1 SYNOPSIS - - use Win32API::Registry 0.21 qw( :ALL ); - - RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SYSTEM\\Disk", 0, KEY_READ, $key ); - or die "Can't open HKEY_LOCAL_MACHINE\\SYSTEM\\Disk: ", - regLastError(),"\n"; - RegQueryValueEx( $key, "Information", [], $type, $data, [] ); - or die "Can't read HKEY_L*MACHINE\\SYSTEM\\Disk\\Information: ", - regLastError(),"\n"; - [...] - RegCloseKey( $key ) - or die "Can't close HKEY_LOCAL_MACHINE\\SYSTEM\\Disk: ", - regLastError(),"\n"; - -=head1 DESCRIPTION - -This provides fairly low-level access to the Win32 System API -calls dealing with the Registry [mostly from WINREG.H]. This -is mostly intended to be used by other modules such as -C<Win32::TieRegistry> [which provides an extremely Perl-friendly -method for using the Registry]. - -For a description of the logical structure of the Registry, see -the documentation for the C<Win32::TieRegistry> module. - -To pass in C<NULL> as the pointer to an optional buffer, pass in -an empty list reference, C<[]>. - -Beyond raw access to the API calls and related constants, this module -handles smart buffer allocation and translation of return codes. - -All calls return a true value for success and a false value for -failure. After any failure, C<$^E> should automatically be set -to indicate the reason. However, current versions of Perl often -overwrite C<$^E> too quickly, so you can use C<regLastError()> -instead, which is only set by Win32API::Registry routines. - -Note that C<$!> is not set by these routines except by -C<Win32API::Registry::constant()> when a constant is not defined. - -=head2 Exports - -Nothing is exported by default. The following tags can be used to -have sets of symbols exported. - -[Note that much of the following documentation refers to the -behavior of the underlying API calls which may vary in current -and future versions of the Win32 API without any changes to this -module. Therefore you should check the Win32 API documentation -directly when needed.] - -=over - -=item :Func - -The basic function names: - -=over - -=item AllowPriv - -=item C<AllowPriv( $sPrivName, $bEnable )> - -Not a Win32 API call. Enables or disables a specific privilege for -the current process. Returns a true value if successful and a false -value [and sets C<$^E>/C<regLastError()>] on failure. This routine -does not provide a way to tell if a privilege is currently enabled. - -C<$sPrivname> is a Win32 privilege name [see L</:SE_>]. For example, -C<"SeBackupPrivilege"> [a.k.a. C<SE_BACKUP_NAME>] controls whether -you can use C<RegSaveKey()> and C<"SeRestorePrivilege"> [a.k.a. -C<SE_RESTORE_NAME>] controls whether you can use C<RegLoadKey()>. - -If C<$bEnable> is true, then C<AllowPriv()> tries to enable the -privilege. Otherwise it tries to disable the privilege. - -=item AbortSystemShutdown - -=item C<AbortSystemShutdown( $sComputerName )> - -Tries to abort a remote shutdown request previously made via -C<InitiateSystemShutdown()>. Returns a true value if successful -and a false value [and sets C<$^E>/C<regLastError()>] on failure. - -=item InitiateSystemShutdown - -=item C<InitiateSystemShutdown( $sComputer, $sMessage, $uTimeoutSecs, $bForce, $bReboot )> - -Requests that a [remote] computer be shutdown or rebooted. -Returns a true value if successful and a false value [and -sets C<$^E>/C<regLastError()>] on failure. - -C<$sComputer> is the name [or address] of the computer to be -shutdown or rebooted. You can use C<[]> [for C<NULL>] or C<""> -to indicate the local computer. - -C<$sMessage> is the message to be displayed in a pop-up window -on the desktop of the computer to be shutdown or rebooted until -the timeout expires or the shutdown is aborted via -C<AbortSystemShutdown()>. With C<$iTimeoutSecs == 0>, the -message will never be visible. - -C<$iTimeoutSecs> is the number of seconds to wait before starting -the shutdown. - -If C<$bForce> is false, then any applications running on the remote -computer get a chance to prompt the remote user whether they want -to save changes. Also, for any applications that do not exit quickly -enough, the operating system will prompt the user whether they wish -to wait longer for the application to exit or force it to exit now. -At any of these prompts the user can press B<CANCEL> to abort the -shutdown but if no applications have unsaved data, they will likely -all exit quickly and the shutdown will progress with the remote user -having no option to cancel the shutdown. - -If C<$bForce> is true, all applications are told to exit immediately -and so will not prompt the user even if there is unsaved data. Any -applications that take too long to exit will be forcibly killed after -a short time. The only way to abort the shutdown is to call -C<AbortSystemShutdown()> before the timeout expires and there is no -way to abort the shutdown once it has begun. - -If C<$bReboot> is true, the computer will automatically reboot once -the shutdown is complete. If C<$bReboot> is false, then when the -shutdown is complete the computer will halt at a screen indicating -that the shutdown is complete and offering a way for the user to -start to boot the computer. - -You must have the C<"SeRemoteShutdownPrivilege"> privilege -on the remote computer for this call to succeed. If shutting -down the local computer, then the calling process must have -the C<"SeShutdownPrivilege"> privilege and have it enabled. - -=item RegCloseKey - -=item C<RegCloseKey( $hKey )> - -Closes the handle to a Registry key returned by C<RegOpenKeyEx()>, -C<RegConnectRegistry()>, C<RegCreateKeyEx()>, or a few other -routines. Returns a true value if successful and a false value -[and sets C<$^E>/C<regLastError()>] on failure. - -=item RegConnectRegistry - -=item C<RegConnectRegistry( $sComputer, $hRootKey, $ohKey )> - -Connects to one of the root Registry keys of a remote computer. -Returns a true value if successful and a false value [and -sets C<$^E>/C<regLastError()>] on failure. - -C<$sComputer> is the name [or address] of a remote computer -whose Registry you wish to access. - -C<$hKey> must be either C<HKEY_LOCAL_MACHINE> or C<HKEY_USERS> -and specifies which root Registry key on the remote computer -you wish to have access to. - -C<$phKey> will be set to the handle to be used to access the -remote Registry key if the call succeeds. - -=item regConstant - -=item C<$value= regConstant( $sConstantName )> - -Fetch the value of a constant. Returns C<undef> if C<$sConstantName> -is not the name of a constant supported by this module. Never sets -C<$!> nor C<$^E>. - -This function is rarely used since you will usually get the value of a -constant by having that constant imported into your package by listing -the constant name in the C<use Win32API::Registry> statement and then -simply using the constant name in your code [perhaps followed by -C<()>]. This function is useful for verifying constant names not in -Perl code, for example, after prompting a user to type in a constant -name. - -=item RegCreateKey - -=item C<RegCreateKey( $hKey, $sSubKey, $ohSubKey )> - -This routine is meant only for compatibility with Windows version -3.1. Use C<RegCreateKeyEx()> instead. - -=item RegCreateKeyEx - -=item C<RegCreateKeyEx( $hKey, $sSubKey, $uZero, $sClass, $uOpts, $uAccess, $pSecAttr, $ohNewKey, $ouDisp )> - -Creates a new Registry subkey. Returns a true value if successful and -a false value [and sets C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$sSubKey> is the name of the new subkey to be created. - -C<$iZero> is reserved for future use and should always be specified -as C<0>. - -C<$sClass> is a string to be used as the class for the new -subkey. We are not aware of any current use for Registry key -class information so the empty string, C<"">, should usually -be used here. - -C<$iOpts> is a numeric value containing bits that control options -used while creating the new subkey. C<REG_OPTION_NON_VOLATILE> -is the default. C<REG_OPTION_VOLATILE> [which is ignored on -Windows 95] means the data stored under this key is not kept -in a file and will not be preserved when the system reboots. -C<REG_OPTION_BACKUP_RESTORE> [also ignored on Windows 95] means -ignore the C<$iAccess> parameter and try to open the new key with -the access required to backup or restore the key. - -C<$iAccess> is a numeric mask of bits specifying what type of -access is desired when opening the new subkey. See C<RegOpenKeyEx()>. - -C<$pSecAttr> is a C<SECURITY_ATTRIBUTES> structure packed into -a Perl string which controls whether the returned handle can be -inherited by child processes. Normally you would pass C<[]> for -this parameter to have C<NULL> passed to the underlying API -indicating that the handle cannot be inherited. If not under -Windows95, then C<$pSecAttr> also allows you to specify -C<SECURITY_DESCRIPTOR> that controls which users will have -what type of access to the new key -- otherwise the new key -inherits its security from its parent key. - -C<$phKey> will be set to the handle to be used to access the new -subkey if the call succeeds. - -C<$piDisp> will be set to either C<REG_CREATED_NEW_KEY> or -C<REG_OPENED_EXISTING_KEY> to indicate for which reason the -call succeeded. Can be specified as C<[]> if you don't care. - -If C<$phKey> and C<$piDisp> start out as integers, then they will -probably remain unchanged if the call fails. - -=item RegDeleteKey - -=item C<RegDeleteKey( $hKey, $sSubKey )> - -Deletes a subkey of an open Registry key provided that the subkey -contains no subkeys of its own [but the subkey may contain values]. -Returns a true value if successful and a false value [and sets -C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$sSubKey> is the name of the subkey to be deleted. - -=item RegDeleteValue - -=item C<RegDeleteValue( $hKey, $sValueName )> - -Deletes a value from an open Registry key. Returns a true value if -successful and a false value [and sets C<$^E>/C<regLastError()>] on -failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$sValueKey> is the name of the value to be deleted. - -=item RegEnumKey - -=item C<RegEnumKey( $hKey, $uIndex, $osName, $ilNameSize )> - -This routine is meant only for compatibility with Windows version -3.1. Use C<RegEnumKeyEx()> instead. - -=item RegEnumKeyEx - -=item C<RegEnumKeyEx( $hKey, $uIndex, $osName, $iolName, $pNull, $osClass, $iolClass, $opftLastWrite )> - -Lets you enumerate the names of all of the subkeys directly under -an open Registry key. Returns a true value if successful and a false -value [and sets C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$iIndex> is the sequence number of the immediate subkey that -you want information on. Start with this value as C<0> then -repeat the call incrementing this value each time until the -call fails with C<$^E>/C<regLastError()> numerically equal to -C<ERROR_NO_MORE_ITEMS>. - -C<$sName> will be set to the name of the subkey. Can be C<[]> if -you don't care about the name. - -C<$plName> initially specifies the [minimum] buffer size to be -allocated for C<$sName>. Will be set to the length of the subkey -name if the requested subkey exists even if C<$sName> isn't -successfully set to the subkey name. See L<Buffer sizes> for -more information. - -C<$pNull> is reserved for future used and should be passed as C<[]>. - -C<$sClass> will be set to the class name for the subkey. Can be -C<[]> if you don't care about the class. - -C<$plClass> initially specifies the [minimum] buffer size to be -allocated for C<$sClass> and will be set to the length of the -subkey class name if the requested subkey exists. See L<Buffer -sizes> for more information. - -C<$pftLastWrite> will be set to a C<FILETIME> structure packed -into a Perl string and indicating when the subkey was last changed. -Can be C<[]>. - -You may omit both C<$plName> and C<$plClass> to get the same effect -as passing in C<[]> for each of them. - -=item RegEnumValue - -=item C<RegEnumValue( $hKey, $uIndex, $osValName, $iolValName, $pNull, $ouType, $opValData, $iolValData )> - -Lets you enumerate the names of all of the values contained in an -open Registry key. Returns a true value if successful and a false -value [and sets C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$iIndex> is the sequence number of the value that you want -information on. Start with this value as C<0> then repeat the -call incrementing this value each time until the call fails with -C<ERROR_NO_MORE_ITEMS>. - -C<$sValName> will be set to the name of the value. Can be C<[]> -if you don't care about the name. - -C<$plValName> initially specifies the [minimum] buffer size to be -allocated for C<$sValName>. Will be set to the length of the value -name if the requested value exists even if C<$sValName> isn't -successfully set to the value name. See L<Buffer sizes> for -more information. - -C<$pNull> is reserved for future used and should be passed as C<[]>. - -C<$piType> will be set to the type of data stored in the value data. -If the call succeeds, it will be set to a C<REG_*> value unless -passed in as C<[]>. - -C<$pValData> will be set to the data [packed into a Perl string] -that is stored in the requested value. Can be C<[]> if you don't -care about the value data. - -C<$plValData> initially specifies the [minimum] buffer size to be -allocated for C<$sValData> and will be set to the length of the -value data if the requested value exists. See L<Buffer sizes> for -more information. - -You may omit both C<$plValName> and C<$plValData> to get the same -effect as passing in C<[]> for each of them. - -=item RegFlushKey - -=item C<RegFlushKey( $hKey )> - -Forces the data stored under an open Registry key to be flushed -to the disk file where the data is preserved between reboots. -Forced flushing is not guaranteed to be efficient so this routine -should almost never be called. Returns a true value if successful -and a false value [and sets C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -=item RegGetKeySecurity - -=item C<RegGetKeySecurity( $hKey, $uSecInfo, $opSecDesc, $iolSecDesc )> - -Retrieves one of the C<SECURITY_DESCRIPTOR> structures describing -part of the security for an open Registry key. Returns a true value -if successful and a false value [and sets C<$^E>/C<regLastError()>] -on failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$iSecInfo> is a numeric C<SECURITY_INFORMATION> value that -specifies which parts of the C<SECURITY_DESCRIPTOR> structure -to retrieve. Should be C<OWNER_SECURITY_INFORMATION>, -C<GROUP_SECURITY_INFORMATION>, C<DACL_SECURITY_INFORMATION>, or -or C<SACL_SECURITY_INFORMATION> or two or more of these bits -combined using C<|>. - -C<$pSecDesc> will be set to the requested C<SECURITY_DESCRIPTOR> -structure [packed into a Perl string]. - -C<$plSecDesc> initially specifies the [minimum] buffer size to be -allocated for C<$sSecDesc> and will be set to the length of the -security descriptor. See L<Buffer sizes> for more information. -You may omit this parameter to get the same effect as passing in -C<[]> for it. - -=item regLastError - -=item C<$svError= regLastError();> - -=item C<regLastError( $uError );> - -Returns the last error encountered by a routine from this module. -It is just like C<$^E> except it isn't changed by anything except -routines from this module. Ideally you could just use C<$^E>, but -current versions of Perl often overwrite C<$^E> before you get a -chance to check it and really old versions of Perl don't really -support C<$^E> under Win32. - -Just like C<$^E>, in a numeric context C<regLastError()> returns -the numeric error value while in a string context it returns a -text description of the error [actually it returns a Perl scalar -that contains both values so C<$x= regLastError()> causes C<$x> -to give different values in string vs. numeric contexts]. - -The last form sets the error returned by future calls to -C<regLastError()> and should not be used often. C<$uError> must -be a numeric error code. Also returns the dual-valued version -of C<$uError>. - -=item RegLoadKey - -=item C<RegLoadKey( $hKey, $sSubKey, $sFileName )> - -Loads a hive file. That is, it creates a new subkey in the -Registry and associates that subkey with a disk file that contains -a Registry hive so that the new subkey can be used to access the -keys and values stored in that hive. Hives are usually created -via C<RegSaveKey()>. Returns a true value if successful and a -false value [and sets C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key that can have hives -loaded to it. This must be C<HKEY_LOCAL_MACHINE>, C<HKEY_USERS>, -or a remote version of one of these from a call to -C<RegConnectRegistry()>. - -C<$sSubKey> is the name of the new subkey to created and associated -with the hive file. - -C<$sFileName> is the name of the hive file to be loaded. This -file name is interpretted relative to the -C<%SystemRoot%/System32/config> directory on the computer where -the C<$hKey> key resides. If C<$sFileName> is on a FAT file -system, then its name must not have an extension. - -You must have the C<SE_RESTORE_NAME> privilege to use this routine. - -WARNING: Loading of hive files via a network share may silently -corrupt the hive and so should not be attempted [this is a problem -in at least some versions of the underlying API which this module -does not try to fix or avoid]. To access a hive file located on a -remote computer, connect to the remote computer's Registry and load -the hive via that. - -=item RegNotifyChangeKeyValue - -=item C<RegNotifyChangeKeyValue( $hKey, $bWatchSubtree, $uNotifyFilter, $hEvent, $bAsync )> - -Arranges for your process to be notified when part of the Registry -is changed. Returns a true value if successful and a false value -[and sets C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call] for which you wish to be notified when any changes -are made to it. - -If C<$bWatchSubtree> is true, then changes to any subkey or -descendant of C<$hKey> are also reported. - -C<$iNotifyFilter> controllers what types of changes are reported. It -is a numeric value containing one or more of the following bit masks: - -=over - -=item C<REG_NOTIFY_CHANGE_NAME> - -Notify if a subkey is added or deleted to a monitored key. - -=item C<REG_NOTIFY_CHANGE_LAST_SET> - -Notify if a value in a monitored key is added, deleted, or modified. - -=item C<REG_NOTIFY_CHANGE_SECURITY> - -Notify if a security descriptor of a monitored key is changed. - -=item C<REG_NOTIFY_CHANGE_ATTRIBUTES> - -Notify if any attributes of a monitored key are changed [class -name or security descriptors]. - -=back - -C<$hEvent> is ignored unless C<$bAsync> is true. Otherwise, C<$hEvent> -is a handle to a Win32 I<event> that will be signaled when changes are -to be reported. - -If C<$bAsync> is true, then C<RegNotifyChangeKeyValue()> returns -immediately and uses C<$hEvent> to notify your process of changes. -If C<$bAsync> is false, then C<RegNotifyChangeKeyValue()> does -not return until there is a change to be notified of. - -This routine does not work with Registry keys on remote computers. - -=item RegOpenKey - -=item C<RegOpenKey( $hKey, $sSubKey, $ohSubKey )> - -This routine is meant only for compatibility with Windows version -3.1. Use C<RegOpenKeyEx()> instead. - -=item RegOpenKeyEx - -=item C<RegOpenKeyEx( $hKey, $sSubKey, $uOptions, $uAccess, $ohSubKey )> - -Opens an existing Registry key. Returns a true value if successful -and a false value [and sets C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$sSubKey> is the name of an existing subkey to be opened. -Can be C<""> or C<[]> to open an additional handle to the -key specified by C<$hKey>. - -C<$iOptions> is a numeric value containing bits that control options -used while opening the subkey. There are currently no supported -options so this parameter should be specified as C<0>. - -C<$iAccess> is a numeric mask of bits specifying what type of -access is desired when opening the new subkey. Should be a -combination of one or more of the following bit masks: - -=over - -=item C<KEY_ALL_ACCESS> - - KEY_READ | KEY_WRITE | KEY_CREATE_LINK - -=item C<KEY_READ> - - KEY_QUERY_VALUE | KEY_ENUMERATE_SUBKEYS | KEY_NOTIFY | STANDARD_RIGHTS_READ - -=item C<KEY_WRITE> - - KEY_SET_VALUE | KEY_CREATE_SUB_KEY | STANDARD_RIGHTS_WRITE - -=item C<KEY_QUERY_VALUE> - -=item C<KEY_SET_VALUE> - -=item C<KEY_ENUMERATE_SUB_KEYS> - -=item C<KEY_CREATE_SUB_KEY> - -=item C<KEY_NOTIFY> - -Allows you to use C<RegNotifyChangeKeyValue()> on the opened key. - -=item C<KEY_EXECUTE> - -Same as C<KEY_READ>. - -=item C<KEY_CREATE_LINK> - -Gives you permission to create a symbolic link like -C<HKEY_CLASSES_ROOT> and C<HKEY_CURRENT_USER>, though the method for -doing so is not documented [and probably requires use of the mostly -undocumented "native" routines, C<Nt*()> a.k.a. C<Zw*()>]. - -=back - -C<$phKey> will be set to the handle to be used to access the new subkey -if the call succeeds. - -=item RegQueryInfoKey - -=item C<RegQueryInfoKey( $hKey, $osClass, $iolClass, $pNull, $ocSubKeys, $olSubKey, $olSubClass, $ocValues, $olValName, $olValData, $olSecDesc, $opftTime )> - -Gets miscellaneous information about an open Registry key. -Returns a true value if successful and a false value [and -sets C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$sClass> will be set to the class name for the key. Can be -C<[]> if you don't care about the class. - -C<$plClass> initially specifies the [minimum] buffer size to be -allocated for C<$sClass> and will be set to the length of the -key's class name. See L<Buffer sizes> for more information. -You may omit this parameter to get the same effect as passing in -C<[]> for it. - -C<$pNull> is reserved for future use and should be passed as C<[]>. - -C<$pcSubKeys> will be set to the count of the number of subkeys -directly under this key. Can be C<[]>. - -C<$plSubKey> will be set to the length of the longest subkey name. -Can be C<[]>. - -C<$plSubClass> will be set to the length of the longest class name -used with an immediate subkey of this key. Can be C<[]>. - -C<$pcValues> will be set to the count of the number of values in -this key. Can be C<[]>. - -C<$plValName> will be set to the length of the longest value name -in this key. Can be C<[]>. - -C<$plValData> will be set to the length of the longest value data -in this key. Can be C<[]>. - -C<$plSecDesc> will be set to the length of this key's full security -descriptor. - -C<$pftTime> will be set to a C<FILETIME> structure packed -into a Perl string and indicating when this key was last changed. -Can be C<[]>. - -=item RegQueryMultipleValues - -=item C<RegQueryMultipleValues( $hKey, $ioarValueEnts, $icValueEnts, $opBuffer, $iolBuffer )> - -Allows you to use a single call to query several values from a single -open Registry key to maximize efficiency. Returns a true value if -successful and a false value [and sets C<$^E>/C<regLastError()>] on -failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$pValueEnts> should contain a list of C<VALENT> structures packed -into a single Perl string. Each C<VALENT> structure should have -the C<ve_valuename> entry [the first 4 bytes] pointing to a string -containing the name of a value stored in this key. The remaining -fields are set if the function succeeds. - -C<$cValueEnts> should contain the count of the number of C<VALENT> -structures contained in C<$pValueEnts>. - -C<$pBuffer> will be set to the data from all of the requested values -concatenated into a single Perl string. - -C<$plBuffer> initially specifies the [minimum] buffer size to be -allocated for C<$sBuffer> and will be set to the total length of -the data to be written to C<$sBuffer>. See L<Buffer sizes> for -more information. You may omit this parameter to get the same -effect as passing in C<[]> for it. - -Here is sample code to populate C<$pValueEnts>: - - # @ValueNames= ...list of value name strings...; - $cValueEnts= @ValueNames; - $pValueEnts= pack( " p x4 x4 x4 " x $cValueEnts, @ValueNames ); - -Here is sample code to retrieve the data type and data length -returned in C<$pValueEnts>: - - @Lengths= unpack( " x4 L x4 x4 " x $cValueEnts, $pValueEnts ); - @Types= unpack( " x4 x4 x4 L " x $cValueEnts, $pValueEnts ); - -Given the above, and assuming you haven't modified C<$sBuffer> since -the call, you can also extract the value data strings from C<$sBuffer> -by using the pointers returned in C<$pValueEnts>: - - @Data= unpack( join( "", map {" x4 x4 P$_ x4 "} @Lengths ), - $pValueEnts ); - -Much better is to use the lengths and extract directly from -C<$sBuffer> using C<unpack()> [or C<substr()>]: - - @Data= unpack( join("",map("P$_",@Lengths)), $sBuffer ); - -=item RegQueryValue - -=item C<RegQueryValue( $hKey, $sSubKey, $osValueData, $iolValueData )> - -This routine is meant only for compatibility with Windows version -3.1. Use C<RegQueryValueEx()> instead. This routine can only -query unamed values [a.k.a. "default values"], that is, values with -a name of C<"">. - -=item RegQueryValueEx - -=item C<RegQueryValueEx( $hKey, $sValueName, $pNull, $ouType, $opValueData, $iolValueData )> - -Lets you look up value data stored in an open Registry key by -specifying the value name. Returns a true value if successful -and a false value [and sets C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$sValueName> is the name of the value whose data you wish to -retrieve. - -C<$pNull> this parameter is reserved for future use and should be -specified as C<[]>. - -C<$piType> will be set to indicate what type of data is stored in -the named value. Will be set to a C<REG_*> value if the function -succeeds. - -C<$pValueData> will be set to the value data [packed into a Perl -string] that is stored in the named value. Can be C<[]> if you -don't care about the value data. - -C<$plValueData> initially specifies the [minimum] buffer size to be -allocated for C<$sValueData> and will be set to the size [always -in bytes] of the data to be written to C<$sValueData>, even if -C<$sValueData> is not successfully written to. See L<Buffer sizes> -for more information. - -=item RegReplaceKey - -=item C<RegReplaceKey( $hKey, $sSubKey, $sNewFile, $sOldFile )> - -Lets you replace an entire hive when the system is next booted. -Returns a true value if successful and a false value [and sets -C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key that has hive(s) -loaded in it. This must be C<HKEY_LOCAL_MACHINE>, -C<HKEY_USERS>, or a remote version of one of these from -a call to C<RegConnectRegistry()>. - -C<$sSubKey> is the name of the subkey of C<$hKey> whose hive -you wish to have replaced on the next reboot. - -C<$sNewFile> is the name of a file that will replace the existing -hive file when the system reboots. - -C<$sOldFile> is the file name to save the current hive file to -when the system reboots. - -C<$sNewFile> and C<$sOldFile> are interpretted relative to the -C<%SystemRoot%/System32/config> directory on the computer where -the C<$hKey> key resides [I think]. If either file is [would be] -on a FAT file system, then its name must not have an extension. - -You must have the C<SE_RESTORE_NAME> privilege to use this routine. - -=item RegRestoreKey - -=item C<RegRestoreKey( $hKey, $sFileName, $uFlags )> - -Reads in a hive file and copies its contents over an existing -Registry tree. Returns a true value if successful and a false -value [and sets C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$sFileName> is the name of the hive file to be read. For each -value and subkey in this file, a value or subkey will be added -or replaced in C<$hKey>. - -C<$uFlags> is usally C<0>. It can also be C<REG_WHOLE_HIVE_VOLATILE> -which, rather than copying the hive over the existing key, -replaces the existing key with a temporary, memory-only Registry -key and then copies the hive contents into it. This option only -works if C<$hKey> is C<HKEY_LOCAL_MACHINE>, C<HKEY_USERS>, or a -remote version of one of these from a call to C<RegConnectRegistry()>. - -C<RegRestoreKey> does I<not> delete values nor keys from the -existing Registry tree when there is no corresponding value/key -in the hive file. - -=item RegSaveKey - -=item C<RegSaveKey( $hKey, $sFileName, $pSecAttr )> - -Dumps any open Registry key and all of its subkeys and values into -a new hive file. Returns a true value if successful and a false -value [and sets C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$sFileName> is the name of the file that the Registry tree -should be saved to. It is interpretted relative to the -C<%SystemRoot%/System32/config> directory on the computer where -the C<$hKey> key resides. If C<$sFileName> is on a FAT file system, -then it must not have an extension. - -C<$pSecAttr> contains a C<SECURITY_ATTRIBUTES> structure that specifies -the permissions to be set on the new file that is created. This can -be C<[]>. - -You must have the C<SE_RESTORE_NAME> privilege to use this routine. - -=item RegSetKeySecurity - -=item C<RegSetKeySecurity( $hKey, $uSecInfo, $pSecDesc )> - -Sets [part of] the C<SECURITY_DESCRIPTOR> structure describing part -of the security for an open Registry key. Returns a true value if -successful and a false value [and sets C<$^E>/C<regLastError()>] on -failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$uSecInfo> is a numeric C<SECURITY_INFORMATION> value that -specifies which C<SECURITY_DESCRIPTOR> structure to set. Should -be C<OWNER_SECURITY_INFORMATION>, C<GROUP_SECURITY_INFORMATION>, -C<DACL_SECURITY_INFORMATION>, or C<SACL_SECURITY_INFORMATION> -or two or more of these bits combined using C<|>. - -C<$pSecDesc> contains the new C<SECURITY_DESCRIPTOR> structure -packed into a Perl string. - -=item RegSetValue - -=item C<RegSetValue( $hKey, $sSubKey, $uType, $sValueData, $lValueData )> - -This routine is meant only for compatibility with Windows version -3.1. Use C<RegSetValueEx()> instead. This routine can only -set unamed values [a.k.a. "default values"]. - -=item RegSetValueEx - -=item C<RegSetValueEx( $hKey, $sName, $uZero, $uType, $pData, $lData )> - -Adds or replaces a value in an open Registry key. Returns -a true value if successful and a false value [and sets -C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key [either C<HKEY_*> or from -a previous call]. - -C<$sName> is the name of the value to be set. - -C<$uZero> is reserved for future use and should be specified as C<0>. - -C<$uType> is the type of data stored in C<$pData>. It should -be a C<REG_*> value. - -C<$pData> is the value data packed into a Perl string. - -C<$lData> is the length of the value data that is stored in C<$pData>. -You will usually omit this parameter or pass in C<0> to have -C<length($pData)> used. In both of these cases, if C<$iType> is -C<REG_SZ> or C<REG_EXPAND_SZ>, C<RegSetValueEx()> will append a -trailing C<'\0'> to the end of C<$pData> [unless there is already -one]. - -=item RegUnLoadKey - -=item C<RegUnLoadKey( $hKey, $sSubKey )> - -Unloads a previously loaded hive file. That is, closes the -hive file then deletes the subkey that was providing access -to it. Returns a true value if successful and a false value -[and sets C<$^E>/C<regLastError()>] on failure. - -C<$hKey> is the handle to a Registry key that has hives -loaded in it. This must be C<HKEY_LOCAL_MACHINE>, C<HKEY_USERS>, -or a remote version of one of these from a call to -C<RegConnectRegistry()>. - -C<$sSubKey> is the name of the subkey whose hive you wish to -have unloaded. - -=item :FuncA - -The ASCII-specific function names. - -Each of these is identical to the version listed above without the -trailing "A": - - AbortSystemShutdownA InitiateSystemShutdownA - RegConnectRegistryA RegCreateKeyA RegCreateKeyExA - RegDeleteKeyA RegDeleteValueA RegEnumKeyA - RegEnumKeyExA RegEnumValueA RegLoadKeyA - RegOpenKeyA RegOpenKeyExA RegQueryInfoKeyA - RegQueryMultipleValuesA RegQueryValueA RegQueryValueExA - RegReplaceKeyA RegRestoreKeyA RegSaveKeyA - RegSetValueA RegSetValueExA RegUnLoadKeyA - -=item :FuncW - -The UNICODE-specific function names. These are the same as the -versions listed above without the trailing "W" except that string -parameters are UNICODE strings rather than ASCII strings, as -indicated. - -=item AbortSystemShutdownW - -=item C<AbortSystemShutdownW( $swComputerName )> - -C<$swComputerName> is UNICODE. - -=item InitiateSystemShutdownW - -=item C<InitiateSystemShutdownW( $swComputer, $swMessage, $uTimeoutSecs, $bForce, $bReboot )> - -C<$swComputer> and C<$swMessage> are UNICODE. - -=item RegConnectRegistryW - -=item C<RegConnectRegistryW( $swComputer, $hRootKey, $ohKey )> - -C<$swComputer> is UNICODE. - -=item RegCreateKeyW - -=item C<RegCreateKeyW( $hKey, $swSubKey, $ohSubKey )> - -C<$swSubKey> is UNICODE. - -=item RegCreateKeyExW - -=item C<RegCreateKeyExW( $hKey, $swSubKey, $uZero, $swClass, $uOpts, $uAccess, $pSecAttr, $ohNewKey, $ouDisp )> - -C<$swSubKey> and C<$swClass> are UNICODE. - -=item RegDeleteKeyW - -=item C<RegDeleteKeyW( $hKey, $swSubKey )> - -C<$swSubKey> is UNICODE. - -=item RegDeleteValueW - -=item C<RegDeleteValueW( $hKey, $swValueName )> - -C<$swValueName> is UNICODE. - -=item RegEnumKeyW - -=item C<RegEnumKeyW( $hKey, $uIndex, $oswName, $ilwNameSize )> - -C<$oswName> is UNICODE and C<$ilwNameSize> is measured as number of -C<WCHAR>s. - -=item RegEnumKeyExW - -=item C<RegEnumKeyExW( $hKey, $uIndex, $oswName, $iolwName, $pNull, $oswClass, $iolwClass, $opftLastWrite )> - -C<$swName> and C<$swClass> are UNICODE and C<$iolwName> and C<$iolwClass> -are measured as number of C<WCHAR>s. - -=item RegEnumValueW - -=item C<RegEnumValueW( $hKey, $uIndex, $oswName, $iolwName, $pNull, $ouType, $opData, $iolData )> - -C<$oswName> is UNICODE and C<$iolwName> is measured as number -of C<WCHAR>s. - -C<$opData> is UNICODE if C<$piType> is C<REG_SZ>, C<REG_EXPAND_SZ>, -or C<REG_MULTI_SZ>. Note that C<$iolData> is measured as number -of bytes even in these cases. - -=item RegLoadKeyW - -=item C<RegLoadKeyW( $hKey, $swSubKey, $swFileName )> - -C<$swSubKey> and C<$swFileName> are UNICODE. - -=item RegOpenKeyW - -=item C<RegOpenKeyW( $hKey, $swSubKey, $ohSubKey )> - -C<$swSubKey> is UNICODE. - -=item RegOpenKeyExW - -=item C<RegOpenKeyExW( $hKey, $swSubKey, $uOptions, $uAccess, $ohSubKey )> - -C<$swSubKey> is UNICODE. - -=item RegQueryInfoKeyW - -=item C<RegQueryInfoKeyW( $hKey, $oswClass, $iolwClass, $pNull, $ocSubKeys, $olwSubKey, $olwSubClass, $ocValues, $olwValName, $olValData, $olSecDesc, $opftTime )> - -C<$swClass> is UNICODE. C<$iolwClass>, C<$olwSubKey>, C<$olwSubClass>, -and C<$olwValName> are measured as number of C<WCHAR>s. Note that -C<$olValData> is measured as number of bytes. - -=item RegQueryMultipleValuesW - -=item C<RegQueryMultipleValuesW( $hKey, $ioarValueEnts, $icValueEnts, $opBuffer, $iolBuffer )> - -The C<ve_valuename> fields of the C<VALENT> [actually C<VALENTW>] -structures in C<$ioarValueEnts> are UNICODE. Values of type C<REG_SZ>, -C<REG_EXPAND_SZ>, and C<REG_MULTI_SZ> are written to C<$opBuffer> -in UNICODE. Note that C<$iolBuffer> and the C<ve_valuelen> fields -of the C<VALENT> [C<VALENTW>] structures are measured as number of -bytes. - -=item RegQueryValueW - -=item C<RegQueryValueW( $hKey, $swSubKey, $oswValueData, $iolValueData )> - -C<$swSubKey> and C<$oswValueData> are UNICODE. Note that -C<$iolValueData> is measured as number of bytes. - -=item RegQueryValueExW - -=item C<RegQueryValueExW( $hKey, $swName, $pNull, $ouType, $opData, $iolData )> - -C<$swName> is UNICODE. - -C<$opData> is UNICODE if C<$ouType> is C<REG_SZ>, C<REG_EXPAND_SZ>, -or C<REG_MULTI_SZ>. Note that C<$iolData> is measured as number of -bytes even in these cases. - -=item RegReplaceKeyW - -=item C<RegReplaceKeyW( $hKey, $swSubKey, $swNewFile, $swOldFile )> - -C<$swSubKey>, C<$swNewFile>, and C<$swOldFile> are UNICODE. - -=item RegRestoreKeyW - -=item C<RegRestoreKeyW( $hKey, $swFileName, $uFlags )> - -C<$swFileName> is UNICODE. - -=item RegSaveKeyW - -=item C<RegSaveKeyW( $hKey, $swFileName, $pSecAttr )> - -C<$swFileName> is UNICODE. - -=item RegSetValueW - -=item C<RegSetValueW( $hKey, $swSubKey, $uType, $swValueData, $lValueData )> - -C<$swSubKey> and C<$swValueData> are UNICODE. Note that -C<$lValueData> is measured as number of bytes even though -C<$swValueData> is always UNICODE. - -=item RegSetValueExW - -=item C<RegSetValueExW( $hKey, $swName, $uZero, $uType, $pData, $lData )> - -C<$swName> is UNICODE. - -C<$pData> is UNICODE if C<$uType> is C<REG_SZ>, C<REG_EXPAND_SZ>, -or C<REG_MULTI_SZ>. Note that C<$lData> is measured as number of -bytes even in these cases. - -=item RegUnLoadKeyW - -=item C<RegUnLoadKeyW( $hKey, $swSubKey )> - -C<$swSubKey> is UNICODE. - -=item :HKEY_ - -All C<HKEY_*> constants: - - HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_CURRENT_USER - HKEY_DYN_DATA HKEY_LOCAL_MACHINE HKEY_PERFORMANCE_DATA - HKEY_USERS - -=item :KEY_ - -All C<KEY_*> constants: - - KEY_QUERY_VALUE KEY_SET_VALUE KEY_CREATE_SUB_KEY - KEY_ENUMERATE_SUB_KEYS KEY_NOTIFY KEY_CREATE_LINK - KEY_READ KEY_WRITE KEY_EXECUTE - KEY_ALL_ACCESS - -=item :REG_ - -All C<REG_*> constants: - - REG_CREATED_NEW_KEY REG_OPENED_EXISTING_KEY - - REG_LEGAL_CHANGE_FILTER REG_NOTIFY_CHANGE_ATTRIBUTES - REG_NOTIFY_CHANGE_NAME REG_NOTIFY_CHANGE_LAST_SET - REG_NOTIFY_CHANGE_SECURITY REG_LEGAL_OPTION - - REG_OPTION_BACKUP_RESTORE REG_OPTION_CREATE_LINK - REG_OPTION_NON_VOLATILE REG_OPTION_OPEN_LINK - REG_OPTION_RESERVED REG_OPTION_VOLATILE - - REG_WHOLE_HIVE_VOLATILE REG_REFRESH_HIVE - REG_NO_LAZY_FLUSH - - REG_NONE REG_SZ - REG_EXPAND_SZ REG_BINARY - REG_DWORD REG_DWORD_LITTLE_ENDIAN - REG_DWORD_BIG_ENDIAN REG_LINK - REG_MULTI_SZ REG_RESOURCE_LIST - REG_FULL_RESOURCE_DESCRIPTOR REG_RESOURCE_REQUIREMENTS_LIST - -=item :ALL - -All of the above. - -=item :SE_ - -The strings for the following privilege names: - - SE_ASSIGNPRIMARYTOKEN_NAME SE_AUDIT_NAME - SE_BACKUP_NAME SE_CHANGE_NOTIFY_NAME - SE_CREATE_PAGEFILE_NAME SE_CREATE_PERMANENT_NAME - SE_CREATE_TOKEN_NAME SE_DEBUG_NAME - SE_INCREASE_QUOTA_NAME SE_INC_BASE_PRIORITY_NAME - SE_LOAD_DRIVER_NAME SE_LOCK_MEMORY_NAME - SE_MACHINE_ACCOUNT_NAME SE_PROF_SINGLE_PROCESS_NAME - SE_REMOTE_SHUTDOWN_NAME SE_RESTORE_NAME - SE_SECURITY_NAME SE_SHUTDOWN_NAME - SE_SYSTEMTIME_NAME SE_SYSTEM_ENVIRONMENT_NAME - SE_SYSTEM_PROFILE_NAME SE_TAKE_OWNERSHIP_NAME - SE_TCB_NAME SE_UNSOLICITED_INPUT_NAME - -It can be difficult to successfully build this module in a way -that makes these constants available. So some builds of this -module may not make them available. For such builds, trying -to export any of these constants will cause a fatal error. -For this reason, none of these symbols are currently included -in the C<":ALL"> grouping. - -=back - -=head2 The Win32API:: heirarchy - -This and the other Win32API:: modules are meant to expose the -nearly raw API calls so they can be used from Perl code in any -way they might be used from C code. This provides the following -advantages: - -=over - -=item Many modules can be written by people that don't have a C compiler. - -=item Encourages more module code to be written in Perl [not C]. - -Perl code is often much easier to inspect, debug, customize, and -enhance than XS code. - -=item Allows those already familiar with the Win32 API to get -off to a quick start. - -=item Provides an interactive tool for exploring even obscure -details of the Win32 API. - -It can be very useful to interactively explore ad-hoc calls into -parts of the Win32 API using: - - perl -de 0 - -=item Ensures that native Win32 data structures can be used. - -This allows maximum efficiency. It also allows data from one -module [for example, time or security information from the -C<Win32API::Registry> or C<Win32API::File> modules] to be used -with other modules [for example, C<Win32API::Time> and -C<Win32API::SecDesc>]. - -=item Provides a single version of the XS interface to each API -call where improvements can be collected. - -=back - -=head2 Buffer sizes - -For each parameter that specifies a buffer size, a value of C<0> -can be passed. For parameter that are pointers to buffer sizes, -you can also pass in C<NULL> by specifying an empty list reference, -C<[]>. Both of these cases will ensure that the variable has -I<some> buffer space allocated to it and pass in that buffer's -allocated size. Many of the calls indicate, via C<ERROR_MORE_DATA>, -that the buffer size was not sufficient and the F<Registry.xs> -code will automatically enlarge the buffer to the required size -and repeat the call. - -Numeric buffer sizes are used as minimum initial sizes for the -buffers. The larger of this size and the size of space already -allocated to the scalar will be passed to the underlying routine. -If that size was insufficient, and the underlying call provides -an easy method for determining the needed buffer size, then the -buffer will be enlarged and the call repeated as above. - -The underlying calls define buffer size parameter as unsigned, so -negative buffer sizes are treated as very large positive buffer -sizes which usually cause C<malloc()> to fail. - -To force the F<Registry.xs> code to pass in a specific value for -a buffer size, preceed the size with an equals sign via C<"=".>. -Buffer sizes that are passed in as strings starting with an equals -sign will have the equal sign stripped and the remainder of the string -interpretted as a number [via C's C<strtoul()> using only base 10] -which will be passed to the underlying routine [even if the allocated -buffer is actually larger]. The F<Registry.xs> code will enlarge the -buffer to the specified size, if needed, but will not enlarge the -buffer based on the underlying routine requesting more space. - -Some Reg*() calls may not currently set the buffer size when they -return C<ERROR_MORE_DATA>. But some that are not documented as -doing so, currently do so anyway. So the code assumes that any -routine I<might> do this and resizes any buffers and repeats the -call. We hope that eventually all routines will provide this -feature. - -When you use C<[]> for a buffer size, you can still find the -length of the data returned by using C<length($buffer)>. Note -that this length will be in bytes while a few of the buffer -sizes would have been in units of wide characters. - -Note that the RegQueryValueEx*() and RegEnumValue*() calls -will trim the trailing C<'\0'> [if present] from the returned data -values of type C<REG_SZ> or C<REG_EXPAND_SZ> but only if the -value data length parameter is omitted [or specified as C<[]>]. - -The RegSetValueEx*() calls will add a trailing C<'\0'> [if -missing] to the supplied data values of type C<REG_SZ> and -C<REG_EXPAND_SZ> but only if the value data length parameter -is omitted [or specified as C<0>]. - -=head2 Hungarian Notation - -The following abbreviations are used at the start of each parameter -name to hint at aspects of how the parameter is used. The prefix -is always in lower case and followed by a capital letter that starts -the descriptive part of the parameter name. Several of the following -abbreviations can be combined into a single prefix. - -Probably not all of these prefix notations are used by this module. -This document section may be included in any C<Win32API> module and -so covers some notations not used by this specific module. - -=over - -=item s - -A string. In C, a C<'\0'>-terminated C<char *>. In Perl, just a -string except that it will be truncated at the first C<"\0">, if -it contains one. - -=item sw - -A wide [UNICODE] string. In C, a C<L'\0'>-terminated C<WCHAR *>. -In Perl, a string that contains UNICODE data. You can convert a -string to UNICODE in Perl via: - - $string= "This is an example string"; - $unicode= pack( "S*", unpack("C*",$string), 0 ); - -Note how C<, 0> above causes an explicit C<L'\0'> to be added since -Perl's implicit C<'\0'> that it puts after each of its strings is not -wide enough to terminate a UNICODE string. So UNICODE strings are -different than regular strings in that the Perl version of a regular -string will not include the trialing C<'\0'> while the Perl version -of a UNICODE string must include the trailing C<L'\0'>. - -If a UNICODE string contains no non-ASCII characters, then you -can convert it back into a normal string via: - - $string= pack( "C*", unpack("S*",$unicode) ); - $string =~ s/\0$//; - -=item p - -A pointer to some buffer [usually containing some C<struct>]. In C, -a C<void *> or some other pointer type. In Perl, a string that is -usually manipulated using C<pack> and C<unpack>. The "p" is usually -followed by more prefix character(s) to indicate what type of data is -stored in the bufffer. - -=item a - -A packed array. In C, an array [usually of C<struct>s]. In Perl, a -string containing the packed data. The "a" is usually followed by -more prefix character(s) to indicate the data type of the elements. - -These packed arrays are also called "vectors" in places to avoid -confusion with Perl arrays. - -=item n - -A generic number. In C, any of the integer or floating point data -types. In Perl, a number; either an integer, unsigned, or double -[IV, UV, or NV, respectively]. Usually an integer. - -=item iv - -A signed integral value. In C, any of the signed integer data types. -In Perl, an integer [IV]. - -=item u - -An unsigned integral value. In C, any of the unsigned integer data -types. In Perl, an unsigned integer [UV]. - -=item d - -A floating-point number. In C, a C<float> or C<double> or, perhaps, -a C<long double>. In Perl, a double-precision floating-point number -[NV]. - -=item b - -A Boolean value. In C, any integer data type, though usually via -a type alias of C<bool> or C<BOOL>, containing either a 0 [false] or -non-zero [true] value. In Perl, a scalar containing a Boolean value -[C<0>, C<"">, or C<undef> for "false" and anything else for "true"]. - -=item c - -A count of items. In C, any integer data type. In Perl, an unsigned -integer [UV]. Usually used in conjunction with a "vector" parameter -[see L</a> above] to indicate the number of elements. - -=item l - -A length [in bytes]. In C, any integer data type. In Perl, an -unsigned integer [UV]. Usually used in conjunction with a "string" -or "pointer" parameter [see L</s> and L</p> above] to indicate the -buffer size or the size of the value stored in the buffer. - -For strings, there is no general rule as to whether the trailing -C<'\0'> is included in such sizes. For this reason, the C<Win32API> -modules follow the Perl rule of always allocating one extra byte -and reporting buffer sizes as being one smaller than allocated in -case the C<'\0'> is not included in the size. - -=item lw - -A length measured as number of UNICODE characters. In C, a count -of C<WCHAR>s. In Perl, an unsigned integer [UV] counting "shorts" -[see "s" and "S" in C<pack> and C<unpack>]. - -For UNICODE strings, the trailing C<L'\0'> may or may not be -included in a length so, again, we always allocate extra room -for one and don't report that extra space. - -=item h - -A handle. In C, a C<HANDLE> or more-specific handle data type. -In Perl, an unsigned integer [UV]. In C, these handles are often -actually some type of pointer, but Perl just treats them as opaque -numbers, as it should. This prefix is also used for other pointers -that are treated as integers in Perl code. - -=item r - -A record. In C, almost always a C<struct> or perhaps C<union>. Note -that C C<struct>s are rarely passed by value so the "r" is almost -always preceeded by a "p" or "a" [see L</p> and L</a> above]. For -the very rare unadorned "r", Perl stores the record in the same way -as a "pr", that is, in a string. For the very rare case where Perl -explicitly stores a pointer to the C<struct> rather than storing the -C<struct> directly in a Perl string, the prefix "pp" or "ppr" or even -"par" is used. - -=item sv - -=item rv - -=item hv - -=item av - -=item cv - -A Perl data type. Respectively, a scalar value [SV], a reference -[RV] [usually to a scalar], a hash [HV], a Perl array [AV], or a Perl -code reference [PVCV]. For the "hv", "av", and "cv" prefixes, a -leading "rv" is usually assumed. For a parameter to an XS subroutine, -a prefix of "sv" means the parameter is a scalar and so may be a string -or a number [or C<undef>] or even both at the same time. So "sv" -doesn't imply a leading "rv". - -=item Input or Output - -Whether a parameter is for input data, output data, or both is usually -not reflected by the data type prefix. In cases where this is not -obvious nor reflected in the parameter name proper, we may use the -following in front of the data type prefix. - -=over - -=item i - -An input parameter given to the API [usually omitted]. - -=item o - -An output-only parameter taken from the API. You should not get a -warning if such a parameter is C<undef> when you pass it into the -function. You should get an error if such a parameter is read-only. -You can [usually] pass in C<[]> for such a parameter to have the -parameter silently ignored. - -The output may be written directly into the Perl variable passed -to the subroutine, the same way the buffer parameter to Perl's -C<sysread()>. This method is often avoided in Perl because -the call then lacks any visual cue that some parameters are being -overwritten. But this method closely matches the C API which is -what we are trying to do. - -=item io - -Input given to the API then overwritten with output taken from the -API. You should get a warning [if B<-w> is in effect] if such a -parameter is C<undef> when you pass it into the function [unless it -is a buffer or buffer length parameter]. If the value is read-only, -then [for most parameters] the output is silently not written. This -is because it is often convenient to pass in read-only constants for -many such parameters. You can also usually pass in C<[]> for such -parameters. - -=back - -=item pp - -=item ppr - -=item par - -=item pap - -These are just unusual combinations of prefix characters described above. - -For each, a pointer is stored in a [4-byte] Perl string. You can -usually use C<unpack "P"> to access the real data from Perl. - -For "ppr" [and often for "pp"], the pointer points directly at a -C C<struct>. For "par", the pointer points to the first element -of a C [packed] array of C<struct>s. For "pap", the pointer points -to a C [packed] array of pointers to other things. - -=item ap - -Here we have a list of pointers packed into a single Perl string. - -=back - -=head1 BUGS - -The old ActiveState ports of Perl for Win32 [but not, ActivePerl, the -ActiveState distributions of standard Perl 5.004 and beyond] do not support -the tools for building extensions and so do not support this extension. - -No routines are provided for using the data returned in the C<FILETIME> -buffers. Those are in the C<Win32API::Time> module. - -No routines are provided for dealing with UNICODE data effectively. -See L</:FuncW> above for some simple-minded UNICODE methods. - -Parts of the module test will fail if used on a version of Perl -that does not yet set C<$^E> based on C<GetLastError()>. - -On NT 4.0 [at least], the RegEnum*() calls do not set the required -buffer sizes when returning C<ERROR_MORE_DATA> so this module will -not grow the buffers in such cases. C<Win32::TieRegistry> overcomes -this by using values from C<RegQueryInfoKey()> for buffer sizes in -RegEnum* calls. - -On NT 4.0 [at least], C<RegQueryInfoKey()> on C<HKEY_PERFORMANCE_DATA> -never succeeds. Also, C<RegQueryValueEx()> on C<HKEY_PERFORMANCE_DATA> -never returns the required buffer size. To access C<HKEY_PERFORMANCE_DATA> -you will need to keep growing the data buffer until the call succeeds. - -Because C<goto &subroutine> seems to be buggy under Win32 Perl, -it is not used in the stubs in F<Registry.pm>. - -=head1 AUTHOR - -Tye McQueen, tye@metronet.com, http://www.metronet.com/~tye/. - -=head1 SEE ALSO - -=over - -=item L<Win32::TieRegistry> - -=item L<Win32::Registry> - -=back - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/Win32API/Registry/cRegistry.pc b/Master/tlpkg/tlperl.old/lib/Win32API/Registry/cRegistry.pc deleted file mode 100644 index 9659d0c4361..00000000000 --- a/Master/tlpkg/tlperl.old/lib/Win32API/Registry/cRegistry.pc +++ /dev/null @@ -1,87 +0,0 @@ -# Generated by cRegistry_pc.cxx. -# Package Win32API::Registry with options: -# CPLUSPLUS => q[1] -# IFDEF => q[ /^SE_/ ? '__cplusplus' : /REG_/ ] -# IMPORT_LIST => [q[/._/], q[!/[a-z]/]] -# VALUES => { KEY_DELETE=>q[DELETE], KEY_READ_CONTROL=>q[READ_CONTROL], KEY_WRITE_OWNER=>q[WRITE_OWNER], KEY_SYNCHRONIZE=>q[SYNCHRONIZE], KEY_WRITE_DAC=>q[WRITE_DAC] } -# WRITE_PERL => q[1] -# Perl files eval'd: -# Registry.pm => last if /^\s*(bootstrap|XSLoader::load)\b/ -# C files included: -# Registry.xs => last if m#/[/*]\s*CONSTS_DEFINED\b|^\s*MODULE\b# -sub HKEY_CLASSES_ROOT () { 0x80000000 } -sub HKEY_CURRENT_CONFIG () { 0x80000005 } -sub HKEY_CURRENT_USER () { 0x80000001 } -sub HKEY_DYN_DATA () { 0x80000006 } -sub HKEY_LOCAL_MACHINE () { 0x80000002 } -sub HKEY_PERFORMANCE_DATA () { 0x80000004 } -sub HKEY_USERS () { 0x80000003 } -sub KEY_ALL_ACCESS () { 983103 } -sub KEY_CREATE_LINK () { 32 } -sub KEY_CREATE_SUB_KEY () { 4 } -sub KEY_DELETE () { 65536 } -sub KEY_ENUMERATE_SUB_KEYS () { 8 } -sub KEY_EXECUTE () { 131097 } -sub KEY_NOTIFY () { 16 } -sub KEY_QUERY_VALUE () { 1 } -sub KEY_READ () { 131097 } -sub KEY_READ_CONTROL () { 131072 } -sub KEY_SET_VALUE () { 2 } -sub KEY_SYNCHRONIZE () { 1048576 } -sub KEY_WRITE () { 131078 } -sub KEY_WRITE_DAC () { 262144 } -sub KEY_WRITE_OWNER () { 524288 } -sub REG_BINARY () { 3 } -sub REG_CREATED_NEW_KEY () { 1 } -sub REG_DWORD () { 4 } -sub REG_DWORD_BIG_ENDIAN () { 5 } -sub REG_DWORD_LITTLE_ENDIAN () { 4 } -sub REG_EXPAND_SZ () { 2 } -sub REG_FULL_RESOURCE_DESCRIPTOR () { 9 } -sub REG_LEGAL_CHANGE_FILTER () { 15 } -sub REG_LEGAL_OPTION () { 15 } -sub REG_LINK () { 6 } -sub REG_MULTI_SZ () { 7 } -sub REG_NONE () { 0 } -sub REG_NOTIFY_CHANGE_ATTRIBUTES () { 2 } -sub REG_NOTIFY_CHANGE_LAST_SET () { 4 } -sub REG_NOTIFY_CHANGE_NAME () { 1 } -sub REG_NOTIFY_CHANGE_SECURITY () { 8 } -sub REG_NO_LAZY_FLUSH () { 4 } -sub REG_OPENED_EXISTING_KEY () { 2 } -sub REG_OPTION_BACKUP_RESTORE () { 4 } -sub REG_OPTION_CREATE_LINK () { 2 } -sub REG_OPTION_NON_VOLATILE () { 0 } -sub REG_OPTION_OPEN_LINK () { 8 } -sub REG_OPTION_RESERVED () { 0 } -sub REG_OPTION_VOLATILE () { 1 } -sub REG_REFRESH_HIVE () { 2 } -sub REG_RESOURCE_LIST () { 8 } -sub REG_RESOURCE_REQUIREMENTS_LIST () { 10 } -sub REG_SZ () { 1 } -sub REG_WHOLE_HIVE_VOLATILE () { 1 } -sub SE_ASSIGNPRIMARYTOKEN_NAME () { 'SeAssignPrimaryTokenPrivilege' } -sub SE_AUDIT_NAME () { 'SeAuditPrivilege' } -sub SE_BACKUP_NAME () { 'SeBackupPrivilege' } -sub SE_CHANGE_NOTIFY_NAME () { 'SeChangeNotifyPrivilege' } -sub SE_CREATE_PAGEFILE_NAME () { 'SeCreatePagefilePrivilege' } -sub SE_CREATE_PERMANENT_NAME () { 'SeCreatePermanentPrivilege' } -sub SE_CREATE_TOKEN_NAME () { 'SeCreateTokenPrivilege' } -sub SE_DEBUG_NAME () { 'SeDebugPrivilege' } -sub SE_INCREASE_QUOTA_NAME () { 'SeIncreaseQuotaPrivilege' } -sub SE_INC_BASE_PRIORITY_NAME () { 'SeIncreaseBasePriorityPrivilege' } -sub SE_LOAD_DRIVER_NAME () { 'SeLoadDriverPrivilege' } -sub SE_LOCK_MEMORY_NAME () { 'SeLockMemoryPrivilege' } -sub SE_MACHINE_ACCOUNT_NAME () { 'SeMachineAccountPrivilege' } -sub SE_PROF_SINGLE_PROCESS_NAME () { 'SeProfileSingleProcessPrivilege' } -sub SE_REMOTE_SHUTDOWN_NAME () { 'SeRemoteShutdownPrivilege' } -sub SE_RESTORE_NAME () { 'SeRestorePrivilege' } -sub SE_SECURITY_NAME () { 'SeSecurityPrivilege' } -sub SE_SHUTDOWN_NAME () { 'SeShutdownPrivilege' } -sub SE_SYSTEMTIME_NAME () { 'SeSystemtimePrivilege' } -sub SE_SYSTEM_ENVIRONMENT_NAME () { 'SeSystemEnvironmentPrivilege' } -sub SE_SYSTEM_PROFILE_NAME () { 'SeSystemProfilePrivilege' } -sub SE_TAKE_OWNERSHIP_NAME () { 'SeTakeOwnershipPrivilege' } -sub SE_TCB_NAME () { 'SeTcbPrivilege' } -sub SE_UNSOLICITED_INPUT_NAME () { 'SeUnsolicitedInputPrivilege' } -1; diff --git a/Master/tlpkg/tlperl.old/lib/XSLoader.pm b/Master/tlpkg/tlperl.old/lib/XSLoader.pm deleted file mode 100644 index 34172dcfa70..00000000000 --- a/Master/tlpkg/tlperl.old/lib/XSLoader.pm +++ /dev/null @@ -1,356 +0,0 @@ -# Generated from XSLoader.pm.PL (resolved %Config::Config value) - -package XSLoader; - -$VERSION = "0.06"; - -#use strict; - -# 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; - -sub load { - package DynaLoader; - - die q{XSLoader::load('Your::Module', $Your::Module::VERSION)} unless @_; - - 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; - @DynaLoader::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(@DynaLoader::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(@DynaLoader::dl_modules, $module); # record loaded module - - boot: - my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file); - - # See comment block above - push(@DynaLoader::dl_shared_objects, $file); # record files loaded - return &$xs(@_); - - retry: - my $bootstrap_inherit = DynaLoader->can('bootstrap_inherit') || - XSLoader->can('bootstrap_inherit'); - goto &$bootstrap_inherit; -} - -# Versions of DynaLoader prior to 5.6.0 don't have this function. -sub bootstrap_inherit { - package DynaLoader; - - my $module = $_[0]; - local *DynaLoader::isa = *{"$module\::ISA"}; - local @DynaLoader::isa = (@DynaLoader::isa, 'DynaLoader'); - # Cannot goto due to delocalization. Will report errors on a wrong line? - require DynaLoader; - DynaLoader::bootstrap(@_); -} - -1; - - -__END__ - -=head1 NAME - -XSLoader - Dynamically load C libraries into Perl code - -=head1 VERSION - -Version 0.06 - -=head1 SYNOPSIS - - package YourPackage; - use XSLoader; - - XSLoader::load 'YourPackage', $YourPackage::VERSION; - -=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 a more complicated interface, see L<DynaLoader>. Many (most) -features of C<DynaLoader> are not implemented in C<XSLoader>, like for -example the C<dl_load_flags>, not honored by C<XSLoader>. - -=head2 Migration from C<DynaLoader> - -A typical module using L<DynaLoader|DynaLoader> starts like this: - - package YourPackage; - require DynaLoader; - - our @ISA = qw( OnePackage OtherPackage DynaLoader ); - our $VERSION = '0.01'; - bootstrap YourPackage $VERSION; - -Change this to - - package YourPackage; - use XSLoader; - - our @ISA = qw( OnePackage OtherPackage ); - our $VERSION = '0.01'; - XSLoader::load 'YourPackage', $VERSION; - -In other words: replace C<require DynaLoader> by C<use XSLoader>, remove -C<DynaLoader> from C<@ISA>, change C<bootstrap> by C<XSLoader::load>. Do not -forget to quote the name of your package on the C<XSLoader::load> line, -and add comma (C<,>) before the arguments (C<$VERSION> above). - -Of course, if C<@ISA> contained only C<DynaLoader>, there is no need to have -the C<@ISA> assignment at all; moreover, if instead of C<our> one uses the -more backward-compatible - - use vars qw($VERSION @ISA); - -one can remove this reference to C<@ISA> together with the C<@ISA> assignment. - -If no C<$VERSION> was specified on the C<bootstrap> line, the last line becomes - - XSLoader::load 'YourPackage'; - -=head2 Backward compatible boilerplate - -If you want to have your cake and eat it too, you need a more complicated -boilerplate. - - package YourPackage; - use vars qw($VERSION @ISA); - - @ISA = qw( OnePackage OtherPackage ); - $VERSION = '0.01'; - eval { - require XSLoader; - XSLoader::load('YourPackage', $VERSION); - 1; - } or do { - require DynaLoader; - push @ISA, 'DynaLoader'; - bootstrap YourPackage $VERSION; - }; - -The parentheses about C<XSLoader::load()> arguments are needed since we replaced -C<use XSLoader> by C<require>, so the compiler does not know that a function -C<XSLoader::load()> is present. - -This boilerplate uses the low-overhead C<XSLoader> if present; if used with -an antic Perl which has no C<XSLoader>, it falls back to using C<DynaLoader>. - -=head1 Order of initialization: early load() - -I<Skip this section if the XSUB functions are supposed to be called from other -modules only; read it only if you call your XSUBs from the code in your module, -or have a C<BOOT:> section in your XS file (see L<perlxs/"The BOOT: Keyword">). -What is described here is equally applicable to the L<DynaLoader|DynaLoader> -interface.> - -A sufficiently complicated module using XS would have both Perl code (defined -in F<YourPackage.pm>) and XS code (defined in F<YourPackage.xs>). If this -Perl code makes calls into this XS code, and/or this XS code makes calls to -the Perl code, one should be careful with the order of initialization. - -The call to C<XSLoader::load()> (or C<bootstrap()>) has three side effects: - -=over - -=item * - -if C<$VERSION> was specified, a sanity check is done to ensure that the -versions of the F<.pm> and the (compiled) F<.xs> parts are compatible; - -=item * - -the XSUBs are made accessible from Perl; - -=item * - -if a C<BOOT:> section was present in the F<.xs> file, the code there is called. - -=back - -Consequently, if the code in the F<.pm> file makes calls to these XSUBs, it is -convenient to have XSUBs installed before the Perl code is defined; for -example, this makes prototypes for XSUBs visible to this Perl code. -Alternatively, if the C<BOOT:> section makes calls to Perl functions (or -uses Perl variables) defined in the F<.pm> file, they must be defined prior to -the call to C<XSLoader::load()> (or C<bootstrap()>). - -The first situation being much more frequent, it makes sense to rewrite the -boilerplate as - - package YourPackage; - use XSLoader; - use vars qw($VERSION @ISA); - - BEGIN { - @ISA = qw( OnePackage OtherPackage ); - $VERSION = '0.01'; - - # Put Perl code used in the BOOT: section here - - XSLoader::load 'YourPackage', $VERSION; - } - - # Put Perl code making calls into XSUBs here - -=head2 The most hairy case - -If the interdependence of your C<BOOT:> section and Perl code is -more complicated than this (e.g., the C<BOOT:> section makes calls to Perl -functions which make calls to XSUBs with prototypes), get rid of the C<BOOT:> -section altogether. Replace it with a function C<onBOOT()>, and call it like -this: - - package YourPackage; - use XSLoader; - use vars qw($VERSION @ISA); - - BEGIN { - @ISA = qw( OnePackage OtherPackage ); - $VERSION = '0.01'; - XSLoader::load 'YourPackage', $VERSION; - } - - # Put Perl code used in onBOOT() function here; calls to XSUBs are - # prototype-checked. - - onBOOT; - - # Put Perl initialization code assuming that XS is initialized here - - -=head1 DIAGNOSTICS - -=over 4 - -=item Can't find '%s' symbol in %s - -B<(F)> The bootstrap symbol could not be found in the extension module. - -=item Can't load '%s' for module %s: %s - -B<(F)> The loading or initialisation of the extension module failed. -The detailed error follows. - -=item Undefined symbols present after loading %s: %s - -B<(W)> As the message says, some symbols stay undefined although the -extension module was correctly loaded and initialised. The list of undefined -symbols follows. - -=item XSLoader::load('Your::Module', $Your::Module::VERSION) - -B<(F)> You tried to invoke C<load()> without any argument. You must supply -a module name, and optionally its version. - -=back - - -=head1 LIMITATIONS - -To reduce the overhead as much as possible, only one possible location -is checked to find the extension DLL (this location is where C<make install> -would put the DLL). If not found, the search for the DLL is transparently -delegated to C<DynaLoader>, which looks for the DLL along the C<@INC> list. - -In particular, this is applicable to the structure of C<@INC> used for testing -not-yet-installed extensions. This means that running uninstalled extensions -may have much more overhead than running the same extensions after -C<make install>. - - -=head1 BUGS - -Please report any bugs or feature requests via the perlbug(1) utility. - - -=head1 SEE ALSO - -L<DynaLoader> - - -=head1 AUTHORS - -Ilya Zakharevich originally extracted C<XSLoader> from C<DynaLoader>. - -CPAN version is currently maintained by SE<eacute>bastien Aperghis-Tramoni -E<lt>sebastien@aperghis.netE<gt> - -Previous maintainer was Michael G Schwern <schwern@pobox.com> - - -=head1 COPYRIGHT - -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/tlpkg/tlperl.old/lib/attributes.pm b/Master/tlpkg/tlperl.old/lib/attributes.pm deleted file mode 100644 index 714cb267218..00000000000 --- a/Master/tlpkg/tlperl.old/lib/attributes.pm +++ /dev/null @@ -1,418 +0,0 @@ -package attributes; - -our $VERSION = 0.06; - -@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 - -B<5.005 threads only! The use of the "locked" attribute currently -only makes sense if you are using the deprecated "Perl 5.005 threads" -implementation of threads.> - -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 is 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/tlpkg/tlperl.old/lib/auto/B/B.bs b/Master/tlpkg/tlperl.old/lib/auto/B/B.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/B/B.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/B/B.dll b/Master/tlpkg/tlperl.old/lib/auto/B/B.dll Binary files differdeleted file mode 100755 index 02ecf851c22..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/B/B.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/B/C/C.bs b/Master/tlpkg/tlperl.old/lib/auto/B/C/C.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/B/C/C.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/B/C/C.dll b/Master/tlpkg/tlperl.old/lib/auto/B/C/C.dll Binary files differdeleted file mode 100755 index 0de9e53ba33..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/B/C/C.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Cwd/Cwd.bs b/Master/tlpkg/tlperl.old/lib/auto/Cwd/Cwd.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Cwd/Cwd.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Cwd/Cwd.dll b/Master/tlpkg/tlperl.old/lib/auto/Cwd/Cwd.dll Binary files differdeleted file mode 100755 index 67f6d7baa57..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Cwd/Cwd.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Data/Dumper/Dumper.bs b/Master/tlpkg/tlperl.old/lib/auto/Data/Dumper/Dumper.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Data/Dumper/Dumper.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Data/Dumper/Dumper.dll b/Master/tlpkg/tlperl.old/lib/auto/Data/Dumper/Dumper.dll Binary files differdeleted file mode 100755 index 9b99b3c3568..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Data/Dumper/Dumper.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Digest/MD5/MD5.bs b/Master/tlpkg/tlperl.old/lib/auto/Digest/MD5/MD5.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Digest/MD5/MD5.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Digest/MD5/MD5.dll b/Master/tlpkg/tlperl.old/lib/auto/Digest/MD5/MD5.dll Binary files differdeleted file mode 100755 index 72ba4df2758..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Digest/MD5/MD5.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/DynaLoader/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/DynaLoader/autosplit.ix deleted file mode 100644 index d7605efa074..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/DynaLoader/dl_expandspec.al b/Master/tlpkg/tlperl.old/lib/auto/DynaLoader/dl_expandspec.al deleted file mode 100644 index 0bea19a3e4d..00000000000 --- a/Master/tlpkg/tlperl.old/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 377 "../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/tlpkg/tlperl.old/lib/auto/DynaLoader/dl_find_symbol_anywhere.al b/Master/tlpkg/tlperl.old/lib/auto/DynaLoader/dl_find_symbol_anywhere.al deleted file mode 100644 index 2232454ba69..00000000000 --- a/Master/tlpkg/tlperl.old/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 403 "../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/tlpkg/tlperl.old/lib/auto/DynaLoader/dl_findfile.al b/Master/tlpkg/tlperl.old/lib/auto/DynaLoader/dl_findfile.al deleted file mode 100644 index 9f8df39d00c..00000000000 --- a/Master/tlpkg/tlperl.old/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 269 "../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/tlpkg/tlperl.old/lib/auto/Encode/Byte/Byte.bs b/Master/tlpkg/tlperl.old/lib/auto/Encode/Byte/Byte.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Encode/Byte/Byte.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Encode/Byte/Byte.dll b/Master/tlpkg/tlperl.old/lib/auto/Encode/Byte/Byte.dll Binary files differdeleted file mode 100755 index 88474ccb046..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Encode/Byte/Byte.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Encode/Encode.bs b/Master/tlpkg/tlperl.old/lib/auto/Encode/Encode.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Encode/Encode.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Encode/Encode.dll b/Master/tlpkg/tlperl.old/lib/auto/Encode/Encode.dll Binary files differdeleted file mode 100755 index 69c8ebf8acb..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Encode/Encode.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Encode/Symbol/Symbol.bs b/Master/tlpkg/tlperl.old/lib/auto/Encode/Symbol/Symbol.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Encode/Symbol/Symbol.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Encode/Symbol/Symbol.dll b/Master/tlpkg/tlperl.old/lib/auto/Encode/Symbol/Symbol.dll Binary files differdeleted file mode 100755 index 64df4071134..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Encode/Symbol/Symbol.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Encode/Unicode/Unicode.bs b/Master/tlpkg/tlperl.old/lib/auto/Encode/Unicode/Unicode.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Encode/Unicode/Unicode.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Encode/Unicode/Unicode.dll b/Master/tlpkg/tlperl.old/lib/auto/Encode/Unicode/Unicode.dll Binary files differdeleted file mode 100755 index 71a757a6b64..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Encode/Unicode/Unicode.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Fcntl/Fcntl.bs b/Master/tlpkg/tlperl.old/lib/auto/Fcntl/Fcntl.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Fcntl/Fcntl.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Fcntl/Fcntl.dll b/Master/tlpkg/tlperl.old/lib/auto/Fcntl/Fcntl.dll Binary files differdeleted file mode 100755 index d053a295a71..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Fcntl/Fcntl.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/File/Glob/Glob.bs b/Master/tlpkg/tlperl.old/lib/auto/File/Glob/Glob.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/File/Glob/Glob.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/File/Glob/Glob.dll b/Master/tlpkg/tlperl.old/lib/auto/File/Glob/Glob.dll Binary files differdeleted file mode 100755 index 9cd3d822949..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/File/Glob/Glob.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/IO/IO.bs b/Master/tlpkg/tlperl.old/lib/auto/IO/IO.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/IO/IO.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/IO/IO.dll b/Master/tlpkg/tlperl.old/lib/auto/IO/IO.dll Binary files differdeleted file mode 100755 index 86276c177d9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/IO/IO.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/List/Util/Util.bs b/Master/tlpkg/tlperl.old/lib/auto/List/Util/Util.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/List/Util/Util.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/List/Util/Util.dll b/Master/tlpkg/tlperl.old/lib/auto/List/Util/Util.dll Binary files differdeleted file mode 100755 index 238b1648bea..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/List/Util/Util.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Opcode/Opcode.bs b/Master/tlpkg/tlperl.old/lib/auto/Opcode/Opcode.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Opcode/Opcode.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Opcode/Opcode.dll b/Master/tlpkg/tlperl.old/lib/auto/Opcode/Opcode.dll Binary files differdeleted file mode 100755 index d44ff0069b8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Opcode/Opcode.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/POSIX/POSIX.bs b/Master/tlpkg/tlperl.old/lib/auto/POSIX/POSIX.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/POSIX/POSIX.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/POSIX/POSIX.dll b/Master/tlpkg/tlperl.old/lib/auto/POSIX/POSIX.dll Binary files differdeleted file mode 100755 index 49bdaee0917..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/POSIX/POSIX.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/POSIX/SigAction/flags.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/SigAction/flags.al deleted file mode 100644 index 800cdd9a2b2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/POSIX/SigAction/flags.al +++ /dev/null @@ -1,9 +0,0 @@ -# NOTE: Derived from ..\..\lib\POSIX.pm. -# Changes made here will be lost when autosplit is run again. -# See AutoSplit.pm. -package POSIX::SigAction; - -#line 964 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\SigAction\flags.al)" -sub flags { $_[0]->{FLAGS} = $_[1] if @_ > 1; $_[0]->{FLAGS} }; -# end of POSIX::SigAction::flags -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/POSIX/SigAction/handler.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/SigAction/handler.al deleted file mode 100644 index f2a3994bdf0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/POSIX/SigAction/handler.al +++ /dev/null @@ -1,11 +0,0 @@ -# NOTE: Derived from ..\..\lib\POSIX.pm. -# Changes made here will be lost when autosplit is run again. -# See AutoSplit.pm. -package POSIX::SigAction; - -#line 960 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\SigAction\handler.al)" -package POSIX::SigAction; - -sub handler { $_[0]->{HANDLER} = $_[1] if @_ > 1; $_[0]->{HANDLER} }; -# end of POSIX::SigAction::handler -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/POSIX/SigAction/mask.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/SigAction/mask.al deleted file mode 100644 index e5c240eea1b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/POSIX/SigAction/mask.al +++ /dev/null @@ -1,9 +0,0 @@ -# NOTE: Derived from ..\..\lib\POSIX.pm. -# Changes made here will be lost when autosplit is run again. -# See AutoSplit.pm. -package POSIX::SigAction; - -#line 963 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\SigAction\mask.al)" -sub mask { $_[0]->{MASK} = $_[1] if @_ > 1; $_[0]->{MASK} }; -# end of POSIX::SigAction::mask -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/POSIX/SigAction/safe.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/SigAction/safe.al deleted file mode 100644 index bb27883beae..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/POSIX/SigAction/safe.al +++ /dev/null @@ -1,9 +0,0 @@ -# NOTE: Derived from ..\..\lib\POSIX.pm. -# Changes made here will be lost when autosplit is run again. -# See AutoSplit.pm. -package POSIX::SigAction; - -#line 965 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\SigAction\safe.al)" -sub safe { $_[0]->{SAFE} = $_[1] if @_ > 1; $_[0]->{SAFE} }; -1; -# end of POSIX::SigAction::safe diff --git a/Master/tlpkg/tlperl.old/lib/auto/POSIX/abs.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/abs.al deleted file mode 100644 index 89999433d53..00000000000 --- a/Master/tlpkg/tlperl.old/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 398 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/alarm.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/alarm.al deleted file mode 100644 index e1c864ed8e0..00000000000 --- a/Master/tlpkg/tlperl.old/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 615 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/assert.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/assert.al deleted file mode 100644 index b3bce100406..00000000000 --- a/Master/tlpkg/tlperl.old/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 80 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/atan2.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/atan2.al deleted file mode 100644 index 9482e3cff23..00000000000 --- a/Master/tlpkg/tlperl.old/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 145 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/atexit.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/atexit.al deleted file mode 100644 index b0fdf7e97cf..00000000000 --- a/Master/tlpkg/tlperl.old/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 403 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/atof.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/atof.al deleted file mode 100644 index fc1d1cef431..00000000000 --- a/Master/tlpkg/tlperl.old/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 407 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/atoi.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/atoi.al deleted file mode 100644 index 5eef246231b..00000000000 --- a/Master/tlpkg/tlperl.old/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 411 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/atol.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/atol.al deleted file mode 100644 index e6fc6869a1a..00000000000 --- a/Master/tlpkg/tlperl.old/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 415 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/POSIX/autosplit.ix deleted file mode 100644 index 8ecf455bb80..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/POSIX/autosplit.ix +++ /dev/null @@ -1,159 +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 fsync ; -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 ; -package POSIX::SigAction; -sub handler ; -sub mask ; -sub flags ; -sub safe ; -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/POSIX/bsearch.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/bsearch.al deleted file mode 100644 index 4acc59b5a7d..00000000000 --- a/Master/tlpkg/tlperl.old/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 419 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/calloc.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/calloc.al deleted file mode 100644 index 776029eff29..00000000000 --- a/Master/tlpkg/tlperl.old/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 423 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/chdir.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/chdir.al deleted file mode 100644 index 1bddab213d6..00000000000 --- a/Master/tlpkg/tlperl.old/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 620 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/chmod.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/chmod.al deleted file mode 100644 index 8fc0d5a5e0b..00000000000 --- a/Master/tlpkg/tlperl.old/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 561 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/chown.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/chown.al deleted file mode 100644 index ca945bd855d..00000000000 --- a/Master/tlpkg/tlperl.old/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 625 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\chown.al)" -sub chown { - usage "chown(uid, gid, filename)" if @_ != 3; - CORE::chown($_[0], $_[1], $_[2]); -} - -# end of POSIX::chown -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/POSIX/clearerr.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/clearerr.al deleted file mode 100644 index c360043abf9..00000000000 --- a/Master/tlpkg/tlperl.old/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 225 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/closedir.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/closedir.al deleted file mode 100644 index 16ae1cd4f76..00000000000 --- a/Master/tlpkg/tlperl.old/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 97 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/cos.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/cos.al deleted file mode 100644 index ee01c091b27..00000000000 --- a/Master/tlpkg/tlperl.old/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 150 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/creat.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/creat.al deleted file mode 100644 index 2d1cfb7d55d..00000000000 --- a/Master/tlpkg/tlperl.old/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 125 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/div.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/div.al deleted file mode 100644 index 4c751314da0..00000000000 --- a/Master/tlpkg/tlperl.old/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 427 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\div.al)" -sub div { - unimpl "div() is C-specific, use /, % and int instead"; -} - -# end of POSIX::div -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/POSIX/errno.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/errno.al deleted file mode 100644 index c57abdc4c3b..00000000000 --- a/Master/tlpkg/tlperl.old/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 120 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/execl.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/execl.al deleted file mode 100644 index 3ffc4f5a671..00000000000 --- a/Master/tlpkg/tlperl.old/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 630 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/execle.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/execle.al deleted file mode 100644 index ec7e12da909..00000000000 --- a/Master/tlpkg/tlperl.old/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 634 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/execlp.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/execlp.al deleted file mode 100644 index a9e32524839..00000000000 --- a/Master/tlpkg/tlperl.old/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 638 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/execv.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/execv.al deleted file mode 100644 index 1e6f20bba77..00000000000 --- a/Master/tlpkg/tlperl.old/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 642 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/execve.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/execve.al deleted file mode 100644 index ae23c53ea77..00000000000 --- a/Master/tlpkg/tlperl.old/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 646 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/execvp.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/execvp.al deleted file mode 100644 index 88d5dd6764e..00000000000 --- a/Master/tlpkg/tlperl.old/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 650 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/exit.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/exit.al deleted file mode 100644 index d7806b3f4db..00000000000 --- a/Master/tlpkg/tlperl.old/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 431 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/exp.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/exp.al deleted file mode 100644 index 251dc740eaf..00000000000 --- a/Master/tlpkg/tlperl.old/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 155 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fabs.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fabs.al deleted file mode 100644 index ebe714729c2..00000000000 --- a/Master/tlpkg/tlperl.old/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 160 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fclose.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fclose.al deleted file mode 100644 index f662ef7cda6..00000000000 --- a/Master/tlpkg/tlperl.old/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 229 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fcntl.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fcntl.al deleted file mode 100644 index bf6ec04fb4c..00000000000 --- a/Master/tlpkg/tlperl.old/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 130 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fdopen.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fdopen.al deleted file mode 100644 index 392f8e27fbf..00000000000 --- a/Master/tlpkg/tlperl.old/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 233 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/feof.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/feof.al deleted file mode 100644 index 4c8b5ea37af..00000000000 --- a/Master/tlpkg/tlperl.old/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 237 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/ferror.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/ferror.al deleted file mode 100644 index 6ec8cccb11b..00000000000 --- a/Master/tlpkg/tlperl.old/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 289 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fflush.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fflush.al deleted file mode 100644 index 0ba6d1416f0..00000000000 --- a/Master/tlpkg/tlperl.old/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 293 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fgetc.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fgetc.al deleted file mode 100644 index f89a6f86334..00000000000 --- a/Master/tlpkg/tlperl.old/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 241 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fgetpos.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fgetpos.al deleted file mode 100644 index 7583bbf3da6..00000000000 --- a/Master/tlpkg/tlperl.old/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 297 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fgets.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fgets.al deleted file mode 100644 index 7edcffdd192..00000000000 --- a/Master/tlpkg/tlperl.old/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 245 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fileno.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fileno.al deleted file mode 100644 index 45f0908329c..00000000000 --- a/Master/tlpkg/tlperl.old/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 249 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fopen.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fopen.al deleted file mode 100644 index 795f272b2bb..00000000000 --- a/Master/tlpkg/tlperl.old/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 253 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fork.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fork.al deleted file mode 100644 index cb0ee7aaf13..00000000000 --- a/Master/tlpkg/tlperl.old/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 654 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fprintf.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fprintf.al deleted file mode 100644 index 6ac5cb6a065..00000000000 --- a/Master/tlpkg/tlperl.old/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 257 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fputc.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fputc.al deleted file mode 100644 index 71a3b2307bb..00000000000 --- a/Master/tlpkg/tlperl.old/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 261 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fputs.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fputs.al deleted file mode 100644 index 5cc9cdc175b..00000000000 --- a/Master/tlpkg/tlperl.old/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 265 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fread.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fread.al deleted file mode 100644 index a2f731a784c..00000000000 --- a/Master/tlpkg/tlperl.old/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 269 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/free.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/free.al deleted file mode 100644 index 71eff3059c3..00000000000 --- a/Master/tlpkg/tlperl.old/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 436 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/freopen.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/freopen.al deleted file mode 100644 index 31e08a2a889..00000000000 --- a/Master/tlpkg/tlperl.old/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 273 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fscanf.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fscanf.al deleted file mode 100644 index c5a5e08217b..00000000000 --- a/Master/tlpkg/tlperl.old/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 277 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fseek.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fseek.al deleted file mode 100644 index 0a591cca259..00000000000 --- a/Master/tlpkg/tlperl.old/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 281 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fsetpos.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fsetpos.al deleted file mode 100644 index 311027b54ea..00000000000 --- a/Master/tlpkg/tlperl.old/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 301 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fstat.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fstat.al deleted file mode 100644 index 084979716d0..00000000000 --- a/Master/tlpkg/tlperl.old/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 566 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fsync.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fsync.al deleted file mode 100644 index c8038d1d350..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/POSIX/fsync.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 285 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\fsync.al)" -sub fsync { - redef "IO::Handle::sync()"; -} - -# end of POSIX::fsync -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/POSIX/ftell.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/ftell.al deleted file mode 100644 index 1d3490c6033..00000000000 --- a/Master/tlpkg/tlperl.old/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 305 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/fwrite.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/fwrite.al deleted file mode 100644 index 1099587edbd..00000000000 --- a/Master/tlpkg/tlperl.old/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 309 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getc.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getc.al deleted file mode 100644 index 2ccc28cdf43..00000000000 --- a/Master/tlpkg/tlperl.old/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 313 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getchar.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getchar.al deleted file mode 100644 index 930386f6827..00000000000 --- a/Master/tlpkg/tlperl.old/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 318 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getegid.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getegid.al deleted file mode 100644 index 61c0942023f..00000000000 --- a/Master/tlpkg/tlperl.old/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 659 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getenv.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getenv.al deleted file mode 100644 index c6fec0ca34b..00000000000 --- a/Master/tlpkg/tlperl.old/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 440 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/geteuid.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/geteuid.al deleted file mode 100644 index 710491ebcc3..00000000000 --- a/Master/tlpkg/tlperl.old/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 664 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getgid.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getgid.al deleted file mode 100644 index 7cd6164fb43..00000000000 --- a/Master/tlpkg/tlperl.old/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 669 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getgrgid.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getgrgid.al deleted file mode 100644 index 550e75a69f3..00000000000 --- a/Master/tlpkg/tlperl.old/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 135 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getgrnam.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getgrnam.al deleted file mode 100644 index a480731586c..00000000000 --- a/Master/tlpkg/tlperl.old/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 140 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getgroups.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getgroups.al deleted file mode 100644 index 5fd0d9d3aea..00000000000 --- a/Master/tlpkg/tlperl.old/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 674 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getlogin.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getlogin.al deleted file mode 100644 index 55bcb4ee9fb..00000000000 --- a/Master/tlpkg/tlperl.old/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 680 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getpgrp.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getpgrp.al deleted file mode 100644 index ef0425b7b7f..00000000000 --- a/Master/tlpkg/tlperl.old/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 685 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getpid.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getpid.al deleted file mode 100644 index 9aeaa25b63e..00000000000 --- a/Master/tlpkg/tlperl.old/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 690 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getppid.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getppid.al deleted file mode 100644 index 4951623eb04..00000000000 --- a/Master/tlpkg/tlperl.old/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 695 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getpwnam.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getpwnam.al deleted file mode 100644 index 296b87f28ef..00000000000 --- a/Master/tlpkg/tlperl.old/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 185 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getpwuid.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getpwuid.al deleted file mode 100644 index 5616a6daa2c..00000000000 --- a/Master/tlpkg/tlperl.old/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 190 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/gets.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/gets.al deleted file mode 100644 index 34667890e6e..00000000000 --- a/Master/tlpkg/tlperl.old/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 323 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/getuid.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/getuid.al deleted file mode 100644 index 5a326ec67f0..00000000000 --- a/Master/tlpkg/tlperl.old/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 700 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/gmtime.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/gmtime.al deleted file mode 100644 index 6bbf4fc6fef..00000000000 --- a/Master/tlpkg/tlperl.old/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 600 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/isatty.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/isatty.al deleted file mode 100644 index 9ab71b3c2a0..00000000000 --- a/Master/tlpkg/tlperl.old/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 705 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/kill.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/kill.al deleted file mode 100644 index 12f5276f5f8..00000000000 --- a/Master/tlpkg/tlperl.old/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 211 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/labs.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/labs.al deleted file mode 100644 index 581a1897d73..00000000000 --- a/Master/tlpkg/tlperl.old/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 445 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/ldiv.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/ldiv.al deleted file mode 100644 index 1b704c1fad4..00000000000 --- a/Master/tlpkg/tlperl.old/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 449 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/link.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/link.al deleted file mode 100644 index e78401a321d..00000000000 --- a/Master/tlpkg/tlperl.old/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 710 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/load_imports.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/load_imports.al deleted file mode 100644 index 6c2ff0ad2ac..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/POSIX/load_imports.al +++ /dev/null @@ -1,225 +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 743 "..\..\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 fsync 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 - lchown - 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; -} - -# end of POSIX::SigAction::load_imports -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/POSIX/localtime.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/localtime.al deleted file mode 100644 index dde4f5769ef..00000000000 --- a/Master/tlpkg/tlperl.old/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 605 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/log.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/log.al deleted file mode 100644 index 6e400f25866..00000000000 --- a/Master/tlpkg/tlperl.old/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 165 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/longjmp.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/longjmp.al deleted file mode 100644 index f3dd3263086..00000000000 --- a/Master/tlpkg/tlperl.old/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 195 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/malloc.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/malloc.al deleted file mode 100644 index 2f50c6da70a..00000000000 --- a/Master/tlpkg/tlperl.old/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 453 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/memchr.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/memchr.al deleted file mode 100644 index bcdfac6200b..00000000000 --- a/Master/tlpkg/tlperl.old/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 478 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/memcmp.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/memcmp.al deleted file mode 100644 index e01575259d4..00000000000 --- a/Master/tlpkg/tlperl.old/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 482 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/memcpy.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/memcpy.al deleted file mode 100644 index b096a059be9..00000000000 --- a/Master/tlpkg/tlperl.old/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 486 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/memmove.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/memmove.al deleted file mode 100644 index dd29e805f70..00000000000 --- a/Master/tlpkg/tlperl.old/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 490 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/memset.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/memset.al deleted file mode 100644 index 407980dd938..00000000000 --- a/Master/tlpkg/tlperl.old/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 494 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/mkdir.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/mkdir.al deleted file mode 100644 index edb004a11e8..00000000000 --- a/Master/tlpkg/tlperl.old/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 575 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/offsetof.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/offsetof.al deleted file mode 100644 index 83c2df0e521..00000000000 --- a/Master/tlpkg/tlperl.old/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 221 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/opendir.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/opendir.al deleted file mode 100644 index 9c508b64371..00000000000 --- a/Master/tlpkg/tlperl.old/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 102 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/perror.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/perror.al deleted file mode 100644 index df53df18eff..00000000000 --- a/Master/tlpkg/tlperl.old/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 328 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/pow.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/pow.al deleted file mode 100644 index 9f1ac2fc14f..00000000000 --- a/Master/tlpkg/tlperl.old/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 170 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/printf.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/printf.al deleted file mode 100644 index 28b07d21cd1..00000000000 --- a/Master/tlpkg/tlperl.old/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 333 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/putc.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/putc.al deleted file mode 100644 index 484984bcd9f..00000000000 --- a/Master/tlpkg/tlperl.old/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 338 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/putchar.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/putchar.al deleted file mode 100644 index a85a0d79b36..00000000000 --- a/Master/tlpkg/tlperl.old/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 342 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/puts.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/puts.al deleted file mode 100644 index 0bd3f4f3b3c..00000000000 --- a/Master/tlpkg/tlperl.old/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 346 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/qsort.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/qsort.al deleted file mode 100644 index 1621e6db521..00000000000 --- a/Master/tlpkg/tlperl.old/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 457 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/raise.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/raise.al deleted file mode 100644 index 3d078d08f35..00000000000 --- a/Master/tlpkg/tlperl.old/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 216 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/rand.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/rand.al deleted file mode 100644 index 78d16fe53cc..00000000000 --- a/Master/tlpkg/tlperl.old/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 461 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/readdir.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/readdir.al deleted file mode 100644 index 395379abb86..00000000000 --- a/Master/tlpkg/tlperl.old/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 110 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/realloc.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/realloc.al deleted file mode 100644 index 949c4fc3b77..00000000000 --- a/Master/tlpkg/tlperl.old/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 465 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/redef.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/redef.al deleted file mode 100644 index d667327d6b4..00000000000 --- a/Master/tlpkg/tlperl.old/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 69 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/remove.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/remove.al deleted file mode 100644 index e29b4531d68..00000000000 --- a/Master/tlpkg/tlperl.old/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 350 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/rename.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/rename.al deleted file mode 100644 index 6087fefa798..00000000000 --- a/Master/tlpkg/tlperl.old/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 355 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/rewind.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/rewind.al deleted file mode 100644 index a07216f1c51..00000000000 --- a/Master/tlpkg/tlperl.old/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 360 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/rewinddir.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/rewinddir.al deleted file mode 100644 index c01271a33d8..00000000000 --- a/Master/tlpkg/tlperl.old/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 115 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/rmdir.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/rmdir.al deleted file mode 100644 index b94bdf166ee..00000000000 --- a/Master/tlpkg/tlperl.old/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 715 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/scanf.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/scanf.al deleted file mode 100644 index 2d4ff839328..00000000000 --- a/Master/tlpkg/tlperl.old/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 365 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/setbuf.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/setbuf.al deleted file mode 100644 index a7de25518fa..00000000000 --- a/Master/tlpkg/tlperl.old/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 720 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/setjmp.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/setjmp.al deleted file mode 100644 index 780deb31940..00000000000 --- a/Master/tlpkg/tlperl.old/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 199 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/setvbuf.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/setvbuf.al deleted file mode 100644 index b134e52528d..00000000000 --- a/Master/tlpkg/tlperl.old/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 724 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/siglongjmp.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/siglongjmp.al deleted file mode 100644 index ab46fac02b6..00000000000 --- a/Master/tlpkg/tlperl.old/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 203 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/sigsetjmp.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/sigsetjmp.al deleted file mode 100644 index 31e563c6f4f..00000000000 --- a/Master/tlpkg/tlperl.old/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 207 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/sin.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/sin.al deleted file mode 100644 index 9464a28bfea..00000000000 --- a/Master/tlpkg/tlperl.old/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 175 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/sleep.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/sleep.al deleted file mode 100644 index e58de4d5602..00000000000 --- a/Master/tlpkg/tlperl.old/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 728 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/sprintf.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/sprintf.al deleted file mode 100644 index 75e6bc5e277..00000000000 --- a/Master/tlpkg/tlperl.old/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 369 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/sqrt.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/sqrt.al deleted file mode 100644 index 54a2976e2da..00000000000 --- a/Master/tlpkg/tlperl.old/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 180 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/srand.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/srand.al deleted file mode 100644 index b85fd14c60b..00000000000 --- a/Master/tlpkg/tlperl.old/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 469 "..\..\lib\POSIX.pm (autosplit into ..\..\lib\auto\POSIX\srand.al)" -sub srand { - unimpl "srand()"; -} - -# end of POSIX::srand -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/POSIX/sscanf.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/sscanf.al deleted file mode 100644 index b6869491e5d..00000000000 --- a/Master/tlpkg/tlperl.old/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 374 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/stat.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/stat.al deleted file mode 100644 index 4016c0e88ab..00000000000 --- a/Master/tlpkg/tlperl.old/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 580 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strcat.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strcat.al deleted file mode 100644 index 6b9602b93c6..00000000000 --- a/Master/tlpkg/tlperl.old/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 498 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strchr.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strchr.al deleted file mode 100644 index 36a59233340..00000000000 --- a/Master/tlpkg/tlperl.old/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 502 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strcmp.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strcmp.al deleted file mode 100644 index b0447b9f1db..00000000000 --- a/Master/tlpkg/tlperl.old/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 506 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strcpy.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strcpy.al deleted file mode 100644 index 5660760b81d..00000000000 --- a/Master/tlpkg/tlperl.old/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 510 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strcspn.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strcspn.al deleted file mode 100644 index 4a46be8baaa..00000000000 --- a/Master/tlpkg/tlperl.old/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 514 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strerror.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strerror.al deleted file mode 100644 index cc4c86dbae4..00000000000 --- a/Master/tlpkg/tlperl.old/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 518 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strlen.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strlen.al deleted file mode 100644 index 9cc9df2d315..00000000000 --- a/Master/tlpkg/tlperl.old/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 524 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strncat.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strncat.al deleted file mode 100644 index 4f09a52c298..00000000000 --- a/Master/tlpkg/tlperl.old/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 528 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strncmp.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strncmp.al deleted file mode 100644 index b4dfc9ab0b4..00000000000 --- a/Master/tlpkg/tlperl.old/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 532 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strncpy.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strncpy.al deleted file mode 100644 index 98b3c081e68..00000000000 --- a/Master/tlpkg/tlperl.old/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 536 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strpbrk.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strpbrk.al deleted file mode 100644 index 227c00d76cc..00000000000 --- a/Master/tlpkg/tlperl.old/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 540 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strrchr.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strrchr.al deleted file mode 100644 index 1dd2a6ebf04..00000000000 --- a/Master/tlpkg/tlperl.old/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 544 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strspn.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strspn.al deleted file mode 100644 index 3bd65863563..00000000000 --- a/Master/tlpkg/tlperl.old/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 548 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strstr.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strstr.al deleted file mode 100644 index f755459b68f..00000000000 --- a/Master/tlpkg/tlperl.old/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 552 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/strtok.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/strtok.al deleted file mode 100644 index bae94c9282a..00000000000 --- a/Master/tlpkg/tlperl.old/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 557 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/system.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/system.al deleted file mode 100644 index 1b51e8f5209..00000000000 --- a/Master/tlpkg/tlperl.old/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 473 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/time.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/time.al deleted file mode 100644 index 6b404400fd4..00000000000 --- a/Master/tlpkg/tlperl.old/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 610 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/tmpfile.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/tmpfile.al deleted file mode 100644 index aa223d6a27c..00000000000 --- a/Master/tlpkg/tlperl.old/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 378 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/tolower.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/tolower.al deleted file mode 100644 index 57937313fc9..00000000000 --- a/Master/tlpkg/tlperl.old/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 87 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/toupper.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/toupper.al deleted file mode 100644 index a5484a70aa6..00000000000 --- a/Master/tlpkg/tlperl.old/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 92 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/umask.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/umask.al deleted file mode 100644 index 8bf64ae7f0e..00000000000 --- a/Master/tlpkg/tlperl.old/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 585 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/ungetc.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/ungetc.al deleted file mode 100644 index 874e4416f71..00000000000 --- a/Master/tlpkg/tlperl.old/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 382 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/unimpl.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/unimpl.al deleted file mode 100644 index e1c36c60f85..00000000000 --- a/Master/tlpkg/tlperl.old/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 74 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/unlink.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/unlink.al deleted file mode 100644 index c8f58ab9836..00000000000 --- a/Master/tlpkg/tlperl.old/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 733 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/usage.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/usage.al deleted file mode 100644 index 0b2b0bd6115..00000000000 --- a/Master/tlpkg/tlperl.old/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 64 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/utime.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/utime.al deleted file mode 100644 index 68008e7e110..00000000000 --- a/Master/tlpkg/tlperl.old/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 738 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/vfprintf.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/vfprintf.al deleted file mode 100644 index fb502afc761..00000000000 --- a/Master/tlpkg/tlperl.old/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 386 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/vprintf.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/vprintf.al deleted file mode 100644 index 28108face71..00000000000 --- a/Master/tlpkg/tlperl.old/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 390 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/vsprintf.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/vsprintf.al deleted file mode 100644 index 9d4f008ebbc..00000000000 --- a/Master/tlpkg/tlperl.old/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 394 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/wait.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/wait.al deleted file mode 100644 index 57d9701f4ff..00000000000 --- a/Master/tlpkg/tlperl.old/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 590 "..\..\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/tlpkg/tlperl.old/lib/auto/POSIX/waitpid.al b/Master/tlpkg/tlperl.old/lib/auto/POSIX/waitpid.al deleted file mode 100644 index 6cd31c21009..00000000000 --- a/Master/tlpkg/tlperl.old/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 595 "..\..\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/tlpkg/tlperl.old/lib/auto/SDBM_File/SDBM_File.bs b/Master/tlpkg/tlperl.old/lib/auto/SDBM_File/SDBM_File.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/SDBM_File/SDBM_File.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/SDBM_File/SDBM_File.dll b/Master/tlpkg/tlperl.old/lib/auto/SDBM_File/SDBM_File.dll Binary files differdeleted file mode 100755 index 59f6b5ad9f4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/SDBM_File/SDBM_File.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Time/HiRes/HiRes.bs b/Master/tlpkg/tlperl.old/lib/auto/Time/HiRes/HiRes.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Time/HiRes/HiRes.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Time/HiRes/HiRes.dll b/Master/tlpkg/tlperl.old/lib/auto/Time/HiRes/HiRes.dll Binary files differdeleted file mode 100755 index 5303bcfb0a8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Time/HiRes/HiRes.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/CancelRepeat.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/CancelRepeat.al deleted file mode 100644 index d0d6bb1b2a3..00000000000 --- a/Master/tlpkg/tlperl.old/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 491 "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/tlpkg/tlperl.old/lib/auto/Tk/Canvas/Canvas.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/Canvas/Canvas.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Canvas/Canvas.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Canvas/Canvas.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/Canvas/Canvas.dll Binary files differdeleted file mode 100755 index 85fdb8e0f02..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Canvas/Canvas.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Clipboard/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/Clipboard/autosplit.ix deleted file mode 100644 index 9831f74facb..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Clipboard/getSelected.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Clipboard/getSelected.al deleted file mode 100644 index 44ba7b74bf0..00000000000 --- a/Master/tlpkg/tlperl.old/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 115 "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/tlpkg/tlperl.old/lib/auto/Tk/Compound/Compound.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/Compound/Compound.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Compound/Compound.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Compound/Compound.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/Compound/Compound.dll Binary files differdeleted file mode 100755 index 321f56a0d24..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Compound/Compound.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/DragDrop/Win32Site/Win32Site.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/DragDrop/Win32Site/Win32Site.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/DragDrop/Win32Site/Win32Site.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/DragDrop/Win32Site/Win32Site.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/DragDrop/Win32Site/Win32Site.dll Binary files differdeleted file mode 100755 index 468d9d71d05..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/DragDrop/Win32Site/Win32Site.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/EnterFocus.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/EnterFocus.al deleted file mode 100644 index 6b2b5b171a1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/EnterFocus.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 657 "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; - return unless $w; - 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/tlpkg/tlperl.old/lib/auto/Tk/Entry/Entry.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/Entry/Entry.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Entry/Entry.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Entry/Entry.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/Entry/Entry.dll Binary files differdeleted file mode 100755 index 9b1c07a7792..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Entry/Entry.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Error.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Error.al deleted file mode 100644 index 7efe2c7043d..00000000000 --- a/Master/tlpkg/tlperl.old/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 479 "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/tlpkg/tlperl.old/lib/auto/Tk/Event/Event.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/Event/Event.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Event/Event.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Event/Event.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/Event/Event.dll Binary files differdeleted file mode 100755 index 5a9706cb92e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Event/Event.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/FirstMenu.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/FirstMenu.al deleted file mode 100644 index 9ae95c2b311..00000000000 --- a/Master/tlpkg/tlperl.old/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 705 "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/tlpkg/tlperl.old/lib/auto/Tk/FocusChildren.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/FocusChildren.al deleted file mode 100644 index 816e29d5ce3..00000000000 --- a/Master/tlpkg/tlperl.old/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 508 "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/tlpkg/tlperl.old/lib/auto/Tk/FocusOK.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/FocusOK.al deleted file mode 100644 index 2bcfe3ebf82..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/FocusOK.al +++ /dev/null @@ -1,36 +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\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'); - if ($value) - { - $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/tlpkg/tlperl.old/lib/auto/Tk/Frame/AddScrollbars.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Frame/AddScrollbars.al deleted file mode 100644 index aa12259f675..00000000000 --- a/Master/tlpkg/tlperl.old/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 225 "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/tlpkg/tlperl.old/lib/auto/Tk/Frame/FindMenu.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Frame/FindMenu.al deleted file mode 100644 index 66e71c29b21..00000000000 --- a/Master/tlpkg/tlperl.old/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 363 "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/tlpkg/tlperl.old/lib/auto/Tk/Frame/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/Frame/autosplit.ix deleted file mode 100644 index 6e5b939fce1..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Frame/freeze_on_map.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Frame/freeze_on_map.al deleted file mode 100644 index 6a8b8a4f96e..00000000000 --- a/Master/tlpkg/tlperl.old/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 215 "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/tlpkg/tlperl.old/lib/auto/Tk/Frame/label.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Frame/label.al deleted file mode 100644 index 83ec70ed803..00000000000 --- a/Master/tlpkg/tlperl.old/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 182 "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/tlpkg/tlperl.old/lib/auto/Tk/Frame/labelPack.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Frame/labelPack.al deleted file mode 100644 index 0cfa8631c24..00000000000 --- a/Master/tlpkg/tlperl.old/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 121 "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/tlpkg/tlperl.old/lib/auto/Tk/Frame/labelVariable.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Frame/labelVariable.al deleted file mode 100644 index ca60cff1288..00000000000 --- a/Master/tlpkg/tlperl.old/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 163 "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/tlpkg/tlperl.old/lib/auto/Tk/Frame/packscrollbars.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Frame/packscrollbars.al deleted file mode 100644 index 9990eb67b13..00000000000 --- a/Master/tlpkg/tlperl.old/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 269 "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/tlpkg/tlperl.old/lib/auto/Tk/Frame/queuePack.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Frame/queuePack.al deleted file mode 100644 index 59fe3ee4de0..00000000000 --- a/Master/tlpkg/tlperl.old/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 198 "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/tlpkg/tlperl.old/lib/auto/Tk/Frame/sbset.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Frame/sbset.al deleted file mode 100644 index cca4f0d642a..00000000000 --- a/Master/tlpkg/tlperl.old/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 208 "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/tlpkg/tlperl.old/lib/auto/Tk/Frame/scrollbars.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Frame/scrollbars.al deleted file mode 100644 index 21eeb53d2b9..00000000000 --- a/Master/tlpkg/tlperl.old/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 347 "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/tlpkg/tlperl.old/lib/auto/Tk/HList/HList.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/HList/HList.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/HList/HList.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/HList/HList.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/HList/HList.dll Binary files differdeleted file mode 100755 index aeb0f6bcf38..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/HList/HList.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/IO/IO.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/IO/IO.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/IO/IO.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/IO/IO.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/IO/IO.dll Binary files differdeleted file mode 100755 index 472f34c8f64..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/IO/IO.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/ImageNames.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/ImageNames.al deleted file mode 100644 index 46176b8a4c5..00000000000 --- a/Master/tlpkg/tlperl.old/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 757 "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/tlpkg/tlperl.old/lib/auto/Tk/ImageTypes.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/ImageTypes.al deleted file mode 100644 index 59fcf95b7d0..00000000000 --- a/Master/tlpkg/tlperl.old/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 762 "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/tlpkg/tlperl.old/lib/auto/Tk/JPEG/JPEG.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/JPEG/JPEG.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/JPEG/JPEG.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/JPEG/JPEG.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/JPEG/JPEG.dll Binary files differdeleted file mode 100755 index b30740e14b4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/JPEG/JPEG.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/AutoScan.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/AutoScan.al deleted file mode 100644 index 89bda0179c6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/AutoScan.al +++ /dev/null @@ -1,49 +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 676 "..\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; - return if !Tk::Exists($w); - 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/tlpkg/tlperl.old/lib/auto/Tk/Listbox/BeginExtend.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/BeginExtend.al deleted file mode 100644 index afd8f0e9fda..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/BeginExtend.al +++ /dev/null @@ -1,34 +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 620 "..\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) - } - else - { - # No selection yet; simulate the begin-select operation. - $w->BeginSelect($el); - } -} - -# end of Tk::Listbox::BeginExtend -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/BeginSelect.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/BeginSelect.al deleted file mode 100644 index 304a0afe1e1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/BeginSelect.al +++ /dev/null @@ -1,46 +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 515 "..\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')); - $w->eventGenerate("<<ListboxSelect>>"); -} - -# end of Tk::Listbox::BeginSelect -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/BeginToggle.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/BeginToggle.al deleted file mode 100644 index 6c70e35d75a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/BeginToggle.al +++ /dev/null @@ -1,40 +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 645 "..\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) - } - $w->eventGenerate("<<ListboxSelect>>"); - } -} - -# end of Tk::Listbox::BeginToggle -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/ButtonRelease_1.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/ButtonRelease_1.al deleted file mode 100644 index ec8fa789fb9..00000000000 --- a/Master/tlpkg/tlperl.old/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 471 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Listbox/CLEAR.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/CLEAR.al deleted file mode 100644 index 8ed6feba4b5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/CLEAR.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 304 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\CLEAR.al)" -# CLEAR -# ----- -# Empty the Listbox of contents if tied to an array -sub CLEAR { - my $class = shift; - ${$class->{OBJECT}}->delete(0, 'end'); -} - -# end of Tk::Listbox::CLEAR -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Cancel.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Cancel.al deleted file mode 100644 index 7ff924756f8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Cancel.al +++ /dev/null @@ -1,42 +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 805 "..\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; - } - my $first = $w->index('anchor'); - my $last = $Prev; - if ($first > $last) - { - ($first, $last) = ($last, $first); - } - $w->selectionClear($first,$last); - while ($first <= $last) - { - if (Tk::lsearch(\@Selection,$first) >= 0) - { - $w->selectionSet($first) - } - $first++ - } - $w->eventGenerate("<<ListboxSelect>>"); -} - -# end of Tk::Listbox::Cancel -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Cntrl_End.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Cntrl_End.al deleted file mode 100644 index dad5a4bc0d1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Cntrl_End.al +++ /dev/null @@ -1,19 +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 492 "..\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'); - $w->eventGenerate("<<ListboxSelect>>"); -} - -# end of Tk::Listbox::Cntrl_End -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Cntrl_Home.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Cntrl_Home.al deleted file mode 100644 index 08131896da1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Cntrl_Home.al +++ /dev/null @@ -1,19 +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 480 "..\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); - $w->eventGenerate("<<ListboxSelect>>"); -} - -# end of Tk::Listbox::Cntrl_Home -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Cntrl_backslash.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Cntrl_backslash.al deleted file mode 100644 index 402426261a7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Cntrl_backslash.al +++ /dev/null @@ -1,19 +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 504 "..\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'); - $w->eventGenerate("<<ListboxSelect>>"); - } -} - -# end of Tk::Listbox::Cntrl_backslash -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/DELETE.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/DELETE.al deleted file mode 100644 index 3dd81ad40fd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/DELETE.al +++ /dev/null @@ -1,19 +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 355 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\DELETE.al)" -# DELETE -# ------ -# Delete element at specified index -sub DELETE { - my ( $class, @list ) = @_; - - my $value = ${$class->{OBJECT}}->get(@list); - ${$class->{OBJECT}}->delete(@list); - return $value; -} - -# end of Tk::Listbox::DELETE -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/DataExtend.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/DataExtend.al deleted file mode 100644 index 4240300aa68..00000000000 --- a/Master/tlpkg/tlperl.old/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 775 "..\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; - my $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/tlpkg/tlperl.old/lib/auto/Tk/Listbox/EXISTS.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/EXISTS.al deleted file mode 100644 index ae1ed1bc5e6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/EXISTS.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 366 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\EXISTS.al)" -# EXISTS -# ------ -# Returns true if the index exist, and undef if not -sub EXISTS { - my ( $class, $index ) = @_; - return undef unless ${$class->{OBJECT}}->get($index); -} - -# end of Tk::Listbox::EXISTS -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/EXTEND.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/EXTEND.al deleted file mode 100644 index 2a483ea08c1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/EXTEND.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 312 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\EXTEND.al)" -# EXTEND -# ------ -# Do nothing and be happy about it -sub EXTEND { } - -# PUSH -# ---- -# Append elements onto the Listbox contents -# end of Tk::Listbox::EXTEND -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/ExtendUpDown.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/ExtendUpDown.al deleted file mode 100644 index 9b72250ea41..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/ExtendUpDown.al +++ /dev/null @@ -1,36 +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 748 "..\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; - } - my $active = $w->index('active'); - if (!@Selection) - { - $w->selectionSet($active); - @Selection = $w->curselection; - } - $w->activate($active + $amount); - $w->see('active'); - $w->Motion($w->index('active')) -} - -# end of Tk::Listbox::ExtendUpDown -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/FETCH.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/FETCH.al deleted file mode 100644 index fbbe7a3ce9a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/FETCH.al +++ /dev/null @@ -1,56 +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 176 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\FETCH.al)" -# 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; -} - -# end of Tk::Listbox::FETCH -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/FETCHSIZE.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/FETCHSIZE.al deleted file mode 100644 index 13b612a26f5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/FETCHSIZE.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 224 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\FETCHSIZE.al)" -# FETCHSIZE -# --------- -# Return the number of elements in the Listbox when tied to an array -sub FETCHSIZE { - my $class = shift; - return ${$class->{OBJECT}}->size(); -} - -# end of Tk::Listbox::FETCHSIZE -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Listbox.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Listbox.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Listbox.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Listbox.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Listbox.dll Binary files differdeleted file mode 100755 index bb2c6c89f70..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Listbox.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Motion.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Motion.al deleted file mode 100644 index c1c3cbd978b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/Motion.al +++ /dev/null @@ -1,77 +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 552 "..\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; - } - my $anchor = $w->index('anchor'); - my $mode = $w->cget('-selectmode'); - if ($mode eq 'browse') - { - $w->selectionClear(0,'end'); - $w->selectionSet($el); - $Prev = $el; - $w->eventGenerate("<<ListboxSelect>>"); - } - elsif ($mode eq 'extended') - { - my $i = $Prev; - if (!defined $i || $i eq '') - { - $i = $el; - $w->selectionSet($el); - } - if ($w->selectionIncludes('anchor')) - { - $w->selectionClear($i,$el); - $w->selectionSet('anchor',$el) - } - else - { - $w->selectionClear($i,$el); - $w->selectionClear('anchor',$el) - } - if (!@Selection) - { - @Selection = $w->curselection; - } - while ($i < $el && $i < $anchor) - { - if (Tk::lsearch(\@Selection,$i) >= 0) - { - $w->selectionSet($i) - } - $i++ - } - while ($i > $el && $i > $anchor) - { - if (Tk::lsearch(\@Selection,$i) >= 0) - { - $w->selectionSet($i) - } - $i-- - } - $Prev = $el; - $w->eventGenerate("<<ListboxSelect>>"); - } -} - -# end of Tk::Listbox::Motion -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/POP.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/POP.al deleted file mode 100644 index db469652447..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/POP.al +++ /dev/null @@ -1,19 +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 325 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\POP.al)" -# 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; -} - -# end of Tk::Listbox::POP -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/PUSH.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/PUSH.al deleted file mode 100644 index f2168ef46d9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/PUSH.al +++ /dev/null @@ -1,13 +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 320 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\PUSH.al)" -sub PUSH { - my ( $class, @list ) = @_; - ${$class->{OBJECT}}->insert('end', @list); -} - -# end of Tk::Listbox::PUSH -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/SHIFT.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/SHIFT.al deleted file mode 100644 index 96a41f7d79c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/SHIFT.al +++ /dev/null @@ -1,19 +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 336 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\SHIFT.al)" -# 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 -} - -# end of Tk::Listbox::SHIFT -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/SPLICE.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/SPLICE.al deleted file mode 100644 index aeddea8196a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/SPLICE.al +++ /dev/null @@ -1,84 +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 374 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\SPLICE.al)" -# 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]; - } - } -} - -# end of Tk::Listbox::SPLICE -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/STORE.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/STORE.al deleted file mode 100644 index 492c32ccc1e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/STORE.al +++ /dev/null @@ -1,80 +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 232 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\STORE.al)" -# 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); - } - } - } -} - -# end of Tk::Listbox::STORE -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/SelectAll.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/SelectAll.al deleted file mode 100644 index 50569afbe50..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/SelectAll.al +++ /dev/null @@ -1,32 +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 838 "..\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') - } - $w->eventGenerate("<<ListboxSelect>>"); -} - -# end of Tk::Listbox::SelectAll -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/SetList.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/SetList.al deleted file mode 100644 index 25e4f596592..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/SetList.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 862 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\SetList.al)" -# Perl/Tk extensions: -sub SetList -{ - my $w = shift; - $w->delete(0,'end'); - $w->insert('end',@_); -} - -# end of Tk::Listbox::SetList -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/TIEARRAY.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/TIEARRAY.al deleted file mode 100644 index 8c147e8eac8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/TIEARRAY.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 160 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\TIEARRAY.al)" -sub TIEARRAY { - my ( $class, $obj, %options ) = @_; - return bless { - OBJECT => \$obj, - OPTION => \%options }, $class; -} - -# end of Tk::Listbox::TIEARRAY -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/TIESCALAR.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/TIESCALAR.al deleted file mode 100644 index 9cedf047c7f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/TIESCALAR.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 169 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\TIESCALAR.al)" -sub TIESCALAR { - my ( $class, $obj, %options ) = @_; - return bless { - OBJECT => \$obj, - OPTION => \%options }, $class; -} - -# end of Tk::Listbox::TIESCALAR -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/UNSHIFT.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/UNSHIFT.al deleted file mode 100644 index 10d6bae86ec..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/UNSHIFT.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 347 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\UNSHIFT.al)" -# UNSHIFT -# ------- -# Insert elements at the beginning of the Listbox -sub UNSHIFT { - my ( $class, @list ) = @_; - ${$class->{OBJECT}}->insert(0, @list); -} - -# end of Tk::Listbox::UNSHIFT -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/UpDown.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/UpDown.al deleted file mode 100644 index 7ffbfebf4e1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/UpDown.al +++ /dev/null @@ -1,41 +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 716 "..\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'); - my $mode = $w->cget('-selectmode'); - if ($mode eq 'browse') - { - $w->selectionClear(0,'end'); - $w->selectionSet('active'); - $w->eventGenerate("<<ListboxSelect>>"); - } - elsif ($mode eq 'extended') - { - $w->selectionClear(0,'end'); - $w->selectionSet('active'); - $w->selectionAnchor('active'); - $Prev = $w->index('active'); - @Selection = (); - $w->eventGenerate("<<ListboxSelect>>"); - } -} - -# end of Tk::Listbox::UpDown -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/autosplit.ix deleted file mode 100644 index 0cd2e67037c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/autosplit.ix +++ /dev/null @@ -1,56 +0,0 @@ -# Index created by AutoSplit for ..\blib\lib\Tk\Listbox.pm -# (file acts as timestamp) -package Tk::Listbox; -sub TIEARRAY ; -sub TIESCALAR ; -sub FETCH ; -sub FETCHSIZE ; -sub STORE ; -sub CLEAR ; -sub EXTEND ; -sub PUSH ; -sub POP ; -sub SHIFT ; -sub UNSHIFT ; -sub DELETE ; -sub EXISTS ; -sub SPLICE ; -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/tlpkg/tlperl.old/lib/auto/Tk/Listbox/clipboardPaste.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/clipboardPaste.al deleted file mode 100644 index 28f0bd731de..00000000000 --- a/Master/tlpkg/tlperl.old/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 880 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Listbox/deleteSelected.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/deleteSelected.al deleted file mode 100644 index 45bdfe73221..00000000000 --- a/Master/tlpkg/tlperl.old/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 870 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Listbox/getSelected.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/getSelected.al deleted file mode 100644 index a729a713d3e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/getSelected.al +++ /dev/null @@ -1,24 +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 893 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Listbox/xyIndex.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/xyIndex.al deleted file mode 100644 index 5689afdb6ef..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Listbox/xyIndex.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 450 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Menubutton/Menubutton.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/Menubutton/Menubutton.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Menubutton/Menubutton.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Menubutton/Menubutton.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/Menubutton/Menubutton.dll Binary files differdeleted file mode 100755 index 594c0bdadd3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Menubutton/Menubutton.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/NBFrame/NBFrame.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/NBFrame/NBFrame.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/NBFrame/NBFrame.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/NBFrame/NBFrame.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/NBFrame/NBFrame.dll Binary files differdeleted file mode 100755 index 8678ec8c7af..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/NBFrame/NBFrame.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/PNG/PNG.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/PNG/PNG.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/PNG/PNG.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/PNG/PNG.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/PNG/PNG.dll Binary files differdeleted file mode 100755 index 08bbbed4fcc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/PNG/PNG.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Pixmap/Pixmap.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/Pixmap/Pixmap.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Pixmap/Pixmap.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Pixmap/Pixmap.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/Pixmap/Pixmap.dll Binary files differdeleted file mode 100755 index c3adb205b3d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Pixmap/Pixmap.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Receive.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Receive.al deleted file mode 100644 index 7cae1fc380b..00000000000 --- a/Master/tlpkg/tlperl.old/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 728 "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/tlpkg/tlperl.old/lib/auto/Tk/RepeatId.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/RepeatId.al deleted file mode 100644 index e71d2a337a0..00000000000 --- a/Master/tlpkg/tlperl.old/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 498 "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/tlpkg/tlperl.old/lib/auto/Tk/Scale/Activate.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/Activate.al deleted file mode 100644 index 500358c8e0e..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Scale/ButtonDown.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/ButtonDown.al deleted file mode 100644 index 61ed6f32c11..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Scale/ButtonUp.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/ButtonUp.al deleted file mode 100644 index d5a22a77a46..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Scale/ControlPress.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/ControlPress.al deleted file mode 100644 index 50d7ad8b447..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Scale/Drag.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/Drag.al deleted file mode 100644 index 0bc63b12879..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Scale/EndDrag.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/EndDrag.al deleted file mode 100644 index 86037b86d92..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Scale/Enter.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/Enter.al deleted file mode 100644 index 1326a5ed9a0..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Scale/Increment.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/Increment.al deleted file mode 100644 index 76432eeaf40..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Scale/Leave.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/Leave.al deleted file mode 100644 index eb6f7b69f89..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Scale/Scale.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/Scale.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/Scale.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/Scale.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/Scale.dll Binary files differdeleted file mode 100755 index a63ac1d0213..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/Scale.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scale/autosplit.ix deleted file mode 100644 index a5c5d2292f2..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/ButtonDown.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/ButtonDown.al deleted file mode 100644 index d80e2217abc..00000000000 --- a/Master/tlpkg/tlperl.old/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 116 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/ButtonUp.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/ButtonUp.al deleted file mode 100644 index 68857548755..00000000000 --- a/Master/tlpkg/tlperl.old/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 163 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Drag.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Drag.al deleted file mode 100644 index 988f9d4a3ef..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Drag.al +++ /dev/null @@ -1,43 +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 262 "..\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,$x,$y) = @_; - return if !defined $initPos; - my $delta = $w->delta($x-$pressX, $y-$pressY); - if ($w->cget('-jump')) - { - if (@initValues == 2) - { - $w->set($initValues[0]+$delta, $initValues[1]+$delta); - } - else - { - $delta = sprintf "%d", $delta * $initValues[0]; # round() - $initValues[2] += $delta; - $initValues[3] += $delta; - $w->set(@initValues[2,3]); - } - } - else - { - $w->ScrlToPos($initPos+$delta); - } -} - -# end of Tk::Scrollbar::Drag -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/EndDrag.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/EndDrag.al deleted file mode 100644 index 8c401b6fc31..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/EndDrag.al +++ /dev/null @@ -1,28 +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 297 "..\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,$x,$y) = @_; - return if (!defined $initPos); - if ($w->cget('-jump')) - { - my $delta = $w->delta($x-$pressX, $y-$pressY); - $w->ScrlToPos($initPos+$delta); - } - undef $initPos; -} - -# end of Tk::Scrollbar::EndDrag -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Enter.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Enter.al deleted file mode 100644 index 9584a7fa34c..00000000000 --- a/Master/tlpkg/tlperl.old/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 86 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Leave.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Leave.al deleted file mode 100644 index a6c5e89d91e..00000000000 --- a/Master/tlpkg/tlperl.old/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 99 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Motion.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Motion.al deleted file mode 100644 index 46aac656c70..00000000000 --- a/Master/tlpkg/tlperl.old/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 109 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/ScrlByPages.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/ScrlByPages.al deleted file mode 100644 index 9d4018e9128..00000000000 --- a/Master/tlpkg/tlperl.old/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 346 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/ScrlByUnits.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/ScrlByUnits.al deleted file mode 100644 index a364b3e52ce..00000000000 --- a/Master/tlpkg/tlperl.old/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 317 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/ScrlToPos.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/ScrlToPos.al deleted file mode 100644 index e277237953e..00000000000 --- a/Master/tlpkg/tlperl.old/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 376 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/ScrlTopBottom.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/ScrlTopBottom.al deleted file mode 100644 index 7a00efe616f..00000000000 --- a/Master/tlpkg/tlperl.old/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 403 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Scrollbar.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Scrollbar.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Scrollbar.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Scrollbar.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Scrollbar.dll Binary files differdeleted file mode 100755 index e8caf25b628..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Scrollbar.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Select.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/Select.al deleted file mode 100644 index 0da50da443b..00000000000 --- a/Master/tlpkg/tlperl.old/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 181 "..\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/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/StartDrag.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/StartDrag.al deleted file mode 100644 index 32edbfdef24..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/StartDrag.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 232 "..\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,$x,$y) = @_; - return unless (defined ($w->cget('-command'))); - $pressX = $x; - $pressY = $y; - @initValues = $w->get; - my $iv0 = $initValues[0]; - if (@initValues == 2) - { - $initPos = $iv0; - } - elsif ($iv0 == 0) - { - $initPos = 0; - } - else - { - $initPos = $initValues[2]/$initValues[0]; - } -} - -# end of Tk::Scrollbar::StartDrag -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/Scrollbar/autosplit.ix deleted file mode 100644 index 293d1322dd4..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Selection.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Selection.al deleted file mode 100644 index 965dae3cc22..00000000000 --- a/Master/tlpkg/tlperl.old/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 718 "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/tlpkg/tlperl.old/lib/auto/Tk/TList/TList.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/TList/TList.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/TList/TList.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/TList/TList.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/TList/TList.dll Binary files differdeleted file mode 100755 index 24c8e9ceb5a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/TList/TList.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/Create.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/Create.al deleted file mode 100644 index 7900531ad3f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/Create.al +++ /dev/null @@ -1,17 +0,0 @@ -# NOTE: Derived from blib\lib\Tk\Table.pm. -# Changes made here will be lost when autosplit is run again. -# See AutoSplit.pm. -package Tk::Table; - -#line 533 "blib\lib\Tk\Table.pm (autosplit into blib\lib\auto\Tk\Table\Create.al)" -sub Create -{ - my $t = shift; - my $r = shift; - my $c = shift; - my $kind = shift; - $t->put($r,$c,$t->$kind(@_)); -} - -# end of Tk::Table::Create -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/Posn.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/Posn.al deleted file mode 100644 index b625efe8212..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/Posn.al +++ /dev/null @@ -1,15 +0,0 @@ -# NOTE: Derived from blib\lib\Tk\Table.pm. -# Changes made here will be lost when autosplit is run again. -# See AutoSplit.pm. -package Tk::Table; - -#line 552 "blib\lib\Tk\Table.pm (autosplit into blib\lib\auto\Tk\Table\Posn.al)" -sub Posn -{ - my ($t,$s) = @_; - my $info = $t->{Slave}{$s->PathName}; - return (wantarray) ? @$info : $info; -} - -# end of Tk::Table::Posn -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/autosplit.ix deleted file mode 100644 index 1616ae28e83..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/autosplit.ix +++ /dev/null @@ -1,14 +0,0 @@ -# Index created by AutoSplit for blib\lib\Tk\Table.pm -# (file acts as timestamp) -package Tk::Table; -sub Create -; -sub totalColumns -; -sub totalRows -; -sub Posn -; -sub see -; -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/see.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/see.al deleted file mode 100644 index 38841a76552..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/see.al +++ /dev/null @@ -1,46 +0,0 @@ -# NOTE: Derived from blib\lib\Tk\Table.pm. -# Changes made here will be lost when autosplit is run again. -# See AutoSplit.pm. -package Tk::Table; - -#line 559 "blib\lib\Tk\Table.pm (autosplit into blib\lib\auto\Tk\Table\see.al)" -sub see -{ - my $t = shift; - my ($row,$col) = (@_ == 2) ? @_ : @{$t->{Slave}{$_[0]->PathName}}; - my $see = 1; - if (($row -= $t->cget('-fixedrows')) >= 0) - { - if ($row < $t->{Top}) - { - $t->{Top} = $row; - $t->QueueLayout(_ViewChange); - $see = 0; - } - elsif ($row >= $t->{Bottom}) - { - $t->{Top} += ($row - $t->{Bottom}+1); - $t->QueueLayout(_ViewChange); - $see = 0; - } - } - if (($col -= $t->cget('-fixedcolumns')) >= 0) - { - if ($col < $t->{Left}) - { - $t->{Left} = $col; - $t->QueueLayout(_ViewChange); - $see = 0; - } - elsif ($col >= $t->{Right}) - { - $t->{Left} += ($col - $t->{Right}+1); - $t->QueueLayout(_ViewChange); - $see = 0; - } - } - return $see; -} - -1; -# end of Tk::Table::see diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/totalColumns.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/totalColumns.al deleted file mode 100644 index bee111bbe80..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/totalColumns.al +++ /dev/null @@ -1,13 +0,0 @@ -# NOTE: Derived from blib\lib\Tk\Table.pm. -# Changes made here will be lost when autosplit is run again. -# See AutoSplit.pm. -package Tk::Table; - -#line 542 "blib\lib\Tk\Table.pm (autosplit into blib\lib\auto\Tk\Table\totalColumns.al)" -sub totalColumns -{ - scalar @{shift->{'Width'}}; -} - -# end of Tk::Table::totalColumns -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/totalRows.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/totalRows.al deleted file mode 100644 index 88591cc7cab..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Table/totalRows.al +++ /dev/null @@ -1,13 +0,0 @@ -# NOTE: Derived from blib\lib\Tk\Table.pm. -# Changes made here will be lost when autosplit is run again. -# See AutoSplit.pm. -package Tk::Table; - -#line 547 "blib\lib\Tk\Table.pm (autosplit into blib\lib\auto\Tk\Table\totalRows.al)" -sub totalRows -{ - scalar @{shift->{'Height'}}; -} - -# end of Tk::Table::totalRows -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Text/Text.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/Text/Text.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Text/Text.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Text/Text.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/Text/Text.dll Binary files differdeleted file mode 100755 index 2b0235a8221..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Text/Text.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Text/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/Text/autosplit.ix deleted file mode 100644 index 48a5455c34a..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/TextEdit/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/TextEdit/autosplit.ix deleted file mode 100644 index d7c2cbff9ec..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/TextEdit/autosplit.ix +++ /dev/null @@ -1,3 +0,0 @@ -# Index created by AutoSplit for blib\lib\Tk\TextEdit.pm -# (file acts as timestamp) -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/TextUndo/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/TextUndo/autosplit.ix deleted file mode 100644 index 3aef3c081a4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/TextUndo/autosplit.ix +++ /dev/null @@ -1,3 +0,0 @@ -# Index created by AutoSplit for blib\lib\Tk\TextUndo.pm -# (file acts as timestamp) -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/TixGrid/TixGrid.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/TixGrid/TixGrid.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/TixGrid/TixGrid.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/TixGrid/TixGrid.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/TixGrid/TixGrid.dll Binary files differdeleted file mode 100755 index 7261f4fd948..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/TixGrid/TixGrid.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Tk.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/Tk.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Tk.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Tk.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/Tk.dll Binary files differdeleted file mode 100755 index 8d80944808d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Tk.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/FG_BindIn.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/FG_BindIn.al deleted file mode 100644 index 8a0a0a6c911..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/FG_BindOut.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/FG_BindOut.al deleted file mode 100644 index d7fb14d40dc..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/FG_Create.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/FG_Create.al deleted file mode 100644 index 34bb933cfa0..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/FG_Destroy.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/FG_Destroy.al deleted file mode 100644 index e0af457799f..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/FG_In.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/FG_In.al deleted file mode 100644 index 74cf18b9b9d..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/FG_Out.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/FG_Out.al deleted file mode 100644 index 9dfaffe9d2e..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/Toplevel/autosplit.ix deleted file mode 100644 index 859b90d9a40..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/TraverseToMenu.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/TraverseToMenu.al deleted file mode 100644 index 2fdfc38b631..00000000000 --- a/Master/tlpkg/tlperl.old/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 687 "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/tlpkg/tlperl.old/lib/auto/Tk/Widget/ASkludge.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Widget/ASkludge.al deleted file mode 100644 index 1c19caf235f..00000000000 --- a/Master/tlpkg/tlperl.old/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 1438 "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/tlpkg/tlperl.old/lib/auto/Tk/Widget/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/Widget/autosplit.ix deleted file mode 100644 index b610773d4dc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Widget/autosplit.ix +++ /dev/null @@ -1,11 +0,0 @@ -# Index created by AutoSplit for blib\lib\Tk\Widget.pm -# (file acts as timestamp) -package Tk::Widget; -sub bindDump ; -sub ASkludge -; -sub clipboardKeysyms -; -sub pathname -; -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Widget/bindDump.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Widget/bindDump.al deleted file mode 100644 index cafaeececde..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Widget/bindDump.al +++ /dev/null @@ -1,87 +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 1358 "blib\lib\Tk\Widget.pm (autosplit into blib\lib\auto\Tk\Widget\bindDump.al)" -sub bindDump { - - # Dump lots of good binding information. This pretty-print subroutine - # is, essentially, the following code in disguise: - # - # print "Binding information for $w\n"; - # foreach my $tag ($w->bindtags) { - # printf "\n Binding tag '$tag' has these bindings:\n"; - # foreach my $binding ($w->bind($tag)) { - # printf " $binding\n"; - # } - # } - - my ($w) = @_; - - my (@bindtags) = $w->bindtags; - my $digits = length( scalar @bindtags ); - my ($spc1, $spc2) = ($digits + 33, $digits + 35); - my $format1 = "%${digits}d."; - my $format2 = ' ' x ($digits + 2); - my $n = 0; - - my @out; - push @out, sprintf( "\n## Binding information for '%s', %s ##", $w->PathName, $w ); - - foreach my $tag (@bindtags) { - my (@bindings) = $w->bind($tag); - $n++; # count this bindtag - - if ($#bindings == -1) { - push @out, sprintf( "\n$format1 Binding tag '$tag' has no bindings.\n", $n ); - } else { - push @out, sprintf( "\n$format1 Binding tag '$tag' has these bindings:\n", $n ); - - foreach my $binding ( @bindings ) { - my $callback = $w->bind($tag, $binding); - push @out, sprintf( "$format2%27s : %-40s\n", $binding, $callback ); - - if ($callback =~ /SCALAR/) { - if (ref $$callback) { - push @out, sprintf( "%s %s\n", ' ' x $spc1, $$callback ); - } else { - push @out, sprintf( "%s '%s'\n", ' ' x $spc1, $$callback ); - } - } elsif ($callback =~ /ARRAY/) { - if (ref $callback->[0]) { - push @out, sprintf( "%s %s\n", ' ' x $spc1, $callback->[0], "\n" ); - } else { - push @out, sprintf( "%s '%s'\n", ' ' x $spc1, $callback->[0], "\n" ); - } - foreach my $arg (@$callback[1 .. $#{@$callback}]) { - if (ref $arg) { - push @out, sprintf( "%s %-40s", ' ' x $spc2, $arg ); - } else { - push @out, sprintf( "%s '%s'", ' ' x $spc2, $arg ); - } - - if (ref $arg eq 'Tk::Ev') { - if ($arg =~ /SCALAR/) { - push @out, sprintf( ": '$$arg'" ); - } else { - push @out, sprintf( ": '%s'", join("' '", @$arg) ); - } - } - - push @out, sprintf( "\n" ); - } # forend callback arguments - } # ifend callback - - } # forend all bindings for one tag - - } # ifend have bindings - - } # forend all tags - push @out, sprintf( "\n" ); - return @out; - -} # end bindDump - -# end of Tk::Widget::bindDump -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Widget/clipboardKeysyms.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Widget/clipboardKeysyms.al deleted file mode 100644 index a5e488a7053..00000000000 --- a/Master/tlpkg/tlperl.old/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 1462 "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/tlpkg/tlperl.old/lib/auto/Tk/Widget/pathname.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Widget/pathname.al deleted file mode 100644 index 9b725dc26d0..00000000000 --- a/Master/tlpkg/tlperl.old/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 1505 "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/tlpkg/tlperl.old/lib/auto/Tk/Wm/AnchorAdjust.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Wm/AnchorAdjust.al deleted file mode 100644 index 538612878ed..00000000000 --- a/Master/tlpkg/tlperl.old/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 87 "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/tlpkg/tlperl.old/lib/auto/Tk/Wm/FullScreen.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Wm/FullScreen.al deleted file mode 100644 index 4d5702cc60d..00000000000 --- a/Master/tlpkg/tlperl.old/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 138 "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/tlpkg/tlperl.old/lib/auto/Tk/Wm/Popup.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Wm/Popup.al deleted file mode 100644 index 3f460c5bac6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Wm/Popup.al +++ /dev/null @@ -1,50 +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 96 "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); - # adjust to not cross screen borders - if ($X < 0) { $X = 0 } - if ($Y < 0) { $Y = 0 } - if ($mw > $w->screenwidth) { $X = 0 } - if ($mh > $w->screenheight) { $Y = 0 } - $w->Post($X,$Y); - $w->waitVisibility; -} - -# end of Tk::Wm::Popup -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Wm/Post.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Wm/Post.al deleted file mode 100644 index f3f5c8e3e08..00000000000 --- a/Master/tlpkg/tlperl.old/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 75 "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/tlpkg/tlperl.old/lib/auto/Tk/Wm/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/Wm/autosplit.ix deleted file mode 100644 index 201dbe8ba99..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Wm/iconposition.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/Wm/iconposition.al deleted file mode 100644 index 9254968f61c..00000000000 --- a/Master/tlpkg/tlperl.old/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 159 "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/tlpkg/tlperl.old/lib/auto/Tk/X/X.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/X/X.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/X/X.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/X/X.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/X/X.dll Binary files differdeleted file mode 100755 index cbddac849e0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/X/X.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/X/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/X/autosplit.ix deleted file mode 100644 index e63dbf19b00..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/auto/Tk/Xlib/Xlib.bs b/Master/tlpkg/tlperl.old/lib/auto/Tk/Xlib/Xlib.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Xlib/Xlib.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/Xlib/Xlib.dll b/Master/tlpkg/tlperl.old/lib/auto/Tk/Xlib/Xlib.dll Binary files differdeleted file mode 100755 index aa4ebe56447..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/Xlib/Xlib.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Tk/autosplit.ix deleted file mode 100644 index 7bd25b78a9a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/autosplit.ix +++ /dev/null @@ -1,45 +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 -; -sub getEncoding -; -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/break.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/break.al deleted file mode 100644 index 98ff783f190..00000000000 --- a/Master/tlpkg/tlperl.old/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 743 "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/tlpkg/tlperl.old/lib/auto/Tk/focusFollowsMouse.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/focusFollowsMouse.al deleted file mode 100644 index 4a26198d323..00000000000 --- a/Master/tlpkg/tlperl.old/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 681 "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/tlpkg/tlperl.old/lib/auto/Tk/focusNext.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/focusNext.al deleted file mode 100644 index 18eece41cd6..00000000000 --- a/Master/tlpkg/tlperl.old/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 535 "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/tlpkg/tlperl.old/lib/auto/Tk/focusPrev.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/focusPrev.al deleted file mode 100644 index 340feab598f..00000000000 --- a/Master/tlpkg/tlperl.old/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 571 "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/tlpkg/tlperl.old/lib/auto/Tk/getEncoding.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/getEncoding.al deleted file mode 100644 index b9e230edbf1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/getEncoding.al +++ /dev/null @@ -1,43 +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 785 "blib\lib\Tk.pm (autosplit into blib\lib\auto\Tk\getEncoding.al)" -sub getEncoding -{ - my ($class,$name) = @_; - eval { require Encode }; - if ($@) - { - require Tk::DummyEncode; - return Tk::DummyEncode->getEncoding($name); - } - $name = $Tk::font_encoding{$name} if exists $Tk::font_encoding{$name}; - my $enc = Encode::find_encoding($name); - - unless ($enc) - { - $enc = Encode::find_encoding($name) if ($name =~ s/[-_]\d+$//) - } -# if ($enc) -# { -# print STDERR "Lookup '$name' => ".$enc->name."\n"; -# } -# else -# { -# print STDERR "Failed '$name'\n"; -# } - unless ($enc) - { - if ($name eq 'X11ControlChars') - { - require Tk::DummyEncode; - $Encode::encoding{$name} = $enc = Tk::DummyEncode->getEncoding($name); - } - } - return $enc; -} - -1; -# end of Tk::getEncoding diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/interps.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/interps.al deleted file mode 100644 index 9298fe95b5c..00000000000 --- a/Master/tlpkg/tlperl.old/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 767 "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/tlpkg/tlperl.old/lib/auto/Tk/lsearch.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/lsearch.al deleted file mode 100644 index 7fa5d5839de..00000000000 --- a/Master/tlpkg/tlperl.old/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 773 "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; -} - -# end of Tk::lsearch -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/pTk/extralibs.ld b/Master/tlpkg/tlperl.old/lib/auto/Tk/pTk/extralibs.ld deleted file mode 100644 index 9f42bd72dec..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Tk/pTk/extralibs.ld +++ /dev/null @@ -1 +0,0 @@ -x:\msys\mingw\lib\libcomdlg32.a x:\msys\mingw\lib\libgdi32.a x:\msys\mingw\lib\libmsvcrt.a x:\msys\mingw\lib\libmoldname.a x:\msys\mingw\lib\libkernel32.a x:\msys\mingw\lib\libuser32.a x:\msys\mingw\lib\libgdi32.a x:\msys\mingw\lib\libwinspool.a x:\msys\mingw\lib\libcomdlg32.a x:\msys\mingw\lib\libadvapi32.a x:\msys\mingw\lib\libshell32.a x:\msys\mingw\lib\libole32.a x:\msys\mingw\lib\liboleaut32.a x:\msys\mingw\lib\libnetapi32.a x:\msys\mingw\lib\libuuid.a x:\msys\mingw\lib\libws2_32.a x:\msys\mingw\lib\libmpr.a x:\msys\mingw\lib\libwinmm.a x:\msys\mingw\lib\libversion.a x:\msys\mingw\lib\libodbc32.a x:\msys\mingw\lib\libodbccp32.a diff --git a/Master/tlpkg/tlperl.old/lib/auto/Tk/tabFocus.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/tabFocus.al deleted file mode 100644 index 7a4ffdf80f0..00000000000 --- a/Master/tlpkg/tlperl.old/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 676 "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/tlpkg/tlperl.old/lib/auto/Tk/updateWidgets.al b/Master/tlpkg/tlperl.old/lib/auto/Tk/updateWidgets.al deleted file mode 100644 index 5b1bf866ead..00000000000 --- a/Master/tlpkg/tlperl.old/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 748 "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/tlpkg/tlperl.old/lib/auto/Win32/API/API.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/API/API.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/API/API.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/API/API.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/API/API.dll Binary files differdeleted file mode 100755 index 3a7efc0adca..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/API/API.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/API/Callback/Callback.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/API/Callback/Callback.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/API/Callback/Callback.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/API/Callback/Callback.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/API/Callback/Callback.dll Binary files differdeleted file mode 100755 index 147c679d576..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/API/Callback/Callback.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/ChangeNotify/ChangeNotify.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/ChangeNotify/ChangeNotify.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/ChangeNotify/ChangeNotify.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/ChangeNotify/ChangeNotify.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/ChangeNotify/ChangeNotify.dll Binary files differdeleted file mode 100755 index d2aea9dad9b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/ChangeNotify/ChangeNotify.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Clipboard/Clipboard.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Clipboard/Clipboard.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Clipboard/Clipboard.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Clipboard/Clipboard.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Clipboard/Clipboard.dll Binary files differdeleted file mode 100755 index d278ab5a424..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Clipboard/Clipboard.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Console/Console.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Console/Console.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Console/Console.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Console/Console.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Console/Console.dll Binary files differdeleted file mode 100755 index 1063d12ed68..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Console/Console.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Event/Event.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Event/Event.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Event/Event.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Event/Event.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Event/Event.dll Binary files differdeleted file mode 100755 index 60b2bebca01..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Event/Event.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/EventLog/EventLog.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/EventLog/EventLog.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/EventLog/EventLog.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/EventLog/EventLog.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/EventLog/EventLog.dll Binary files differdeleted file mode 100755 index 61e6c54c3ef..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/EventLog/EventLog.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/File/File.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/File/File.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/File/File.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/File/File.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/File/File.dll Binary files differdeleted file mode 100755 index 70f4a8f8849..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/File/File.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/FileSecurity/FileSecurity.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/FileSecurity/FileSecurity.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/FileSecurity/FileSecurity.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/FileSecurity/FileSecurity.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/FileSecurity/FileSecurity.dll Binary files differdeleted file mode 100755 index 402775123a1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/FileSecurity/FileSecurity.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/IPC/IPC.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/IPC/IPC.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/IPC/IPC.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/IPC/IPC.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/IPC/IPC.dll Binary files differdeleted file mode 100755 index e12f04c7c0a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/IPC/IPC.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Internet/Internet.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Internet/Internet.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Internet/Internet.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Internet/Internet.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Internet/Internet.dll Binary files differdeleted file mode 100755 index ae5b15e9cd3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Internet/Internet.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Job/Job.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Job/Job.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Job/Job.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Job/Job.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Job/Job.dll Binary files differdeleted file mode 100755 index 46db0b6a335..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Job/Job.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Mutex/Mutex.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Mutex/Mutex.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Mutex/Mutex.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Mutex/Mutex.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Mutex/Mutex.dll Binary files differdeleted file mode 100755 index db311a4b229..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Mutex/Mutex.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/NetAdmin/NetAdmin.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/NetAdmin/NetAdmin.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/NetAdmin/NetAdmin.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/NetAdmin/NetAdmin.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/NetAdmin/NetAdmin.dll Binary files differdeleted file mode 100755 index c9c353b1624..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/NetAdmin/NetAdmin.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/NetResource/NetResource.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/NetResource/NetResource.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/NetResource/NetResource.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/NetResource/NetResource.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/NetResource/NetResource.dll Binary files differdeleted file mode 100755 index e28382b65b9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/NetResource/NetResource.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/NetResource/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Win32/NetResource/autosplit.ix deleted file mode 100644 index 5a940127951..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/NetResource/autosplit.ix +++ /dev/null @@ -1,3 +0,0 @@ -# Index created by AutoSplit for ..\blib\lib\Win32\NetResource.pm -# (file acts as timestamp) -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/ODBC/ODBC.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/ODBC/ODBC.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/ODBC/ODBC.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/ODBC/ODBC.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/ODBC/ODBC.dll Binary files differdeleted file mode 100755 index c3a55ff68f4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/ODBC/ODBC.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/OLE/OLE.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/OLE/OLE.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/OLE/OLE.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/OLE/OLE.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/OLE/OLE.dll Binary files differdeleted file mode 100755 index a8bb4eb0097..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/OLE/OLE.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/PerfLib/PerfLib.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/PerfLib/PerfLib.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/PerfLib/PerfLib.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/PerfLib/PerfLib.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/PerfLib/PerfLib.dll Binary files differdeleted file mode 100755 index c0aa61962ae..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/PerfLib/PerfLib.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/PerfLib/autosplit.ix b/Master/tlpkg/tlperl.old/lib/auto/Win32/PerfLib/autosplit.ix deleted file mode 100644 index e8fc6693cb5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/PerfLib/autosplit.ix +++ /dev/null @@ -1,3 +0,0 @@ -# Index created by AutoSplit for ..\blib\lib\Win32\PerfLib.pm -# (file acts as timestamp) -1; diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Pipe/Pipe.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Pipe/Pipe.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Pipe/Pipe.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Pipe/Pipe.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Pipe/Pipe.dll Binary files differdeleted file mode 100755 index d6db3893029..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Pipe/Pipe.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Process/Process.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Process/Process.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Process/Process.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Process/Process.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Process/Process.dll Binary files differdeleted file mode 100755 index d5d417912da..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Process/Process.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Registry/Registry.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Registry/Registry.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Registry/Registry.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Registry/Registry.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Registry/Registry.dll Binary files differdeleted file mode 100755 index b1dfb36fd34..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Registry/Registry.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Semaphore/Semaphore.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Semaphore/Semaphore.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Semaphore/Semaphore.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Semaphore/Semaphore.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Semaphore/Semaphore.dll Binary files differdeleted file mode 100755 index 3ab2f6f4850..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Semaphore/Semaphore.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Service/Service.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Service/Service.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Service/Service.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Service/Service.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Service/Service.dll Binary files differdeleted file mode 100755 index 7a6be008842..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Service/Service.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Shortcut/Shortcut.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Shortcut/Shortcut.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Shortcut/Shortcut.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Shortcut/Shortcut.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Shortcut/Shortcut.dll Binary files differdeleted file mode 100755 index 17889059886..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Shortcut/Shortcut.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Sound/Sound.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Sound/Sound.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Sound/Sound.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Sound/Sound.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Sound/Sound.dll Binary files differdeleted file mode 100755 index 6dd86ff29f8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Sound/Sound.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Win32.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/Win32.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Win32.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/Win32.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/Win32.dll Binary files differdeleted file mode 100755 index ad5bc6b0082..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/Win32.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/WinError/WinError.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32/WinError/WinError.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/WinError/WinError.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32/WinError/WinError.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32/WinError/WinError.dll Binary files differdeleted file mode 100755 index d63300a7405..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32/WinError/WinError.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32API/Registry/Registry.bs b/Master/tlpkg/tlperl.old/lib/auto/Win32API/Registry/Registry.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32API/Registry/Registry.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/Win32API/Registry/Registry.dll b/Master/tlpkg/tlperl.old/lib/auto/Win32API/Registry/Registry.dll Binary files differdeleted file mode 100755 index 45b7bc0688a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/Win32API/Registry/Registry.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/re/re.bs b/Master/tlpkg/tlperl.old/lib/auto/re/re.bs deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/re/re.bs +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/auto/re/re.dll b/Master/tlpkg/tlperl.old/lib/auto/re/re.dll Binary files differdeleted file mode 100755 index d2c1852db63..00000000000 --- a/Master/tlpkg/tlperl.old/lib/auto/re/re.dll +++ /dev/null diff --git a/Master/tlpkg/tlperl.old/lib/base.pm b/Master/tlpkg/tlperl.old/lib/base.pm deleted file mode 100644 index 001914be4d3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/base.pm +++ /dev/null @@ -1,226 +0,0 @@ -package base; - -use strict 'vars'; -use vars qw($VERSION); -$VERSION = '2.07'; - -# constant.pm is slow -sub SUCCESS () { 1 } - -sub PUBLIC () { 2**0 } -sub PRIVATE () { 2**1 } -sub INHERITED () { 2**2 } -sub PROTECTED () { 2**3 } - - -my $Fattr = \%fields::attr; - -sub has_fields { - my($base) = shift; - my $fglob = ${"$base\::"}{FIELDS}; - return( ($fglob && *$fglob{HASH}) ? 1 : 0 ); -} - -sub has_version { - my($base) = shift; - my $vglob = ${$base.'::'}{VERSION}; - return( ($vglob && *$vglob{SCALAR}) ? 1 : 0 ); -} - -sub has_attr { - my($proto) = shift; - my($class) = ref $proto || $proto; - return exists $Fattr->{$class}; -} - -sub get_attr { - $Fattr->{$_[0]} = [1] unless $Fattr->{$_[0]}; - return $Fattr->{$_[0]}; -} - -if ($] < 5.009) { - *get_fields = sub { - # Shut up a possible typo warning. - () = \%{$_[0].'::FIELDS'}; - my $f = \%{$_[0].'::FIELDS'}; - - # should be centralized in fields? perhaps - # fields::mk_FIELDS_be_OK. Peh. As long as %{ $package . '::FIELDS' } - # is used here anyway, it doesn't matter. - bless $f, 'pseudohash' if (ref($f) ne 'pseudohash'); - - return $f; - } -} -else { - *get_fields = sub { - # Shut up a possible typo warning. - () = \%{$_[0].'::FIELDS'}; - return \%{$_[0].'::FIELDS'}; - } -} - -sub import { - my $class = shift; - - return SUCCESS unless @_; - - # List of base classes from which we will inherit %FIELDS. - my $fields_base; - - my $inheritor = caller(0); - - foreach my $base (@_) { - next if $inheritor->isa($base); - - if (has_version($base)) { - ${$base.'::VERSION'} = '-1, set by base.pm' - unless defined ${$base.'::VERSION'}; - } - else { - local $SIG{__DIE__}; - 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(<<ERROR); -Base class package "$base" is empty. - (Perhaps you need to 'use' the module which defines that package first.) -ERROR - - } - ${$base.'::VERSION'} = "-1, set by base.pm" - unless defined ${$base.'::VERSION'}; - } - push @{"$inheritor\::ISA"}, $base; - - if ( has_fields($base) || has_attr($base) ) { - # No multiple fields inheritence *suck* - if ($fields_base) { - require Carp; - Carp::croak("Can't multiply inherit %FIELDS"); - } else { - $fields_base = $base; - } - } - } - - if( defined $fields_base ) { - inherit_fields($inheritor, $fields_base); - } -} - - -sub inherit_fields { - my($derived, $base) = @_; - - return SUCCESS unless $base; - - my $battr = get_attr($base); - my $dattr = get_attr($derived); - my $dfields = get_fields($derived); - my $bfields = get_fields($base); - - $dattr->[0] = @$battr; - - if( keys %$dfields ) { - warn "$derived is inheriting from $base but already has its own ". - "fields!\n". - "This will cause problems.\n". - "Be sure you use base BEFORE declaring fields\n"; - } - - # Iterate through the base's fields adding all the non-private - # ones to the derived class. Hang on to the original attribute - # (Public, Private, etc...) and add Inherited. - # This is all too complicated to do efficiently with add_fields(). - while (my($k,$v) = each %$bfields) { - my $fno; - if ($fno = $dfields->{$k} and $fno != $v) { - require Carp; - Carp::croak ("Inherited %FIELDS can't override existing %FIELDS"); - } - - if( $battr->[$v] & PRIVATE ) { - $dattr->[$v] = PRIVATE | INHERITED; - } - else { - $dattr->[$v] = INHERITED | $battr->[$v]; - $dfields->{$k} = $v; - } - } - - foreach my $idx (1..$#{$battr}) { - next if defined $dattr->[$idx]; - $dattr->[$idx] = $battr->[$idx] & INHERITED; - } -} - - -1; - -__END__ - -=head1 NAME - -base - Establish IS-A relationship with base classes at compile time - -=head1 SYNOPSIS - - package Baz; - use base qw(Foo Bar); - -=head1 DESCRIPTION - -Allows you to both load one or more modules, while setting up inheritance from -those modules at the same time. Roughly similar in effect to - - package Baz; - BEGIN { - require Foo; - require Bar; - push @ISA, qw(Foo Bar); - } - -If any of the listed modules are not loaded yet, I<base> silently attempts to -C<require> them (and silently continues if the C<require> failed). Whether to -C<require> a base class module is determined by the absence of a global variable -$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>. - -Will also initialize the fields if one of the base classes has it. -Multiple inheritence of fields is B<NOT> supported, if two or more -base classes each have inheritable fields the 'base' pragma will -croak. See L<fields>, L<public> and L<protected> for a description of -this feature. - -=head1 DIAGNOSTICS - -=over 4 - -=item Base class package "%s" is empty. - -base.pm was unable to require the base package, because it was not -found in your path. - -=back - -=head1 HISTORY - -This module was introduced with Perl 5.004_04. - - -=head1 CAVEATS - -Due to the limitations of the implementation, you must use -base I<before> you declare any of your own fields. - - -=head1 SEE ALSO - -L<fields> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/bytes.pm b/Master/tlpkg/tlperl.old/lib/bytes.pm deleted file mode 100644 index a8222794ddf..00000000000 --- a/Master/tlpkg/tlperl.old/lib/bytes.pm +++ /dev/null @@ -1,88 +0,0 @@ -package bytes; - -our $VERSION = '1.02'; - -$bytes::hint_bits = 0x00000008; - -sub import { - $^H |= $bytes::hint_bits; -} - -sub unimport { - $^H &= ~$bytes::hint_bits; -} - -sub AUTOLOAD { - require "bytes_heavy.pl"; - goto &$AUTOLOAD if defined &$AUTOLOAD; - require Carp; - Carp::croak("Undefined subroutine $AUTOLOAD called"); -} - -sub length ($); -sub chr ($); -sub ord ($); -sub substr ($$;$$); -sub index ($$;$); -sub rindex ($$;$); - -1; -__END__ - -=head1 NAME - -bytes - Perl pragma to force byte semantics rather than character semantics - -=head1 SYNOPSIS - - use bytes; - ... chr(...); # or bytes::chr - ... index(...); # or bytes::index - ... length(...); # or bytes::length - ... ord(...); # or bytes::ord - ... rindex(...); # or bytes::rindex - ... substr(...); # or bytes::substr - 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; # or "require bytes; bytes::length()" - print "Length is ", length $x, "\n"; # "Length is 2" - printf "Contents are %vd\n", $x; # "Contents are 198.144" - } - -chr(), ord(), substr(), index() and rindex() behave similarly. - -For more on the implications and differences between character -semantics and byte semantics, see L<perluniintro> and L<perlunicode>. - -=head1 LIMITATIONS - -bytes::substr() does not work as an lvalue(). - -=head1 SEE ALSO - -L<perluniintro>, L<perlunicode>, L<utf8> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/bytes_heavy.pl b/Master/tlpkg/tlperl.old/lib/bytes_heavy.pl deleted file mode 100644 index 923381de58d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/bytes_heavy.pl +++ /dev/null @@ -1,40 +0,0 @@ -package bytes; - -sub length ($) { - BEGIN { bytes::import() } - return CORE::length($_[0]); -} - -sub substr ($$;$$) { - BEGIN { bytes::import() } - return - @_ == 2 ? CORE::substr($_[0], $_[1]) : - @_ == 3 ? CORE::substr($_[0], $_[1], $_[2]) : - CORE::substr($_[0], $_[1], $_[2], $_[3]) ; -} - -sub ord ($) { - BEGIN { bytes::import() } - return CORE::ord($_[0]); -} - -sub chr ($) { - BEGIN { bytes::import() } - return CORE::chr($_[0]); -} - -sub index ($$;$) { - BEGIN { bytes::import() } - return - @_ == 2 ? CORE::index($_[0], $_[1]) : - CORE::index($_[0], $_[1], $_[2]) ; -} - -sub rindex ($$;$) { - BEGIN { bytes::import() } - return - @_ == 2 ? CORE::rindex($_[0], $_[1]) : - CORE::rindex($_[0], $_[1], $_[2]) ; -} - -1; diff --git a/Master/tlpkg/tlperl.old/lib/constant.pm b/Master/tlpkg/tlperl.old/lib/constant.pm deleted file mode 100644 index 159c29978a5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/constant.pm +++ /dev/null @@ -1,340 +0,0 @@ -package constant; - -use strict; -use 5.006_00; -use warnings::register; - -our($VERSION, %declared); -$VERSION = '1.05'; - -#======================================================================= - -# 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::"); - } - } - - # 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/tlpkg/tlperl.old/lib/fields.pm b/Master/tlpkg/tlperl.old/lib/fields.pm deleted file mode 100644 index cca778f905d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/fields.pm +++ /dev/null @@ -1,319 +0,0 @@ -package fields; - -require 5.005; -use strict; -no strict 'refs'; -unless( eval q{require warnings::register; warnings::register->import} ) { - *warnings::warnif = sub { - require Carp; - Carp::carp(@_); - } -} -use vars qw(%attr $VERSION); - -$VERSION = '2.03'; - -# constant.pm is slow -sub PUBLIC () { 2**0 } -sub PRIVATE () { 2**1 } -sub INHERITED () { 2**2 } -sub PROTECTED () { 2**3 } - - -# 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; - - # Quiet pseudo-hash deprecation warning for uses of fields::new. - bless \%{"$package\::FIELDS"}, 'pseudohash'; - - 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]) { - if ($] < 5.006001) { - warn("Hides field '$f' in base class") if $^W; - } else { - 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 { - require base; - goto &base::inherit_fields; -} - -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 $fattr & INHERITED; - print "\t(", join(", ", @a), ")"; - } - print "\n"; - } - } -} - -if ($] < 5.009) { - *new = sub { - my $class = shift; - $class = ref $class if ref $class; - return bless [\%{$class . "::FIELDS"}], $class; - } -} else { - *new = sub { - my $class = shift; - $class = ref $class if ref $class; - require Hash::Util; - my $self = bless {}, $class; - - # The lock_keys() prototype won't work since we require Hash::Util :( - &Hash::Util::lock_keys(\%$self, keys %{$class.'::FIELDS'}); - return $self; - } -} - -sub phash { - die "Pseudo-hashes have been removed from Perl" if $] >= 5.009; - 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; - -__END__ - -=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 $var = Foo->new; - $var->{foo} = 42; - - # this will generate an 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. - -B<Only valid for perl before 5.9.0:> - -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. - -B<Only valid for perls before 5.9.0:> - -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 4 - -=item new - -B< perl before 5.9.0: > fields::new() creates and blesses a -pseudo-hash comprised of the fields declared using the C<fields> -pragma into the specified class. - -B< perl 5.9.0 and higher: > fields::new() creates and blesses a -restricted-hash comprised of the fields declared using the C<fields> -pragma into the specified class. - -This function is usable with or without pseudo-hashes. It is the -recommended way to construct a fields-based object. - -This makes it possible to write a constructor like this: - - package Critter::Sounds; - use fields qw(cat dog bird); - - sub new { - my $self = shift; - $self = fields::new($self) unless ref $self; - $self->{cat} = 'meow'; # scalar element - @$self{'dog','bird'} = ('bark','tweet'); # slice - return $self; - } - -=item phash - -B< before perl 5.9.0: > - -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); - -B< perl 5.9.0 and higher: > - -Pseudo-hashes have been removed from Perl as of 5.10. Consider using -restricted hashes or fields::new() instead. Using fields::phash() -will cause an error. - -=back - -=head1 SEE ALSO - -L<base> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/lib.pm b/Master/tlpkg/tlperl.old/lib/lib.pm deleted file mode 100644 index 06a03502368..00000000000 --- a/Master/tlpkg/tlperl.old/lib/lib.pm +++ /dev/null @@ -1,206 +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.5565'; -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 @_) { - my $path = $_; # we'll be modifying it, so break the alias - if ($path eq '') { - require Carp; - Carp::carp("Empty compile time value given to use lib"); - } - - $path = _nativize($path); - - if (-e $path && ! -d _) { - require Carp; - Carp::carp("Parameter to use lib must be directory, not file"); - } - unshift(@INC, $path); - # Add any previous version directories we found at configure time - foreach my $incver (@inc_version_list) - { - my $dir = $Is_MacOS - ? File::Spec->catdir( $path, $incver ) - : "$path/$incver"; - unshift(@INC, $dir) if -d $dir; - } - # Put a corresponding archlib directory in front of $path if it - # looks like $path has an archlib directory below it. - my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir) - = _get_dirs($path); - 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 (@_) { - my $path = _nativize($_); - - my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir) - = _get_dirs($path); - ++$names{$path}; - ++$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( $dir, $archname, 'auto' ); - $arch_dir = File::Spec->catdir( $dir, $archname, ); - $version_dir = File::Spec->catdir( $dir, $version ); - $version_arch_dir = File::Spec->catdir( $dir, $version, $archname ); - } else { - $arch_auto_dir = "$dir/$archname/auto"; - $arch_dir = "$dir/$archname"; - $version_dir = "$dir/$version"; - $version_arch_dir = "$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/tlpkg/tlperl.old/lib/newgetopt.pl b/Master/tlpkg/tlperl.old/lib/newgetopt.pl deleted file mode 100644 index 95eef220fe7..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/overload.pm b/Master/tlpkg/tlperl.old/lib/overload.pm deleted file mode 100644 index 15b7e775e74..00000000000 --- a/Master/tlpkg/tlperl.old/lib/overload.pm +++ /dev/null @@ -1,1434 +0,0 @@ -package overload; - -our $VERSION = '1.04'; - -$overload::hint_bits = 0x20000; # HINT_LOCALIZE_HH - -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; - - require Scalar::Util; - my $class = Scalar::Util::blessed($_[0]); - my $class_prefix = defined($class) ? "$class=" : ""; - my $type = Scalar::Util::reftype($_[0]); - my $addr = Scalar::Util::refaddr($_[0]); - return sprintf("$class_prefix$type(0x%x)", $addr); -} - -*StrVal = *AddrRef; - -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, # HINT_NEW_INTEGER - 'float' => 0x2000, # HINT_NEW_FLOAT - 'binary' => 0x4000, # HINT_NEW_BINARY - 'q' => 0x8000, # HINT_NEW_STRING - 'qr' => 0x10000, # HINT_NEW_RE - ); - -%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. If you -are using this to get the address of a reference (useful for checking if two -references point to the same thing) then you may be better off using -C<Scalar::Util::refaddr()>, which is faster. - -=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 applications, the Perl parser mangles constants too much. -It is possible to hook into this process via C<overload::constant()> -and C<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+' => \# - - 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/tlpkg/tlperl.old/lib/re.pm b/Master/tlpkg/tlperl.old/lib/re.pm deleted file mode 100644 index 6e9d1218ef0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/re.pm +++ /dev/null @@ -1,134 +0,0 @@ -package re; - -our $VERSION = 0.05; - -=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 expressions. 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, # HINT_RE_TAINT -eval => 0x00200000, # HINT_RE_EVAL -); - -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/tlpkg/tlperl.old/lib/strict.pm b/Master/tlpkg/tlperl.old/lib/strict.pm deleted file mode 100644 index d14391add44..00000000000 --- a/Master/tlpkg/tlperl.old/lib/strict.pm +++ /dev/null @@ -1,136 +0,0 @@ -package strict; - -$strict::VERSION = "1.03"; - -my %bitmask = ( -refs => 0x00000002, -subs => 0x00000200, -vars => 0x00000400 -); - -sub bits { - my $bits = 0; - my @wrong; - foreach my $s (@_) { - push @wrong, $s unless exists $bitmask{$s}; - $bits |= $bitmask{$s} || 0; - } - if (@wrong) { - require Carp; - Carp::croak("Unknown 'strict' tag(s) '@wrong'"); - } - $bits; -} - -my $default_bits = bits(qw(refs subs vars)); - -sub import { - shift; - $^H |= @_ ? bits(@_) : $default_bits; -} - -sub unimport { - shift; - $^H &= ~ (@_ ? bits(@_) : $default_bits); -} - -1; -__END__ - -=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 C<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 -is a simple identifier (no colons) and that it appears in curly braces or -on the left hand side of the C<< => >> symbol. - - use strict 'subs'; - $SIG{PIPE} = Plumber; # blows up - $SIG{PIPE} = "Plumber"; # just fine: quoted string is always ok - $SIG{PIPE} = \&Plumber; # preferred form - -=back - -See L<perlmodlib/Pragmatic Modules>. - -=head1 HISTORY - -C<strict 'subs'>, with Perl 5.6.1, erroneously permitted to use an unquoted -compound identifier (e.g. C<Foo::Bar>) as a hash key (before C<< => >> or -inside curlies), but without forcing it always to a literal string. - -Starting with Perl 5.8.1 strict is strict about its restrictions: -if unknown restrictions are used, the strict pragma will abort with - - Unknown 'strict' tag(s) '...' - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/subs.pm b/Master/tlpkg/tlperl.old/lib/subs.pm deleted file mode 100644 index e5a9aa8827d..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/unicore/ArabicShaping.txt b/Master/tlpkg/tlperl.old/lib/unicore/ArabicShaping.txt deleted file mode 100644 index ec2e0241012..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/ArabicShaping.txt +++ /dev/null @@ -1,299 +0,0 @@ -# ArabicShaping-4.1.0.txt -# Date: 2005-03-17, 15:21:00 PST [KW] -# -# This file is a normative contributory data file in the -# Unicode Character Database. -# -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# -# This file defines the shaping classes for Arabic and Syriac -# positional shaping, repeating in machine readable form the -# information printed in Tables 8-3, 8-7, 8-8, 8-11, 8-12, and -# 8-13 of The Unicode Standard, Version 4.0. -# -# See sections 8.2 and 8.3 of The Unicode Standard, Version 4.0 -# for more information. -# -# Each line contains four fields, separated by a semicolon. -# -# Field 0: the code point, in 4-digit hexadecimal -# form, of an Arabic or Syriac character. -# Field 1: gives a short schematic name for that character, -# abbreviated from the normative Unicode character name. -# Field 2: defines the joining type (property name: Joining_Type) -# R Right_Joining -# L Left_Joining -# D Dual_Joining -# C Join_Causing -# U Non_Joining -# T Transparent -# See the Arabic block description for more information on these types. -# Field 3: defines the joining group (property name: Joining_Group) -# -# The values of the joining group are based schematically on character -# names. Where a schematic character name consists of two or more parts separated -# by spaces, the formal Joining_Group property value, as specified in -# PropertyValueAliases.txt, consists of the same name parts joined by -# underscores. Hence, the entry: -# -# 0629; TEH MARBUTA; R; TEH MARBUTA -# -# corresponds to [Joining_Group = Teh_Marbuta]. -# -# Note: For historical reasons, the property value [Joining_Group = Hamza_On_Heh_Goal] -# is anachronistically named. It used to apply to both of the following characters -# in earlier versions of the standard: -# -# U+06C2 ARABIC LETTER HEH GOAL WITH HAMZA ABOVE -# U+06C3 ARABIC LETTER TEH MARBUTA GOAL -# -# However, it currently applies only to U+06C3, and *not* to U+06C2. -# To avoid destabilizing existing Joining_Group property aliases, the -# value Hamza_On_Heh_Goal has not been changed, despite the fact that it -# no longer applies to Hamza On Heh Goal, but only to Teh Marbuta Goal. -# -# Note: Code points that are not explicitly listed in this file are -# either of joining type T or U: -# -# - Those that not explicitly listed that are of General Category Mn, Me, or Cf -# have joining type T. -# - All others not explicitly listed have type U. -# -# For an explicit listing of characters of joining type T, see -# the derived property file DerivedJoiningType.txt. -# -# There are currently no characters of type L defined in Unicode. -# -# ############################################################# - -# Unicode; Schematic Name; Joining Type; Joining Group - -# Arabic characters - -0600; ARABIC NUMBER SIGN; U; No_Joining_Group -0601; ARABIC SIGN SANAH; U; No_Joining_Group -0602; ARABIC FOOTNOTE MARKER; U; No_Joining_Group -0603; ARABIC SIGN SAFHA; U; No_Joining_Group -060B; AFGHANI SIGN; U; No_Joining_Group -0621; HAMZA; U; No_Joining_Group -0622; MADDA ON ALEF; R; ALEF -0623; HAMZA ON ALEF; R; ALEF -0624; HAMZA ON WAW; R; WAW -0625; HAMZA UNDER ALEF; R; ALEF -0626; HAMZA ON YEH; D; YEH -0627; ALEF; R; ALEF -0628; BEH; D; BEH -0629; TEH MARBUTA; R; TEH MARBUTA -062A; TEH; D; BEH -062B; THEH; D; BEH -062C; JEEM; D; HAH -062D; HAH; D; HAH -062E; KHAH; D; HAH -062F; DAL; R; DAL -0630; THAL; R; DAL -0631; REH; R; REH -0632; ZAIN; R; REH -0633; SEEN; D; SEEN -0634; SHEEN; D; SEEN -0635; SAD; D; SAD -0636; DAD; D; SAD -0637; TAH; D; TAH -0638; ZAH; D; TAH -0639; AIN; D; AIN -063A; GHAIN; D; AIN -0640; TATWEEL; C; No_Joining_Group -0641; FEH; D; FEH -0642; QAF; D; QAF -0643; KAF; D; KAF -0644; LAM; D; LAM -0645; MEEM; D; MEEM -0646; NOON; D; NOON -0647; HEH; D; HEH -0648; WAW; R; WAW -0649; ALEF MAKSURA; D; YEH -064A; YEH; D; YEH -066E; DOTLESS BEH; D; BEH -066F; DOTLESS QAF; D; QAF -0671; HAMZAT WASL ON ALEF; R; ALEF -0672; WAVY HAMZA ON ALEF; R; ALEF -0673; WAVY HAMZA UNDER ALEF; R; ALEF -0674; HIGH HAMZA; U; No_Joining_Group -0675; HIGH HAMZA ALEF; R; ALEF -0676; HIGH HAMZA WAW; R; WAW -0677; HIGH HAMZA WAW WITH DAMMA; R; WAW -0678; HIGH HAMZA YEH; D; YEH -0679; TEH WITH SMALL TAH; D; BEH -067A; TEH WITH 2 DOTS VERTICAL ABOVE; D; BEH -067B; BEH WITH 2 DOTS VERTICAL BELOW; D; BEH -067C; TEH WITH RING; D; BEH -067D; TEH WITH 3 DOTS ABOVE DOWNWARD; D; BEH -067E; TEH WITH 3 DOTS BELOW; D; BEH -067F; TEH WITH 4 DOTS ABOVE; D; BEH -0680; BEH WITH 4 DOTS BELOW; D; BEH -0681; HAMZA ON HAH; D; HAH -0682; HAH WITH 2 DOTS VERTICAL ABOVE; D; HAH -0683; HAH WITH MIDDLE 2 DOTS; D; HAH -0684; HAH WITH MIDDLE 2 DOTS VERTICAL; D; HAH -0685; HAH WITH 3 DOTS ABOVE; D; HAH -0686; HAH WITH MIDDLE 3 DOTS DOWNWARD; D; HAH -0687; HAH WITH MIDDLE 4 DOTS; D; HAH -0688; DAL WITH SMALL TAH; R; DAL -0689; DAL WITH RING; R; DAL -068A; DAL WITH DOT BELOW; R; DAL -068B; DAL WITH DOT BELOW AND SMALL TAH; R; DAL -068C; DAL WITH 2 DOTS ABOVE; R; DAL -068D; DAL WITH 2 DOTS BELOW; R; DAL -068E; DAL WITH 3 DOTS ABOVE; R; DAL -068F; DAL WITH 3 DOTS ABOVE DOWNWARD; R; DAL -0690; DAL WITH 4 DOTS ABOVE; R; DAL -0691; REH WITH SMALL TAH; R; REH -0692; REH WITH SMALL V; R; REH -0693; REH WITH RING; R; REH -0694; REH WITH DOT BELOW; R; REH -0695; REH WITH SMALL V BELOW; R; REH -0696; REH WITH DOT BELOW AND DOT ABOVE; R; REH -0697; REH WITH 2 DOTS ABOVE; R; REH -0698; REH WITH 3 DOTS ABOVE; R; REH -0699; REH WITH 4 DOTS ABOVE; R; REH -069A; SEEN WITH DOT BELOW AND DOT ABOVE; D; SEEN -069B; SEEN WITH 3 DOTS BELOW; D; SEEN -069C; SEEN WITH 3 DOTS BELOW AND 3 DOTS ABOVE; D; SEEN -069D; SAD WITH 2 DOTS BELOW; D; SAD -069E; SAD WITH 3 DOTS ABOVE; D; SAD -069F; TAH WITH 3 DOTS ABOVE; D; TAH -06A0; AIN WITH 3 DOTS ABOVE; D; AIN -06A1; DOTLESS FEH; D; FEH -06A2; FEH WITH DOT MOVED BELOW; D; FEH -06A3; FEH WITH DOT BELOW; D; FEH -06A4; FEH WITH 3 DOTS ABOVE; D; FEH -06A5; FEH WITH 3 DOTS BELOW; D; FEH -06A6; FEH WITH 4 DOTS ABOVE; D; FEH -06A7; QAF WITH DOT ABOVE; D; QAF -06A8; QAF WITH 3 DOTS ABOVE; D; QAF -06A9; KEHEH; D; GAF -06AA; SWASH KAF; D; SWASH KAF -06AB; KAF WITH RING; D; GAF -06AC; KAF WITH DOT ABOVE; D; KAF -06AD; KAF WITH 3 DOTS ABOVE; D; KAF -06AE; KAF WITH 3 DOTS BELOW; D; KAF -06AF; GAF; D; GAF -06B0; GAF WITH RING; D; GAF -06B1; GAF WITH 2 DOTS ABOVE; D; GAF -06B2; GAF WITH 2 DOTS BELOW; D; GAF -06B3; GAF WITH 2 DOTS VERTICAL BELOW; D; GAF -06B4; GAF WITH 3 DOTS ABOVE; D; GAF -06B5; LAM WITH SMALL V; D; LAM -06B6; LAM WITH DOT ABOVE; D; LAM -06B7; LAM WITH 3 DOTS ABOVE; D; LAM -06B8; LAM WITH 3 DOTS BELOW; D; LAM -06B9; NOON WITH DOT BELOW; D; NOON -06BA; DOTLESS NOON; D; NOON -06BB; DOTLESS NOON WITH SMALL TAH; D; NOON -06BC; NOON WITH RING; D; NOON -06BD; NOON WITH 3 DOTS ABOVE; D; NOON -06BE; KNOTTED HEH; D; KNOTTED HEH -06BF; HAH WITH MIDDLE 3 DOTS DOWNWARD AND DOT ABOVE; D; HAH -06C0; HAMZA ON HEH; R; TEH MARBUTA -06C1; HEH GOAL; D; HEH GOAL -06C2; HAMZA ON HEH GOAL; D; HEH GOAL -06C3; TEH MARBUTA GOAL; R; HAMZA ON HEH GOAL -06C4; WAW WITH RING; R; WAW -06C5; WAW WITH BAR; R; WAW -06C6; WAW WITH SMALL V; R; WAW -06C7; WAW WITH DAMMA; R; WAW -06C8; WAW WITH ALEF ABOVE; R; WAW -06C9; WAW WITH INVERTED SMALL V; R; WAW -06CA; WAW WITH 2 DOTS ABOVE; R; WAW -06CB; WAW WITH 3 DOTS ABOVE; R; WAW -06CC; DOTLESS YEH; D; YEH -06CD; YEH WITH TAIL; R; YEH WITH TAIL -06CE; YEH WITH SMALL V; D; YEH -06CF; WAW WITH DOT ABOVE; R; WAW -06D0; YEH WITH 2 DOTS VERTICAL BELOW; D; YEH -06D1; YEH WITH 3 DOTS BELOW; D; YEH -06D2; YEH BARREE; R; YEH BARREE -06D3; HAMZA ON YEH BARREE; R; YEH BARREE -06D5; AE; R; TEH MARBUTA -06DD; ARABIC END OF AYAH; U; No_Joining_Group -06EE; DAL WITH INVERTED V; R; DAL -06EF; REH WITH INVERTED V; R; REH -06FA; SEEN WITH DOT BELOW AND 3 DOTS ABOVE; D; SEEN -06FB; DAD WITH DOT BELOW; D; SAD -06FC; GHAIN WITH DOT BELOW; D; AIN -06FF; HEH WITH INVERTED V; D; KNOTTED HEH - -# Syriac characters - -0710; ALAPH; R; ALAPH -0712; BETH; D; BETH -0713; GAMAL; D; GAMAL -0714; GAMAL GARSHUNI; D; GAMAL -0715; DALATH; R; DALATH RISH -0716; DOTLESS DALATH RISH; R; DALATH RISH -0717; HE; R; HE -0718; WAW; R; SYRIAC WAW -0719; ZAIN; R; ZAIN -071A; HETH; D; HETH -071B; TETH; D; TETH -071C; TETH GARSHUNI; D; TETH -071D; YUDH; D; YUDH -071E; YUDH HE; R; YUDH HE -071F; KAPH; D; KAPH -0720; LAMADH; D; LAMADH -0721; MIM; D; MIM -0722; NUN; D; NUN -0723; SEMKATH; D; SEMKATH -0724; FINAL SEMKATH; D; FINAL SEMKATH -0725; E; D; E -0726; PE; D; PE -0727; REVERSED PE; D; REVERSED PE -0728; SADHE; R; SADHE -0729; QAPH; D; QAPH -072A; RISH; R; DALATH RISH -072B; SHIN; D; SHIN -072C; TAW; R; TAW -072D; PERSIAN BHETH; D; BETH -072E; PERSIAN GHAMAL; D; GAMAL -072F; PERSIAN DHALATH; R; DALATH RISH -074D; SOGDIAN ZHAIN; R; ZHAIN -074E; SOGDIAN KHAPH; D; KHAPH -074F; SOGDIAN FE; D; FE - -# Arabic supplement characters - -0750; BEH WITH 3 DOTS HORIZONTALLY BELOW; D; BEH -0751; BEH WITH DOT BELOW AND 3 DOTS ABOVE; D; BEH -0752; BEH WITH 3 DOTS POINTING UPWARDS BELOW; D; BEH -0753; BEH WITH 3 DOTS POINTING UPWARDS BELOW AND 2 DOTS ABOVE; D; BEH -0754; BEH WITH 2 DOTS BELOW AND DOT ABOVE; D; BEH -0755; BEH WITH INVERTED SMALL V BELOW; D; BEH -0756; BEH WITH SMALL V; D; BEH -0757; HAH WITH 2 DOTS ABOVE; D; HAH -0758; HAH WITH 3 DOTS POINTING UPWARDS BELOW; D; HAH -0759; DAL WITH 2 DOTS VERTICALLY BELOW AND SMALL TAH; R; DAL -075A; DAL WITH INVERTED SMALL V BELOW; R; DAL -075B; REH WITH STROKE; R; REH -075C; SEEN WITH 4 DOTS ABOVE; D; SEEN -075D; AIN WITH 2 DOTS ABOVE; D; AIN -075E; AIN WITH 3 DOTS POINTING DOWNWARDS ABOVE; D; AIN -075F; AIN WITH 2 DOTS VERTICALLY ABOVE; D; AIN -0760; FEH WITH 2 DOTS BELOW; D; FEH -0761; FEH WITH 3 DOTS POINTING UPWARDS BELOW; D; FEH -0762; KEHEH WITH DOT ABOVE; D; GAF -0763; KEHEH WITH 3 DOTS ABOVE; D; GAF -0764; KEHEH WITH 3 DOTS POINTING UPWARDS BELOW; D; GAF -0765; MEEM WITH DOT ABOVE; D; MEEM -0766; MEEM WITH DOT BELOW; D; MEEM -0767; NOON WITH 2 DOTS BELOW; D; NOON -0768; NOON WITH SMALL TAH; D; NOON -0769; NOON WITH SMALL V; D; NOON -076A; LAM WITH BAR; D; LAM -076B; REH WITH 2 DOTS VERTICALLY ABOVE; R; REH -076C; REH WITH HAMZA ABOVE; R; REH -076D; SEEN WITH 2 DOTS VERTICALLY ABOVE; D; SEEN - -# Other - -200D; ZERO WIDTH JOINER; C; No_Joining_Group -200C; ZERO WIDTH NON-JOINER; U; No_Joining_Group diff --git a/Master/tlpkg/tlperl.old/lib/unicore/BidiMirroring.txt b/Master/tlpkg/tlperl.old/lib/unicore/BidiMirroring.txt deleted file mode 100644 index 45167fbb99c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/BidiMirroring.txt +++ /dev/null @@ -1,550 +0,0 @@ -# BidiMirroring-4.1.0.txt -# Date: 2005-03-17, 15:21:00 PST [KW] -# -# Bidi_Mirroring_Glyph Property -# -# This file is an informative contributory data file in the -# Unicode Character Database. -# -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# -# This data file lists characters that have the mirrored property -# where there is another Unicode character that typically has a glyph -# that is the mirror image of the original character's glyph. -# The repertoire covered by the file is Unicode 4.1.0. -# -# The file contains a list of lines with mappings from one code point -# to another one for character-based mirroring. -# Note that for "real" mirroring, a rendering engine needs to select -# appropriate alternative glyphs, and that many Unicode characters do not -# have a mirror-image Unicode character. -# -# Each mapping line contains two fields, separated by a semicolon (';'). -# Each of the two fields contains a code point represented as a -# variable-length hexadecimal value with 4 to 6 digits. -# A comment indicates where the characters are "BEST FIT" mirroring. -# -# Code points with the "mirrored" property but no appropriate mirrors are -# listed as comments at the end of the file. -# -# For information on bidi mirroring, see UAX #9: Bidirectional Algorithm, -# at http://www.unicode.org/unicode/reports/tr9/ -# -# This file was originally created by Markus Scherer. -# Extended for Unicode 3.2, 4.0, and 4.1 by Ken Whistler. -# -# ############################################################ - -0028; 0029 # LEFT PARENTHESIS -0029; 0028 # RIGHT PARENTHESIS -003C; 003E # LESS-THAN SIGN -003E; 003C # GREATER-THAN SIGN -005B; 005D # LEFT SQUARE BRACKET -005D; 005B # RIGHT SQUARE BRACKET -007B; 007D # LEFT CURLY BRACKET -007D; 007B # RIGHT CURLY BRACKET -00AB; 00BB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -00BB; 00AB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -2039; 203A # SINGLE LEFT-POINTING ANGLE QUOTATION MARK -203A; 2039 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -2045; 2046 # LEFT SQUARE BRACKET WITH QUILL -2046; 2045 # RIGHT SQUARE BRACKET WITH QUILL -207D; 207E # SUPERSCRIPT LEFT PARENTHESIS -207E; 207D # SUPERSCRIPT RIGHT PARENTHESIS -208D; 208E # SUBSCRIPT LEFT PARENTHESIS -208E; 208D # SUBSCRIPT RIGHT PARENTHESIS -2208; 220B # ELEMENT OF -2209; 220C # NOT AN ELEMENT OF -220A; 220D # SMALL ELEMENT OF -220B; 2208 # CONTAINS AS MEMBER -220C; 2209 # DOES NOT CONTAIN AS MEMBER -220D; 220A # SMALL CONTAINS AS MEMBER -2215; 29F5 # DIVISION SLASH -223C; 223D # TILDE OPERATOR -223D; 223C # REVERSED TILDE -2243; 22CD # ASYMPTOTICALLY EQUAL TO -2252; 2253 # APPROXIMATELY EQUAL TO OR THE IMAGE OF -2253; 2252 # IMAGE OF OR APPROXIMATELY EQUAL TO -2254; 2255 # COLON EQUALS -2255; 2254 # EQUALS COLON -2264; 2265 # LESS-THAN OR EQUAL TO -2265; 2264 # GREATER-THAN OR EQUAL TO -2266; 2267 # LESS-THAN OVER EQUAL TO -2267; 2266 # GREATER-THAN OVER EQUAL TO -2268; 2269 # [BEST FIT] LESS-THAN BUT NOT EQUAL TO -2269; 2268 # [BEST FIT] GREATER-THAN BUT NOT EQUAL TO -226A; 226B # MUCH LESS-THAN -226B; 226A # MUCH GREATER-THAN -226E; 226F # [BEST FIT] NOT LESS-THAN -226F; 226E # [BEST FIT] NOT GREATER-THAN -2270; 2271 # [BEST FIT] NEITHER LESS-THAN NOR EQUAL TO -2271; 2270 # [BEST FIT] NEITHER GREATER-THAN NOR EQUAL TO -2272; 2273 # [BEST FIT] LESS-THAN OR EQUIVALENT TO -2273; 2272 # [BEST FIT] GREATER-THAN OR EQUIVALENT TO -2274; 2275 # [BEST FIT] NEITHER LESS-THAN NOR EQUIVALENT TO -2275; 2274 # [BEST FIT] NEITHER GREATER-THAN NOR EQUIVALENT TO -2276; 2277 # LESS-THAN OR GREATER-THAN -2277; 2276 # GREATER-THAN OR LESS-THAN -2278; 2279 # NEITHER LESS-THAN NOR GREATER-THAN -2279; 2278 # NEITHER GREATER-THAN NOR LESS-THAN -227A; 227B # PRECEDES -227B; 227A # SUCCEEDS -227C; 227D # PRECEDES OR EQUAL TO -227D; 227C # SUCCEEDS OR EQUAL TO -227E; 227F # [BEST FIT] PRECEDES OR EQUIVALENT TO -227F; 227E # [BEST FIT] SUCCEEDS OR EQUIVALENT TO -2280; 2281 # [BEST FIT] DOES NOT PRECEDE -2281; 2280 # [BEST FIT] DOES NOT SUCCEED -2282; 2283 # SUBSET OF -2283; 2282 # SUPERSET OF -2284; 2285 # [BEST FIT] NOT A SUBSET OF -2285; 2284 # [BEST FIT] NOT A SUPERSET OF -2286; 2287 # SUBSET OF OR EQUAL TO -2287; 2286 # SUPERSET OF OR EQUAL TO -2288; 2289 # [BEST FIT] NEITHER A SUBSET OF NOR EQUAL TO -2289; 2288 # [BEST FIT] NEITHER A SUPERSET OF NOR EQUAL TO -228A; 228B # [BEST FIT] SUBSET OF WITH NOT EQUAL TO -228B; 228A # [BEST FIT] SUPERSET OF WITH NOT EQUAL TO -228F; 2290 # SQUARE IMAGE OF -2290; 228F # SQUARE ORIGINAL OF -2291; 2292 # SQUARE IMAGE OF OR EQUAL TO -2292; 2291 # SQUARE ORIGINAL OF OR EQUAL TO -2298; 29B8 # CIRCLED DIVISION SLASH -22A2; 22A3 # RIGHT TACK -22A3; 22A2 # LEFT TACK -22A6; 2ADE # ASSERTION -22A8; 2AE4 # TRUE -22A9; 2AE3 # FORCES -22AB; 2AE5 # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE -22B0; 22B1 # PRECEDES UNDER RELATION -22B1; 22B0 # SUCCEEDS UNDER RELATION -22B2; 22B3 # NORMAL SUBGROUP OF -22B3; 22B2 # CONTAINS AS NORMAL SUBGROUP -22B4; 22B5 # NORMAL SUBGROUP OF OR EQUAL TO -22B5; 22B4 # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO -22B6; 22B7 # ORIGINAL OF -22B7; 22B6 # IMAGE OF -22C9; 22CA # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT -22CA; 22C9 # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT -22CB; 22CC # LEFT SEMIDIRECT PRODUCT -22CC; 22CB # RIGHT SEMIDIRECT PRODUCT -22CD; 2243 # REVERSED TILDE EQUALS -22D0; 22D1 # DOUBLE SUBSET -22D1; 22D0 # DOUBLE SUPERSET -22D6; 22D7 # LESS-THAN WITH DOT -22D7; 22D6 # GREATER-THAN WITH DOT -22D8; 22D9 # VERY MUCH LESS-THAN -22D9; 22D8 # VERY MUCH GREATER-THAN -22DA; 22DB # LESS-THAN EQUAL TO OR GREATER-THAN -22DB; 22DA # GREATER-THAN EQUAL TO OR LESS-THAN -22DC; 22DD # EQUAL TO OR LESS-THAN -22DD; 22DC # EQUAL TO OR GREATER-THAN -22DE; 22DF # EQUAL TO OR PRECEDES -22DF; 22DE # EQUAL TO OR SUCCEEDS -22E0; 22E1 # [BEST FIT] DOES NOT PRECEDE OR EQUAL -22E1; 22E0 # [BEST FIT] DOES NOT SUCCEED OR EQUAL -22E2; 22E3 # [BEST FIT] NOT SQUARE IMAGE OF OR EQUAL TO -22E3; 22E2 # [BEST FIT] NOT SQUARE ORIGINAL OF OR EQUAL TO -22E4; 22E5 # [BEST FIT] SQUARE IMAGE OF OR NOT EQUAL TO -22E5; 22E4 # [BEST FIT] SQUARE ORIGINAL OF OR NOT EQUAL TO -22E6; 22E7 # [BEST FIT] LESS-THAN BUT NOT EQUIVALENT TO -22E7; 22E6 # [BEST FIT] GREATER-THAN BUT NOT EQUIVALENT TO -22E8; 22E9 # [BEST FIT] PRECEDES BUT NOT EQUIVALENT TO -22E9; 22E8 # [BEST FIT] SUCCEEDS BUT NOT EQUIVALENT TO -22EA; 22EB # [BEST FIT] NOT NORMAL SUBGROUP OF -22EB; 22EA # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP -22EC; 22ED # [BEST FIT] NOT NORMAL SUBGROUP OF OR EQUAL TO -22ED; 22EC # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL -22F0; 22F1 # UP RIGHT DIAGONAL ELLIPSIS -22F1; 22F0 # DOWN RIGHT DIAGONAL ELLIPSIS -22F2; 22FA # ELEMENT OF WITH LONG HORIZONTAL STROKE -22F3; 22FB # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22F4; 22FC # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22F6; 22FD # ELEMENT OF WITH OVERBAR -22F7; 22FE # SMALL ELEMENT OF WITH OVERBAR -22FA; 22F2 # CONTAINS WITH LONG HORIZONTAL STROKE -22FB; 22F3 # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22FC; 22F4 # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22FD; 22F6 # CONTAINS WITH OVERBAR -22FE; 22F7 # SMALL CONTAINS WITH OVERBAR -2308; 2309 # LEFT CEILING -2309; 2308 # RIGHT CEILING -230A; 230B # LEFT FLOOR -230B; 230A # RIGHT FLOOR -2329; 232A # LEFT-POINTING ANGLE BRACKET -232A; 2329 # RIGHT-POINTING ANGLE BRACKET -2768; 2769 # MEDIUM LEFT PARENTHESIS ORNAMENT -2769; 2768 # MEDIUM RIGHT PARENTHESIS ORNAMENT -276A; 276B # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT -276B; 276A # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT -276C; 276D # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT -276D; 276C # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT -276E; 276F # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT -276F; 276E # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT -2770; 2771 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT -2771; 2770 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT -2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET -2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET -2774; 2775 # MEDIUM LEFT CURLY BRACKET ORNAMENT -2775; 2774 # MEDIUM RIGHT CURLY BRACKET ORNAMENT -27C3; 27C4 # OPEN SUBSET -27C4; 27C3 # OPEN SUPERSET -27C5; 27C6 # LEFT S-SHAPED BAG DELIMITER -27C6; 27C5 # RIGHT S-SHAPED BAG DELIMITER -27D5; 27D6 # LEFT OUTER JOIN -27D6; 27D5 # RIGHT OUTER JOIN -27DD; 27DE # LONG RIGHT TACK -27DE; 27DD # LONG LEFT TACK -27E2; 27E3 # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK -27E3; 27E2 # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK -27E4; 27E5 # WHITE SQUARE WITH LEFTWARDS TICK -27E5; 27E4 # WHITE SQUARE WITH RIGHTWARDS TICK -27E6; 27E7 # MATHEMATICAL LEFT WHITE SQUARE BRACKET -27E7; 27E6 # MATHEMATICAL RIGHT WHITE SQUARE BRACKET -27E8; 27E9 # MATHEMATICAL LEFT ANGLE BRACKET -27E9; 27E8 # MATHEMATICAL RIGHT ANGLE BRACKET -27EA; 27EB # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET -27EB; 27EA # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET -2983; 2984 # LEFT WHITE CURLY BRACKET -2984; 2983 # RIGHT WHITE CURLY BRACKET -2985; 2986 # LEFT WHITE PARENTHESIS -2986; 2985 # RIGHT WHITE PARENTHESIS -2987; 2988 # Z NOTATION LEFT IMAGE BRACKET -2988; 2987 # Z NOTATION RIGHT IMAGE BRACKET -2989; 298A # Z NOTATION LEFT BINDING BRACKET -298A; 2989 # Z NOTATION RIGHT BINDING BRACKET -298B; 298C # LEFT SQUARE BRACKET WITH UNDERBAR -298C; 298B # RIGHT SQUARE BRACKET WITH UNDERBAR -298D; 2990 # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER -298E; 298F # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -298F; 298E # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -2990; 298D # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER -2991; 2992 # LEFT ANGLE BRACKET WITH DOT -2992; 2991 # RIGHT ANGLE BRACKET WITH DOT -2993; 2994 # LEFT ARC LESS-THAN BRACKET -2994; 2993 # RIGHT ARC GREATER-THAN BRACKET -2995; 2996 # DOUBLE LEFT ARC GREATER-THAN BRACKET -2996; 2995 # DOUBLE RIGHT ARC LESS-THAN BRACKET -2997; 2998 # LEFT BLACK TORTOISE SHELL BRACKET -2998; 2997 # RIGHT BLACK TORTOISE SHELL BRACKET -29B8; 2298 # CIRCLED REVERSE SOLIDUS -29C0; 29C1 # CIRCLED LESS-THAN -29C1; 29C0 # CIRCLED GREATER-THAN -29C4; 29C5 # SQUARED RISING DIAGONAL SLASH -29C5; 29C4 # SQUARED FALLING DIAGONAL SLASH -29CF; 29D0 # LEFT TRIANGLE BESIDE VERTICAL BAR -29D0; 29CF # VERTICAL BAR BESIDE RIGHT TRIANGLE -29D1; 29D2 # BOWTIE WITH LEFT HALF BLACK -29D2; 29D1 # BOWTIE WITH RIGHT HALF BLACK -29D4; 29D5 # TIMES WITH LEFT HALF BLACK -29D5; 29D4 # TIMES WITH RIGHT HALF BLACK -29D8; 29D9 # LEFT WIGGLY FENCE -29D9; 29D8 # RIGHT WIGGLY FENCE -29DA; 29DB # LEFT DOUBLE WIGGLY FENCE -29DB; 29DA # RIGHT DOUBLE WIGGLY FENCE -29F5; 2215 # REVERSE SOLIDUS OPERATOR -29F8; 29F9 # BIG SOLIDUS -29F9; 29F8 # BIG REVERSE SOLIDUS -29FC; 29FD # LEFT-POINTING CURVED ANGLE BRACKET -29FD; 29FC # RIGHT-POINTING CURVED ANGLE BRACKET -2A2B; 2A2C # MINUS SIGN WITH FALLING DOTS -2A2C; 2A2B # MINUS SIGN WITH RISING DOTS -2A2D; 2A2E # PLUS SIGN IN LEFT HALF CIRCLE -2A2E; 2A2D # PLUS SIGN IN RIGHT HALF CIRCLE -2A34; 2A35 # MULTIPLICATION SIGN IN LEFT HALF CIRCLE -2A35; 2A34 # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE -2A3C; 2A3D # INTERIOR PRODUCT -2A3D; 2A3C # RIGHTHAND INTERIOR PRODUCT -2A64; 2A65 # Z NOTATION DOMAIN ANTIRESTRICTION -2A65; 2A64 # Z NOTATION RANGE ANTIRESTRICTION -2A79; 2A7A # LESS-THAN WITH CIRCLE INSIDE -2A7A; 2A79 # GREATER-THAN WITH CIRCLE INSIDE -2A7D; 2A7E # LESS-THAN OR SLANTED EQUAL TO -2A7E; 2A7D # GREATER-THAN OR SLANTED EQUAL TO -2A7F; 2A80 # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE -2A80; 2A7F # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE -2A81; 2A82 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE -2A82; 2A81 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE -2A83; 2A84 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT -2A84; 2A83 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT -2A8B; 2A8C # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN -2A8C; 2A8B # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN -2A91; 2A92 # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL -2A92; 2A91 # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL -2A93; 2A94 # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL -2A94; 2A93 # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL -2A95; 2A96 # SLANTED EQUAL TO OR LESS-THAN -2A96; 2A95 # SLANTED EQUAL TO OR GREATER-THAN -2A97; 2A98 # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE -2A98; 2A97 # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE -2A99; 2A9A # DOUBLE-LINE EQUAL TO OR LESS-THAN -2A9A; 2A99 # DOUBLE-LINE EQUAL TO OR GREATER-THAN -2A9B; 2A9C # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN -2A9C; 2A9B # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN -2AA1; 2AA2 # DOUBLE NESTED LESS-THAN -2AA2; 2AA1 # DOUBLE NESTED GREATER-THAN -2AA6; 2AA7 # LESS-THAN CLOSED BY CURVE -2AA7; 2AA6 # GREATER-THAN CLOSED BY CURVE -2AA8; 2AA9 # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL -2AA9; 2AA8 # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL -2AAA; 2AAB # SMALLER THAN -2AAB; 2AAA # LARGER THAN -2AAC; 2AAD # SMALLER THAN OR EQUAL TO -2AAD; 2AAC # LARGER THAN OR EQUAL TO -2AAF; 2AB0 # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN -2AB0; 2AAF # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN -2AB3; 2AB4 # PRECEDES ABOVE EQUALS SIGN -2AB4; 2AB3 # SUCCEEDS ABOVE EQUALS SIGN -2ABB; 2ABC # DOUBLE PRECEDES -2ABC; 2ABB # DOUBLE SUCCEEDS -2ABD; 2ABE # SUBSET WITH DOT -2ABE; 2ABD # SUPERSET WITH DOT -2ABF; 2AC0 # SUBSET WITH PLUS SIGN BELOW -2AC0; 2ABF # SUPERSET WITH PLUS SIGN BELOW -2AC1; 2AC2 # SUBSET WITH MULTIPLICATION SIGN BELOW -2AC2; 2AC1 # SUPERSET WITH MULTIPLICATION SIGN BELOW -2AC3; 2AC4 # SUBSET OF OR EQUAL TO WITH DOT ABOVE -2AC4; 2AC3 # SUPERSET OF OR EQUAL TO WITH DOT ABOVE -2AC5; 2AC6 # SUBSET OF ABOVE EQUALS SIGN -2AC6; 2AC5 # SUPERSET OF ABOVE EQUALS SIGN -2ACD; 2ACE # SQUARE LEFT OPEN BOX OPERATOR -2ACE; 2ACD # SQUARE RIGHT OPEN BOX OPERATOR -2ACF; 2AD0 # CLOSED SUBSET -2AD0; 2ACF # CLOSED SUPERSET -2AD1; 2AD2 # CLOSED SUBSET OR EQUAL TO -2AD2; 2AD1 # CLOSED SUPERSET OR EQUAL TO -2AD3; 2AD4 # SUBSET ABOVE SUPERSET -2AD4; 2AD3 # SUPERSET ABOVE SUBSET -2AD5; 2AD6 # SUBSET ABOVE SUBSET -2AD6; 2AD5 # SUPERSET ABOVE SUPERSET -2ADE; 22A6 # SHORT LEFT TACK -2AE3; 22A9 # DOUBLE VERTICAL BAR LEFT TURNSTILE -2AE4; 22A8 # VERTICAL BAR DOUBLE LEFT TURNSTILE -2AE5; 22AB # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE -2AEC; 2AED # DOUBLE STROKE NOT SIGN -2AED; 2AEC # REVERSED DOUBLE STROKE NOT SIGN -2AF7; 2AF8 # TRIPLE NESTED LESS-THAN -2AF8; 2AF7 # TRIPLE NESTED GREATER-THAN -2AF9; 2AFA # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO -2AFA; 2AF9 # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO -2E02; 2E03 # LEFT SUBSTITUTION BRACKET -2E03; 2E02 # RIGHT SUBSTITUTION BRACKET -2E04; 2E05 # LEFT DOTTED SUBSTITUTION BRACKET -2E05; 2E04 # RIGHT DOTTED SUBSTITUTION BRACKET -2E09; 2E0A # LEFT TRANSPOSITION BRACKET -2E0A; 2E09 # RIGHT TRANSPOSITION BRACKET -2E0C; 2E0D # LEFT RAISED OMISSION BRACKET -2E0D; 2E0C # RIGHT RAISED OMISSION BRACKET -2E1C; 2E1D # LEFT LOW PARAPHRASE BRACKET -2E1D; 2E1C # RIGHT LOW PARAPHRASE BRACKET -3008; 3009 # LEFT ANGLE BRACKET -3009; 3008 # RIGHT ANGLE BRACKET -300A; 300B # LEFT DOUBLE ANGLE BRACKET -300B; 300A # RIGHT DOUBLE ANGLE BRACKET -300C; 300D # [BEST FIT] LEFT CORNER BRACKET -300D; 300C # [BEST FIT] RIGHT CORNER BRACKET -300E; 300F # [BEST FIT] LEFT WHITE CORNER BRACKET -300F; 300E # [BEST FIT] RIGHT WHITE CORNER BRACKET -3010; 3011 # LEFT BLACK LENTICULAR BRACKET -3011; 3010 # RIGHT BLACK LENTICULAR BRACKET -3014; 3015 # LEFT TORTOISE SHELL BRACKET -3015; 3014 # RIGHT TORTOISE SHELL BRACKET -3016; 3017 # LEFT WHITE LENTICULAR BRACKET -3017; 3016 # RIGHT WHITE LENTICULAR BRACKET -3018; 3019 # LEFT WHITE TORTOISE SHELL BRACKET -3019; 3018 # RIGHT WHITE TORTOISE SHELL BRACKET -301A; 301B # LEFT WHITE SQUARE BRACKET -301B; 301A # RIGHT WHITE SQUARE BRACKET -FF08; FF09 # FULLWIDTH LEFT PARENTHESIS -FF09; FF08 # FULLWIDTH RIGHT PARENTHESIS -FF1C; FF1E # FULLWIDTH LESS-THAN SIGN -FF1E; FF1C # FULLWIDTH GREATER-THAN SIGN -FF3B; FF3D # FULLWIDTH LEFT SQUARE BRACKET -FF3D; FF3B # FULLWIDTH RIGHT SQUARE BRACKET -FF5B; FF5D # FULLWIDTH LEFT CURLY BRACKET -FF5D; FF5B # FULLWIDTH RIGHT CURLY BRACKET -FF5F; FF60 # FULLWIDTH LEFT WHITE PARENTHESIS -FF60; FF5F # FULLWIDTH RIGHT WHITE PARENTHESIS -FF62; FF63 # [BEST FIT] HALFWIDTH LEFT CORNER BRACKET -FF63; FF62 # [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET - -# The following characters have no appropriate mirroring character. -# For these characters it is up to the rendering system -# to provide mirrored glyphs. - -# 2140; DOUBLE-STRUCK N-ARY SUMMATION -# 2201; COMPLEMENT -# 2202; PARTIAL DIFFERENTIAL -# 2203; THERE EXISTS -# 2204; THERE DOES NOT EXIST -# 2211; N-ARY SUMMATION -# 2216; SET MINUS -# 221A; SQUARE ROOT -# 221B; CUBE ROOT -# 221C; FOURTH ROOT -# 221D; PROPORTIONAL TO -# 221F; RIGHT ANGLE -# 2220; ANGLE -# 2221; MEASURED ANGLE -# 2222; SPHERICAL ANGLE -# 2224; DOES NOT DIVIDE -# 2226; NOT PARALLEL TO -# 222B; INTEGRAL -# 222C; DOUBLE INTEGRAL -# 222D; TRIPLE INTEGRAL -# 222E; CONTOUR INTEGRAL -# 222F; SURFACE INTEGRAL -# 2230; VOLUME INTEGRAL -# 2231; CLOCKWISE INTEGRAL -# 2232; CLOCKWISE CONTOUR INTEGRAL -# 2233; ANTICLOCKWISE CONTOUR INTEGRAL -# 2239; EXCESS -# 223B; HOMOTHETIC -# 223E; INVERTED LAZY S -# 223F; SINE WAVE -# 2240; WREATH PRODUCT -# 2241; NOT TILDE -# 2242; MINUS TILDE -# 2244; NOT ASYMPTOTICALLY EQUAL TO -# 2245; APPROXIMATELY EQUAL TO -# 2246; APPROXIMATELY BUT NOT ACTUALLY EQUAL TO -# 2247; NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO -# 2248; ALMOST EQUAL TO -# 2249; NOT ALMOST EQUAL TO -# 224A; ALMOST EQUAL OR EQUAL TO -# 224B; TRIPLE TILDE -# 224C; ALL EQUAL TO -# 225F; QUESTIONED EQUAL TO -# 2260; NOT EQUAL TO -# 2262; NOT IDENTICAL TO -# 228C; MULTISET -# 22A7; MODELS -# 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE -# 22AC; DOES NOT PROVE -# 22AD; NOT TRUE -# 22AE; DOES NOT FORCE -# 22AF; NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE -# 22B8; MULTIMAP -# 22BE; RIGHT ANGLE WITH ARC -# 22BF; RIGHT TRIANGLE -# 22F5; ELEMENT OF WITH DOT ABOVE -# 22F8; ELEMENT OF WITH UNDERBAR -# 22F9; ELEMENT OF WITH TWO HORIZONTAL STROKES -# 22FF; Z NOTATION BAG MEMBERSHIP -# 2320; TOP HALF INTEGRAL -# 2321; BOTTOM HALF INTEGRAL -# 27C0; THREE DIMENSIONAL ANGLE -# 27D3; LOWER RIGHT CORNER WITH DOT -# 27D4; UPPER LEFT CORNER WITH DOT -# 27DC; LEFT MULTIMAP -# 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 -# 29C2; CIRCLE WITH SMALL CIRCLE TO THE RIGHT -# 29C3; CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT -# 29C9; TWO JOINED SQUARES -# 29CE; RIGHT TRIANGLE ABOVE LEFT TRIANGLE -# 29DC; INCOMPLETE INFINITY -# 29E1; INCREASES AS -# 29E3; EQUALS SIGN AND SLANTED PARALLEL -# 29E4; EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE -# 29E5; IDENTICAL TO AND SLANTED PARALLEL -# 29E8; DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK -# 29E9; DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK -# 29F4; RULE-DELAYED -# 29F6; SOLIDUS WITH OVERBAR -# 29F7; REVERSE SOLIDUS WITH HORIZONTAL STROKE -# 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 -# 2A1E; LARGE LEFT TRIANGLE OPERATOR -# 2A1F; Z NOTATION SCHEMA COMPOSITION -# 2A20; Z NOTATION SCHEMA PIPING -# 2A21; Z NOTATION SCHEMA PROJECTION -# 2A24; PLUS SIGN WITH TILDE ABOVE -# 2A26; PLUS SIGN WITH TILDE BELOW -# 2A29; MINUS SIGN WITH COMMA ABOVE -# 2A3E; Z NOTATION RELATIONAL COMPOSITION -# 2A57; SLOPING LARGE OR -# 2A58; SLOPING LARGE AND -# 2A6A; TILDE OPERATOR WITH DOT ABOVE -# 2A6B; TILDE OPERATOR WITH RISING DOTS -# 2A6C; SIMILAR MINUS SIMILAR -# 2A6D; CONGRUENT WITH DOT ABOVE -# 2A6F; ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT -# 2A70; APPROXIMATELY EQUAL OR EQUAL TO -# 2A73; EQUALS SIGN ABOVE TILDE OPERATOR -# 2A74; DOUBLE COLON EQUAL -# 2A7B; LESS-THAN WITH QUESTION MARK ABOVE -# 2A7C; GREATER-THAN WITH QUESTION MARK ABOVE -# 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 -# 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 -# 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 -# 2AA3; DOUBLE NESTED LESS-THAN WITH UNDERBAR -# 2AB1; PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO -# 2AB2; SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO -# 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 -# 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 -# 2ADC; FORKING -# 2AE2; VERTICAL BAR TRIPLE RIGHT TURNSTILE -# 2AE6; LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL -# 2AEE; DOES NOT DIVIDE WITH REVERSED NEGATION SLASH -# 2AF3; PARALLEL WITH TILDE OPERATOR -# 2AFB; TRIPLE SOLIDUS BINARY RELATION -# 2AFD; DOUBLE SOLIDUS OPERATOR diff --git a/Master/tlpkg/tlperl.old/lib/unicore/Blocks.txt b/Master/tlpkg/tlperl.old/lib/unicore/Blocks.txt deleted file mode 100644 index f2b95662745..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/Blocks.txt +++ /dev/null @@ -1,172 +0,0 @@ -# Blocks-4.1.0.txt -# Date: 2005-1-31, 16:50 [KW] -# -# Unicode Character Database -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# For documentation, see UCD.html -# -# Note: The casing of block names is not normative. -# For example, "Basic Latin" and "BASIC LATIN" are equivalent. -# -# Format: -# Start Code..End Code; Block Name - -# ================================================ - -# Note: When comparing block names, casing, whitespace, hyphens, -# and underbars are ignored. -# For example, "Latin Extended-A" and "latin extended a" are equivalent. -# For more information on the comparison of property values, -# see UCD.html. -# -# All code points not explicitly listed for Block -# have the value No_Block. - -# Property: Block - -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 Supplement -0530..058F; Armenian -0590..05FF; Hebrew -0600..06FF; Arabic -0700..074F; Syriac -0750..077F; Arabic Supplement -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 -1380..139F; Ethiopic Supplement -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 -1900..194F; Limbu -1950..197F; Tai Le -1980..19DF; New Tai Lue -19E0..19FF; Khmer Symbols -1A00..1A1F; Buginese -1D00..1D7F; Phonetic Extensions -1D80..1DBF; Phonetic Extensions Supplement -1DC0..1DFF; Combining Diacritical Marks Supplement -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 -2B00..2BFF; Miscellaneous Symbols and Arrows -2C00..2C5F; Glagolitic -2C80..2CFF; Coptic -2D00..2D2F; Georgian Supplement -2D30..2D7F; Tifinagh -2D80..2DDF; Ethiopic Extended -2E00..2E7F; Supplemental Punctuation -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 -31C0..31EF; CJK Strokes -31F0..31FF; Katakana Phonetic Extensions -3200..32FF; Enclosed CJK Letters and Months -3300..33FF; CJK Compatibility -3400..4DBF; CJK Unified Ideographs Extension A -4DC0..4DFF; Yijing Hexagram Symbols -4E00..9FFF; CJK Unified Ideographs -A000..A48F; Yi Syllables -A490..A4CF; Yi Radicals -A700..A71F; Modifier Tone Letters -A800..A82F; Syloti Nagri -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 -FE10..FE1F; Vertical Forms -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 -10000..1007F; Linear B Syllabary -10080..100FF; Linear B Ideograms -10100..1013F; Aegean Numbers -10140..1018F; Ancient Greek Numbers -10300..1032F; Old Italic -10330..1034F; Gothic -10380..1039F; Ugaritic -103A0..103DF; Old Persian -10400..1044F; Deseret -10450..1047F; Shavian -10480..104AF; Osmanya -10800..1083F; Cypriot Syllabary -10A00..10A5F; Kharoshthi -1D000..1D0FF; Byzantine Musical Symbols -1D100..1D1FF; Musical Symbols -1D200..1D24F; Ancient Greek Musical Notation -1D300..1D35F; Tai Xuan Jing Symbols -1D400..1D7FF; Mathematical Alphanumeric Symbols -20000..2A6DF; CJK Unified Ideographs Extension B -2F800..2FA1F; CJK Compatibility Ideographs Supplement -E0000..E007F; Tags -E0100..E01EF; Variation Selectors Supplement -F0000..FFFFF; Supplementary Private Use Area-A -100000..10FFFF; Supplementary Private Use Area-B diff --git a/Master/tlpkg/tlperl.old/lib/unicore/Canonical.pl b/Master/tlpkg/tlperl.old/lib/unicore/Canonical.pl deleted file mode 100644 index fce1e219700..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/Canonical.pl +++ /dev/null @@ -1,1042 +0,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 = ( - - # InAegeanNumbers - aegeannumbers => 'InAegean', - - alphabetic => 'Alphabet', - - # InAlphabeticPresentationForms - alphabeticpresentationforms => 'InAlphab', - - # InAncientGreekMusicalNotation - ancientgreekmusicalnotation => 'InAncie2', - - # InAncientGreekNumbers - ancientgreeknumbers => 'InAncien', - - arabic => 'Arab', - - # InArabicPresentationFormsA - arabicpresentationformsa => 'InArabi4', - - # InArabicPresentationFormsB - arabicpresentationformsb => 'InArabi3', - - # InArabicSupplement - arabicsupplement => 'InArabi2', - - armenian => 'Armn', - - # InArrows - arrows => 'InArrows', - - # AsciiHexDigit - asciihexdigit => 'AsciiHex', - - # InBasicLatin - basiclatin => 'InBasicL', - - bengali => 'Beng', - - # BidiControl - bidicontrol => 'BidiCont', - - # InBlockElements - blockelements => 'InBlockE', - - bopomofo => 'Bopo', - - # InBopomofoExtended - bopomofoextended => 'InBopom2', - - # InBoxDrawing - boxdrawing => 'InBoxDra', - - braille => 'Brai', - - # InBraillePatterns - braillepatterns => 'InBraill', - - buginese => 'Bugi', - buhid => 'Buhd', - - # InByzantineMusicalSymbols - byzantinemusicalsymbols => 'InByzant', - - # CanadianAboriginal - canadianaboriginal => 'Canadian', - - # CasedLetter - casedletter => 'LC', - - cherokee => 'Cher', - - # InCjkCompatibility - cjkcompatibility => 'InCjkCom', - - # InCjkCompatibilityForms - cjkcompatibilityforms => 'InCjkCo2', - - # InCjkCompatibilityIdeographs - cjkcompatibilityideographs => 'InCjkCo3', - - # InCjkCompatibilityIdeographsSupplement - cjkcompatibilityideographssupplement => 'InCjkCo4', - - # InCjkRadicalsSupplement - cjkradicalssupplement => 'InCjkRad', - - # InCjkStrokes - cjkstrokes => 'InCjkStr', - - # InCjkSymbolsAndPunctuation - cjksymbolsandpunctuation => 'InCjkSym', - - # InCjkUnifiedIdeographs - cjkunifiedideographs => 'InCjkUni', - - # InCjkUnifiedIdeographsExtensionA - cjkunifiedideographsextensiona => 'InCjkUn3', - - # InCjkUnifiedIdeographsExtensionB - cjkunifiedideographsextensionb => 'InCjkUn2', - - # ClosePunctuation - closepunctuation => 'Pe', - - # InCombiningDiacriticalMarks - combiningdiacriticalmarks => 'InCombi2', - - # InCombiningDiacriticalMarksForSymbols - combiningdiacriticalmarksforsymbols => 'InCombi4', - - # InCombiningDiacriticalMarksSupplement - combiningdiacriticalmarkssupplement => 'InCombi3', - - # InCombiningHalfMarks - combininghalfmarks => 'InCombin', - - common => 'Zyyy', - - # ConnectorPunctuation - connectorpunctuation => 'Pc', - - control => 'Cc', - - # InControlPictures - controlpictures => 'InContro', - - coptic => 'Copt', - - # CurrencySymbol - currencysymbol => 'Sc', - - # InCurrencySymbols - currencysymbols => 'InCurren', - - cypriot => 'Cprt', - - # InCypriotSyllabary - cypriotsyllabary => 'InCyprio', - - cyrillic => 'Cyrl', - - # InCyrillicSupplement - cyrillicsupplement => 'InCyril2', - - dash => 'Dash2', - - # DashPunctuation - dashpunctuation => 'Pd', - - # DecimalNumber - decimalnumber => 'Nd', - - deprecated => 'Deprecat', - deseret => 'Dsrt', - devanagari => 'Deva', - diacritic => 'Diacriti', - - # InDingbats - dingbats => 'InDingba', - - # InEnclosedAlphanumerics - enclosedalphanumerics => 'InEnclos', - - # InEnclosedCjkLettersAndMonths - enclosedcjklettersandmonths => 'InEnclo2', - - # EnclosingMark - enclosingmark => 'Me', - - ethiopic => 'Ethi', - - # InEthiopicExtended - ethiopicextended => 'InEthio2', - - # InEthiopicSupplement - ethiopicsupplement => 'InEthio3', - - extender => 'Extender', - - # FinalPunctuation - finalpunctuation => 'Pf', - - format => 'Cf', - - # InGeneralPunctuation - generalpunctuation => 'InGenera', - - # InGeometricShapes - geometricshapes => 'InGeomet', - - georgian => 'Geor', - - # InGeorgianSupplement - georgiansupplement => 'InGeorg2', - - glagolitic => 'Glag', - gothic => 'Goth', - - # GraphemeLink - graphemelink => 'Grapheme', - - greek => 'Grek', - - # InGreekAndCoptic - greekandcoptic => 'InGreekA', - - # InGreekExtended - greekextended => 'InGreekE', - - gujarati => 'Gujr', - gurmukhi => 'Guru', - - # InHalfwidthAndFullwidthForms - halfwidthandfullwidthforms => 'InHalfwi', - - han => 'Hani', - hangul => 'Hang', - - # InHangulCompatibilityJamo - hangulcompatibilityjamo => 'InHangu3', - - # InHangulJamo - hanguljamo => 'InHangul', - - # InHangulSyllables - hangulsyllables => 'InHangu2', - - hanunoo => 'Hano', - hebrew => 'Hebr', - - # HexDigit - hexdigit => 'HexDigit', - - # InHighPrivateUseSurrogates - highprivateusesurrogates => 'InHighPr', - - # InHighSurrogates - highsurrogates => 'InHighSu', - - hiragana => 'Hira', - hyphen => 'Hyphen2', - - # IdContinue - idcontinue => 'IdContin', - - ideographic => 'Ideograp', - - # InIdeographicDescriptionCharacters - ideographicdescriptioncharacters => 'InIdeogr', - - # IdsBinaryOperator - idsbinaryoperator => 'IdsBinar', - - # IdStart - idstart => 'IdStart', - - # IdsTrinaryOperator - idstrinaryoperator => 'IdsTrina', - - # InAegeanNumbers - inaegeannumbers => 'InAegean', - - # InAlphabeticPresentationForms - inalphabeticpresentationforms => 'InAlphab', - - # InAncientGreekMusicalNotation - inancientgreekmusicalnotation => 'InAncie2', - - # InAncientGreekNumbers - inancientgreeknumbers => 'InAncien', - - # InArabic - inarabic => 'InArabic', - - # InArabicPresentationFormsA - inarabicpresentationformsa => 'InArabi4', - - # InArabicPresentationFormsB - inarabicpresentationformsb => 'InArabi3', - - # InArabicSupplement - inarabicsupplement => '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', - - # InBuginese - inbuginese => 'InBugine', - - # InBuhid - inbuhid => 'InBuhid', - - # InByzantineMusicalSymbols - inbyzantinemusicalsymbols => 'InByzant', - - # InCherokee - incherokee => 'InCherok', - - # InCjkCompatibility - incjkcompatibility => 'InCjkCom', - - # InCjkCompatibilityForms - incjkcompatibilityforms => 'InCjkCo2', - - # InCjkCompatibilityIdeographs - incjkcompatibilityideographs => 'InCjkCo3', - - # InCjkCompatibilityIdeographsSupplement - incjkcompatibilityideographssupplement => 'InCjkCo4', - - # InCjkRadicalsSupplement - incjkradicalssupplement => 'InCjkRad', - - # InCjkStrokes - incjkstrokes => 'InCjkStr', - - # InCjkSymbolsAndPunctuation - incjksymbolsandpunctuation => 'InCjkSym', - - # InCjkUnifiedIdeographs - incjkunifiedideographs => 'InCjkUni', - - # InCjkUnifiedIdeographsExtensionA - incjkunifiedideographsextensiona => 'InCjkUn3', - - # InCjkUnifiedIdeographsExtensionB - incjkunifiedideographsextensionb => 'InCjkUn2', - - # InCombiningDiacriticalMarks - incombiningdiacriticalmarks => 'InCombi2', - - # InCombiningDiacriticalMarksForSymbols - incombiningdiacriticalmarksforsymbols => 'InCombi4', - - # InCombiningDiacriticalMarksSupplement - incombiningdiacriticalmarkssupplement => 'InCombi3', - - # InCombiningHalfMarks - incombininghalfmarks => 'InCombin', - - # InControlPictures - incontrolpictures => 'InContro', - - # InCoptic - incoptic => 'InCoptic', - - # InCurrencySymbols - incurrencysymbols => 'InCurren', - - # InCypriotSyllabary - incypriotsyllabary => 'InCyprio', - - # InCyrillic - incyrillic => 'InCyrill', - - # InCyrillicSupplement - incyrillicsupplement => 'InCyril2', - - # InDeseret - indeseret => 'InDesere', - - # InDevanagari - indevanagari => 'InDevana', - - # InDingbats - indingbats => 'InDingba', - - # InEnclosedAlphanumerics - inenclosedalphanumerics => 'InEnclos', - - # InEnclosedCjkLettersAndMonths - inenclosedcjklettersandmonths => 'InEnclo2', - - # InEthiopic - inethiopic => 'InEthiop', - - # InEthiopicExtended - inethiopicextended => 'InEthio2', - - # InEthiopicSupplement - inethiopicsupplement => 'InEthio3', - - # InGeneralPunctuation - ingeneralpunctuation => 'InGenera', - - # InGeometricShapes - ingeometricshapes => 'InGeomet', - - # InGeorgian - ingeorgian => 'InGeorgi', - - # InGeorgianSupplement - ingeorgiansupplement => 'InGeorg2', - - # InGlagolitic - inglagolitic => 'InGlagol', - - # 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 => 'Qaai', - - # 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', - - # InKharoshthi - inkharoshthi => 'InKharos', - - # InKhmer - inkhmer => 'InKhmer', - - # InKhmerSymbols - inkhmersymbols => 'InKhmerS', - - # InLao - inlao => 'InLao', - - # InLatin1Supplement - inlatin1supplement => 'InLatin1', - - # InLatinExtendedA - inlatinextendeda => 'InLatin2', - - # InLatinExtendedAdditional - inlatinextendedadditional => 'InLatin3', - - # InLatinExtendedB - inlatinextendedb => 'InLatinE', - - # InLetterlikeSymbols - inletterlikesymbols => 'InLetter', - - # InLimbu - inlimbu => 'InLimbu', - - # InLinearBIdeograms - inlinearbideograms => 'InLinear', - - # InLinearBSyllabary - inlinearbsyllabary => 'InLinea2', - - # InLowSurrogates - inlowsurrogates => 'InLowSur', - - # InMalayalam - inmalayalam => 'InMalaya', - - # InMathematicalAlphanumericSymbols - inmathematicalalphanumericsymbols => 'InMathe2', - - # InMathematicalOperators - inmathematicaloperators => 'InMathem', - - # InMiscellaneousMathematicalSymbolsA - inmiscellaneousmathematicalsymbolsa => 'InMisce4', - - # InMiscellaneousMathematicalSymbolsB - inmiscellaneousmathematicalsymbolsb => 'InMisce5', - - # InMiscellaneousSymbols - inmiscellaneoussymbols => 'InMiscel', - - # InMiscellaneousSymbolsAndArrows - inmiscellaneoussymbolsandarrows => 'InMisce3', - - # InMiscellaneousTechnical - inmiscellaneoustechnical => 'InMisce2', - - # InModifierToneLetters - inmodifiertoneletters => 'InModifi', - - # InMongolian - inmongolian => 'InMongol', - - # InMusicalSymbols - inmusicalsymbols => 'InMusica', - - # InMyanmar - inmyanmar => 'InMyanma', - - # InNewTaiLue - innewtailue => 'InNewTai', - - # InNumberForms - innumberforms => 'InNumber', - - # InOgham - inogham => 'InOgham', - - # InOldItalic - inolditalic => 'InOldIta', - - # InOldPersian - inoldpersian => 'InOldPer', - - # InOpticalCharacterRecognition - inopticalcharacterrecognition => 'InOptica', - - # InOriya - inoriya => 'InOriya', - - # InOsmanya - inosmanya => 'InOsmany', - - # InPhoneticExtensions - inphoneticextensions => 'InPhonet', - - # InPhoneticExtensionsSupplement - inphoneticextensionssupplement => 'InPhone2', - - # InPrivateUseArea - inprivateusearea => 'InPrivat', - - # InRunic - inrunic => 'InRunic', - - # InShavian - inshavian => 'InShavia', - - # InSinhala - insinhala => 'InSinhal', - - # InSmallFormVariants - insmallformvariants => 'InSmallF', - - # InSpacingModifierLetters - inspacingmodifierletters => 'InSpacin', - - # InSpecials - inspecials => 'InSpecia', - - # InSuperscriptsAndSubscripts - insuperscriptsandsubscripts => 'InSupers', - - # InSupplementalArrowsA - insupplementalarrowsa => 'InSuppl2', - - # InSupplementalArrowsB - insupplementalarrowsb => 'InSupple', - - # InSupplementalMathematicalOperators - insupplementalmathematicaloperators => 'InSuppl6', - - # InSupplementalPunctuation - insupplementalpunctuation => 'InSuppl3', - - # InSupplementaryPrivateUseAreaA - insupplementaryprivateuseareaa => 'InSuppl4', - - # InSupplementaryPrivateUseAreaB - insupplementaryprivateuseareab => 'InSuppl5', - - # InSylotiNagri - insylotinagri => 'InSyloti', - - # InSyriac - insyriac => 'InSyriac', - - # InTagalog - intagalog => 'InTagalo', - - # InTagbanwa - intagbanwa => 'InTagban', - - # InTags - intags => 'InTags', - - # InTaiLe - intaile => 'InTaiLe', - - # InTaiXuanJingSymbols - intaixuanjingsymbols => 'InTaiXua', - - # InTamil - intamil => 'InTamil', - - # InTelugu - intelugu => 'InTelugu', - - # InThaana - inthaana => 'InThaana', - - # InThai - inthai => 'InThai', - - # InTibetan - intibetan => 'InTibeta', - - # InTifinagh - intifinagh => 'InTifina', - - # InUgaritic - inugaritic => 'InUgarit', - - # InUnifiedCanadianAboriginalSyllabics - inunifiedcanadianaboriginalsyllabics => 'InUnifie', - - # InVariationSelectors - invariationselectors => 'InVariat', - - # InVariationSelectorsSupplement - invariationselectorssupplement => 'InVaria2', - - # InVerticalForms - inverticalforms => 'InVertic', - - # InYijingHexagramSymbols - inyijinghexagramsymbols => 'InYijing', - - # InYiRadicals - inyiradicals => 'InYiRadi', - - # InYiSyllables - inyisyllables => 'InYiSyll', - - # InIpaExtensions - ipaextensions => 'InIpaExt', - - # JoinControl - joincontrol => 'JoinCont', - - # InKanbun - kanbun => 'InKanbun', - - # InKangxiRadicals - kangxiradicals => 'InKangxi', - - kannada => 'Knda', - katakana => 'Kana', - - # InKatakanaPhoneticExtensions - katakanaphoneticextensions => 'InKatak2', - - kharoshthi => 'Khar', - khmer => 'Khmr', - - # InKhmerSymbols - khmersymbols => 'InKhmerS', - - lao => 'Laoo', - latin => 'Latn', - - # InLatin1Supplement - latin1supplement => 'InLatin1', - - # InLatinExtendedA - latinextendeda => 'InLatin2', - - # InLatinExtendedAdditional - latinextendedadditional => 'InLatin3', - - # InLatinExtendedB - latinextendedb => 'InLatinE', - - letter => 'L', - - # InLetterlikeSymbols - letterlikesymbols => 'InLetter', - - # LetterNumber - letternumber => 'Nl', - - limbu => 'Limb', - - # LinearB - linearb => 'LinearB', - - # InLinearBIdeograms - linearbideograms => 'InLinear', - - # InLinearBSyllabary - linearbsyllabary => 'InLinea2', - - # LineSeparator - lineseparator => 'Zl', - - # LogicalOrderException - logicalorderexception => 'LogicalO', - - lowercase => 'Lowercas', - - # LowercaseLetter - lowercaseletter => 'Ll', - - # InLowSurrogates - lowsurrogates => 'InLowSur', - - malayalam => 'Mlym', - mark => 'M', - math => 'Math', - - # InMathematicalAlphanumericSymbols - mathematicalalphanumericsymbols => 'InMathe2', - - # InMathematicalOperators - mathematicaloperators => 'InMathem', - - # MathSymbol - mathsymbol => 'Sm', - - # InMiscellaneousMathematicalSymbolsA - miscellaneousmathematicalsymbolsa => 'InMisce4', - - # InMiscellaneousMathematicalSymbolsB - miscellaneousmathematicalsymbolsb => 'InMisce5', - - # InMiscellaneousSymbols - miscellaneoussymbols => 'InMiscel', - - # InMiscellaneousSymbolsAndArrows - miscellaneoussymbolsandarrows => 'InMisce3', - - # InMiscellaneousTechnical - miscellaneoustechnical => 'InMisce2', - - # ModifierLetter - modifierletter => 'Lm', - - # ModifierSymbol - modifiersymbol => 'Sk', - - # InModifierToneLetters - modifiertoneletters => 'InModifi', - - mongolian => 'Mong', - - # InMusicalSymbols - musicalsymbols => 'InMusica', - - myanmar => 'Mymr', - - # NewTaiLue - newtailue => 'NewTaiLu', - - # NoncharacterCodePoint - noncharactercodepoint => 'Nonchara', - - # NonspacingMark - nonspacingmark => 'Mn', - - number => 'N', - - # InNumberForms - numberforms => 'InNumber', - - ogham => 'Ogam', - - # OldItalic - olditalic => 'OldItali', - - # OldPersian - oldpersian => 'OldPersi', - - # OpenPunctuation - openpunctuation => 'Ps', - - # InOpticalCharacterRecognition - opticalcharacterrecognition => 'InOptica', - - oriya => 'Orya', - osmanya => 'Osma', - other => 'C', - - # OtherAlphabetic - otheralphabetic => 'OtherAlp', - - # OtherDefaultIgnorableCodePoint - otherdefaultignorablecodepoint => 'OtherDef', - - # OtherGraphemeExtend - othergraphemeextend => 'OtherGra', - - # OtherIdContinue - otheridcontinue => 'OtherIdC', - - # OtherIdStart - otheridstart => 'OtherIdS', - - # OtherLetter - otherletter => 'Lo', - - # OtherLowercase - otherlowercase => 'OtherLow', - - # OtherMath - othermath => 'OtherMat', - - # OtherNumber - othernumber => 'No', - - # OtherPunctuation - otherpunctuation => 'Po', - - # OtherSymbol - othersymbol => 'So', - - # OtherUppercase - otheruppercase => 'OtherUpp', - - # ParagraphSeparator - paragraphseparator => 'Zp', - - # PatternSyntax - patternsyntax => 'PatternS', - - # PatternWhiteSpace - patternwhitespace => 'PatternW', - - # InPhoneticExtensions - phoneticextensions => 'InPhonet', - - # InPhoneticExtensionsSupplement - phoneticextensionssupplement => 'InPhone2', - - # PrivateUse - privateuse => 'Co', - - # InPrivateUseArea - privateusearea => 'InPrivat', - - punctuation => 'P', - - # QuotationMark - quotationmark => 'Quotatio', - - radical => 'Radical2', - runic => 'Runr', - separator => 'Z', - shavian => 'Shaw', - sinhala => 'Sinh', - - # InSmallFormVariants - smallformvariants => 'InSmallF', - - # SoftDotted - softdotted => 'SoftDott', - - # SpaceSeparator - spaceseparator => 'Zs', - - # SpacingMark - spacingmark => 'Mc', - - # InSpacingModifierLetters - spacingmodifierletters => 'InSpacin', - - # InSpecials - specials => 'InSpecia', - - sterm => 'Sterm2', - - # InSuperscriptsAndSubscripts - superscriptsandsubscripts => 'InSupers', - - # InSupplementalArrowsA - supplementalarrowsa => 'InSuppl2', - - # InSupplementalArrowsB - supplementalarrowsb => 'InSupple', - - # InSupplementalMathematicalOperators - supplementalmathematicaloperators => 'InSuppl6', - - # InSupplementalPunctuation - supplementalpunctuation => 'InSuppl3', - - # InSupplementaryPrivateUseAreaA - supplementaryprivateuseareaa => 'InSuppl4', - - # InSupplementaryPrivateUseAreaB - supplementaryprivateuseareab => 'InSuppl5', - - surrogate => 'Cs', - - # SylotiNagri - sylotinagri => 'SylotiNa', - - symbol => 'S', - syriac => 'Syrc', - tagalog => 'Tglg', - tagbanwa => 'Tagb', - - # InTags - tags => 'InTags', - - # TaiLe - taile => 'TaiLe', - - # InTaiXuanJingSymbols - taixuanjingsymbols => 'InTaiXua', - - tamil => 'Taml', - telugu => 'Telu', - - # TerminalPunctuation - terminalpunctuation => 'Terminal', - - thaana => 'Thaa', - thai => 'Thai', - tibetan => 'Tibt', - tifinagh => 'Tfng', - - # TitlecaseLetter - titlecaseletter => 'Lt', - - ugaritic => 'Ugar', - unassigned => 'Cn', - - # InUnifiedCanadianAboriginalSyllabics - unifiedcanadianaboriginalsyllabics => 'InUnifie', - - # UnifiedIdeograph - unifiedideograph => 'UnifiedI', - - uppercase => 'Uppercas', - - # UppercaseLetter - uppercaseletter => 'Lu', - - # VariationSelector - variationselector => 'Variatio', - - # InVariationSelectors - variationselectors => 'InVariat', - - # InVariationSelectorsSupplement - variationselectorssupplement => 'InVaria2', - - # InVerticalForms - verticalforms => 'InVertic', - - # WhiteSpace - whitespace => 'WhiteSpa', - - yi => 'Yiii', - - # InYijingHexagramSymbols - yijinghexagramsymbols => 'InYijing', - - # InYiRadicals - yiradicals => 'InYiRadi', - - # InYiSyllables - yisyllables => 'InYiSyll', - -); -1 diff --git a/Master/tlpkg/tlperl.old/lib/unicore/CaseFolding.txt b/Master/tlpkg/tlperl.old/lib/unicore/CaseFolding.txt deleted file mode 100644 index f25d9bfed4d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/CaseFolding.txt +++ /dev/null @@ -1,1064 +0,0 @@ -# CaseFolding-4.1.0.txt -# Date: 2005-03-26, 00:24:43 GMT [MD] -# -# Unicode Character Database -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# For documentation, see UCD.html -# -# Case Folding Properties -# -# This file is a supplement to the UnicodeData file. -# It provides a case folding mapping generated from the Unicode Character Database. -# If all characters are mapped according to the full mapping below, then -# case differences (according to UnicodeData.txt and SpecialCasing.txt) -# are eliminated. -# -# The data supports both implementations that require simple case foldings -# (where string lengths don't change), and implementations that allow full case folding -# (where string lengths may grow). Note that where they can be supported, the -# full case foldings are superior: for example, they allow "MASSE" and "Maße" to match. -# -# All code points not listed in this file map to themselves. -# -# NOTE: case folding does not preserve normalization formats! -# -# For information on case folding, see -# UTR #21 Case Mappings, at http://www.unicode.org/unicode/reports/tr21/ -# -# ================================================================================ -# Format -# ================================================================================ -# The entries in this file are in the following machine-readable format: -# -# <code>; <status>; <mapping>; # <name> -# -# The status field is: -# C: common case folding, common mappings shared by both simple and full mappings. -# F: full case folding, mappings that cause strings to grow in length. Multiple characters are separated by spaces. -# S: simple case folding, mappings to single characters where different from F. -# T: special case for uppercase I and dotted uppercase I -# - For non-Turkic languages, this mapping is normally not used. -# - For Turkic languages (tr, az), this mapping can be used instead of the normal mapping for these characters. -# Note that the Turkic mappings do not maintain canonical equivalence without additional processing. -# See the discussions of case mapping in the Unicode Standard for more information. -# -# Usage: -# A. To do a simple case folding, use the mappings with status C + S. -# B. To do a full case folding, use the mappings with status C + F. -# -# The mappings with status T can be used or omitted depending on the desired case-folding -# behavior. (The default option is to exclude them.) -# -# ================================================================= - -0041; C; 0061; # LATIN CAPITAL LETTER A -0042; C; 0062; # LATIN CAPITAL LETTER B -0043; C; 0063; # LATIN CAPITAL LETTER C -0044; C; 0064; # LATIN CAPITAL LETTER D -0045; C; 0065; # LATIN CAPITAL LETTER E -0046; C; 0066; # LATIN CAPITAL LETTER F -0047; C; 0067; # LATIN CAPITAL LETTER G -0048; C; 0068; # LATIN CAPITAL LETTER H -0049; C; 0069; # LATIN CAPITAL LETTER I -0049; T; 0131; # LATIN CAPITAL LETTER I -004A; C; 006A; # LATIN CAPITAL LETTER J -004B; C; 006B; # LATIN CAPITAL LETTER K -004C; C; 006C; # LATIN CAPITAL LETTER L -004D; C; 006D; # LATIN CAPITAL LETTER M -004E; C; 006E; # LATIN CAPITAL LETTER N -004F; C; 006F; # LATIN CAPITAL LETTER O -0050; C; 0070; # LATIN CAPITAL LETTER P -0051; C; 0071; # LATIN CAPITAL LETTER Q -0052; C; 0072; # LATIN CAPITAL LETTER R -0053; C; 0073; # LATIN CAPITAL LETTER S -0054; C; 0074; # LATIN CAPITAL LETTER T -0055; C; 0075; # LATIN CAPITAL LETTER U -0056; C; 0076; # LATIN CAPITAL LETTER V -0057; C; 0077; # LATIN CAPITAL LETTER W -0058; C; 0078; # LATIN CAPITAL LETTER X -0059; C; 0079; # LATIN CAPITAL LETTER Y -005A; C; 007A; # LATIN CAPITAL LETTER Z -00B5; C; 03BC; # MICRO SIGN -00C0; C; 00E0; # LATIN CAPITAL LETTER A WITH GRAVE -00C1; C; 00E1; # LATIN CAPITAL LETTER A WITH ACUTE -00C2; C; 00E2; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX -00C3; C; 00E3; # LATIN CAPITAL LETTER A WITH TILDE -00C4; C; 00E4; # LATIN CAPITAL LETTER A WITH DIAERESIS -00C5; C; 00E5; # LATIN CAPITAL LETTER A WITH RING ABOVE -00C6; C; 00E6; # LATIN CAPITAL LETTER AE -00C7; C; 00E7; # LATIN CAPITAL LETTER C WITH CEDILLA -00C8; C; 00E8; # LATIN CAPITAL LETTER E WITH GRAVE -00C9; C; 00E9; # LATIN CAPITAL LETTER E WITH ACUTE -00CA; C; 00EA; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -00CB; C; 00EB; # LATIN CAPITAL LETTER E WITH DIAERESIS -00CC; C; 00EC; # LATIN CAPITAL LETTER I WITH GRAVE -00CD; C; 00ED; # LATIN CAPITAL LETTER I WITH ACUTE -00CE; C; 00EE; # LATIN CAPITAL LETTER I WITH CIRCUMFLEX -00CF; C; 00EF; # LATIN CAPITAL LETTER I WITH DIAERESIS -00D0; C; 00F0; # LATIN CAPITAL LETTER ETH -00D1; C; 00F1; # LATIN CAPITAL LETTER N WITH TILDE -00D2; C; 00F2; # LATIN CAPITAL LETTER O WITH GRAVE -00D3; C; 00F3; # LATIN CAPITAL LETTER O WITH ACUTE -00D4; C; 00F4; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -00D5; C; 00F5; # LATIN CAPITAL LETTER O WITH TILDE -00D6; C; 00F6; # LATIN CAPITAL LETTER O WITH DIAERESIS -00D8; C; 00F8; # LATIN CAPITAL LETTER O WITH STROKE -00D9; C; 00F9; # LATIN CAPITAL LETTER U WITH GRAVE -00DA; C; 00FA; # LATIN CAPITAL LETTER U WITH ACUTE -00DB; C; 00FB; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX -00DC; C; 00FC; # LATIN CAPITAL LETTER U WITH DIAERESIS -00DD; C; 00FD; # LATIN CAPITAL LETTER Y WITH ACUTE -00DE; C; 00FE; # LATIN CAPITAL LETTER THORN -00DF; F; 0073 0073; # LATIN SMALL LETTER SHARP S -0100; C; 0101; # LATIN CAPITAL LETTER A WITH MACRON -0102; C; 0103; # LATIN CAPITAL LETTER A WITH BREVE -0104; C; 0105; # LATIN CAPITAL LETTER A WITH OGONEK -0106; C; 0107; # LATIN CAPITAL LETTER C WITH ACUTE -0108; C; 0109; # LATIN CAPITAL LETTER C WITH CIRCUMFLEX -010A; C; 010B; # LATIN CAPITAL LETTER C WITH DOT ABOVE -010C; C; 010D; # LATIN CAPITAL LETTER C WITH CARON -010E; C; 010F; # LATIN CAPITAL LETTER D WITH CARON -0110; C; 0111; # LATIN CAPITAL LETTER D WITH STROKE -0112; C; 0113; # LATIN CAPITAL LETTER E WITH MACRON -0114; C; 0115; # LATIN CAPITAL LETTER E WITH BREVE -0116; C; 0117; # LATIN CAPITAL LETTER E WITH DOT ABOVE -0118; C; 0119; # LATIN CAPITAL LETTER E WITH OGONEK -011A; C; 011B; # LATIN CAPITAL LETTER E WITH CARON -011C; C; 011D; # LATIN CAPITAL LETTER G WITH CIRCUMFLEX -011E; C; 011F; # LATIN CAPITAL LETTER G WITH BREVE -0120; C; 0121; # LATIN CAPITAL LETTER G WITH DOT ABOVE -0122; C; 0123; # LATIN CAPITAL LETTER G WITH CEDILLA -0124; C; 0125; # LATIN CAPITAL LETTER H WITH CIRCUMFLEX -0126; C; 0127; # LATIN CAPITAL LETTER H WITH STROKE -0128; C; 0129; # LATIN CAPITAL LETTER I WITH TILDE -012A; C; 012B; # LATIN CAPITAL LETTER I WITH MACRON -012C; C; 012D; # LATIN CAPITAL LETTER I WITH BREVE -012E; C; 012F; # LATIN CAPITAL LETTER I WITH OGONEK -0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE -0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE -0132; C; 0133; # LATIN CAPITAL LIGATURE IJ -0134; C; 0135; # LATIN CAPITAL LETTER J WITH CIRCUMFLEX -0136; C; 0137; # LATIN CAPITAL LETTER K WITH CEDILLA -0139; C; 013A; # LATIN CAPITAL LETTER L WITH ACUTE -013B; C; 013C; # LATIN CAPITAL LETTER L WITH CEDILLA -013D; C; 013E; # LATIN CAPITAL LETTER L WITH CARON -013F; C; 0140; # LATIN CAPITAL LETTER L WITH MIDDLE DOT -0141; C; 0142; # LATIN CAPITAL LETTER L WITH STROKE -0143; C; 0144; # LATIN CAPITAL LETTER N WITH ACUTE -0145; C; 0146; # LATIN CAPITAL LETTER N WITH CEDILLA -0147; C; 0148; # LATIN CAPITAL LETTER N WITH CARON -0149; F; 02BC 006E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -014A; C; 014B; # LATIN CAPITAL LETTER ENG -014C; C; 014D; # LATIN CAPITAL LETTER O WITH MACRON -014E; C; 014F; # LATIN CAPITAL LETTER O WITH BREVE -0150; C; 0151; # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -0152; C; 0153; # LATIN CAPITAL LIGATURE OE -0154; C; 0155; # LATIN CAPITAL LETTER R WITH ACUTE -0156; C; 0157; # LATIN CAPITAL LETTER R WITH CEDILLA -0158; C; 0159; # LATIN CAPITAL LETTER R WITH CARON -015A; C; 015B; # LATIN CAPITAL LETTER S WITH ACUTE -015C; C; 015D; # LATIN CAPITAL LETTER S WITH CIRCUMFLEX -015E; C; 015F; # LATIN CAPITAL LETTER S WITH CEDILLA -0160; C; 0161; # LATIN CAPITAL LETTER S WITH CARON -0162; C; 0163; # LATIN CAPITAL LETTER T WITH CEDILLA -0164; C; 0165; # LATIN CAPITAL LETTER T WITH CARON -0166; C; 0167; # LATIN CAPITAL LETTER T WITH STROKE -0168; C; 0169; # LATIN CAPITAL LETTER U WITH TILDE -016A; C; 016B; # LATIN CAPITAL LETTER U WITH MACRON -016C; C; 016D; # LATIN CAPITAL LETTER U WITH BREVE -016E; C; 016F; # LATIN CAPITAL LETTER U WITH RING ABOVE -0170; C; 0171; # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0172; C; 0173; # LATIN CAPITAL LETTER U WITH OGONEK -0174; C; 0175; # LATIN CAPITAL LETTER W WITH CIRCUMFLEX -0176; C; 0177; # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX -0178; C; 00FF; # LATIN CAPITAL LETTER Y WITH DIAERESIS -0179; C; 017A; # LATIN CAPITAL LETTER Z WITH ACUTE -017B; C; 017C; # LATIN CAPITAL LETTER Z WITH DOT ABOVE -017D; C; 017E; # LATIN CAPITAL LETTER Z WITH CARON -017F; C; 0073; # LATIN SMALL LETTER LONG S -0181; C; 0253; # LATIN CAPITAL LETTER B WITH HOOK -0182; C; 0183; # LATIN CAPITAL LETTER B WITH TOPBAR -0184; C; 0185; # LATIN CAPITAL LETTER TONE SIX -0186; C; 0254; # LATIN CAPITAL LETTER OPEN O -0187; C; 0188; # LATIN CAPITAL LETTER C WITH HOOK -0189; C; 0256; # LATIN CAPITAL LETTER AFRICAN D -018A; C; 0257; # LATIN CAPITAL LETTER D WITH HOOK -018B; C; 018C; # LATIN CAPITAL LETTER D WITH TOPBAR -018E; C; 01DD; # LATIN CAPITAL LETTER REVERSED E -018F; C; 0259; # LATIN CAPITAL LETTER SCHWA -0190; C; 025B; # LATIN CAPITAL LETTER OPEN E -0191; C; 0192; # LATIN CAPITAL LETTER F WITH HOOK -0193; C; 0260; # LATIN CAPITAL LETTER G WITH HOOK -0194; C; 0263; # LATIN CAPITAL LETTER GAMMA -0196; C; 0269; # LATIN CAPITAL LETTER IOTA -0197; C; 0268; # LATIN CAPITAL LETTER I WITH STROKE -0198; C; 0199; # LATIN CAPITAL LETTER K WITH HOOK -019C; C; 026F; # LATIN CAPITAL LETTER TURNED M -019D; C; 0272; # LATIN CAPITAL LETTER N WITH LEFT HOOK -019F; C; 0275; # LATIN CAPITAL LETTER O WITH MIDDLE TILDE -01A0; C; 01A1; # LATIN CAPITAL LETTER O WITH HORN -01A2; C; 01A3; # LATIN CAPITAL LETTER OI -01A4; C; 01A5; # LATIN CAPITAL LETTER P WITH HOOK -01A6; C; 0280; # LATIN LETTER YR -01A7; C; 01A8; # LATIN CAPITAL LETTER TONE TWO -01A9; C; 0283; # LATIN CAPITAL LETTER ESH -01AC; C; 01AD; # LATIN CAPITAL LETTER T WITH HOOK -01AE; C; 0288; # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK -01AF; C; 01B0; # LATIN CAPITAL LETTER U WITH HORN -01B1; C; 028A; # LATIN CAPITAL LETTER UPSILON -01B2; C; 028B; # LATIN CAPITAL LETTER V WITH HOOK -01B3; C; 01B4; # LATIN CAPITAL LETTER Y WITH HOOK -01B5; C; 01B6; # LATIN CAPITAL LETTER Z WITH STROKE -01B7; C; 0292; # LATIN CAPITAL LETTER EZH -01B8; C; 01B9; # LATIN CAPITAL LETTER EZH REVERSED -01BC; C; 01BD; # LATIN CAPITAL LETTER TONE FIVE -01C4; C; 01C6; # LATIN CAPITAL LETTER DZ WITH CARON -01C5; C; 01C6; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON -01C7; C; 01C9; # LATIN CAPITAL LETTER LJ -01C8; C; 01C9; # LATIN CAPITAL LETTER L WITH SMALL LETTER J -01CA; C; 01CC; # LATIN CAPITAL LETTER NJ -01CB; C; 01CC; # LATIN CAPITAL LETTER N WITH SMALL LETTER J -01CD; C; 01CE; # LATIN CAPITAL LETTER A WITH CARON -01CF; C; 01D0; # LATIN CAPITAL LETTER I WITH CARON -01D1; C; 01D2; # LATIN CAPITAL LETTER O WITH CARON -01D3; C; 01D4; # LATIN CAPITAL LETTER U WITH CARON -01D5; C; 01D6; # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01D7; C; 01D8; # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D9; C; 01DA; # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -01DB; C; 01DC; # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01DE; C; 01DF; # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -01E0; C; 01E1; # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON -01E2; C; 01E3; # LATIN CAPITAL LETTER AE WITH MACRON -01E4; C; 01E5; # LATIN CAPITAL LETTER G WITH STROKE -01E6; C; 01E7; # LATIN CAPITAL LETTER G WITH CARON -01E8; C; 01E9; # LATIN CAPITAL LETTER K WITH CARON -01EA; C; 01EB; # LATIN CAPITAL LETTER O WITH OGONEK -01EC; C; 01ED; # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON -01EE; C; 01EF; # LATIN CAPITAL LETTER EZH WITH CARON -01F0; F; 006A 030C; # LATIN SMALL LETTER J WITH CARON -01F1; C; 01F3; # LATIN CAPITAL LETTER DZ -01F2; C; 01F3; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z -01F4; C; 01F5; # LATIN CAPITAL LETTER G WITH ACUTE -01F6; C; 0195; # LATIN CAPITAL LETTER HWAIR -01F7; C; 01BF; # LATIN CAPITAL LETTER WYNN -01F8; C; 01F9; # LATIN CAPITAL LETTER N WITH GRAVE -01FA; C; 01FB; # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -01FC; C; 01FD; # LATIN CAPITAL LETTER AE WITH ACUTE -01FE; C; 01FF; # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -0200; C; 0201; # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE -0202; C; 0203; # LATIN CAPITAL LETTER A WITH INVERTED BREVE -0204; C; 0205; # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE -0206; C; 0207; # LATIN CAPITAL LETTER E WITH INVERTED BREVE -0208; C; 0209; # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE -020A; C; 020B; # LATIN CAPITAL LETTER I WITH INVERTED BREVE -020C; C; 020D; # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE -020E; C; 020F; # LATIN CAPITAL LETTER O WITH INVERTED BREVE -0210; C; 0211; # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE -0212; C; 0213; # LATIN CAPITAL LETTER R WITH INVERTED BREVE -0214; C; 0215; # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE -0216; C; 0217; # LATIN CAPITAL LETTER U WITH INVERTED BREVE -0218; C; 0219; # LATIN CAPITAL LETTER S WITH COMMA BELOW -021A; C; 021B; # LATIN CAPITAL LETTER T WITH COMMA BELOW -021C; C; 021D; # LATIN CAPITAL LETTER YOGH -021E; C; 021F; # LATIN CAPITAL LETTER H WITH CARON -0220; C; 019E; # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG -0222; C; 0223; # LATIN CAPITAL LETTER OU -0224; C; 0225; # LATIN CAPITAL LETTER Z WITH HOOK -0226; C; 0227; # LATIN CAPITAL LETTER A WITH DOT ABOVE -0228; C; 0229; # LATIN CAPITAL LETTER E WITH CEDILLA -022A; C; 022B; # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -022C; C; 022D; # LATIN CAPITAL LETTER O WITH TILDE AND MACRON -022E; C; 022F; # LATIN CAPITAL LETTER O WITH DOT ABOVE -0230; C; 0231; # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON -0232; C; 0233; # LATIN CAPITAL LETTER Y WITH MACRON -023B; C; 023C; # LATIN CAPITAL LETTER C WITH STROKE -023D; C; 019A; # LATIN CAPITAL LETTER L WITH BAR -0241; C; 0294; # LATIN CAPITAL LETTER GLOTTAL STOP -0345; C; 03B9; # COMBINING GREEK YPOGEGRAMMENI -0386; C; 03AC; # GREEK CAPITAL LETTER ALPHA WITH TONOS -0388; C; 03AD; # GREEK CAPITAL LETTER EPSILON WITH TONOS -0389; C; 03AE; # GREEK CAPITAL LETTER ETA WITH TONOS -038A; C; 03AF; # GREEK CAPITAL LETTER IOTA WITH TONOS -038C; C; 03CC; # GREEK CAPITAL LETTER OMICRON WITH TONOS -038E; C; 03CD; # GREEK CAPITAL LETTER UPSILON WITH TONOS -038F; C; 03CE; # GREEK CAPITAL LETTER OMEGA WITH TONOS -0390; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -0391; C; 03B1; # GREEK CAPITAL LETTER ALPHA -0392; C; 03B2; # GREEK CAPITAL LETTER BETA -0393; C; 03B3; # GREEK CAPITAL LETTER GAMMA -0394; C; 03B4; # GREEK CAPITAL LETTER DELTA -0395; C; 03B5; # GREEK CAPITAL LETTER EPSILON -0396; C; 03B6; # GREEK CAPITAL LETTER ZETA -0397; C; 03B7; # GREEK CAPITAL LETTER ETA -0398; C; 03B8; # GREEK CAPITAL LETTER THETA -0399; C; 03B9; # GREEK CAPITAL LETTER IOTA -039A; C; 03BA; # GREEK CAPITAL LETTER KAPPA -039B; C; 03BB; # GREEK CAPITAL LETTER LAMDA -039C; C; 03BC; # GREEK CAPITAL LETTER MU -039D; C; 03BD; # GREEK CAPITAL LETTER NU -039E; C; 03BE; # GREEK CAPITAL LETTER XI -039F; C; 03BF; # GREEK CAPITAL LETTER OMICRON -03A0; C; 03C0; # GREEK CAPITAL LETTER PI -03A1; C; 03C1; # GREEK CAPITAL LETTER RHO -03A3; C; 03C3; # GREEK CAPITAL LETTER SIGMA -03A4; C; 03C4; # GREEK CAPITAL LETTER TAU -03A5; C; 03C5; # GREEK CAPITAL LETTER UPSILON -03A6; C; 03C6; # GREEK CAPITAL LETTER PHI -03A7; C; 03C7; # GREEK CAPITAL LETTER CHI -03A8; C; 03C8; # GREEK CAPITAL LETTER PSI -03A9; C; 03C9; # GREEK CAPITAL LETTER OMEGA -03AA; C; 03CA; # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA -03AB; C; 03CB; # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA -03B0; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -03C2; C; 03C3; # GREEK SMALL LETTER FINAL SIGMA -03D0; C; 03B2; # GREEK BETA SYMBOL -03D1; C; 03B8; # GREEK THETA SYMBOL -03D5; C; 03C6; # GREEK PHI SYMBOL -03D6; C; 03C0; # GREEK PI SYMBOL -03D8; C; 03D9; # GREEK LETTER ARCHAIC KOPPA -03DA; C; 03DB; # GREEK LETTER STIGMA -03DC; C; 03DD; # GREEK LETTER DIGAMMA -03DE; C; 03DF; # GREEK LETTER KOPPA -03E0; C; 03E1; # GREEK LETTER SAMPI -03E2; C; 03E3; # COPTIC CAPITAL LETTER SHEI -03E4; C; 03E5; # COPTIC CAPITAL LETTER FEI -03E6; C; 03E7; # COPTIC CAPITAL LETTER KHEI -03E8; C; 03E9; # COPTIC CAPITAL LETTER HORI -03EA; C; 03EB; # COPTIC CAPITAL LETTER GANGIA -03EC; C; 03ED; # COPTIC CAPITAL LETTER SHIMA -03EE; C; 03EF; # COPTIC CAPITAL LETTER DEI -03F0; C; 03BA; # GREEK KAPPA SYMBOL -03F1; C; 03C1; # GREEK RHO SYMBOL -03F4; C; 03B8; # GREEK CAPITAL THETA SYMBOL -03F5; C; 03B5; # GREEK LUNATE EPSILON SYMBOL -03F7; C; 03F8; # GREEK CAPITAL LETTER SHO -03F9; C; 03F2; # GREEK CAPITAL LUNATE SIGMA SYMBOL -03FA; C; 03FB; # GREEK CAPITAL LETTER SAN -0400; C; 0450; # CYRILLIC CAPITAL LETTER IE WITH GRAVE -0401; C; 0451; # CYRILLIC CAPITAL LETTER IO -0402; C; 0452; # CYRILLIC CAPITAL LETTER DJE -0403; C; 0453; # CYRILLIC CAPITAL LETTER GJE -0404; C; 0454; # CYRILLIC CAPITAL LETTER UKRAINIAN IE -0405; C; 0455; # CYRILLIC CAPITAL LETTER DZE -0406; C; 0456; # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I -0407; C; 0457; # CYRILLIC CAPITAL LETTER YI -0408; C; 0458; # CYRILLIC CAPITAL LETTER JE -0409; C; 0459; # CYRILLIC CAPITAL LETTER LJE -040A; C; 045A; # CYRILLIC CAPITAL LETTER NJE -040B; C; 045B; # CYRILLIC CAPITAL LETTER TSHE -040C; C; 045C; # CYRILLIC CAPITAL LETTER KJE -040D; C; 045D; # CYRILLIC CAPITAL LETTER I WITH GRAVE -040E; C; 045E; # CYRILLIC CAPITAL LETTER SHORT U -040F; C; 045F; # CYRILLIC CAPITAL LETTER DZHE -0410; C; 0430; # CYRILLIC CAPITAL LETTER A -0411; C; 0431; # CYRILLIC CAPITAL LETTER BE -0412; C; 0432; # CYRILLIC CAPITAL LETTER VE -0413; C; 0433; # CYRILLIC CAPITAL LETTER GHE -0414; C; 0434; # CYRILLIC CAPITAL LETTER DE -0415; C; 0435; # CYRILLIC CAPITAL LETTER IE -0416; C; 0436; # CYRILLIC CAPITAL LETTER ZHE -0417; C; 0437; # CYRILLIC CAPITAL LETTER ZE -0418; C; 0438; # CYRILLIC CAPITAL LETTER I -0419; C; 0439; # CYRILLIC CAPITAL LETTER SHORT I -041A; C; 043A; # CYRILLIC CAPITAL LETTER KA -041B; C; 043B; # CYRILLIC CAPITAL LETTER EL -041C; C; 043C; # CYRILLIC CAPITAL LETTER EM -041D; C; 043D; # CYRILLIC CAPITAL LETTER EN -041E; C; 043E; # CYRILLIC CAPITAL LETTER O -041F; C; 043F; # CYRILLIC CAPITAL LETTER PE -0420; C; 0440; # CYRILLIC CAPITAL LETTER ER -0421; C; 0441; # CYRILLIC CAPITAL LETTER ES -0422; C; 0442; # CYRILLIC CAPITAL LETTER TE -0423; C; 0443; # CYRILLIC CAPITAL LETTER U -0424; C; 0444; # CYRILLIC CAPITAL LETTER EF -0425; C; 0445; # CYRILLIC CAPITAL LETTER HA -0426; C; 0446; # CYRILLIC CAPITAL LETTER TSE -0427; C; 0447; # CYRILLIC CAPITAL LETTER CHE -0428; C; 0448; # CYRILLIC CAPITAL LETTER SHA -0429; C; 0449; # CYRILLIC CAPITAL LETTER SHCHA -042A; C; 044A; # CYRILLIC CAPITAL LETTER HARD SIGN -042B; C; 044B; # CYRILLIC CAPITAL LETTER YERU -042C; C; 044C; # CYRILLIC CAPITAL LETTER SOFT SIGN -042D; C; 044D; # CYRILLIC CAPITAL LETTER E -042E; C; 044E; # CYRILLIC CAPITAL LETTER YU -042F; C; 044F; # CYRILLIC CAPITAL LETTER YA -0460; C; 0461; # CYRILLIC CAPITAL LETTER OMEGA -0462; C; 0463; # CYRILLIC CAPITAL LETTER YAT -0464; C; 0465; # CYRILLIC CAPITAL LETTER IOTIFIED E -0466; C; 0467; # CYRILLIC CAPITAL LETTER LITTLE YUS -0468; C; 0469; # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS -046A; C; 046B; # CYRILLIC CAPITAL LETTER BIG YUS -046C; C; 046D; # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS -046E; C; 046F; # CYRILLIC CAPITAL LETTER KSI -0470; C; 0471; # CYRILLIC CAPITAL LETTER PSI -0472; C; 0473; # CYRILLIC CAPITAL LETTER FITA -0474; C; 0475; # CYRILLIC CAPITAL LETTER IZHITSA -0476; C; 0477; # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT -0478; C; 0479; # CYRILLIC CAPITAL LETTER UK -047A; C; 047B; # CYRILLIC CAPITAL LETTER ROUND OMEGA -047C; C; 047D; # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO -047E; C; 047F; # CYRILLIC CAPITAL LETTER OT -0480; C; 0481; # CYRILLIC CAPITAL LETTER KOPPA -048A; C; 048B; # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL -048C; C; 048D; # CYRILLIC CAPITAL LETTER SEMISOFT SIGN -048E; C; 048F; # CYRILLIC CAPITAL LETTER ER WITH TICK -0490; C; 0491; # CYRILLIC CAPITAL LETTER GHE WITH UPTURN -0492; C; 0493; # CYRILLIC CAPITAL LETTER GHE WITH STROKE -0494; C; 0495; # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK -0496; C; 0497; # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER -0498; C; 0499; # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER -049A; C; 049B; # CYRILLIC CAPITAL LETTER KA WITH DESCENDER -049C; C; 049D; # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE -049E; C; 049F; # CYRILLIC CAPITAL LETTER KA WITH STROKE -04A0; C; 04A1; # CYRILLIC CAPITAL LETTER BASHKIR KA -04A2; C; 04A3; # CYRILLIC CAPITAL LETTER EN WITH DESCENDER -04A4; C; 04A5; # CYRILLIC CAPITAL LIGATURE EN GHE -04A6; C; 04A7; # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK -04A8; C; 04A9; # CYRILLIC CAPITAL LETTER ABKHASIAN HA -04AA; C; 04AB; # CYRILLIC CAPITAL LETTER ES WITH DESCENDER -04AC; C; 04AD; # CYRILLIC CAPITAL LETTER TE WITH DESCENDER -04AE; C; 04AF; # CYRILLIC CAPITAL LETTER STRAIGHT U -04B0; C; 04B1; # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE -04B2; C; 04B3; # CYRILLIC CAPITAL LETTER HA WITH DESCENDER -04B4; C; 04B5; # CYRILLIC CAPITAL LIGATURE TE TSE -04B6; C; 04B7; # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER -04B8; C; 04B9; # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE -04BA; C; 04BB; # CYRILLIC CAPITAL LETTER SHHA -04BC; C; 04BD; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04BE; C; 04BF; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER -04C1; C; 04C2; # CYRILLIC CAPITAL LETTER ZHE WITH BREVE -04C3; C; 04C4; # CYRILLIC CAPITAL LETTER KA WITH HOOK -04C5; C; 04C6; # CYRILLIC CAPITAL LETTER EL WITH TAIL -04C7; C; 04C8; # CYRILLIC CAPITAL LETTER EN WITH HOOK -04C9; C; 04CA; # CYRILLIC CAPITAL LETTER EN WITH TAIL -04CB; C; 04CC; # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE -04CD; C; 04CE; # CYRILLIC CAPITAL LETTER EM WITH TAIL -04D0; C; 04D1; # CYRILLIC CAPITAL LETTER A WITH BREVE -04D2; C; 04D3; # CYRILLIC CAPITAL LETTER A WITH DIAERESIS -04D4; C; 04D5; # CYRILLIC CAPITAL LIGATURE A IE -04D6; C; 04D7; # CYRILLIC CAPITAL LETTER IE WITH BREVE -04D8; C; 04D9; # CYRILLIC CAPITAL LETTER SCHWA -04DA; C; 04DB; # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS -04DC; C; 04DD; # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS -04DE; C; 04DF; # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS -04E0; C; 04E1; # CYRILLIC CAPITAL LETTER ABKHASIAN DZE -04E2; C; 04E3; # CYRILLIC CAPITAL LETTER I WITH MACRON -04E4; C; 04E5; # CYRILLIC CAPITAL LETTER I WITH DIAERESIS -04E6; C; 04E7; # CYRILLIC CAPITAL LETTER O WITH DIAERESIS -04E8; C; 04E9; # CYRILLIC CAPITAL LETTER BARRED O -04EA; C; 04EB; # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS -04EC; C; 04ED; # CYRILLIC CAPITAL LETTER E WITH DIAERESIS -04EE; C; 04EF; # CYRILLIC CAPITAL LETTER U WITH MACRON -04F0; C; 04F1; # CYRILLIC CAPITAL LETTER U WITH DIAERESIS -04F2; C; 04F3; # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE -04F4; C; 04F5; # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS -04F6; C; 04F7; # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER -04F8; C; 04F9; # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS -0500; C; 0501; # CYRILLIC CAPITAL LETTER KOMI DE -0502; C; 0503; # CYRILLIC CAPITAL LETTER KOMI DJE -0504; C; 0505; # CYRILLIC CAPITAL LETTER KOMI ZJE -0506; C; 0507; # CYRILLIC CAPITAL LETTER KOMI DZJE -0508; C; 0509; # CYRILLIC CAPITAL LETTER KOMI LJE -050A; C; 050B; # CYRILLIC CAPITAL LETTER KOMI NJE -050C; C; 050D; # CYRILLIC CAPITAL LETTER KOMI SJE -050E; C; 050F; # CYRILLIC CAPITAL LETTER KOMI TJE -0531; C; 0561; # ARMENIAN CAPITAL LETTER AYB -0532; C; 0562; # ARMENIAN CAPITAL LETTER BEN -0533; C; 0563; # ARMENIAN CAPITAL LETTER GIM -0534; C; 0564; # ARMENIAN CAPITAL LETTER DA -0535; C; 0565; # ARMENIAN CAPITAL LETTER ECH -0536; C; 0566; # ARMENIAN CAPITAL LETTER ZA -0537; C; 0567; # ARMENIAN CAPITAL LETTER EH -0538; C; 0568; # ARMENIAN CAPITAL LETTER ET -0539; C; 0569; # ARMENIAN CAPITAL LETTER TO -053A; C; 056A; # ARMENIAN CAPITAL LETTER ZHE -053B; C; 056B; # ARMENIAN CAPITAL LETTER INI -053C; C; 056C; # ARMENIAN CAPITAL LETTER LIWN -053D; C; 056D; # ARMENIAN CAPITAL LETTER XEH -053E; C; 056E; # ARMENIAN CAPITAL LETTER CA -053F; C; 056F; # ARMENIAN CAPITAL LETTER KEN -0540; C; 0570; # ARMENIAN CAPITAL LETTER HO -0541; C; 0571; # ARMENIAN CAPITAL LETTER JA -0542; C; 0572; # ARMENIAN CAPITAL LETTER GHAD -0543; C; 0573; # ARMENIAN CAPITAL LETTER CHEH -0544; C; 0574; # ARMENIAN CAPITAL LETTER MEN -0545; C; 0575; # ARMENIAN CAPITAL LETTER YI -0546; C; 0576; # ARMENIAN CAPITAL LETTER NOW -0547; C; 0577; # ARMENIAN CAPITAL LETTER SHA -0548; C; 0578; # ARMENIAN CAPITAL LETTER VO -0549; C; 0579; # ARMENIAN CAPITAL LETTER CHA -054A; C; 057A; # ARMENIAN CAPITAL LETTER PEH -054B; C; 057B; # ARMENIAN CAPITAL LETTER JHEH -054C; C; 057C; # ARMENIAN CAPITAL LETTER RA -054D; C; 057D; # ARMENIAN CAPITAL LETTER SEH -054E; C; 057E; # ARMENIAN CAPITAL LETTER VEW -054F; C; 057F; # ARMENIAN CAPITAL LETTER TIWN -0550; C; 0580; # ARMENIAN CAPITAL LETTER REH -0551; C; 0581; # ARMENIAN CAPITAL LETTER CO -0552; C; 0582; # ARMENIAN CAPITAL LETTER YIWN -0553; C; 0583; # ARMENIAN CAPITAL LETTER PIWR -0554; C; 0584; # ARMENIAN CAPITAL LETTER KEH -0555; C; 0585; # ARMENIAN CAPITAL LETTER OH -0556; C; 0586; # ARMENIAN CAPITAL LETTER FEH -0587; F; 0565 0582; # ARMENIAN SMALL LIGATURE ECH YIWN -10A0; C; 2D00; # GEORGIAN CAPITAL LETTER AN -10A1; C; 2D01; # GEORGIAN CAPITAL LETTER BAN -10A2; C; 2D02; # GEORGIAN CAPITAL LETTER GAN -10A3; C; 2D03; # GEORGIAN CAPITAL LETTER DON -10A4; C; 2D04; # GEORGIAN CAPITAL LETTER EN -10A5; C; 2D05; # GEORGIAN CAPITAL LETTER VIN -10A6; C; 2D06; # GEORGIAN CAPITAL LETTER ZEN -10A7; C; 2D07; # GEORGIAN CAPITAL LETTER TAN -10A8; C; 2D08; # GEORGIAN CAPITAL LETTER IN -10A9; C; 2D09; # GEORGIAN CAPITAL LETTER KAN -10AA; C; 2D0A; # GEORGIAN CAPITAL LETTER LAS -10AB; C; 2D0B; # GEORGIAN CAPITAL LETTER MAN -10AC; C; 2D0C; # GEORGIAN CAPITAL LETTER NAR -10AD; C; 2D0D; # GEORGIAN CAPITAL LETTER ON -10AE; C; 2D0E; # GEORGIAN CAPITAL LETTER PAR -10AF; C; 2D0F; # GEORGIAN CAPITAL LETTER ZHAR -10B0; C; 2D10; # GEORGIAN CAPITAL LETTER RAE -10B1; C; 2D11; # GEORGIAN CAPITAL LETTER SAN -10B2; C; 2D12; # GEORGIAN CAPITAL LETTER TAR -10B3; C; 2D13; # GEORGIAN CAPITAL LETTER UN -10B4; C; 2D14; # GEORGIAN CAPITAL LETTER PHAR -10B5; C; 2D15; # GEORGIAN CAPITAL LETTER KHAR -10B6; C; 2D16; # GEORGIAN CAPITAL LETTER GHAN -10B7; C; 2D17; # GEORGIAN CAPITAL LETTER QAR -10B8; C; 2D18; # GEORGIAN CAPITAL LETTER SHIN -10B9; C; 2D19; # GEORGIAN CAPITAL LETTER CHIN -10BA; C; 2D1A; # GEORGIAN CAPITAL LETTER CAN -10BB; C; 2D1B; # GEORGIAN CAPITAL LETTER JIL -10BC; C; 2D1C; # GEORGIAN CAPITAL LETTER CIL -10BD; C; 2D1D; # GEORGIAN CAPITAL LETTER CHAR -10BE; C; 2D1E; # GEORGIAN CAPITAL LETTER XAN -10BF; C; 2D1F; # GEORGIAN CAPITAL LETTER JHAN -10C0; C; 2D20; # GEORGIAN CAPITAL LETTER HAE -10C1; C; 2D21; # GEORGIAN CAPITAL LETTER HE -10C2; C; 2D22; # GEORGIAN CAPITAL LETTER HIE -10C3; C; 2D23; # GEORGIAN CAPITAL LETTER WE -10C4; C; 2D24; # GEORGIAN CAPITAL LETTER HAR -10C5; C; 2D25; # GEORGIAN CAPITAL LETTER HOE -1E00; C; 1E01; # LATIN CAPITAL LETTER A WITH RING BELOW -1E02; C; 1E03; # LATIN CAPITAL LETTER B WITH DOT ABOVE -1E04; C; 1E05; # LATIN CAPITAL LETTER B WITH DOT BELOW -1E06; C; 1E07; # LATIN CAPITAL LETTER B WITH LINE BELOW -1E08; C; 1E09; # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE -1E0A; C; 1E0B; # LATIN CAPITAL LETTER D WITH DOT ABOVE -1E0C; C; 1E0D; # LATIN CAPITAL LETTER D WITH DOT BELOW -1E0E; C; 1E0F; # LATIN CAPITAL LETTER D WITH LINE BELOW -1E10; C; 1E11; # LATIN CAPITAL LETTER D WITH CEDILLA -1E12; C; 1E13; # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW -1E14; C; 1E15; # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE -1E16; C; 1E17; # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE -1E18; C; 1E19; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW -1E1A; C; 1E1B; # LATIN CAPITAL LETTER E WITH TILDE BELOW -1E1C; C; 1E1D; # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE -1E1E; C; 1E1F; # LATIN CAPITAL LETTER F WITH DOT ABOVE -1E20; C; 1E21; # LATIN CAPITAL LETTER G WITH MACRON -1E22; C; 1E23; # LATIN CAPITAL LETTER H WITH DOT ABOVE -1E24; C; 1E25; # LATIN CAPITAL LETTER H WITH DOT BELOW -1E26; C; 1E27; # LATIN CAPITAL LETTER H WITH DIAERESIS -1E28; C; 1E29; # LATIN CAPITAL LETTER H WITH CEDILLA -1E2A; C; 1E2B; # LATIN CAPITAL LETTER H WITH BREVE BELOW -1E2C; C; 1E2D; # LATIN CAPITAL LETTER I WITH TILDE BELOW -1E2E; C; 1E2F; # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE -1E30; C; 1E31; # LATIN CAPITAL LETTER K WITH ACUTE -1E32; C; 1E33; # LATIN CAPITAL LETTER K WITH DOT BELOW -1E34; C; 1E35; # LATIN CAPITAL LETTER K WITH LINE BELOW -1E36; C; 1E37; # LATIN CAPITAL LETTER L WITH DOT BELOW -1E38; C; 1E39; # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON -1E3A; C; 1E3B; # LATIN CAPITAL LETTER L WITH LINE BELOW -1E3C; C; 1E3D; # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW -1E3E; C; 1E3F; # LATIN CAPITAL LETTER M WITH ACUTE -1E40; C; 1E41; # LATIN CAPITAL LETTER M WITH DOT ABOVE -1E42; C; 1E43; # LATIN CAPITAL LETTER M WITH DOT BELOW -1E44; C; 1E45; # LATIN CAPITAL LETTER N WITH DOT ABOVE -1E46; C; 1E47; # LATIN CAPITAL LETTER N WITH DOT BELOW -1E48; C; 1E49; # LATIN CAPITAL LETTER N WITH LINE BELOW -1E4A; C; 1E4B; # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW -1E4C; C; 1E4D; # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE -1E4E; C; 1E4F; # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS -1E50; C; 1E51; # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE -1E52; C; 1E53; # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE -1E54; C; 1E55; # LATIN CAPITAL LETTER P WITH ACUTE -1E56; C; 1E57; # LATIN CAPITAL LETTER P WITH DOT ABOVE -1E58; C; 1E59; # LATIN CAPITAL LETTER R WITH DOT ABOVE -1E5A; C; 1E5B; # LATIN CAPITAL LETTER R WITH DOT BELOW -1E5C; C; 1E5D; # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON -1E5E; C; 1E5F; # LATIN CAPITAL LETTER R WITH LINE BELOW -1E60; C; 1E61; # LATIN CAPITAL LETTER S WITH DOT ABOVE -1E62; C; 1E63; # LATIN CAPITAL LETTER S WITH DOT BELOW -1E64; C; 1E65; # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE -1E66; C; 1E67; # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE -1E68; C; 1E69; # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE -1E6A; C; 1E6B; # LATIN CAPITAL LETTER T WITH DOT ABOVE -1E6C; C; 1E6D; # LATIN CAPITAL LETTER T WITH DOT BELOW -1E6E; C; 1E6F; # LATIN CAPITAL LETTER T WITH LINE BELOW -1E70; C; 1E71; # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW -1E72; C; 1E73; # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW -1E74; C; 1E75; # LATIN CAPITAL LETTER U WITH TILDE BELOW -1E76; C; 1E77; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW -1E78; C; 1E79; # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE -1E7A; C; 1E7B; # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS -1E7C; C; 1E7D; # LATIN CAPITAL LETTER V WITH TILDE -1E7E; C; 1E7F; # LATIN CAPITAL LETTER V WITH DOT BELOW -1E80; C; 1E81; # LATIN CAPITAL LETTER W WITH GRAVE -1E82; C; 1E83; # LATIN CAPITAL LETTER W WITH ACUTE -1E84; C; 1E85; # LATIN CAPITAL LETTER W WITH DIAERESIS -1E86; C; 1E87; # LATIN CAPITAL LETTER W WITH DOT ABOVE -1E88; C; 1E89; # LATIN CAPITAL LETTER W WITH DOT BELOW -1E8A; C; 1E8B; # LATIN CAPITAL LETTER X WITH DOT ABOVE -1E8C; C; 1E8D; # LATIN CAPITAL LETTER X WITH DIAERESIS -1E8E; C; 1E8F; # LATIN CAPITAL LETTER Y WITH DOT ABOVE -1E90; C; 1E91; # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX -1E92; C; 1E93; # LATIN CAPITAL LETTER Z WITH DOT BELOW -1E94; C; 1E95; # LATIN CAPITAL LETTER Z WITH LINE BELOW -1E96; F; 0068 0331; # LATIN SMALL LETTER H WITH LINE BELOW -1E97; F; 0074 0308; # LATIN SMALL LETTER T WITH DIAERESIS -1E98; F; 0077 030A; # LATIN SMALL LETTER W WITH RING ABOVE -1E99; F; 0079 030A; # LATIN SMALL LETTER Y WITH RING ABOVE -1E9A; F; 0061 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING -1E9B; C; 1E61; # LATIN SMALL LETTER LONG S WITH DOT ABOVE -1EA0; C; 1EA1; # LATIN CAPITAL LETTER A WITH DOT BELOW -1EA2; C; 1EA3; # LATIN CAPITAL LETTER A WITH HOOK ABOVE -1EA4; C; 1EA5; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE -1EA6; C; 1EA7; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE -1EA8; C; 1EA9; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -1EAA; C; 1EAB; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE -1EAC; C; 1EAD; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW -1EAE; C; 1EAF; # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE -1EB0; C; 1EB1; # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE -1EB2; C; 1EB3; # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE -1EB4; C; 1EB5; # LATIN CAPITAL LETTER A WITH BREVE AND TILDE -1EB6; C; 1EB7; # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW -1EB8; C; 1EB9; # LATIN CAPITAL LETTER E WITH DOT BELOW -1EBA; C; 1EBB; # LATIN CAPITAL LETTER E WITH HOOK ABOVE -1EBC; C; 1EBD; # LATIN CAPITAL LETTER E WITH TILDE -1EBE; C; 1EBF; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -1EC0; C; 1EC1; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC2; C; 1EC3; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC4; C; 1EC5; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC6; C; 1EC7; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC8; C; 1EC9; # LATIN CAPITAL LETTER I WITH HOOK ABOVE -1ECA; C; 1ECB; # LATIN CAPITAL LETTER I WITH DOT BELOW -1ECC; C; 1ECD; # LATIN CAPITAL LETTER O WITH DOT BELOW -1ECE; C; 1ECF; # LATIN CAPITAL LETTER O WITH HOOK ABOVE -1ED0; C; 1ED1; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED2; C; 1ED3; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED4; C; 1ED5; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED6; C; 1ED7; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -1ED8; C; 1ED9; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1EDA; C; 1EDB; # LATIN CAPITAL LETTER O WITH HORN AND ACUTE -1EDC; C; 1EDD; # LATIN CAPITAL LETTER O WITH HORN AND GRAVE -1EDE; C; 1EDF; # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE -1EE0; C; 1EE1; # LATIN CAPITAL LETTER O WITH HORN AND TILDE -1EE2; C; 1EE3; # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW -1EE4; C; 1EE5; # LATIN CAPITAL LETTER U WITH DOT BELOW -1EE6; C; 1EE7; # LATIN CAPITAL LETTER U WITH HOOK ABOVE -1EE8; C; 1EE9; # LATIN CAPITAL LETTER U WITH HORN AND ACUTE -1EEA; C; 1EEB; # LATIN CAPITAL LETTER U WITH HORN AND GRAVE -1EEC; C; 1EED; # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE -1EEE; C; 1EEF; # LATIN CAPITAL LETTER U WITH HORN AND TILDE -1EF0; C; 1EF1; # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW -1EF2; C; 1EF3; # LATIN CAPITAL LETTER Y WITH GRAVE -1EF4; C; 1EF5; # LATIN CAPITAL LETTER Y WITH DOT BELOW -1EF6; C; 1EF7; # LATIN CAPITAL LETTER Y WITH HOOK ABOVE -1EF8; C; 1EF9; # LATIN CAPITAL LETTER Y WITH TILDE -1F08; C; 1F00; # GREEK CAPITAL LETTER ALPHA WITH PSILI -1F09; C; 1F01; # GREEK CAPITAL LETTER ALPHA WITH DASIA -1F0A; C; 1F02; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA -1F0B; C; 1F03; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA -1F0C; C; 1F04; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA -1F0D; C; 1F05; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA -1F0E; C; 1F06; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI -1F0F; C; 1F07; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI -1F18; C; 1F10; # GREEK CAPITAL LETTER EPSILON WITH PSILI -1F19; C; 1F11; # GREEK CAPITAL LETTER EPSILON WITH DASIA -1F1A; C; 1F12; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA -1F1B; C; 1F13; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA -1F1C; C; 1F14; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA -1F1D; C; 1F15; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA -1F28; C; 1F20; # GREEK CAPITAL LETTER ETA WITH PSILI -1F29; C; 1F21; # GREEK CAPITAL LETTER ETA WITH DASIA -1F2A; C; 1F22; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA -1F2B; C; 1F23; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA -1F2C; C; 1F24; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA -1F2D; C; 1F25; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA -1F2E; C; 1F26; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI -1F2F; C; 1F27; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI -1F38; C; 1F30; # GREEK CAPITAL LETTER IOTA WITH PSILI -1F39; C; 1F31; # GREEK CAPITAL LETTER IOTA WITH DASIA -1F3A; C; 1F32; # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA -1F3B; C; 1F33; # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA -1F3C; C; 1F34; # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA -1F3D; C; 1F35; # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA -1F3E; C; 1F36; # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI -1F3F; C; 1F37; # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI -1F48; C; 1F40; # GREEK CAPITAL LETTER OMICRON WITH PSILI -1F49; C; 1F41; # GREEK CAPITAL LETTER OMICRON WITH DASIA -1F4A; C; 1F42; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA -1F4B; C; 1F43; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA -1F4C; C; 1F44; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA -1F4D; C; 1F45; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA -1F50; F; 03C5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI -1F52; F; 03C5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA -1F54; F; 03C5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA -1F56; F; 03C5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI -1F59; C; 1F51; # GREEK CAPITAL LETTER UPSILON WITH DASIA -1F5B; C; 1F53; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA -1F5D; C; 1F55; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA -1F5F; C; 1F57; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI -1F68; C; 1F60; # GREEK CAPITAL LETTER OMEGA WITH PSILI -1F69; C; 1F61; # GREEK CAPITAL LETTER OMEGA WITH DASIA -1F6A; C; 1F62; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA -1F6B; C; 1F63; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA -1F6C; C; 1F64; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA -1F6D; C; 1F65; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA -1F6E; C; 1F66; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI -1F6F; C; 1F67; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI -1F80; F; 1F00 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI -1F81; F; 1F01 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI -1F82; F; 1F02 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F83; F; 1F03 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F84; F; 1F04 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F85; F; 1F05 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F86; F; 1F06 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F87; F; 1F07 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F88; F; 1F00 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI -1F88; S; 1F80; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI -1F89; F; 1F01 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI -1F89; S; 1F81; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI -1F8A; F; 1F02 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F8A; S; 1F82; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F8B; F; 1F03 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F8B; S; 1F83; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F8C; F; 1F04 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F8C; S; 1F84; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F8D; F; 1F05 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F8D; S; 1F85; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F8E; F; 1F06 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F8E; S; 1F86; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F8F; F; 1F07 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1F8F; S; 1F87; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1F90; F; 1F20 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI -1F91; F; 1F21 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI -1F92; F; 1F22 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F93; F; 1F23 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F94; F; 1F24 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F95; F; 1F25 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F96; F; 1F26 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F97; F; 1F27 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F98; F; 1F20 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI -1F98; S; 1F90; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI -1F99; F; 1F21 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI -1F99; S; 1F91; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI -1F9A; F; 1F22 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F9A; S; 1F92; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F9B; F; 1F23 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F9B; S; 1F93; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F9C; F; 1F24 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F9C; S; 1F94; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F9D; F; 1F25 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F9D; S; 1F95; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F9E; F; 1F26 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F9E; S; 1F96; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F9F; F; 1F27 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1F9F; S; 1F97; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FA0; F; 1F60 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI -1FA1; F; 1F61 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI -1FA2; F; 1F62 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1FA3; F; 1F63 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1FA4; F; 1F64 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1FA5; F; 1F65 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1FA6; F; 1F66 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1FA7; F; 1F67 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1FA8; F; 1F60 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI -1FA8; S; 1FA0; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI -1FA9; F; 1F61 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI -1FA9; S; 1FA1; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI -1FAA; F; 1F62 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1FAA; S; 1FA2; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1FAB; F; 1F63 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1FAB; S; 1FA3; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1FAC; F; 1F64 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1FAC; S; 1FA4; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1FAD; F; 1F65 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1FAD; S; 1FA5; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1FAE; F; 1F66 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1FAE; S; 1FA6; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1FAF; F; 1F67 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FAF; S; 1FA7; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FB2; F; 1F70 03B9; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI -1FB3; F; 03B1 03B9; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI -1FB4; F; 03AC 03B9; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -1FB6; F; 03B1 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI -1FB7; F; 03B1 0342 03B9; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI -1FB8; C; 1FB0; # GREEK CAPITAL LETTER ALPHA WITH VRACHY -1FB9; C; 1FB1; # GREEK CAPITAL LETTER ALPHA WITH MACRON -1FBA; C; 1F70; # GREEK CAPITAL LETTER ALPHA WITH VARIA -1FBB; C; 1F71; # GREEK CAPITAL LETTER ALPHA WITH OXIA -1FBC; F; 03B1 03B9; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -1FBC; S; 1FB3; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -1FBE; C; 03B9; # GREEK PROSGEGRAMMENI -1FC2; F; 1F74 03B9; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI -1FC3; F; 03B7 03B9; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI -1FC4; F; 03AE 03B9; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -1FC6; F; 03B7 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI -1FC7; F; 03B7 0342 03B9; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI -1FC8; C; 1F72; # GREEK CAPITAL LETTER EPSILON WITH VARIA -1FC9; C; 1F73; # GREEK CAPITAL LETTER EPSILON WITH OXIA -1FCA; C; 1F74; # GREEK CAPITAL LETTER ETA WITH VARIA -1FCB; C; 1F75; # GREEK CAPITAL LETTER ETA WITH OXIA -1FCC; F; 03B7 03B9; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -1FCC; S; 1FC3; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -1FD2; F; 03B9 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA -1FD3; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -1FD6; F; 03B9 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI -1FD7; F; 03B9 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI -1FD8; C; 1FD0; # GREEK CAPITAL LETTER IOTA WITH VRACHY -1FD9; C; 1FD1; # GREEK CAPITAL LETTER IOTA WITH MACRON -1FDA; C; 1F76; # GREEK CAPITAL LETTER IOTA WITH VARIA -1FDB; C; 1F77; # GREEK CAPITAL LETTER IOTA WITH OXIA -1FE2; F; 03C5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA -1FE3; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA -1FE4; F; 03C1 0313; # GREEK SMALL LETTER RHO WITH PSILI -1FE6; F; 03C5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI -1FE7; F; 03C5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI -1FE8; C; 1FE0; # GREEK CAPITAL LETTER UPSILON WITH VRACHY -1FE9; C; 1FE1; # GREEK CAPITAL LETTER UPSILON WITH MACRON -1FEA; C; 1F7A; # GREEK CAPITAL LETTER UPSILON WITH VARIA -1FEB; C; 1F7B; # GREEK CAPITAL LETTER UPSILON WITH OXIA -1FEC; C; 1FE5; # GREEK CAPITAL LETTER RHO WITH DASIA -1FF2; F; 1F7C 03B9; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI -1FF3; F; 03C9 03B9; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI -1FF4; F; 03CE 03B9; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI -1FF6; F; 03C9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI -1FF7; F; 03C9 0342 03B9; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI -1FF8; C; 1F78; # GREEK CAPITAL LETTER OMICRON WITH VARIA -1FF9; C; 1F79; # GREEK CAPITAL LETTER OMICRON WITH OXIA -1FFA; C; 1F7C; # GREEK CAPITAL LETTER OMEGA WITH VARIA -1FFB; C; 1F7D; # GREEK CAPITAL LETTER OMEGA WITH OXIA -1FFC; F; 03C9 03B9; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -1FFC; S; 1FF3; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -2126; C; 03C9; # OHM SIGN -212A; C; 006B; # KELVIN SIGN -212B; C; 00E5; # ANGSTROM SIGN -2160; C; 2170; # ROMAN NUMERAL ONE -2161; C; 2171; # ROMAN NUMERAL TWO -2162; C; 2172; # ROMAN NUMERAL THREE -2163; C; 2173; # ROMAN NUMERAL FOUR -2164; C; 2174; # ROMAN NUMERAL FIVE -2165; C; 2175; # ROMAN NUMERAL SIX -2166; C; 2176; # ROMAN NUMERAL SEVEN -2167; C; 2177; # ROMAN NUMERAL EIGHT -2168; C; 2178; # ROMAN NUMERAL NINE -2169; C; 2179; # ROMAN NUMERAL TEN -216A; C; 217A; # ROMAN NUMERAL ELEVEN -216B; C; 217B; # ROMAN NUMERAL TWELVE -216C; C; 217C; # ROMAN NUMERAL FIFTY -216D; C; 217D; # ROMAN NUMERAL ONE HUNDRED -216E; C; 217E; # ROMAN NUMERAL FIVE HUNDRED -216F; C; 217F; # ROMAN NUMERAL ONE THOUSAND -24B6; C; 24D0; # CIRCLED LATIN CAPITAL LETTER A -24B7; C; 24D1; # CIRCLED LATIN CAPITAL LETTER B -24B8; C; 24D2; # CIRCLED LATIN CAPITAL LETTER C -24B9; C; 24D3; # CIRCLED LATIN CAPITAL LETTER D -24BA; C; 24D4; # CIRCLED LATIN CAPITAL LETTER E -24BB; C; 24D5; # CIRCLED LATIN CAPITAL LETTER F -24BC; C; 24D6; # CIRCLED LATIN CAPITAL LETTER G -24BD; C; 24D7; # CIRCLED LATIN CAPITAL LETTER H -24BE; C; 24D8; # CIRCLED LATIN CAPITAL LETTER I -24BF; C; 24D9; # CIRCLED LATIN CAPITAL LETTER J -24C0; C; 24DA; # CIRCLED LATIN CAPITAL LETTER K -24C1; C; 24DB; # CIRCLED LATIN CAPITAL LETTER L -24C2; C; 24DC; # CIRCLED LATIN CAPITAL LETTER M -24C3; C; 24DD; # CIRCLED LATIN CAPITAL LETTER N -24C4; C; 24DE; # CIRCLED LATIN CAPITAL LETTER O -24C5; C; 24DF; # CIRCLED LATIN CAPITAL LETTER P -24C6; C; 24E0; # CIRCLED LATIN CAPITAL LETTER Q -24C7; C; 24E1; # CIRCLED LATIN CAPITAL LETTER R -24C8; C; 24E2; # CIRCLED LATIN CAPITAL LETTER S -24C9; C; 24E3; # CIRCLED LATIN CAPITAL LETTER T -24CA; C; 24E4; # CIRCLED LATIN CAPITAL LETTER U -24CB; C; 24E5; # CIRCLED LATIN CAPITAL LETTER V -24CC; C; 24E6; # CIRCLED LATIN CAPITAL LETTER W -24CD; C; 24E7; # CIRCLED LATIN CAPITAL LETTER X -24CE; C; 24E8; # CIRCLED LATIN CAPITAL LETTER Y -24CF; C; 24E9; # CIRCLED LATIN CAPITAL LETTER Z -2C00; C; 2C30; # GLAGOLITIC CAPITAL LETTER AZU -2C01; C; 2C31; # GLAGOLITIC CAPITAL LETTER BUKY -2C02; C; 2C32; # GLAGOLITIC CAPITAL LETTER VEDE -2C03; C; 2C33; # GLAGOLITIC CAPITAL LETTER GLAGOLI -2C04; C; 2C34; # GLAGOLITIC CAPITAL LETTER DOBRO -2C05; C; 2C35; # GLAGOLITIC CAPITAL LETTER YESTU -2C06; C; 2C36; # GLAGOLITIC CAPITAL LETTER ZHIVETE -2C07; C; 2C37; # GLAGOLITIC CAPITAL LETTER DZELO -2C08; C; 2C38; # GLAGOLITIC CAPITAL LETTER ZEMLJA -2C09; C; 2C39; # GLAGOLITIC CAPITAL LETTER IZHE -2C0A; C; 2C3A; # GLAGOLITIC CAPITAL LETTER INITIAL IZHE -2C0B; C; 2C3B; # GLAGOLITIC CAPITAL LETTER I -2C0C; C; 2C3C; # GLAGOLITIC CAPITAL LETTER DJERVI -2C0D; C; 2C3D; # GLAGOLITIC CAPITAL LETTER KAKO -2C0E; C; 2C3E; # GLAGOLITIC CAPITAL LETTER LJUDIJE -2C0F; C; 2C3F; # GLAGOLITIC CAPITAL LETTER MYSLITE -2C10; C; 2C40; # GLAGOLITIC CAPITAL LETTER NASHI -2C11; C; 2C41; # GLAGOLITIC CAPITAL LETTER ONU -2C12; C; 2C42; # GLAGOLITIC CAPITAL LETTER POKOJI -2C13; C; 2C43; # GLAGOLITIC CAPITAL LETTER RITSI -2C14; C; 2C44; # GLAGOLITIC CAPITAL LETTER SLOVO -2C15; C; 2C45; # GLAGOLITIC CAPITAL LETTER TVRIDO -2C16; C; 2C46; # GLAGOLITIC CAPITAL LETTER UKU -2C17; C; 2C47; # GLAGOLITIC CAPITAL LETTER FRITU -2C18; C; 2C48; # GLAGOLITIC CAPITAL LETTER HERU -2C19; C; 2C49; # GLAGOLITIC CAPITAL LETTER OTU -2C1A; C; 2C4A; # GLAGOLITIC CAPITAL LETTER PE -2C1B; C; 2C4B; # GLAGOLITIC CAPITAL LETTER SHTA -2C1C; C; 2C4C; # GLAGOLITIC CAPITAL LETTER TSI -2C1D; C; 2C4D; # GLAGOLITIC CAPITAL LETTER CHRIVI -2C1E; C; 2C4E; # GLAGOLITIC CAPITAL LETTER SHA -2C1F; C; 2C4F; # GLAGOLITIC CAPITAL LETTER YERU -2C20; C; 2C50; # GLAGOLITIC CAPITAL LETTER YERI -2C21; C; 2C51; # GLAGOLITIC CAPITAL LETTER YATI -2C22; C; 2C52; # GLAGOLITIC CAPITAL LETTER SPIDERY HA -2C23; C; 2C53; # GLAGOLITIC CAPITAL LETTER YU -2C24; C; 2C54; # GLAGOLITIC CAPITAL LETTER SMALL YUS -2C25; C; 2C55; # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL -2C26; C; 2C56; # GLAGOLITIC CAPITAL LETTER YO -2C27; C; 2C57; # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS -2C28; C; 2C58; # GLAGOLITIC CAPITAL LETTER BIG YUS -2C29; C; 2C59; # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS -2C2A; C; 2C5A; # GLAGOLITIC CAPITAL LETTER FITA -2C2B; C; 2C5B; # GLAGOLITIC CAPITAL LETTER IZHITSA -2C2C; C; 2C5C; # GLAGOLITIC CAPITAL LETTER SHTAPIC -2C2D; C; 2C5D; # GLAGOLITIC CAPITAL LETTER TROKUTASTI A -2C2E; C; 2C5E; # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C80; C; 2C81; # COPTIC CAPITAL LETTER ALFA -2C82; C; 2C83; # COPTIC CAPITAL LETTER VIDA -2C84; C; 2C85; # COPTIC CAPITAL LETTER GAMMA -2C86; C; 2C87; # COPTIC CAPITAL LETTER DALDA -2C88; C; 2C89; # COPTIC CAPITAL LETTER EIE -2C8A; C; 2C8B; # COPTIC CAPITAL LETTER SOU -2C8C; C; 2C8D; # COPTIC CAPITAL LETTER ZATA -2C8E; C; 2C8F; # COPTIC CAPITAL LETTER HATE -2C90; C; 2C91; # COPTIC CAPITAL LETTER THETHE -2C92; C; 2C93; # COPTIC CAPITAL LETTER IAUDA -2C94; C; 2C95; # COPTIC CAPITAL LETTER KAPA -2C96; C; 2C97; # COPTIC CAPITAL LETTER LAULA -2C98; C; 2C99; # COPTIC CAPITAL LETTER MI -2C9A; C; 2C9B; # COPTIC CAPITAL LETTER NI -2C9C; C; 2C9D; # COPTIC CAPITAL LETTER KSI -2C9E; C; 2C9F; # COPTIC CAPITAL LETTER O -2CA0; C; 2CA1; # COPTIC CAPITAL LETTER PI -2CA2; C; 2CA3; # COPTIC CAPITAL LETTER RO -2CA4; C; 2CA5; # COPTIC CAPITAL LETTER SIMA -2CA6; C; 2CA7; # COPTIC CAPITAL LETTER TAU -2CA8; C; 2CA9; # COPTIC CAPITAL LETTER UA -2CAA; C; 2CAB; # COPTIC CAPITAL LETTER FI -2CAC; C; 2CAD; # COPTIC CAPITAL LETTER KHI -2CAE; C; 2CAF; # COPTIC CAPITAL LETTER PSI -2CB0; C; 2CB1; # COPTIC CAPITAL LETTER OOU -2CB2; C; 2CB3; # COPTIC CAPITAL LETTER DIALECT-P ALEF -2CB4; C; 2CB5; # COPTIC CAPITAL LETTER OLD COPTIC AIN -2CB6; C; 2CB7; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE -2CB8; C; 2CB9; # COPTIC CAPITAL LETTER DIALECT-P KAPA -2CBA; C; 2CBB; # COPTIC CAPITAL LETTER DIALECT-P NI -2CBC; C; 2CBD; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI -2CBE; C; 2CBF; # COPTIC CAPITAL LETTER OLD COPTIC OOU -2CC0; C; 2CC1; # COPTIC CAPITAL LETTER SAMPI -2CC2; C; 2CC3; # COPTIC CAPITAL LETTER CROSSED SHEI -2CC4; C; 2CC5; # COPTIC CAPITAL LETTER OLD COPTIC SHEI -2CC6; C; 2CC7; # COPTIC CAPITAL LETTER OLD COPTIC ESH -2CC8; C; 2CC9; # COPTIC CAPITAL LETTER AKHMIMIC KHEI -2CCA; C; 2CCB; # COPTIC CAPITAL LETTER DIALECT-P HORI -2CCC; C; 2CCD; # COPTIC CAPITAL LETTER OLD COPTIC HORI -2CCE; C; 2CCF; # COPTIC CAPITAL LETTER OLD COPTIC HA -2CD0; C; 2CD1; # COPTIC CAPITAL LETTER L-SHAPED HA -2CD2; C; 2CD3; # COPTIC CAPITAL LETTER OLD COPTIC HEI -2CD4; C; 2CD5; # COPTIC CAPITAL LETTER OLD COPTIC HAT -2CD6; C; 2CD7; # COPTIC CAPITAL LETTER OLD COPTIC GANGIA -2CD8; C; 2CD9; # COPTIC CAPITAL LETTER OLD COPTIC DJA -2CDA; C; 2CDB; # COPTIC CAPITAL LETTER OLD COPTIC SHIMA -2CDC; C; 2CDD; # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA -2CDE; C; 2CDF; # COPTIC CAPITAL LETTER OLD NUBIAN NGI -2CE0; C; 2CE1; # COPTIC CAPITAL LETTER OLD NUBIAN NYI -2CE2; C; 2CE3; # COPTIC CAPITAL LETTER OLD NUBIAN WAU -FB00; F; 0066 0066; # LATIN SMALL LIGATURE FF -FB01; F; 0066 0069; # LATIN SMALL LIGATURE FI -FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL -FB03; F; 0066 0066 0069; # LATIN SMALL LIGATURE FFI -FB04; F; 0066 0066 006C; # LATIN SMALL LIGATURE FFL -FB05; F; 0073 0074; # LATIN SMALL LIGATURE LONG S T -FB06; F; 0073 0074; # LATIN SMALL LIGATURE ST -FB13; F; 0574 0576; # ARMENIAN SMALL LIGATURE MEN NOW -FB14; F; 0574 0565; # ARMENIAN SMALL LIGATURE MEN ECH -FB15; F; 0574 056B; # ARMENIAN SMALL LIGATURE MEN INI -FB16; F; 057E 0576; # ARMENIAN SMALL LIGATURE VEW NOW -FB17; F; 0574 056D; # ARMENIAN SMALL LIGATURE MEN XEH -FF21; C; FF41; # FULLWIDTH LATIN CAPITAL LETTER A -FF22; C; FF42; # FULLWIDTH LATIN CAPITAL LETTER B -FF23; C; FF43; # FULLWIDTH LATIN CAPITAL LETTER C -FF24; C; FF44; # FULLWIDTH LATIN CAPITAL LETTER D -FF25; C; FF45; # FULLWIDTH LATIN CAPITAL LETTER E -FF26; C; FF46; # FULLWIDTH LATIN CAPITAL LETTER F -FF27; C; FF47; # FULLWIDTH LATIN CAPITAL LETTER G -FF28; C; FF48; # FULLWIDTH LATIN CAPITAL LETTER H -FF29; C; FF49; # FULLWIDTH LATIN CAPITAL LETTER I -FF2A; C; FF4A; # FULLWIDTH LATIN CAPITAL LETTER J -FF2B; C; FF4B; # FULLWIDTH LATIN CAPITAL LETTER K -FF2C; C; FF4C; # FULLWIDTH LATIN CAPITAL LETTER L -FF2D; C; FF4D; # FULLWIDTH LATIN CAPITAL LETTER M -FF2E; C; FF4E; # FULLWIDTH LATIN CAPITAL LETTER N -FF2F; C; FF4F; # FULLWIDTH LATIN CAPITAL LETTER O -FF30; C; FF50; # FULLWIDTH LATIN CAPITAL LETTER P -FF31; C; FF51; # FULLWIDTH LATIN CAPITAL LETTER Q -FF32; C; FF52; # FULLWIDTH LATIN CAPITAL LETTER R -FF33; C; FF53; # FULLWIDTH LATIN CAPITAL LETTER S -FF34; C; FF54; # FULLWIDTH LATIN CAPITAL LETTER T -FF35; C; FF55; # FULLWIDTH LATIN CAPITAL LETTER U -FF36; C; FF56; # FULLWIDTH LATIN CAPITAL LETTER V -FF37; C; FF57; # FULLWIDTH LATIN CAPITAL LETTER W -FF38; C; FF58; # FULLWIDTH LATIN CAPITAL LETTER X -FF39; C; FF59; # FULLWIDTH LATIN CAPITAL LETTER Y -FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z -10400; C; 10428; # DESERET CAPITAL LETTER LONG I -10401; C; 10429; # DESERET CAPITAL LETTER LONG E -10402; C; 1042A; # DESERET CAPITAL LETTER LONG A -10403; C; 1042B; # DESERET CAPITAL LETTER LONG AH -10404; C; 1042C; # DESERET CAPITAL LETTER LONG O -10405; C; 1042D; # DESERET CAPITAL LETTER LONG OO -10406; C; 1042E; # DESERET CAPITAL LETTER SHORT I -10407; C; 1042F; # DESERET CAPITAL LETTER SHORT E -10408; C; 10430; # DESERET CAPITAL LETTER SHORT A -10409; C; 10431; # DESERET CAPITAL LETTER SHORT AH -1040A; C; 10432; # DESERET CAPITAL LETTER SHORT O -1040B; C; 10433; # DESERET CAPITAL LETTER SHORT OO -1040C; C; 10434; # DESERET CAPITAL LETTER AY -1040D; C; 10435; # DESERET CAPITAL LETTER OW -1040E; C; 10436; # DESERET CAPITAL LETTER WU -1040F; C; 10437; # DESERET CAPITAL LETTER YEE -10410; C; 10438; # DESERET CAPITAL LETTER H -10411; C; 10439; # DESERET CAPITAL LETTER PEE -10412; C; 1043A; # DESERET CAPITAL LETTER BEE -10413; C; 1043B; # DESERET CAPITAL LETTER TEE -10414; C; 1043C; # DESERET CAPITAL LETTER DEE -10415; C; 1043D; # DESERET CAPITAL LETTER CHEE -10416; C; 1043E; # DESERET CAPITAL LETTER JEE -10417; C; 1043F; # DESERET CAPITAL LETTER KAY -10418; C; 10440; # DESERET CAPITAL LETTER GAY -10419; C; 10441; # DESERET CAPITAL LETTER EF -1041A; C; 10442; # DESERET CAPITAL LETTER VEE -1041B; C; 10443; # DESERET CAPITAL LETTER ETH -1041C; C; 10444; # DESERET CAPITAL LETTER THEE -1041D; C; 10445; # DESERET CAPITAL LETTER ES -1041E; C; 10446; # DESERET CAPITAL LETTER ZEE -1041F; C; 10447; # DESERET CAPITAL LETTER ESH -10420; C; 10448; # DESERET CAPITAL LETTER ZHEE -10421; C; 10449; # DESERET CAPITAL LETTER ER -10422; C; 1044A; # DESERET CAPITAL LETTER EL -10423; C; 1044B; # DESERET CAPITAL LETTER EM -10424; C; 1044C; # DESERET CAPITAL LETTER EN -10425; C; 1044D; # DESERET CAPITAL LETTER ENG -10426; C; 1044E; # DESERET CAPITAL LETTER OI -10427; C; 1044F; # DESERET CAPITAL LETTER EW diff --git a/Master/tlpkg/tlperl.old/lib/unicore/CombiningClass.pl b/Master/tlpkg/tlperl.old/lib/unicore/CombiningClass.pl deleted file mode 100644 index 7d4b8085c57..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/CombiningClass.pl +++ /dev/null @@ -1,203 +0,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 -0350 0352 230 -0353 0356 220 -0357 230 -0358 232 -0359 035A 220 -035B 230 -035C 233 -035D 035E 234 -035F 233 -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 -05A2 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 -05C5 220 -05C7 18 -0610 0615 230 -064B 27 -064C 28 -064D 29 -064E 30 -064F 31 -0650 32 -0651 33 -0652 34 -0653 0654 230 -0655 0656 220 -0657 065B 230 -065C 220 -065D 065E 230 -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 -0CBC 7 -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 -135F 230 -1714 9 -1734 9 -17D2 9 -17DD 230 -18A9 228 -1939 222 -193A 230 -193B 220 -1A17 230 -1A18 220 -1DC0 1DC1 230 -1DC2 220 -1DC3 230 -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 20EB 1 -302A 218 -302B 228 -302C 232 -302D 222 -302E 302F 224 -3099 309A 8 -A806 9 -FB1E 26 -FE20 FE23 230 -10A0D 220 -10A0F 230 -10A38 230 -10A39 1 -10A3A 220 -10A3F 9 -1D165 1D166 216 -1D167 1D169 1 -1D16D 226 -1D16E 1D172 216 -1D17B 1D182 220 -1D185 1D189 230 -1D18A 1D18B 220 -1D1AA 1D1AD 230 -1D242 1D244 230 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/CompositionExclusions.txt b/Master/tlpkg/tlperl.old/lib/unicore/CompositionExclusions.txt deleted file mode 100644 index f20528b091e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/CompositionExclusions.txt +++ /dev/null @@ -1,179 +0,0 @@ -# CompositionExclusions-4.1.0.txt -# Date: 2005-03-17, 15:21:00 PST [KW] -# -# This file lists the characters from the UAX #15 Composition Exclusion Table. -# -# This file is a normative contributory data file in the -# Unicode Character Database. -# -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# -# For more information, see -# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table -# ================================================ - -# (1) Script Specifics -# This list of characters cannot be derived from the UnicodeData file. -# ================================================ - -0958 # DEVANAGARI LETTER QA -0959 # DEVANAGARI LETTER KHHA -095A # DEVANAGARI LETTER GHHA -095B # DEVANAGARI LETTER ZA -095C # DEVANAGARI LETTER DDDHA -095D # DEVANAGARI LETTER RHA -095E # DEVANAGARI LETTER FA -095F # DEVANAGARI LETTER YYA -09DC # BENGALI LETTER RRA -09DD # BENGALI LETTER RHA -09DF # BENGALI LETTER YYA -0A33 # GURMUKHI LETTER LLA -0A36 # GURMUKHI LETTER SHA -0A59 # GURMUKHI LETTER KHHA -0A5A # GURMUKHI LETTER GHHA -0A5B # GURMUKHI LETTER ZA -0A5E # GURMUKHI LETTER FA -0B5C # ORIYA LETTER RRA -0B5D # ORIYA LETTER RHA -0F43 # TIBETAN LETTER GHA -0F4D # TIBETAN LETTER DDHA -0F52 # TIBETAN LETTER DHA -0F57 # TIBETAN LETTER BHA -0F5C # TIBETAN LETTER DZHA -0F69 # TIBETAN LETTER KSSA -0F76 # TIBETAN VOWEL SIGN VOCALIC R -0F78 # TIBETAN VOWEL SIGN VOCALIC L -0F93 # TIBETAN SUBJOINED LETTER GHA -0F9D # TIBETAN SUBJOINED LETTER DDHA -0FA2 # TIBETAN SUBJOINED LETTER DHA -0FA7 # TIBETAN SUBJOINED LETTER BHA -0FAC # TIBETAN SUBJOINED LETTER DZHA -0FB9 # TIBETAN SUBJOINED LETTER KSSA -FB1D # HEBREW LETTER YOD WITH HIRIQ -FB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH -FB2A # HEBREW LETTER SHIN WITH SHIN DOT -FB2B # HEBREW LETTER SHIN WITH SIN DOT -FB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT -FB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT -FB2E # HEBREW LETTER ALEF WITH PATAH -FB2F # HEBREW LETTER ALEF WITH QAMATS -FB30 # HEBREW LETTER ALEF WITH MAPIQ -FB31 # HEBREW LETTER BET WITH DAGESH -FB32 # HEBREW LETTER GIMEL WITH DAGESH -FB33 # HEBREW LETTER DALET WITH DAGESH -FB34 # HEBREW LETTER HE WITH MAPIQ -FB35 # HEBREW LETTER VAV WITH DAGESH -FB36 # HEBREW LETTER ZAYIN WITH DAGESH -FB38 # HEBREW LETTER TET WITH DAGESH -FB39 # HEBREW LETTER YOD WITH DAGESH -FB3A # HEBREW LETTER FINAL KAF WITH DAGESH -FB3B # HEBREW LETTER KAF WITH DAGESH -FB3C # HEBREW LETTER LAMED WITH DAGESH -FB3E # HEBREW LETTER MEM WITH DAGESH -FB40 # HEBREW LETTER NUN WITH DAGESH -FB41 # HEBREW LETTER SAMEKH WITH DAGESH -FB43 # HEBREW LETTER FINAL PE WITH DAGESH -FB44 # HEBREW LETTER PE WITH DAGESH -FB46 # HEBREW LETTER TSADI WITH DAGESH -FB47 # HEBREW LETTER QOF WITH DAGESH -FB48 # HEBREW LETTER RESH WITH DAGESH -FB49 # HEBREW LETTER SHIN WITH DAGESH -FB4A # HEBREW LETTER TAV WITH DAGESH -FB4B # HEBREW LETTER VAV WITH HOLAM -FB4C # HEBREW LETTER BET WITH RAFE -FB4D # HEBREW LETTER KAF WITH RAFE -FB4E # HEBREW LETTER PE WITH RAFE - -# Total code points: 67 - -# ================================================ -# (2) Post Composition Version precomposed characters -# These characters cannot be derived solely from the UnicodeData.txt file -# in this version of Unicode. -# ================================================ - -2ADC # FORKING -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 -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 - -# Total code points: 14 - -# ================================================ -# (3) Singleton Decompositions -# These characters can be derived from the UnicodeData file -# by including all characters whose canonical decomposition -# consists of a single character. -# These characters are simply quoted here for reference. -# ================================================ - -# 0340..0341 [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK -# 0343 COMBINING GREEK KORONIS -# 0374 GREEK NUMERAL SIGN -# 037E GREEK QUESTION MARK -# 0387 GREEK ANO TELEIA -# 1F71 GREEK SMALL LETTER ALPHA WITH OXIA -# 1F73 GREEK SMALL LETTER EPSILON WITH OXIA -# 1F75 GREEK SMALL LETTER ETA WITH OXIA -# 1F77 GREEK SMALL LETTER IOTA WITH OXIA -# 1F79 GREEK SMALL LETTER OMICRON WITH OXIA -# 1F7B GREEK SMALL LETTER UPSILON WITH OXIA -# 1F7D GREEK SMALL LETTER OMEGA WITH OXIA -# 1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA -# 1FBE GREEK PROSGEGRAMMENI -# 1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA -# 1FCB GREEK CAPITAL LETTER ETA WITH OXIA -# 1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -# 1FDB GREEK CAPITAL LETTER IOTA WITH OXIA -# 1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA -# 1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA -# 1FEE..1FEF [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA -# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA -# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA -# 1FFD GREEK OXIA -# 2000..2001 [2] EN QUAD..EM QUAD -# 2126 OHM SIGN -# 212A..212B [2] KELVIN SIGN..ANGSTROM SIGN -# 2329 LEFT-POINTING ANGLE BRACKET -# 232A RIGHT-POINTING ANGLE BRACKET -# F900..FA0D [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D -# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10 -# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12 -# FA15..FA1E [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E -# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20 -# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22 -# FA25..FA26 [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26 -# FA2A..FA2D [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D -# FA30..FA6A [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A -# FA70..FAD9 [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 -# 2F800..2FA1D [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - -# Total code points: 924 - -# ================================================ -# (4) Non-Starter Decompositions -# These characters can be derived from the UnicodeData file -# by including all characters whose canonical decomposition consists -# of a sequence of characters, the first of which has a non-zero -# combining class. -# These characters are simply quoted here for reference. -# ================================================ - -# 0344 COMBINING GREEK DIALYTIKA TONOS -# 0F73 TIBETAN VOWEL SIGN II -# 0F75 TIBETAN VOWEL SIGN UU -# 0F81 TIBETAN VOWEL SIGN REVERSED II - -# Total code points: 4 - diff --git a/Master/tlpkg/tlperl.old/lib/unicore/Decomposition.pl b/Master/tlpkg/tlperl.old/lib/unicore/Decomposition.pl deleted file mode 100644 index ba6b304c15e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/Decomposition.pl +++ /dev/null @@ -1,5366 +0,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 -03F9 <compat> 03A3 -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 -10FC <super> 10DC -1D2C <super> 0041 -1D2D <super> 00C6 -1D2E <super> 0042 -1D30 <super> 0044 -1D31 <super> 0045 -1D32 <super> 018E -1D33 <super> 0047 -1D34 <super> 0048 -1D35 <super> 0049 -1D36 <super> 004A -1D37 <super> 004B -1D38 <super> 004C -1D39 <super> 004D -1D3A <super> 004E -1D3C <super> 004F -1D3D <super> 0222 -1D3E <super> 0050 -1D3F <super> 0052 -1D40 <super> 0054 -1D41 <super> 0055 -1D42 <super> 0057 -1D43 <super> 0061 -1D44 <super> 0250 -1D45 <super> 0251 -1D46 <super> 1D02 -1D47 <super> 0062 -1D48 <super> 0064 -1D49 <super> 0065 -1D4A <super> 0259 -1D4B <super> 025B -1D4C <super> 025C -1D4D <super> 0067 -1D4F <super> 006B -1D50 <super> 006D -1D51 <super> 014B -1D52 <super> 006F -1D53 <super> 0254 -1D54 <super> 1D16 -1D55 <super> 1D17 -1D56 <super> 0070 -1D57 <super> 0074 -1D58 <super> 0075 -1D59 <super> 1D1D -1D5A <super> 026F -1D5B <super> 0076 -1D5C <super> 1D25 -1D5D <super> 03B2 -1D5E <super> 03B3 -1D5F <super> 03B4 -1D60 <super> 03C6 -1D61 <super> 03C7 -1D62 <sub> 0069 -1D63 <sub> 0072 -1D64 <sub> 0075 -1D65 <sub> 0076 -1D66 <sub> 03B2 -1D67 <sub> 03B3 -1D68 <sub> 03C1 -1D69 <sub> 03C6 -1D6A <sub> 03C7 -1D78 <super> 043D -1D9B <super> 0252 -1D9C <super> 0063 -1D9D <super> 0255 -1D9E <super> 00F0 -1D9F <super> 025C -1DA0 <super> 0066 -1DA1 <super> 025F -1DA2 <super> 0261 -1DA3 <super> 0265 -1DA4 <super> 0268 -1DA5 <super> 0269 -1DA6 <super> 026A -1DA7 <super> 1D7B -1DA8 <super> 029D -1DA9 <super> 026D -1DAA <super> 1D85 -1DAB <super> 029F -1DAC <super> 0271 -1DAD <super> 0270 -1DAE <super> 0272 -1DAF <super> 0273 -1DB0 <super> 0274 -1DB1 <super> 0275 -1DB2 <super> 0278 -1DB3 <super> 0282 -1DB4 <super> 0283 -1DB5 <super> 01AB -1DB6 <super> 0289 -1DB7 <super> 028A -1DB8 <super> 1D1C -1DB9 <super> 028B -1DBA <super> 028C -1DBB <super> 007A -1DBC <super> 0290 -1DBD <super> 0291 -1DBE <super> 0292 -1DBF <super> 03B8 -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 -2090 <sub> 0061 -2091 <sub> 0065 -2092 <sub> 006F -2093 <sub> 0078 -2094 <sub> 0259 -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 -213B <compat> 0046 0041 0058 -213C <font> 03C0 -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 -2D6F <super> 2D61 -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 -321D <compat> 0028 110B 1169 110C 1165 11AB 0029 -321E <compat> 0028 110B 1169 1112 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 -3250 <square> 0050 0054 0045 -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 -327C <circle> 110E 1161 11B7 1100 1169 -327D <circle> 110C 116E 110B 1174 -327E <circle> 110B 116E -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 -32CC <square> 0048 0067 -32CD <square> 0065 0072 0067 -32CE <square> 0065 0056 -32CF <square> 004C 0054 0044 -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 -3377 <square> 0064 006D -3378 <square> 0064 006D 00B2 -3379 <square> 0064 006D 00B3 -337A <square> 0049 0055 -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 -33DE <square> 0056 2215 006D -33DF <square> 0041 2215 006D -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 -33FF <square> 0067 0061 006C -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 -FA70 4E26 -FA71 51B5 -FA72 5168 -FA73 4F80 -FA74 5145 -FA75 5180 -FA76 52C7 -FA77 52FA -FA78 559D -FA79 5555 -FA7A 5599 -FA7B 55E2 -FA7C 585A -FA7D 58B3 -FA7E 5944 -FA7F 5954 -FA80 5A62 -FA81 5B28 -FA82 5ED2 -FA83 5ED9 -FA84 5F69 -FA85 5FAD -FA86 60D8 -FA87 614E -FA88 6108 -FA89 618E -FA8A 6160 -FA8B 61F2 -FA8C 6234 -FA8D 63C4 -FA8E 641C -FA8F 6452 -FA90 6556 -FA91 6674 -FA92 6717 -FA93 671B -FA94 6756 -FA95 6B79 -FA96 6BBA -FA97 6D41 -FA98 6EDB -FA99 6ECB -FA9A 6F22 -FA9B 701E -FA9C 716E -FA9D 77A7 -FA9E 7235 -FA9F 72AF -FAA0 732A -FAA1 7471 -FAA2 7506 -FAA3 753B -FAA4 761D -FAA5 761F -FAA6 76CA -FAA7 76DB -FAA8 76F4 -FAA9 774A -FAAA 7740 -FAAB 78CC -FAAC 7AB1 -FAAD 7BC0 -FAAE 7C7B -FAAF 7D5B -FAB0 7DF4 -FAB1 7F3E -FAB2 8005 -FAB3 8352 -FAB4 83EF -FAB5 8779 -FAB6 8941 -FAB7 8986 -FAB8 8996 -FAB9 8ABF -FABA 8AF8 -FABB 8ACB -FABC 8B01 -FABD 8AFE -FABE 8AED -FABF 8B39 -FAC0 8B8A -FAC1 8D08 -FAC2 8F38 -FAC3 9072 -FAC4 9199 -FAC5 9276 -FAC6 967C -FAC7 96E3 -FAC8 9756 -FAC9 97DB -FACA 97FF -FACB 980B -FACC 983B -FACD 9B12 -FACE 9F9C -FACF 2284A -FAD0 22844 -FAD1 233D5 -FAD2 3B9D -FAD3 4018 -FAD4 4039 -FAD5 25249 -FAD6 25CD0 -FAD7 27ED3 -FAD8 9F43 -FAD9 9F8E -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 -FE10 <vertical> 002C -FE11 <vertical> 3001 -FE12 <vertical> 3002 -FE13 <vertical> 003A -FE14 <vertical> 003B -FE15 <vertical> 0021 -FE16 <vertical> 003F -FE17 <vertical> 3016 -FE18 <vertical> 3017 -FE19 <vertical> 2026 -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 -FE47 <vertical> 005B -FE48 <vertical> 005D -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 -1D4C1 <font> 006C -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 -1D6A4 <font> 0131 -1D6A5 <font> 0237 -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 36FC -2F869 5B08 -2F86A 2F86B 5B3E -2F86C 219C8 -2F86D 5BC3 -2F86E 5BD8 -2F86F 5BE7 -2F870 5BF3 -2F871 21B18 -2F872 5BFF -2F873 5C06 -2F874 5F53 -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 243AB -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 7AEE -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 45D7 -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/tlpkg/tlperl.old/lib/unicore/EastAsianWidth.txt b/Master/tlpkg/tlperl.old/lib/unicore/EastAsianWidth.txt deleted file mode 100644 index 935d041eacd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/EastAsianWidth.txt +++ /dev/null @@ -1,16368 +0,0 @@ -# EastAsianWidth-4.1.0.txt -# Date: 2005-03-17, 15:21:00 PST [KW] -# -# East Asian Width Properties -# -# This file is an informative contributory data file in the -# Unicode Character Database. -# -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# -# The format is two fields separated by a semicolon. -# Field 0: Unicode value -# Field 1: East Asian Width property, consisting of one of the following values: -# "N", "A", "H", "W", "F", "Na" -# - All code points, assigned or unassigned, that are not listed -# explicitly are given the value "N". -# - Characters ranges are specified as for other property files in -# the Unicode Character Database. -# -# The Unicode name of each character is provided in a comment for help -# in identifying the characters. -# -# See UAX #11: East Asian Character Width, for more information. -0000;N # <control> -0001;N # <control> -0002;N # <control> -0003;N # <control> -0004;N # <control> -0005;N # <control> -0006;N # <control> -0007;N # <control> -0008;N # <control> -0009;N # <control> -000A;N # <control> -000B;N # <control> -000C;N # <control> -000D;N # <control> -000E;N # <control> -000F;N # <control> -0010;N # <control> -0011;N # <control> -0012;N # <control> -0013;N # <control> -0014;N # <control> -0015;N # <control> -0016;N # <control> -0017;N # <control> -0018;N # <control> -0019;N # <control> -001A;N # <control> -001B;N # <control> -001C;N # <control> -001D;N # <control> -001E;N # <control> -001F;N # <control> -0020;Na # SPACE -0021;Na # EXCLAMATION MARK -0022;Na # QUOTATION MARK -0023;Na # NUMBER SIGN -0024;Na # DOLLAR SIGN -0025;Na # PERCENT SIGN -0026;Na # AMPERSAND -0027;Na # APOSTROPHE -0028;Na # LEFT PARENTHESIS -0029;Na # RIGHT PARENTHESIS -002A;Na # ASTERISK -002B;Na # PLUS SIGN -002C;Na # COMMA -002D;Na # HYPHEN-MINUS -002E;Na # FULL STOP -002F;Na # SOLIDUS -0030;Na # DIGIT ZERO -0031;Na # DIGIT ONE -0032;Na # DIGIT TWO -0033;Na # DIGIT THREE -0034;Na # DIGIT FOUR -0035;Na # DIGIT FIVE -0036;Na # DIGIT SIX -0037;Na # DIGIT SEVEN -0038;Na # DIGIT EIGHT -0039;Na # DIGIT NINE -003A;Na # COLON -003B;Na # SEMICOLON -003C;Na # LESS-THAN SIGN -003D;Na # EQUALS SIGN -003E;Na # GREATER-THAN SIGN -003F;Na # QUESTION MARK -0040;Na # COMMERCIAL AT -0041;Na # LATIN CAPITAL LETTER A -0042;Na # LATIN CAPITAL LETTER B -0043;Na # LATIN CAPITAL LETTER C -0044;Na # LATIN CAPITAL LETTER D -0045;Na # LATIN CAPITAL LETTER E -0046;Na # LATIN CAPITAL LETTER F -0047;Na # LATIN CAPITAL LETTER G -0048;Na # LATIN CAPITAL LETTER H -0049;Na # LATIN CAPITAL LETTER I -004A;Na # LATIN CAPITAL LETTER J -004B;Na # LATIN CAPITAL LETTER K -004C;Na # LATIN CAPITAL LETTER L -004D;Na # LATIN CAPITAL LETTER M -004E;Na # LATIN CAPITAL LETTER N -004F;Na # LATIN CAPITAL LETTER O -0050;Na # LATIN CAPITAL LETTER P -0051;Na # LATIN CAPITAL LETTER Q -0052;Na # LATIN CAPITAL LETTER R -0053;Na # LATIN CAPITAL LETTER S -0054;Na # LATIN CAPITAL LETTER T -0055;Na # LATIN CAPITAL LETTER U -0056;Na # LATIN CAPITAL LETTER V -0057;Na # LATIN CAPITAL LETTER W -0058;Na # LATIN CAPITAL LETTER X -0059;Na # LATIN CAPITAL LETTER Y -005A;Na # LATIN CAPITAL LETTER Z -005B;Na # LEFT SQUARE BRACKET -005C;Na # REVERSE SOLIDUS -005D;Na # RIGHT SQUARE BRACKET -005E;Na # CIRCUMFLEX ACCENT -005F;Na # LOW LINE -0060;Na # GRAVE ACCENT -0061;Na # LATIN SMALL LETTER A -0062;Na # LATIN SMALL LETTER B -0063;Na # LATIN SMALL LETTER C -0064;Na # LATIN SMALL LETTER D -0065;Na # LATIN SMALL LETTER E -0066;Na # LATIN SMALL LETTER F -0067;Na # LATIN SMALL LETTER G -0068;Na # LATIN SMALL LETTER H -0069;Na # LATIN SMALL LETTER I -006A;Na # LATIN SMALL LETTER J -006B;Na # LATIN SMALL LETTER K -006C;Na # LATIN SMALL LETTER L -006D;Na # LATIN SMALL LETTER M -006E;Na # LATIN SMALL LETTER N -006F;Na # LATIN SMALL LETTER O -0070;Na # LATIN SMALL LETTER P -0071;Na # LATIN SMALL LETTER Q -0072;Na # LATIN SMALL LETTER R -0073;Na # LATIN SMALL LETTER S -0074;Na # LATIN SMALL LETTER T -0075;Na # LATIN SMALL LETTER U -0076;Na # LATIN SMALL LETTER V -0077;Na # LATIN SMALL LETTER W -0078;Na # LATIN SMALL LETTER X -0079;Na # LATIN SMALL LETTER Y -007A;Na # LATIN SMALL LETTER Z -007B;Na # LEFT CURLY BRACKET -007C;Na # VERTICAL LINE -007D;Na # RIGHT CURLY BRACKET -007E;Na # TILDE -007F;N # <control> -0080;N # <control> -0081;N # <control> -0082;N # <control> -0083;N # <control> -0084;N # <control> -0085;N # <control> -0086;N # <control> -0087;N # <control> -0088;N # <control> -0089;N # <control> -008A;N # <control> -008B;N # <control> -008C;N # <control> -008D;N # <control> -008E;N # <control> -008F;N # <control> -0090;N # <control> -0091;N # <control> -0092;N # <control> -0093;N # <control> -0094;N # <control> -0095;N # <control> -0096;N # <control> -0097;N # <control> -0098;N # <control> -0099;N # <control> -009A;N # <control> -009B;N # <control> -009C;N # <control> -009D;N # <control> -009E;N # <control> -009F;N # <control> -00A0;N # NO-BREAK SPACE -00A1;A # INVERTED EXCLAMATION MARK -00A2;Na # CENT SIGN -00A3;Na # POUND SIGN -00A4;A # CURRENCY SIGN -00A5;Na # YEN SIGN -00A6;Na # BROKEN BAR -00A7;A # SECTION SIGN -00A8;A # DIAERESIS -00A9;N # COPYRIGHT SIGN -00AA;A # FEMININE ORDINAL INDICATOR -00AB;N # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -00AC;Na # NOT SIGN -00AD;A # SOFT HYPHEN -00AE;A # REGISTERED SIGN -00AF;Na # MACRON -00B0;A # DEGREE SIGN -00B1;A # PLUS-MINUS SIGN -00B2;A # SUPERSCRIPT TWO -00B3;A # SUPERSCRIPT THREE -00B4;A # ACUTE ACCENT -00B5;N # MICRO SIGN -00B6;A # PILCROW SIGN -00B7;A # MIDDLE DOT -00B8;A # CEDILLA -00B9;A # SUPERSCRIPT ONE -00BA;A # MASCULINE ORDINAL INDICATOR -00BB;N # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -00BC;A # VULGAR FRACTION ONE QUARTER -00BD;A # VULGAR FRACTION ONE HALF -00BE;A # VULGAR FRACTION THREE QUARTERS -00BF;A # INVERTED QUESTION MARK -00C0;N # LATIN CAPITAL LETTER A WITH GRAVE -00C1;N # LATIN CAPITAL LETTER A WITH ACUTE -00C2;N # LATIN CAPITAL LETTER A WITH CIRCUMFLEX -00C3;N # LATIN CAPITAL LETTER A WITH TILDE -00C4;N # LATIN CAPITAL LETTER A WITH DIAERESIS -00C5;N # LATIN CAPITAL LETTER A WITH RING ABOVE -00C6;A # LATIN CAPITAL LETTER AE -00C7;N # LATIN CAPITAL LETTER C WITH CEDILLA -00C8;N # LATIN CAPITAL LETTER E WITH GRAVE -00C9;N # LATIN CAPITAL LETTER E WITH ACUTE -00CA;N # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -00CB;N # LATIN CAPITAL LETTER E WITH DIAERESIS -00CC;N # LATIN CAPITAL LETTER I WITH GRAVE -00CD;N # LATIN CAPITAL LETTER I WITH ACUTE -00CE;N # LATIN CAPITAL LETTER I WITH CIRCUMFLEX -00CF;N # LATIN CAPITAL LETTER I WITH DIAERESIS -00D0;A # LATIN CAPITAL LETTER ETH -00D1;N # LATIN CAPITAL LETTER N WITH TILDE -00D2;N # LATIN CAPITAL LETTER O WITH GRAVE -00D3;N # LATIN CAPITAL LETTER O WITH ACUTE -00D4;N # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -00D5;N # LATIN CAPITAL LETTER O WITH TILDE -00D6;N # LATIN CAPITAL LETTER O WITH DIAERESIS -00D7;A # MULTIPLICATION SIGN -00D8;A # LATIN CAPITAL LETTER O WITH STROKE -00D9;N # LATIN CAPITAL LETTER U WITH GRAVE -00DA;N # LATIN CAPITAL LETTER U WITH ACUTE -00DB;N # LATIN CAPITAL LETTER U WITH CIRCUMFLEX -00DC;N # LATIN CAPITAL LETTER U WITH DIAERESIS -00DD;N # LATIN CAPITAL LETTER Y WITH ACUTE -00DE;A # LATIN CAPITAL LETTER THORN -00DF;A # LATIN SMALL LETTER SHARP S -00E0;A # LATIN SMALL LETTER A WITH GRAVE -00E1;A # LATIN SMALL LETTER A WITH ACUTE -00E2;N # LATIN SMALL LETTER A WITH CIRCUMFLEX -00E3;N # LATIN SMALL LETTER A WITH TILDE -00E4;N # LATIN SMALL LETTER A WITH DIAERESIS -00E5;N # LATIN SMALL LETTER A WITH RING ABOVE -00E6;A # LATIN SMALL LETTER AE -00E7;N # LATIN SMALL LETTER C WITH CEDILLA -00E8;A # LATIN SMALL LETTER E WITH GRAVE -00E9;A # LATIN SMALL LETTER E WITH ACUTE -00EA;A # LATIN SMALL LETTER E WITH CIRCUMFLEX -00EB;N # LATIN SMALL LETTER E WITH DIAERESIS -00EC;A # LATIN SMALL LETTER I WITH GRAVE -00ED;A # LATIN SMALL LETTER I WITH ACUTE -00EE;N # LATIN SMALL LETTER I WITH CIRCUMFLEX -00EF;N # LATIN SMALL LETTER I WITH DIAERESIS -00F0;A # LATIN SMALL LETTER ETH -00F1;N # LATIN SMALL LETTER N WITH TILDE -00F2;A # LATIN SMALL LETTER O WITH GRAVE -00F3;A # LATIN SMALL LETTER O WITH ACUTE -00F4;N # LATIN SMALL LETTER O WITH CIRCUMFLEX -00F5;N # LATIN SMALL LETTER O WITH TILDE -00F6;N # LATIN SMALL LETTER O WITH DIAERESIS -00F7;A # DIVISION SIGN -00F8;A # LATIN SMALL LETTER O WITH STROKE -00F9;A # LATIN SMALL LETTER U WITH GRAVE -00FA;A # LATIN SMALL LETTER U WITH ACUTE -00FB;N # LATIN SMALL LETTER U WITH CIRCUMFLEX -00FC;A # LATIN SMALL LETTER U WITH DIAERESIS -00FD;N # LATIN SMALL LETTER Y WITH ACUTE -00FE;A # LATIN SMALL LETTER THORN -00FF;N # LATIN SMALL LETTER Y WITH DIAERESIS -0100;N # LATIN CAPITAL LETTER A WITH MACRON -0101;A # LATIN SMALL LETTER A WITH MACRON -0102;N # LATIN CAPITAL LETTER A WITH BREVE -0103;N # LATIN SMALL LETTER A WITH BREVE -0104;N # LATIN CAPITAL LETTER A WITH OGONEK -0105;N # LATIN SMALL LETTER A WITH OGONEK -0106;N # LATIN CAPITAL LETTER C WITH ACUTE -0107;N # LATIN SMALL LETTER C WITH ACUTE -0108;N # LATIN CAPITAL LETTER C WITH CIRCUMFLEX -0109;N # LATIN SMALL LETTER C WITH CIRCUMFLEX -010A;N # LATIN CAPITAL LETTER C WITH DOT ABOVE -010B;N # LATIN SMALL LETTER C WITH DOT ABOVE -010C;N # LATIN CAPITAL LETTER C WITH CARON -010D;N # LATIN SMALL LETTER C WITH CARON -010E;N # LATIN CAPITAL LETTER D WITH CARON -010F;N # LATIN SMALL LETTER D WITH CARON -0110;N # LATIN CAPITAL LETTER D WITH STROKE -0111;A # LATIN SMALL LETTER D WITH STROKE -0112;N # LATIN CAPITAL LETTER E WITH MACRON -0113;A # LATIN SMALL LETTER E WITH MACRON -0114;N # LATIN CAPITAL LETTER E WITH BREVE -0115;N # LATIN SMALL LETTER E WITH BREVE -0116;N # LATIN CAPITAL LETTER E WITH DOT ABOVE -0117;N # LATIN SMALL LETTER E WITH DOT ABOVE -0118;N # LATIN CAPITAL LETTER E WITH OGONEK -0119;N # LATIN SMALL LETTER E WITH OGONEK -011A;N # LATIN CAPITAL LETTER E WITH CARON -011B;A # LATIN SMALL LETTER E WITH CARON -011C;N # LATIN CAPITAL LETTER G WITH CIRCUMFLEX -011D;N # LATIN SMALL LETTER G WITH CIRCUMFLEX -011E;N # LATIN CAPITAL LETTER G WITH BREVE -011F;N # LATIN SMALL LETTER G WITH BREVE -0120;N # LATIN CAPITAL LETTER G WITH DOT ABOVE -0121;N # LATIN SMALL LETTER G WITH DOT ABOVE -0122;N # LATIN CAPITAL LETTER G WITH CEDILLA -0123;N # LATIN SMALL LETTER G WITH CEDILLA -0124;N # LATIN CAPITAL LETTER H WITH CIRCUMFLEX -0125;N # LATIN SMALL LETTER H WITH CIRCUMFLEX -0126;A # LATIN CAPITAL LETTER H WITH STROKE -0127;A # LATIN SMALL LETTER H WITH STROKE -0128;N # LATIN CAPITAL LETTER I WITH TILDE -0129;N # LATIN SMALL LETTER I WITH TILDE -012A;N # LATIN CAPITAL LETTER I WITH MACRON -012B;A # LATIN SMALL LETTER I WITH MACRON -012C;N # LATIN CAPITAL LETTER I WITH BREVE -012D;N # LATIN SMALL LETTER I WITH BREVE -012E;N # LATIN CAPITAL LETTER I WITH OGONEK -012F;N # LATIN SMALL LETTER I WITH OGONEK -0130;N # LATIN CAPITAL LETTER I WITH DOT ABOVE -0131;A # LATIN SMALL LETTER DOTLESS I -0132;A # LATIN CAPITAL LIGATURE IJ -0133;A # LATIN SMALL LIGATURE IJ -0134;N # LATIN CAPITAL LETTER J WITH CIRCUMFLEX -0135;N # LATIN SMALL LETTER J WITH CIRCUMFLEX -0136;N # LATIN CAPITAL LETTER K WITH CEDILLA -0137;N # LATIN SMALL LETTER K WITH CEDILLA -0138;A # LATIN SMALL LETTER KRA -0139;N # LATIN CAPITAL LETTER L WITH ACUTE -013A;N # LATIN SMALL LETTER L WITH ACUTE -013B;N # LATIN CAPITAL LETTER L WITH CEDILLA -013C;N # LATIN SMALL LETTER L WITH CEDILLA -013D;N # LATIN CAPITAL LETTER L WITH CARON -013E;N # LATIN SMALL LETTER L WITH CARON -013F;A # LATIN CAPITAL LETTER L WITH MIDDLE DOT -0140;A # LATIN SMALL LETTER L WITH MIDDLE DOT -0141;A # LATIN CAPITAL LETTER L WITH STROKE -0142;A # LATIN SMALL LETTER L WITH STROKE -0143;N # LATIN CAPITAL LETTER N WITH ACUTE -0144;A # LATIN SMALL LETTER N WITH ACUTE -0145;N # LATIN CAPITAL LETTER N WITH CEDILLA -0146;N # LATIN SMALL LETTER N WITH CEDILLA -0147;N # LATIN CAPITAL LETTER N WITH CARON -0148;A # LATIN SMALL LETTER N WITH CARON -0149;A # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -014A;A # LATIN CAPITAL LETTER ENG -014B;A # LATIN SMALL LETTER ENG -014C;N # LATIN CAPITAL LETTER O WITH MACRON -014D;A # LATIN SMALL LETTER O WITH MACRON -014E;N # LATIN CAPITAL LETTER O WITH BREVE -014F;N # LATIN SMALL LETTER O WITH BREVE -0150;N # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -0151;N # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0152;A # LATIN CAPITAL LIGATURE OE -0153;A # LATIN SMALL LIGATURE OE -0154;N # LATIN CAPITAL LETTER R WITH ACUTE -0155;N # LATIN SMALL LETTER R WITH ACUTE -0156;N # LATIN CAPITAL LETTER R WITH CEDILLA -0157;N # LATIN SMALL LETTER R WITH CEDILLA -0158;N # LATIN CAPITAL LETTER R WITH CARON -0159;N # LATIN SMALL LETTER R WITH CARON -015A;N # LATIN CAPITAL LETTER S WITH ACUTE -015B;N # LATIN SMALL LETTER S WITH ACUTE -015C;N # LATIN CAPITAL LETTER S WITH CIRCUMFLEX -015D;N # LATIN SMALL LETTER S WITH CIRCUMFLEX -015E;N # LATIN CAPITAL LETTER S WITH CEDILLA -015F;N # LATIN SMALL LETTER S WITH CEDILLA -0160;N # LATIN CAPITAL LETTER S WITH CARON -0161;N # LATIN SMALL LETTER S WITH CARON -0162;N # LATIN CAPITAL LETTER T WITH CEDILLA -0163;N # LATIN SMALL LETTER T WITH CEDILLA -0164;N # LATIN CAPITAL LETTER T WITH CARON -0165;N # LATIN SMALL LETTER T WITH CARON -0166;A # LATIN CAPITAL LETTER T WITH STROKE -0167;A # LATIN SMALL LETTER T WITH STROKE -0168;N # LATIN CAPITAL LETTER U WITH TILDE -0169;N # LATIN SMALL LETTER U WITH TILDE -016A;N # LATIN CAPITAL LETTER U WITH MACRON -016B;A # LATIN SMALL LETTER U WITH MACRON -016C;N # LATIN CAPITAL LETTER U WITH BREVE -016D;N # LATIN SMALL LETTER U WITH BREVE -016E;N # LATIN CAPITAL LETTER U WITH RING ABOVE -016F;N # LATIN SMALL LETTER U WITH RING ABOVE -0170;N # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0171;N # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0172;N # LATIN CAPITAL LETTER U WITH OGONEK -0173;N # LATIN SMALL LETTER U WITH OGONEK -0174;N # LATIN CAPITAL LETTER W WITH CIRCUMFLEX -0175;N # LATIN SMALL LETTER W WITH CIRCUMFLEX -0176;N # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX -0177;N # LATIN SMALL LETTER Y WITH CIRCUMFLEX -0178;N # LATIN CAPITAL LETTER Y WITH DIAERESIS -0179;N # LATIN CAPITAL LETTER Z WITH ACUTE -017A;N # LATIN SMALL LETTER Z WITH ACUTE -017B;N # LATIN CAPITAL LETTER Z WITH DOT ABOVE -017C;N # LATIN SMALL LETTER Z WITH DOT ABOVE -017D;N # LATIN CAPITAL LETTER Z WITH CARON -017E;N # LATIN SMALL LETTER Z WITH CARON -017F;N # LATIN SMALL LETTER LONG S -0180;N # LATIN SMALL LETTER B WITH STROKE -0181;N # LATIN CAPITAL LETTER B WITH HOOK -0182;N # LATIN CAPITAL LETTER B WITH TOPBAR -0183;N # LATIN SMALL LETTER B WITH TOPBAR -0184;N # LATIN CAPITAL LETTER TONE SIX -0185;N # LATIN SMALL LETTER TONE SIX -0186;N # LATIN CAPITAL LETTER OPEN O -0187;N # LATIN CAPITAL LETTER C WITH HOOK -0188;N # LATIN SMALL LETTER C WITH HOOK -0189;N # LATIN CAPITAL LETTER AFRICAN D -018A;N # LATIN CAPITAL LETTER D WITH HOOK -018B;N # LATIN CAPITAL LETTER D WITH TOPBAR -018C;N # LATIN SMALL LETTER D WITH TOPBAR -018D;N # LATIN SMALL LETTER TURNED DELTA -018E;N # LATIN CAPITAL LETTER REVERSED E -018F;N # LATIN CAPITAL LETTER SCHWA -0190;N # LATIN CAPITAL LETTER OPEN E -0191;N # LATIN CAPITAL LETTER F WITH HOOK -0192;N # LATIN SMALL LETTER F WITH HOOK -0193;N # LATIN CAPITAL LETTER G WITH HOOK -0194;N # LATIN CAPITAL LETTER GAMMA -0195;N # LATIN SMALL LETTER HV -0196;N # LATIN CAPITAL LETTER IOTA -0197;N # LATIN CAPITAL LETTER I WITH STROKE -0198;N # LATIN CAPITAL LETTER K WITH HOOK -0199;N # LATIN SMALL LETTER K WITH HOOK -019A;N # LATIN SMALL LETTER L WITH BAR -019B;N # LATIN SMALL LETTER LAMBDA WITH STROKE -019C;N # LATIN CAPITAL LETTER TURNED M -019D;N # LATIN CAPITAL LETTER N WITH LEFT HOOK -019E;N # LATIN SMALL LETTER N WITH LONG RIGHT LEG -019F;N # LATIN CAPITAL LETTER O WITH MIDDLE TILDE -01A0;N # LATIN CAPITAL LETTER O WITH HORN -01A1;N # LATIN SMALL LETTER O WITH HORN -01A2;N # LATIN CAPITAL LETTER OI -01A3;N # LATIN SMALL LETTER OI -01A4;N # LATIN CAPITAL LETTER P WITH HOOK -01A5;N # LATIN SMALL LETTER P WITH HOOK -01A6;N # LATIN LETTER YR -01A7;N # LATIN CAPITAL LETTER TONE TWO -01A8;N # LATIN SMALL LETTER TONE TWO -01A9;N # LATIN CAPITAL LETTER ESH -01AA;N # LATIN LETTER REVERSED ESH LOOP -01AB;N # LATIN SMALL LETTER T WITH PALATAL HOOK -01AC;N # LATIN CAPITAL LETTER T WITH HOOK -01AD;N # LATIN SMALL LETTER T WITH HOOK -01AE;N # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK -01AF;N # LATIN CAPITAL LETTER U WITH HORN -01B0;N # LATIN SMALL LETTER U WITH HORN -01B1;N # LATIN CAPITAL LETTER UPSILON -01B2;N # LATIN CAPITAL LETTER V WITH HOOK -01B3;N # LATIN CAPITAL LETTER Y WITH HOOK -01B4;N # LATIN SMALL LETTER Y WITH HOOK -01B5;N # LATIN CAPITAL LETTER Z WITH STROKE -01B6;N # LATIN SMALL LETTER Z WITH STROKE -01B7;N # LATIN CAPITAL LETTER EZH -01B8;N # LATIN CAPITAL LETTER EZH REVERSED -01B9;N # LATIN SMALL LETTER EZH REVERSED -01BA;N # LATIN SMALL LETTER EZH WITH TAIL -01BB;N # LATIN LETTER TWO WITH STROKE -01BC;N # LATIN CAPITAL LETTER TONE FIVE -01BD;N # LATIN SMALL LETTER TONE FIVE -01BE;N # LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE -01BF;N # LATIN LETTER WYNN -01C0;N # LATIN LETTER DENTAL CLICK -01C1;N # LATIN LETTER LATERAL CLICK -01C2;N # LATIN LETTER ALVEOLAR CLICK -01C3;N # LATIN LETTER RETROFLEX CLICK -01C4;N # LATIN CAPITAL LETTER DZ WITH CARON -01C5;N # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON -01C6;N # LATIN SMALL LETTER DZ WITH CARON -01C7;N # LATIN CAPITAL LETTER LJ -01C8;N # LATIN CAPITAL LETTER L WITH SMALL LETTER J -01C9;N # LATIN SMALL LETTER LJ -01CA;N # LATIN CAPITAL LETTER NJ -01CB;N # LATIN CAPITAL LETTER N WITH SMALL LETTER J -01CC;N # LATIN SMALL LETTER NJ -01CD;N # LATIN CAPITAL LETTER A WITH CARON -01CE;A # LATIN SMALL LETTER A WITH CARON -01CF;N # LATIN CAPITAL LETTER I WITH CARON -01D0;A # LATIN SMALL LETTER I WITH CARON -01D1;N # LATIN CAPITAL LETTER O WITH CARON -01D2;A # LATIN SMALL LETTER O WITH CARON -01D3;N # LATIN CAPITAL LETTER U WITH CARON -01D4;A # LATIN SMALL LETTER U WITH CARON -01D5;N # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01D6;A # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D7;N # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D8;A # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D9;N # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -01DA;A # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01DB;N # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01DC;A # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DD;N # LATIN SMALL LETTER TURNED E -01DE;N # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -01DF;N # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01E0;N # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON -01E1;N # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON -01E2;N # LATIN CAPITAL LETTER AE WITH MACRON -01E3;N # LATIN SMALL LETTER AE WITH MACRON -01E4;N # LATIN CAPITAL LETTER G WITH STROKE -01E5;N # LATIN SMALL LETTER G WITH STROKE -01E6;N # LATIN CAPITAL LETTER G WITH CARON -01E7;N # LATIN SMALL LETTER G WITH CARON -01E8;N # LATIN CAPITAL LETTER K WITH CARON -01E9;N # LATIN SMALL LETTER K WITH CARON -01EA;N # LATIN CAPITAL LETTER O WITH OGONEK -01EB;N # LATIN SMALL LETTER O WITH OGONEK -01EC;N # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON -01ED;N # LATIN SMALL LETTER O WITH OGONEK AND MACRON -01EE;N # LATIN CAPITAL LETTER EZH WITH CARON -01EF;N # LATIN SMALL LETTER EZH WITH CARON -01F0;N # LATIN SMALL LETTER J WITH CARON -01F1;N # LATIN CAPITAL LETTER DZ -01F2;N # LATIN CAPITAL LETTER D WITH SMALL LETTER Z -01F3;N # LATIN SMALL LETTER DZ -01F4;N # LATIN CAPITAL LETTER G WITH ACUTE -01F5;N # LATIN SMALL LETTER G WITH ACUTE -01F6;N # LATIN CAPITAL LETTER HWAIR -01F7;N # LATIN CAPITAL LETTER WYNN -01F8;N # LATIN CAPITAL LETTER N WITH GRAVE -01F9;N # LATIN SMALL LETTER N WITH GRAVE -01FA;N # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -01FB;N # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FC;N # LATIN CAPITAL LETTER AE WITH ACUTE -01FD;N # LATIN SMALL LETTER AE WITH ACUTE -01FE;N # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -01FF;N # LATIN SMALL LETTER O WITH STROKE AND ACUTE -0200;N # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE -0201;N # LATIN SMALL LETTER A WITH DOUBLE GRAVE -0202;N # LATIN CAPITAL LETTER A WITH INVERTED BREVE -0203;N # LATIN SMALL LETTER A WITH INVERTED BREVE -0204;N # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE -0205;N # LATIN SMALL LETTER E WITH DOUBLE GRAVE -0206;N # LATIN CAPITAL LETTER E WITH INVERTED BREVE -0207;N # LATIN SMALL LETTER E WITH INVERTED BREVE -0208;N # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE -0209;N # LATIN SMALL LETTER I WITH DOUBLE GRAVE -020A;N # LATIN CAPITAL LETTER I WITH INVERTED BREVE -020B;N # LATIN SMALL LETTER I WITH INVERTED BREVE -020C;N # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE -020D;N # LATIN SMALL LETTER O WITH DOUBLE GRAVE -020E;N # LATIN CAPITAL LETTER O WITH INVERTED BREVE -020F;N # LATIN SMALL LETTER O WITH INVERTED BREVE -0210;N # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE -0211;N # LATIN SMALL LETTER R WITH DOUBLE GRAVE -0212;N # LATIN CAPITAL LETTER R WITH INVERTED BREVE -0213;N # LATIN SMALL LETTER R WITH INVERTED BREVE -0214;N # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE -0215;N # LATIN SMALL LETTER U WITH DOUBLE GRAVE -0216;N # LATIN CAPITAL LETTER U WITH INVERTED BREVE -0217;N # LATIN SMALL LETTER U WITH INVERTED BREVE -0218;N # LATIN CAPITAL LETTER S WITH COMMA BELOW -0219;N # LATIN SMALL LETTER S WITH COMMA BELOW -021A;N # LATIN CAPITAL LETTER T WITH COMMA BELOW -021B;N # LATIN SMALL LETTER T WITH COMMA BELOW -021C;N # LATIN CAPITAL LETTER YOGH -021D;N # LATIN SMALL LETTER YOGH -021E;N # LATIN CAPITAL LETTER H WITH CARON -021F;N # LATIN SMALL LETTER H WITH CARON -0220;N # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG -0221;N # LATIN SMALL LETTER D WITH CURL -0222;N # LATIN CAPITAL LETTER OU -0223;N # LATIN SMALL LETTER OU -0224;N # LATIN CAPITAL LETTER Z WITH HOOK -0225;N # LATIN SMALL LETTER Z WITH HOOK -0226;N # LATIN CAPITAL LETTER A WITH DOT ABOVE -0227;N # LATIN SMALL LETTER A WITH DOT ABOVE -0228;N # LATIN CAPITAL LETTER E WITH CEDILLA -0229;N # LATIN SMALL LETTER E WITH CEDILLA -022A;N # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -022B;N # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022C;N # LATIN CAPITAL LETTER O WITH TILDE AND MACRON -022D;N # LATIN SMALL LETTER O WITH TILDE AND MACRON -022E;N # LATIN CAPITAL LETTER O WITH DOT ABOVE -022F;N # LATIN SMALL LETTER O WITH DOT ABOVE -0230;N # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON -0231;N # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON -0232;N # LATIN CAPITAL LETTER Y WITH MACRON -0233;N # LATIN SMALL LETTER Y WITH MACRON -0234;N # LATIN SMALL LETTER L WITH CURL -0235;N # LATIN SMALL LETTER N WITH CURL -0236;N # LATIN SMALL LETTER T WITH CURL -0237;N # LATIN SMALL LETTER DOTLESS J -0238;N # LATIN SMALL LETTER DB DIGRAPH -0239;N # LATIN SMALL LETTER QP DIGRAPH -023A;N # LATIN CAPITAL LETTER A WITH STROKE -023B;N # LATIN CAPITAL LETTER C WITH STROKE -023C;N # LATIN SMALL LETTER C WITH STROKE -023D;N # LATIN CAPITAL LETTER L WITH BAR -023E;N # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE -023F;N # LATIN SMALL LETTER S WITH SWASH TAIL -0240;N # LATIN SMALL LETTER Z WITH SWASH TAIL -0241;N # LATIN CAPITAL LETTER GLOTTAL STOP -0250;N # LATIN SMALL LETTER TURNED A -0251;A # LATIN SMALL LETTER ALPHA -0252;N # LATIN SMALL LETTER TURNED ALPHA -0253;N # LATIN SMALL LETTER B WITH HOOK -0254;N # LATIN SMALL LETTER OPEN O -0255;N # LATIN SMALL LETTER C WITH CURL -0256;N # LATIN SMALL LETTER D WITH TAIL -0257;N # LATIN SMALL LETTER D WITH HOOK -0258;N # LATIN SMALL LETTER REVERSED E -0259;N # LATIN SMALL LETTER SCHWA -025A;N # LATIN SMALL LETTER SCHWA WITH HOOK -025B;N # LATIN SMALL LETTER OPEN E -025C;N # LATIN SMALL LETTER REVERSED OPEN E -025D;N # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK -025E;N # LATIN SMALL LETTER CLOSED REVERSED OPEN E -025F;N # LATIN SMALL LETTER DOTLESS J WITH STROKE -0260;N # LATIN SMALL LETTER G WITH HOOK -0261;A # LATIN SMALL LETTER SCRIPT G -0262;N # LATIN LETTER SMALL CAPITAL G -0263;N # LATIN SMALL LETTER GAMMA -0264;N # LATIN SMALL LETTER RAMS HORN -0265;N # LATIN SMALL LETTER TURNED H -0266;N # LATIN SMALL LETTER H WITH HOOK -0267;N # LATIN SMALL LETTER HENG WITH HOOK -0268;N # LATIN SMALL LETTER I WITH STROKE -0269;N # LATIN SMALL LETTER IOTA -026A;N # LATIN LETTER SMALL CAPITAL I -026B;N # LATIN SMALL LETTER L WITH MIDDLE TILDE -026C;N # LATIN SMALL LETTER L WITH BELT -026D;N # LATIN SMALL LETTER L WITH RETROFLEX HOOK -026E;N # LATIN SMALL LETTER LEZH -026F;N # LATIN SMALL LETTER TURNED M -0270;N # LATIN SMALL LETTER TURNED M WITH LONG LEG -0271;N # LATIN SMALL LETTER M WITH HOOK -0272;N # LATIN SMALL LETTER N WITH LEFT HOOK -0273;N # LATIN SMALL LETTER N WITH RETROFLEX HOOK -0274;N # LATIN LETTER SMALL CAPITAL N -0275;N # LATIN SMALL LETTER BARRED O -0276;N # LATIN LETTER SMALL CAPITAL OE -0277;N # LATIN SMALL LETTER CLOSED OMEGA -0278;N # LATIN SMALL LETTER PHI -0279;N # LATIN SMALL LETTER TURNED R -027A;N # LATIN SMALL LETTER TURNED R WITH LONG LEG -027B;N # LATIN SMALL LETTER TURNED R WITH HOOK -027C;N # LATIN SMALL LETTER R WITH LONG LEG -027D;N # LATIN SMALL LETTER R WITH TAIL -027E;N # LATIN SMALL LETTER R WITH FISHHOOK -027F;N # LATIN SMALL LETTER REVERSED R WITH FISHHOOK -0280;N # LATIN LETTER SMALL CAPITAL R -0281;N # LATIN LETTER SMALL CAPITAL INVERTED R -0282;N # LATIN SMALL LETTER S WITH HOOK -0283;N # LATIN SMALL LETTER ESH -0284;N # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK -0285;N # LATIN SMALL LETTER SQUAT REVERSED ESH -0286;N # LATIN SMALL LETTER ESH WITH CURL -0287;N # LATIN SMALL LETTER TURNED T -0288;N # LATIN SMALL LETTER T WITH RETROFLEX HOOK -0289;N # LATIN SMALL LETTER U BAR -028A;N # LATIN SMALL LETTER UPSILON -028B;N # LATIN SMALL LETTER V WITH HOOK -028C;N # LATIN SMALL LETTER TURNED V -028D;N # LATIN SMALL LETTER TURNED W -028E;N # LATIN SMALL LETTER TURNED Y -028F;N # LATIN LETTER SMALL CAPITAL Y -0290;N # LATIN SMALL LETTER Z WITH RETROFLEX HOOK -0291;N # LATIN SMALL LETTER Z WITH CURL -0292;N # LATIN SMALL LETTER EZH -0293;N # LATIN SMALL LETTER EZH WITH CURL -0294;N # LATIN LETTER GLOTTAL STOP -0295;N # LATIN LETTER PHARYNGEAL VOICED FRICATIVE -0296;N # LATIN LETTER INVERTED GLOTTAL STOP -0297;N # LATIN LETTER STRETCHED C -0298;N # LATIN LETTER BILABIAL CLICK -0299;N # LATIN LETTER SMALL CAPITAL B -029A;N # LATIN SMALL LETTER CLOSED OPEN E -029B;N # LATIN LETTER SMALL CAPITAL G WITH HOOK -029C;N # LATIN LETTER SMALL CAPITAL H -029D;N # LATIN SMALL LETTER J WITH CROSSED-TAIL -029E;N # LATIN SMALL LETTER TURNED K -029F;N # LATIN LETTER SMALL CAPITAL L -02A0;N # LATIN SMALL LETTER Q WITH HOOK -02A1;N # LATIN LETTER GLOTTAL STOP WITH STROKE -02A2;N # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE -02A3;N # LATIN SMALL LETTER DZ DIGRAPH -02A4;N # LATIN SMALL LETTER DEZH DIGRAPH -02A5;N # LATIN SMALL LETTER DZ DIGRAPH WITH CURL -02A6;N # LATIN SMALL LETTER TS DIGRAPH -02A7;N # LATIN SMALL LETTER TESH DIGRAPH -02A8;N # LATIN SMALL LETTER TC DIGRAPH WITH CURL -02A9;N # LATIN SMALL LETTER FENG DIGRAPH -02AA;N # LATIN SMALL LETTER LS DIGRAPH -02AB;N # LATIN SMALL LETTER LZ DIGRAPH -02AC;N # LATIN LETTER BILABIAL PERCUSSIVE -02AD;N # LATIN LETTER BIDENTAL PERCUSSIVE -02AE;N # LATIN SMALL LETTER TURNED H WITH FISHHOOK -02AF;N # LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL -02B0;N # MODIFIER LETTER SMALL H -02B1;N # MODIFIER LETTER SMALL H WITH HOOK -02B2;N # MODIFIER LETTER SMALL J -02B3;N # MODIFIER LETTER SMALL R -02B4;N # MODIFIER LETTER SMALL TURNED R -02B5;N # MODIFIER LETTER SMALL TURNED R WITH HOOK -02B6;N # MODIFIER LETTER SMALL CAPITAL INVERTED R -02B7;N # MODIFIER LETTER SMALL W -02B8;N # MODIFIER LETTER SMALL Y -02B9;N # MODIFIER LETTER PRIME -02BA;N # MODIFIER LETTER DOUBLE PRIME -02BB;N # MODIFIER LETTER TURNED COMMA -02BC;N # MODIFIER LETTER APOSTROPHE -02BD;N # MODIFIER LETTER REVERSED COMMA -02BE;N # MODIFIER LETTER RIGHT HALF RING -02BF;N # MODIFIER LETTER LEFT HALF RING -02C0;N # MODIFIER LETTER GLOTTAL STOP -02C1;N # MODIFIER LETTER REVERSED GLOTTAL STOP -02C2;N # MODIFIER LETTER LEFT ARROWHEAD -02C3;N # MODIFIER LETTER RIGHT ARROWHEAD -02C4;A # MODIFIER LETTER UP ARROWHEAD -02C5;N # MODIFIER LETTER DOWN ARROWHEAD -02C6;N # MODIFIER LETTER CIRCUMFLEX ACCENT -02C7;A # CARON -02C8;N # MODIFIER LETTER VERTICAL LINE -02C9;A # MODIFIER LETTER MACRON -02CA;A # MODIFIER LETTER ACUTE ACCENT -02CB;A # MODIFIER LETTER GRAVE ACCENT -02CC;N # MODIFIER LETTER LOW VERTICAL LINE -02CD;A # MODIFIER LETTER LOW MACRON -02CE;N # MODIFIER LETTER LOW GRAVE ACCENT -02CF;N # MODIFIER LETTER LOW ACUTE ACCENT -02D0;A # MODIFIER LETTER TRIANGULAR COLON -02D1;N # MODIFIER LETTER HALF TRIANGULAR COLON -02D2;N # MODIFIER LETTER CENTRED RIGHT HALF RING -02D3;N # MODIFIER LETTER CENTRED LEFT HALF RING -02D4;N # MODIFIER LETTER UP TACK -02D5;N # MODIFIER LETTER DOWN TACK -02D6;N # MODIFIER LETTER PLUS SIGN -02D7;N # MODIFIER LETTER MINUS SIGN -02D8;A # BREVE -02D9;A # DOT ABOVE -02DA;A # RING ABOVE -02DB;A # OGONEK -02DC;N # SMALL TILDE -02DD;A # DOUBLE ACUTE ACCENT -02DE;N # MODIFIER LETTER RHOTIC HOOK -02DF;A # MODIFIER LETTER CROSS ACCENT -02E0;N # MODIFIER LETTER SMALL GAMMA -02E1;N # MODIFIER LETTER SMALL L -02E2;N # MODIFIER LETTER SMALL S -02E3;N # MODIFIER LETTER SMALL X -02E4;N # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP -02E5;N # MODIFIER LETTER EXTRA-HIGH TONE BAR -02E6;N # MODIFIER LETTER HIGH TONE BAR -02E7;N # MODIFIER LETTER MID TONE BAR -02E8;N # MODIFIER LETTER LOW TONE BAR -02E9;N # MODIFIER LETTER EXTRA-LOW TONE BAR -02EA;N # MODIFIER LETTER YIN DEPARTING TONE MARK -02EB;N # MODIFIER LETTER YANG DEPARTING TONE MARK -02EC;N # MODIFIER LETTER VOICING -02ED;N # MODIFIER LETTER UNASPIRATED -02EE;N # MODIFIER LETTER DOUBLE APOSTROPHE -02EF;N # MODIFIER LETTER LOW DOWN ARROWHEAD -02F0;N # MODIFIER LETTER LOW UP ARROWHEAD -02F1;N # MODIFIER LETTER LOW LEFT ARROWHEAD -02F2;N # MODIFIER LETTER LOW RIGHT ARROWHEAD -02F3;N # MODIFIER LETTER LOW RING -02F4;N # MODIFIER LETTER MIDDLE GRAVE ACCENT -02F5;N # MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT -02F6;N # MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT -02F7;N # MODIFIER LETTER LOW TILDE -02F8;N # MODIFIER LETTER RAISED COLON -02F9;N # MODIFIER LETTER BEGIN HIGH TONE -02FA;N # MODIFIER LETTER END HIGH TONE -02FB;N # MODIFIER LETTER BEGIN LOW TONE -02FC;N # MODIFIER LETTER END LOW TONE -02FD;N # MODIFIER LETTER SHELF -02FE;N # MODIFIER LETTER OPEN SHELF -02FF;N # MODIFIER LETTER LOW LEFT ARROW -0300;A # COMBINING GRAVE ACCENT -0301;A # COMBINING ACUTE ACCENT -0302;A # COMBINING CIRCUMFLEX ACCENT -0303;A # COMBINING TILDE -0304;A # COMBINING MACRON -0305;A # COMBINING OVERLINE -0306;A # COMBINING BREVE -0307;A # COMBINING DOT ABOVE -0308;A # COMBINING DIAERESIS -0309;A # COMBINING HOOK ABOVE -030A;A # COMBINING RING ABOVE -030B;A # COMBINING DOUBLE ACUTE ACCENT -030C;A # COMBINING CARON -030D;A # COMBINING VERTICAL LINE ABOVE -030E;A # COMBINING DOUBLE VERTICAL LINE ABOVE -030F;A # COMBINING DOUBLE GRAVE ACCENT -0310;A # COMBINING CANDRABINDU -0311;A # COMBINING INVERTED BREVE -0312;A # COMBINING TURNED COMMA ABOVE -0313;A # COMBINING COMMA ABOVE -0314;A # COMBINING REVERSED COMMA ABOVE -0315;A # COMBINING COMMA ABOVE RIGHT -0316;A # COMBINING GRAVE ACCENT BELOW -0317;A # COMBINING ACUTE ACCENT BELOW -0318;A # COMBINING LEFT TACK BELOW -0319;A # COMBINING RIGHT TACK BELOW -031A;A # COMBINING LEFT ANGLE ABOVE -031B;A # COMBINING HORN -031C;A # COMBINING LEFT HALF RING BELOW -031D;A # COMBINING UP TACK BELOW -031E;A # COMBINING DOWN TACK BELOW -031F;A # COMBINING PLUS SIGN BELOW -0320;A # COMBINING MINUS SIGN BELOW -0321;A # COMBINING PALATALIZED HOOK BELOW -0322;A # COMBINING RETROFLEX HOOK BELOW -0323;A # COMBINING DOT BELOW -0324;A # COMBINING DIAERESIS BELOW -0325;A # COMBINING RING BELOW -0326;A # COMBINING COMMA BELOW -0327;A # COMBINING CEDILLA -0328;A # COMBINING OGONEK -0329;A # COMBINING VERTICAL LINE BELOW -032A;A # COMBINING BRIDGE BELOW -032B;A # COMBINING INVERTED DOUBLE ARCH BELOW -032C;A # COMBINING CARON BELOW -032D;A # COMBINING CIRCUMFLEX ACCENT BELOW -032E;A # COMBINING BREVE BELOW -032F;A # COMBINING INVERTED BREVE BELOW -0330;A # COMBINING TILDE BELOW -0331;A # COMBINING MACRON BELOW -0332;A # COMBINING LOW LINE -0333;A # COMBINING DOUBLE LOW LINE -0334;A # COMBINING TILDE OVERLAY -0335;A # COMBINING SHORT STROKE OVERLAY -0336;A # COMBINING LONG STROKE OVERLAY -0337;A # COMBINING SHORT SOLIDUS OVERLAY -0338;A # COMBINING LONG SOLIDUS OVERLAY -0339;A # COMBINING RIGHT HALF RING BELOW -033A;A # COMBINING INVERTED BRIDGE BELOW -033B;A # COMBINING SQUARE BELOW -033C;A # COMBINING SEAGULL BELOW -033D;A # COMBINING X ABOVE -033E;A # COMBINING VERTICAL TILDE -033F;A # COMBINING DOUBLE OVERLINE -0340;A # COMBINING GRAVE TONE MARK -0341;A # COMBINING ACUTE TONE MARK -0342;A # COMBINING GREEK PERISPOMENI -0343;A # COMBINING GREEK KORONIS -0344;A # COMBINING GREEK DIALYTIKA TONOS -0345;A # COMBINING GREEK YPOGEGRAMMENI -0346;A # COMBINING BRIDGE ABOVE -0347;A # COMBINING EQUALS SIGN BELOW -0348;A # COMBINING DOUBLE VERTICAL LINE BELOW -0349;A # COMBINING LEFT ANGLE BELOW -034A;A # COMBINING NOT TILDE ABOVE -034B;A # COMBINING HOMOTHETIC ABOVE -034C;A # COMBINING ALMOST EQUAL TO ABOVE -034D;A # COMBINING LEFT RIGHT ARROW BELOW -034E;A # COMBINING UPWARDS ARROW BELOW -034F;A # COMBINING GRAPHEME JOINER -0350;A # COMBINING RIGHT ARROWHEAD ABOVE -0351;A # COMBINING LEFT HALF RING ABOVE -0352;A # COMBINING FERMATA -0353;A # COMBINING X BELOW -0354;A # COMBINING LEFT ARROWHEAD BELOW -0355;A # COMBINING RIGHT ARROWHEAD BELOW -0356;A # COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW -0357;A # COMBINING RIGHT HALF RING ABOVE -0358;A # COMBINING DOT ABOVE RIGHT -0359;A # COMBINING ASTERISK BELOW -035A;A # COMBINING DOUBLE RING BELOW -035B;A # COMBINING ZIGZAG ABOVE -035C;A # COMBINING DOUBLE BREVE BELOW -035D;A # COMBINING DOUBLE BREVE -035E;A # COMBINING DOUBLE MACRON -035F;A # COMBINING DOUBLE MACRON BELOW -0360;A # COMBINING DOUBLE TILDE -0361;A # COMBINING DOUBLE INVERTED BREVE -0362;A # COMBINING DOUBLE RIGHTWARDS ARROW BELOW -0363;A # COMBINING LATIN SMALL LETTER A -0364;A # COMBINING LATIN SMALL LETTER E -0365;A # COMBINING LATIN SMALL LETTER I -0366;A # COMBINING LATIN SMALL LETTER O -0367;A # COMBINING LATIN SMALL LETTER U -0368;A # COMBINING LATIN SMALL LETTER C -0369;A # COMBINING LATIN SMALL LETTER D -036A;A # COMBINING LATIN SMALL LETTER H -036B;A # COMBINING LATIN SMALL LETTER M -036C;A # COMBINING LATIN SMALL LETTER R -036D;A # COMBINING LATIN SMALL LETTER T -036E;A # COMBINING LATIN SMALL LETTER V -036F;A # COMBINING LATIN SMALL LETTER X -0374;N # GREEK NUMERAL SIGN -0375;N # GREEK LOWER NUMERAL SIGN -037A;N # GREEK YPOGEGRAMMENI -037E;N # GREEK QUESTION MARK -0384;N # GREEK TONOS -0385;N # GREEK DIALYTIKA TONOS -0386;N # GREEK CAPITAL LETTER ALPHA WITH TONOS -0387;N # GREEK ANO TELEIA -0388;N # GREEK CAPITAL LETTER EPSILON WITH TONOS -0389;N # GREEK CAPITAL LETTER ETA WITH TONOS -038A;N # GREEK CAPITAL LETTER IOTA WITH TONOS -038C;N # GREEK CAPITAL LETTER OMICRON WITH TONOS -038E;N # GREEK CAPITAL LETTER UPSILON WITH TONOS -038F;N # GREEK CAPITAL LETTER OMEGA WITH TONOS -0390;N # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -0391;A # GREEK CAPITAL LETTER ALPHA -0392;A # GREEK CAPITAL LETTER BETA -0393;A # GREEK CAPITAL LETTER GAMMA -0394;A # GREEK CAPITAL LETTER DELTA -0395;A # GREEK CAPITAL LETTER EPSILON -0396;A # GREEK CAPITAL LETTER ZETA -0397;A # GREEK CAPITAL LETTER ETA -0398;A # GREEK CAPITAL LETTER THETA -0399;A # GREEK CAPITAL LETTER IOTA -039A;A # GREEK CAPITAL LETTER KAPPA -039B;A # GREEK CAPITAL LETTER LAMDA -039C;A # GREEK CAPITAL LETTER MU -039D;A # GREEK CAPITAL LETTER NU -039E;A # GREEK CAPITAL LETTER XI -039F;A # GREEK CAPITAL LETTER OMICRON -03A0;A # GREEK CAPITAL LETTER PI -03A1;A # GREEK CAPITAL LETTER RHO -03A3;A # GREEK CAPITAL LETTER SIGMA -03A4;A # GREEK CAPITAL LETTER TAU -03A5;A # GREEK CAPITAL LETTER UPSILON -03A6;A # GREEK CAPITAL LETTER PHI -03A7;A # GREEK CAPITAL LETTER CHI -03A8;A # GREEK CAPITAL LETTER PSI -03A9;A # GREEK CAPITAL LETTER OMEGA -03AA;N # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA -03AB;N # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA -03AC;N # GREEK SMALL LETTER ALPHA WITH TONOS -03AD;N # GREEK SMALL LETTER EPSILON WITH TONOS -03AE;N # GREEK SMALL LETTER ETA WITH TONOS -03AF;N # GREEK SMALL LETTER IOTA WITH TONOS -03B0;N # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -03B1;A # GREEK SMALL LETTER ALPHA -03B2;A # GREEK SMALL LETTER BETA -03B3;A # GREEK SMALL LETTER GAMMA -03B4;A # GREEK SMALL LETTER DELTA -03B5;A # GREEK SMALL LETTER EPSILON -03B6;A # GREEK SMALL LETTER ZETA -03B7;A # GREEK SMALL LETTER ETA -03B8;A # GREEK SMALL LETTER THETA -03B9;A # GREEK SMALL LETTER IOTA -03BA;A # GREEK SMALL LETTER KAPPA -03BB;A # GREEK SMALL LETTER LAMDA -03BC;A # GREEK SMALL LETTER MU -03BD;A # GREEK SMALL LETTER NU -03BE;A # GREEK SMALL LETTER XI -03BF;A # GREEK SMALL LETTER OMICRON -03C0;A # GREEK SMALL LETTER PI -03C1;A # GREEK SMALL LETTER RHO -03C2;N # GREEK SMALL LETTER FINAL SIGMA -03C3;A # GREEK SMALL LETTER SIGMA -03C4;A # GREEK SMALL LETTER TAU -03C5;A # GREEK SMALL LETTER UPSILON -03C6;A # GREEK SMALL LETTER PHI -03C7;A # GREEK SMALL LETTER CHI -03C8;A # GREEK SMALL LETTER PSI -03C9;A # GREEK SMALL LETTER OMEGA -03CA;N # GREEK SMALL LETTER IOTA WITH DIALYTIKA -03CB;N # GREEK SMALL LETTER UPSILON WITH DIALYTIKA -03CC;N # GREEK SMALL LETTER OMICRON WITH TONOS -03CD;N # GREEK SMALL LETTER UPSILON WITH TONOS -03CE;N # GREEK SMALL LETTER OMEGA WITH TONOS -03D0;N # GREEK BETA SYMBOL -03D1;N # GREEK THETA SYMBOL -03D2;N # GREEK UPSILON WITH HOOK SYMBOL -03D3;N # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL -03D4;N # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL -03D5;N # GREEK PHI SYMBOL -03D6;N # GREEK PI SYMBOL -03D7;N # GREEK KAI SYMBOL -03D8;N # GREEK LETTER ARCHAIC KOPPA -03D9;N # GREEK SMALL LETTER ARCHAIC KOPPA -03DA;N # GREEK LETTER STIGMA -03DB;N # GREEK SMALL LETTER STIGMA -03DC;N # GREEK LETTER DIGAMMA -03DD;N # GREEK SMALL LETTER DIGAMMA -03DE;N # GREEK LETTER KOPPA -03DF;N # GREEK SMALL LETTER KOPPA -03E0;N # GREEK LETTER SAMPI -03E1;N # GREEK SMALL LETTER SAMPI -03E2;N # COPTIC CAPITAL LETTER SHEI -03E3;N # COPTIC SMALL LETTER SHEI -03E4;N # COPTIC CAPITAL LETTER FEI -03E5;N # COPTIC SMALL LETTER FEI -03E6;N # COPTIC CAPITAL LETTER KHEI -03E7;N # COPTIC SMALL LETTER KHEI -03E8;N # COPTIC CAPITAL LETTER HORI -03E9;N # COPTIC SMALL LETTER HORI -03EA;N # COPTIC CAPITAL LETTER GANGIA -03EB;N # COPTIC SMALL LETTER GANGIA -03EC;N # COPTIC CAPITAL LETTER SHIMA -03ED;N # COPTIC SMALL LETTER SHIMA -03EE;N # COPTIC CAPITAL LETTER DEI -03EF;N # COPTIC SMALL LETTER DEI -03F0;N # GREEK KAPPA SYMBOL -03F1;N # GREEK RHO SYMBOL -03F2;N # GREEK LUNATE SIGMA SYMBOL -03F3;N # GREEK LETTER YOT -03F4;N # GREEK CAPITAL THETA SYMBOL -03F5;N # GREEK LUNATE EPSILON SYMBOL -03F6;N # GREEK REVERSED LUNATE EPSILON SYMBOL -03F7;N # GREEK CAPITAL LETTER SHO -03F8;N # GREEK SMALL LETTER SHO -03F9;N # GREEK CAPITAL LUNATE SIGMA SYMBOL -03FA;N # GREEK CAPITAL LETTER SAN -03FB;N # GREEK SMALL LETTER SAN -03FC;N # GREEK RHO WITH STROKE SYMBOL -03FD;N # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL -03FE;N # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL -03FF;N # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL -0400;N # CYRILLIC CAPITAL LETTER IE WITH GRAVE -0401;A # CYRILLIC CAPITAL LETTER IO -0402;N # CYRILLIC CAPITAL LETTER DJE -0403;N # CYRILLIC CAPITAL LETTER GJE -0404;N # CYRILLIC CAPITAL LETTER UKRAINIAN IE -0405;N # CYRILLIC CAPITAL LETTER DZE -0406;N # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I -0407;N # CYRILLIC CAPITAL LETTER YI -0408;N # CYRILLIC CAPITAL LETTER JE -0409;N # CYRILLIC CAPITAL LETTER LJE -040A;N # CYRILLIC CAPITAL LETTER NJE -040B;N # CYRILLIC CAPITAL LETTER TSHE -040C;N # CYRILLIC CAPITAL LETTER KJE -040D;N # CYRILLIC CAPITAL LETTER I WITH GRAVE -040E;N # CYRILLIC CAPITAL LETTER SHORT U -040F;N # CYRILLIC CAPITAL LETTER DZHE -0410;A # CYRILLIC CAPITAL LETTER A -0411;A # CYRILLIC CAPITAL LETTER BE -0412;A # CYRILLIC CAPITAL LETTER VE -0413;A # CYRILLIC CAPITAL LETTER GHE -0414;A # CYRILLIC CAPITAL LETTER DE -0415;A # CYRILLIC CAPITAL LETTER IE -0416;A # CYRILLIC CAPITAL LETTER ZHE -0417;A # CYRILLIC CAPITAL LETTER ZE -0418;A # CYRILLIC CAPITAL LETTER I -0419;A # CYRILLIC CAPITAL LETTER SHORT I -041A;A # CYRILLIC CAPITAL LETTER KA -041B;A # CYRILLIC CAPITAL LETTER EL -041C;A # CYRILLIC CAPITAL LETTER EM -041D;A # CYRILLIC CAPITAL LETTER EN -041E;A # CYRILLIC CAPITAL LETTER O -041F;A # CYRILLIC CAPITAL LETTER PE -0420;A # CYRILLIC CAPITAL LETTER ER -0421;A # CYRILLIC CAPITAL LETTER ES -0422;A # CYRILLIC CAPITAL LETTER TE -0423;A # CYRILLIC CAPITAL LETTER U -0424;A # CYRILLIC CAPITAL LETTER EF -0425;A # CYRILLIC CAPITAL LETTER HA -0426;A # CYRILLIC CAPITAL LETTER TSE -0427;A # CYRILLIC CAPITAL LETTER CHE -0428;A # CYRILLIC CAPITAL LETTER SHA -0429;A # CYRILLIC CAPITAL LETTER SHCHA -042A;A # CYRILLIC CAPITAL LETTER HARD SIGN -042B;A # CYRILLIC CAPITAL LETTER YERU -042C;A # CYRILLIC CAPITAL LETTER SOFT SIGN -042D;A # CYRILLIC CAPITAL LETTER E -042E;A # CYRILLIC CAPITAL LETTER YU -042F;A # CYRILLIC CAPITAL LETTER YA -0430;A # CYRILLIC SMALL LETTER A -0431;A # CYRILLIC SMALL LETTER BE -0432;A # CYRILLIC SMALL LETTER VE -0433;A # CYRILLIC SMALL LETTER GHE -0434;A # CYRILLIC SMALL LETTER DE -0435;A # CYRILLIC SMALL LETTER IE -0436;A # CYRILLIC SMALL LETTER ZHE -0437;A # CYRILLIC SMALL LETTER ZE -0438;A # CYRILLIC SMALL LETTER I -0439;A # CYRILLIC SMALL LETTER SHORT I -043A;A # CYRILLIC SMALL LETTER KA -043B;A # CYRILLIC SMALL LETTER EL -043C;A # CYRILLIC SMALL LETTER EM -043D;A # CYRILLIC SMALL LETTER EN -043E;A # CYRILLIC SMALL LETTER O -043F;A # CYRILLIC SMALL LETTER PE -0440;A # CYRILLIC SMALL LETTER ER -0441;A # CYRILLIC SMALL LETTER ES -0442;A # CYRILLIC SMALL LETTER TE -0443;A # CYRILLIC SMALL LETTER U -0444;A # CYRILLIC SMALL LETTER EF -0445;A # CYRILLIC SMALL LETTER HA -0446;A # CYRILLIC SMALL LETTER TSE -0447;A # CYRILLIC SMALL LETTER CHE -0448;A # CYRILLIC SMALL LETTER SHA -0449;A # CYRILLIC SMALL LETTER SHCHA -044A;A # CYRILLIC SMALL LETTER HARD SIGN -044B;A # CYRILLIC SMALL LETTER YERU -044C;A # CYRILLIC SMALL LETTER SOFT SIGN -044D;A # CYRILLIC SMALL LETTER E -044E;A # CYRILLIC SMALL LETTER YU -044F;A # CYRILLIC SMALL LETTER YA -0450;N # CYRILLIC SMALL LETTER IE WITH GRAVE -0451;A # CYRILLIC SMALL LETTER IO -0452;N # CYRILLIC SMALL LETTER DJE -0453;N # CYRILLIC SMALL LETTER GJE -0454;N # CYRILLIC SMALL LETTER UKRAINIAN IE -0455;N # CYRILLIC SMALL LETTER DZE -0456;N # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -0457;N # CYRILLIC SMALL LETTER YI -0458;N # CYRILLIC SMALL LETTER JE -0459;N # CYRILLIC SMALL LETTER LJE -045A;N # CYRILLIC SMALL LETTER NJE -045B;N # CYRILLIC SMALL LETTER TSHE -045C;N # CYRILLIC SMALL LETTER KJE -045D;N # CYRILLIC SMALL LETTER I WITH GRAVE -045E;N # CYRILLIC SMALL LETTER SHORT U -045F;N # CYRILLIC SMALL LETTER DZHE -0460;N # CYRILLIC CAPITAL LETTER OMEGA -0461;N # CYRILLIC SMALL LETTER OMEGA -0462;N # CYRILLIC CAPITAL LETTER YAT -0463;N # CYRILLIC SMALL LETTER YAT -0464;N # CYRILLIC CAPITAL LETTER IOTIFIED E -0465;N # CYRILLIC SMALL LETTER IOTIFIED E -0466;N # CYRILLIC CAPITAL LETTER LITTLE YUS -0467;N # CYRILLIC SMALL LETTER LITTLE YUS -0468;N # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS -0469;N # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS -046A;N # CYRILLIC CAPITAL LETTER BIG YUS -046B;N # CYRILLIC SMALL LETTER BIG YUS -046C;N # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS -046D;N # CYRILLIC SMALL LETTER IOTIFIED BIG YUS -046E;N # CYRILLIC CAPITAL LETTER KSI -046F;N # CYRILLIC SMALL LETTER KSI -0470;N # CYRILLIC CAPITAL LETTER PSI -0471;N # CYRILLIC SMALL LETTER PSI -0472;N # CYRILLIC CAPITAL LETTER FITA -0473;N # CYRILLIC SMALL LETTER FITA -0474;N # CYRILLIC CAPITAL LETTER IZHITSA -0475;N # CYRILLIC SMALL LETTER IZHITSA -0476;N # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT -0477;N # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT -0478;N # CYRILLIC CAPITAL LETTER UK -0479;N # CYRILLIC SMALL LETTER UK -047A;N # CYRILLIC CAPITAL LETTER ROUND OMEGA -047B;N # CYRILLIC SMALL LETTER ROUND OMEGA -047C;N # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO -047D;N # CYRILLIC SMALL LETTER OMEGA WITH TITLO -047E;N # CYRILLIC CAPITAL LETTER OT -047F;N # CYRILLIC SMALL LETTER OT -0480;N # CYRILLIC CAPITAL LETTER KOPPA -0481;N # CYRILLIC SMALL LETTER KOPPA -0482;N # CYRILLIC THOUSANDS SIGN -0483;N # COMBINING CYRILLIC TITLO -0484;N # COMBINING CYRILLIC PALATALIZATION -0485;N # COMBINING CYRILLIC DASIA PNEUMATA -0486;N # COMBINING CYRILLIC PSILI PNEUMATA -0488;N # COMBINING CYRILLIC HUNDRED THOUSANDS SIGN -0489;N # COMBINING CYRILLIC MILLIONS SIGN -048A;N # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL -048B;N # CYRILLIC SMALL LETTER SHORT I WITH TAIL -048C;N # CYRILLIC CAPITAL LETTER SEMISOFT SIGN -048D;N # CYRILLIC SMALL LETTER SEMISOFT SIGN -048E;N # CYRILLIC CAPITAL LETTER ER WITH TICK -048F;N # CYRILLIC SMALL LETTER ER WITH TICK -0490;N # CYRILLIC CAPITAL LETTER GHE WITH UPTURN -0491;N # CYRILLIC SMALL LETTER GHE WITH UPTURN -0492;N # CYRILLIC CAPITAL LETTER GHE WITH STROKE -0493;N # CYRILLIC SMALL LETTER GHE WITH STROKE -0494;N # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK -0495;N # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK -0496;N # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER -0497;N # CYRILLIC SMALL LETTER ZHE WITH DESCENDER -0498;N # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER -0499;N # CYRILLIC SMALL LETTER ZE WITH DESCENDER -049A;N # CYRILLIC CAPITAL LETTER KA WITH DESCENDER -049B;N # CYRILLIC SMALL LETTER KA WITH DESCENDER -049C;N # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE -049D;N # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE -049E;N # CYRILLIC CAPITAL LETTER KA WITH STROKE -049F;N # CYRILLIC SMALL LETTER KA WITH STROKE -04A0;N # CYRILLIC CAPITAL LETTER BASHKIR KA -04A1;N # CYRILLIC SMALL LETTER BASHKIR KA -04A2;N # CYRILLIC CAPITAL LETTER EN WITH DESCENDER -04A3;N # CYRILLIC SMALL LETTER EN WITH DESCENDER -04A4;N # CYRILLIC CAPITAL LIGATURE EN GHE -04A5;N # CYRILLIC SMALL LIGATURE EN GHE -04A6;N # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK -04A7;N # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK -04A8;N # CYRILLIC CAPITAL LETTER ABKHASIAN HA -04A9;N # CYRILLIC SMALL LETTER ABKHASIAN HA -04AA;N # CYRILLIC CAPITAL LETTER ES WITH DESCENDER -04AB;N # CYRILLIC SMALL LETTER ES WITH DESCENDER -04AC;N # CYRILLIC CAPITAL LETTER TE WITH DESCENDER -04AD;N # CYRILLIC SMALL LETTER TE WITH DESCENDER -04AE;N # CYRILLIC CAPITAL LETTER STRAIGHT U -04AF;N # CYRILLIC SMALL LETTER STRAIGHT U -04B0;N # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE -04B1;N # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE -04B2;N # CYRILLIC CAPITAL LETTER HA WITH DESCENDER -04B3;N # CYRILLIC SMALL LETTER HA WITH DESCENDER -04B4;N # CYRILLIC CAPITAL LIGATURE TE TSE -04B5;N # CYRILLIC SMALL LIGATURE TE TSE -04B6;N # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER -04B7;N # CYRILLIC SMALL LETTER CHE WITH DESCENDER -04B8;N # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE -04B9;N # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE -04BA;N # CYRILLIC CAPITAL LETTER SHHA -04BB;N # CYRILLIC SMALL LETTER SHHA -04BC;N # CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04BD;N # CYRILLIC SMALL LETTER ABKHASIAN CHE -04BE;N # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER -04BF;N # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER -04C0;N # CYRILLIC LETTER PALOCHKA -04C1;N # CYRILLIC CAPITAL LETTER ZHE WITH BREVE -04C2;N # CYRILLIC SMALL LETTER ZHE WITH BREVE -04C3;N # CYRILLIC CAPITAL LETTER KA WITH HOOK -04C4;N # CYRILLIC SMALL LETTER KA WITH HOOK -04C5;N # CYRILLIC CAPITAL LETTER EL WITH TAIL -04C6;N # CYRILLIC SMALL LETTER EL WITH TAIL -04C7;N # CYRILLIC CAPITAL LETTER EN WITH HOOK -04C8;N # CYRILLIC SMALL LETTER EN WITH HOOK -04C9;N # CYRILLIC CAPITAL LETTER EN WITH TAIL -04CA;N # CYRILLIC SMALL LETTER EN WITH TAIL -04CB;N # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE -04CC;N # CYRILLIC SMALL LETTER KHAKASSIAN CHE -04CD;N # CYRILLIC CAPITAL LETTER EM WITH TAIL -04CE;N # CYRILLIC SMALL LETTER EM WITH TAIL -04D0;N # CYRILLIC CAPITAL LETTER A WITH BREVE -04D1;N # CYRILLIC SMALL LETTER A WITH BREVE -04D2;N # CYRILLIC CAPITAL LETTER A WITH DIAERESIS -04D3;N # CYRILLIC SMALL LETTER A WITH DIAERESIS -04D4;N # CYRILLIC CAPITAL LIGATURE A IE -04D5;N # CYRILLIC SMALL LIGATURE A IE -04D6;N # CYRILLIC CAPITAL LETTER IE WITH BREVE -04D7;N # CYRILLIC SMALL LETTER IE WITH BREVE -04D8;N # CYRILLIC CAPITAL LETTER SCHWA -04D9;N # CYRILLIC SMALL LETTER SCHWA -04DA;N # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS -04DB;N # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS -04DC;N # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS -04DD;N # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS -04DE;N # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS -04DF;N # CYRILLIC SMALL LETTER ZE WITH DIAERESIS -04E0;N # CYRILLIC CAPITAL LETTER ABKHASIAN DZE -04E1;N # CYRILLIC SMALL LETTER ABKHASIAN DZE -04E2;N # CYRILLIC CAPITAL LETTER I WITH MACRON -04E3;N # CYRILLIC SMALL LETTER I WITH MACRON -04E4;N # CYRILLIC CAPITAL LETTER I WITH DIAERESIS -04E5;N # CYRILLIC SMALL LETTER I WITH DIAERESIS -04E6;N # CYRILLIC CAPITAL LETTER O WITH DIAERESIS -04E7;N # CYRILLIC SMALL LETTER O WITH DIAERESIS -04E8;N # CYRILLIC CAPITAL LETTER BARRED O -04E9;N # CYRILLIC SMALL LETTER BARRED O -04EA;N # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS -04EB;N # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS -04EC;N # CYRILLIC CAPITAL LETTER E WITH DIAERESIS -04ED;N # CYRILLIC SMALL LETTER E WITH DIAERESIS -04EE;N # CYRILLIC CAPITAL LETTER U WITH MACRON -04EF;N # CYRILLIC SMALL LETTER U WITH MACRON -04F0;N # CYRILLIC CAPITAL LETTER U WITH DIAERESIS -04F1;N # CYRILLIC SMALL LETTER U WITH DIAERESIS -04F2;N # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE -04F3;N # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE -04F4;N # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS -04F5;N # CYRILLIC SMALL LETTER CHE WITH DIAERESIS -04F6;N # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER -04F7;N # CYRILLIC SMALL LETTER GHE WITH DESCENDER -04F8;N # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS -04F9;N # CYRILLIC SMALL LETTER YERU WITH DIAERESIS -0500;N # CYRILLIC CAPITAL LETTER KOMI DE -0501;N # CYRILLIC SMALL LETTER KOMI DE -0502;N # CYRILLIC CAPITAL LETTER KOMI DJE -0503;N # CYRILLIC SMALL LETTER KOMI DJE -0504;N # CYRILLIC CAPITAL LETTER KOMI ZJE -0505;N # CYRILLIC SMALL LETTER KOMI ZJE -0506;N # CYRILLIC CAPITAL LETTER KOMI DZJE -0507;N # CYRILLIC SMALL LETTER KOMI DZJE -0508;N # CYRILLIC CAPITAL LETTER KOMI LJE -0509;N # CYRILLIC SMALL LETTER KOMI LJE -050A;N # CYRILLIC CAPITAL LETTER KOMI NJE -050B;N # CYRILLIC SMALL LETTER KOMI NJE -050C;N # CYRILLIC CAPITAL LETTER KOMI SJE -050D;N # CYRILLIC SMALL LETTER KOMI SJE -050E;N # CYRILLIC CAPITAL LETTER KOMI TJE -050F;N # CYRILLIC SMALL LETTER KOMI TJE -0531;N # ARMENIAN CAPITAL LETTER AYB -0532;N # ARMENIAN CAPITAL LETTER BEN -0533;N # ARMENIAN CAPITAL LETTER GIM -0534;N # ARMENIAN CAPITAL LETTER DA -0535;N # ARMENIAN CAPITAL LETTER ECH -0536;N # ARMENIAN CAPITAL LETTER ZA -0537;N # ARMENIAN CAPITAL LETTER EH -0538;N # ARMENIAN CAPITAL LETTER ET -0539;N # ARMENIAN CAPITAL LETTER TO -053A;N # ARMENIAN CAPITAL LETTER ZHE -053B;N # ARMENIAN CAPITAL LETTER INI -053C;N # ARMENIAN CAPITAL LETTER LIWN -053D;N # ARMENIAN CAPITAL LETTER XEH -053E;N # ARMENIAN CAPITAL LETTER CA -053F;N # ARMENIAN CAPITAL LETTER KEN -0540;N # ARMENIAN CAPITAL LETTER HO -0541;N # ARMENIAN CAPITAL LETTER JA -0542;N # ARMENIAN CAPITAL LETTER GHAD -0543;N # ARMENIAN CAPITAL LETTER CHEH -0544;N # ARMENIAN CAPITAL LETTER MEN -0545;N # ARMENIAN CAPITAL LETTER YI -0546;N # ARMENIAN CAPITAL LETTER NOW -0547;N # ARMENIAN CAPITAL LETTER SHA -0548;N # ARMENIAN CAPITAL LETTER VO -0549;N # ARMENIAN CAPITAL LETTER CHA -054A;N # ARMENIAN CAPITAL LETTER PEH -054B;N # ARMENIAN CAPITAL LETTER JHEH -054C;N # ARMENIAN CAPITAL LETTER RA -054D;N # ARMENIAN CAPITAL LETTER SEH -054E;N # ARMENIAN CAPITAL LETTER VEW -054F;N # ARMENIAN CAPITAL LETTER TIWN -0550;N # ARMENIAN CAPITAL LETTER REH -0551;N # ARMENIAN CAPITAL LETTER CO -0552;N # ARMENIAN CAPITAL LETTER YIWN -0553;N # ARMENIAN CAPITAL LETTER PIWR -0554;N # ARMENIAN CAPITAL LETTER KEH -0555;N # ARMENIAN CAPITAL LETTER OH -0556;N # ARMENIAN CAPITAL LETTER FEH -0559;N # ARMENIAN MODIFIER LETTER LEFT HALF RING -055A;N # ARMENIAN APOSTROPHE -055B;N # ARMENIAN EMPHASIS MARK -055C;N # ARMENIAN EXCLAMATION MARK -055D;N # ARMENIAN COMMA -055E;N # ARMENIAN QUESTION MARK -055F;N # ARMENIAN ABBREVIATION MARK -0561;N # ARMENIAN SMALL LETTER AYB -0562;N # ARMENIAN SMALL LETTER BEN -0563;N # ARMENIAN SMALL LETTER GIM -0564;N # ARMENIAN SMALL LETTER DA -0565;N # ARMENIAN SMALL LETTER ECH -0566;N # ARMENIAN SMALL LETTER ZA -0567;N # ARMENIAN SMALL LETTER EH -0568;N # ARMENIAN SMALL LETTER ET -0569;N # ARMENIAN SMALL LETTER TO -056A;N # ARMENIAN SMALL LETTER ZHE -056B;N # ARMENIAN SMALL LETTER INI -056C;N # ARMENIAN SMALL LETTER LIWN -056D;N # ARMENIAN SMALL LETTER XEH -056E;N # ARMENIAN SMALL LETTER CA -056F;N # ARMENIAN SMALL LETTER KEN -0570;N # ARMENIAN SMALL LETTER HO -0571;N # ARMENIAN SMALL LETTER JA -0572;N # ARMENIAN SMALL LETTER GHAD -0573;N # ARMENIAN SMALL LETTER CHEH -0574;N # ARMENIAN SMALL LETTER MEN -0575;N # ARMENIAN SMALL LETTER YI -0576;N # ARMENIAN SMALL LETTER NOW -0577;N # ARMENIAN SMALL LETTER SHA -0578;N # ARMENIAN SMALL LETTER VO -0579;N # ARMENIAN SMALL LETTER CHA -057A;N # ARMENIAN SMALL LETTER PEH -057B;N # ARMENIAN SMALL LETTER JHEH -057C;N # ARMENIAN SMALL LETTER RA -057D;N # ARMENIAN SMALL LETTER SEH -057E;N # ARMENIAN SMALL LETTER VEW -057F;N # ARMENIAN SMALL LETTER TIWN -0580;N # ARMENIAN SMALL LETTER REH -0581;N # ARMENIAN SMALL LETTER CO -0582;N # ARMENIAN SMALL LETTER YIWN -0583;N # ARMENIAN SMALL LETTER PIWR -0584;N # ARMENIAN SMALL LETTER KEH -0585;N # ARMENIAN SMALL LETTER OH -0586;N # ARMENIAN SMALL LETTER FEH -0587;N # ARMENIAN SMALL LIGATURE ECH YIWN -0589;N # ARMENIAN FULL STOP -058A;N # ARMENIAN HYPHEN -0591;N # HEBREW ACCENT ETNAHTA -0592;N # HEBREW ACCENT SEGOL -0593;N # HEBREW ACCENT SHALSHELET -0594;N # HEBREW ACCENT ZAQEF QATAN -0595;N # HEBREW ACCENT ZAQEF GADOL -0596;N # HEBREW ACCENT TIPEHA -0597;N # HEBREW ACCENT REVIA -0598;N # HEBREW ACCENT ZARQA -0599;N # HEBREW ACCENT PASHTA -059A;N # HEBREW ACCENT YETIV -059B;N # HEBREW ACCENT TEVIR -059C;N # HEBREW ACCENT GERESH -059D;N # HEBREW ACCENT GERESH MUQDAM -059E;N # HEBREW ACCENT GERSHAYIM -059F;N # HEBREW ACCENT QARNEY PARA -05A0;N # HEBREW ACCENT TELISHA GEDOLA -05A1;N # HEBREW ACCENT PAZER -05A2;N # HEBREW ACCENT ATNAH HAFUKH -05A3;N # HEBREW ACCENT MUNAH -05A4;N # HEBREW ACCENT MAHAPAKH -05A5;N # HEBREW ACCENT MERKHA -05A6;N # HEBREW ACCENT MERKHA KEFULA -05A7;N # HEBREW ACCENT DARGA -05A8;N # HEBREW ACCENT QADMA -05A9;N # HEBREW ACCENT TELISHA QETANA -05AA;N # HEBREW ACCENT YERAH BEN YOMO -05AB;N # HEBREW ACCENT OLE -05AC;N # HEBREW ACCENT ILUY -05AD;N # HEBREW ACCENT DEHI -05AE;N # HEBREW ACCENT ZINOR -05AF;N # HEBREW MARK MASORA CIRCLE -05B0;N # HEBREW POINT SHEVA -05B1;N # HEBREW POINT HATAF SEGOL -05B2;N # HEBREW POINT HATAF PATAH -05B3;N # HEBREW POINT HATAF QAMATS -05B4;N # HEBREW POINT HIRIQ -05B5;N # HEBREW POINT TSERE -05B6;N # HEBREW POINT SEGOL -05B7;N # HEBREW POINT PATAH -05B8;N # HEBREW POINT QAMATS -05B9;N # HEBREW POINT HOLAM -05BB;N # HEBREW POINT QUBUTS -05BC;N # HEBREW POINT DAGESH OR MAPIQ -05BD;N # HEBREW POINT METEG -05BE;N # HEBREW PUNCTUATION MAQAF -05BF;N # HEBREW POINT RAFE -05C0;N # HEBREW PUNCTUATION PASEQ -05C1;N # HEBREW POINT SHIN DOT -05C2;N # HEBREW POINT SIN DOT -05C3;N # HEBREW PUNCTUATION SOF PASUQ -05C4;N # HEBREW MARK UPPER DOT -05C5;N # HEBREW MARK LOWER DOT -05C6;N # HEBREW PUNCTUATION NUN HAFUKHA -05C7;N # HEBREW POINT QAMATS QATAN -05D0;N # HEBREW LETTER ALEF -05D1;N # HEBREW LETTER BET -05D2;N # HEBREW LETTER GIMEL -05D3;N # HEBREW LETTER DALET -05D4;N # HEBREW LETTER HE -05D5;N # HEBREW LETTER VAV -05D6;N # HEBREW LETTER ZAYIN -05D7;N # HEBREW LETTER HET -05D8;N # HEBREW LETTER TET -05D9;N # HEBREW LETTER YOD -05DA;N # HEBREW LETTER FINAL KAF -05DB;N # HEBREW LETTER KAF -05DC;N # HEBREW LETTER LAMED -05DD;N # HEBREW LETTER FINAL MEM -05DE;N # HEBREW LETTER MEM -05DF;N # HEBREW LETTER FINAL NUN -05E0;N # HEBREW LETTER NUN -05E1;N # HEBREW LETTER SAMEKH -05E2;N # HEBREW LETTER AYIN -05E3;N # HEBREW LETTER FINAL PE -05E4;N # HEBREW LETTER PE -05E5;N # HEBREW LETTER FINAL TSADI -05E6;N # HEBREW LETTER TSADI -05E7;N # HEBREW LETTER QOF -05E8;N # HEBREW LETTER RESH -05E9;N # HEBREW LETTER SHIN -05EA;N # HEBREW LETTER TAV -05F0;N # HEBREW LIGATURE YIDDISH DOUBLE VAV -05F1;N # HEBREW LIGATURE YIDDISH VAV YOD -05F2;N # HEBREW LIGATURE YIDDISH DOUBLE YOD -05F3;N # HEBREW PUNCTUATION GERESH -05F4;N # HEBREW PUNCTUATION GERSHAYIM -0600;N # ARABIC NUMBER SIGN -0601;N # ARABIC SIGN SANAH -0602;N # ARABIC FOOTNOTE MARKER -0603;N # ARABIC SIGN SAFHA -060B;N # AFGHANI SIGN -060C;N # ARABIC COMMA -060D;N # ARABIC DATE SEPARATOR -060E;N # ARABIC POETIC VERSE SIGN -060F;N # ARABIC SIGN MISRA -0610;N # ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM -0611;N # ARABIC SIGN ALAYHE ASSALLAM -0612;N # ARABIC SIGN RAHMATULLAH ALAYHE -0613;N # ARABIC SIGN RADI ALLAHOU ANHU -0614;N # ARABIC SIGN TAKHALLUS -0615;N # ARABIC SMALL HIGH TAH -061B;N # ARABIC SEMICOLON -061E;N # ARABIC TRIPLE DOT PUNCTUATION MARK -061F;N # ARABIC QUESTION MARK -0621;N # ARABIC LETTER HAMZA -0622;N # ARABIC LETTER ALEF WITH MADDA ABOVE -0623;N # ARABIC LETTER ALEF WITH HAMZA ABOVE -0624;N # ARABIC LETTER WAW WITH HAMZA ABOVE -0625;N # ARABIC LETTER ALEF WITH HAMZA BELOW -0626;N # ARABIC LETTER YEH WITH HAMZA ABOVE -0627;N # ARABIC LETTER ALEF -0628;N # ARABIC LETTER BEH -0629;N # ARABIC LETTER TEH MARBUTA -062A;N # ARABIC LETTER TEH -062B;N # ARABIC LETTER THEH -062C;N # ARABIC LETTER JEEM -062D;N # ARABIC LETTER HAH -062E;N # ARABIC LETTER KHAH -062F;N # ARABIC LETTER DAL -0630;N # ARABIC LETTER THAL -0631;N # ARABIC LETTER REH -0632;N # ARABIC LETTER ZAIN -0633;N # ARABIC LETTER SEEN -0634;N # ARABIC LETTER SHEEN -0635;N # ARABIC LETTER SAD -0636;N # ARABIC LETTER DAD -0637;N # ARABIC LETTER TAH -0638;N # ARABIC LETTER ZAH -0639;N # ARABIC LETTER AIN -063A;N # ARABIC LETTER GHAIN -0640;N # ARABIC TATWEEL -0641;N # ARABIC LETTER FEH -0642;N # ARABIC LETTER QAF -0643;N # ARABIC LETTER KAF -0644;N # ARABIC LETTER LAM -0645;N # ARABIC LETTER MEEM -0646;N # ARABIC LETTER NOON -0647;N # ARABIC LETTER HEH -0648;N # ARABIC LETTER WAW -0649;N # ARABIC LETTER ALEF MAKSURA -064A;N # ARABIC LETTER YEH -064B;N # ARABIC FATHATAN -064C;N # ARABIC DAMMATAN -064D;N # ARABIC KASRATAN -064E;N # ARABIC FATHA -064F;N # ARABIC DAMMA -0650;N # ARABIC KASRA -0651;N # ARABIC SHADDA -0652;N # ARABIC SUKUN -0653;N # ARABIC MADDAH ABOVE -0654;N # ARABIC HAMZA ABOVE -0655;N # ARABIC HAMZA BELOW -0656;N # ARABIC SUBSCRIPT ALEF -0657;N # ARABIC INVERTED DAMMA -0658;N # ARABIC MARK NOON GHUNNA -0659;N # ARABIC ZWARAKAY -065A;N # ARABIC VOWEL SIGN SMALL V ABOVE -065B;N # ARABIC VOWEL SIGN INVERTED SMALL V ABOVE -065C;N # ARABIC VOWEL SIGN DOT BELOW -065D;N # ARABIC REVERSED DAMMA -065E;N # ARABIC FATHA WITH TWO DOTS -0660;N # ARABIC-INDIC DIGIT ZERO -0661;N # ARABIC-INDIC DIGIT ONE -0662;N # ARABIC-INDIC DIGIT TWO -0663;N # ARABIC-INDIC DIGIT THREE -0664;N # ARABIC-INDIC DIGIT FOUR -0665;N # ARABIC-INDIC DIGIT FIVE -0666;N # ARABIC-INDIC DIGIT SIX -0667;N # ARABIC-INDIC DIGIT SEVEN -0668;N # ARABIC-INDIC DIGIT EIGHT -0669;N # ARABIC-INDIC DIGIT NINE -066A;N # ARABIC PERCENT SIGN -066B;N # ARABIC DECIMAL SEPARATOR -066C;N # ARABIC THOUSANDS SEPARATOR -066D;N # ARABIC FIVE POINTED STAR -066E;N # ARABIC LETTER DOTLESS BEH -066F;N # ARABIC LETTER DOTLESS QAF -0670;N # ARABIC LETTER SUPERSCRIPT ALEF -0671;N # ARABIC LETTER ALEF WASLA -0672;N # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE -0673;N # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW -0674;N # ARABIC LETTER HIGH HAMZA -0675;N # ARABIC LETTER HIGH HAMZA ALEF -0676;N # ARABIC LETTER HIGH HAMZA WAW -0677;N # ARABIC LETTER U WITH HAMZA ABOVE -0678;N # ARABIC LETTER HIGH HAMZA YEH -0679;N # ARABIC LETTER TTEH -067A;N # ARABIC LETTER TTEHEH -067B;N # ARABIC LETTER BEEH -067C;N # ARABIC LETTER TEH WITH RING -067D;N # ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS -067E;N # ARABIC LETTER PEH -067F;N # ARABIC LETTER TEHEH -0680;N # ARABIC LETTER BEHEH -0681;N # ARABIC LETTER HAH WITH HAMZA ABOVE -0682;N # ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE -0683;N # ARABIC LETTER NYEH -0684;N # ARABIC LETTER DYEH -0685;N # ARABIC LETTER HAH WITH THREE DOTS ABOVE -0686;N # ARABIC LETTER TCHEH -0687;N # ARABIC LETTER TCHEHEH -0688;N # ARABIC LETTER DDAL -0689;N # ARABIC LETTER DAL WITH RING -068A;N # ARABIC LETTER DAL WITH DOT BELOW -068B;N # ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH -068C;N # ARABIC LETTER DAHAL -068D;N # ARABIC LETTER DDAHAL -068E;N # ARABIC LETTER DUL -068F;N # ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS -0690;N # ARABIC LETTER DAL WITH FOUR DOTS ABOVE -0691;N # ARABIC LETTER RREH -0692;N # ARABIC LETTER REH WITH SMALL V -0693;N # ARABIC LETTER REH WITH RING -0694;N # ARABIC LETTER REH WITH DOT BELOW -0695;N # ARABIC LETTER REH WITH SMALL V BELOW -0696;N # ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE -0697;N # ARABIC LETTER REH WITH TWO DOTS ABOVE -0698;N # ARABIC LETTER JEH -0699;N # ARABIC LETTER REH WITH FOUR DOTS ABOVE -069A;N # ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE -069B;N # ARABIC LETTER SEEN WITH THREE DOTS BELOW -069C;N # ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE -069D;N # ARABIC LETTER SAD WITH TWO DOTS BELOW -069E;N # ARABIC LETTER SAD WITH THREE DOTS ABOVE -069F;N # ARABIC LETTER TAH WITH THREE DOTS ABOVE -06A0;N # ARABIC LETTER AIN WITH THREE DOTS ABOVE -06A1;N # ARABIC LETTER DOTLESS FEH -06A2;N # ARABIC LETTER FEH WITH DOT MOVED BELOW -06A3;N # ARABIC LETTER FEH WITH DOT BELOW -06A4;N # ARABIC LETTER VEH -06A5;N # ARABIC LETTER FEH WITH THREE DOTS BELOW -06A6;N # ARABIC LETTER PEHEH -06A7;N # ARABIC LETTER QAF WITH DOT ABOVE -06A8;N # ARABIC LETTER QAF WITH THREE DOTS ABOVE -06A9;N # ARABIC LETTER KEHEH -06AA;N # ARABIC LETTER SWASH KAF -06AB;N # ARABIC LETTER KAF WITH RING -06AC;N # ARABIC LETTER KAF WITH DOT ABOVE -06AD;N # ARABIC LETTER NG -06AE;N # ARABIC LETTER KAF WITH THREE DOTS BELOW -06AF;N # ARABIC LETTER GAF -06B0;N # ARABIC LETTER GAF WITH RING -06B1;N # ARABIC LETTER NGOEH -06B2;N # ARABIC LETTER GAF WITH TWO DOTS BELOW -06B3;N # ARABIC LETTER GUEH -06B4;N # ARABIC LETTER GAF WITH THREE DOTS ABOVE -06B5;N # ARABIC LETTER LAM WITH SMALL V -06B6;N # ARABIC LETTER LAM WITH DOT ABOVE -06B7;N # ARABIC LETTER LAM WITH THREE DOTS ABOVE -06B8;N # ARABIC LETTER LAM WITH THREE DOTS BELOW -06B9;N # ARABIC LETTER NOON WITH DOT BELOW -06BA;N # ARABIC LETTER NOON GHUNNA -06BB;N # ARABIC LETTER RNOON -06BC;N # ARABIC LETTER NOON WITH RING -06BD;N # ARABIC LETTER NOON WITH THREE DOTS ABOVE -06BE;N # ARABIC LETTER HEH DOACHASHMEE -06BF;N # ARABIC LETTER TCHEH WITH DOT ABOVE -06C0;N # ARABIC LETTER HEH WITH YEH ABOVE -06C1;N # ARABIC LETTER HEH GOAL -06C2;N # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE -06C3;N # ARABIC LETTER TEH MARBUTA GOAL -06C4;N # ARABIC LETTER WAW WITH RING -06C5;N # ARABIC LETTER KIRGHIZ OE -06C6;N # ARABIC LETTER OE -06C7;N # ARABIC LETTER U -06C8;N # ARABIC LETTER YU -06C9;N # ARABIC LETTER KIRGHIZ YU -06CA;N # ARABIC LETTER WAW WITH TWO DOTS ABOVE -06CB;N # ARABIC LETTER VE -06CC;N # ARABIC LETTER FARSI YEH -06CD;N # ARABIC LETTER YEH WITH TAIL -06CE;N # ARABIC LETTER YEH WITH SMALL V -06CF;N # ARABIC LETTER WAW WITH DOT ABOVE -06D0;N # ARABIC LETTER E -06D1;N # ARABIC LETTER YEH WITH THREE DOTS BELOW -06D2;N # ARABIC LETTER YEH BARREE -06D3;N # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -06D4;N # ARABIC FULL STOP -06D5;N # ARABIC LETTER AE -06D6;N # ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA -06D7;N # ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA -06D8;N # ARABIC SMALL HIGH MEEM INITIAL FORM -06D9;N # ARABIC SMALL HIGH LAM ALEF -06DA;N # ARABIC SMALL HIGH JEEM -06DB;N # ARABIC SMALL HIGH THREE DOTS -06DC;N # ARABIC SMALL HIGH SEEN -06DD;N # ARABIC END OF AYAH -06DE;N # ARABIC START OF RUB EL HIZB -06DF;N # ARABIC SMALL HIGH ROUNDED ZERO -06E0;N # ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO -06E1;N # ARABIC SMALL HIGH DOTLESS HEAD OF KHAH -06E2;N # ARABIC SMALL HIGH MEEM ISOLATED FORM -06E3;N # ARABIC SMALL LOW SEEN -06E4;N # ARABIC SMALL HIGH MADDA -06E5;N # ARABIC SMALL WAW -06E6;N # ARABIC SMALL YEH -06E7;N # ARABIC SMALL HIGH YEH -06E8;N # ARABIC SMALL HIGH NOON -06E9;N # ARABIC PLACE OF SAJDAH -06EA;N # ARABIC EMPTY CENTRE LOW STOP -06EB;N # ARABIC EMPTY CENTRE HIGH STOP -06EC;N # ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE -06ED;N # ARABIC SMALL LOW MEEM -06EE;N # ARABIC LETTER DAL WITH INVERTED V -06EF;N # ARABIC LETTER REH WITH INVERTED V -06F0;N # EXTENDED ARABIC-INDIC DIGIT ZERO -06F1;N # EXTENDED ARABIC-INDIC DIGIT ONE -06F2;N # EXTENDED ARABIC-INDIC DIGIT TWO -06F3;N # EXTENDED ARABIC-INDIC DIGIT THREE -06F4;N # EXTENDED ARABIC-INDIC DIGIT FOUR -06F5;N # EXTENDED ARABIC-INDIC DIGIT FIVE -06F6;N # EXTENDED ARABIC-INDIC DIGIT SIX -06F7;N # EXTENDED ARABIC-INDIC DIGIT SEVEN -06F8;N # EXTENDED ARABIC-INDIC DIGIT EIGHT -06F9;N # EXTENDED ARABIC-INDIC DIGIT NINE -06FA;N # ARABIC LETTER SHEEN WITH DOT BELOW -06FB;N # ARABIC LETTER DAD WITH DOT BELOW -06FC;N # ARABIC LETTER GHAIN WITH DOT BELOW -06FD;N # ARABIC SIGN SINDHI AMPERSAND -06FE;N # ARABIC SIGN SINDHI POSTPOSITION MEN -06FF;N # ARABIC LETTER HEH WITH INVERTED V -0700;N # SYRIAC END OF PARAGRAPH -0701;N # SYRIAC SUPRALINEAR FULL STOP -0702;N # SYRIAC SUBLINEAR FULL STOP -0703;N # SYRIAC SUPRALINEAR COLON -0704;N # SYRIAC SUBLINEAR COLON -0705;N # SYRIAC HORIZONTAL COLON -0706;N # SYRIAC COLON SKEWED LEFT -0707;N # SYRIAC COLON SKEWED RIGHT -0708;N # SYRIAC SUPRALINEAR COLON SKEWED LEFT -0709;N # SYRIAC SUBLINEAR COLON SKEWED RIGHT -070A;N # SYRIAC CONTRACTION -070B;N # SYRIAC HARKLEAN OBELUS -070C;N # SYRIAC HARKLEAN METOBELUS -070D;N # SYRIAC HARKLEAN ASTERISCUS -070F;N # SYRIAC ABBREVIATION MARK -0710;N # SYRIAC LETTER ALAPH -0711;N # SYRIAC LETTER SUPERSCRIPT ALAPH -0712;N # SYRIAC LETTER BETH -0713;N # SYRIAC LETTER GAMAL -0714;N # SYRIAC LETTER GAMAL GARSHUNI -0715;N # SYRIAC LETTER DALATH -0716;N # SYRIAC LETTER DOTLESS DALATH RISH -0717;N # SYRIAC LETTER HE -0718;N # SYRIAC LETTER WAW -0719;N # SYRIAC LETTER ZAIN -071A;N # SYRIAC LETTER HETH -071B;N # SYRIAC LETTER TETH -071C;N # SYRIAC LETTER TETH GARSHUNI -071D;N # SYRIAC LETTER YUDH -071E;N # SYRIAC LETTER YUDH HE -071F;N # SYRIAC LETTER KAPH -0720;N # SYRIAC LETTER LAMADH -0721;N # SYRIAC LETTER MIM -0722;N # SYRIAC LETTER NUN -0723;N # SYRIAC LETTER SEMKATH -0724;N # SYRIAC LETTER FINAL SEMKATH -0725;N # SYRIAC LETTER E -0726;N # SYRIAC LETTER PE -0727;N # SYRIAC LETTER REVERSED PE -0728;N # SYRIAC LETTER SADHE -0729;N # SYRIAC LETTER QAPH -072A;N # SYRIAC LETTER RISH -072B;N # SYRIAC LETTER SHIN -072C;N # SYRIAC LETTER TAW -072D;N # SYRIAC LETTER PERSIAN BHETH -072E;N # SYRIAC LETTER PERSIAN GHAMAL -072F;N # SYRIAC LETTER PERSIAN DHALATH -0730;N # SYRIAC PTHAHA ABOVE -0731;N # SYRIAC PTHAHA BELOW -0732;N # SYRIAC PTHAHA DOTTED -0733;N # SYRIAC ZQAPHA ABOVE -0734;N # SYRIAC ZQAPHA BELOW -0735;N # SYRIAC ZQAPHA DOTTED -0736;N # SYRIAC RBASA ABOVE -0737;N # SYRIAC RBASA BELOW -0738;N # SYRIAC DOTTED ZLAMA HORIZONTAL -0739;N # SYRIAC DOTTED ZLAMA ANGULAR -073A;N # SYRIAC HBASA ABOVE -073B;N # SYRIAC HBASA BELOW -073C;N # SYRIAC HBASA-ESASA DOTTED -073D;N # SYRIAC ESASA ABOVE -073E;N # SYRIAC ESASA BELOW -073F;N # SYRIAC RWAHA -0740;N # SYRIAC FEMININE DOT -0741;N # SYRIAC QUSHSHAYA -0742;N # SYRIAC RUKKAKHA -0743;N # SYRIAC TWO VERTICAL DOTS ABOVE -0744;N # SYRIAC TWO VERTICAL DOTS BELOW -0745;N # SYRIAC THREE DOTS ABOVE -0746;N # SYRIAC THREE DOTS BELOW -0747;N # SYRIAC OBLIQUE LINE ABOVE -0748;N # SYRIAC OBLIQUE LINE BELOW -0749;N # SYRIAC MUSIC -074A;N # SYRIAC BARREKH -074D;N # SYRIAC LETTER SOGDIAN ZHAIN -074E;N # SYRIAC LETTER SOGDIAN KHAPH -074F;N # SYRIAC LETTER SOGDIAN FE -0750;N # ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW -0751;N # ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE -0752;N # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW -0753;N # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE -0754;N # ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE -0755;N # ARABIC LETTER BEH WITH INVERTED SMALL V BELOW -0756;N # ARABIC LETTER BEH WITH SMALL V -0757;N # ARABIC LETTER HAH WITH TWO DOTS ABOVE -0758;N # ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW -0759;N # ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH -075A;N # ARABIC LETTER DAL WITH INVERTED SMALL V BELOW -075B;N # ARABIC LETTER REH WITH STROKE -075C;N # ARABIC LETTER SEEN WITH FOUR DOTS ABOVE -075D;N # ARABIC LETTER AIN WITH TWO DOTS ABOVE -075E;N # ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE -075F;N # ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE -0760;N # ARABIC LETTER FEH WITH TWO DOTS BELOW -0761;N # ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW -0762;N # ARABIC LETTER KEHEH WITH DOT ABOVE -0763;N # ARABIC LETTER KEHEH WITH THREE DOTS ABOVE -0764;N # ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW -0765;N # ARABIC LETTER MEEM WITH DOT ABOVE -0766;N # ARABIC LETTER MEEM WITH DOT BELOW -0767;N # ARABIC LETTER NOON WITH TWO DOTS BELOW -0768;N # ARABIC LETTER NOON WITH SMALL TAH -0769;N # ARABIC LETTER NOON WITH SMALL V -076A;N # ARABIC LETTER LAM WITH BAR -076B;N # ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE -076C;N # ARABIC LETTER REH WITH HAMZA ABOVE -076D;N # ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE -0780;N # THAANA LETTER HAA -0781;N # THAANA LETTER SHAVIYANI -0782;N # THAANA LETTER NOONU -0783;N # THAANA LETTER RAA -0784;N # THAANA LETTER BAA -0785;N # THAANA LETTER LHAVIYANI -0786;N # THAANA LETTER KAAFU -0787;N # THAANA LETTER ALIFU -0788;N # THAANA LETTER VAAVU -0789;N # THAANA LETTER MEEMU -078A;N # THAANA LETTER FAAFU -078B;N # THAANA LETTER DHAALU -078C;N # THAANA LETTER THAA -078D;N # THAANA LETTER LAAMU -078E;N # THAANA LETTER GAAFU -078F;N # THAANA LETTER GNAVIYANI -0790;N # THAANA LETTER SEENU -0791;N # THAANA LETTER DAVIYANI -0792;N # THAANA LETTER ZAVIYANI -0793;N # THAANA LETTER TAVIYANI -0794;N # THAANA LETTER YAA -0795;N # THAANA LETTER PAVIYANI -0796;N # THAANA LETTER JAVIYANI -0797;N # THAANA LETTER CHAVIYANI -0798;N # THAANA LETTER TTAA -0799;N # THAANA LETTER HHAA -079A;N # THAANA LETTER KHAA -079B;N # THAANA LETTER THAALU -079C;N # THAANA LETTER ZAA -079D;N # THAANA LETTER SHEENU -079E;N # THAANA LETTER SAADHU -079F;N # THAANA LETTER DAADHU -07A0;N # THAANA LETTER TO -07A1;N # THAANA LETTER ZO -07A2;N # THAANA LETTER AINU -07A3;N # THAANA LETTER GHAINU -07A4;N # THAANA LETTER QAAFU -07A5;N # THAANA LETTER WAAVU -07A6;N # THAANA ABAFILI -07A7;N # THAANA AABAAFILI -07A8;N # THAANA IBIFILI -07A9;N # THAANA EEBEEFILI -07AA;N # THAANA UBUFILI -07AB;N # THAANA OOBOOFILI -07AC;N # THAANA EBEFILI -07AD;N # THAANA EYBEYFILI -07AE;N # THAANA OBOFILI -07AF;N # THAANA OABOAFILI -07B0;N # THAANA SUKUN -07B1;N # THAANA LETTER NAA -0901;N # DEVANAGARI SIGN CANDRABINDU -0902;N # DEVANAGARI SIGN ANUSVARA -0903;N # DEVANAGARI SIGN VISARGA -0904;N # DEVANAGARI LETTER SHORT A -0905;N # DEVANAGARI LETTER A -0906;N # DEVANAGARI LETTER AA -0907;N # DEVANAGARI LETTER I -0908;N # DEVANAGARI LETTER II -0909;N # DEVANAGARI LETTER U -090A;N # DEVANAGARI LETTER UU -090B;N # DEVANAGARI LETTER VOCALIC R -090C;N # DEVANAGARI LETTER VOCALIC L -090D;N # DEVANAGARI LETTER CANDRA E -090E;N # DEVANAGARI LETTER SHORT E -090F;N # DEVANAGARI LETTER E -0910;N # DEVANAGARI LETTER AI -0911;N # DEVANAGARI LETTER CANDRA O -0912;N # DEVANAGARI LETTER SHORT O -0913;N # DEVANAGARI LETTER O -0914;N # DEVANAGARI LETTER AU -0915;N # DEVANAGARI LETTER KA -0916;N # DEVANAGARI LETTER KHA -0917;N # DEVANAGARI LETTER GA -0918;N # DEVANAGARI LETTER GHA -0919;N # DEVANAGARI LETTER NGA -091A;N # DEVANAGARI LETTER CA -091B;N # DEVANAGARI LETTER CHA -091C;N # DEVANAGARI LETTER JA -091D;N # DEVANAGARI LETTER JHA -091E;N # DEVANAGARI LETTER NYA -091F;N # DEVANAGARI LETTER TTA -0920;N # DEVANAGARI LETTER TTHA -0921;N # DEVANAGARI LETTER DDA -0922;N # DEVANAGARI LETTER DDHA -0923;N # DEVANAGARI LETTER NNA -0924;N # DEVANAGARI LETTER TA -0925;N # DEVANAGARI LETTER THA -0926;N # DEVANAGARI LETTER DA -0927;N # DEVANAGARI LETTER DHA -0928;N # DEVANAGARI LETTER NA -0929;N # DEVANAGARI LETTER NNNA -092A;N # DEVANAGARI LETTER PA -092B;N # DEVANAGARI LETTER PHA -092C;N # DEVANAGARI LETTER BA -092D;N # DEVANAGARI LETTER BHA -092E;N # DEVANAGARI LETTER MA -092F;N # DEVANAGARI LETTER YA -0930;N # DEVANAGARI LETTER RA -0931;N # DEVANAGARI LETTER RRA -0932;N # DEVANAGARI LETTER LA -0933;N # DEVANAGARI LETTER LLA -0934;N # DEVANAGARI LETTER LLLA -0935;N # DEVANAGARI LETTER VA -0936;N # DEVANAGARI LETTER SHA -0937;N # DEVANAGARI LETTER SSA -0938;N # DEVANAGARI LETTER SA -0939;N # DEVANAGARI LETTER HA -093C;N # DEVANAGARI SIGN NUKTA -093D;N # DEVANAGARI SIGN AVAGRAHA -093E;N # DEVANAGARI VOWEL SIGN AA -093F;N # DEVANAGARI VOWEL SIGN I -0940;N # DEVANAGARI VOWEL SIGN II -0941;N # DEVANAGARI VOWEL SIGN U -0942;N # DEVANAGARI VOWEL SIGN UU -0943;N # DEVANAGARI VOWEL SIGN VOCALIC R -0944;N # DEVANAGARI VOWEL SIGN VOCALIC RR -0945;N # DEVANAGARI VOWEL SIGN CANDRA E -0946;N # DEVANAGARI VOWEL SIGN SHORT E -0947;N # DEVANAGARI VOWEL SIGN E -0948;N # DEVANAGARI VOWEL SIGN AI -0949;N # DEVANAGARI VOWEL SIGN CANDRA O -094A;N # DEVANAGARI VOWEL SIGN SHORT O -094B;N # DEVANAGARI VOWEL SIGN O -094C;N # DEVANAGARI VOWEL SIGN AU -094D;N # DEVANAGARI SIGN VIRAMA -0950;N # DEVANAGARI OM -0951;N # DEVANAGARI STRESS SIGN UDATTA -0952;N # DEVANAGARI STRESS SIGN ANUDATTA -0953;N # DEVANAGARI GRAVE ACCENT -0954;N # DEVANAGARI ACUTE ACCENT -0958;N # DEVANAGARI LETTER QA -0959;N # DEVANAGARI LETTER KHHA -095A;N # DEVANAGARI LETTER GHHA -095B;N # DEVANAGARI LETTER ZA -095C;N # DEVANAGARI LETTER DDDHA -095D;N # DEVANAGARI LETTER RHA -095E;N # DEVANAGARI LETTER FA -095F;N # DEVANAGARI LETTER YYA -0960;N # DEVANAGARI LETTER VOCALIC RR -0961;N # DEVANAGARI LETTER VOCALIC LL -0962;N # DEVANAGARI VOWEL SIGN VOCALIC L -0963;N # DEVANAGARI VOWEL SIGN VOCALIC LL -0964;N # DEVANAGARI DANDA -0965;N # DEVANAGARI DOUBLE DANDA -0966;N # DEVANAGARI DIGIT ZERO -0967;N # DEVANAGARI DIGIT ONE -0968;N # DEVANAGARI DIGIT TWO -0969;N # DEVANAGARI DIGIT THREE -096A;N # DEVANAGARI DIGIT FOUR -096B;N # DEVANAGARI DIGIT FIVE -096C;N # DEVANAGARI DIGIT SIX -096D;N # DEVANAGARI DIGIT SEVEN -096E;N # DEVANAGARI DIGIT EIGHT -096F;N # DEVANAGARI DIGIT NINE -0970;N # DEVANAGARI ABBREVIATION SIGN -097D;N # DEVANAGARI LETTER GLOTTAL STOP -0981;N # BENGALI SIGN CANDRABINDU -0982;N # BENGALI SIGN ANUSVARA -0983;N # BENGALI SIGN VISARGA -0985;N # BENGALI LETTER A -0986;N # BENGALI LETTER AA -0987;N # BENGALI LETTER I -0988;N # BENGALI LETTER II -0989;N # BENGALI LETTER U -098A;N # BENGALI LETTER UU -098B;N # BENGALI LETTER VOCALIC R -098C;N # BENGALI LETTER VOCALIC L -098F;N # BENGALI LETTER E -0990;N # BENGALI LETTER AI -0993;N # BENGALI LETTER O -0994;N # BENGALI LETTER AU -0995;N # BENGALI LETTER KA -0996;N # BENGALI LETTER KHA -0997;N # BENGALI LETTER GA -0998;N # BENGALI LETTER GHA -0999;N # BENGALI LETTER NGA -099A;N # BENGALI LETTER CA -099B;N # BENGALI LETTER CHA -099C;N # BENGALI LETTER JA -099D;N # BENGALI LETTER JHA -099E;N # BENGALI LETTER NYA -099F;N # BENGALI LETTER TTA -09A0;N # BENGALI LETTER TTHA -09A1;N # BENGALI LETTER DDA -09A2;N # BENGALI LETTER DDHA -09A3;N # BENGALI LETTER NNA -09A4;N # BENGALI LETTER TA -09A5;N # BENGALI LETTER THA -09A6;N # BENGALI LETTER DA -09A7;N # BENGALI LETTER DHA -09A8;N # BENGALI LETTER NA -09AA;N # BENGALI LETTER PA -09AB;N # BENGALI LETTER PHA -09AC;N # BENGALI LETTER BA -09AD;N # BENGALI LETTER BHA -09AE;N # BENGALI LETTER MA -09AF;N # BENGALI LETTER YA -09B0;N # BENGALI LETTER RA -09B2;N # BENGALI LETTER LA -09B6;N # BENGALI LETTER SHA -09B7;N # BENGALI LETTER SSA -09B8;N # BENGALI LETTER SA -09B9;N # BENGALI LETTER HA -09BC;N # BENGALI SIGN NUKTA -09BD;N # BENGALI SIGN AVAGRAHA -09BE;N # BENGALI VOWEL SIGN AA -09BF;N # BENGALI VOWEL SIGN I -09C0;N # BENGALI VOWEL SIGN II -09C1;N # BENGALI VOWEL SIGN U -09C2;N # BENGALI VOWEL SIGN UU -09C3;N # BENGALI VOWEL SIGN VOCALIC R -09C4;N # BENGALI VOWEL SIGN VOCALIC RR -09C7;N # BENGALI VOWEL SIGN E -09C8;N # BENGALI VOWEL SIGN AI -09CB;N # BENGALI VOWEL SIGN O -09CC;N # BENGALI VOWEL SIGN AU -09CD;N # BENGALI SIGN VIRAMA -09CE;N # BENGALI LETTER KHANDA TA -09D7;N # BENGALI AU LENGTH MARK -09DC;N # BENGALI LETTER RRA -09DD;N # BENGALI LETTER RHA -09DF;N # BENGALI LETTER YYA -09E0;N # BENGALI LETTER VOCALIC RR -09E1;N # BENGALI LETTER VOCALIC LL -09E2;N # BENGALI VOWEL SIGN VOCALIC L -09E3;N # BENGALI VOWEL SIGN VOCALIC LL -09E6;N # BENGALI DIGIT ZERO -09E7;N # BENGALI DIGIT ONE -09E8;N # BENGALI DIGIT TWO -09E9;N # BENGALI DIGIT THREE -09EA;N # BENGALI DIGIT FOUR -09EB;N # BENGALI DIGIT FIVE -09EC;N # BENGALI DIGIT SIX -09ED;N # BENGALI DIGIT SEVEN -09EE;N # BENGALI DIGIT EIGHT -09EF;N # BENGALI DIGIT NINE -09F0;N # BENGALI LETTER RA WITH MIDDLE DIAGONAL -09F1;N # BENGALI LETTER RA WITH LOWER DIAGONAL -09F2;N # BENGALI RUPEE MARK -09F3;N # BENGALI RUPEE SIGN -09F4;N # BENGALI CURRENCY NUMERATOR ONE -09F5;N # BENGALI CURRENCY NUMERATOR TWO -09F6;N # BENGALI CURRENCY NUMERATOR THREE -09F7;N # BENGALI CURRENCY NUMERATOR FOUR -09F8;N # BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR -09F9;N # BENGALI CURRENCY DENOMINATOR SIXTEEN -09FA;N # BENGALI ISSHAR -0A01;N # GURMUKHI SIGN ADAK BINDI -0A02;N # GURMUKHI SIGN BINDI -0A03;N # GURMUKHI SIGN VISARGA -0A05;N # GURMUKHI LETTER A -0A06;N # GURMUKHI LETTER AA -0A07;N # GURMUKHI LETTER I -0A08;N # GURMUKHI LETTER II -0A09;N # GURMUKHI LETTER U -0A0A;N # GURMUKHI LETTER UU -0A0F;N # GURMUKHI LETTER EE -0A10;N # GURMUKHI LETTER AI -0A13;N # GURMUKHI LETTER OO -0A14;N # GURMUKHI LETTER AU -0A15;N # GURMUKHI LETTER KA -0A16;N # GURMUKHI LETTER KHA -0A17;N # GURMUKHI LETTER GA -0A18;N # GURMUKHI LETTER GHA -0A19;N # GURMUKHI LETTER NGA -0A1A;N # GURMUKHI LETTER CA -0A1B;N # GURMUKHI LETTER CHA -0A1C;N # GURMUKHI LETTER JA -0A1D;N # GURMUKHI LETTER JHA -0A1E;N # GURMUKHI LETTER NYA -0A1F;N # GURMUKHI LETTER TTA -0A20;N # GURMUKHI LETTER TTHA -0A21;N # GURMUKHI LETTER DDA -0A22;N # GURMUKHI LETTER DDHA -0A23;N # GURMUKHI LETTER NNA -0A24;N # GURMUKHI LETTER TA -0A25;N # GURMUKHI LETTER THA -0A26;N # GURMUKHI LETTER DA -0A27;N # GURMUKHI LETTER DHA -0A28;N # GURMUKHI LETTER NA -0A2A;N # GURMUKHI LETTER PA -0A2B;N # GURMUKHI LETTER PHA -0A2C;N # GURMUKHI LETTER BA -0A2D;N # GURMUKHI LETTER BHA -0A2E;N # GURMUKHI LETTER MA -0A2F;N # GURMUKHI LETTER YA -0A30;N # GURMUKHI LETTER RA -0A32;N # GURMUKHI LETTER LA -0A33;N # GURMUKHI LETTER LLA -0A35;N # GURMUKHI LETTER VA -0A36;N # GURMUKHI LETTER SHA -0A38;N # GURMUKHI LETTER SA -0A39;N # GURMUKHI LETTER HA -0A3C;N # GURMUKHI SIGN NUKTA -0A3E;N # GURMUKHI VOWEL SIGN AA -0A3F;N # GURMUKHI VOWEL SIGN I -0A40;N # GURMUKHI VOWEL SIGN II -0A41;N # GURMUKHI VOWEL SIGN U -0A42;N # GURMUKHI VOWEL SIGN UU -0A47;N # GURMUKHI VOWEL SIGN EE -0A48;N # GURMUKHI VOWEL SIGN AI -0A4B;N # GURMUKHI VOWEL SIGN OO -0A4C;N # GURMUKHI VOWEL SIGN AU -0A4D;N # GURMUKHI SIGN VIRAMA -0A59;N # GURMUKHI LETTER KHHA -0A5A;N # GURMUKHI LETTER GHHA -0A5B;N # GURMUKHI LETTER ZA -0A5C;N # GURMUKHI LETTER RRA -0A5E;N # GURMUKHI LETTER FA -0A66;N # GURMUKHI DIGIT ZERO -0A67;N # GURMUKHI DIGIT ONE -0A68;N # GURMUKHI DIGIT TWO -0A69;N # GURMUKHI DIGIT THREE -0A6A;N # GURMUKHI DIGIT FOUR -0A6B;N # GURMUKHI DIGIT FIVE -0A6C;N # GURMUKHI DIGIT SIX -0A6D;N # GURMUKHI DIGIT SEVEN -0A6E;N # GURMUKHI DIGIT EIGHT -0A6F;N # GURMUKHI DIGIT NINE -0A70;N # GURMUKHI TIPPI -0A71;N # GURMUKHI ADDAK -0A72;N # GURMUKHI IRI -0A73;N # GURMUKHI URA -0A74;N # GURMUKHI EK ONKAR -0A81;N # GUJARATI SIGN CANDRABINDU -0A82;N # GUJARATI SIGN ANUSVARA -0A83;N # GUJARATI SIGN VISARGA -0A85;N # GUJARATI LETTER A -0A86;N # GUJARATI LETTER AA -0A87;N # GUJARATI LETTER I -0A88;N # GUJARATI LETTER II -0A89;N # GUJARATI LETTER U -0A8A;N # GUJARATI LETTER UU -0A8B;N # GUJARATI LETTER VOCALIC R -0A8C;N # GUJARATI LETTER VOCALIC L -0A8D;N # GUJARATI VOWEL CANDRA E -0A8F;N # GUJARATI LETTER E -0A90;N # GUJARATI LETTER AI -0A91;N # GUJARATI VOWEL CANDRA O -0A93;N # GUJARATI LETTER O -0A94;N # GUJARATI LETTER AU -0A95;N # GUJARATI LETTER KA -0A96;N # GUJARATI LETTER KHA -0A97;N # GUJARATI LETTER GA -0A98;N # GUJARATI LETTER GHA -0A99;N # GUJARATI LETTER NGA -0A9A;N # GUJARATI LETTER CA -0A9B;N # GUJARATI LETTER CHA -0A9C;N # GUJARATI LETTER JA -0A9D;N # GUJARATI LETTER JHA -0A9E;N # GUJARATI LETTER NYA -0A9F;N # GUJARATI LETTER TTA -0AA0;N # GUJARATI LETTER TTHA -0AA1;N # GUJARATI LETTER DDA -0AA2;N # GUJARATI LETTER DDHA -0AA3;N # GUJARATI LETTER NNA -0AA4;N # GUJARATI LETTER TA -0AA5;N # GUJARATI LETTER THA -0AA6;N # GUJARATI LETTER DA -0AA7;N # GUJARATI LETTER DHA -0AA8;N # GUJARATI LETTER NA -0AAA;N # GUJARATI LETTER PA -0AAB;N # GUJARATI LETTER PHA -0AAC;N # GUJARATI LETTER BA -0AAD;N # GUJARATI LETTER BHA -0AAE;N # GUJARATI LETTER MA -0AAF;N # GUJARATI LETTER YA -0AB0;N # GUJARATI LETTER RA -0AB2;N # GUJARATI LETTER LA -0AB3;N # GUJARATI LETTER LLA -0AB5;N # GUJARATI LETTER VA -0AB6;N # GUJARATI LETTER SHA -0AB7;N # GUJARATI LETTER SSA -0AB8;N # GUJARATI LETTER SA -0AB9;N # GUJARATI LETTER HA -0ABC;N # GUJARATI SIGN NUKTA -0ABD;N # GUJARATI SIGN AVAGRAHA -0ABE;N # GUJARATI VOWEL SIGN AA -0ABF;N # GUJARATI VOWEL SIGN I -0AC0;N # GUJARATI VOWEL SIGN II -0AC1;N # GUJARATI VOWEL SIGN U -0AC2;N # GUJARATI VOWEL SIGN UU -0AC3;N # GUJARATI VOWEL SIGN VOCALIC R -0AC4;N # GUJARATI VOWEL SIGN VOCALIC RR -0AC5;N # GUJARATI VOWEL SIGN CANDRA E -0AC7;N # GUJARATI VOWEL SIGN E -0AC8;N # GUJARATI VOWEL SIGN AI -0AC9;N # GUJARATI VOWEL SIGN CANDRA O -0ACB;N # GUJARATI VOWEL SIGN O -0ACC;N # GUJARATI VOWEL SIGN AU -0ACD;N # GUJARATI SIGN VIRAMA -0AD0;N # GUJARATI OM -0AE0;N # GUJARATI LETTER VOCALIC RR -0AE1;N # GUJARATI LETTER VOCALIC LL -0AE2;N # GUJARATI VOWEL SIGN VOCALIC L -0AE3;N # GUJARATI VOWEL SIGN VOCALIC LL -0AE6;N # GUJARATI DIGIT ZERO -0AE7;N # GUJARATI DIGIT ONE -0AE8;N # GUJARATI DIGIT TWO -0AE9;N # GUJARATI DIGIT THREE -0AEA;N # GUJARATI DIGIT FOUR -0AEB;N # GUJARATI DIGIT FIVE -0AEC;N # GUJARATI DIGIT SIX -0AED;N # GUJARATI DIGIT SEVEN -0AEE;N # GUJARATI DIGIT EIGHT -0AEF;N # GUJARATI DIGIT NINE -0AF1;N # GUJARATI RUPEE SIGN -0B01;N # ORIYA SIGN CANDRABINDU -0B02;N # ORIYA SIGN ANUSVARA -0B03;N # ORIYA SIGN VISARGA -0B05;N # ORIYA LETTER A -0B06;N # ORIYA LETTER AA -0B07;N # ORIYA LETTER I -0B08;N # ORIYA LETTER II -0B09;N # ORIYA LETTER U -0B0A;N # ORIYA LETTER UU -0B0B;N # ORIYA LETTER VOCALIC R -0B0C;N # ORIYA LETTER VOCALIC L -0B0F;N # ORIYA LETTER E -0B10;N # ORIYA LETTER AI -0B13;N # ORIYA LETTER O -0B14;N # ORIYA LETTER AU -0B15;N # ORIYA LETTER KA -0B16;N # ORIYA LETTER KHA -0B17;N # ORIYA LETTER GA -0B18;N # ORIYA LETTER GHA -0B19;N # ORIYA LETTER NGA -0B1A;N # ORIYA LETTER CA -0B1B;N # ORIYA LETTER CHA -0B1C;N # ORIYA LETTER JA -0B1D;N # ORIYA LETTER JHA -0B1E;N # ORIYA LETTER NYA -0B1F;N # ORIYA LETTER TTA -0B20;N # ORIYA LETTER TTHA -0B21;N # ORIYA LETTER DDA -0B22;N # ORIYA LETTER DDHA -0B23;N # ORIYA LETTER NNA -0B24;N # ORIYA LETTER TA -0B25;N # ORIYA LETTER THA -0B26;N # ORIYA LETTER DA -0B27;N # ORIYA LETTER DHA -0B28;N # ORIYA LETTER NA -0B2A;N # ORIYA LETTER PA -0B2B;N # ORIYA LETTER PHA -0B2C;N # ORIYA LETTER BA -0B2D;N # ORIYA LETTER BHA -0B2E;N # ORIYA LETTER MA -0B2F;N # ORIYA LETTER YA -0B30;N # ORIYA LETTER RA -0B32;N # ORIYA LETTER LA -0B33;N # ORIYA LETTER LLA -0B35;N # ORIYA LETTER VA -0B36;N # ORIYA LETTER SHA -0B37;N # ORIYA LETTER SSA -0B38;N # ORIYA LETTER SA -0B39;N # ORIYA LETTER HA -0B3C;N # ORIYA SIGN NUKTA -0B3D;N # ORIYA SIGN AVAGRAHA -0B3E;N # ORIYA VOWEL SIGN AA -0B3F;N # ORIYA VOWEL SIGN I -0B40;N # ORIYA VOWEL SIGN II -0B41;N # ORIYA VOWEL SIGN U -0B42;N # ORIYA VOWEL SIGN UU -0B43;N # ORIYA VOWEL SIGN VOCALIC R -0B47;N # ORIYA VOWEL SIGN E -0B48;N # ORIYA VOWEL SIGN AI -0B4B;N # ORIYA VOWEL SIGN O -0B4C;N # ORIYA VOWEL SIGN AU -0B4D;N # ORIYA SIGN VIRAMA -0B56;N # ORIYA AI LENGTH MARK -0B57;N # ORIYA AU LENGTH MARK -0B5C;N # ORIYA LETTER RRA -0B5D;N # ORIYA LETTER RHA -0B5F;N # ORIYA LETTER YYA -0B60;N # ORIYA LETTER VOCALIC RR -0B61;N # ORIYA LETTER VOCALIC LL -0B66;N # ORIYA DIGIT ZERO -0B67;N # ORIYA DIGIT ONE -0B68;N # ORIYA DIGIT TWO -0B69;N # ORIYA DIGIT THREE -0B6A;N # ORIYA DIGIT FOUR -0B6B;N # ORIYA DIGIT FIVE -0B6C;N # ORIYA DIGIT SIX -0B6D;N # ORIYA DIGIT SEVEN -0B6E;N # ORIYA DIGIT EIGHT -0B6F;N # ORIYA DIGIT NINE -0B70;N # ORIYA ISSHAR -0B71;N # ORIYA LETTER WA -0B82;N # TAMIL SIGN ANUSVARA -0B83;N # TAMIL SIGN VISARGA -0B85;N # TAMIL LETTER A -0B86;N # TAMIL LETTER AA -0B87;N # TAMIL LETTER I -0B88;N # TAMIL LETTER II -0B89;N # TAMIL LETTER U -0B8A;N # TAMIL LETTER UU -0B8E;N # TAMIL LETTER E -0B8F;N # TAMIL LETTER EE -0B90;N # TAMIL LETTER AI -0B92;N # TAMIL LETTER O -0B93;N # TAMIL LETTER OO -0B94;N # TAMIL LETTER AU -0B95;N # TAMIL LETTER KA -0B99;N # TAMIL LETTER NGA -0B9A;N # TAMIL LETTER CA -0B9C;N # TAMIL LETTER JA -0B9E;N # TAMIL LETTER NYA -0B9F;N # TAMIL LETTER TTA -0BA3;N # TAMIL LETTER NNA -0BA4;N # TAMIL LETTER TA -0BA8;N # TAMIL LETTER NA -0BA9;N # TAMIL LETTER NNNA -0BAA;N # TAMIL LETTER PA -0BAE;N # TAMIL LETTER MA -0BAF;N # TAMIL LETTER YA -0BB0;N # TAMIL LETTER RA -0BB1;N # TAMIL LETTER RRA -0BB2;N # TAMIL LETTER LA -0BB3;N # TAMIL LETTER LLA -0BB4;N # TAMIL LETTER LLLA -0BB5;N # TAMIL LETTER VA -0BB6;N # TAMIL LETTER SHA -0BB7;N # TAMIL LETTER SSA -0BB8;N # TAMIL LETTER SA -0BB9;N # TAMIL LETTER HA -0BBE;N # TAMIL VOWEL SIGN AA -0BBF;N # TAMIL VOWEL SIGN I -0BC0;N # TAMIL VOWEL SIGN II -0BC1;N # TAMIL VOWEL SIGN U -0BC2;N # TAMIL VOWEL SIGN UU -0BC6;N # TAMIL VOWEL SIGN E -0BC7;N # TAMIL VOWEL SIGN EE -0BC8;N # TAMIL VOWEL SIGN AI -0BCA;N # TAMIL VOWEL SIGN O -0BCB;N # TAMIL VOWEL SIGN OO -0BCC;N # TAMIL VOWEL SIGN AU -0BCD;N # TAMIL SIGN VIRAMA -0BD7;N # TAMIL AU LENGTH MARK -0BE6;N # TAMIL DIGIT ZERO -0BE7;N # TAMIL DIGIT ONE -0BE8;N # TAMIL DIGIT TWO -0BE9;N # TAMIL DIGIT THREE -0BEA;N # TAMIL DIGIT FOUR -0BEB;N # TAMIL DIGIT FIVE -0BEC;N # TAMIL DIGIT SIX -0BED;N # TAMIL DIGIT SEVEN -0BEE;N # TAMIL DIGIT EIGHT -0BEF;N # TAMIL DIGIT NINE -0BF0;N # TAMIL NUMBER TEN -0BF1;N # TAMIL NUMBER ONE HUNDRED -0BF2;N # TAMIL NUMBER ONE THOUSAND -0BF3;N # TAMIL DAY SIGN -0BF4;N # TAMIL MONTH SIGN -0BF5;N # TAMIL YEAR SIGN -0BF6;N # TAMIL DEBIT SIGN -0BF7;N # TAMIL CREDIT SIGN -0BF8;N # TAMIL AS ABOVE SIGN -0BF9;N # TAMIL RUPEE SIGN -0BFA;N # TAMIL NUMBER SIGN -0C01;N # TELUGU SIGN CANDRABINDU -0C02;N # TELUGU SIGN ANUSVARA -0C03;N # TELUGU SIGN VISARGA -0C05;N # TELUGU LETTER A -0C06;N # TELUGU LETTER AA -0C07;N # TELUGU LETTER I -0C08;N # TELUGU LETTER II -0C09;N # TELUGU LETTER U -0C0A;N # TELUGU LETTER UU -0C0B;N # TELUGU LETTER VOCALIC R -0C0C;N # TELUGU LETTER VOCALIC L -0C0E;N # TELUGU LETTER E -0C0F;N # TELUGU LETTER EE -0C10;N # TELUGU LETTER AI -0C12;N # TELUGU LETTER O -0C13;N # TELUGU LETTER OO -0C14;N # TELUGU LETTER AU -0C15;N # TELUGU LETTER KA -0C16;N # TELUGU LETTER KHA -0C17;N # TELUGU LETTER GA -0C18;N # TELUGU LETTER GHA -0C19;N # TELUGU LETTER NGA -0C1A;N # TELUGU LETTER CA -0C1B;N # TELUGU LETTER CHA -0C1C;N # TELUGU LETTER JA -0C1D;N # TELUGU LETTER JHA -0C1E;N # TELUGU LETTER NYA -0C1F;N # TELUGU LETTER TTA -0C20;N # TELUGU LETTER TTHA -0C21;N # TELUGU LETTER DDA -0C22;N # TELUGU LETTER DDHA -0C23;N # TELUGU LETTER NNA -0C24;N # TELUGU LETTER TA -0C25;N # TELUGU LETTER THA -0C26;N # TELUGU LETTER DA -0C27;N # TELUGU LETTER DHA -0C28;N # TELUGU LETTER NA -0C2A;N # TELUGU LETTER PA -0C2B;N # TELUGU LETTER PHA -0C2C;N # TELUGU LETTER BA -0C2D;N # TELUGU LETTER BHA -0C2E;N # TELUGU LETTER MA -0C2F;N # TELUGU LETTER YA -0C30;N # TELUGU LETTER RA -0C31;N # TELUGU LETTER RRA -0C32;N # TELUGU LETTER LA -0C33;N # TELUGU LETTER LLA -0C35;N # TELUGU LETTER VA -0C36;N # TELUGU LETTER SHA -0C37;N # TELUGU LETTER SSA -0C38;N # TELUGU LETTER SA -0C39;N # TELUGU LETTER HA -0C3E;N # TELUGU VOWEL SIGN AA -0C3F;N # TELUGU VOWEL SIGN I -0C40;N # TELUGU VOWEL SIGN II -0C41;N # TELUGU VOWEL SIGN U -0C42;N # TELUGU VOWEL SIGN UU -0C43;N # TELUGU VOWEL SIGN VOCALIC R -0C44;N # TELUGU VOWEL SIGN VOCALIC RR -0C46;N # TELUGU VOWEL SIGN E -0C47;N # TELUGU VOWEL SIGN EE -0C48;N # TELUGU VOWEL SIGN AI -0C4A;N # TELUGU VOWEL SIGN O -0C4B;N # TELUGU VOWEL SIGN OO -0C4C;N # TELUGU VOWEL SIGN AU -0C4D;N # TELUGU SIGN VIRAMA -0C55;N # TELUGU LENGTH MARK -0C56;N # TELUGU AI LENGTH MARK -0C60;N # TELUGU LETTER VOCALIC RR -0C61;N # TELUGU LETTER VOCALIC LL -0C66;N # TELUGU DIGIT ZERO -0C67;N # TELUGU DIGIT ONE -0C68;N # TELUGU DIGIT TWO -0C69;N # TELUGU DIGIT THREE -0C6A;N # TELUGU DIGIT FOUR -0C6B;N # TELUGU DIGIT FIVE -0C6C;N # TELUGU DIGIT SIX -0C6D;N # TELUGU DIGIT SEVEN -0C6E;N # TELUGU DIGIT EIGHT -0C6F;N # TELUGU DIGIT NINE -0C82;N # KANNADA SIGN ANUSVARA -0C83;N # KANNADA SIGN VISARGA -0C85;N # KANNADA LETTER A -0C86;N # KANNADA LETTER AA -0C87;N # KANNADA LETTER I -0C88;N # KANNADA LETTER II -0C89;N # KANNADA LETTER U -0C8A;N # KANNADA LETTER UU -0C8B;N # KANNADA LETTER VOCALIC R -0C8C;N # KANNADA LETTER VOCALIC L -0C8E;N # KANNADA LETTER E -0C8F;N # KANNADA LETTER EE -0C90;N # KANNADA LETTER AI -0C92;N # KANNADA LETTER O -0C93;N # KANNADA LETTER OO -0C94;N # KANNADA LETTER AU -0C95;N # KANNADA LETTER KA -0C96;N # KANNADA LETTER KHA -0C97;N # KANNADA LETTER GA -0C98;N # KANNADA LETTER GHA -0C99;N # KANNADA LETTER NGA -0C9A;N # KANNADA LETTER CA -0C9B;N # KANNADA LETTER CHA -0C9C;N # KANNADA LETTER JA -0C9D;N # KANNADA LETTER JHA -0C9E;N # KANNADA LETTER NYA -0C9F;N # KANNADA LETTER TTA -0CA0;N # KANNADA LETTER TTHA -0CA1;N # KANNADA LETTER DDA -0CA2;N # KANNADA LETTER DDHA -0CA3;N # KANNADA LETTER NNA -0CA4;N # KANNADA LETTER TA -0CA5;N # KANNADA LETTER THA -0CA6;N # KANNADA LETTER DA -0CA7;N # KANNADA LETTER DHA -0CA8;N # KANNADA LETTER NA -0CAA;N # KANNADA LETTER PA -0CAB;N # KANNADA LETTER PHA -0CAC;N # KANNADA LETTER BA -0CAD;N # KANNADA LETTER BHA -0CAE;N # KANNADA LETTER MA -0CAF;N # KANNADA LETTER YA -0CB0;N # KANNADA LETTER RA -0CB1;N # KANNADA LETTER RRA -0CB2;N # KANNADA LETTER LA -0CB3;N # KANNADA LETTER LLA -0CB5;N # KANNADA LETTER VA -0CB6;N # KANNADA LETTER SHA -0CB7;N # KANNADA LETTER SSA -0CB8;N # KANNADA LETTER SA -0CB9;N # KANNADA LETTER HA -0CBC;N # KANNADA SIGN NUKTA -0CBD;N # KANNADA SIGN AVAGRAHA -0CBE;N # KANNADA VOWEL SIGN AA -0CBF;N # KANNADA VOWEL SIGN I -0CC0;N # KANNADA VOWEL SIGN II -0CC1;N # KANNADA VOWEL SIGN U -0CC2;N # KANNADA VOWEL SIGN UU -0CC3;N # KANNADA VOWEL SIGN VOCALIC R -0CC4;N # KANNADA VOWEL SIGN VOCALIC RR -0CC6;N # KANNADA VOWEL SIGN E -0CC7;N # KANNADA VOWEL SIGN EE -0CC8;N # KANNADA VOWEL SIGN AI -0CCA;N # KANNADA VOWEL SIGN O -0CCB;N # KANNADA VOWEL SIGN OO -0CCC;N # KANNADA VOWEL SIGN AU -0CCD;N # KANNADA SIGN VIRAMA -0CD5;N # KANNADA LENGTH MARK -0CD6;N # KANNADA AI LENGTH MARK -0CDE;N # KANNADA LETTER FA -0CE0;N # KANNADA LETTER VOCALIC RR -0CE1;N # KANNADA LETTER VOCALIC LL -0CE6;N # KANNADA DIGIT ZERO -0CE7;N # KANNADA DIGIT ONE -0CE8;N # KANNADA DIGIT TWO -0CE9;N # KANNADA DIGIT THREE -0CEA;N # KANNADA DIGIT FOUR -0CEB;N # KANNADA DIGIT FIVE -0CEC;N # KANNADA DIGIT SIX -0CED;N # KANNADA DIGIT SEVEN -0CEE;N # KANNADA DIGIT EIGHT -0CEF;N # KANNADA DIGIT NINE -0D02;N # MALAYALAM SIGN ANUSVARA -0D03;N # MALAYALAM SIGN VISARGA -0D05;N # MALAYALAM LETTER A -0D06;N # MALAYALAM LETTER AA -0D07;N # MALAYALAM LETTER I -0D08;N # MALAYALAM LETTER II -0D09;N # MALAYALAM LETTER U -0D0A;N # MALAYALAM LETTER UU -0D0B;N # MALAYALAM LETTER VOCALIC R -0D0C;N # MALAYALAM LETTER VOCALIC L -0D0E;N # MALAYALAM LETTER E -0D0F;N # MALAYALAM LETTER EE -0D10;N # MALAYALAM LETTER AI -0D12;N # MALAYALAM LETTER O -0D13;N # MALAYALAM LETTER OO -0D14;N # MALAYALAM LETTER AU -0D15;N # MALAYALAM LETTER KA -0D16;N # MALAYALAM LETTER KHA -0D17;N # MALAYALAM LETTER GA -0D18;N # MALAYALAM LETTER GHA -0D19;N # MALAYALAM LETTER NGA -0D1A;N # MALAYALAM LETTER CA -0D1B;N # MALAYALAM LETTER CHA -0D1C;N # MALAYALAM LETTER JA -0D1D;N # MALAYALAM LETTER JHA -0D1E;N # MALAYALAM LETTER NYA -0D1F;N # MALAYALAM LETTER TTA -0D20;N # MALAYALAM LETTER TTHA -0D21;N # MALAYALAM LETTER DDA -0D22;N # MALAYALAM LETTER DDHA -0D23;N # MALAYALAM LETTER NNA -0D24;N # MALAYALAM LETTER TA -0D25;N # MALAYALAM LETTER THA -0D26;N # MALAYALAM LETTER DA -0D27;N # MALAYALAM LETTER DHA -0D28;N # MALAYALAM LETTER NA -0D2A;N # MALAYALAM LETTER PA -0D2B;N # MALAYALAM LETTER PHA -0D2C;N # MALAYALAM LETTER BA -0D2D;N # MALAYALAM LETTER BHA -0D2E;N # MALAYALAM LETTER MA -0D2F;N # MALAYALAM LETTER YA -0D30;N # MALAYALAM LETTER RA -0D31;N # MALAYALAM LETTER RRA -0D32;N # MALAYALAM LETTER LA -0D33;N # MALAYALAM LETTER LLA -0D34;N # MALAYALAM LETTER LLLA -0D35;N # MALAYALAM LETTER VA -0D36;N # MALAYALAM LETTER SHA -0D37;N # MALAYALAM LETTER SSA -0D38;N # MALAYALAM LETTER SA -0D39;N # MALAYALAM LETTER HA -0D3E;N # MALAYALAM VOWEL SIGN AA -0D3F;N # MALAYALAM VOWEL SIGN I -0D40;N # MALAYALAM VOWEL SIGN II -0D41;N # MALAYALAM VOWEL SIGN U -0D42;N # MALAYALAM VOWEL SIGN UU -0D43;N # MALAYALAM VOWEL SIGN VOCALIC R -0D46;N # MALAYALAM VOWEL SIGN E -0D47;N # MALAYALAM VOWEL SIGN EE -0D48;N # MALAYALAM VOWEL SIGN AI -0D4A;N # MALAYALAM VOWEL SIGN O -0D4B;N # MALAYALAM VOWEL SIGN OO -0D4C;N # MALAYALAM VOWEL SIGN AU -0D4D;N # MALAYALAM SIGN VIRAMA -0D57;N # MALAYALAM AU LENGTH MARK -0D60;N # MALAYALAM LETTER VOCALIC RR -0D61;N # MALAYALAM LETTER VOCALIC LL -0D66;N # MALAYALAM DIGIT ZERO -0D67;N # MALAYALAM DIGIT ONE -0D68;N # MALAYALAM DIGIT TWO -0D69;N # MALAYALAM DIGIT THREE -0D6A;N # MALAYALAM DIGIT FOUR -0D6B;N # MALAYALAM DIGIT FIVE -0D6C;N # MALAYALAM DIGIT SIX -0D6D;N # MALAYALAM DIGIT SEVEN -0D6E;N # MALAYALAM DIGIT EIGHT -0D6F;N # MALAYALAM DIGIT NINE -0D82;N # SINHALA SIGN ANUSVARAYA -0D83;N # SINHALA SIGN VISARGAYA -0D85;N # SINHALA LETTER AYANNA -0D86;N # SINHALA LETTER AAYANNA -0D87;N # SINHALA LETTER AEYANNA -0D88;N # SINHALA LETTER AEEYANNA -0D89;N # SINHALA LETTER IYANNA -0D8A;N # SINHALA LETTER IIYANNA -0D8B;N # SINHALA LETTER UYANNA -0D8C;N # SINHALA LETTER UUYANNA -0D8D;N # SINHALA LETTER IRUYANNA -0D8E;N # SINHALA LETTER IRUUYANNA -0D8F;N # SINHALA LETTER ILUYANNA -0D90;N # SINHALA LETTER ILUUYANNA -0D91;N # SINHALA LETTER EYANNA -0D92;N # SINHALA LETTER EEYANNA -0D93;N # SINHALA LETTER AIYANNA -0D94;N # SINHALA LETTER OYANNA -0D95;N # SINHALA LETTER OOYANNA -0D96;N # SINHALA LETTER AUYANNA -0D9A;N # SINHALA LETTER ALPAPRAANA KAYANNA -0D9B;N # SINHALA LETTER MAHAAPRAANA KAYANNA -0D9C;N # SINHALA LETTER ALPAPRAANA GAYANNA -0D9D;N # SINHALA LETTER MAHAAPRAANA GAYANNA -0D9E;N # SINHALA LETTER KANTAJA NAASIKYAYA -0D9F;N # SINHALA LETTER SANYAKA GAYANNA -0DA0;N # SINHALA LETTER ALPAPRAANA CAYANNA -0DA1;N # SINHALA LETTER MAHAAPRAANA CAYANNA -0DA2;N # SINHALA LETTER ALPAPRAANA JAYANNA -0DA3;N # SINHALA LETTER MAHAAPRAANA JAYANNA -0DA4;N # SINHALA LETTER TAALUJA NAASIKYAYA -0DA5;N # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA -0DA6;N # SINHALA LETTER SANYAKA JAYANNA -0DA7;N # SINHALA LETTER ALPAPRAANA TTAYANNA -0DA8;N # SINHALA LETTER MAHAAPRAANA TTAYANNA -0DA9;N # SINHALA LETTER ALPAPRAANA DDAYANNA -0DAA;N # SINHALA LETTER MAHAAPRAANA DDAYANNA -0DAB;N # SINHALA LETTER MUURDHAJA NAYANNA -0DAC;N # SINHALA LETTER SANYAKA DDAYANNA -0DAD;N # SINHALA LETTER ALPAPRAANA TAYANNA -0DAE;N # SINHALA LETTER MAHAAPRAANA TAYANNA -0DAF;N # SINHALA LETTER ALPAPRAANA DAYANNA -0DB0;N # SINHALA LETTER MAHAAPRAANA DAYANNA -0DB1;N # SINHALA LETTER DANTAJA NAYANNA -0DB3;N # SINHALA LETTER SANYAKA DAYANNA -0DB4;N # SINHALA LETTER ALPAPRAANA PAYANNA -0DB5;N # SINHALA LETTER MAHAAPRAANA PAYANNA -0DB6;N # SINHALA LETTER ALPAPRAANA BAYANNA -0DB7;N # SINHALA LETTER MAHAAPRAANA BAYANNA -0DB8;N # SINHALA LETTER MAYANNA -0DB9;N # SINHALA LETTER AMBA BAYANNA -0DBA;N # SINHALA LETTER YAYANNA -0DBB;N # SINHALA LETTER RAYANNA -0DBD;N # SINHALA LETTER DANTAJA LAYANNA -0DC0;N # SINHALA LETTER VAYANNA -0DC1;N # SINHALA LETTER TAALUJA SAYANNA -0DC2;N # SINHALA LETTER MUURDHAJA SAYANNA -0DC3;N # SINHALA LETTER DANTAJA SAYANNA -0DC4;N # SINHALA LETTER HAYANNA -0DC5;N # SINHALA LETTER MUURDHAJA LAYANNA -0DC6;N # SINHALA LETTER FAYANNA -0DCA;N # SINHALA SIGN AL-LAKUNA -0DCF;N # SINHALA VOWEL SIGN AELA-PILLA -0DD0;N # SINHALA VOWEL SIGN KETTI AEDA-PILLA -0DD1;N # SINHALA VOWEL SIGN DIGA AEDA-PILLA -0DD2;N # SINHALA VOWEL SIGN KETTI IS-PILLA -0DD3;N # SINHALA VOWEL SIGN DIGA IS-PILLA -0DD4;N # SINHALA VOWEL SIGN KETTI PAA-PILLA -0DD6;N # SINHALA VOWEL SIGN DIGA PAA-PILLA -0DD8;N # SINHALA VOWEL SIGN GAETTA-PILLA -0DD9;N # SINHALA VOWEL SIGN KOMBUVA -0DDA;N # SINHALA VOWEL SIGN DIGA KOMBUVA -0DDB;N # SINHALA VOWEL SIGN KOMBU DEKA -0DDC;N # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA -0DDD;N # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA -0DDE;N # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA -0DDF;N # SINHALA VOWEL SIGN GAYANUKITTA -0DF2;N # SINHALA VOWEL SIGN DIGA GAETTA-PILLA -0DF3;N # SINHALA VOWEL SIGN DIGA GAYANUKITTA -0DF4;N # SINHALA PUNCTUATION KUNDDALIYA -0E01;N # THAI CHARACTER KO KAI -0E02;N # THAI CHARACTER KHO KHAI -0E03;N # THAI CHARACTER KHO KHUAT -0E04;N # THAI CHARACTER KHO KHWAI -0E05;N # THAI CHARACTER KHO KHON -0E06;N # THAI CHARACTER KHO RAKHANG -0E07;N # THAI CHARACTER NGO NGU -0E08;N # THAI CHARACTER CHO CHAN -0E09;N # THAI CHARACTER CHO CHING -0E0A;N # THAI CHARACTER CHO CHANG -0E0B;N # THAI CHARACTER SO SO -0E0C;N # THAI CHARACTER CHO CHOE -0E0D;N # THAI CHARACTER YO YING -0E0E;N # THAI CHARACTER DO CHADA -0E0F;N # THAI CHARACTER TO PATAK -0E10;N # THAI CHARACTER THO THAN -0E11;N # THAI CHARACTER THO NANGMONTHO -0E12;N # THAI CHARACTER THO PHUTHAO -0E13;N # THAI CHARACTER NO NEN -0E14;N # THAI CHARACTER DO DEK -0E15;N # THAI CHARACTER TO TAO -0E16;N # THAI CHARACTER THO THUNG -0E17;N # THAI CHARACTER THO THAHAN -0E18;N # THAI CHARACTER THO THONG -0E19;N # THAI CHARACTER NO NU -0E1A;N # THAI CHARACTER BO BAIMAI -0E1B;N # THAI CHARACTER PO PLA -0E1C;N # THAI CHARACTER PHO PHUNG -0E1D;N # THAI CHARACTER FO FA -0E1E;N # THAI CHARACTER PHO PHAN -0E1F;N # THAI CHARACTER FO FAN -0E20;N # THAI CHARACTER PHO SAMPHAO -0E21;N # THAI CHARACTER MO MA -0E22;N # THAI CHARACTER YO YAK -0E23;N # THAI CHARACTER RO RUA -0E24;N # THAI CHARACTER RU -0E25;N # THAI CHARACTER LO LING -0E26;N # THAI CHARACTER LU -0E27;N # THAI CHARACTER WO WAEN -0E28;N # THAI CHARACTER SO SALA -0E29;N # THAI CHARACTER SO RUSI -0E2A;N # THAI CHARACTER SO SUA -0E2B;N # THAI CHARACTER HO HIP -0E2C;N # THAI CHARACTER LO CHULA -0E2D;N # THAI CHARACTER O ANG -0E2E;N # THAI CHARACTER HO NOKHUK -0E2F;N # THAI CHARACTER PAIYANNOI -0E30;N # THAI CHARACTER SARA A -0E31;N # THAI CHARACTER MAI HAN-AKAT -0E32;N # THAI CHARACTER SARA AA -0E33;N # THAI CHARACTER SARA AM -0E34;N # THAI CHARACTER SARA I -0E35;N # THAI CHARACTER SARA II -0E36;N # THAI CHARACTER SARA UE -0E37;N # THAI CHARACTER SARA UEE -0E38;N # THAI CHARACTER SARA U -0E39;N # THAI CHARACTER SARA UU -0E3A;N # THAI CHARACTER PHINTHU -0E3F;N # THAI CURRENCY SYMBOL BAHT -0E40;N # THAI CHARACTER SARA E -0E41;N # THAI CHARACTER SARA AE -0E42;N # THAI CHARACTER SARA O -0E43;N # THAI CHARACTER SARA AI MAIMUAN -0E44;N # THAI CHARACTER SARA AI MAIMALAI -0E45;N # THAI CHARACTER LAKKHANGYAO -0E46;N # THAI CHARACTER MAIYAMOK -0E47;N # THAI CHARACTER MAITAIKHU -0E48;N # THAI CHARACTER MAI EK -0E49;N # THAI CHARACTER MAI THO -0E4A;N # THAI CHARACTER MAI TRI -0E4B;N # THAI CHARACTER MAI CHATTAWA -0E4C;N # THAI CHARACTER THANTHAKHAT -0E4D;N # THAI CHARACTER NIKHAHIT -0E4E;N # THAI CHARACTER YAMAKKAN -0E4F;N # THAI CHARACTER FONGMAN -0E50;N # THAI DIGIT ZERO -0E51;N # THAI DIGIT ONE -0E52;N # THAI DIGIT TWO -0E53;N # THAI DIGIT THREE -0E54;N # THAI DIGIT FOUR -0E55;N # THAI DIGIT FIVE -0E56;N # THAI DIGIT SIX -0E57;N # THAI DIGIT SEVEN -0E58;N # THAI DIGIT EIGHT -0E59;N # THAI DIGIT NINE -0E5A;N # THAI CHARACTER ANGKHANKHU -0E5B;N # THAI CHARACTER KHOMUT -0E81;N # LAO LETTER KO -0E82;N # LAO LETTER KHO SUNG -0E84;N # LAO LETTER KHO TAM -0E87;N # LAO LETTER NGO -0E88;N # LAO LETTER CO -0E8A;N # LAO LETTER SO TAM -0E8D;N # LAO LETTER NYO -0E94;N # LAO LETTER DO -0E95;N # LAO LETTER TO -0E96;N # LAO LETTER THO SUNG -0E97;N # LAO LETTER THO TAM -0E99;N # LAO LETTER NO -0E9A;N # LAO LETTER BO -0E9B;N # LAO LETTER PO -0E9C;N # LAO LETTER PHO SUNG -0E9D;N # LAO LETTER FO TAM -0E9E;N # LAO LETTER PHO TAM -0E9F;N # LAO LETTER FO SUNG -0EA1;N # LAO LETTER MO -0EA2;N # LAO LETTER YO -0EA3;N # LAO LETTER LO LING -0EA5;N # LAO LETTER LO LOOT -0EA7;N # LAO LETTER WO -0EAA;N # LAO LETTER SO SUNG -0EAB;N # LAO LETTER HO SUNG -0EAD;N # LAO LETTER O -0EAE;N # LAO LETTER HO TAM -0EAF;N # LAO ELLIPSIS -0EB0;N # LAO VOWEL SIGN A -0EB1;N # LAO VOWEL SIGN MAI KAN -0EB2;N # LAO VOWEL SIGN AA -0EB3;N # LAO VOWEL SIGN AM -0EB4;N # LAO VOWEL SIGN I -0EB5;N # LAO VOWEL SIGN II -0EB6;N # LAO VOWEL SIGN Y -0EB7;N # LAO VOWEL SIGN YY -0EB8;N # LAO VOWEL SIGN U -0EB9;N # LAO VOWEL SIGN UU -0EBB;N # LAO VOWEL SIGN MAI KON -0EBC;N # LAO SEMIVOWEL SIGN LO -0EBD;N # LAO SEMIVOWEL SIGN NYO -0EC0;N # LAO VOWEL SIGN E -0EC1;N # LAO VOWEL SIGN EI -0EC2;N # LAO VOWEL SIGN O -0EC3;N # LAO VOWEL SIGN AY -0EC4;N # LAO VOWEL SIGN AI -0EC6;N # LAO KO LA -0EC8;N # LAO TONE MAI EK -0EC9;N # LAO TONE MAI THO -0ECA;N # LAO TONE MAI TI -0ECB;N # LAO TONE MAI CATAWA -0ECC;N # LAO CANCELLATION MARK -0ECD;N # LAO NIGGAHITA -0ED0;N # LAO DIGIT ZERO -0ED1;N # LAO DIGIT ONE -0ED2;N # LAO DIGIT TWO -0ED3;N # LAO DIGIT THREE -0ED4;N # LAO DIGIT FOUR -0ED5;N # LAO DIGIT FIVE -0ED6;N # LAO DIGIT SIX -0ED7;N # LAO DIGIT SEVEN -0ED8;N # LAO DIGIT EIGHT -0ED9;N # LAO DIGIT NINE -0EDC;N # LAO HO NO -0EDD;N # LAO HO MO -0F00;N # TIBETAN SYLLABLE OM -0F01;N # TIBETAN MARK GTER YIG MGO TRUNCATED A -0F02;N # TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA -0F03;N # TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA -0F04;N # TIBETAN MARK INITIAL YIG MGO MDUN MA -0F05;N # TIBETAN MARK CLOSING YIG MGO SGAB MA -0F06;N # TIBETAN MARK CARET YIG MGO PHUR SHAD MA -0F07;N # TIBETAN MARK YIG MGO TSHEG SHAD MA -0F08;N # TIBETAN MARK SBRUL SHAD -0F09;N # TIBETAN MARK BSKUR YIG MGO -0F0A;N # TIBETAN MARK BKA- SHOG YIG MGO -0F0B;N # TIBETAN MARK INTERSYLLABIC TSHEG -0F0C;N # TIBETAN MARK DELIMITER TSHEG BSTAR -0F0D;N # TIBETAN MARK SHAD -0F0E;N # TIBETAN MARK NYIS SHAD -0F0F;N # TIBETAN MARK TSHEG SHAD -0F10;N # TIBETAN MARK NYIS TSHEG SHAD -0F11;N # TIBETAN MARK RIN CHEN SPUNGS SHAD -0F12;N # TIBETAN MARK RGYA GRAM SHAD -0F13;N # TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN -0F14;N # TIBETAN MARK GTER TSHEG -0F15;N # TIBETAN LOGOTYPE SIGN CHAD RTAGS -0F16;N # TIBETAN LOGOTYPE SIGN LHAG RTAGS -0F17;N # TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS -0F18;N # TIBETAN ASTROLOGICAL SIGN -KHYUD PA -0F19;N # TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS -0F1A;N # TIBETAN SIGN RDEL DKAR GCIG -0F1B;N # TIBETAN SIGN RDEL DKAR GNYIS -0F1C;N # TIBETAN SIGN RDEL DKAR GSUM -0F1D;N # TIBETAN SIGN RDEL NAG GCIG -0F1E;N # TIBETAN SIGN RDEL NAG GNYIS -0F1F;N # TIBETAN SIGN RDEL DKAR RDEL NAG -0F20;N # TIBETAN DIGIT ZERO -0F21;N # TIBETAN DIGIT ONE -0F22;N # TIBETAN DIGIT TWO -0F23;N # TIBETAN DIGIT THREE -0F24;N # TIBETAN DIGIT FOUR -0F25;N # TIBETAN DIGIT FIVE -0F26;N # TIBETAN DIGIT SIX -0F27;N # TIBETAN DIGIT SEVEN -0F28;N # TIBETAN DIGIT EIGHT -0F29;N # TIBETAN DIGIT NINE -0F2A;N # TIBETAN DIGIT HALF ONE -0F2B;N # TIBETAN DIGIT HALF TWO -0F2C;N # TIBETAN DIGIT HALF THREE -0F2D;N # TIBETAN DIGIT HALF FOUR -0F2E;N # TIBETAN DIGIT HALF FIVE -0F2F;N # TIBETAN DIGIT HALF SIX -0F30;N # TIBETAN DIGIT HALF SEVEN -0F31;N # TIBETAN DIGIT HALF EIGHT -0F32;N # TIBETAN DIGIT HALF NINE -0F33;N # TIBETAN DIGIT HALF ZERO -0F34;N # TIBETAN MARK BSDUS RTAGS -0F35;N # TIBETAN MARK NGAS BZUNG NYI ZLA -0F36;N # TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN -0F37;N # TIBETAN MARK NGAS BZUNG SGOR RTAGS -0F38;N # TIBETAN MARK CHE MGO -0F39;N # TIBETAN MARK TSA -PHRU -0F3A;N # TIBETAN MARK GUG RTAGS GYON -0F3B;N # TIBETAN MARK GUG RTAGS GYAS -0F3C;N # TIBETAN MARK ANG KHANG GYON -0F3D;N # TIBETAN MARK ANG KHANG GYAS -0F3E;N # TIBETAN SIGN YAR TSHES -0F3F;N # TIBETAN SIGN MAR TSHES -0F40;N # TIBETAN LETTER KA -0F41;N # TIBETAN LETTER KHA -0F42;N # TIBETAN LETTER GA -0F43;N # TIBETAN LETTER GHA -0F44;N # TIBETAN LETTER NGA -0F45;N # TIBETAN LETTER CA -0F46;N # TIBETAN LETTER CHA -0F47;N # TIBETAN LETTER JA -0F49;N # TIBETAN LETTER NYA -0F4A;N # TIBETAN LETTER TTA -0F4B;N # TIBETAN LETTER TTHA -0F4C;N # TIBETAN LETTER DDA -0F4D;N # TIBETAN LETTER DDHA -0F4E;N # TIBETAN LETTER NNA -0F4F;N # TIBETAN LETTER TA -0F50;N # TIBETAN LETTER THA -0F51;N # TIBETAN LETTER DA -0F52;N # TIBETAN LETTER DHA -0F53;N # TIBETAN LETTER NA -0F54;N # TIBETAN LETTER PA -0F55;N # TIBETAN LETTER PHA -0F56;N # TIBETAN LETTER BA -0F57;N # TIBETAN LETTER BHA -0F58;N # TIBETAN LETTER MA -0F59;N # TIBETAN LETTER TSA -0F5A;N # TIBETAN LETTER TSHA -0F5B;N # TIBETAN LETTER DZA -0F5C;N # TIBETAN LETTER DZHA -0F5D;N # TIBETAN LETTER WA -0F5E;N # TIBETAN LETTER ZHA -0F5F;N # TIBETAN LETTER ZA -0F60;N # TIBETAN LETTER -A -0F61;N # TIBETAN LETTER YA -0F62;N # TIBETAN LETTER RA -0F63;N # TIBETAN LETTER LA -0F64;N # TIBETAN LETTER SHA -0F65;N # TIBETAN LETTER SSA -0F66;N # TIBETAN LETTER SA -0F67;N # TIBETAN LETTER HA -0F68;N # TIBETAN LETTER A -0F69;N # TIBETAN LETTER KSSA -0F6A;N # TIBETAN LETTER FIXED-FORM RA -0F71;N # TIBETAN VOWEL SIGN AA -0F72;N # TIBETAN VOWEL SIGN I -0F73;N # TIBETAN VOWEL SIGN II -0F74;N # TIBETAN VOWEL SIGN U -0F75;N # TIBETAN VOWEL SIGN UU -0F76;N # TIBETAN VOWEL SIGN VOCALIC R -0F77;N # TIBETAN VOWEL SIGN VOCALIC RR -0F78;N # TIBETAN VOWEL SIGN VOCALIC L -0F79;N # TIBETAN VOWEL SIGN VOCALIC LL -0F7A;N # TIBETAN VOWEL SIGN E -0F7B;N # TIBETAN VOWEL SIGN EE -0F7C;N # TIBETAN VOWEL SIGN O -0F7D;N # TIBETAN VOWEL SIGN OO -0F7E;N # TIBETAN SIGN RJES SU NGA RO -0F7F;N # TIBETAN SIGN RNAM BCAD -0F80;N # TIBETAN VOWEL SIGN REVERSED I -0F81;N # TIBETAN VOWEL SIGN REVERSED II -0F82;N # TIBETAN SIGN NYI ZLA NAA DA -0F83;N # TIBETAN SIGN SNA LDAN -0F84;N # TIBETAN MARK HALANTA -0F85;N # TIBETAN MARK PALUTA -0F86;N # TIBETAN SIGN LCI RTAGS -0F87;N # TIBETAN SIGN YANG RTAGS -0F88;N # TIBETAN SIGN LCE TSA CAN -0F89;N # TIBETAN SIGN MCHU CAN -0F8A;N # TIBETAN SIGN GRU CAN RGYINGS -0F8B;N # TIBETAN SIGN GRU MED RGYINGS -0F90;N # TIBETAN SUBJOINED LETTER KA -0F91;N # TIBETAN SUBJOINED LETTER KHA -0F92;N # TIBETAN SUBJOINED LETTER GA -0F93;N # TIBETAN SUBJOINED LETTER GHA -0F94;N # TIBETAN SUBJOINED LETTER NGA -0F95;N # TIBETAN SUBJOINED LETTER CA -0F96;N # TIBETAN SUBJOINED LETTER CHA -0F97;N # TIBETAN SUBJOINED LETTER JA -0F99;N # TIBETAN SUBJOINED LETTER NYA -0F9A;N # TIBETAN SUBJOINED LETTER TTA -0F9B;N # TIBETAN SUBJOINED LETTER TTHA -0F9C;N # TIBETAN SUBJOINED LETTER DDA -0F9D;N # TIBETAN SUBJOINED LETTER DDHA -0F9E;N # TIBETAN SUBJOINED LETTER NNA -0F9F;N # TIBETAN SUBJOINED LETTER TA -0FA0;N # TIBETAN SUBJOINED LETTER THA -0FA1;N # TIBETAN SUBJOINED LETTER DA -0FA2;N # TIBETAN SUBJOINED LETTER DHA -0FA3;N # TIBETAN SUBJOINED LETTER NA -0FA4;N # TIBETAN SUBJOINED LETTER PA -0FA5;N # TIBETAN SUBJOINED LETTER PHA -0FA6;N # TIBETAN SUBJOINED LETTER BA -0FA7;N # TIBETAN SUBJOINED LETTER BHA -0FA8;N # TIBETAN SUBJOINED LETTER MA -0FA9;N # TIBETAN SUBJOINED LETTER TSA -0FAA;N # TIBETAN SUBJOINED LETTER TSHA -0FAB;N # TIBETAN SUBJOINED LETTER DZA -0FAC;N # TIBETAN SUBJOINED LETTER DZHA -0FAD;N # TIBETAN SUBJOINED LETTER WA -0FAE;N # TIBETAN SUBJOINED LETTER ZHA -0FAF;N # TIBETAN SUBJOINED LETTER ZA -0FB0;N # TIBETAN SUBJOINED LETTER -A -0FB1;N # TIBETAN SUBJOINED LETTER YA -0FB2;N # TIBETAN SUBJOINED LETTER RA -0FB3;N # TIBETAN SUBJOINED LETTER LA -0FB4;N # TIBETAN SUBJOINED LETTER SHA -0FB5;N # TIBETAN SUBJOINED LETTER SSA -0FB6;N # TIBETAN SUBJOINED LETTER SA -0FB7;N # TIBETAN SUBJOINED LETTER HA -0FB8;N # TIBETAN SUBJOINED LETTER A -0FB9;N # TIBETAN SUBJOINED LETTER KSSA -0FBA;N # TIBETAN SUBJOINED LETTER FIXED-FORM WA -0FBB;N # TIBETAN SUBJOINED LETTER FIXED-FORM YA -0FBC;N # TIBETAN SUBJOINED LETTER FIXED-FORM RA -0FBE;N # TIBETAN KU RU KHA -0FBF;N # TIBETAN KU RU KHA BZHI MIG CAN -0FC0;N # TIBETAN CANTILLATION SIGN HEAVY BEAT -0FC1;N # TIBETAN CANTILLATION SIGN LIGHT BEAT -0FC2;N # TIBETAN CANTILLATION SIGN CANG TE-U -0FC3;N # TIBETAN CANTILLATION SIGN SBUB -CHAL -0FC4;N # TIBETAN SYMBOL DRIL BU -0FC5;N # TIBETAN SYMBOL RDO RJE -0FC6;N # TIBETAN SYMBOL PADMA GDAN -0FC7;N # TIBETAN SYMBOL RDO RJE RGYA GRAM -0FC8;N # TIBETAN SYMBOL PHUR PA -0FC9;N # TIBETAN SYMBOL NOR BU -0FCA;N # TIBETAN SYMBOL NOR BU NYIS -KHYIL -0FCB;N # TIBETAN SYMBOL NOR BU GSUM -KHYIL -0FCC;N # TIBETAN SYMBOL NOR BU BZHI -KHYIL -0FCF;N # TIBETAN SIGN RDEL NAG GSUM -0FD0;N # TIBETAN MARK BSKA- SHOG GI MGO RGYAN -0FD1;N # TIBETAN MARK MNYAM YIG GI MGO RGYAN -1000;N # MYANMAR LETTER KA -1001;N # MYANMAR LETTER KHA -1002;N # MYANMAR LETTER GA -1003;N # MYANMAR LETTER GHA -1004;N # MYANMAR LETTER NGA -1005;N # MYANMAR LETTER CA -1006;N # MYANMAR LETTER CHA -1007;N # MYANMAR LETTER JA -1008;N # MYANMAR LETTER JHA -1009;N # MYANMAR LETTER NYA -100A;N # MYANMAR LETTER NNYA -100B;N # MYANMAR LETTER TTA -100C;N # MYANMAR LETTER TTHA -100D;N # MYANMAR LETTER DDA -100E;N # MYANMAR LETTER DDHA -100F;N # MYANMAR LETTER NNA -1010;N # MYANMAR LETTER TA -1011;N # MYANMAR LETTER THA -1012;N # MYANMAR LETTER DA -1013;N # MYANMAR LETTER DHA -1014;N # MYANMAR LETTER NA -1015;N # MYANMAR LETTER PA -1016;N # MYANMAR LETTER PHA -1017;N # MYANMAR LETTER BA -1018;N # MYANMAR LETTER BHA -1019;N # MYANMAR LETTER MA -101A;N # MYANMAR LETTER YA -101B;N # MYANMAR LETTER RA -101C;N # MYANMAR LETTER LA -101D;N # MYANMAR LETTER WA -101E;N # MYANMAR LETTER SA -101F;N # MYANMAR LETTER HA -1020;N # MYANMAR LETTER LLA -1021;N # MYANMAR LETTER A -1023;N # MYANMAR LETTER I -1024;N # MYANMAR LETTER II -1025;N # MYANMAR LETTER U -1026;N # MYANMAR LETTER UU -1027;N # MYANMAR LETTER E -1029;N # MYANMAR LETTER O -102A;N # MYANMAR LETTER AU -102C;N # MYANMAR VOWEL SIGN AA -102D;N # MYANMAR VOWEL SIGN I -102E;N # MYANMAR VOWEL SIGN II -102F;N # MYANMAR VOWEL SIGN U -1030;N # MYANMAR VOWEL SIGN UU -1031;N # MYANMAR VOWEL SIGN E -1032;N # MYANMAR VOWEL SIGN AI -1036;N # MYANMAR SIGN ANUSVARA -1037;N # MYANMAR SIGN DOT BELOW -1038;N # MYANMAR SIGN VISARGA -1039;N # MYANMAR SIGN VIRAMA -1040;N # MYANMAR DIGIT ZERO -1041;N # MYANMAR DIGIT ONE -1042;N # MYANMAR DIGIT TWO -1043;N # MYANMAR DIGIT THREE -1044;N # MYANMAR DIGIT FOUR -1045;N # MYANMAR DIGIT FIVE -1046;N # MYANMAR DIGIT SIX -1047;N # MYANMAR DIGIT SEVEN -1048;N # MYANMAR DIGIT EIGHT -1049;N # MYANMAR DIGIT NINE -104A;N # MYANMAR SIGN LITTLE SECTION -104B;N # MYANMAR SIGN SECTION -104C;N # MYANMAR SYMBOL LOCATIVE -104D;N # MYANMAR SYMBOL COMPLETED -104E;N # MYANMAR SYMBOL AFOREMENTIONED -104F;N # MYANMAR SYMBOL GENITIVE -1050;N # MYANMAR LETTER SHA -1051;N # MYANMAR LETTER SSA -1052;N # MYANMAR LETTER VOCALIC R -1053;N # MYANMAR LETTER VOCALIC RR -1054;N # MYANMAR LETTER VOCALIC L -1055;N # MYANMAR LETTER VOCALIC LL -1056;N # MYANMAR VOWEL SIGN VOCALIC R -1057;N # MYANMAR VOWEL SIGN VOCALIC RR -1058;N # MYANMAR VOWEL SIGN VOCALIC L -1059;N # MYANMAR VOWEL SIGN VOCALIC LL -10A0;N # GEORGIAN CAPITAL LETTER AN -10A1;N # GEORGIAN CAPITAL LETTER BAN -10A2;N # GEORGIAN CAPITAL LETTER GAN -10A3;N # GEORGIAN CAPITAL LETTER DON -10A4;N # GEORGIAN CAPITAL LETTER EN -10A5;N # GEORGIAN CAPITAL LETTER VIN -10A6;N # GEORGIAN CAPITAL LETTER ZEN -10A7;N # GEORGIAN CAPITAL LETTER TAN -10A8;N # GEORGIAN CAPITAL LETTER IN -10A9;N # GEORGIAN CAPITAL LETTER KAN -10AA;N # GEORGIAN CAPITAL LETTER LAS -10AB;N # GEORGIAN CAPITAL LETTER MAN -10AC;N # GEORGIAN CAPITAL LETTER NAR -10AD;N # GEORGIAN CAPITAL LETTER ON -10AE;N # GEORGIAN CAPITAL LETTER PAR -10AF;N # GEORGIAN CAPITAL LETTER ZHAR -10B0;N # GEORGIAN CAPITAL LETTER RAE -10B1;N # GEORGIAN CAPITAL LETTER SAN -10B2;N # GEORGIAN CAPITAL LETTER TAR -10B3;N # GEORGIAN CAPITAL LETTER UN -10B4;N # GEORGIAN CAPITAL LETTER PHAR -10B5;N # GEORGIAN CAPITAL LETTER KHAR -10B6;N # GEORGIAN CAPITAL LETTER GHAN -10B7;N # GEORGIAN CAPITAL LETTER QAR -10B8;N # GEORGIAN CAPITAL LETTER SHIN -10B9;N # GEORGIAN CAPITAL LETTER CHIN -10BA;N # GEORGIAN CAPITAL LETTER CAN -10BB;N # GEORGIAN CAPITAL LETTER JIL -10BC;N # GEORGIAN CAPITAL LETTER CIL -10BD;N # GEORGIAN CAPITAL LETTER CHAR -10BE;N # GEORGIAN CAPITAL LETTER XAN -10BF;N # GEORGIAN CAPITAL LETTER JHAN -10C0;N # GEORGIAN CAPITAL LETTER HAE -10C1;N # GEORGIAN CAPITAL LETTER HE -10C2;N # GEORGIAN CAPITAL LETTER HIE -10C3;N # GEORGIAN CAPITAL LETTER WE -10C4;N # GEORGIAN CAPITAL LETTER HAR -10C5;N # GEORGIAN CAPITAL LETTER HOE -10D0;N # GEORGIAN LETTER AN -10D1;N # GEORGIAN LETTER BAN -10D2;N # GEORGIAN LETTER GAN -10D3;N # GEORGIAN LETTER DON -10D4;N # GEORGIAN LETTER EN -10D5;N # GEORGIAN LETTER VIN -10D6;N # GEORGIAN LETTER ZEN -10D7;N # GEORGIAN LETTER TAN -10D8;N # GEORGIAN LETTER IN -10D9;N # GEORGIAN LETTER KAN -10DA;N # GEORGIAN LETTER LAS -10DB;N # GEORGIAN LETTER MAN -10DC;N # GEORGIAN LETTER NAR -10DD;N # GEORGIAN LETTER ON -10DE;N # GEORGIAN LETTER PAR -10DF;N # GEORGIAN LETTER ZHAR -10E0;N # GEORGIAN LETTER RAE -10E1;N # GEORGIAN LETTER SAN -10E2;N # GEORGIAN LETTER TAR -10E3;N # GEORGIAN LETTER UN -10E4;N # GEORGIAN LETTER PHAR -10E5;N # GEORGIAN LETTER KHAR -10E6;N # GEORGIAN LETTER GHAN -10E7;N # GEORGIAN LETTER QAR -10E8;N # GEORGIAN LETTER SHIN -10E9;N # GEORGIAN LETTER CHIN -10EA;N # GEORGIAN LETTER CAN -10EB;N # GEORGIAN LETTER JIL -10EC;N # GEORGIAN LETTER CIL -10ED;N # GEORGIAN LETTER CHAR -10EE;N # GEORGIAN LETTER XAN -10EF;N # GEORGIAN LETTER JHAN -10F0;N # GEORGIAN LETTER HAE -10F1;N # GEORGIAN LETTER HE -10F2;N # GEORGIAN LETTER HIE -10F3;N # GEORGIAN LETTER WE -10F4;N # GEORGIAN LETTER HAR -10F5;N # GEORGIAN LETTER HOE -10F6;N # GEORGIAN LETTER FI -10F7;N # GEORGIAN LETTER YN -10F8;N # GEORGIAN LETTER ELIFI -10F9;N # GEORGIAN LETTER TURNED GAN -10FA;N # GEORGIAN LETTER AIN -10FB;N # GEORGIAN PARAGRAPH SEPARATOR -10FC;N # MODIFIER LETTER GEORGIAN NAR -1100;W # HANGUL CHOSEONG KIYEOK -1101;W # HANGUL CHOSEONG SSANGKIYEOK -1102;W # HANGUL CHOSEONG NIEUN -1103;W # HANGUL CHOSEONG TIKEUT -1104;W # HANGUL CHOSEONG SSANGTIKEUT -1105;W # HANGUL CHOSEONG RIEUL -1106;W # HANGUL CHOSEONG MIEUM -1107;W # HANGUL CHOSEONG PIEUP -1108;W # HANGUL CHOSEONG SSANGPIEUP -1109;W # HANGUL CHOSEONG SIOS -110A;W # HANGUL CHOSEONG SSANGSIOS -110B;W # HANGUL CHOSEONG IEUNG -110C;W # HANGUL CHOSEONG CIEUC -110D;W # HANGUL CHOSEONG SSANGCIEUC -110E;W # HANGUL CHOSEONG CHIEUCH -110F;W # HANGUL CHOSEONG KHIEUKH -1110;W # HANGUL CHOSEONG THIEUTH -1111;W # HANGUL CHOSEONG PHIEUPH -1112;W # HANGUL CHOSEONG HIEUH -1113;W # HANGUL CHOSEONG NIEUN-KIYEOK -1114;W # HANGUL CHOSEONG SSANGNIEUN -1115;W # HANGUL CHOSEONG NIEUN-TIKEUT -1116;W # HANGUL CHOSEONG NIEUN-PIEUP -1117;W # HANGUL CHOSEONG TIKEUT-KIYEOK -1118;W # HANGUL CHOSEONG RIEUL-NIEUN -1119;W # HANGUL CHOSEONG SSANGRIEUL -111A;W # HANGUL CHOSEONG RIEUL-HIEUH -111B;W # HANGUL CHOSEONG KAPYEOUNRIEUL -111C;W # HANGUL CHOSEONG MIEUM-PIEUP -111D;W # HANGUL CHOSEONG KAPYEOUNMIEUM -111E;W # HANGUL CHOSEONG PIEUP-KIYEOK -111F;W # HANGUL CHOSEONG PIEUP-NIEUN -1120;W # HANGUL CHOSEONG PIEUP-TIKEUT -1121;W # HANGUL CHOSEONG PIEUP-SIOS -1122;W # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK -1123;W # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT -1124;W # HANGUL CHOSEONG PIEUP-SIOS-PIEUP -1125;W # HANGUL CHOSEONG PIEUP-SSANGSIOS -1126;W # HANGUL CHOSEONG PIEUP-SIOS-CIEUC -1127;W # HANGUL CHOSEONG PIEUP-CIEUC -1128;W # HANGUL CHOSEONG PIEUP-CHIEUCH -1129;W # HANGUL CHOSEONG PIEUP-THIEUTH -112A;W # HANGUL CHOSEONG PIEUP-PHIEUPH -112B;W # HANGUL CHOSEONG KAPYEOUNPIEUP -112C;W # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP -112D;W # HANGUL CHOSEONG SIOS-KIYEOK -112E;W # HANGUL CHOSEONG SIOS-NIEUN -112F;W # HANGUL CHOSEONG SIOS-TIKEUT -1130;W # HANGUL CHOSEONG SIOS-RIEUL -1131;W # HANGUL CHOSEONG SIOS-MIEUM -1132;W # HANGUL CHOSEONG SIOS-PIEUP -1133;W # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK -1134;W # HANGUL CHOSEONG SIOS-SSANGSIOS -1135;W # HANGUL CHOSEONG SIOS-IEUNG -1136;W # HANGUL CHOSEONG SIOS-CIEUC -1137;W # HANGUL CHOSEONG SIOS-CHIEUCH -1138;W # HANGUL CHOSEONG SIOS-KHIEUKH -1139;W # HANGUL CHOSEONG SIOS-THIEUTH -113A;W # HANGUL CHOSEONG SIOS-PHIEUPH -113B;W # HANGUL CHOSEONG SIOS-HIEUH -113C;W # HANGUL CHOSEONG CHITUEUMSIOS -113D;W # HANGUL CHOSEONG CHITUEUMSSANGSIOS -113E;W # HANGUL CHOSEONG CEONGCHIEUMSIOS -113F;W # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS -1140;W # HANGUL CHOSEONG PANSIOS -1141;W # HANGUL CHOSEONG IEUNG-KIYEOK -1142;W # HANGUL CHOSEONG IEUNG-TIKEUT -1143;W # HANGUL CHOSEONG IEUNG-MIEUM -1144;W # HANGUL CHOSEONG IEUNG-PIEUP -1145;W # HANGUL CHOSEONG IEUNG-SIOS -1146;W # HANGUL CHOSEONG IEUNG-PANSIOS -1147;W # HANGUL CHOSEONG SSANGIEUNG -1148;W # HANGUL CHOSEONG IEUNG-CIEUC -1149;W # HANGUL CHOSEONG IEUNG-CHIEUCH -114A;W # HANGUL CHOSEONG IEUNG-THIEUTH -114B;W # HANGUL CHOSEONG IEUNG-PHIEUPH -114C;W # HANGUL CHOSEONG YESIEUNG -114D;W # HANGUL CHOSEONG CIEUC-IEUNG -114E;W # HANGUL CHOSEONG CHITUEUMCIEUC -114F;W # HANGUL CHOSEONG CHITUEUMSSANGCIEUC -1150;W # HANGUL CHOSEONG CEONGCHIEUMCIEUC -1151;W # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC -1152;W # HANGUL CHOSEONG CHIEUCH-KHIEUKH -1153;W # HANGUL CHOSEONG CHIEUCH-HIEUH -1154;W # HANGUL CHOSEONG CHITUEUMCHIEUCH -1155;W # HANGUL CHOSEONG CEONGCHIEUMCHIEUCH -1156;W # HANGUL CHOSEONG PHIEUPH-PIEUP -1157;W # HANGUL CHOSEONG KAPYEOUNPHIEUPH -1158;W # HANGUL CHOSEONG SSANGHIEUH -1159;W # HANGUL CHOSEONG YEORINHIEUH -115F;W # HANGUL CHOSEONG FILLER -1160;N # HANGUL JUNGSEONG FILLER -1161;N # HANGUL JUNGSEONG A -1162;N # HANGUL JUNGSEONG AE -1163;N # HANGUL JUNGSEONG YA -1164;N # HANGUL JUNGSEONG YAE -1165;N # HANGUL JUNGSEONG EO -1166;N # HANGUL JUNGSEONG E -1167;N # HANGUL JUNGSEONG YEO -1168;N # HANGUL JUNGSEONG YE -1169;N # HANGUL JUNGSEONG O -116A;N # HANGUL JUNGSEONG WA -116B;N # HANGUL JUNGSEONG WAE -116C;N # HANGUL JUNGSEONG OE -116D;N # HANGUL JUNGSEONG YO -116E;N # HANGUL JUNGSEONG U -116F;N # HANGUL JUNGSEONG WEO -1170;N # HANGUL JUNGSEONG WE -1171;N # HANGUL JUNGSEONG WI -1172;N # HANGUL JUNGSEONG YU -1173;N # HANGUL JUNGSEONG EU -1174;N # HANGUL JUNGSEONG YI -1175;N # HANGUL JUNGSEONG I -1176;N # HANGUL JUNGSEONG A-O -1177;N # HANGUL JUNGSEONG A-U -1178;N # HANGUL JUNGSEONG YA-O -1179;N # HANGUL JUNGSEONG YA-YO -117A;N # HANGUL JUNGSEONG EO-O -117B;N # HANGUL JUNGSEONG EO-U -117C;N # HANGUL JUNGSEONG EO-EU -117D;N # HANGUL JUNGSEONG YEO-O -117E;N # HANGUL JUNGSEONG YEO-U -117F;N # HANGUL JUNGSEONG O-EO -1180;N # HANGUL JUNGSEONG O-E -1181;N # HANGUL JUNGSEONG O-YE -1182;N # HANGUL JUNGSEONG O-O -1183;N # HANGUL JUNGSEONG O-U -1184;N # HANGUL JUNGSEONG YO-YA -1185;N # HANGUL JUNGSEONG YO-YAE -1186;N # HANGUL JUNGSEONG YO-YEO -1187;N # HANGUL JUNGSEONG YO-O -1188;N # HANGUL JUNGSEONG YO-I -1189;N # HANGUL JUNGSEONG U-A -118A;N # HANGUL JUNGSEONG U-AE -118B;N # HANGUL JUNGSEONG U-EO-EU -118C;N # HANGUL JUNGSEONG U-YE -118D;N # HANGUL JUNGSEONG U-U -118E;N # HANGUL JUNGSEONG YU-A -118F;N # HANGUL JUNGSEONG YU-EO -1190;N # HANGUL JUNGSEONG YU-E -1191;N # HANGUL JUNGSEONG YU-YEO -1192;N # HANGUL JUNGSEONG YU-YE -1193;N # HANGUL JUNGSEONG YU-U -1194;N # HANGUL JUNGSEONG YU-I -1195;N # HANGUL JUNGSEONG EU-U -1196;N # HANGUL JUNGSEONG EU-EU -1197;N # HANGUL JUNGSEONG YI-U -1198;N # HANGUL JUNGSEONG I-A -1199;N # HANGUL JUNGSEONG I-YA -119A;N # HANGUL JUNGSEONG I-O -119B;N # HANGUL JUNGSEONG I-U -119C;N # HANGUL JUNGSEONG I-EU -119D;N # HANGUL JUNGSEONG I-ARAEA -119E;N # HANGUL JUNGSEONG ARAEA -119F;N # HANGUL JUNGSEONG ARAEA-EO -11A0;N # HANGUL JUNGSEONG ARAEA-U -11A1;N # HANGUL JUNGSEONG ARAEA-I -11A2;N # HANGUL JUNGSEONG SSANGARAEA -11A8;N # HANGUL JONGSEONG KIYEOK -11A9;N # HANGUL JONGSEONG SSANGKIYEOK -11AA;N # HANGUL JONGSEONG KIYEOK-SIOS -11AB;N # HANGUL JONGSEONG NIEUN -11AC;N # HANGUL JONGSEONG NIEUN-CIEUC -11AD;N # HANGUL JONGSEONG NIEUN-HIEUH -11AE;N # HANGUL JONGSEONG TIKEUT -11AF;N # HANGUL JONGSEONG RIEUL -11B0;N # HANGUL JONGSEONG RIEUL-KIYEOK -11B1;N # HANGUL JONGSEONG RIEUL-MIEUM -11B2;N # HANGUL JONGSEONG RIEUL-PIEUP -11B3;N # HANGUL JONGSEONG RIEUL-SIOS -11B4;N # HANGUL JONGSEONG RIEUL-THIEUTH -11B5;N # HANGUL JONGSEONG RIEUL-PHIEUPH -11B6;N # HANGUL JONGSEONG RIEUL-HIEUH -11B7;N # HANGUL JONGSEONG MIEUM -11B8;N # HANGUL JONGSEONG PIEUP -11B9;N # HANGUL JONGSEONG PIEUP-SIOS -11BA;N # HANGUL JONGSEONG SIOS -11BB;N # HANGUL JONGSEONG SSANGSIOS -11BC;N # HANGUL JONGSEONG IEUNG -11BD;N # HANGUL JONGSEONG CIEUC -11BE;N # HANGUL JONGSEONG CHIEUCH -11BF;N # HANGUL JONGSEONG KHIEUKH -11C0;N # HANGUL JONGSEONG THIEUTH -11C1;N # HANGUL JONGSEONG PHIEUPH -11C2;N # HANGUL JONGSEONG HIEUH -11C3;N # HANGUL JONGSEONG KIYEOK-RIEUL -11C4;N # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK -11C5;N # HANGUL JONGSEONG NIEUN-KIYEOK -11C6;N # HANGUL JONGSEONG NIEUN-TIKEUT -11C7;N # HANGUL JONGSEONG NIEUN-SIOS -11C8;N # HANGUL JONGSEONG NIEUN-PANSIOS -11C9;N # HANGUL JONGSEONG NIEUN-THIEUTH -11CA;N # HANGUL JONGSEONG TIKEUT-KIYEOK -11CB;N # HANGUL JONGSEONG TIKEUT-RIEUL -11CC;N # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS -11CD;N # HANGUL JONGSEONG RIEUL-NIEUN -11CE;N # HANGUL JONGSEONG RIEUL-TIKEUT -11CF;N # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH -11D0;N # HANGUL JONGSEONG SSANGRIEUL -11D1;N # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK -11D2;N # HANGUL JONGSEONG RIEUL-MIEUM-SIOS -11D3;N # HANGUL JONGSEONG RIEUL-PIEUP-SIOS -11D4;N # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH -11D5;N # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP -11D6;N # HANGUL JONGSEONG RIEUL-SSANGSIOS -11D7;N # HANGUL JONGSEONG RIEUL-PANSIOS -11D8;N # HANGUL JONGSEONG RIEUL-KHIEUKH -11D9;N # HANGUL JONGSEONG RIEUL-YEORINHIEUH -11DA;N # HANGUL JONGSEONG MIEUM-KIYEOK -11DB;N # HANGUL JONGSEONG MIEUM-RIEUL -11DC;N # HANGUL JONGSEONG MIEUM-PIEUP -11DD;N # HANGUL JONGSEONG MIEUM-SIOS -11DE;N # HANGUL JONGSEONG MIEUM-SSANGSIOS -11DF;N # HANGUL JONGSEONG MIEUM-PANSIOS -11E0;N # HANGUL JONGSEONG MIEUM-CHIEUCH -11E1;N # HANGUL JONGSEONG MIEUM-HIEUH -11E2;N # HANGUL JONGSEONG KAPYEOUNMIEUM -11E3;N # HANGUL JONGSEONG PIEUP-RIEUL -11E4;N # HANGUL JONGSEONG PIEUP-PHIEUPH -11E5;N # HANGUL JONGSEONG PIEUP-HIEUH -11E6;N # HANGUL JONGSEONG KAPYEOUNPIEUP -11E7;N # HANGUL JONGSEONG SIOS-KIYEOK -11E8;N # HANGUL JONGSEONG SIOS-TIKEUT -11E9;N # HANGUL JONGSEONG SIOS-RIEUL -11EA;N # HANGUL JONGSEONG SIOS-PIEUP -11EB;N # HANGUL JONGSEONG PANSIOS -11EC;N # HANGUL JONGSEONG IEUNG-KIYEOK -11ED;N # HANGUL JONGSEONG IEUNG-SSANGKIYEOK -11EE;N # HANGUL JONGSEONG SSANGIEUNG -11EF;N # HANGUL JONGSEONG IEUNG-KHIEUKH -11F0;N # HANGUL JONGSEONG YESIEUNG -11F1;N # HANGUL JONGSEONG YESIEUNG-SIOS -11F2;N # HANGUL JONGSEONG YESIEUNG-PANSIOS -11F3;N # HANGUL JONGSEONG PHIEUPH-PIEUP -11F4;N # HANGUL JONGSEONG KAPYEOUNPHIEUPH -11F5;N # HANGUL JONGSEONG HIEUH-NIEUN -11F6;N # HANGUL JONGSEONG HIEUH-RIEUL -11F7;N # HANGUL JONGSEONG HIEUH-MIEUM -11F8;N # HANGUL JONGSEONG HIEUH-PIEUP -11F9;N # HANGUL JONGSEONG YEORINHIEUH -1200;N # ETHIOPIC SYLLABLE HA -1201;N # ETHIOPIC SYLLABLE HU -1202;N # ETHIOPIC SYLLABLE HI -1203;N # ETHIOPIC SYLLABLE HAA -1204;N # ETHIOPIC SYLLABLE HEE -1205;N # ETHIOPIC SYLLABLE HE -1206;N # ETHIOPIC SYLLABLE HO -1207;N # ETHIOPIC SYLLABLE HOA -1208;N # ETHIOPIC SYLLABLE LA -1209;N # ETHIOPIC SYLLABLE LU -120A;N # ETHIOPIC SYLLABLE LI -120B;N # ETHIOPIC SYLLABLE LAA -120C;N # ETHIOPIC SYLLABLE LEE -120D;N # ETHIOPIC SYLLABLE LE -120E;N # ETHIOPIC SYLLABLE LO -120F;N # ETHIOPIC SYLLABLE LWA -1210;N # ETHIOPIC SYLLABLE HHA -1211;N # ETHIOPIC SYLLABLE HHU -1212;N # ETHIOPIC SYLLABLE HHI -1213;N # ETHIOPIC SYLLABLE HHAA -1214;N # ETHIOPIC SYLLABLE HHEE -1215;N # ETHIOPIC SYLLABLE HHE -1216;N # ETHIOPIC SYLLABLE HHO -1217;N # ETHIOPIC SYLLABLE HHWA -1218;N # ETHIOPIC SYLLABLE MA -1219;N # ETHIOPIC SYLLABLE MU -121A;N # ETHIOPIC SYLLABLE MI -121B;N # ETHIOPIC SYLLABLE MAA -121C;N # ETHIOPIC SYLLABLE MEE -121D;N # ETHIOPIC SYLLABLE ME -121E;N # ETHIOPIC SYLLABLE MO -121F;N # ETHIOPIC SYLLABLE MWA -1220;N # ETHIOPIC SYLLABLE SZA -1221;N # ETHIOPIC SYLLABLE SZU -1222;N # ETHIOPIC SYLLABLE SZI -1223;N # ETHIOPIC SYLLABLE SZAA -1224;N # ETHIOPIC SYLLABLE SZEE -1225;N # ETHIOPIC SYLLABLE SZE -1226;N # ETHIOPIC SYLLABLE SZO -1227;N # ETHIOPIC SYLLABLE SZWA -1228;N # ETHIOPIC SYLLABLE RA -1229;N # ETHIOPIC SYLLABLE RU -122A;N # ETHIOPIC SYLLABLE RI -122B;N # ETHIOPIC SYLLABLE RAA -122C;N # ETHIOPIC SYLLABLE REE -122D;N # ETHIOPIC SYLLABLE RE -122E;N # ETHIOPIC SYLLABLE RO -122F;N # ETHIOPIC SYLLABLE RWA -1230;N # ETHIOPIC SYLLABLE SA -1231;N # ETHIOPIC SYLLABLE SU -1232;N # ETHIOPIC SYLLABLE SI -1233;N # ETHIOPIC SYLLABLE SAA -1234;N # ETHIOPIC SYLLABLE SEE -1235;N # ETHIOPIC SYLLABLE SE -1236;N # ETHIOPIC SYLLABLE SO -1237;N # ETHIOPIC SYLLABLE SWA -1238;N # ETHIOPIC SYLLABLE SHA -1239;N # ETHIOPIC SYLLABLE SHU -123A;N # ETHIOPIC SYLLABLE SHI -123B;N # ETHIOPIC SYLLABLE SHAA -123C;N # ETHIOPIC SYLLABLE SHEE -123D;N # ETHIOPIC SYLLABLE SHE -123E;N # ETHIOPIC SYLLABLE SHO -123F;N # ETHIOPIC SYLLABLE SHWA -1240;N # ETHIOPIC SYLLABLE QA -1241;N # ETHIOPIC SYLLABLE QU -1242;N # ETHIOPIC SYLLABLE QI -1243;N # ETHIOPIC SYLLABLE QAA -1244;N # ETHIOPIC SYLLABLE QEE -1245;N # ETHIOPIC SYLLABLE QE -1246;N # ETHIOPIC SYLLABLE QO -1247;N # ETHIOPIC SYLLABLE QOA -1248;N # ETHIOPIC SYLLABLE QWA -124A;N # ETHIOPIC SYLLABLE QWI -124B;N # ETHIOPIC SYLLABLE QWAA -124C;N # ETHIOPIC SYLLABLE QWEE -124D;N # ETHIOPIC SYLLABLE QWE -1250;N # ETHIOPIC SYLLABLE QHA -1251;N # ETHIOPIC SYLLABLE QHU -1252;N # ETHIOPIC SYLLABLE QHI -1253;N # ETHIOPIC SYLLABLE QHAA -1254;N # ETHIOPIC SYLLABLE QHEE -1255;N # ETHIOPIC SYLLABLE QHE -1256;N # ETHIOPIC SYLLABLE QHO -1258;N # ETHIOPIC SYLLABLE QHWA -125A;N # ETHIOPIC SYLLABLE QHWI -125B;N # ETHIOPIC SYLLABLE QHWAA -125C;N # ETHIOPIC SYLLABLE QHWEE -125D;N # ETHIOPIC SYLLABLE QHWE -1260;N # ETHIOPIC SYLLABLE BA -1261;N # ETHIOPIC SYLLABLE BU -1262;N # ETHIOPIC SYLLABLE BI -1263;N # ETHIOPIC SYLLABLE BAA -1264;N # ETHIOPIC SYLLABLE BEE -1265;N # ETHIOPIC SYLLABLE BE -1266;N # ETHIOPIC SYLLABLE BO -1267;N # ETHIOPIC SYLLABLE BWA -1268;N # ETHIOPIC SYLLABLE VA -1269;N # ETHIOPIC SYLLABLE VU -126A;N # ETHIOPIC SYLLABLE VI -126B;N # ETHIOPIC SYLLABLE VAA -126C;N # ETHIOPIC SYLLABLE VEE -126D;N # ETHIOPIC SYLLABLE VE -126E;N # ETHIOPIC SYLLABLE VO -126F;N # ETHIOPIC SYLLABLE VWA -1270;N # ETHIOPIC SYLLABLE TA -1271;N # ETHIOPIC SYLLABLE TU -1272;N # ETHIOPIC SYLLABLE TI -1273;N # ETHIOPIC SYLLABLE TAA -1274;N # ETHIOPIC SYLLABLE TEE -1275;N # ETHIOPIC SYLLABLE TE -1276;N # ETHIOPIC SYLLABLE TO -1277;N # ETHIOPIC SYLLABLE TWA -1278;N # ETHIOPIC SYLLABLE CA -1279;N # ETHIOPIC SYLLABLE CU -127A;N # ETHIOPIC SYLLABLE CI -127B;N # ETHIOPIC SYLLABLE CAA -127C;N # ETHIOPIC SYLLABLE CEE -127D;N # ETHIOPIC SYLLABLE CE -127E;N # ETHIOPIC SYLLABLE CO -127F;N # ETHIOPIC SYLLABLE CWA -1280;N # ETHIOPIC SYLLABLE XA -1281;N # ETHIOPIC SYLLABLE XU -1282;N # ETHIOPIC SYLLABLE XI -1283;N # ETHIOPIC SYLLABLE XAA -1284;N # ETHIOPIC SYLLABLE XEE -1285;N # ETHIOPIC SYLLABLE XE -1286;N # ETHIOPIC SYLLABLE XO -1287;N # ETHIOPIC SYLLABLE XOA -1288;N # ETHIOPIC SYLLABLE XWA -128A;N # ETHIOPIC SYLLABLE XWI -128B;N # ETHIOPIC SYLLABLE XWAA -128C;N # ETHIOPIC SYLLABLE XWEE -128D;N # ETHIOPIC SYLLABLE XWE -1290;N # ETHIOPIC SYLLABLE NA -1291;N # ETHIOPIC SYLLABLE NU -1292;N # ETHIOPIC SYLLABLE NI -1293;N # ETHIOPIC SYLLABLE NAA -1294;N # ETHIOPIC SYLLABLE NEE -1295;N # ETHIOPIC SYLLABLE NE -1296;N # ETHIOPIC SYLLABLE NO -1297;N # ETHIOPIC SYLLABLE NWA -1298;N # ETHIOPIC SYLLABLE NYA -1299;N # ETHIOPIC SYLLABLE NYU -129A;N # ETHIOPIC SYLLABLE NYI -129B;N # ETHIOPIC SYLLABLE NYAA -129C;N # ETHIOPIC SYLLABLE NYEE -129D;N # ETHIOPIC SYLLABLE NYE -129E;N # ETHIOPIC SYLLABLE NYO -129F;N # ETHIOPIC SYLLABLE NYWA -12A0;N # ETHIOPIC SYLLABLE GLOTTAL A -12A1;N # ETHIOPIC SYLLABLE GLOTTAL U -12A2;N # ETHIOPIC SYLLABLE GLOTTAL I -12A3;N # ETHIOPIC SYLLABLE GLOTTAL AA -12A4;N # ETHIOPIC SYLLABLE GLOTTAL EE -12A5;N # ETHIOPIC SYLLABLE GLOTTAL E -12A6;N # ETHIOPIC SYLLABLE GLOTTAL O -12A7;N # ETHIOPIC SYLLABLE GLOTTAL WA -12A8;N # ETHIOPIC SYLLABLE KA -12A9;N # ETHIOPIC SYLLABLE KU -12AA;N # ETHIOPIC SYLLABLE KI -12AB;N # ETHIOPIC SYLLABLE KAA -12AC;N # ETHIOPIC SYLLABLE KEE -12AD;N # ETHIOPIC SYLLABLE KE -12AE;N # ETHIOPIC SYLLABLE KO -12AF;N # ETHIOPIC SYLLABLE KOA -12B0;N # ETHIOPIC SYLLABLE KWA -12B2;N # ETHIOPIC SYLLABLE KWI -12B3;N # ETHIOPIC SYLLABLE KWAA -12B4;N # ETHIOPIC SYLLABLE KWEE -12B5;N # ETHIOPIC SYLLABLE KWE -12B8;N # ETHIOPIC SYLLABLE KXA -12B9;N # ETHIOPIC SYLLABLE KXU -12BA;N # ETHIOPIC SYLLABLE KXI -12BB;N # ETHIOPIC SYLLABLE KXAA -12BC;N # ETHIOPIC SYLLABLE KXEE -12BD;N # ETHIOPIC SYLLABLE KXE -12BE;N # ETHIOPIC SYLLABLE KXO -12C0;N # ETHIOPIC SYLLABLE KXWA -12C2;N # ETHIOPIC SYLLABLE KXWI -12C3;N # ETHIOPIC SYLLABLE KXWAA -12C4;N # ETHIOPIC SYLLABLE KXWEE -12C5;N # ETHIOPIC SYLLABLE KXWE -12C8;N # ETHIOPIC SYLLABLE WA -12C9;N # ETHIOPIC SYLLABLE WU -12CA;N # ETHIOPIC SYLLABLE WI -12CB;N # ETHIOPIC SYLLABLE WAA -12CC;N # ETHIOPIC SYLLABLE WEE -12CD;N # ETHIOPIC SYLLABLE WE -12CE;N # ETHIOPIC SYLLABLE WO -12CF;N # ETHIOPIC SYLLABLE WOA -12D0;N # ETHIOPIC SYLLABLE PHARYNGEAL A -12D1;N # ETHIOPIC SYLLABLE PHARYNGEAL U -12D2;N # ETHIOPIC SYLLABLE PHARYNGEAL I -12D3;N # ETHIOPIC SYLLABLE PHARYNGEAL AA -12D4;N # ETHIOPIC SYLLABLE PHARYNGEAL EE -12D5;N # ETHIOPIC SYLLABLE PHARYNGEAL E -12D6;N # ETHIOPIC SYLLABLE PHARYNGEAL O -12D8;N # ETHIOPIC SYLLABLE ZA -12D9;N # ETHIOPIC SYLLABLE ZU -12DA;N # ETHIOPIC SYLLABLE ZI -12DB;N # ETHIOPIC SYLLABLE ZAA -12DC;N # ETHIOPIC SYLLABLE ZEE -12DD;N # ETHIOPIC SYLLABLE ZE -12DE;N # ETHIOPIC SYLLABLE ZO -12DF;N # ETHIOPIC SYLLABLE ZWA -12E0;N # ETHIOPIC SYLLABLE ZHA -12E1;N # ETHIOPIC SYLLABLE ZHU -12E2;N # ETHIOPIC SYLLABLE ZHI -12E3;N # ETHIOPIC SYLLABLE ZHAA -12E4;N # ETHIOPIC SYLLABLE ZHEE -12E5;N # ETHIOPIC SYLLABLE ZHE -12E6;N # ETHIOPIC SYLLABLE ZHO -12E7;N # ETHIOPIC SYLLABLE ZHWA -12E8;N # ETHIOPIC SYLLABLE YA -12E9;N # ETHIOPIC SYLLABLE YU -12EA;N # ETHIOPIC SYLLABLE YI -12EB;N # ETHIOPIC SYLLABLE YAA -12EC;N # ETHIOPIC SYLLABLE YEE -12ED;N # ETHIOPIC SYLLABLE YE -12EE;N # ETHIOPIC SYLLABLE YO -12EF;N # ETHIOPIC SYLLABLE YOA -12F0;N # ETHIOPIC SYLLABLE DA -12F1;N # ETHIOPIC SYLLABLE DU -12F2;N # ETHIOPIC SYLLABLE DI -12F3;N # ETHIOPIC SYLLABLE DAA -12F4;N # ETHIOPIC SYLLABLE DEE -12F5;N # ETHIOPIC SYLLABLE DE -12F6;N # ETHIOPIC SYLLABLE DO -12F7;N # ETHIOPIC SYLLABLE DWA -12F8;N # ETHIOPIC SYLLABLE DDA -12F9;N # ETHIOPIC SYLLABLE DDU -12FA;N # ETHIOPIC SYLLABLE DDI -12FB;N # ETHIOPIC SYLLABLE DDAA -12FC;N # ETHIOPIC SYLLABLE DDEE -12FD;N # ETHIOPIC SYLLABLE DDE -12FE;N # ETHIOPIC SYLLABLE DDO -12FF;N # ETHIOPIC SYLLABLE DDWA -1300;N # ETHIOPIC SYLLABLE JA -1301;N # ETHIOPIC SYLLABLE JU -1302;N # ETHIOPIC SYLLABLE JI -1303;N # ETHIOPIC SYLLABLE JAA -1304;N # ETHIOPIC SYLLABLE JEE -1305;N # ETHIOPIC SYLLABLE JE -1306;N # ETHIOPIC SYLLABLE JO -1307;N # ETHIOPIC SYLLABLE JWA -1308;N # ETHIOPIC SYLLABLE GA -1309;N # ETHIOPIC SYLLABLE GU -130A;N # ETHIOPIC SYLLABLE GI -130B;N # ETHIOPIC SYLLABLE GAA -130C;N # ETHIOPIC SYLLABLE GEE -130D;N # ETHIOPIC SYLLABLE GE -130E;N # ETHIOPIC SYLLABLE GO -130F;N # ETHIOPIC SYLLABLE GOA -1310;N # ETHIOPIC SYLLABLE GWA -1312;N # ETHIOPIC SYLLABLE GWI -1313;N # ETHIOPIC SYLLABLE GWAA -1314;N # ETHIOPIC SYLLABLE GWEE -1315;N # ETHIOPIC SYLLABLE GWE -1318;N # ETHIOPIC SYLLABLE GGA -1319;N # ETHIOPIC SYLLABLE GGU -131A;N # ETHIOPIC SYLLABLE GGI -131B;N # ETHIOPIC SYLLABLE GGAA -131C;N # ETHIOPIC SYLLABLE GGEE -131D;N # ETHIOPIC SYLLABLE GGE -131E;N # ETHIOPIC SYLLABLE GGO -131F;N # ETHIOPIC SYLLABLE GGWAA -1320;N # ETHIOPIC SYLLABLE THA -1321;N # ETHIOPIC SYLLABLE THU -1322;N # ETHIOPIC SYLLABLE THI -1323;N # ETHIOPIC SYLLABLE THAA -1324;N # ETHIOPIC SYLLABLE THEE -1325;N # ETHIOPIC SYLLABLE THE -1326;N # ETHIOPIC SYLLABLE THO -1327;N # ETHIOPIC SYLLABLE THWA -1328;N # ETHIOPIC SYLLABLE CHA -1329;N # ETHIOPIC SYLLABLE CHU -132A;N # ETHIOPIC SYLLABLE CHI -132B;N # ETHIOPIC SYLLABLE CHAA -132C;N # ETHIOPIC SYLLABLE CHEE -132D;N # ETHIOPIC SYLLABLE CHE -132E;N # ETHIOPIC SYLLABLE CHO -132F;N # ETHIOPIC SYLLABLE CHWA -1330;N # ETHIOPIC SYLLABLE PHA -1331;N # ETHIOPIC SYLLABLE PHU -1332;N # ETHIOPIC SYLLABLE PHI -1333;N # ETHIOPIC SYLLABLE PHAA -1334;N # ETHIOPIC SYLLABLE PHEE -1335;N # ETHIOPIC SYLLABLE PHE -1336;N # ETHIOPIC SYLLABLE PHO -1337;N # ETHIOPIC SYLLABLE PHWA -1338;N # ETHIOPIC SYLLABLE TSA -1339;N # ETHIOPIC SYLLABLE TSU -133A;N # ETHIOPIC SYLLABLE TSI -133B;N # ETHIOPIC SYLLABLE TSAA -133C;N # ETHIOPIC SYLLABLE TSEE -133D;N # ETHIOPIC SYLLABLE TSE -133E;N # ETHIOPIC SYLLABLE TSO -133F;N # ETHIOPIC SYLLABLE TSWA -1340;N # ETHIOPIC SYLLABLE TZA -1341;N # ETHIOPIC SYLLABLE TZU -1342;N # ETHIOPIC SYLLABLE TZI -1343;N # ETHIOPIC SYLLABLE TZAA -1344;N # ETHIOPIC SYLLABLE TZEE -1345;N # ETHIOPIC SYLLABLE TZE -1346;N # ETHIOPIC SYLLABLE TZO -1347;N # ETHIOPIC SYLLABLE TZOA -1348;N # ETHIOPIC SYLLABLE FA -1349;N # ETHIOPIC SYLLABLE FU -134A;N # ETHIOPIC SYLLABLE FI -134B;N # ETHIOPIC SYLLABLE FAA -134C;N # ETHIOPIC SYLLABLE FEE -134D;N # ETHIOPIC SYLLABLE FE -134E;N # ETHIOPIC SYLLABLE FO -134F;N # ETHIOPIC SYLLABLE FWA -1350;N # ETHIOPIC SYLLABLE PA -1351;N # ETHIOPIC SYLLABLE PU -1352;N # ETHIOPIC SYLLABLE PI -1353;N # ETHIOPIC SYLLABLE PAA -1354;N # ETHIOPIC SYLLABLE PEE -1355;N # ETHIOPIC SYLLABLE PE -1356;N # ETHIOPIC SYLLABLE PO -1357;N # ETHIOPIC SYLLABLE PWA -1358;N # ETHIOPIC SYLLABLE RYA -1359;N # ETHIOPIC SYLLABLE MYA -135A;N # ETHIOPIC SYLLABLE FYA -135F;N # ETHIOPIC COMBINING GEMINATION MARK -1360;N # ETHIOPIC SECTION MARK -1361;N # ETHIOPIC WORDSPACE -1362;N # ETHIOPIC FULL STOP -1363;N # ETHIOPIC COMMA -1364;N # ETHIOPIC SEMICOLON -1365;N # ETHIOPIC COLON -1366;N # ETHIOPIC PREFACE COLON -1367;N # ETHIOPIC QUESTION MARK -1368;N # ETHIOPIC PARAGRAPH SEPARATOR -1369;N # ETHIOPIC DIGIT ONE -136A;N # ETHIOPIC DIGIT TWO -136B;N # ETHIOPIC DIGIT THREE -136C;N # ETHIOPIC DIGIT FOUR -136D;N # ETHIOPIC DIGIT FIVE -136E;N # ETHIOPIC DIGIT SIX -136F;N # ETHIOPIC DIGIT SEVEN -1370;N # ETHIOPIC DIGIT EIGHT -1371;N # ETHIOPIC DIGIT NINE -1372;N # ETHIOPIC NUMBER TEN -1373;N # ETHIOPIC NUMBER TWENTY -1374;N # ETHIOPIC NUMBER THIRTY -1375;N # ETHIOPIC NUMBER FORTY -1376;N # ETHIOPIC NUMBER FIFTY -1377;N # ETHIOPIC NUMBER SIXTY -1378;N # ETHIOPIC NUMBER SEVENTY -1379;N # ETHIOPIC NUMBER EIGHTY -137A;N # ETHIOPIC NUMBER NINETY -137B;N # ETHIOPIC NUMBER HUNDRED -137C;N # ETHIOPIC NUMBER TEN THOUSAND -1380;N # ETHIOPIC SYLLABLE SEBATBEIT MWA -1381;N # ETHIOPIC SYLLABLE MWI -1382;N # ETHIOPIC SYLLABLE MWEE -1383;N # ETHIOPIC SYLLABLE MWE -1384;N # ETHIOPIC SYLLABLE SEBATBEIT BWA -1385;N # ETHIOPIC SYLLABLE BWI -1386;N # ETHIOPIC SYLLABLE BWEE -1387;N # ETHIOPIC SYLLABLE BWE -1388;N # ETHIOPIC SYLLABLE SEBATBEIT FWA -1389;N # ETHIOPIC SYLLABLE FWI -138A;N # ETHIOPIC SYLLABLE FWEE -138B;N # ETHIOPIC SYLLABLE FWE -138C;N # ETHIOPIC SYLLABLE SEBATBEIT PWA -138D;N # ETHIOPIC SYLLABLE PWI -138E;N # ETHIOPIC SYLLABLE PWEE -138F;N # ETHIOPIC SYLLABLE PWE -1390;N # ETHIOPIC TONAL MARK YIZET -1391;N # ETHIOPIC TONAL MARK DERET -1392;N # ETHIOPIC TONAL MARK RIKRIK -1393;N # ETHIOPIC TONAL MARK SHORT RIKRIK -1394;N # ETHIOPIC TONAL MARK DIFAT -1395;N # ETHIOPIC TONAL MARK KENAT -1396;N # ETHIOPIC TONAL MARK CHIRET -1397;N # ETHIOPIC TONAL MARK HIDET -1398;N # ETHIOPIC TONAL MARK DERET-HIDET -1399;N # ETHIOPIC TONAL MARK KURT -13A0;N # CHEROKEE LETTER A -13A1;N # CHEROKEE LETTER E -13A2;N # CHEROKEE LETTER I -13A3;N # CHEROKEE LETTER O -13A4;N # CHEROKEE LETTER U -13A5;N # CHEROKEE LETTER V -13A6;N # CHEROKEE LETTER GA -13A7;N # CHEROKEE LETTER KA -13A8;N # CHEROKEE LETTER GE -13A9;N # CHEROKEE LETTER GI -13AA;N # CHEROKEE LETTER GO -13AB;N # CHEROKEE LETTER GU -13AC;N # CHEROKEE LETTER GV -13AD;N # CHEROKEE LETTER HA -13AE;N # CHEROKEE LETTER HE -13AF;N # CHEROKEE LETTER HI -13B0;N # CHEROKEE LETTER HO -13B1;N # CHEROKEE LETTER HU -13B2;N # CHEROKEE LETTER HV -13B3;N # CHEROKEE LETTER LA -13B4;N # CHEROKEE LETTER LE -13B5;N # CHEROKEE LETTER LI -13B6;N # CHEROKEE LETTER LO -13B7;N # CHEROKEE LETTER LU -13B8;N # CHEROKEE LETTER LV -13B9;N # CHEROKEE LETTER MA -13BA;N # CHEROKEE LETTER ME -13BB;N # CHEROKEE LETTER MI -13BC;N # CHEROKEE LETTER MO -13BD;N # CHEROKEE LETTER MU -13BE;N # CHEROKEE LETTER NA -13BF;N # CHEROKEE LETTER HNA -13C0;N # CHEROKEE LETTER NAH -13C1;N # CHEROKEE LETTER NE -13C2;N # CHEROKEE LETTER NI -13C3;N # CHEROKEE LETTER NO -13C4;N # CHEROKEE LETTER NU -13C5;N # CHEROKEE LETTER NV -13C6;N # CHEROKEE LETTER QUA -13C7;N # CHEROKEE LETTER QUE -13C8;N # CHEROKEE LETTER QUI -13C9;N # CHEROKEE LETTER QUO -13CA;N # CHEROKEE LETTER QUU -13CB;N # CHEROKEE LETTER QUV -13CC;N # CHEROKEE LETTER SA -13CD;N # CHEROKEE LETTER S -13CE;N # CHEROKEE LETTER SE -13CF;N # CHEROKEE LETTER SI -13D0;N # CHEROKEE LETTER SO -13D1;N # CHEROKEE LETTER SU -13D2;N # CHEROKEE LETTER SV -13D3;N # CHEROKEE LETTER DA -13D4;N # CHEROKEE LETTER TA -13D5;N # CHEROKEE LETTER DE -13D6;N # CHEROKEE LETTER TE -13D7;N # CHEROKEE LETTER DI -13D8;N # CHEROKEE LETTER TI -13D9;N # CHEROKEE LETTER DO -13DA;N # CHEROKEE LETTER DU -13DB;N # CHEROKEE LETTER DV -13DC;N # CHEROKEE LETTER DLA -13DD;N # CHEROKEE LETTER TLA -13DE;N # CHEROKEE LETTER TLE -13DF;N # CHEROKEE LETTER TLI -13E0;N # CHEROKEE LETTER TLO -13E1;N # CHEROKEE LETTER TLU -13E2;N # CHEROKEE LETTER TLV -13E3;N # CHEROKEE LETTER TSA -13E4;N # CHEROKEE LETTER TSE -13E5;N # CHEROKEE LETTER TSI -13E6;N # CHEROKEE LETTER TSO -13E7;N # CHEROKEE LETTER TSU -13E8;N # CHEROKEE LETTER TSV -13E9;N # CHEROKEE LETTER WA -13EA;N # CHEROKEE LETTER WE -13EB;N # CHEROKEE LETTER WI -13EC;N # CHEROKEE LETTER WO -13ED;N # CHEROKEE LETTER WU -13EE;N # CHEROKEE LETTER WV -13EF;N # CHEROKEE LETTER YA -13F0;N # CHEROKEE LETTER YE -13F1;N # CHEROKEE LETTER YI -13F2;N # CHEROKEE LETTER YO -13F3;N # CHEROKEE LETTER YU -13F4;N # CHEROKEE LETTER YV -1401;N # CANADIAN SYLLABICS E -1402;N # CANADIAN SYLLABICS AAI -1403;N # CANADIAN SYLLABICS I -1404;N # CANADIAN SYLLABICS II -1405;N # CANADIAN SYLLABICS O -1406;N # CANADIAN SYLLABICS OO -1407;N # CANADIAN SYLLABICS Y-CREE OO -1408;N # CANADIAN SYLLABICS CARRIER EE -1409;N # CANADIAN SYLLABICS CARRIER I -140A;N # CANADIAN SYLLABICS A -140B;N # CANADIAN SYLLABICS AA -140C;N # CANADIAN SYLLABICS WE -140D;N # CANADIAN SYLLABICS WEST-CREE WE -140E;N # CANADIAN SYLLABICS WI -140F;N # CANADIAN SYLLABICS WEST-CREE WI -1410;N # CANADIAN SYLLABICS WII -1411;N # CANADIAN SYLLABICS WEST-CREE WII -1412;N # CANADIAN SYLLABICS WO -1413;N # CANADIAN SYLLABICS WEST-CREE WO -1414;N # CANADIAN SYLLABICS WOO -1415;N # CANADIAN SYLLABICS WEST-CREE WOO -1416;N # CANADIAN SYLLABICS NASKAPI WOO -1417;N # CANADIAN SYLLABICS WA -1418;N # CANADIAN SYLLABICS WEST-CREE WA -1419;N # CANADIAN SYLLABICS WAA -141A;N # CANADIAN SYLLABICS WEST-CREE WAA -141B;N # CANADIAN SYLLABICS NASKAPI WAA -141C;N # CANADIAN SYLLABICS AI -141D;N # CANADIAN SYLLABICS Y-CREE W -141E;N # CANADIAN SYLLABICS GLOTTAL STOP -141F;N # CANADIAN SYLLABICS FINAL ACUTE -1420;N # CANADIAN SYLLABICS FINAL GRAVE -1421;N # CANADIAN SYLLABICS FINAL BOTTOM HALF RING -1422;N # CANADIAN SYLLABICS FINAL TOP HALF RING -1423;N # CANADIAN SYLLABICS FINAL RIGHT HALF RING -1424;N # CANADIAN SYLLABICS FINAL RING -1425;N # CANADIAN SYLLABICS FINAL DOUBLE ACUTE -1426;N # CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES -1427;N # CANADIAN SYLLABICS FINAL MIDDLE DOT -1428;N # CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE -1429;N # CANADIAN SYLLABICS FINAL PLUS -142A;N # CANADIAN SYLLABICS FINAL DOWN TACK -142B;N # CANADIAN SYLLABICS EN -142C;N # CANADIAN SYLLABICS IN -142D;N # CANADIAN SYLLABICS ON -142E;N # CANADIAN SYLLABICS AN -142F;N # CANADIAN SYLLABICS PE -1430;N # CANADIAN SYLLABICS PAAI -1431;N # CANADIAN SYLLABICS PI -1432;N # CANADIAN SYLLABICS PII -1433;N # CANADIAN SYLLABICS PO -1434;N # CANADIAN SYLLABICS POO -1435;N # CANADIAN SYLLABICS Y-CREE POO -1436;N # CANADIAN SYLLABICS CARRIER HEE -1437;N # CANADIAN SYLLABICS CARRIER HI -1438;N # CANADIAN SYLLABICS PA -1439;N # CANADIAN SYLLABICS PAA -143A;N # CANADIAN SYLLABICS PWE -143B;N # CANADIAN SYLLABICS WEST-CREE PWE -143C;N # CANADIAN SYLLABICS PWI -143D;N # CANADIAN SYLLABICS WEST-CREE PWI -143E;N # CANADIAN SYLLABICS PWII -143F;N # CANADIAN SYLLABICS WEST-CREE PWII -1440;N # CANADIAN SYLLABICS PWO -1441;N # CANADIAN SYLLABICS WEST-CREE PWO -1442;N # CANADIAN SYLLABICS PWOO -1443;N # CANADIAN SYLLABICS WEST-CREE PWOO -1444;N # CANADIAN SYLLABICS PWA -1445;N # CANADIAN SYLLABICS WEST-CREE PWA -1446;N # CANADIAN SYLLABICS PWAA -1447;N # CANADIAN SYLLABICS WEST-CREE PWAA -1448;N # CANADIAN SYLLABICS Y-CREE PWAA -1449;N # CANADIAN SYLLABICS P -144A;N # CANADIAN SYLLABICS WEST-CREE P -144B;N # CANADIAN SYLLABICS CARRIER H -144C;N # CANADIAN SYLLABICS TE -144D;N # CANADIAN SYLLABICS TAAI -144E;N # CANADIAN SYLLABICS TI -144F;N # CANADIAN SYLLABICS TII -1450;N # CANADIAN SYLLABICS TO -1451;N # CANADIAN SYLLABICS TOO -1452;N # CANADIAN SYLLABICS Y-CREE TOO -1453;N # CANADIAN SYLLABICS CARRIER DEE -1454;N # CANADIAN SYLLABICS CARRIER DI -1455;N # CANADIAN SYLLABICS TA -1456;N # CANADIAN SYLLABICS TAA -1457;N # CANADIAN SYLLABICS TWE -1458;N # CANADIAN SYLLABICS WEST-CREE TWE -1459;N # CANADIAN SYLLABICS TWI -145A;N # CANADIAN SYLLABICS WEST-CREE TWI -145B;N # CANADIAN SYLLABICS TWII -145C;N # CANADIAN SYLLABICS WEST-CREE TWII -145D;N # CANADIAN SYLLABICS TWO -145E;N # CANADIAN SYLLABICS WEST-CREE TWO -145F;N # CANADIAN SYLLABICS TWOO -1460;N # CANADIAN SYLLABICS WEST-CREE TWOO -1461;N # CANADIAN SYLLABICS TWA -1462;N # CANADIAN SYLLABICS WEST-CREE TWA -1463;N # CANADIAN SYLLABICS TWAA -1464;N # CANADIAN SYLLABICS WEST-CREE TWAA -1465;N # CANADIAN SYLLABICS NASKAPI TWAA -1466;N # CANADIAN SYLLABICS T -1467;N # CANADIAN SYLLABICS TTE -1468;N # CANADIAN SYLLABICS TTI -1469;N # CANADIAN SYLLABICS TTO -146A;N # CANADIAN SYLLABICS TTA -146B;N # CANADIAN SYLLABICS KE -146C;N # CANADIAN SYLLABICS KAAI -146D;N # CANADIAN SYLLABICS KI -146E;N # CANADIAN SYLLABICS KII -146F;N # CANADIAN SYLLABICS KO -1470;N # CANADIAN SYLLABICS KOO -1471;N # CANADIAN SYLLABICS Y-CREE KOO -1472;N # CANADIAN SYLLABICS KA -1473;N # CANADIAN SYLLABICS KAA -1474;N # CANADIAN SYLLABICS KWE -1475;N # CANADIAN SYLLABICS WEST-CREE KWE -1476;N # CANADIAN SYLLABICS KWI -1477;N # CANADIAN SYLLABICS WEST-CREE KWI -1478;N # CANADIAN SYLLABICS KWII -1479;N # CANADIAN SYLLABICS WEST-CREE KWII -147A;N # CANADIAN SYLLABICS KWO -147B;N # CANADIAN SYLLABICS WEST-CREE KWO -147C;N # CANADIAN SYLLABICS KWOO -147D;N # CANADIAN SYLLABICS WEST-CREE KWOO -147E;N # CANADIAN SYLLABICS KWA -147F;N # CANADIAN SYLLABICS WEST-CREE KWA -1480;N # CANADIAN SYLLABICS KWAA -1481;N # CANADIAN SYLLABICS WEST-CREE KWAA -1482;N # CANADIAN SYLLABICS NASKAPI KWAA -1483;N # CANADIAN SYLLABICS K -1484;N # CANADIAN SYLLABICS KW -1485;N # CANADIAN SYLLABICS SOUTH-SLAVEY KEH -1486;N # CANADIAN SYLLABICS SOUTH-SLAVEY KIH -1487;N # CANADIAN SYLLABICS SOUTH-SLAVEY KOH -1488;N # CANADIAN SYLLABICS SOUTH-SLAVEY KAH -1489;N # CANADIAN SYLLABICS CE -148A;N # CANADIAN SYLLABICS CAAI -148B;N # CANADIAN SYLLABICS CI -148C;N # CANADIAN SYLLABICS CII -148D;N # CANADIAN SYLLABICS CO -148E;N # CANADIAN SYLLABICS COO -148F;N # CANADIAN SYLLABICS Y-CREE COO -1490;N # CANADIAN SYLLABICS CA -1491;N # CANADIAN SYLLABICS CAA -1492;N # CANADIAN SYLLABICS CWE -1493;N # CANADIAN SYLLABICS WEST-CREE CWE -1494;N # CANADIAN SYLLABICS CWI -1495;N # CANADIAN SYLLABICS WEST-CREE CWI -1496;N # CANADIAN SYLLABICS CWII -1497;N # CANADIAN SYLLABICS WEST-CREE CWII -1498;N # CANADIAN SYLLABICS CWO -1499;N # CANADIAN SYLLABICS WEST-CREE CWO -149A;N # CANADIAN SYLLABICS CWOO -149B;N # CANADIAN SYLLABICS WEST-CREE CWOO -149C;N # CANADIAN SYLLABICS CWA -149D;N # CANADIAN SYLLABICS WEST-CREE CWA -149E;N # CANADIAN SYLLABICS CWAA -149F;N # CANADIAN SYLLABICS WEST-CREE CWAA -14A0;N # CANADIAN SYLLABICS NASKAPI CWAA -14A1;N # CANADIAN SYLLABICS C -14A2;N # CANADIAN SYLLABICS SAYISI TH -14A3;N # CANADIAN SYLLABICS ME -14A4;N # CANADIAN SYLLABICS MAAI -14A5;N # CANADIAN SYLLABICS MI -14A6;N # CANADIAN SYLLABICS MII -14A7;N # CANADIAN SYLLABICS MO -14A8;N # CANADIAN SYLLABICS MOO -14A9;N # CANADIAN SYLLABICS Y-CREE MOO -14AA;N # CANADIAN SYLLABICS MA -14AB;N # CANADIAN SYLLABICS MAA -14AC;N # CANADIAN SYLLABICS MWE -14AD;N # CANADIAN SYLLABICS WEST-CREE MWE -14AE;N # CANADIAN SYLLABICS MWI -14AF;N # CANADIAN SYLLABICS WEST-CREE MWI -14B0;N # CANADIAN SYLLABICS MWII -14B1;N # CANADIAN SYLLABICS WEST-CREE MWII -14B2;N # CANADIAN SYLLABICS MWO -14B3;N # CANADIAN SYLLABICS WEST-CREE MWO -14B4;N # CANADIAN SYLLABICS MWOO -14B5;N # CANADIAN SYLLABICS WEST-CREE MWOO -14B6;N # CANADIAN SYLLABICS MWA -14B7;N # CANADIAN SYLLABICS WEST-CREE MWA -14B8;N # CANADIAN SYLLABICS MWAA -14B9;N # CANADIAN SYLLABICS WEST-CREE MWAA -14BA;N # CANADIAN SYLLABICS NASKAPI MWAA -14BB;N # CANADIAN SYLLABICS M -14BC;N # CANADIAN SYLLABICS WEST-CREE M -14BD;N # CANADIAN SYLLABICS MH -14BE;N # CANADIAN SYLLABICS ATHAPASCAN M -14BF;N # CANADIAN SYLLABICS SAYISI M -14C0;N # CANADIAN SYLLABICS NE -14C1;N # CANADIAN SYLLABICS NAAI -14C2;N # CANADIAN SYLLABICS NI -14C3;N # CANADIAN SYLLABICS NII -14C4;N # CANADIAN SYLLABICS NO -14C5;N # CANADIAN SYLLABICS NOO -14C6;N # CANADIAN SYLLABICS Y-CREE NOO -14C7;N # CANADIAN SYLLABICS NA -14C8;N # CANADIAN SYLLABICS NAA -14C9;N # CANADIAN SYLLABICS NWE -14CA;N # CANADIAN SYLLABICS WEST-CREE NWE -14CB;N # CANADIAN SYLLABICS NWA -14CC;N # CANADIAN SYLLABICS WEST-CREE NWA -14CD;N # CANADIAN SYLLABICS NWAA -14CE;N # CANADIAN SYLLABICS WEST-CREE NWAA -14CF;N # CANADIAN SYLLABICS NASKAPI NWAA -14D0;N # CANADIAN SYLLABICS N -14D1;N # CANADIAN SYLLABICS CARRIER NG -14D2;N # CANADIAN SYLLABICS NH -14D3;N # CANADIAN SYLLABICS LE -14D4;N # CANADIAN SYLLABICS LAAI -14D5;N # CANADIAN SYLLABICS LI -14D6;N # CANADIAN SYLLABICS LII -14D7;N # CANADIAN SYLLABICS LO -14D8;N # CANADIAN SYLLABICS LOO -14D9;N # CANADIAN SYLLABICS Y-CREE LOO -14DA;N # CANADIAN SYLLABICS LA -14DB;N # CANADIAN SYLLABICS LAA -14DC;N # CANADIAN SYLLABICS LWE -14DD;N # CANADIAN SYLLABICS WEST-CREE LWE -14DE;N # CANADIAN SYLLABICS LWI -14DF;N # CANADIAN SYLLABICS WEST-CREE LWI -14E0;N # CANADIAN SYLLABICS LWII -14E1;N # CANADIAN SYLLABICS WEST-CREE LWII -14E2;N # CANADIAN SYLLABICS LWO -14E3;N # CANADIAN SYLLABICS WEST-CREE LWO -14E4;N # CANADIAN SYLLABICS LWOO -14E5;N # CANADIAN SYLLABICS WEST-CREE LWOO -14E6;N # CANADIAN SYLLABICS LWA -14E7;N # CANADIAN SYLLABICS WEST-CREE LWA -14E8;N # CANADIAN SYLLABICS LWAA -14E9;N # CANADIAN SYLLABICS WEST-CREE LWAA -14EA;N # CANADIAN SYLLABICS L -14EB;N # CANADIAN SYLLABICS WEST-CREE L -14EC;N # CANADIAN SYLLABICS MEDIAL L -14ED;N # CANADIAN SYLLABICS SE -14EE;N # CANADIAN SYLLABICS SAAI -14EF;N # CANADIAN SYLLABICS SI -14F0;N # CANADIAN SYLLABICS SII -14F1;N # CANADIAN SYLLABICS SO -14F2;N # CANADIAN SYLLABICS SOO -14F3;N # CANADIAN SYLLABICS Y-CREE SOO -14F4;N # CANADIAN SYLLABICS SA -14F5;N # CANADIAN SYLLABICS SAA -14F6;N # CANADIAN SYLLABICS SWE -14F7;N # CANADIAN SYLLABICS WEST-CREE SWE -14F8;N # CANADIAN SYLLABICS SWI -14F9;N # CANADIAN SYLLABICS WEST-CREE SWI -14FA;N # CANADIAN SYLLABICS SWII -14FB;N # CANADIAN SYLLABICS WEST-CREE SWII -14FC;N # CANADIAN SYLLABICS SWO -14FD;N # CANADIAN SYLLABICS WEST-CREE SWO -14FE;N # CANADIAN SYLLABICS SWOO -14FF;N # CANADIAN SYLLABICS WEST-CREE SWOO -1500;N # CANADIAN SYLLABICS SWA -1501;N # CANADIAN SYLLABICS WEST-CREE SWA -1502;N # CANADIAN SYLLABICS SWAA -1503;N # CANADIAN SYLLABICS WEST-CREE SWAA -1504;N # CANADIAN SYLLABICS NASKAPI SWAA -1505;N # CANADIAN SYLLABICS S -1506;N # CANADIAN SYLLABICS ATHAPASCAN S -1507;N # CANADIAN SYLLABICS SW -1508;N # CANADIAN SYLLABICS BLACKFOOT S -1509;N # CANADIAN SYLLABICS MOOSE-CREE SK -150A;N # CANADIAN SYLLABICS NASKAPI SKW -150B;N # CANADIAN SYLLABICS NASKAPI S-W -150C;N # CANADIAN SYLLABICS NASKAPI SPWA -150D;N # CANADIAN SYLLABICS NASKAPI STWA -150E;N # CANADIAN SYLLABICS NASKAPI SKWA -150F;N # CANADIAN SYLLABICS NASKAPI SCWA -1510;N # CANADIAN SYLLABICS SHE -1511;N # CANADIAN SYLLABICS SHI -1512;N # CANADIAN SYLLABICS SHII -1513;N # CANADIAN SYLLABICS SHO -1514;N # CANADIAN SYLLABICS SHOO -1515;N # CANADIAN SYLLABICS SHA -1516;N # CANADIAN SYLLABICS SHAA -1517;N # CANADIAN SYLLABICS SHWE -1518;N # CANADIAN SYLLABICS WEST-CREE SHWE -1519;N # CANADIAN SYLLABICS SHWI -151A;N # CANADIAN SYLLABICS WEST-CREE SHWI -151B;N # CANADIAN SYLLABICS SHWII -151C;N # CANADIAN SYLLABICS WEST-CREE SHWII -151D;N # CANADIAN SYLLABICS SHWO -151E;N # CANADIAN SYLLABICS WEST-CREE SHWO -151F;N # CANADIAN SYLLABICS SHWOO -1520;N # CANADIAN SYLLABICS WEST-CREE SHWOO -1521;N # CANADIAN SYLLABICS SHWA -1522;N # CANADIAN SYLLABICS WEST-CREE SHWA -1523;N # CANADIAN SYLLABICS SHWAA -1524;N # CANADIAN SYLLABICS WEST-CREE SHWAA -1525;N # CANADIAN SYLLABICS SH -1526;N # CANADIAN SYLLABICS YE -1527;N # CANADIAN SYLLABICS YAAI -1528;N # CANADIAN SYLLABICS YI -1529;N # CANADIAN SYLLABICS YII -152A;N # CANADIAN SYLLABICS YO -152B;N # CANADIAN SYLLABICS YOO -152C;N # CANADIAN SYLLABICS Y-CREE YOO -152D;N # CANADIAN SYLLABICS YA -152E;N # CANADIAN SYLLABICS YAA -152F;N # CANADIAN SYLLABICS YWE -1530;N # CANADIAN SYLLABICS WEST-CREE YWE -1531;N # CANADIAN SYLLABICS YWI -1532;N # CANADIAN SYLLABICS WEST-CREE YWI -1533;N # CANADIAN SYLLABICS YWII -1534;N # CANADIAN SYLLABICS WEST-CREE YWII -1535;N # CANADIAN SYLLABICS YWO -1536;N # CANADIAN SYLLABICS WEST-CREE YWO -1537;N # CANADIAN SYLLABICS YWOO -1538;N # CANADIAN SYLLABICS WEST-CREE YWOO -1539;N # CANADIAN SYLLABICS YWA -153A;N # CANADIAN SYLLABICS WEST-CREE YWA -153B;N # CANADIAN SYLLABICS YWAA -153C;N # CANADIAN SYLLABICS WEST-CREE YWAA -153D;N # CANADIAN SYLLABICS NASKAPI YWAA -153E;N # CANADIAN SYLLABICS Y -153F;N # CANADIAN SYLLABICS BIBLE-CREE Y -1540;N # CANADIAN SYLLABICS WEST-CREE Y -1541;N # CANADIAN SYLLABICS SAYISI YI -1542;N # CANADIAN SYLLABICS RE -1543;N # CANADIAN SYLLABICS R-CREE RE -1544;N # CANADIAN SYLLABICS WEST-CREE LE -1545;N # CANADIAN SYLLABICS RAAI -1546;N # CANADIAN SYLLABICS RI -1547;N # CANADIAN SYLLABICS RII -1548;N # CANADIAN SYLLABICS RO -1549;N # CANADIAN SYLLABICS ROO -154A;N # CANADIAN SYLLABICS WEST-CREE LO -154B;N # CANADIAN SYLLABICS RA -154C;N # CANADIAN SYLLABICS RAA -154D;N # CANADIAN SYLLABICS WEST-CREE LA -154E;N # CANADIAN SYLLABICS RWAA -154F;N # CANADIAN SYLLABICS WEST-CREE RWAA -1550;N # CANADIAN SYLLABICS R -1551;N # CANADIAN SYLLABICS WEST-CREE R -1552;N # CANADIAN SYLLABICS MEDIAL R -1553;N # CANADIAN SYLLABICS FE -1554;N # CANADIAN SYLLABICS FAAI -1555;N # CANADIAN SYLLABICS FI -1556;N # CANADIAN SYLLABICS FII -1557;N # CANADIAN SYLLABICS FO -1558;N # CANADIAN SYLLABICS FOO -1559;N # CANADIAN SYLLABICS FA -155A;N # CANADIAN SYLLABICS FAA -155B;N # CANADIAN SYLLABICS FWAA -155C;N # CANADIAN SYLLABICS WEST-CREE FWAA -155D;N # CANADIAN SYLLABICS F -155E;N # CANADIAN SYLLABICS THE -155F;N # CANADIAN SYLLABICS N-CREE THE -1560;N # CANADIAN SYLLABICS THI -1561;N # CANADIAN SYLLABICS N-CREE THI -1562;N # CANADIAN SYLLABICS THII -1563;N # CANADIAN SYLLABICS N-CREE THII -1564;N # CANADIAN SYLLABICS THO -1565;N # CANADIAN SYLLABICS THOO -1566;N # CANADIAN SYLLABICS THA -1567;N # CANADIAN SYLLABICS THAA -1568;N # CANADIAN SYLLABICS THWAA -1569;N # CANADIAN SYLLABICS WEST-CREE THWAA -156A;N # CANADIAN SYLLABICS TH -156B;N # CANADIAN SYLLABICS TTHE -156C;N # CANADIAN SYLLABICS TTHI -156D;N # CANADIAN SYLLABICS TTHO -156E;N # CANADIAN SYLLABICS TTHA -156F;N # CANADIAN SYLLABICS TTH -1570;N # CANADIAN SYLLABICS TYE -1571;N # CANADIAN SYLLABICS TYI -1572;N # CANADIAN SYLLABICS TYO -1573;N # CANADIAN SYLLABICS TYA -1574;N # CANADIAN SYLLABICS NUNAVIK HE -1575;N # CANADIAN SYLLABICS NUNAVIK HI -1576;N # CANADIAN SYLLABICS NUNAVIK HII -1577;N # CANADIAN SYLLABICS NUNAVIK HO -1578;N # CANADIAN SYLLABICS NUNAVIK HOO -1579;N # CANADIAN SYLLABICS NUNAVIK HA -157A;N # CANADIAN SYLLABICS NUNAVIK HAA -157B;N # CANADIAN SYLLABICS NUNAVIK H -157C;N # CANADIAN SYLLABICS NUNAVUT H -157D;N # CANADIAN SYLLABICS HK -157E;N # CANADIAN SYLLABICS QAAI -157F;N # CANADIAN SYLLABICS QI -1580;N # CANADIAN SYLLABICS QII -1581;N # CANADIAN SYLLABICS QO -1582;N # CANADIAN SYLLABICS QOO -1583;N # CANADIAN SYLLABICS QA -1584;N # CANADIAN SYLLABICS QAA -1585;N # CANADIAN SYLLABICS Q -1586;N # CANADIAN SYLLABICS TLHE -1587;N # CANADIAN SYLLABICS TLHI -1588;N # CANADIAN SYLLABICS TLHO -1589;N # CANADIAN SYLLABICS TLHA -158A;N # CANADIAN SYLLABICS WEST-CREE RE -158B;N # CANADIAN SYLLABICS WEST-CREE RI -158C;N # CANADIAN SYLLABICS WEST-CREE RO -158D;N # CANADIAN SYLLABICS WEST-CREE RA -158E;N # CANADIAN SYLLABICS NGAAI -158F;N # CANADIAN SYLLABICS NGI -1590;N # CANADIAN SYLLABICS NGII -1591;N # CANADIAN SYLLABICS NGO -1592;N # CANADIAN SYLLABICS NGOO -1593;N # CANADIAN SYLLABICS NGA -1594;N # CANADIAN SYLLABICS NGAA -1595;N # CANADIAN SYLLABICS NG -1596;N # CANADIAN SYLLABICS NNG -1597;N # CANADIAN SYLLABICS SAYISI SHE -1598;N # CANADIAN SYLLABICS SAYISI SHI -1599;N # CANADIAN SYLLABICS SAYISI SHO -159A;N # CANADIAN SYLLABICS SAYISI SHA -159B;N # CANADIAN SYLLABICS WOODS-CREE THE -159C;N # CANADIAN SYLLABICS WOODS-CREE THI -159D;N # CANADIAN SYLLABICS WOODS-CREE THO -159E;N # CANADIAN SYLLABICS WOODS-CREE THA -159F;N # CANADIAN SYLLABICS WOODS-CREE TH -15A0;N # CANADIAN SYLLABICS LHI -15A1;N # CANADIAN SYLLABICS LHII -15A2;N # CANADIAN SYLLABICS LHO -15A3;N # CANADIAN SYLLABICS LHOO -15A4;N # CANADIAN SYLLABICS LHA -15A5;N # CANADIAN SYLLABICS LHAA -15A6;N # CANADIAN SYLLABICS LH -15A7;N # CANADIAN SYLLABICS TH-CREE THE -15A8;N # CANADIAN SYLLABICS TH-CREE THI -15A9;N # CANADIAN SYLLABICS TH-CREE THII -15AA;N # CANADIAN SYLLABICS TH-CREE THO -15AB;N # CANADIAN SYLLABICS TH-CREE THOO -15AC;N # CANADIAN SYLLABICS TH-CREE THA -15AD;N # CANADIAN SYLLABICS TH-CREE THAA -15AE;N # CANADIAN SYLLABICS TH-CREE TH -15AF;N # CANADIAN SYLLABICS AIVILIK B -15B0;N # CANADIAN SYLLABICS BLACKFOOT E -15B1;N # CANADIAN SYLLABICS BLACKFOOT I -15B2;N # CANADIAN SYLLABICS BLACKFOOT O -15B3;N # CANADIAN SYLLABICS BLACKFOOT A -15B4;N # CANADIAN SYLLABICS BLACKFOOT WE -15B5;N # CANADIAN SYLLABICS BLACKFOOT WI -15B6;N # CANADIAN SYLLABICS BLACKFOOT WO -15B7;N # CANADIAN SYLLABICS BLACKFOOT WA -15B8;N # CANADIAN SYLLABICS BLACKFOOT NE -15B9;N # CANADIAN SYLLABICS BLACKFOOT NI -15BA;N # CANADIAN SYLLABICS BLACKFOOT NO -15BB;N # CANADIAN SYLLABICS BLACKFOOT NA -15BC;N # CANADIAN SYLLABICS BLACKFOOT KE -15BD;N # CANADIAN SYLLABICS BLACKFOOT KI -15BE;N # CANADIAN SYLLABICS BLACKFOOT KO -15BF;N # CANADIAN SYLLABICS BLACKFOOT KA -15C0;N # CANADIAN SYLLABICS SAYISI HE -15C1;N # CANADIAN SYLLABICS SAYISI HI -15C2;N # CANADIAN SYLLABICS SAYISI HO -15C3;N # CANADIAN SYLLABICS SAYISI HA -15C4;N # CANADIAN SYLLABICS CARRIER GHU -15C5;N # CANADIAN SYLLABICS CARRIER GHO -15C6;N # CANADIAN SYLLABICS CARRIER GHE -15C7;N # CANADIAN SYLLABICS CARRIER GHEE -15C8;N # CANADIAN SYLLABICS CARRIER GHI -15C9;N # CANADIAN SYLLABICS CARRIER GHA -15CA;N # CANADIAN SYLLABICS CARRIER RU -15CB;N # CANADIAN SYLLABICS CARRIER RO -15CC;N # CANADIAN SYLLABICS CARRIER RE -15CD;N # CANADIAN SYLLABICS CARRIER REE -15CE;N # CANADIAN SYLLABICS CARRIER RI -15CF;N # CANADIAN SYLLABICS CARRIER RA -15D0;N # CANADIAN SYLLABICS CARRIER WU -15D1;N # CANADIAN SYLLABICS CARRIER WO -15D2;N # CANADIAN SYLLABICS CARRIER WE -15D3;N # CANADIAN SYLLABICS CARRIER WEE -15D4;N # CANADIAN SYLLABICS CARRIER WI -15D5;N # CANADIAN SYLLABICS CARRIER WA -15D6;N # CANADIAN SYLLABICS CARRIER HWU -15D7;N # CANADIAN SYLLABICS CARRIER HWO -15D8;N # CANADIAN SYLLABICS CARRIER HWE -15D9;N # CANADIAN SYLLABICS CARRIER HWEE -15DA;N # CANADIAN SYLLABICS CARRIER HWI -15DB;N # CANADIAN SYLLABICS CARRIER HWA -15DC;N # CANADIAN SYLLABICS CARRIER THU -15DD;N # CANADIAN SYLLABICS CARRIER THO -15DE;N # CANADIAN SYLLABICS CARRIER THE -15DF;N # CANADIAN SYLLABICS CARRIER THEE -15E0;N # CANADIAN SYLLABICS CARRIER THI -15E1;N # CANADIAN SYLLABICS CARRIER THA -15E2;N # CANADIAN SYLLABICS CARRIER TTU -15E3;N # CANADIAN SYLLABICS CARRIER TTO -15E4;N # CANADIAN SYLLABICS CARRIER TTE -15E5;N # CANADIAN SYLLABICS CARRIER TTEE -15E6;N # CANADIAN SYLLABICS CARRIER TTI -15E7;N # CANADIAN SYLLABICS CARRIER TTA -15E8;N # CANADIAN SYLLABICS CARRIER PU -15E9;N # CANADIAN SYLLABICS CARRIER PO -15EA;N # CANADIAN SYLLABICS CARRIER PE -15EB;N # CANADIAN SYLLABICS CARRIER PEE -15EC;N # CANADIAN SYLLABICS CARRIER PI -15ED;N # CANADIAN SYLLABICS CARRIER PA -15EE;N # CANADIAN SYLLABICS CARRIER P -15EF;N # CANADIAN SYLLABICS CARRIER GU -15F0;N # CANADIAN SYLLABICS CARRIER GO -15F1;N # CANADIAN SYLLABICS CARRIER GE -15F2;N # CANADIAN SYLLABICS CARRIER GEE -15F3;N # CANADIAN SYLLABICS CARRIER GI -15F4;N # CANADIAN SYLLABICS CARRIER GA -15F5;N # CANADIAN SYLLABICS CARRIER KHU -15F6;N # CANADIAN SYLLABICS CARRIER KHO -15F7;N # CANADIAN SYLLABICS CARRIER KHE -15F8;N # CANADIAN SYLLABICS CARRIER KHEE -15F9;N # CANADIAN SYLLABICS CARRIER KHI -15FA;N # CANADIAN SYLLABICS CARRIER KHA -15FB;N # CANADIAN SYLLABICS CARRIER KKU -15FC;N # CANADIAN SYLLABICS CARRIER KKO -15FD;N # CANADIAN SYLLABICS CARRIER KKE -15FE;N # CANADIAN SYLLABICS CARRIER KKEE -15FF;N # CANADIAN SYLLABICS CARRIER KKI -1600;N # CANADIAN SYLLABICS CARRIER KKA -1601;N # CANADIAN SYLLABICS CARRIER KK -1602;N # CANADIAN SYLLABICS CARRIER NU -1603;N # CANADIAN SYLLABICS CARRIER NO -1604;N # CANADIAN SYLLABICS CARRIER NE -1605;N # CANADIAN SYLLABICS CARRIER NEE -1606;N # CANADIAN SYLLABICS CARRIER NI -1607;N # CANADIAN SYLLABICS CARRIER NA -1608;N # CANADIAN SYLLABICS CARRIER MU -1609;N # CANADIAN SYLLABICS CARRIER MO -160A;N # CANADIAN SYLLABICS CARRIER ME -160B;N # CANADIAN SYLLABICS CARRIER MEE -160C;N # CANADIAN SYLLABICS CARRIER MI -160D;N # CANADIAN SYLLABICS CARRIER MA -160E;N # CANADIAN SYLLABICS CARRIER YU -160F;N # CANADIAN SYLLABICS CARRIER YO -1610;N # CANADIAN SYLLABICS CARRIER YE -1611;N # CANADIAN SYLLABICS CARRIER YEE -1612;N # CANADIAN SYLLABICS CARRIER YI -1613;N # CANADIAN SYLLABICS CARRIER YA -1614;N # CANADIAN SYLLABICS CARRIER JU -1615;N # CANADIAN SYLLABICS SAYISI JU -1616;N # CANADIAN SYLLABICS CARRIER JO -1617;N # CANADIAN SYLLABICS CARRIER JE -1618;N # CANADIAN SYLLABICS CARRIER JEE -1619;N # CANADIAN SYLLABICS CARRIER JI -161A;N # CANADIAN SYLLABICS SAYISI JI -161B;N # CANADIAN SYLLABICS CARRIER JA -161C;N # CANADIAN SYLLABICS CARRIER JJU -161D;N # CANADIAN SYLLABICS CARRIER JJO -161E;N # CANADIAN SYLLABICS CARRIER JJE -161F;N # CANADIAN SYLLABICS CARRIER JJEE -1620;N # CANADIAN SYLLABICS CARRIER JJI -1621;N # CANADIAN SYLLABICS CARRIER JJA -1622;N # CANADIAN SYLLABICS CARRIER LU -1623;N # CANADIAN SYLLABICS CARRIER LO -1624;N # CANADIAN SYLLABICS CARRIER LE -1625;N # CANADIAN SYLLABICS CARRIER LEE -1626;N # CANADIAN SYLLABICS CARRIER LI -1627;N # CANADIAN SYLLABICS CARRIER LA -1628;N # CANADIAN SYLLABICS CARRIER DLU -1629;N # CANADIAN SYLLABICS CARRIER DLO -162A;N # CANADIAN SYLLABICS CARRIER DLE -162B;N # CANADIAN SYLLABICS CARRIER DLEE -162C;N # CANADIAN SYLLABICS CARRIER DLI -162D;N # CANADIAN SYLLABICS CARRIER DLA -162E;N # CANADIAN SYLLABICS CARRIER LHU -162F;N # CANADIAN SYLLABICS CARRIER LHO -1630;N # CANADIAN SYLLABICS CARRIER LHE -1631;N # CANADIAN SYLLABICS CARRIER LHEE -1632;N # CANADIAN SYLLABICS CARRIER LHI -1633;N # CANADIAN SYLLABICS CARRIER LHA -1634;N # CANADIAN SYLLABICS CARRIER TLHU -1635;N # CANADIAN SYLLABICS CARRIER TLHO -1636;N # CANADIAN SYLLABICS CARRIER TLHE -1637;N # CANADIAN SYLLABICS CARRIER TLHEE -1638;N # CANADIAN SYLLABICS CARRIER TLHI -1639;N # CANADIAN SYLLABICS CARRIER TLHA -163A;N # CANADIAN SYLLABICS CARRIER TLU -163B;N # CANADIAN SYLLABICS CARRIER TLO -163C;N # CANADIAN SYLLABICS CARRIER TLE -163D;N # CANADIAN SYLLABICS CARRIER TLEE -163E;N # CANADIAN SYLLABICS CARRIER TLI -163F;N # CANADIAN SYLLABICS CARRIER TLA -1640;N # CANADIAN SYLLABICS CARRIER ZU -1641;N # CANADIAN SYLLABICS CARRIER ZO -1642;N # CANADIAN SYLLABICS CARRIER ZE -1643;N # CANADIAN SYLLABICS CARRIER ZEE -1644;N # CANADIAN SYLLABICS CARRIER ZI -1645;N # CANADIAN SYLLABICS CARRIER ZA -1646;N # CANADIAN SYLLABICS CARRIER Z -1647;N # CANADIAN SYLLABICS CARRIER INITIAL Z -1648;N # CANADIAN SYLLABICS CARRIER DZU -1649;N # CANADIAN SYLLABICS CARRIER DZO -164A;N # CANADIAN SYLLABICS CARRIER DZE -164B;N # CANADIAN SYLLABICS CARRIER DZEE -164C;N # CANADIAN SYLLABICS CARRIER DZI -164D;N # CANADIAN SYLLABICS CARRIER DZA -164E;N # CANADIAN SYLLABICS CARRIER SU -164F;N # CANADIAN SYLLABICS CARRIER SO -1650;N # CANADIAN SYLLABICS CARRIER SE -1651;N # CANADIAN SYLLABICS CARRIER SEE -1652;N # CANADIAN SYLLABICS CARRIER SI -1653;N # CANADIAN SYLLABICS CARRIER SA -1654;N # CANADIAN SYLLABICS CARRIER SHU -1655;N # CANADIAN SYLLABICS CARRIER SHO -1656;N # CANADIAN SYLLABICS CARRIER SHE -1657;N # CANADIAN SYLLABICS CARRIER SHEE -1658;N # CANADIAN SYLLABICS CARRIER SHI -1659;N # CANADIAN SYLLABICS CARRIER SHA -165A;N # CANADIAN SYLLABICS CARRIER SH -165B;N # CANADIAN SYLLABICS CARRIER TSU -165C;N # CANADIAN SYLLABICS CARRIER TSO -165D;N # CANADIAN SYLLABICS CARRIER TSE -165E;N # CANADIAN SYLLABICS CARRIER TSEE -165F;N # CANADIAN SYLLABICS CARRIER TSI -1660;N # CANADIAN SYLLABICS CARRIER TSA -1661;N # CANADIAN SYLLABICS CARRIER CHU -1662;N # CANADIAN SYLLABICS CARRIER CHO -1663;N # CANADIAN SYLLABICS CARRIER CHE -1664;N # CANADIAN SYLLABICS CARRIER CHEE -1665;N # CANADIAN SYLLABICS CARRIER CHI -1666;N # CANADIAN SYLLABICS CARRIER CHA -1667;N # CANADIAN SYLLABICS CARRIER TTSU -1668;N # CANADIAN SYLLABICS CARRIER TTSO -1669;N # CANADIAN SYLLABICS CARRIER TTSE -166A;N # CANADIAN SYLLABICS CARRIER TTSEE -166B;N # CANADIAN SYLLABICS CARRIER TTSI -166C;N # CANADIAN SYLLABICS CARRIER TTSA -166D;N # CANADIAN SYLLABICS CHI SIGN -166E;N # CANADIAN SYLLABICS FULL STOP -166F;N # CANADIAN SYLLABICS QAI -1670;N # CANADIAN SYLLABICS NGAI -1671;N # CANADIAN SYLLABICS NNGI -1672;N # CANADIAN SYLLABICS NNGII -1673;N # CANADIAN SYLLABICS NNGO -1674;N # CANADIAN SYLLABICS NNGOO -1675;N # CANADIAN SYLLABICS NNGA -1676;N # CANADIAN SYLLABICS NNGAA -1680;N # OGHAM SPACE MARK -1681;N # OGHAM LETTER BEITH -1682;N # OGHAM LETTER LUIS -1683;N # OGHAM LETTER FEARN -1684;N # OGHAM LETTER SAIL -1685;N # OGHAM LETTER NION -1686;N # OGHAM LETTER UATH -1687;N # OGHAM LETTER DAIR -1688;N # OGHAM LETTER TINNE -1689;N # OGHAM LETTER COLL -168A;N # OGHAM LETTER CEIRT -168B;N # OGHAM LETTER MUIN -168C;N # OGHAM LETTER GORT -168D;N # OGHAM LETTER NGEADAL -168E;N # OGHAM LETTER STRAIF -168F;N # OGHAM LETTER RUIS -1690;N # OGHAM LETTER AILM -1691;N # OGHAM LETTER ONN -1692;N # OGHAM LETTER UR -1693;N # OGHAM LETTER EADHADH -1694;N # OGHAM LETTER IODHADH -1695;N # OGHAM LETTER EABHADH -1696;N # OGHAM LETTER OR -1697;N # OGHAM LETTER UILLEANN -1698;N # OGHAM LETTER IFIN -1699;N # OGHAM LETTER EAMHANCHOLL -169A;N # OGHAM LETTER PEITH -169B;N # OGHAM FEATHER MARK -169C;N # OGHAM REVERSED FEATHER MARK -16A0;N # RUNIC LETTER FEHU FEOH FE F -16A1;N # RUNIC LETTER V -16A2;N # RUNIC LETTER URUZ UR U -16A3;N # RUNIC LETTER YR -16A4;N # RUNIC LETTER Y -16A5;N # RUNIC LETTER W -16A6;N # RUNIC LETTER THURISAZ THURS THORN -16A7;N # RUNIC LETTER ETH -16A8;N # RUNIC LETTER ANSUZ A -16A9;N # RUNIC LETTER OS O -16AA;N # RUNIC LETTER AC A -16AB;N # RUNIC LETTER AESC -16AC;N # RUNIC LETTER LONG-BRANCH-OSS O -16AD;N # RUNIC LETTER SHORT-TWIG-OSS O -16AE;N # RUNIC LETTER O -16AF;N # RUNIC LETTER OE -16B0;N # RUNIC LETTER ON -16B1;N # RUNIC LETTER RAIDO RAD REID R -16B2;N # RUNIC LETTER KAUNA -16B3;N # RUNIC LETTER CEN -16B4;N # RUNIC LETTER KAUN K -16B5;N # RUNIC LETTER G -16B6;N # RUNIC LETTER ENG -16B7;N # RUNIC LETTER GEBO GYFU G -16B8;N # RUNIC LETTER GAR -16B9;N # RUNIC LETTER WUNJO WYNN W -16BA;N # RUNIC LETTER HAGLAZ H -16BB;N # RUNIC LETTER HAEGL H -16BC;N # RUNIC LETTER LONG-BRANCH-HAGALL H -16BD;N # RUNIC LETTER SHORT-TWIG-HAGALL H -16BE;N # RUNIC LETTER NAUDIZ NYD NAUD N -16BF;N # RUNIC LETTER SHORT-TWIG-NAUD N -16C0;N # RUNIC LETTER DOTTED-N -16C1;N # RUNIC LETTER ISAZ IS ISS I -16C2;N # RUNIC LETTER E -16C3;N # RUNIC LETTER JERAN J -16C4;N # RUNIC LETTER GER -16C5;N # RUNIC LETTER LONG-BRANCH-AR AE -16C6;N # RUNIC LETTER SHORT-TWIG-AR A -16C7;N # RUNIC LETTER IWAZ EOH -16C8;N # RUNIC LETTER PERTHO PEORTH P -16C9;N # RUNIC LETTER ALGIZ EOLHX -16CA;N # RUNIC LETTER SOWILO S -16CB;N # RUNIC LETTER SIGEL LONG-BRANCH-SOL S -16CC;N # RUNIC LETTER SHORT-TWIG-SOL S -16CD;N # RUNIC LETTER C -16CE;N # RUNIC LETTER Z -16CF;N # RUNIC LETTER TIWAZ TIR TYR T -16D0;N # RUNIC LETTER SHORT-TWIG-TYR T -16D1;N # RUNIC LETTER D -16D2;N # RUNIC LETTER BERKANAN BEORC BJARKAN B -16D3;N # RUNIC LETTER SHORT-TWIG-BJARKAN B -16D4;N # RUNIC LETTER DOTTED-P -16D5;N # RUNIC LETTER OPEN-P -16D6;N # RUNIC LETTER EHWAZ EH E -16D7;N # RUNIC LETTER MANNAZ MAN M -16D8;N # RUNIC LETTER LONG-BRANCH-MADR M -16D9;N # RUNIC LETTER SHORT-TWIG-MADR M -16DA;N # RUNIC LETTER LAUKAZ LAGU LOGR L -16DB;N # RUNIC LETTER DOTTED-L -16DC;N # RUNIC LETTER INGWAZ -16DD;N # RUNIC LETTER ING -16DE;N # RUNIC LETTER DAGAZ DAEG D -16DF;N # RUNIC LETTER OTHALAN ETHEL O -16E0;N # RUNIC LETTER EAR -16E1;N # RUNIC LETTER IOR -16E2;N # RUNIC LETTER CWEORTH -16E3;N # RUNIC LETTER CALC -16E4;N # RUNIC LETTER CEALC -16E5;N # RUNIC LETTER STAN -16E6;N # RUNIC LETTER LONG-BRANCH-YR -16E7;N # RUNIC LETTER SHORT-TWIG-YR -16E8;N # RUNIC LETTER ICELANDIC-YR -16E9;N # RUNIC LETTER Q -16EA;N # RUNIC LETTER X -16EB;N # RUNIC SINGLE PUNCTUATION -16EC;N # RUNIC MULTIPLE PUNCTUATION -16ED;N # RUNIC CROSS PUNCTUATION -16EE;N # RUNIC ARLAUG SYMBOL -16EF;N # RUNIC TVIMADUR SYMBOL -16F0;N # RUNIC BELGTHOR SYMBOL -1700;N # TAGALOG LETTER A -1701;N # TAGALOG LETTER I -1702;N # TAGALOG LETTER U -1703;N # TAGALOG LETTER KA -1704;N # TAGALOG LETTER GA -1705;N # TAGALOG LETTER NGA -1706;N # TAGALOG LETTER TA -1707;N # TAGALOG LETTER DA -1708;N # TAGALOG LETTER NA -1709;N # TAGALOG LETTER PA -170A;N # TAGALOG LETTER BA -170B;N # TAGALOG LETTER MA -170C;N # TAGALOG LETTER YA -170E;N # TAGALOG LETTER LA -170F;N # TAGALOG LETTER WA -1710;N # TAGALOG LETTER SA -1711;N # TAGALOG LETTER HA -1712;N # TAGALOG VOWEL SIGN I -1713;N # TAGALOG VOWEL SIGN U -1714;N # TAGALOG SIGN VIRAMA -1720;N # HANUNOO LETTER A -1721;N # HANUNOO LETTER I -1722;N # HANUNOO LETTER U -1723;N # HANUNOO LETTER KA -1724;N # HANUNOO LETTER GA -1725;N # HANUNOO LETTER NGA -1726;N # HANUNOO LETTER TA -1727;N # HANUNOO LETTER DA -1728;N # HANUNOO LETTER NA -1729;N # HANUNOO LETTER PA -172A;N # HANUNOO LETTER BA -172B;N # HANUNOO LETTER MA -172C;N # HANUNOO LETTER YA -172D;N # HANUNOO LETTER RA -172E;N # HANUNOO LETTER LA -172F;N # HANUNOO LETTER WA -1730;N # HANUNOO LETTER SA -1731;N # HANUNOO LETTER HA -1732;N # HANUNOO VOWEL SIGN I -1733;N # HANUNOO VOWEL SIGN U -1734;N # HANUNOO SIGN PAMUDPOD -1735;N # PHILIPPINE SINGLE PUNCTUATION -1736;N # PHILIPPINE DOUBLE PUNCTUATION -1740;N # BUHID LETTER A -1741;N # BUHID LETTER I -1742;N # BUHID LETTER U -1743;N # BUHID LETTER KA -1744;N # BUHID LETTER GA -1745;N # BUHID LETTER NGA -1746;N # BUHID LETTER TA -1747;N # BUHID LETTER DA -1748;N # BUHID LETTER NA -1749;N # BUHID LETTER PA -174A;N # BUHID LETTER BA -174B;N # BUHID LETTER MA -174C;N # BUHID LETTER YA -174D;N # BUHID LETTER RA -174E;N # BUHID LETTER LA -174F;N # BUHID LETTER WA -1750;N # BUHID LETTER SA -1751;N # BUHID LETTER HA -1752;N # BUHID VOWEL SIGN I -1753;N # BUHID VOWEL SIGN U -1760;N # TAGBANWA LETTER A -1761;N # TAGBANWA LETTER I -1762;N # TAGBANWA LETTER U -1763;N # TAGBANWA LETTER KA -1764;N # TAGBANWA LETTER GA -1765;N # TAGBANWA LETTER NGA -1766;N # TAGBANWA LETTER TA -1767;N # TAGBANWA LETTER DA -1768;N # TAGBANWA LETTER NA -1769;N # TAGBANWA LETTER PA -176A;N # TAGBANWA LETTER BA -176B;N # TAGBANWA LETTER MA -176C;N # TAGBANWA LETTER YA -176E;N # TAGBANWA LETTER LA -176F;N # TAGBANWA LETTER WA -1770;N # TAGBANWA LETTER SA -1772;N # TAGBANWA VOWEL SIGN I -1773;N # TAGBANWA VOWEL SIGN U -1780;N # KHMER LETTER KA -1781;N # KHMER LETTER KHA -1782;N # KHMER LETTER KO -1783;N # KHMER LETTER KHO -1784;N # KHMER LETTER NGO -1785;N # KHMER LETTER CA -1786;N # KHMER LETTER CHA -1787;N # KHMER LETTER CO -1788;N # KHMER LETTER CHO -1789;N # KHMER LETTER NYO -178A;N # KHMER LETTER DA -178B;N # KHMER LETTER TTHA -178C;N # KHMER LETTER DO -178D;N # KHMER LETTER TTHO -178E;N # KHMER LETTER NNO -178F;N # KHMER LETTER TA -1790;N # KHMER LETTER THA -1791;N # KHMER LETTER TO -1792;N # KHMER LETTER THO -1793;N # KHMER LETTER NO -1794;N # KHMER LETTER BA -1795;N # KHMER LETTER PHA -1796;N # KHMER LETTER PO -1797;N # KHMER LETTER PHO -1798;N # KHMER LETTER MO -1799;N # KHMER LETTER YO -179A;N # KHMER LETTER RO -179B;N # KHMER LETTER LO -179C;N # KHMER LETTER VO -179D;N # KHMER LETTER SHA -179E;N # KHMER LETTER SSO -179F;N # KHMER LETTER SA -17A0;N # KHMER LETTER HA -17A1;N # KHMER LETTER LA -17A2;N # KHMER LETTER QA -17A3;N # KHMER INDEPENDENT VOWEL QAQ -17A4;N # KHMER INDEPENDENT VOWEL QAA -17A5;N # KHMER INDEPENDENT VOWEL QI -17A6;N # KHMER INDEPENDENT VOWEL QII -17A7;N # KHMER INDEPENDENT VOWEL QU -17A8;N # KHMER INDEPENDENT VOWEL QUK -17A9;N # KHMER INDEPENDENT VOWEL QUU -17AA;N # KHMER INDEPENDENT VOWEL QUUV -17AB;N # KHMER INDEPENDENT VOWEL RY -17AC;N # KHMER INDEPENDENT VOWEL RYY -17AD;N # KHMER INDEPENDENT VOWEL LY -17AE;N # KHMER INDEPENDENT VOWEL LYY -17AF;N # KHMER INDEPENDENT VOWEL QE -17B0;N # KHMER INDEPENDENT VOWEL QAI -17B1;N # KHMER INDEPENDENT VOWEL QOO TYPE ONE -17B2;N # KHMER INDEPENDENT VOWEL QOO TYPE TWO -17B3;N # KHMER INDEPENDENT VOWEL QAU -17B4;N # KHMER VOWEL INHERENT AQ -17B5;N # KHMER VOWEL INHERENT AA -17B6;N # KHMER VOWEL SIGN AA -17B7;N # KHMER VOWEL SIGN I -17B8;N # KHMER VOWEL SIGN II -17B9;N # KHMER VOWEL SIGN Y -17BA;N # KHMER VOWEL SIGN YY -17BB;N # KHMER VOWEL SIGN U -17BC;N # KHMER VOWEL SIGN UU -17BD;N # KHMER VOWEL SIGN UA -17BE;N # KHMER VOWEL SIGN OE -17BF;N # KHMER VOWEL SIGN YA -17C0;N # KHMER VOWEL SIGN IE -17C1;N # KHMER VOWEL SIGN E -17C2;N # KHMER VOWEL SIGN AE -17C3;N # KHMER VOWEL SIGN AI -17C4;N # KHMER VOWEL SIGN OO -17C5;N # KHMER VOWEL SIGN AU -17C6;N # KHMER SIGN NIKAHIT -17C7;N # KHMER SIGN REAHMUK -17C8;N # KHMER SIGN YUUKALEAPINTU -17C9;N # KHMER SIGN MUUSIKATOAN -17CA;N # KHMER SIGN TRIISAP -17CB;N # KHMER SIGN BANTOC -17CC;N # KHMER SIGN ROBAT -17CD;N # KHMER SIGN TOANDAKHIAT -17CE;N # KHMER SIGN KAKABAT -17CF;N # KHMER SIGN AHSDA -17D0;N # KHMER SIGN SAMYOK SANNYA -17D1;N # KHMER SIGN VIRIAM -17D2;N # KHMER SIGN COENG -17D3;N # KHMER SIGN BATHAMASAT -17D4;N # KHMER SIGN KHAN -17D5;N # KHMER SIGN BARIYOOSAN -17D6;N # KHMER SIGN CAMNUC PII KUUH -17D7;N # KHMER SIGN LEK TOO -17D8;N # KHMER SIGN BEYYAL -17D9;N # KHMER SIGN PHNAEK MUAN -17DA;N # KHMER SIGN KOOMUUT -17DB;N # KHMER CURRENCY SYMBOL RIEL -17DC;N # KHMER SIGN AVAKRAHASANYA -17DD;N # KHMER SIGN ATTHACAN -17E0;N # KHMER DIGIT ZERO -17E1;N # KHMER DIGIT ONE -17E2;N # KHMER DIGIT TWO -17E3;N # KHMER DIGIT THREE -17E4;N # KHMER DIGIT FOUR -17E5;N # KHMER DIGIT FIVE -17E6;N # KHMER DIGIT SIX -17E7;N # KHMER DIGIT SEVEN -17E8;N # KHMER DIGIT EIGHT -17E9;N # KHMER DIGIT NINE -17F0;N # KHMER SYMBOL LEK ATTAK SON -17F1;N # KHMER SYMBOL LEK ATTAK MUOY -17F2;N # KHMER SYMBOL LEK ATTAK PII -17F3;N # KHMER SYMBOL LEK ATTAK BEI -17F4;N # KHMER SYMBOL LEK ATTAK BUON -17F5;N # KHMER SYMBOL LEK ATTAK PRAM -17F6;N # KHMER SYMBOL LEK ATTAK PRAM-MUOY -17F7;N # KHMER SYMBOL LEK ATTAK PRAM-PII -17F8;N # KHMER SYMBOL LEK ATTAK PRAM-BEI -17F9;N # KHMER SYMBOL LEK ATTAK PRAM-BUON -1800;N # MONGOLIAN BIRGA -1801;N # MONGOLIAN ELLIPSIS -1802;N # MONGOLIAN COMMA -1803;N # MONGOLIAN FULL STOP -1804;N # MONGOLIAN COLON -1805;N # MONGOLIAN FOUR DOTS -1806;N # MONGOLIAN TODO SOFT HYPHEN -1807;N # MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER -1808;N # MONGOLIAN MANCHU COMMA -1809;N # MONGOLIAN MANCHU FULL STOP -180A;N # MONGOLIAN NIRUGU -180B;N # MONGOLIAN FREE VARIATION SELECTOR ONE -180C;N # MONGOLIAN FREE VARIATION SELECTOR TWO -180D;N # MONGOLIAN FREE VARIATION SELECTOR THREE -180E;N # MONGOLIAN VOWEL SEPARATOR -1810;N # MONGOLIAN DIGIT ZERO -1811;N # MONGOLIAN DIGIT ONE -1812;N # MONGOLIAN DIGIT TWO -1813;N # MONGOLIAN DIGIT THREE -1814;N # MONGOLIAN DIGIT FOUR -1815;N # MONGOLIAN DIGIT FIVE -1816;N # MONGOLIAN DIGIT SIX -1817;N # MONGOLIAN DIGIT SEVEN -1818;N # MONGOLIAN DIGIT EIGHT -1819;N # MONGOLIAN DIGIT NINE -1820;N # MONGOLIAN LETTER A -1821;N # MONGOLIAN LETTER E -1822;N # MONGOLIAN LETTER I -1823;N # MONGOLIAN LETTER O -1824;N # MONGOLIAN LETTER U -1825;N # MONGOLIAN LETTER OE -1826;N # MONGOLIAN LETTER UE -1827;N # MONGOLIAN LETTER EE -1828;N # MONGOLIAN LETTER NA -1829;N # MONGOLIAN LETTER ANG -182A;N # MONGOLIAN LETTER BA -182B;N # MONGOLIAN LETTER PA -182C;N # MONGOLIAN LETTER QA -182D;N # MONGOLIAN LETTER GA -182E;N # MONGOLIAN LETTER MA -182F;N # MONGOLIAN LETTER LA -1830;N # MONGOLIAN LETTER SA -1831;N # MONGOLIAN LETTER SHA -1832;N # MONGOLIAN LETTER TA -1833;N # MONGOLIAN LETTER DA -1834;N # MONGOLIAN LETTER CHA -1835;N # MONGOLIAN LETTER JA -1836;N # MONGOLIAN LETTER YA -1837;N # MONGOLIAN LETTER RA -1838;N # MONGOLIAN LETTER WA -1839;N # MONGOLIAN LETTER FA -183A;N # MONGOLIAN LETTER KA -183B;N # MONGOLIAN LETTER KHA -183C;N # MONGOLIAN LETTER TSA -183D;N # MONGOLIAN LETTER ZA -183E;N # MONGOLIAN LETTER HAA -183F;N # MONGOLIAN LETTER ZRA -1840;N # MONGOLIAN LETTER LHA -1841;N # MONGOLIAN LETTER ZHI -1842;N # MONGOLIAN LETTER CHI -1843;N # MONGOLIAN LETTER TODO LONG VOWEL SIGN -1844;N # MONGOLIAN LETTER TODO E -1845;N # MONGOLIAN LETTER TODO I -1846;N # MONGOLIAN LETTER TODO O -1847;N # MONGOLIAN LETTER TODO U -1848;N # MONGOLIAN LETTER TODO OE -1849;N # MONGOLIAN LETTER TODO UE -184A;N # MONGOLIAN LETTER TODO ANG -184B;N # MONGOLIAN LETTER TODO BA -184C;N # MONGOLIAN LETTER TODO PA -184D;N # MONGOLIAN LETTER TODO QA -184E;N # MONGOLIAN LETTER TODO GA -184F;N # MONGOLIAN LETTER TODO MA -1850;N # MONGOLIAN LETTER TODO TA -1851;N # MONGOLIAN LETTER TODO DA -1852;N # MONGOLIAN LETTER TODO CHA -1853;N # MONGOLIAN LETTER TODO JA -1854;N # MONGOLIAN LETTER TODO TSA -1855;N # MONGOLIAN LETTER TODO YA -1856;N # MONGOLIAN LETTER TODO WA -1857;N # MONGOLIAN LETTER TODO KA -1858;N # MONGOLIAN LETTER TODO GAA -1859;N # MONGOLIAN LETTER TODO HAA -185A;N # MONGOLIAN LETTER TODO JIA -185B;N # MONGOLIAN LETTER TODO NIA -185C;N # MONGOLIAN LETTER TODO DZA -185D;N # MONGOLIAN LETTER SIBE E -185E;N # MONGOLIAN LETTER SIBE I -185F;N # MONGOLIAN LETTER SIBE IY -1860;N # MONGOLIAN LETTER SIBE UE -1861;N # MONGOLIAN LETTER SIBE U -1862;N # MONGOLIAN LETTER SIBE ANG -1863;N # MONGOLIAN LETTER SIBE KA -1864;N # MONGOLIAN LETTER SIBE GA -1865;N # MONGOLIAN LETTER SIBE HA -1866;N # MONGOLIAN LETTER SIBE PA -1867;N # MONGOLIAN LETTER SIBE SHA -1868;N # MONGOLIAN LETTER SIBE TA -1869;N # MONGOLIAN LETTER SIBE DA -186A;N # MONGOLIAN LETTER SIBE JA -186B;N # MONGOLIAN LETTER SIBE FA -186C;N # MONGOLIAN LETTER SIBE GAA -186D;N # MONGOLIAN LETTER SIBE HAA -186E;N # MONGOLIAN LETTER SIBE TSA -186F;N # MONGOLIAN LETTER SIBE ZA -1870;N # MONGOLIAN LETTER SIBE RAA -1871;N # MONGOLIAN LETTER SIBE CHA -1872;N # MONGOLIAN LETTER SIBE ZHA -1873;N # MONGOLIAN LETTER MANCHU I -1874;N # MONGOLIAN LETTER MANCHU KA -1875;N # MONGOLIAN LETTER MANCHU RA -1876;N # MONGOLIAN LETTER MANCHU FA -1877;N # MONGOLIAN LETTER MANCHU ZHA -1880;N # MONGOLIAN LETTER ALI GALI ANUSVARA ONE -1881;N # MONGOLIAN LETTER ALI GALI VISARGA ONE -1882;N # MONGOLIAN LETTER ALI GALI DAMARU -1883;N # MONGOLIAN LETTER ALI GALI UBADAMA -1884;N # MONGOLIAN LETTER ALI GALI INVERTED UBADAMA -1885;N # MONGOLIAN LETTER ALI GALI BALUDA -1886;N # MONGOLIAN LETTER ALI GALI THREE BALUDA -1887;N # MONGOLIAN LETTER ALI GALI A -1888;N # MONGOLIAN LETTER ALI GALI I -1889;N # MONGOLIAN LETTER ALI GALI KA -188A;N # MONGOLIAN LETTER ALI GALI NGA -188B;N # MONGOLIAN LETTER ALI GALI CA -188C;N # MONGOLIAN LETTER ALI GALI TTA -188D;N # MONGOLIAN LETTER ALI GALI TTHA -188E;N # MONGOLIAN LETTER ALI GALI DDA -188F;N # MONGOLIAN LETTER ALI GALI NNA -1890;N # MONGOLIAN LETTER ALI GALI TA -1891;N # MONGOLIAN LETTER ALI GALI DA -1892;N # MONGOLIAN LETTER ALI GALI PA -1893;N # MONGOLIAN LETTER ALI GALI PHA -1894;N # MONGOLIAN LETTER ALI GALI SSA -1895;N # MONGOLIAN LETTER ALI GALI ZHA -1896;N # MONGOLIAN LETTER ALI GALI ZA -1897;N # MONGOLIAN LETTER ALI GALI AH -1898;N # MONGOLIAN LETTER TODO ALI GALI TA -1899;N # MONGOLIAN LETTER TODO ALI GALI ZHA -189A;N # MONGOLIAN LETTER MANCHU ALI GALI GHA -189B;N # MONGOLIAN LETTER MANCHU ALI GALI NGA -189C;N # MONGOLIAN LETTER MANCHU ALI GALI CA -189D;N # MONGOLIAN LETTER MANCHU ALI GALI JHA -189E;N # MONGOLIAN LETTER MANCHU ALI GALI TTA -189F;N # MONGOLIAN LETTER MANCHU ALI GALI DDHA -18A0;N # MONGOLIAN LETTER MANCHU ALI GALI TA -18A1;N # MONGOLIAN LETTER MANCHU ALI GALI DHA -18A2;N # MONGOLIAN LETTER MANCHU ALI GALI SSA -18A3;N # MONGOLIAN LETTER MANCHU ALI GALI CYA -18A4;N # MONGOLIAN LETTER MANCHU ALI GALI ZHA -18A5;N # MONGOLIAN LETTER MANCHU ALI GALI ZA -18A6;N # MONGOLIAN LETTER ALI GALI HALF U -18A7;N # MONGOLIAN LETTER ALI GALI HALF YA -18A8;N # MONGOLIAN LETTER MANCHU ALI GALI BHA -18A9;N # MONGOLIAN LETTER ALI GALI DAGALGA -1900;N # LIMBU VOWEL-CARRIER LETTER -1901;N # LIMBU LETTER KA -1902;N # LIMBU LETTER KHA -1903;N # LIMBU LETTER GA -1904;N # LIMBU LETTER GHA -1905;N # LIMBU LETTER NGA -1906;N # LIMBU LETTER CA -1907;N # LIMBU LETTER CHA -1908;N # LIMBU LETTER JA -1909;N # LIMBU LETTER JHA -190A;N # LIMBU LETTER YAN -190B;N # LIMBU LETTER TA -190C;N # LIMBU LETTER THA -190D;N # LIMBU LETTER DA -190E;N # LIMBU LETTER DHA -190F;N # LIMBU LETTER NA -1910;N # LIMBU LETTER PA -1911;N # LIMBU LETTER PHA -1912;N # LIMBU LETTER BA -1913;N # LIMBU LETTER BHA -1914;N # LIMBU LETTER MA -1915;N # LIMBU LETTER YA -1916;N # LIMBU LETTER RA -1917;N # LIMBU LETTER LA -1918;N # LIMBU LETTER WA -1919;N # LIMBU LETTER SHA -191A;N # LIMBU LETTER SSA -191B;N # LIMBU LETTER SA -191C;N # LIMBU LETTER HA -1920;N # LIMBU VOWEL SIGN A -1921;N # LIMBU VOWEL SIGN I -1922;N # LIMBU VOWEL SIGN U -1923;N # LIMBU VOWEL SIGN EE -1924;N # LIMBU VOWEL SIGN AI -1925;N # LIMBU VOWEL SIGN OO -1926;N # LIMBU VOWEL SIGN AU -1927;N # LIMBU VOWEL SIGN E -1928;N # LIMBU VOWEL SIGN O -1929;N # LIMBU SUBJOINED LETTER YA -192A;N # LIMBU SUBJOINED LETTER RA -192B;N # LIMBU SUBJOINED LETTER WA -1930;N # LIMBU SMALL LETTER KA -1931;N # LIMBU SMALL LETTER NGA -1932;N # LIMBU SMALL LETTER ANUSVARA -1933;N # LIMBU SMALL LETTER TA -1934;N # LIMBU SMALL LETTER NA -1935;N # LIMBU SMALL LETTER PA -1936;N # LIMBU SMALL LETTER MA -1937;N # LIMBU SMALL LETTER RA -1938;N # LIMBU SMALL LETTER LA -1939;N # LIMBU SIGN MUKPHRENG -193A;N # LIMBU SIGN KEMPHRENG -193B;N # LIMBU SIGN SA-I -1940;N # LIMBU SIGN LOO -1944;N # LIMBU EXCLAMATION MARK -1945;N # LIMBU QUESTION MARK -1946;N # LIMBU DIGIT ZERO -1947;N # LIMBU DIGIT ONE -1948;N # LIMBU DIGIT TWO -1949;N # LIMBU DIGIT THREE -194A;N # LIMBU DIGIT FOUR -194B;N # LIMBU DIGIT FIVE -194C;N # LIMBU DIGIT SIX -194D;N # LIMBU DIGIT SEVEN -194E;N # LIMBU DIGIT EIGHT -194F;N # LIMBU DIGIT NINE -1950;N # TAI LE LETTER KA -1951;N # TAI LE LETTER XA -1952;N # TAI LE LETTER NGA -1953;N # TAI LE LETTER TSA -1954;N # TAI LE LETTER SA -1955;N # TAI LE LETTER YA -1956;N # TAI LE LETTER TA -1957;N # TAI LE LETTER THA -1958;N # TAI LE LETTER LA -1959;N # TAI LE LETTER PA -195A;N # TAI LE LETTER PHA -195B;N # TAI LE LETTER MA -195C;N # TAI LE LETTER FA -195D;N # TAI LE LETTER VA -195E;N # TAI LE LETTER HA -195F;N # TAI LE LETTER QA -1960;N # TAI LE LETTER KHA -1961;N # TAI LE LETTER TSHA -1962;N # TAI LE LETTER NA -1963;N # TAI LE LETTER A -1964;N # TAI LE LETTER I -1965;N # TAI LE LETTER EE -1966;N # TAI LE LETTER EH -1967;N # TAI LE LETTER U -1968;N # TAI LE LETTER OO -1969;N # TAI LE LETTER O -196A;N # TAI LE LETTER UE -196B;N # TAI LE LETTER E -196C;N # TAI LE LETTER AUE -196D;N # TAI LE LETTER AI -1970;N # TAI LE LETTER TONE-2 -1971;N # TAI LE LETTER TONE-3 -1972;N # TAI LE LETTER TONE-4 -1973;N # TAI LE LETTER TONE-5 -1974;N # TAI LE LETTER TONE-6 -1980;N # NEW TAI LUE LETTER HIGH QA -1981;N # NEW TAI LUE LETTER LOW QA -1982;N # NEW TAI LUE LETTER HIGH KA -1983;N # NEW TAI LUE LETTER HIGH XA -1984;N # NEW TAI LUE LETTER HIGH NGA -1985;N # NEW TAI LUE LETTER LOW KA -1986;N # NEW TAI LUE LETTER LOW XA -1987;N # NEW TAI LUE LETTER LOW NGA -1988;N # NEW TAI LUE LETTER HIGH TSA -1989;N # NEW TAI LUE LETTER HIGH SA -198A;N # NEW TAI LUE LETTER HIGH YA -198B;N # NEW TAI LUE LETTER LOW TSA -198C;N # NEW TAI LUE LETTER LOW SA -198D;N # NEW TAI LUE LETTER LOW YA -198E;N # NEW TAI LUE LETTER HIGH TA -198F;N # NEW TAI LUE LETTER HIGH THA -1990;N # NEW TAI LUE LETTER HIGH NA -1991;N # NEW TAI LUE LETTER LOW TA -1992;N # NEW TAI LUE LETTER LOW THA -1993;N # NEW TAI LUE LETTER LOW NA -1994;N # NEW TAI LUE LETTER HIGH PA -1995;N # NEW TAI LUE LETTER HIGH PHA -1996;N # NEW TAI LUE LETTER HIGH MA -1997;N # NEW TAI LUE LETTER LOW PA -1998;N # NEW TAI LUE LETTER LOW PHA -1999;N # NEW TAI LUE LETTER LOW MA -199A;N # NEW TAI LUE LETTER HIGH FA -199B;N # NEW TAI LUE LETTER HIGH VA -199C;N # NEW TAI LUE LETTER HIGH LA -199D;N # NEW TAI LUE LETTER LOW FA -199E;N # NEW TAI LUE LETTER LOW VA -199F;N # NEW TAI LUE LETTER LOW LA -19A0;N # NEW TAI LUE LETTER HIGH HA -19A1;N # NEW TAI LUE LETTER HIGH DA -19A2;N # NEW TAI LUE LETTER HIGH BA -19A3;N # NEW TAI LUE LETTER LOW HA -19A4;N # NEW TAI LUE LETTER LOW DA -19A5;N # NEW TAI LUE LETTER LOW BA -19A6;N # NEW TAI LUE LETTER HIGH KVA -19A7;N # NEW TAI LUE LETTER HIGH XVA -19A8;N # NEW TAI LUE LETTER LOW KVA -19A9;N # NEW TAI LUE LETTER LOW XVA -19B0;N # NEW TAI LUE VOWEL SIGN VOWEL SHORTENER -19B1;N # NEW TAI LUE VOWEL SIGN AA -19B2;N # NEW TAI LUE VOWEL SIGN II -19B3;N # NEW TAI LUE VOWEL SIGN U -19B4;N # NEW TAI LUE VOWEL SIGN UU -19B5;N # NEW TAI LUE VOWEL SIGN E -19B6;N # NEW TAI LUE VOWEL SIGN AE -19B7;N # NEW TAI LUE VOWEL SIGN O -19B8;N # NEW TAI LUE VOWEL SIGN OA -19B9;N # NEW TAI LUE VOWEL SIGN UE -19BA;N # NEW TAI LUE VOWEL SIGN AY -19BB;N # NEW TAI LUE VOWEL SIGN AAY -19BC;N # NEW TAI LUE VOWEL SIGN UY -19BD;N # NEW TAI LUE VOWEL SIGN OY -19BE;N # NEW TAI LUE VOWEL SIGN OAY -19BF;N # NEW TAI LUE VOWEL SIGN UEY -19C0;N # NEW TAI LUE VOWEL SIGN IY -19C1;N # NEW TAI LUE LETTER FINAL V -19C2;N # NEW TAI LUE LETTER FINAL NG -19C3;N # NEW TAI LUE LETTER FINAL N -19C4;N # NEW TAI LUE LETTER FINAL M -19C5;N # NEW TAI LUE LETTER FINAL K -19C6;N # NEW TAI LUE LETTER FINAL D -19C7;N # NEW TAI LUE LETTER FINAL B -19C8;N # NEW TAI LUE TONE MARK-1 -19C9;N # NEW TAI LUE TONE MARK-2 -19D0;N # NEW TAI LUE DIGIT ZERO -19D1;N # NEW TAI LUE DIGIT ONE -19D2;N # NEW TAI LUE DIGIT TWO -19D3;N # NEW TAI LUE DIGIT THREE -19D4;N # NEW TAI LUE DIGIT FOUR -19D5;N # NEW TAI LUE DIGIT FIVE -19D6;N # NEW TAI LUE DIGIT SIX -19D7;N # NEW TAI LUE DIGIT SEVEN -19D8;N # NEW TAI LUE DIGIT EIGHT -19D9;N # NEW TAI LUE DIGIT NINE -19DE;N # NEW TAI LUE SIGN LAE -19DF;N # NEW TAI LUE SIGN LAEV -19E0;N # KHMER SYMBOL PATHAMASAT -19E1;N # KHMER SYMBOL MUOY KOET -19E2;N # KHMER SYMBOL PII KOET -19E3;N # KHMER SYMBOL BEI KOET -19E4;N # KHMER SYMBOL BUON KOET -19E5;N # KHMER SYMBOL PRAM KOET -19E6;N # KHMER SYMBOL PRAM-MUOY KOET -19E7;N # KHMER SYMBOL PRAM-PII KOET -19E8;N # KHMER SYMBOL PRAM-BEI KOET -19E9;N # KHMER SYMBOL PRAM-BUON KOET -19EA;N # KHMER SYMBOL DAP KOET -19EB;N # KHMER SYMBOL DAP-MUOY KOET -19EC;N # KHMER SYMBOL DAP-PII KOET -19ED;N # KHMER SYMBOL DAP-BEI KOET -19EE;N # KHMER SYMBOL DAP-BUON KOET -19EF;N # KHMER SYMBOL DAP-PRAM KOET -19F0;N # KHMER SYMBOL TUTEYASAT -19F1;N # KHMER SYMBOL MUOY ROC -19F2;N # KHMER SYMBOL PII ROC -19F3;N # KHMER SYMBOL BEI ROC -19F4;N # KHMER SYMBOL BUON ROC -19F5;N # KHMER SYMBOL PRAM ROC -19F6;N # KHMER SYMBOL PRAM-MUOY ROC -19F7;N # KHMER SYMBOL PRAM-PII ROC -19F8;N # KHMER SYMBOL PRAM-BEI ROC -19F9;N # KHMER SYMBOL PRAM-BUON ROC -19FA;N # KHMER SYMBOL DAP ROC -19FB;N # KHMER SYMBOL DAP-MUOY ROC -19FC;N # KHMER SYMBOL DAP-PII ROC -19FD;N # KHMER SYMBOL DAP-BEI ROC -19FE;N # KHMER SYMBOL DAP-BUON ROC -19FF;N # KHMER SYMBOL DAP-PRAM ROC -1A00;N # BUGINESE LETTER KA -1A01;N # BUGINESE LETTER GA -1A02;N # BUGINESE LETTER NGA -1A03;N # BUGINESE LETTER NGKA -1A04;N # BUGINESE LETTER PA -1A05;N # BUGINESE LETTER BA -1A06;N # BUGINESE LETTER MA -1A07;N # BUGINESE LETTER MPA -1A08;N # BUGINESE LETTER TA -1A09;N # BUGINESE LETTER DA -1A0A;N # BUGINESE LETTER NA -1A0B;N # BUGINESE LETTER NRA -1A0C;N # BUGINESE LETTER CA -1A0D;N # BUGINESE LETTER JA -1A0E;N # BUGINESE LETTER NYA -1A0F;N # BUGINESE LETTER NYCA -1A10;N # BUGINESE LETTER YA -1A11;N # BUGINESE LETTER RA -1A12;N # BUGINESE LETTER LA -1A13;N # BUGINESE LETTER VA -1A14;N # BUGINESE LETTER SA -1A15;N # BUGINESE LETTER A -1A16;N # BUGINESE LETTER HA -1A17;N # BUGINESE VOWEL SIGN I -1A18;N # BUGINESE VOWEL SIGN U -1A19;N # BUGINESE VOWEL SIGN E -1A1A;N # BUGINESE VOWEL SIGN O -1A1B;N # BUGINESE VOWEL SIGN AE -1A1E;N # BUGINESE PALLAWA -1A1F;N # BUGINESE END OF SECTION -1D00;N # LATIN LETTER SMALL CAPITAL A -1D01;N # LATIN LETTER SMALL CAPITAL AE -1D02;N # LATIN SMALL LETTER TURNED AE -1D03;N # LATIN LETTER SMALL CAPITAL BARRED B -1D04;N # LATIN LETTER SMALL CAPITAL C -1D05;N # LATIN LETTER SMALL CAPITAL D -1D06;N # LATIN LETTER SMALL CAPITAL ETH -1D07;N # LATIN LETTER SMALL CAPITAL E -1D08;N # LATIN SMALL LETTER TURNED OPEN E -1D09;N # LATIN SMALL LETTER TURNED I -1D0A;N # LATIN LETTER SMALL CAPITAL J -1D0B;N # LATIN LETTER SMALL CAPITAL K -1D0C;N # LATIN LETTER SMALL CAPITAL L WITH STROKE -1D0D;N # LATIN LETTER SMALL CAPITAL M -1D0E;N # LATIN LETTER SMALL CAPITAL REVERSED N -1D0F;N # LATIN LETTER SMALL CAPITAL O -1D10;N # LATIN LETTER SMALL CAPITAL OPEN O -1D11;N # LATIN SMALL LETTER SIDEWAYS O -1D12;N # LATIN SMALL LETTER SIDEWAYS OPEN O -1D13;N # LATIN SMALL LETTER SIDEWAYS O WITH STROKE -1D14;N # LATIN SMALL LETTER TURNED OE -1D15;N # LATIN LETTER SMALL CAPITAL OU -1D16;N # LATIN SMALL LETTER TOP HALF O -1D17;N # LATIN SMALL LETTER BOTTOM HALF O -1D18;N # LATIN LETTER SMALL CAPITAL P -1D19;N # LATIN LETTER SMALL CAPITAL REVERSED R -1D1A;N # LATIN LETTER SMALL CAPITAL TURNED R -1D1B;N # LATIN LETTER SMALL CAPITAL T -1D1C;N # LATIN LETTER SMALL CAPITAL U -1D1D;N # LATIN SMALL LETTER SIDEWAYS U -1D1E;N # LATIN SMALL LETTER SIDEWAYS DIAERESIZED U -1D1F;N # LATIN SMALL LETTER SIDEWAYS TURNED M -1D20;N # LATIN LETTER SMALL CAPITAL V -1D21;N # LATIN LETTER SMALL CAPITAL W -1D22;N # LATIN LETTER SMALL CAPITAL Z -1D23;N # LATIN LETTER SMALL CAPITAL EZH -1D24;N # LATIN LETTER VOICED LARYNGEAL SPIRANT -1D25;N # LATIN LETTER AIN -1D26;N # GREEK LETTER SMALL CAPITAL GAMMA -1D27;N # GREEK LETTER SMALL CAPITAL LAMDA -1D28;N # GREEK LETTER SMALL CAPITAL PI -1D29;N # GREEK LETTER SMALL CAPITAL RHO -1D2A;N # GREEK LETTER SMALL CAPITAL PSI -1D2B;N # CYRILLIC LETTER SMALL CAPITAL EL -1D2C;N # MODIFIER LETTER CAPITAL A -1D2D;N # MODIFIER LETTER CAPITAL AE -1D2E;N # MODIFIER LETTER CAPITAL B -1D2F;N # MODIFIER LETTER CAPITAL BARRED B -1D30;N # MODIFIER LETTER CAPITAL D -1D31;N # MODIFIER LETTER CAPITAL E -1D32;N # MODIFIER LETTER CAPITAL REVERSED E -1D33;N # MODIFIER LETTER CAPITAL G -1D34;N # MODIFIER LETTER CAPITAL H -1D35;N # MODIFIER LETTER CAPITAL I -1D36;N # MODIFIER LETTER CAPITAL J -1D37;N # MODIFIER LETTER CAPITAL K -1D38;N # MODIFIER LETTER CAPITAL L -1D39;N # MODIFIER LETTER CAPITAL M -1D3A;N # MODIFIER LETTER CAPITAL N -1D3B;N # MODIFIER LETTER CAPITAL REVERSED N -1D3C;N # MODIFIER LETTER CAPITAL O -1D3D;N # MODIFIER LETTER CAPITAL OU -1D3E;N # MODIFIER LETTER CAPITAL P -1D3F;N # MODIFIER LETTER CAPITAL R -1D40;N # MODIFIER LETTER CAPITAL T -1D41;N # MODIFIER LETTER CAPITAL U -1D42;N # MODIFIER LETTER CAPITAL W -1D43;N # MODIFIER LETTER SMALL A -1D44;N # MODIFIER LETTER SMALL TURNED A -1D45;N # MODIFIER LETTER SMALL ALPHA -1D46;N # MODIFIER LETTER SMALL TURNED AE -1D47;N # MODIFIER LETTER SMALL B -1D48;N # MODIFIER LETTER SMALL D -1D49;N # MODIFIER LETTER SMALL E -1D4A;N # MODIFIER LETTER SMALL SCHWA -1D4B;N # MODIFIER LETTER SMALL OPEN E -1D4C;N # MODIFIER LETTER SMALL TURNED OPEN E -1D4D;N # MODIFIER LETTER SMALL G -1D4E;N # MODIFIER LETTER SMALL TURNED I -1D4F;N # MODIFIER LETTER SMALL K -1D50;N # MODIFIER LETTER SMALL M -1D51;N # MODIFIER LETTER SMALL ENG -1D52;N # MODIFIER LETTER SMALL O -1D53;N # MODIFIER LETTER SMALL OPEN O -1D54;N # MODIFIER LETTER SMALL TOP HALF O -1D55;N # MODIFIER LETTER SMALL BOTTOM HALF O -1D56;N # MODIFIER LETTER SMALL P -1D57;N # MODIFIER LETTER SMALL T -1D58;N # MODIFIER LETTER SMALL U -1D59;N # MODIFIER LETTER SMALL SIDEWAYS U -1D5A;N # MODIFIER LETTER SMALL TURNED M -1D5B;N # MODIFIER LETTER SMALL V -1D5C;N # MODIFIER LETTER SMALL AIN -1D5D;N # MODIFIER LETTER SMALL BETA -1D5E;N # MODIFIER LETTER SMALL GREEK GAMMA -1D5F;N # MODIFIER LETTER SMALL DELTA -1D60;N # MODIFIER LETTER SMALL GREEK PHI -1D61;N # MODIFIER LETTER SMALL CHI -1D62;N # LATIN SUBSCRIPT SMALL LETTER I -1D63;N # LATIN SUBSCRIPT SMALL LETTER R -1D64;N # LATIN SUBSCRIPT SMALL LETTER U -1D65;N # LATIN SUBSCRIPT SMALL LETTER V -1D66;N # GREEK SUBSCRIPT SMALL LETTER BETA -1D67;N # GREEK SUBSCRIPT SMALL LETTER GAMMA -1D68;N # GREEK SUBSCRIPT SMALL LETTER RHO -1D69;N # GREEK SUBSCRIPT SMALL LETTER PHI -1D6A;N # GREEK SUBSCRIPT SMALL LETTER CHI -1D6B;N # LATIN SMALL LETTER UE -1D6C;N # LATIN SMALL LETTER B WITH MIDDLE TILDE -1D6D;N # LATIN SMALL LETTER D WITH MIDDLE TILDE -1D6E;N # LATIN SMALL LETTER F WITH MIDDLE TILDE -1D6F;N # LATIN SMALL LETTER M WITH MIDDLE TILDE -1D70;N # LATIN SMALL LETTER N WITH MIDDLE TILDE -1D71;N # LATIN SMALL LETTER P WITH MIDDLE TILDE -1D72;N # LATIN SMALL LETTER R WITH MIDDLE TILDE -1D73;N # LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE -1D74;N # LATIN SMALL LETTER S WITH MIDDLE TILDE -1D75;N # LATIN SMALL LETTER T WITH MIDDLE TILDE -1D76;N # LATIN SMALL LETTER Z WITH MIDDLE TILDE -1D77;N # LATIN SMALL LETTER TURNED G -1D78;N # MODIFIER LETTER CYRILLIC EN -1D79;N # LATIN SMALL LETTER INSULAR G -1D7A;N # LATIN SMALL LETTER TH WITH STRIKETHROUGH -1D7B;N # LATIN SMALL CAPITAL LETTER I WITH STROKE -1D7C;N # LATIN SMALL LETTER IOTA WITH STROKE -1D7D;N # LATIN SMALL LETTER P WITH STROKE -1D7E;N # LATIN SMALL CAPITAL LETTER U WITH STROKE -1D7F;N # LATIN SMALL LETTER UPSILON WITH STROKE -1D80;N # LATIN SMALL LETTER B WITH PALATAL HOOK -1D81;N # LATIN SMALL LETTER D WITH PALATAL HOOK -1D82;N # LATIN SMALL LETTER F WITH PALATAL HOOK -1D83;N # LATIN SMALL LETTER G WITH PALATAL HOOK -1D84;N # LATIN SMALL LETTER K WITH PALATAL HOOK -1D85;N # LATIN SMALL LETTER L WITH PALATAL HOOK -1D86;N # LATIN SMALL LETTER M WITH PALATAL HOOK -1D87;N # LATIN SMALL LETTER N WITH PALATAL HOOK -1D88;N # LATIN SMALL LETTER P WITH PALATAL HOOK -1D89;N # LATIN SMALL LETTER R WITH PALATAL HOOK -1D8A;N # LATIN SMALL LETTER S WITH PALATAL HOOK -1D8B;N # LATIN SMALL LETTER ESH WITH PALATAL HOOK -1D8C;N # LATIN SMALL LETTER V WITH PALATAL HOOK -1D8D;N # LATIN SMALL LETTER X WITH PALATAL HOOK -1D8E;N # LATIN SMALL LETTER Z WITH PALATAL HOOK -1D8F;N # LATIN SMALL LETTER A WITH RETROFLEX HOOK -1D90;N # LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK -1D91;N # LATIN SMALL LETTER D WITH HOOK AND TAIL -1D92;N # LATIN SMALL LETTER E WITH RETROFLEX HOOK -1D93;N # LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK -1D94;N # LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK -1D95;N # LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK -1D96;N # LATIN SMALL LETTER I WITH RETROFLEX HOOK -1D97;N # LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK -1D98;N # LATIN SMALL LETTER ESH WITH RETROFLEX HOOK -1D99;N # LATIN SMALL LETTER U WITH RETROFLEX HOOK -1D9A;N # LATIN SMALL LETTER EZH WITH RETROFLEX HOOK -1D9B;N # MODIFIER LETTER SMALL TURNED ALPHA -1D9C;N # MODIFIER LETTER SMALL C -1D9D;N # MODIFIER LETTER SMALL C WITH CURL -1D9E;N # MODIFIER LETTER SMALL ETH -1D9F;N # MODIFIER LETTER SMALL REVERSED OPEN E -1DA0;N # MODIFIER LETTER SMALL F -1DA1;N # MODIFIER LETTER SMALL DOTLESS J WITH STROKE -1DA2;N # MODIFIER LETTER SMALL SCRIPT G -1DA3;N # MODIFIER LETTER SMALL TURNED H -1DA4;N # MODIFIER LETTER SMALL I WITH STROKE -1DA5;N # MODIFIER LETTER SMALL IOTA -1DA6;N # MODIFIER LETTER SMALL CAPITAL I -1DA7;N # MODIFIER LETTER SMALL CAPITAL I WITH STROKE -1DA8;N # MODIFIER LETTER SMALL J WITH CROSSED-TAIL -1DA9;N # MODIFIER LETTER SMALL L WITH RETROFLEX HOOK -1DAA;N # MODIFIER LETTER SMALL L WITH PALATAL HOOK -1DAB;N # MODIFIER LETTER SMALL CAPITAL L -1DAC;N # MODIFIER LETTER SMALL M WITH HOOK -1DAD;N # MODIFIER LETTER SMALL TURNED M WITH LONG LEG -1DAE;N # MODIFIER LETTER SMALL N WITH LEFT HOOK -1DAF;N # MODIFIER LETTER SMALL N WITH RETROFLEX HOOK -1DB0;N # MODIFIER LETTER SMALL CAPITAL N -1DB1;N # MODIFIER LETTER SMALL BARRED O -1DB2;N # MODIFIER LETTER SMALL PHI -1DB3;N # MODIFIER LETTER SMALL S WITH HOOK -1DB4;N # MODIFIER LETTER SMALL ESH -1DB5;N # MODIFIER LETTER SMALL T WITH PALATAL HOOK -1DB6;N # MODIFIER LETTER SMALL U BAR -1DB7;N # MODIFIER LETTER SMALL UPSILON -1DB8;N # MODIFIER LETTER SMALL CAPITAL U -1DB9;N # MODIFIER LETTER SMALL V WITH HOOK -1DBA;N # MODIFIER LETTER SMALL TURNED V -1DBB;N # MODIFIER LETTER SMALL Z -1DBC;N # MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK -1DBD;N # MODIFIER LETTER SMALL Z WITH CURL -1DBE;N # MODIFIER LETTER SMALL EZH -1DBF;N # MODIFIER LETTER SMALL THETA -1DC0;N # COMBINING DOTTED GRAVE ACCENT -1DC1;N # COMBINING DOTTED ACUTE ACCENT -1DC2;N # COMBINING SNAKE BELOW -1DC3;N # COMBINING SUSPENSION MARK -1E00;N # LATIN CAPITAL LETTER A WITH RING BELOW -1E01;N # LATIN SMALL LETTER A WITH RING BELOW -1E02;N # LATIN CAPITAL LETTER B WITH DOT ABOVE -1E03;N # LATIN SMALL LETTER B WITH DOT ABOVE -1E04;N # LATIN CAPITAL LETTER B WITH DOT BELOW -1E05;N # LATIN SMALL LETTER B WITH DOT BELOW -1E06;N # LATIN CAPITAL LETTER B WITH LINE BELOW -1E07;N # LATIN SMALL LETTER B WITH LINE BELOW -1E08;N # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE -1E09;N # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE -1E0A;N # LATIN CAPITAL LETTER D WITH DOT ABOVE -1E0B;N # LATIN SMALL LETTER D WITH DOT ABOVE -1E0C;N # LATIN CAPITAL LETTER D WITH DOT BELOW -1E0D;N # LATIN SMALL LETTER D WITH DOT BELOW -1E0E;N # LATIN CAPITAL LETTER D WITH LINE BELOW -1E0F;N # LATIN SMALL LETTER D WITH LINE BELOW -1E10;N # LATIN CAPITAL LETTER D WITH CEDILLA -1E11;N # LATIN SMALL LETTER D WITH CEDILLA -1E12;N # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW -1E13;N # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW -1E14;N # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE -1E15;N # LATIN SMALL LETTER E WITH MACRON AND GRAVE -1E16;N # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE -1E17;N # LATIN SMALL LETTER E WITH MACRON AND ACUTE -1E18;N # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW -1E19;N # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW -1E1A;N # LATIN CAPITAL LETTER E WITH TILDE BELOW -1E1B;N # LATIN SMALL LETTER E WITH TILDE BELOW -1E1C;N # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE -1E1D;N # LATIN SMALL LETTER E WITH CEDILLA AND BREVE -1E1E;N # LATIN CAPITAL LETTER F WITH DOT ABOVE -1E1F;N # LATIN SMALL LETTER F WITH DOT ABOVE -1E20;N # LATIN CAPITAL LETTER G WITH MACRON -1E21;N # LATIN SMALL LETTER G WITH MACRON -1E22;N # LATIN CAPITAL LETTER H WITH DOT ABOVE -1E23;N # LATIN SMALL LETTER H WITH DOT ABOVE -1E24;N # LATIN CAPITAL LETTER H WITH DOT BELOW -1E25;N # LATIN SMALL LETTER H WITH DOT BELOW -1E26;N # LATIN CAPITAL LETTER H WITH DIAERESIS -1E27;N # LATIN SMALL LETTER H WITH DIAERESIS -1E28;N # LATIN CAPITAL LETTER H WITH CEDILLA -1E29;N # LATIN SMALL LETTER H WITH CEDILLA -1E2A;N # LATIN CAPITAL LETTER H WITH BREVE BELOW -1E2B;N # LATIN SMALL LETTER H WITH BREVE BELOW -1E2C;N # LATIN CAPITAL LETTER I WITH TILDE BELOW -1E2D;N # LATIN SMALL LETTER I WITH TILDE BELOW -1E2E;N # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE -1E2F;N # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE -1E30;N # LATIN CAPITAL LETTER K WITH ACUTE -1E31;N # LATIN SMALL LETTER K WITH ACUTE -1E32;N # LATIN CAPITAL LETTER K WITH DOT BELOW -1E33;N # LATIN SMALL LETTER K WITH DOT BELOW -1E34;N # LATIN CAPITAL LETTER K WITH LINE BELOW -1E35;N # LATIN SMALL LETTER K WITH LINE BELOW -1E36;N # LATIN CAPITAL LETTER L WITH DOT BELOW -1E37;N # LATIN SMALL LETTER L WITH DOT BELOW -1E38;N # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON -1E39;N # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON -1E3A;N # LATIN CAPITAL LETTER L WITH LINE BELOW -1E3B;N # LATIN SMALL LETTER L WITH LINE BELOW -1E3C;N # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW -1E3D;N # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW -1E3E;N # LATIN CAPITAL LETTER M WITH ACUTE -1E3F;N # LATIN SMALL LETTER M WITH ACUTE -1E40;N # LATIN CAPITAL LETTER M WITH DOT ABOVE -1E41;N # LATIN SMALL LETTER M WITH DOT ABOVE -1E42;N # LATIN CAPITAL LETTER M WITH DOT BELOW -1E43;N # LATIN SMALL LETTER M WITH DOT BELOW -1E44;N # LATIN CAPITAL LETTER N WITH DOT ABOVE -1E45;N # LATIN SMALL LETTER N WITH DOT ABOVE -1E46;N # LATIN CAPITAL LETTER N WITH DOT BELOW -1E47;N # LATIN SMALL LETTER N WITH DOT BELOW -1E48;N # LATIN CAPITAL LETTER N WITH LINE BELOW -1E49;N # LATIN SMALL LETTER N WITH LINE BELOW -1E4A;N # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW -1E4B;N # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW -1E4C;N # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE -1E4D;N # LATIN SMALL LETTER O WITH TILDE AND ACUTE -1E4E;N # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS -1E4F;N # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS -1E50;N # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE -1E51;N # LATIN SMALL LETTER O WITH MACRON AND GRAVE -1E52;N # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE -1E53;N # LATIN SMALL LETTER O WITH MACRON AND ACUTE -1E54;N # LATIN CAPITAL LETTER P WITH ACUTE -1E55;N # LATIN SMALL LETTER P WITH ACUTE -1E56;N # LATIN CAPITAL LETTER P WITH DOT ABOVE -1E57;N # LATIN SMALL LETTER P WITH DOT ABOVE -1E58;N # LATIN CAPITAL LETTER R WITH DOT ABOVE -1E59;N # LATIN SMALL LETTER R WITH DOT ABOVE -1E5A;N # LATIN CAPITAL LETTER R WITH DOT BELOW -1E5B;N # LATIN SMALL LETTER R WITH DOT BELOW -1E5C;N # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON -1E5D;N # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON -1E5E;N # LATIN CAPITAL LETTER R WITH LINE BELOW -1E5F;N # LATIN SMALL LETTER R WITH LINE BELOW -1E60;N # LATIN CAPITAL LETTER S WITH DOT ABOVE -1E61;N # LATIN SMALL LETTER S WITH DOT ABOVE -1E62;N # LATIN CAPITAL LETTER S WITH DOT BELOW -1E63;N # LATIN SMALL LETTER S WITH DOT BELOW -1E64;N # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE -1E65;N # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE -1E66;N # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE -1E67;N # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE -1E68;N # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE -1E69;N # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE -1E6A;N # LATIN CAPITAL LETTER T WITH DOT ABOVE -1E6B;N # LATIN SMALL LETTER T WITH DOT ABOVE -1E6C;N # LATIN CAPITAL LETTER T WITH DOT BELOW -1E6D;N # LATIN SMALL LETTER T WITH DOT BELOW -1E6E;N # LATIN CAPITAL LETTER T WITH LINE BELOW -1E6F;N # LATIN SMALL LETTER T WITH LINE BELOW -1E70;N # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW -1E71;N # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW -1E72;N # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW -1E73;N # LATIN SMALL LETTER U WITH DIAERESIS BELOW -1E74;N # LATIN CAPITAL LETTER U WITH TILDE BELOW -1E75;N # LATIN SMALL LETTER U WITH TILDE BELOW -1E76;N # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW -1E77;N # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW -1E78;N # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE -1E79;N # LATIN SMALL LETTER U WITH TILDE AND ACUTE -1E7A;N # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS -1E7B;N # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS -1E7C;N # LATIN CAPITAL LETTER V WITH TILDE -1E7D;N # LATIN SMALL LETTER V WITH TILDE -1E7E;N # LATIN CAPITAL LETTER V WITH DOT BELOW -1E7F;N # LATIN SMALL LETTER V WITH DOT BELOW -1E80;N # LATIN CAPITAL LETTER W WITH GRAVE -1E81;N # LATIN SMALL LETTER W WITH GRAVE -1E82;N # LATIN CAPITAL LETTER W WITH ACUTE -1E83;N # LATIN SMALL LETTER W WITH ACUTE -1E84;N # LATIN CAPITAL LETTER W WITH DIAERESIS -1E85;N # LATIN SMALL LETTER W WITH DIAERESIS -1E86;N # LATIN CAPITAL LETTER W WITH DOT ABOVE -1E87;N # LATIN SMALL LETTER W WITH DOT ABOVE -1E88;N # LATIN CAPITAL LETTER W WITH DOT BELOW -1E89;N # LATIN SMALL LETTER W WITH DOT BELOW -1E8A;N # LATIN CAPITAL LETTER X WITH DOT ABOVE -1E8B;N # LATIN SMALL LETTER X WITH DOT ABOVE -1E8C;N # LATIN CAPITAL LETTER X WITH DIAERESIS -1E8D;N # LATIN SMALL LETTER X WITH DIAERESIS -1E8E;N # LATIN CAPITAL LETTER Y WITH DOT ABOVE -1E8F;N # LATIN SMALL LETTER Y WITH DOT ABOVE -1E90;N # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX -1E91;N # LATIN SMALL LETTER Z WITH CIRCUMFLEX -1E92;N # LATIN CAPITAL LETTER Z WITH DOT BELOW -1E93;N # LATIN SMALL LETTER Z WITH DOT BELOW -1E94;N # LATIN CAPITAL LETTER Z WITH LINE BELOW -1E95;N # LATIN SMALL LETTER Z WITH LINE BELOW -1E96;N # LATIN SMALL LETTER H WITH LINE BELOW -1E97;N # LATIN SMALL LETTER T WITH DIAERESIS -1E98;N # LATIN SMALL LETTER W WITH RING ABOVE -1E99;N # LATIN SMALL LETTER Y WITH RING ABOVE -1E9A;N # LATIN SMALL LETTER A WITH RIGHT HALF RING -1E9B;N # LATIN SMALL LETTER LONG S WITH DOT ABOVE -1EA0;N # LATIN CAPITAL LETTER A WITH DOT BELOW -1EA1;N # LATIN SMALL LETTER A WITH DOT BELOW -1EA2;N # LATIN CAPITAL LETTER A WITH HOOK ABOVE -1EA3;N # LATIN SMALL LETTER A WITH HOOK ABOVE -1EA4;N # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE -1EA5;N # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE -1EA6;N # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE -1EA7;N # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE -1EA8;N # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -1EA9;N # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -1EAA;N # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE -1EAB;N # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE -1EAC;N # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW -1EAD;N # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW -1EAE;N # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE -1EAF;N # LATIN SMALL LETTER A WITH BREVE AND ACUTE -1EB0;N # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE -1EB1;N # LATIN SMALL LETTER A WITH BREVE AND GRAVE -1EB2;N # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE -1EB3;N # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE -1EB4;N # LATIN CAPITAL LETTER A WITH BREVE AND TILDE -1EB5;N # LATIN SMALL LETTER A WITH BREVE AND TILDE -1EB6;N # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW -1EB7;N # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW -1EB8;N # LATIN CAPITAL LETTER E WITH DOT BELOW -1EB9;N # LATIN SMALL LETTER E WITH DOT BELOW -1EBA;N # LATIN CAPITAL LETTER E WITH HOOK ABOVE -1EBB;N # LATIN SMALL LETTER E WITH HOOK ABOVE -1EBC;N # LATIN CAPITAL LETTER E WITH TILDE -1EBD;N # LATIN SMALL LETTER E WITH TILDE -1EBE;N # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -1EBF;N # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -1EC0;N # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC1;N # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC2;N # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC3;N # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC4;N # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC5;N # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -1EC6;N # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC7;N # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC8;N # LATIN CAPITAL LETTER I WITH HOOK ABOVE -1EC9;N # LATIN SMALL LETTER I WITH HOOK ABOVE -1ECA;N # LATIN CAPITAL LETTER I WITH DOT BELOW -1ECB;N # LATIN SMALL LETTER I WITH DOT BELOW -1ECC;N # LATIN CAPITAL LETTER O WITH DOT BELOW -1ECD;N # LATIN SMALL LETTER O WITH DOT BELOW -1ECE;N # LATIN CAPITAL LETTER O WITH HOOK ABOVE -1ECF;N # LATIN SMALL LETTER O WITH HOOK ABOVE -1ED0;N # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED1;N # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED2;N # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED3;N # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED4;N # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED5;N # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED6;N # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -1ED7;N # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE -1ED8;N # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1ED9;N # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1EDA;N # LATIN CAPITAL LETTER O WITH HORN AND ACUTE -1EDB;N # LATIN SMALL LETTER O WITH HORN AND ACUTE -1EDC;N # LATIN CAPITAL LETTER O WITH HORN AND GRAVE -1EDD;N # LATIN SMALL LETTER O WITH HORN AND GRAVE -1EDE;N # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE -1EDF;N # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE -1EE0;N # LATIN CAPITAL LETTER O WITH HORN AND TILDE -1EE1;N # LATIN SMALL LETTER O WITH HORN AND TILDE -1EE2;N # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW -1EE3;N # LATIN SMALL LETTER O WITH HORN AND DOT BELOW -1EE4;N # LATIN CAPITAL LETTER U WITH DOT BELOW -1EE5;N # LATIN SMALL LETTER U WITH DOT BELOW -1EE6;N # LATIN CAPITAL LETTER U WITH HOOK ABOVE -1EE7;N # LATIN SMALL LETTER U WITH HOOK ABOVE -1EE8;N # LATIN CAPITAL LETTER U WITH HORN AND ACUTE -1EE9;N # LATIN SMALL LETTER U WITH HORN AND ACUTE -1EEA;N # LATIN CAPITAL LETTER U WITH HORN AND GRAVE -1EEB;N # LATIN SMALL LETTER U WITH HORN AND GRAVE -1EEC;N # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE -1EED;N # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE -1EEE;N # LATIN CAPITAL LETTER U WITH HORN AND TILDE -1EEF;N # LATIN SMALL LETTER U WITH HORN AND TILDE -1EF0;N # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW -1EF1;N # LATIN SMALL LETTER U WITH HORN AND DOT BELOW -1EF2;N # LATIN CAPITAL LETTER Y WITH GRAVE -1EF3;N # LATIN SMALL LETTER Y WITH GRAVE -1EF4;N # LATIN CAPITAL LETTER Y WITH DOT BELOW -1EF5;N # LATIN SMALL LETTER Y WITH DOT BELOW -1EF6;N # LATIN CAPITAL LETTER Y WITH HOOK ABOVE -1EF7;N # LATIN SMALL LETTER Y WITH HOOK ABOVE -1EF8;N # LATIN CAPITAL LETTER Y WITH TILDE -1EF9;N # LATIN SMALL LETTER Y WITH TILDE -1F00;N # GREEK SMALL LETTER ALPHA WITH PSILI -1F01;N # GREEK SMALL LETTER ALPHA WITH DASIA -1F02;N # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA -1F03;N # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA -1F04;N # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA -1F05;N # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA -1F06;N # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI -1F07;N # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI -1F08;N # GREEK CAPITAL LETTER ALPHA WITH PSILI -1F09;N # GREEK CAPITAL LETTER ALPHA WITH DASIA -1F0A;N # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA -1F0B;N # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA -1F0C;N # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA -1F0D;N # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA -1F0E;N # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI -1F0F;N # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI -1F10;N # GREEK SMALL LETTER EPSILON WITH PSILI -1F11;N # GREEK SMALL LETTER EPSILON WITH DASIA -1F12;N # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA -1F13;N # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA -1F14;N # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA -1F15;N # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA -1F18;N # GREEK CAPITAL LETTER EPSILON WITH PSILI -1F19;N # GREEK CAPITAL LETTER EPSILON WITH DASIA -1F1A;N # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA -1F1B;N # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA -1F1C;N # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA -1F1D;N # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA -1F20;N # GREEK SMALL LETTER ETA WITH PSILI -1F21;N # GREEK SMALL LETTER ETA WITH DASIA -1F22;N # GREEK SMALL LETTER ETA WITH PSILI AND VARIA -1F23;N # GREEK SMALL LETTER ETA WITH DASIA AND VARIA -1F24;N # GREEK SMALL LETTER ETA WITH PSILI AND OXIA -1F25;N # GREEK SMALL LETTER ETA WITH DASIA AND OXIA -1F26;N # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI -1F27;N # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI -1F28;N # GREEK CAPITAL LETTER ETA WITH PSILI -1F29;N # GREEK CAPITAL LETTER ETA WITH DASIA -1F2A;N # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA -1F2B;N # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA -1F2C;N # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA -1F2D;N # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA -1F2E;N # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI -1F2F;N # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI -1F30;N # GREEK SMALL LETTER IOTA WITH PSILI -1F31;N # GREEK SMALL LETTER IOTA WITH DASIA -1F32;N # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA -1F33;N # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA -1F34;N # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA -1F35;N # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA -1F36;N # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI -1F37;N # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI -1F38;N # GREEK CAPITAL LETTER IOTA WITH PSILI -1F39;N # GREEK CAPITAL LETTER IOTA WITH DASIA -1F3A;N # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA -1F3B;N # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA -1F3C;N # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA -1F3D;N # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA -1F3E;N # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI -1F3F;N # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI -1F40;N # GREEK SMALL LETTER OMICRON WITH PSILI -1F41;N # GREEK SMALL LETTER OMICRON WITH DASIA -1F42;N # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA -1F43;N # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA -1F44;N # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA -1F45;N # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA -1F48;N # GREEK CAPITAL LETTER OMICRON WITH PSILI -1F49;N # GREEK CAPITAL LETTER OMICRON WITH DASIA -1F4A;N # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA -1F4B;N # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA -1F4C;N # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA -1F4D;N # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA -1F50;N # GREEK SMALL LETTER UPSILON WITH PSILI -1F51;N # GREEK SMALL LETTER UPSILON WITH DASIA -1F52;N # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA -1F53;N # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA -1F54;N # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA -1F55;N # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA -1F56;N # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI -1F57;N # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI -1F59;N # GREEK CAPITAL LETTER UPSILON WITH DASIA -1F5B;N # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA -1F5D;N # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA -1F5F;N # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI -1F60;N # GREEK SMALL LETTER OMEGA WITH PSILI -1F61;N # GREEK SMALL LETTER OMEGA WITH DASIA -1F62;N # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA -1F63;N # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA -1F64;N # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA -1F65;N # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA -1F66;N # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI -1F67;N # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI -1F68;N # GREEK CAPITAL LETTER OMEGA WITH PSILI -1F69;N # GREEK CAPITAL LETTER OMEGA WITH DASIA -1F6A;N # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA -1F6B;N # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA -1F6C;N # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA -1F6D;N # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA -1F6E;N # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI -1F6F;N # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI -1F70;N # GREEK SMALL LETTER ALPHA WITH VARIA -1F71;N # GREEK SMALL LETTER ALPHA WITH OXIA -1F72;N # GREEK SMALL LETTER EPSILON WITH VARIA -1F73;N # GREEK SMALL LETTER EPSILON WITH OXIA -1F74;N # GREEK SMALL LETTER ETA WITH VARIA -1F75;N # GREEK SMALL LETTER ETA WITH OXIA -1F76;N # GREEK SMALL LETTER IOTA WITH VARIA -1F77;N # GREEK SMALL LETTER IOTA WITH OXIA -1F78;N # GREEK SMALL LETTER OMICRON WITH VARIA -1F79;N # GREEK SMALL LETTER OMICRON WITH OXIA -1F7A;N # GREEK SMALL LETTER UPSILON WITH VARIA -1F7B;N # GREEK SMALL LETTER UPSILON WITH OXIA -1F7C;N # GREEK SMALL LETTER OMEGA WITH VARIA -1F7D;N # GREEK SMALL LETTER OMEGA WITH OXIA -1F80;N # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI -1F81;N # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI -1F82;N # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F83;N # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F84;N # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F85;N # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F86;N # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F87;N # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F88;N # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI -1F89;N # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI -1F8A;N # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F8B;N # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F8C;N # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F8D;N # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F8E;N # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F8F;N # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1F90;N # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI -1F91;N # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI -1F92;N # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F93;N # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F94;N # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F95;N # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F96;N # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F97;N # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F98;N # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI -1F99;N # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI -1F9A;N # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F9B;N # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F9C;N # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F9D;N # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F9E;N # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F9F;N # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FA0;N # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI -1FA1;N # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI -1FA2;N # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1FA3;N # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1FA4;N # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1FA5;N # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1FA6;N # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1FA7;N # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1FA8;N # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI -1FA9;N # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI -1FAA;N # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1FAB;N # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1FAC;N # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1FAD;N # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1FAE;N # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1FAF;N # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FB0;N # GREEK SMALL LETTER ALPHA WITH VRACHY -1FB1;N # GREEK SMALL LETTER ALPHA WITH MACRON -1FB2;N # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI -1FB3;N # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI -1FB4;N # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -1FB6;N # GREEK SMALL LETTER ALPHA WITH PERISPOMENI -1FB7;N # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI -1FB8;N # GREEK CAPITAL LETTER ALPHA WITH VRACHY -1FB9;N # GREEK CAPITAL LETTER ALPHA WITH MACRON -1FBA;N # GREEK CAPITAL LETTER ALPHA WITH VARIA -1FBB;N # GREEK CAPITAL LETTER ALPHA WITH OXIA -1FBC;N # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -1FBD;N # GREEK KORONIS -1FBE;N # GREEK PROSGEGRAMMENI -1FBF;N # GREEK PSILI -1FC0;N # GREEK PERISPOMENI -1FC1;N # GREEK DIALYTIKA AND PERISPOMENI -1FC2;N # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI -1FC3;N # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI -1FC4;N # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -1FC6;N # GREEK SMALL LETTER ETA WITH PERISPOMENI -1FC7;N # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI -1FC8;N # GREEK CAPITAL LETTER EPSILON WITH VARIA -1FC9;N # GREEK CAPITAL LETTER EPSILON WITH OXIA -1FCA;N # GREEK CAPITAL LETTER ETA WITH VARIA -1FCB;N # GREEK CAPITAL LETTER ETA WITH OXIA -1FCC;N # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -1FCD;N # GREEK PSILI AND VARIA -1FCE;N # GREEK PSILI AND OXIA -1FCF;N # GREEK PSILI AND PERISPOMENI -1FD0;N # GREEK SMALL LETTER IOTA WITH VRACHY -1FD1;N # GREEK SMALL LETTER IOTA WITH MACRON -1FD2;N # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA -1FD3;N # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -1FD6;N # GREEK SMALL LETTER IOTA WITH PERISPOMENI -1FD7;N # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI -1FD8;N # GREEK CAPITAL LETTER IOTA WITH VRACHY -1FD9;N # GREEK CAPITAL LETTER IOTA WITH MACRON -1FDA;N # GREEK CAPITAL LETTER IOTA WITH VARIA -1FDB;N # GREEK CAPITAL LETTER IOTA WITH OXIA -1FDD;N # GREEK DASIA AND VARIA -1FDE;N # GREEK DASIA AND OXIA -1FDF;N # GREEK DASIA AND PERISPOMENI -1FE0;N # GREEK SMALL LETTER UPSILON WITH VRACHY -1FE1;N # GREEK SMALL LETTER UPSILON WITH MACRON -1FE2;N # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA -1FE3;N # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA -1FE4;N # GREEK SMALL LETTER RHO WITH PSILI -1FE5;N # GREEK SMALL LETTER RHO WITH DASIA -1FE6;N # GREEK SMALL LETTER UPSILON WITH PERISPOMENI -1FE7;N # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI -1FE8;N # GREEK CAPITAL LETTER UPSILON WITH VRACHY -1FE9;N # GREEK CAPITAL LETTER UPSILON WITH MACRON -1FEA;N # GREEK CAPITAL LETTER UPSILON WITH VARIA -1FEB;N # GREEK CAPITAL LETTER UPSILON WITH OXIA -1FEC;N # GREEK CAPITAL LETTER RHO WITH DASIA -1FED;N # GREEK DIALYTIKA AND VARIA -1FEE;N # GREEK DIALYTIKA AND OXIA -1FEF;N # GREEK VARIA -1FF2;N # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI -1FF3;N # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI -1FF4;N # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI -1FF6;N # GREEK SMALL LETTER OMEGA WITH PERISPOMENI -1FF7;N # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI -1FF8;N # GREEK CAPITAL LETTER OMICRON WITH VARIA -1FF9;N # GREEK CAPITAL LETTER OMICRON WITH OXIA -1FFA;N # GREEK CAPITAL LETTER OMEGA WITH VARIA -1FFB;N # GREEK CAPITAL LETTER OMEGA WITH OXIA -1FFC;N # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -1FFD;N # GREEK OXIA -1FFE;N # GREEK DASIA -2000;N # EN QUAD -2001;N # EM QUAD -2002;N # EN SPACE -2003;N # EM SPACE -2004;N # THREE-PER-EM SPACE -2005;N # FOUR-PER-EM SPACE -2006;N # SIX-PER-EM SPACE -2007;N # FIGURE SPACE -2008;N # PUNCTUATION SPACE -2009;N # THIN SPACE -200A;N # HAIR SPACE -200B;N # ZERO WIDTH SPACE -200C;N # ZERO WIDTH NON-JOINER -200D;N # ZERO WIDTH JOINER -200E;N # LEFT-TO-RIGHT MARK -200F;N # RIGHT-TO-LEFT MARK -2010;A # HYPHEN -2011;N # NON-BREAKING HYPHEN -2012;N # FIGURE DASH -2013;A # EN DASH -2014;A # EM DASH -2015;A # HORIZONTAL BAR -2016;A # DOUBLE VERTICAL LINE -2017;N # DOUBLE LOW LINE -2018;A # LEFT SINGLE QUOTATION MARK -2019;A # RIGHT SINGLE QUOTATION MARK -201A;N # SINGLE LOW-9 QUOTATION MARK -201B;N # SINGLE HIGH-REVERSED-9 QUOTATION MARK -201C;A # LEFT DOUBLE QUOTATION MARK -201D;A # RIGHT DOUBLE QUOTATION MARK -201E;N # DOUBLE LOW-9 QUOTATION MARK -201F;N # DOUBLE HIGH-REVERSED-9 QUOTATION MARK -2020;A # DAGGER -2021;A # DOUBLE DAGGER -2022;A # BULLET -2023;N # TRIANGULAR BULLET -2024;A # ONE DOT LEADER -2025;A # TWO DOT LEADER -2026;A # HORIZONTAL ELLIPSIS -2027;A # HYPHENATION POINT -2028;N # LINE SEPARATOR -2029;N # PARAGRAPH SEPARATOR -202A;N # LEFT-TO-RIGHT EMBEDDING -202B;N # RIGHT-TO-LEFT EMBEDDING -202C;N # POP DIRECTIONAL FORMATTING -202D;N # LEFT-TO-RIGHT OVERRIDE -202E;N # RIGHT-TO-LEFT OVERRIDE -202F;N # NARROW NO-BREAK SPACE -2030;A # PER MILLE SIGN -2031;N # PER TEN THOUSAND SIGN -2032;A # PRIME -2033;A # DOUBLE PRIME -2034;N # TRIPLE PRIME -2035;A # REVERSED PRIME -2036;N # REVERSED DOUBLE PRIME -2037;N # REVERSED TRIPLE PRIME -2038;N # CARET -2039;N # SINGLE LEFT-POINTING ANGLE QUOTATION MARK -203A;N # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -203B;A # REFERENCE MARK -203C;N # DOUBLE EXCLAMATION MARK -203D;N # INTERROBANG -203E;A # OVERLINE -203F;N # UNDERTIE -2040;N # CHARACTER TIE -2041;N # CARET INSERTION POINT -2042;N # ASTERISM -2043;N # HYPHEN BULLET -2044;N # FRACTION SLASH -2045;N # LEFT SQUARE BRACKET WITH QUILL -2046;N # RIGHT SQUARE BRACKET WITH QUILL -2047;N # DOUBLE QUESTION MARK -2048;N # QUESTION EXCLAMATION MARK -2049;N # EXCLAMATION QUESTION MARK -204A;N # TIRONIAN SIGN ET -204B;N # REVERSED PILCROW SIGN -204C;N # BLACK LEFTWARDS BULLET -204D;N # BLACK RIGHTWARDS BULLET -204E;N # LOW ASTERISK -204F;N # REVERSED SEMICOLON -2050;N # CLOSE UP -2051;N # TWO ASTERISKS ALIGNED VERTICALLY -2052;N # COMMERCIAL MINUS SIGN -2053;N # SWUNG DASH -2054;N # INVERTED UNDERTIE -2055;N # FLOWER PUNCTUATION MARK -2056;N # THREE DOT PUNCTUATION -2057;N # QUADRUPLE PRIME -2058;N # FOUR DOT PUNCTUATION -2059;N # FIVE DOT PUNCTUATION -205A;N # TWO DOT PUNCTUATION -205B;N # FOUR DOT MARK -205C;N # DOTTED CROSS -205D;N # TRICOLON -205E;N # VERTICAL FOUR DOTS -205F;N # MEDIUM MATHEMATICAL SPACE -2060;N # WORD JOINER -2061;N # FUNCTION APPLICATION -2062;N # INVISIBLE TIMES -2063;N # INVISIBLE SEPARATOR -206A;N # INHIBIT SYMMETRIC SWAPPING -206B;N # ACTIVATE SYMMETRIC SWAPPING -206C;N # INHIBIT ARABIC FORM SHAPING -206D;N # ACTIVATE ARABIC FORM SHAPING -206E;N # NATIONAL DIGIT SHAPES -206F;N # NOMINAL DIGIT SHAPES -2070;N # SUPERSCRIPT ZERO -2071;N # SUPERSCRIPT LATIN SMALL LETTER I -2074;A # SUPERSCRIPT FOUR -2075;N # SUPERSCRIPT FIVE -2076;N # SUPERSCRIPT SIX -2077;N # SUPERSCRIPT SEVEN -2078;N # SUPERSCRIPT EIGHT -2079;N # SUPERSCRIPT NINE -207A;N # SUPERSCRIPT PLUS SIGN -207B;N # SUPERSCRIPT MINUS -207C;N # SUPERSCRIPT EQUALS SIGN -207D;N # SUPERSCRIPT LEFT PARENTHESIS -207E;N # SUPERSCRIPT RIGHT PARENTHESIS -207F;A # SUPERSCRIPT LATIN SMALL LETTER N -2080;N # SUBSCRIPT ZERO -2081;A # SUBSCRIPT ONE -2082;A # SUBSCRIPT TWO -2083;A # SUBSCRIPT THREE -2084;A # SUBSCRIPT FOUR -2085;N # SUBSCRIPT FIVE -2086;N # SUBSCRIPT SIX -2087;N # SUBSCRIPT SEVEN -2088;N # SUBSCRIPT EIGHT -2089;N # SUBSCRIPT NINE -208A;N # SUBSCRIPT PLUS SIGN -208B;N # SUBSCRIPT MINUS -208C;N # SUBSCRIPT EQUALS SIGN -208D;N # SUBSCRIPT LEFT PARENTHESIS -208E;N # SUBSCRIPT RIGHT PARENTHESIS -2090;N # LATIN SUBSCRIPT SMALL LETTER A -2091;N # LATIN SUBSCRIPT SMALL LETTER E -2092;N # LATIN SUBSCRIPT SMALL LETTER O -2093;N # LATIN SUBSCRIPT SMALL LETTER X -2094;N # LATIN SUBSCRIPT SMALL LETTER SCHWA -20A0;N # EURO-CURRENCY SIGN -20A1;N # COLON SIGN -20A2;N # CRUZEIRO SIGN -20A3;N # FRENCH FRANC SIGN -20A4;N # LIRA SIGN -20A5;N # MILL SIGN -20A6;N # NAIRA SIGN -20A7;N # PESETA SIGN -20A8;N # RUPEE SIGN -20A9;H # WON SIGN -20AA;N # NEW SHEQEL SIGN -20AB;N # DONG SIGN -20AC;A # EURO SIGN -20AD;N # KIP SIGN -20AE;N # TUGRIK SIGN -20AF;N # DRACHMA SIGN -20B0;N # GERMAN PENNY SIGN -20B1;N # PESO SIGN -20B2;N # GUARANI SIGN -20B3;N # AUSTRAL SIGN -20B4;N # HRYVNIA SIGN -20B5;N # CEDI SIGN -20D0;N # COMBINING LEFT HARPOON ABOVE -20D1;N # COMBINING RIGHT HARPOON ABOVE -20D2;N # COMBINING LONG VERTICAL LINE OVERLAY -20D3;N # COMBINING SHORT VERTICAL LINE OVERLAY -20D4;N # COMBINING ANTICLOCKWISE ARROW ABOVE -20D5;N # COMBINING CLOCKWISE ARROW ABOVE -20D6;N # COMBINING LEFT ARROW ABOVE -20D7;N # COMBINING RIGHT ARROW ABOVE -20D8;N # COMBINING RING OVERLAY -20D9;N # COMBINING CLOCKWISE RING OVERLAY -20DA;N # COMBINING ANTICLOCKWISE RING OVERLAY -20DB;N # COMBINING THREE DOTS ABOVE -20DC;N # COMBINING FOUR DOTS ABOVE -20DD;N # COMBINING ENCLOSING CIRCLE -20DE;N # COMBINING ENCLOSING SQUARE -20DF;N # COMBINING ENCLOSING DIAMOND -20E0;N # COMBINING ENCLOSING CIRCLE BACKSLASH -20E1;N # COMBINING LEFT RIGHT ARROW ABOVE -20E2;N # COMBINING ENCLOSING SCREEN -20E3;N # COMBINING ENCLOSING KEYCAP -20E4;N # COMBINING ENCLOSING UPWARD POINTING TRIANGLE -20E5;N # COMBINING REVERSE SOLIDUS OVERLAY -20E6;N # COMBINING DOUBLE VERTICAL STROKE OVERLAY -20E7;N # COMBINING ANNUITY SYMBOL -20E8;N # COMBINING TRIPLE UNDERDOT -20E9;N # COMBINING WIDE BRIDGE ABOVE -20EA;N # COMBINING LEFTWARDS ARROW OVERLAY -20EB;N # COMBINING LONG DOUBLE SOLIDUS OVERLAY -2100;N # ACCOUNT OF -2101;N # ADDRESSED TO THE SUBJECT -2102;N # DOUBLE-STRUCK CAPITAL C -2103;A # DEGREE CELSIUS -2104;N # CENTRE LINE SYMBOL -2105;A # CARE OF -2106;N # CADA UNA -2107;N # EULER CONSTANT -2108;N # SCRUPLE -2109;A # DEGREE FAHRENHEIT -210A;N # SCRIPT SMALL G -210B;N # SCRIPT CAPITAL H -210C;N # BLACK-LETTER CAPITAL H -210D;N # DOUBLE-STRUCK CAPITAL H -210E;N # PLANCK CONSTANT -210F;N # PLANCK CONSTANT OVER TWO PI -2110;N # SCRIPT CAPITAL I -2111;N # BLACK-LETTER CAPITAL I -2112;N # SCRIPT CAPITAL L -2113;A # SCRIPT SMALL L -2114;N # L B BAR SYMBOL -2115;N # DOUBLE-STRUCK CAPITAL N -2116;A # NUMERO SIGN -2117;N # SOUND RECORDING COPYRIGHT -2118;N # SCRIPT CAPITAL P -2119;N # DOUBLE-STRUCK CAPITAL P -211A;N # DOUBLE-STRUCK CAPITAL Q -211B;N # SCRIPT CAPITAL R -211C;N # BLACK-LETTER CAPITAL R -211D;N # DOUBLE-STRUCK CAPITAL R -211E;N # PRESCRIPTION TAKE -211F;N # RESPONSE -2120;N # SERVICE MARK -2121;A # TELEPHONE SIGN -2122;A # TRADE MARK SIGN -2123;N # VERSICLE -2124;N # DOUBLE-STRUCK CAPITAL Z -2125;N # OUNCE SIGN -2126;A # OHM SIGN -2127;N # INVERTED OHM SIGN -2128;N # BLACK-LETTER CAPITAL Z -2129;N # TURNED GREEK SMALL LETTER IOTA -212A;N # KELVIN SIGN -212B;A # ANGSTROM SIGN -212C;N # SCRIPT CAPITAL B -212D;N # BLACK-LETTER CAPITAL C -212E;N # ESTIMATED SYMBOL -212F;N # SCRIPT SMALL E -2130;N # SCRIPT CAPITAL E -2131;N # SCRIPT CAPITAL F -2132;N # TURNED CAPITAL F -2133;N # SCRIPT CAPITAL M -2134;N # SCRIPT SMALL O -2135;N # ALEF SYMBOL -2136;N # BET SYMBOL -2137;N # GIMEL SYMBOL -2138;N # DALET SYMBOL -2139;N # INFORMATION SOURCE -213A;N # ROTATED CAPITAL Q -213B;N # FACSIMILE SIGN -213C;N # DOUBLE-STRUCK SMALL PI -213D;N # DOUBLE-STRUCK SMALL GAMMA -213E;N # DOUBLE-STRUCK CAPITAL GAMMA -213F;N # DOUBLE-STRUCK CAPITAL PI -2140;N # DOUBLE-STRUCK N-ARY SUMMATION -2141;N # TURNED SANS-SERIF CAPITAL G -2142;N # TURNED SANS-SERIF CAPITAL L -2143;N # REVERSED SANS-SERIF CAPITAL L -2144;N # TURNED SANS-SERIF CAPITAL Y -2145;N # DOUBLE-STRUCK ITALIC CAPITAL D -2146;N # DOUBLE-STRUCK ITALIC SMALL D -2147;N # DOUBLE-STRUCK ITALIC SMALL E -2148;N # DOUBLE-STRUCK ITALIC SMALL I -2149;N # DOUBLE-STRUCK ITALIC SMALL J -214A;N # PROPERTY LINE -214B;N # TURNED AMPERSAND -214C;N # PER SIGN -2153;A # VULGAR FRACTION ONE THIRD -2154;A # VULGAR FRACTION TWO THIRDS -2155;N # VULGAR FRACTION ONE FIFTH -2156;N # VULGAR FRACTION TWO FIFTHS -2157;N # VULGAR FRACTION THREE FIFTHS -2158;N # VULGAR FRACTION FOUR FIFTHS -2159;N # VULGAR FRACTION ONE SIXTH -215A;N # VULGAR FRACTION FIVE SIXTHS -215B;A # VULGAR FRACTION ONE EIGHTH -215C;A # VULGAR FRACTION THREE EIGHTHS -215D;A # VULGAR FRACTION FIVE EIGHTHS -215E;A # VULGAR FRACTION SEVEN EIGHTHS -215F;N # FRACTION NUMERATOR ONE -2160;A # ROMAN NUMERAL ONE -2161;A # ROMAN NUMERAL TWO -2162;A # ROMAN NUMERAL THREE -2163;A # ROMAN NUMERAL FOUR -2164;A # ROMAN NUMERAL FIVE -2165;A # ROMAN NUMERAL SIX -2166;A # ROMAN NUMERAL SEVEN -2167;A # ROMAN NUMERAL EIGHT -2168;A # ROMAN NUMERAL NINE -2169;A # ROMAN NUMERAL TEN -216A;A # ROMAN NUMERAL ELEVEN -216B;A # ROMAN NUMERAL TWELVE -216C;N # ROMAN NUMERAL FIFTY -216D;N # ROMAN NUMERAL ONE HUNDRED -216E;N # ROMAN NUMERAL FIVE HUNDRED -216F;N # ROMAN NUMERAL ONE THOUSAND -2170;A # SMALL ROMAN NUMERAL ONE -2171;A # SMALL ROMAN NUMERAL TWO -2172;A # SMALL ROMAN NUMERAL THREE -2173;A # SMALL ROMAN NUMERAL FOUR -2174;A # SMALL ROMAN NUMERAL FIVE -2175;A # SMALL ROMAN NUMERAL SIX -2176;A # SMALL ROMAN NUMERAL SEVEN -2177;A # SMALL ROMAN NUMERAL EIGHT -2178;A # SMALL ROMAN NUMERAL NINE -2179;A # SMALL ROMAN NUMERAL TEN -217A;N # SMALL ROMAN NUMERAL ELEVEN -217B;N # SMALL ROMAN NUMERAL TWELVE -217C;N # SMALL ROMAN NUMERAL FIFTY -217D;N # SMALL ROMAN NUMERAL ONE HUNDRED -217E;N # SMALL ROMAN NUMERAL FIVE HUNDRED -217F;N # SMALL ROMAN NUMERAL ONE THOUSAND -2180;N # ROMAN NUMERAL ONE THOUSAND C D -2181;N # ROMAN NUMERAL FIVE THOUSAND -2182;N # ROMAN NUMERAL TEN THOUSAND -2183;N # ROMAN NUMERAL REVERSED ONE HUNDRED -2190;A # LEFTWARDS ARROW -2191;A # UPWARDS ARROW -2192;A # RIGHTWARDS ARROW -2193;A # DOWNWARDS ARROW -2194;A # LEFT RIGHT ARROW -2195;A # UP DOWN ARROW -2196;A # NORTH WEST ARROW -2197;A # NORTH EAST ARROW -2198;A # SOUTH EAST ARROW -2199;A # SOUTH WEST ARROW -219A;N # LEFTWARDS ARROW WITH STROKE -219B;N # RIGHTWARDS ARROW WITH STROKE -219C;N # LEFTWARDS WAVE ARROW -219D;N # RIGHTWARDS WAVE ARROW -219E;N # LEFTWARDS TWO HEADED ARROW -219F;N # UPWARDS TWO HEADED ARROW -21A0;N # RIGHTWARDS TWO HEADED ARROW -21A1;N # DOWNWARDS TWO HEADED ARROW -21A2;N # LEFTWARDS ARROW WITH TAIL -21A3;N # RIGHTWARDS ARROW WITH TAIL -21A4;N # LEFTWARDS ARROW FROM BAR -21A5;N # UPWARDS ARROW FROM BAR -21A6;N # RIGHTWARDS ARROW FROM BAR -21A7;N # DOWNWARDS ARROW FROM BAR -21A8;N # UP DOWN ARROW WITH BASE -21A9;N # LEFTWARDS ARROW WITH HOOK -21AA;N # RIGHTWARDS ARROW WITH HOOK -21AB;N # LEFTWARDS ARROW WITH LOOP -21AC;N # RIGHTWARDS ARROW WITH LOOP -21AD;N # LEFT RIGHT WAVE ARROW -21AE;N # LEFT RIGHT ARROW WITH STROKE -21AF;N # DOWNWARDS ZIGZAG ARROW -21B0;N # UPWARDS ARROW WITH TIP LEFTWARDS -21B1;N # UPWARDS ARROW WITH TIP RIGHTWARDS -21B2;N # DOWNWARDS ARROW WITH TIP LEFTWARDS -21B3;N # DOWNWARDS ARROW WITH TIP RIGHTWARDS -21B4;N # RIGHTWARDS ARROW WITH CORNER DOWNWARDS -21B5;N # DOWNWARDS ARROW WITH CORNER LEFTWARDS -21B6;N # ANTICLOCKWISE TOP SEMICIRCLE ARROW -21B7;N # CLOCKWISE TOP SEMICIRCLE ARROW -21B8;A # NORTH WEST ARROW TO LONG BAR -21B9;A # LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR -21BA;N # ANTICLOCKWISE OPEN CIRCLE ARROW -21BB;N # CLOCKWISE OPEN CIRCLE ARROW -21BC;N # LEFTWARDS HARPOON WITH BARB UPWARDS -21BD;N # LEFTWARDS HARPOON WITH BARB DOWNWARDS -21BE;N # UPWARDS HARPOON WITH BARB RIGHTWARDS -21BF;N # UPWARDS HARPOON WITH BARB LEFTWARDS -21C0;N # RIGHTWARDS HARPOON WITH BARB UPWARDS -21C1;N # RIGHTWARDS HARPOON WITH BARB DOWNWARDS -21C2;N # DOWNWARDS HARPOON WITH BARB RIGHTWARDS -21C3;N # DOWNWARDS HARPOON WITH BARB LEFTWARDS -21C4;N # RIGHTWARDS ARROW OVER LEFTWARDS ARROW -21C5;N # UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW -21C6;N # LEFTWARDS ARROW OVER RIGHTWARDS ARROW -21C7;N # LEFTWARDS PAIRED ARROWS -21C8;N # UPWARDS PAIRED ARROWS -21C9;N # RIGHTWARDS PAIRED ARROWS -21CA;N # DOWNWARDS PAIRED ARROWS -21CB;N # LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON -21CC;N # RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON -21CD;N # LEFTWARDS DOUBLE ARROW WITH STROKE -21CE;N # LEFT RIGHT DOUBLE ARROW WITH STROKE -21CF;N # RIGHTWARDS DOUBLE ARROW WITH STROKE -21D0;N # LEFTWARDS DOUBLE ARROW -21D1;N # UPWARDS DOUBLE ARROW -21D2;A # RIGHTWARDS DOUBLE ARROW -21D3;N # DOWNWARDS DOUBLE ARROW -21D4;A # LEFT RIGHT DOUBLE ARROW -21D5;N # UP DOWN DOUBLE ARROW -21D6;N # NORTH WEST DOUBLE ARROW -21D7;N # NORTH EAST DOUBLE ARROW -21D8;N # SOUTH EAST DOUBLE ARROW -21D9;N # SOUTH WEST DOUBLE ARROW -21DA;N # LEFTWARDS TRIPLE ARROW -21DB;N # RIGHTWARDS TRIPLE ARROW -21DC;N # LEFTWARDS SQUIGGLE ARROW -21DD;N # RIGHTWARDS SQUIGGLE ARROW -21DE;N # UPWARDS ARROW WITH DOUBLE STROKE -21DF;N # DOWNWARDS ARROW WITH DOUBLE STROKE -21E0;N # LEFTWARDS DASHED ARROW -21E1;N # UPWARDS DASHED ARROW -21E2;N # RIGHTWARDS DASHED ARROW -21E3;N # DOWNWARDS DASHED ARROW -21E4;N # LEFTWARDS ARROW TO BAR -21E5;N # RIGHTWARDS ARROW TO BAR -21E6;N # LEFTWARDS WHITE ARROW -21E7;A # UPWARDS WHITE ARROW -21E8;N # RIGHTWARDS WHITE ARROW -21E9;N # DOWNWARDS WHITE ARROW -21EA;N # UPWARDS WHITE ARROW FROM BAR -21EB;N # UPWARDS WHITE ARROW ON PEDESTAL -21EC;N # UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR -21ED;N # UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR -21EE;N # UPWARDS WHITE DOUBLE ARROW -21EF;N # UPWARDS WHITE DOUBLE ARROW ON PEDESTAL -21F0;N # RIGHTWARDS WHITE ARROW FROM WALL -21F1;N # NORTH WEST ARROW TO CORNER -21F2;N # SOUTH EAST ARROW TO CORNER -21F3;N # UP DOWN WHITE ARROW -21F4;N # RIGHT ARROW WITH SMALL CIRCLE -21F5;N # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW -21F6;N # THREE RIGHTWARDS ARROWS -21F7;N # LEFTWARDS ARROW WITH VERTICAL STROKE -21F8;N # RIGHTWARDS ARROW WITH VERTICAL STROKE -21F9;N # LEFT RIGHT ARROW WITH VERTICAL STROKE -21FA;N # LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE -21FB;N # RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE -21FC;N # LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE -21FD;N # LEFTWARDS OPEN-HEADED ARROW -21FE;N # RIGHTWARDS OPEN-HEADED ARROW -21FF;N # LEFT RIGHT OPEN-HEADED ARROW -2200;A # FOR ALL -2201;N # COMPLEMENT -2202;A # PARTIAL DIFFERENTIAL -2203;A # THERE EXISTS -2204;N # THERE DOES NOT EXIST -2205;N # EMPTY SET -2206;N # INCREMENT -2207;A # NABLA -2208;A # ELEMENT OF -2209;N # NOT AN ELEMENT OF -220A;N # SMALL ELEMENT OF -220B;A # CONTAINS AS MEMBER -220C;N # DOES NOT CONTAIN AS MEMBER -220D;N # SMALL CONTAINS AS MEMBER -220E;N # END OF PROOF -220F;A # N-ARY PRODUCT -2210;N # N-ARY COPRODUCT -2211;A # N-ARY SUMMATION -2212;N # MINUS SIGN -2213;N # MINUS-OR-PLUS SIGN -2214;N # DOT PLUS -2215;A # DIVISION SLASH -2216;N # SET MINUS -2217;N # ASTERISK OPERATOR -2218;N # RING OPERATOR -2219;N # BULLET OPERATOR -221A;A # SQUARE ROOT -221B;N # CUBE ROOT -221C;N # FOURTH ROOT -221D;A # PROPORTIONAL TO -221E;A # INFINITY -221F;A # RIGHT ANGLE -2220;A # ANGLE -2221;N # MEASURED ANGLE -2222;N # SPHERICAL ANGLE -2223;A # DIVIDES -2224;N # DOES NOT DIVIDE -2225;A # PARALLEL TO -2226;N # NOT PARALLEL TO -2227;A # LOGICAL AND -2228;A # LOGICAL OR -2229;A # INTERSECTION -222A;A # UNION -222B;A # INTEGRAL -222C;A # DOUBLE INTEGRAL -222D;N # TRIPLE INTEGRAL -222E;A # CONTOUR INTEGRAL -222F;N # SURFACE INTEGRAL -2230;N # VOLUME INTEGRAL -2231;N # CLOCKWISE INTEGRAL -2232;N # CLOCKWISE CONTOUR INTEGRAL -2233;N # ANTICLOCKWISE CONTOUR INTEGRAL -2234;A # THEREFORE -2235;A # BECAUSE -2236;A # RATIO -2237;A # PROPORTION -2238;N # DOT MINUS -2239;N # EXCESS -223A;N # GEOMETRIC PROPORTION -223B;N # HOMOTHETIC -223C;A # TILDE OPERATOR -223D;A # REVERSED TILDE -223E;N # INVERTED LAZY S -223F;N # SINE WAVE -2240;N # WREATH PRODUCT -2241;N # NOT TILDE -2242;N # MINUS TILDE -2243;N # ASYMPTOTICALLY EQUAL TO -2244;N # NOT ASYMPTOTICALLY EQUAL TO -2245;N # APPROXIMATELY EQUAL TO -2246;N # APPROXIMATELY BUT NOT ACTUALLY EQUAL TO -2247;N # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO -2248;A # ALMOST EQUAL TO -2249;N # NOT ALMOST EQUAL TO -224A;N # ALMOST EQUAL OR EQUAL TO -224B;N # TRIPLE TILDE -224C;A # ALL EQUAL TO -224D;N # EQUIVALENT TO -224E;N # GEOMETRICALLY EQUIVALENT TO -224F;N # DIFFERENCE BETWEEN -2250;N # APPROACHES THE LIMIT -2251;N # GEOMETRICALLY EQUAL TO -2252;A # APPROXIMATELY EQUAL TO OR THE IMAGE OF -2253;N # IMAGE OF OR APPROXIMATELY EQUAL TO -2254;N # COLON EQUALS -2255;N # EQUALS COLON -2256;N # RING IN EQUAL TO -2257;N # RING EQUAL TO -2258;N # CORRESPONDS TO -2259;N # ESTIMATES -225A;N # EQUIANGULAR TO -225B;N # STAR EQUALS -225C;N # DELTA EQUAL TO -225D;N # EQUAL TO BY DEFINITION -225E;N # MEASURED BY -225F;N # QUESTIONED EQUAL TO -2260;A # NOT EQUAL TO -2261;A # IDENTICAL TO -2262;N # NOT IDENTICAL TO -2263;N # STRICTLY EQUIVALENT TO -2264;A # LESS-THAN OR EQUAL TO -2265;A # GREATER-THAN OR EQUAL TO -2266;A # LESS-THAN OVER EQUAL TO -2267;A # GREATER-THAN OVER EQUAL TO -2268;N # LESS-THAN BUT NOT EQUAL TO -2269;N # GREATER-THAN BUT NOT EQUAL TO -226A;A # MUCH LESS-THAN -226B;A # MUCH GREATER-THAN -226C;N # BETWEEN -226D;N # NOT EQUIVALENT TO -226E;A # NOT LESS-THAN -226F;A # NOT GREATER-THAN -2270;N # NEITHER LESS-THAN NOR EQUAL TO -2271;N # NEITHER GREATER-THAN NOR EQUAL TO -2272;N # LESS-THAN OR EQUIVALENT TO -2273;N # GREATER-THAN OR EQUIVALENT TO -2274;N # NEITHER LESS-THAN NOR EQUIVALENT TO -2275;N # NEITHER GREATER-THAN NOR EQUIVALENT TO -2276;N # LESS-THAN OR GREATER-THAN -2277;N # GREATER-THAN OR LESS-THAN -2278;N # NEITHER LESS-THAN NOR GREATER-THAN -2279;N # NEITHER GREATER-THAN NOR LESS-THAN -227A;N # PRECEDES -227B;N # SUCCEEDS -227C;N # PRECEDES OR EQUAL TO -227D;N # SUCCEEDS OR EQUAL TO -227E;N # PRECEDES OR EQUIVALENT TO -227F;N # SUCCEEDS OR EQUIVALENT TO -2280;N # DOES NOT PRECEDE -2281;N # DOES NOT SUCCEED -2282;A # SUBSET OF -2283;A # SUPERSET OF -2284;N # NOT A SUBSET OF -2285;N # NOT A SUPERSET OF -2286;A # SUBSET OF OR EQUAL TO -2287;A # SUPERSET OF OR EQUAL TO -2288;N # NEITHER A SUBSET OF NOR EQUAL TO -2289;N # NEITHER A SUPERSET OF NOR EQUAL TO -228A;N # SUBSET OF WITH NOT EQUAL TO -228B;N # SUPERSET OF WITH NOT EQUAL TO -228C;N # MULTISET -228D;N # MULTISET MULTIPLICATION -228E;N # MULTISET UNION -228F;N # SQUARE IMAGE OF -2290;N # SQUARE ORIGINAL OF -2291;N # SQUARE IMAGE OF OR EQUAL TO -2292;N # SQUARE ORIGINAL OF OR EQUAL TO -2293;N # SQUARE CAP -2294;N # SQUARE CUP -2295;A # CIRCLED PLUS -2296;N # CIRCLED MINUS -2297;N # CIRCLED TIMES -2298;N # CIRCLED DIVISION SLASH -2299;A # CIRCLED DOT OPERATOR -229A;N # CIRCLED RING OPERATOR -229B;N # CIRCLED ASTERISK OPERATOR -229C;N # CIRCLED EQUALS -229D;N # CIRCLED DASH -229E;N # SQUARED PLUS -229F;N # SQUARED MINUS -22A0;N # SQUARED TIMES -22A1;N # SQUARED DOT OPERATOR -22A2;N # RIGHT TACK -22A3;N # LEFT TACK -22A4;N # DOWN TACK -22A5;A # UP TACK -22A6;N # ASSERTION -22A7;N # MODELS -22A8;N # TRUE -22A9;N # FORCES -22AA;N # TRIPLE VERTICAL BAR RIGHT TURNSTILE -22AB;N # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE -22AC;N # DOES NOT PROVE -22AD;N # NOT TRUE -22AE;N # DOES NOT FORCE -22AF;N # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE -22B0;N # PRECEDES UNDER RELATION -22B1;N # SUCCEEDS UNDER RELATION -22B2;N # NORMAL SUBGROUP OF -22B3;N # CONTAINS AS NORMAL SUBGROUP -22B4;N # NORMAL SUBGROUP OF OR EQUAL TO -22B5;N # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO -22B6;N # ORIGINAL OF -22B7;N # IMAGE OF -22B8;N # MULTIMAP -22B9;N # HERMITIAN CONJUGATE MATRIX -22BA;N # INTERCALATE -22BB;N # XOR -22BC;N # NAND -22BD;N # NOR -22BE;N # RIGHT ANGLE WITH ARC -22BF;A # RIGHT TRIANGLE -22C0;N # N-ARY LOGICAL AND -22C1;N # N-ARY LOGICAL OR -22C2;N # N-ARY INTERSECTION -22C3;N # N-ARY UNION -22C4;N # DIAMOND OPERATOR -22C5;N # DOT OPERATOR -22C6;N # STAR OPERATOR -22C7;N # DIVISION TIMES -22C8;N # BOWTIE -22C9;N # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT -22CA;N # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT -22CB;N # LEFT SEMIDIRECT PRODUCT -22CC;N # RIGHT SEMIDIRECT PRODUCT -22CD;N # REVERSED TILDE EQUALS -22CE;N # CURLY LOGICAL OR -22CF;N # CURLY LOGICAL AND -22D0;N # DOUBLE SUBSET -22D1;N # DOUBLE SUPERSET -22D2;N # DOUBLE INTERSECTION -22D3;N # DOUBLE UNION -22D4;N # PITCHFORK -22D5;N # EQUAL AND PARALLEL TO -22D6;N # LESS-THAN WITH DOT -22D7;N # GREATER-THAN WITH DOT -22D8;N # VERY MUCH LESS-THAN -22D9;N # VERY MUCH GREATER-THAN -22DA;N # LESS-THAN EQUAL TO OR GREATER-THAN -22DB;N # GREATER-THAN EQUAL TO OR LESS-THAN -22DC;N # EQUAL TO OR LESS-THAN -22DD;N # EQUAL TO OR GREATER-THAN -22DE;N # EQUAL TO OR PRECEDES -22DF;N # EQUAL TO OR SUCCEEDS -22E0;N # DOES NOT PRECEDE OR EQUAL -22E1;N # DOES NOT SUCCEED OR EQUAL -22E2;N # NOT SQUARE IMAGE OF OR EQUAL TO -22E3;N # NOT SQUARE ORIGINAL OF OR EQUAL TO -22E4;N # SQUARE IMAGE OF OR NOT EQUAL TO -22E5;N # SQUARE ORIGINAL OF OR NOT EQUAL TO -22E6;N # LESS-THAN BUT NOT EQUIVALENT TO -22E7;N # GREATER-THAN BUT NOT EQUIVALENT TO -22E8;N # PRECEDES BUT NOT EQUIVALENT TO -22E9;N # SUCCEEDS BUT NOT EQUIVALENT TO -22EA;N # NOT NORMAL SUBGROUP OF -22EB;N # DOES NOT CONTAIN AS NORMAL SUBGROUP -22EC;N # NOT NORMAL SUBGROUP OF OR EQUAL TO -22ED;N # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL -22EE;N # VERTICAL ELLIPSIS -22EF;N # MIDLINE HORIZONTAL ELLIPSIS -22F0;N # UP RIGHT DIAGONAL ELLIPSIS -22F1;N # DOWN RIGHT DIAGONAL ELLIPSIS -22F2;N # ELEMENT OF WITH LONG HORIZONTAL STROKE -22F3;N # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22F4;N # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22F5;N # ELEMENT OF WITH DOT ABOVE -22F6;N # ELEMENT OF WITH OVERBAR -22F7;N # SMALL ELEMENT OF WITH OVERBAR -22F8;N # ELEMENT OF WITH UNDERBAR -22F9;N # ELEMENT OF WITH TWO HORIZONTAL STROKES -22FA;N # CONTAINS WITH LONG HORIZONTAL STROKE -22FB;N # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22FC;N # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22FD;N # CONTAINS WITH OVERBAR -22FE;N # SMALL CONTAINS WITH OVERBAR -22FF;N # Z NOTATION BAG MEMBERSHIP -2300;N # DIAMETER SIGN -2301;N # ELECTRIC ARROW -2302;N # HOUSE -2303;N # UP ARROWHEAD -2304;N # DOWN ARROWHEAD -2305;N # PROJECTIVE -2306;N # PERSPECTIVE -2307;N # WAVY LINE -2308;N # LEFT CEILING -2309;N # RIGHT CEILING -230A;N # LEFT FLOOR -230B;N # RIGHT FLOOR -230C;N # BOTTOM RIGHT CROP -230D;N # BOTTOM LEFT CROP -230E;N # TOP RIGHT CROP -230F;N # TOP LEFT CROP -2310;N # REVERSED NOT SIGN -2311;N # SQUARE LOZENGE -2312;A # ARC -2313;N # SEGMENT -2314;N # SECTOR -2315;N # TELEPHONE RECORDER -2316;N # POSITION INDICATOR -2317;N # VIEWDATA SQUARE -2318;N # PLACE OF INTEREST SIGN -2319;N # TURNED NOT SIGN -231A;N # WATCH -231B;N # HOURGLASS -231C;N # TOP LEFT CORNER -231D;N # TOP RIGHT CORNER -231E;N # BOTTOM LEFT CORNER -231F;N # BOTTOM RIGHT CORNER -2320;N # TOP HALF INTEGRAL -2321;N # BOTTOM HALF INTEGRAL -2322;N # FROWN -2323;N # SMILE -2324;N # UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS -2325;N # OPTION KEY -2326;N # ERASE TO THE RIGHT -2327;N # X IN A RECTANGLE BOX -2328;N # KEYBOARD -2329;W # LEFT-POINTING ANGLE BRACKET -232A;W # RIGHT-POINTING ANGLE BRACKET -232B;N # ERASE TO THE LEFT -232C;N # BENZENE RING -232D;N # CYLINDRICITY -232E;N # ALL AROUND-PROFILE -232F;N # SYMMETRY -2330;N # TOTAL RUNOUT -2331;N # DIMENSION ORIGIN -2332;N # CONICAL TAPER -2333;N # SLOPE -2334;N # COUNTERBORE -2335;N # COUNTERSINK -2336;N # APL FUNCTIONAL SYMBOL I-BEAM -2337;N # APL FUNCTIONAL SYMBOL SQUISH QUAD -2338;N # APL FUNCTIONAL SYMBOL QUAD EQUAL -2339;N # APL FUNCTIONAL SYMBOL QUAD DIVIDE -233A;N # APL FUNCTIONAL SYMBOL QUAD DIAMOND -233B;N # APL FUNCTIONAL SYMBOL QUAD JOT -233C;N # APL FUNCTIONAL SYMBOL QUAD CIRCLE -233D;N # APL FUNCTIONAL SYMBOL CIRCLE STILE -233E;N # APL FUNCTIONAL SYMBOL CIRCLE JOT -233F;N # APL FUNCTIONAL SYMBOL SLASH BAR -2340;N # APL FUNCTIONAL SYMBOL BACKSLASH BAR -2341;N # APL FUNCTIONAL SYMBOL QUAD SLASH -2342;N # APL FUNCTIONAL SYMBOL QUAD BACKSLASH -2343;N # APL FUNCTIONAL SYMBOL QUAD LESS-THAN -2344;N # APL FUNCTIONAL SYMBOL QUAD GREATER-THAN -2345;N # APL FUNCTIONAL SYMBOL LEFTWARDS VANE -2346;N # APL FUNCTIONAL SYMBOL RIGHTWARDS VANE -2347;N # APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW -2348;N # APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW -2349;N # APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH -234A;N # APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR -234B;N # APL FUNCTIONAL SYMBOL DELTA STILE -234C;N # APL FUNCTIONAL SYMBOL QUAD DOWN CARET -234D;N # APL FUNCTIONAL SYMBOL QUAD DELTA -234E;N # APL FUNCTIONAL SYMBOL DOWN TACK JOT -234F;N # APL FUNCTIONAL SYMBOL UPWARDS VANE -2350;N # APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW -2351;N # APL FUNCTIONAL SYMBOL UP TACK OVERBAR -2352;N # APL FUNCTIONAL SYMBOL DEL STILE -2353;N # APL FUNCTIONAL SYMBOL QUAD UP CARET -2354;N # APL FUNCTIONAL SYMBOL QUAD DEL -2355;N # APL FUNCTIONAL SYMBOL UP TACK JOT -2356;N # APL FUNCTIONAL SYMBOL DOWNWARDS VANE -2357;N # APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW -2358;N # APL FUNCTIONAL SYMBOL QUOTE UNDERBAR -2359;N # APL FUNCTIONAL SYMBOL DELTA UNDERBAR -235A;N # APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR -235B;N # APL FUNCTIONAL SYMBOL JOT UNDERBAR -235C;N # APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR -235D;N # APL FUNCTIONAL SYMBOL UP SHOE JOT -235E;N # APL FUNCTIONAL SYMBOL QUOTE QUAD -235F;N # APL FUNCTIONAL SYMBOL CIRCLE STAR -2360;N # APL FUNCTIONAL SYMBOL QUAD COLON -2361;N # APL FUNCTIONAL SYMBOL UP TACK DIAERESIS -2362;N # APL FUNCTIONAL SYMBOL DEL DIAERESIS -2363;N # APL FUNCTIONAL SYMBOL STAR DIAERESIS -2364;N # APL FUNCTIONAL SYMBOL JOT DIAERESIS -2365;N # APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS -2366;N # APL FUNCTIONAL SYMBOL DOWN SHOE STILE -2367;N # APL FUNCTIONAL SYMBOL LEFT SHOE STILE -2368;N # APL FUNCTIONAL SYMBOL TILDE DIAERESIS -2369;N # APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS -236A;N # APL FUNCTIONAL SYMBOL COMMA BAR -236B;N # APL FUNCTIONAL SYMBOL DEL TILDE -236C;N # APL FUNCTIONAL SYMBOL ZILDE -236D;N # APL FUNCTIONAL SYMBOL STILE TILDE -236E;N # APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR -236F;N # APL FUNCTIONAL SYMBOL QUAD NOT EQUAL -2370;N # APL FUNCTIONAL SYMBOL QUAD QUESTION -2371;N # APL FUNCTIONAL SYMBOL DOWN CARET TILDE -2372;N # APL FUNCTIONAL SYMBOL UP CARET TILDE -2373;N # APL FUNCTIONAL SYMBOL IOTA -2374;N # APL FUNCTIONAL SYMBOL RHO -2375;N # APL FUNCTIONAL SYMBOL OMEGA -2376;N # APL FUNCTIONAL SYMBOL ALPHA UNDERBAR -2377;N # APL FUNCTIONAL SYMBOL EPSILON UNDERBAR -2378;N # APL FUNCTIONAL SYMBOL IOTA UNDERBAR -2379;N # APL FUNCTIONAL SYMBOL OMEGA UNDERBAR -237A;N # APL FUNCTIONAL SYMBOL ALPHA -237B;N # NOT CHECK MARK -237C;N # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW -237D;N # SHOULDERED OPEN BOX -237E;N # BELL SYMBOL -237F;N # VERTICAL LINE WITH MIDDLE DOT -2380;N # INSERTION SYMBOL -2381;N # CONTINUOUS UNDERLINE SYMBOL -2382;N # DISCONTINUOUS UNDERLINE SYMBOL -2383;N # EMPHASIS SYMBOL -2384;N # COMPOSITION SYMBOL -2385;N # WHITE SQUARE WITH CENTRE VERTICAL LINE -2386;N # ENTER SYMBOL -2387;N # ALTERNATIVE KEY SYMBOL -2388;N # HELM SYMBOL -2389;N # CIRCLED HORIZONTAL BAR WITH NOTCH -238A;N # CIRCLED TRIANGLE DOWN -238B;N # BROKEN CIRCLE WITH NORTHWEST ARROW -238C;N # UNDO SYMBOL -238D;N # MONOSTABLE SYMBOL -238E;N # HYSTERESIS SYMBOL -238F;N # OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL -2390;N # OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL -2391;N # PASSIVE-PULL-DOWN-OUTPUT SYMBOL -2392;N # PASSIVE-PULL-UP-OUTPUT SYMBOL -2393;N # DIRECT CURRENT SYMBOL FORM TWO -2394;N # SOFTWARE-FUNCTION SYMBOL -2395;N # APL FUNCTIONAL SYMBOL QUAD -2396;N # DECIMAL SEPARATOR KEY SYMBOL -2397;N # PREVIOUS PAGE -2398;N # NEXT PAGE -2399;N # PRINT SCREEN SYMBOL -239A;N # CLEAR SCREEN SYMBOL -239B;N # LEFT PARENTHESIS UPPER HOOK -239C;N # LEFT PARENTHESIS EXTENSION -239D;N # LEFT PARENTHESIS LOWER HOOK -239E;N # RIGHT PARENTHESIS UPPER HOOK -239F;N # RIGHT PARENTHESIS EXTENSION -23A0;N # RIGHT PARENTHESIS LOWER HOOK -23A1;N # LEFT SQUARE BRACKET UPPER CORNER -23A2;N # LEFT SQUARE BRACKET EXTENSION -23A3;N # LEFT SQUARE BRACKET LOWER CORNER -23A4;N # RIGHT SQUARE BRACKET UPPER CORNER -23A5;N # RIGHT SQUARE BRACKET EXTENSION -23A6;N # RIGHT SQUARE BRACKET LOWER CORNER -23A7;N # LEFT CURLY BRACKET UPPER HOOK -23A8;N # LEFT CURLY BRACKET MIDDLE PIECE -23A9;N # LEFT CURLY BRACKET LOWER HOOK -23AA;N # CURLY BRACKET EXTENSION -23AB;N # RIGHT CURLY BRACKET UPPER HOOK -23AC;N # RIGHT CURLY BRACKET MIDDLE PIECE -23AD;N # RIGHT CURLY BRACKET LOWER HOOK -23AE;N # INTEGRAL EXTENSION -23AF;N # HORIZONTAL LINE EXTENSION -23B0;N # UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION -23B1;N # UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION -23B2;N # SUMMATION TOP -23B3;N # SUMMATION BOTTOM -23B4;N # TOP SQUARE BRACKET -23B5;N # BOTTOM SQUARE BRACKET -23B6;N # BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET -23B7;N # RADICAL SYMBOL BOTTOM -23B8;N # LEFT VERTICAL BOX LINE -23B9;N # RIGHT VERTICAL BOX LINE -23BA;N # HORIZONTAL SCAN LINE-1 -23BB;N # HORIZONTAL SCAN LINE-3 -23BC;N # HORIZONTAL SCAN LINE-7 -23BD;N # HORIZONTAL SCAN LINE-9 -23BE;N # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT -23BF;N # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT -23C0;N # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE -23C1;N # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE -23C2;N # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE -23C3;N # DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE -23C4;N # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE -23C5;N # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE -23C6;N # DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE -23C7;N # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE -23C8;N # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE -23C9;N # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL -23CA;N # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL -23CB;N # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT -23CC;N # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT -23CD;N # SQUARE FOOT -23CE;N # RETURN SYMBOL -23CF;N # EJECT SYMBOL -23D0;N # VERTICAL LINE EXTENSION -23D1;N # METRICAL BREVE -23D2;N # METRICAL LONG OVER SHORT -23D3;N # METRICAL SHORT OVER LONG -23D4;N # METRICAL LONG OVER TWO SHORTS -23D5;N # METRICAL TWO SHORTS OVER LONG -23D6;N # METRICAL TWO SHORTS JOINED -23D7;N # METRICAL TRISEME -23D8;N # METRICAL TETRASEME -23D9;N # METRICAL PENTASEME -23DA;N # EARTH GROUND -23DB;N # FUSE -2400;N # SYMBOL FOR NULL -2401;N # SYMBOL FOR START OF HEADING -2402;N # SYMBOL FOR START OF TEXT -2403;N # SYMBOL FOR END OF TEXT -2404;N # SYMBOL FOR END OF TRANSMISSION -2405;N # SYMBOL FOR ENQUIRY -2406;N # SYMBOL FOR ACKNOWLEDGE -2407;N # SYMBOL FOR BELL -2408;N # SYMBOL FOR BACKSPACE -2409;N # SYMBOL FOR HORIZONTAL TABULATION -240A;N # SYMBOL FOR LINE FEED -240B;N # SYMBOL FOR VERTICAL TABULATION -240C;N # SYMBOL FOR FORM FEED -240D;N # SYMBOL FOR CARRIAGE RETURN -240E;N # SYMBOL FOR SHIFT OUT -240F;N # SYMBOL FOR SHIFT IN -2410;N # SYMBOL FOR DATA LINK ESCAPE -2411;N # SYMBOL FOR DEVICE CONTROL ONE -2412;N # SYMBOL FOR DEVICE CONTROL TWO -2413;N # SYMBOL FOR DEVICE CONTROL THREE -2414;N # SYMBOL FOR DEVICE CONTROL FOUR -2415;N # SYMBOL FOR NEGATIVE ACKNOWLEDGE -2416;N # SYMBOL FOR SYNCHRONOUS IDLE -2417;N # SYMBOL FOR END OF TRANSMISSION BLOCK -2418;N # SYMBOL FOR CANCEL -2419;N # SYMBOL FOR END OF MEDIUM -241A;N # SYMBOL FOR SUBSTITUTE -241B;N # SYMBOL FOR ESCAPE -241C;N # SYMBOL FOR FILE SEPARATOR -241D;N # SYMBOL FOR GROUP SEPARATOR -241E;N # SYMBOL FOR RECORD SEPARATOR -241F;N # SYMBOL FOR UNIT SEPARATOR -2420;N # SYMBOL FOR SPACE -2421;N # SYMBOL FOR DELETE -2422;N # BLANK SYMBOL -2423;N # OPEN BOX -2424;N # SYMBOL FOR NEWLINE -2425;N # SYMBOL FOR DELETE FORM TWO -2426;N # SYMBOL FOR SUBSTITUTE FORM TWO -2440;N # OCR HOOK -2441;N # OCR CHAIR -2442;N # OCR FORK -2443;N # OCR INVERTED FORK -2444;N # OCR BELT BUCKLE -2445;N # OCR BOW TIE -2446;N # OCR BRANCH BANK IDENTIFICATION -2447;N # OCR AMOUNT OF CHECK -2448;N # OCR DASH -2449;N # OCR CUSTOMER ACCOUNT NUMBER -244A;N # OCR DOUBLE BACKSLASH -2460;A # CIRCLED DIGIT ONE -2461;A # CIRCLED DIGIT TWO -2462;A # CIRCLED DIGIT THREE -2463;A # CIRCLED DIGIT FOUR -2464;A # CIRCLED DIGIT FIVE -2465;A # CIRCLED DIGIT SIX -2466;A # CIRCLED DIGIT SEVEN -2467;A # CIRCLED DIGIT EIGHT -2468;A # CIRCLED DIGIT NINE -2469;A # CIRCLED NUMBER TEN -246A;A # CIRCLED NUMBER ELEVEN -246B;A # CIRCLED NUMBER TWELVE -246C;A # CIRCLED NUMBER THIRTEEN -246D;A # CIRCLED NUMBER FOURTEEN -246E;A # CIRCLED NUMBER FIFTEEN -246F;A # CIRCLED NUMBER SIXTEEN -2470;A # CIRCLED NUMBER SEVENTEEN -2471;A # CIRCLED NUMBER EIGHTEEN -2472;A # CIRCLED NUMBER NINETEEN -2473;A # CIRCLED NUMBER TWENTY -2474;A # PARENTHESIZED DIGIT ONE -2475;A # PARENTHESIZED DIGIT TWO -2476;A # PARENTHESIZED DIGIT THREE -2477;A # PARENTHESIZED DIGIT FOUR -2478;A # PARENTHESIZED DIGIT FIVE -2479;A # PARENTHESIZED DIGIT SIX -247A;A # PARENTHESIZED DIGIT SEVEN -247B;A # PARENTHESIZED DIGIT EIGHT -247C;A # PARENTHESIZED DIGIT NINE -247D;A # PARENTHESIZED NUMBER TEN -247E;A # PARENTHESIZED NUMBER ELEVEN -247F;A # PARENTHESIZED NUMBER TWELVE -2480;A # PARENTHESIZED NUMBER THIRTEEN -2481;A # PARENTHESIZED NUMBER FOURTEEN -2482;A # PARENTHESIZED NUMBER FIFTEEN -2483;A # PARENTHESIZED NUMBER SIXTEEN -2484;A # PARENTHESIZED NUMBER SEVENTEEN -2485;A # PARENTHESIZED NUMBER EIGHTEEN -2486;A # PARENTHESIZED NUMBER NINETEEN -2487;A # PARENTHESIZED NUMBER TWENTY -2488;A # DIGIT ONE FULL STOP -2489;A # DIGIT TWO FULL STOP -248A;A # DIGIT THREE FULL STOP -248B;A # DIGIT FOUR FULL STOP -248C;A # DIGIT FIVE FULL STOP -248D;A # DIGIT SIX FULL STOP -248E;A # DIGIT SEVEN FULL STOP -248F;A # DIGIT EIGHT FULL STOP -2490;A # DIGIT NINE FULL STOP -2491;A # NUMBER TEN FULL STOP -2492;A # NUMBER ELEVEN FULL STOP -2493;A # NUMBER TWELVE FULL STOP -2494;A # NUMBER THIRTEEN FULL STOP -2495;A # NUMBER FOURTEEN FULL STOP -2496;A # NUMBER FIFTEEN FULL STOP -2497;A # NUMBER SIXTEEN FULL STOP -2498;A # NUMBER SEVENTEEN FULL STOP -2499;A # NUMBER EIGHTEEN FULL STOP -249A;A # NUMBER NINETEEN FULL STOP -249B;A # NUMBER TWENTY FULL STOP -249C;A # PARENTHESIZED LATIN SMALL LETTER A -249D;A # PARENTHESIZED LATIN SMALL LETTER B -249E;A # PARENTHESIZED LATIN SMALL LETTER C -249F;A # PARENTHESIZED LATIN SMALL LETTER D -24A0;A # PARENTHESIZED LATIN SMALL LETTER E -24A1;A # PARENTHESIZED LATIN SMALL LETTER F -24A2;A # PARENTHESIZED LATIN SMALL LETTER G -24A3;A # PARENTHESIZED LATIN SMALL LETTER H -24A4;A # PARENTHESIZED LATIN SMALL LETTER I -24A5;A # PARENTHESIZED LATIN SMALL LETTER J -24A6;A # PARENTHESIZED LATIN SMALL LETTER K -24A7;A # PARENTHESIZED LATIN SMALL LETTER L -24A8;A # PARENTHESIZED LATIN SMALL LETTER M -24A9;A # PARENTHESIZED LATIN SMALL LETTER N -24AA;A # PARENTHESIZED LATIN SMALL LETTER O -24AB;A # PARENTHESIZED LATIN SMALL LETTER P -24AC;A # PARENTHESIZED LATIN SMALL LETTER Q -24AD;A # PARENTHESIZED LATIN SMALL LETTER R -24AE;A # PARENTHESIZED LATIN SMALL LETTER S -24AF;A # PARENTHESIZED LATIN SMALL LETTER T -24B0;A # PARENTHESIZED LATIN SMALL LETTER U -24B1;A # PARENTHESIZED LATIN SMALL LETTER V -24B2;A # PARENTHESIZED LATIN SMALL LETTER W -24B3;A # PARENTHESIZED LATIN SMALL LETTER X -24B4;A # PARENTHESIZED LATIN SMALL LETTER Y -24B5;A # PARENTHESIZED LATIN SMALL LETTER Z -24B6;A # CIRCLED LATIN CAPITAL LETTER A -24B7;A # CIRCLED LATIN CAPITAL LETTER B -24B8;A # CIRCLED LATIN CAPITAL LETTER C -24B9;A # CIRCLED LATIN CAPITAL LETTER D -24BA;A # CIRCLED LATIN CAPITAL LETTER E -24BB;A # CIRCLED LATIN CAPITAL LETTER F -24BC;A # CIRCLED LATIN CAPITAL LETTER G -24BD;A # CIRCLED LATIN CAPITAL LETTER H -24BE;A # CIRCLED LATIN CAPITAL LETTER I -24BF;A # CIRCLED LATIN CAPITAL LETTER J -24C0;A # CIRCLED LATIN CAPITAL LETTER K -24C1;A # CIRCLED LATIN CAPITAL LETTER L -24C2;A # CIRCLED LATIN CAPITAL LETTER M -24C3;A # CIRCLED LATIN CAPITAL LETTER N -24C4;A # CIRCLED LATIN CAPITAL LETTER O -24C5;A # CIRCLED LATIN CAPITAL LETTER P -24C6;A # CIRCLED LATIN CAPITAL LETTER Q -24C7;A # CIRCLED LATIN CAPITAL LETTER R -24C8;A # CIRCLED LATIN CAPITAL LETTER S -24C9;A # CIRCLED LATIN CAPITAL LETTER T -24CA;A # CIRCLED LATIN CAPITAL LETTER U -24CB;A # CIRCLED LATIN CAPITAL LETTER V -24CC;A # CIRCLED LATIN CAPITAL LETTER W -24CD;A # CIRCLED LATIN CAPITAL LETTER X -24CE;A # CIRCLED LATIN CAPITAL LETTER Y -24CF;A # CIRCLED LATIN CAPITAL LETTER Z -24D0;A # CIRCLED LATIN SMALL LETTER A -24D1;A # CIRCLED LATIN SMALL LETTER B -24D2;A # CIRCLED LATIN SMALL LETTER C -24D3;A # CIRCLED LATIN SMALL LETTER D -24D4;A # CIRCLED LATIN SMALL LETTER E -24D5;A # CIRCLED LATIN SMALL LETTER F -24D6;A # CIRCLED LATIN SMALL LETTER G -24D7;A # CIRCLED LATIN SMALL LETTER H -24D8;A # CIRCLED LATIN SMALL LETTER I -24D9;A # CIRCLED LATIN SMALL LETTER J -24DA;A # CIRCLED LATIN SMALL LETTER K -24DB;A # CIRCLED LATIN SMALL LETTER L -24DC;A # CIRCLED LATIN SMALL LETTER M -24DD;A # CIRCLED LATIN SMALL LETTER N -24DE;A # CIRCLED LATIN SMALL LETTER O -24DF;A # CIRCLED LATIN SMALL LETTER P -24E0;A # CIRCLED LATIN SMALL LETTER Q -24E1;A # CIRCLED LATIN SMALL LETTER R -24E2;A # CIRCLED LATIN SMALL LETTER S -24E3;A # CIRCLED LATIN SMALL LETTER T -24E4;A # CIRCLED LATIN SMALL LETTER U -24E5;A # CIRCLED LATIN SMALL LETTER V -24E6;A # CIRCLED LATIN SMALL LETTER W -24E7;A # CIRCLED LATIN SMALL LETTER X -24E8;A # CIRCLED LATIN SMALL LETTER Y -24E9;A # CIRCLED LATIN SMALL LETTER Z -24EA;N # CIRCLED DIGIT ZERO -24EB;A # NEGATIVE CIRCLED NUMBER ELEVEN -24EC;A # NEGATIVE CIRCLED NUMBER TWELVE -24ED;A # NEGATIVE CIRCLED NUMBER THIRTEEN -24EE;A # NEGATIVE CIRCLED NUMBER FOURTEEN -24EF;A # NEGATIVE CIRCLED NUMBER FIFTEEN -24F0;A # NEGATIVE CIRCLED NUMBER SIXTEEN -24F1;A # NEGATIVE CIRCLED NUMBER SEVENTEEN -24F2;A # NEGATIVE CIRCLED NUMBER EIGHTEEN -24F3;A # NEGATIVE CIRCLED NUMBER NINETEEN -24F4;A # NEGATIVE CIRCLED NUMBER TWENTY -24F5;A # DOUBLE CIRCLED DIGIT ONE -24F6;A # DOUBLE CIRCLED DIGIT TWO -24F7;A # DOUBLE CIRCLED DIGIT THREE -24F8;A # DOUBLE CIRCLED DIGIT FOUR -24F9;A # DOUBLE CIRCLED DIGIT FIVE -24FA;A # DOUBLE CIRCLED DIGIT SIX -24FB;A # DOUBLE CIRCLED DIGIT SEVEN -24FC;A # DOUBLE CIRCLED DIGIT EIGHT -24FD;A # DOUBLE CIRCLED DIGIT NINE -24FE;A # DOUBLE CIRCLED NUMBER TEN -24FF;A # NEGATIVE CIRCLED DIGIT ZERO -2500;A # BOX DRAWINGS LIGHT HORIZONTAL -2501;A # BOX DRAWINGS HEAVY HORIZONTAL -2502;A # BOX DRAWINGS LIGHT VERTICAL -2503;A # BOX DRAWINGS HEAVY VERTICAL -2504;A # BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL -2505;A # BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL -2506;A # BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL -2507;A # BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL -2508;A # BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL -2509;A # BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL -250A;A # BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL -250B;A # BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL -250C;A # BOX DRAWINGS LIGHT DOWN AND RIGHT -250D;A # BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY -250E;A # BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT -250F;A # BOX DRAWINGS HEAVY DOWN AND RIGHT -2510;A # BOX DRAWINGS LIGHT DOWN AND LEFT -2511;A # BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY -2512;A # BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT -2513;A # BOX DRAWINGS HEAVY DOWN AND LEFT -2514;A # BOX DRAWINGS LIGHT UP AND RIGHT -2515;A # BOX DRAWINGS UP LIGHT AND RIGHT HEAVY -2516;A # BOX DRAWINGS UP HEAVY AND RIGHT LIGHT -2517;A # BOX DRAWINGS HEAVY UP AND RIGHT -2518;A # BOX DRAWINGS LIGHT UP AND LEFT -2519;A # BOX DRAWINGS UP LIGHT AND LEFT HEAVY -251A;A # BOX DRAWINGS UP HEAVY AND LEFT LIGHT -251B;A # BOX DRAWINGS HEAVY UP AND LEFT -251C;A # BOX DRAWINGS LIGHT VERTICAL AND RIGHT -251D;A # BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY -251E;A # BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT -251F;A # BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT -2520;A # BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT -2521;A # BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY -2522;A # BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY -2523;A # BOX DRAWINGS HEAVY VERTICAL AND RIGHT -2524;A # BOX DRAWINGS LIGHT VERTICAL AND LEFT -2525;A # BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY -2526;A # BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT -2527;A # BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT -2528;A # BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT -2529;A # BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY -252A;A # BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY -252B;A # BOX DRAWINGS HEAVY VERTICAL AND LEFT -252C;A # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL -252D;A # BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT -252E;A # BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT -252F;A # BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY -2530;A # BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT -2531;A # BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY -2532;A # BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY -2533;A # BOX DRAWINGS HEAVY DOWN AND HORIZONTAL -2534;A # BOX DRAWINGS LIGHT UP AND HORIZONTAL -2535;A # BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT -2536;A # BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT -2537;A # BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY -2538;A # BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT -2539;A # BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY -253A;A # BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY -253B;A # BOX DRAWINGS HEAVY UP AND HORIZONTAL -253C;A # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL -253D;A # BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT -253E;A # BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT -253F;A # BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY -2540;A # BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT -2541;A # BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT -2542;A # BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT -2543;A # BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT -2544;A # BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT -2545;A # BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT -2546;A # BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT -2547;A # BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY -2548;A # BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY -2549;A # BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY -254A;A # BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY -254B;A # BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL -254C;N # BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL -254D;N # BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL -254E;N # BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL -254F;N # BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL -2550;A # BOX DRAWINGS DOUBLE HORIZONTAL -2551;A # BOX DRAWINGS DOUBLE VERTICAL -2552;A # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE -2553;A # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE -2554;A # BOX DRAWINGS DOUBLE DOWN AND RIGHT -2555;A # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE -2556;A # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE -2557;A # BOX DRAWINGS DOUBLE DOWN AND LEFT -2558;A # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE -2559;A # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE -255A;A # BOX DRAWINGS DOUBLE UP AND RIGHT -255B;A # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE -255C;A # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE -255D;A # BOX DRAWINGS DOUBLE UP AND LEFT -255E;A # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE -255F;A # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE -2560;A # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT -2561;A # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE -2562;A # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE -2563;A # BOX DRAWINGS DOUBLE VERTICAL AND LEFT -2564;A # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE -2565;A # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE -2566;A # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL -2567;A # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE -2568;A # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE -2569;A # BOX DRAWINGS DOUBLE UP AND HORIZONTAL -256A;A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE -256B;A # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE -256C;A # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL -256D;A # BOX DRAWINGS LIGHT ARC DOWN AND RIGHT -256E;A # BOX DRAWINGS LIGHT ARC DOWN AND LEFT -256F;A # BOX DRAWINGS LIGHT ARC UP AND LEFT -2570;A # BOX DRAWINGS LIGHT ARC UP AND RIGHT -2571;A # BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT -2572;A # BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT -2573;A # BOX DRAWINGS LIGHT DIAGONAL CROSS -2574;N # BOX DRAWINGS LIGHT LEFT -2575;N # BOX DRAWINGS LIGHT UP -2576;N # BOX DRAWINGS LIGHT RIGHT -2577;N # BOX DRAWINGS LIGHT DOWN -2578;N # BOX DRAWINGS HEAVY LEFT -2579;N # BOX DRAWINGS HEAVY UP -257A;N # BOX DRAWINGS HEAVY RIGHT -257B;N # BOX DRAWINGS HEAVY DOWN -257C;N # BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT -257D;N # BOX DRAWINGS LIGHT UP AND HEAVY DOWN -257E;N # BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT -257F;N # BOX DRAWINGS HEAVY UP AND LIGHT DOWN -2580;A # UPPER HALF BLOCK -2581;A # LOWER ONE EIGHTH BLOCK -2582;A # LOWER ONE QUARTER BLOCK -2583;A # LOWER THREE EIGHTHS BLOCK -2584;A # LOWER HALF BLOCK -2585;A # LOWER FIVE EIGHTHS BLOCK -2586;A # LOWER THREE QUARTERS BLOCK -2587;A # LOWER SEVEN EIGHTHS BLOCK -2588;A # FULL BLOCK -2589;A # LEFT SEVEN EIGHTHS BLOCK -258A;A # LEFT THREE QUARTERS BLOCK -258B;A # LEFT FIVE EIGHTHS BLOCK -258C;A # LEFT HALF BLOCK -258D;A # LEFT THREE EIGHTHS BLOCK -258E;A # LEFT ONE QUARTER BLOCK -258F;A # LEFT ONE EIGHTH BLOCK -2590;N # RIGHT HALF BLOCK -2591;N # LIGHT SHADE -2592;A # MEDIUM SHADE -2593;A # DARK SHADE -2594;A # UPPER ONE EIGHTH BLOCK -2595;A # RIGHT ONE EIGHTH BLOCK -2596;N # QUADRANT LOWER LEFT -2597;N # QUADRANT LOWER RIGHT -2598;N # QUADRANT UPPER LEFT -2599;N # QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT -259A;N # QUADRANT UPPER LEFT AND LOWER RIGHT -259B;N # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT -259C;N # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT -259D;N # QUADRANT UPPER RIGHT -259E;N # QUADRANT UPPER RIGHT AND LOWER LEFT -259F;N # QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT -25A0;A # BLACK SQUARE -25A1;A # WHITE SQUARE -25A2;N # WHITE SQUARE WITH ROUNDED CORNERS -25A3;A # WHITE SQUARE CONTAINING BLACK SMALL SQUARE -25A4;A # SQUARE WITH HORIZONTAL FILL -25A5;A # SQUARE WITH VERTICAL FILL -25A6;A # SQUARE WITH ORTHOGONAL CROSSHATCH FILL -25A7;A # SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL -25A8;A # SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL -25A9;A # SQUARE WITH DIAGONAL CROSSHATCH FILL -25AA;N # BLACK SMALL SQUARE -25AB;N # WHITE SMALL SQUARE -25AC;N # BLACK RECTANGLE -25AD;N # WHITE RECTANGLE -25AE;N # BLACK VERTICAL RECTANGLE -25AF;N # WHITE VERTICAL RECTANGLE -25B0;N # BLACK PARALLELOGRAM -25B1;N # WHITE PARALLELOGRAM -25B2;A # BLACK UP-POINTING TRIANGLE -25B3;A # WHITE UP-POINTING TRIANGLE -25B4;N # BLACK UP-POINTING SMALL TRIANGLE -25B5;N # WHITE UP-POINTING SMALL TRIANGLE -25B6;A # BLACK RIGHT-POINTING TRIANGLE -25B7;A # WHITE RIGHT-POINTING TRIANGLE -25B8;N # BLACK RIGHT-POINTING SMALL TRIANGLE -25B9;N # WHITE RIGHT-POINTING SMALL TRIANGLE -25BA;N # BLACK RIGHT-POINTING POINTER -25BB;N # WHITE RIGHT-POINTING POINTER -25BC;A # BLACK DOWN-POINTING TRIANGLE -25BD;A # WHITE DOWN-POINTING TRIANGLE -25BE;N # BLACK DOWN-POINTING SMALL TRIANGLE -25BF;N # WHITE DOWN-POINTING SMALL TRIANGLE -25C0;A # BLACK LEFT-POINTING TRIANGLE -25C1;A # WHITE LEFT-POINTING TRIANGLE -25C2;N # BLACK LEFT-POINTING SMALL TRIANGLE -25C3;N # WHITE LEFT-POINTING SMALL TRIANGLE -25C4;N # BLACK LEFT-POINTING POINTER -25C5;N # WHITE LEFT-POINTING POINTER -25C6;A # BLACK DIAMOND -25C7;A # WHITE DIAMOND -25C8;A # WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND -25C9;N # FISHEYE -25CA;N # LOZENGE -25CB;A # WHITE CIRCLE -25CC;N # DOTTED CIRCLE -25CD;N # CIRCLE WITH VERTICAL FILL -25CE;A # BULLSEYE -25CF;A # BLACK CIRCLE -25D0;A # CIRCLE WITH LEFT HALF BLACK -25D1;A # CIRCLE WITH RIGHT HALF BLACK -25D2;N # CIRCLE WITH LOWER HALF BLACK -25D3;N # CIRCLE WITH UPPER HALF BLACK -25D4;N # CIRCLE WITH UPPER RIGHT QUADRANT BLACK -25D5;N # CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK -25D6;N # LEFT HALF BLACK CIRCLE -25D7;N # RIGHT HALF BLACK CIRCLE -25D8;N # INVERSE BULLET -25D9;N # INVERSE WHITE CIRCLE -25DA;N # UPPER HALF INVERSE WHITE CIRCLE -25DB;N # LOWER HALF INVERSE WHITE CIRCLE -25DC;N # UPPER LEFT QUADRANT CIRCULAR ARC -25DD;N # UPPER RIGHT QUADRANT CIRCULAR ARC -25DE;N # LOWER RIGHT QUADRANT CIRCULAR ARC -25DF;N # LOWER LEFT QUADRANT CIRCULAR ARC -25E0;N # UPPER HALF CIRCLE -25E1;N # LOWER HALF CIRCLE -25E2;A # BLACK LOWER RIGHT TRIANGLE -25E3;A # BLACK LOWER LEFT TRIANGLE -25E4;A # BLACK UPPER LEFT TRIANGLE -25E5;A # BLACK UPPER RIGHT TRIANGLE -25E6;N # WHITE BULLET -25E7;N # SQUARE WITH LEFT HALF BLACK -25E8;N # SQUARE WITH RIGHT HALF BLACK -25E9;N # SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK -25EA;N # SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK -25EB;N # WHITE SQUARE WITH VERTICAL BISECTING LINE -25EC;N # WHITE UP-POINTING TRIANGLE WITH DOT -25ED;N # UP-POINTING TRIANGLE WITH LEFT HALF BLACK -25EE;N # UP-POINTING TRIANGLE WITH RIGHT HALF BLACK -25EF;A # LARGE CIRCLE -25F0;N # WHITE SQUARE WITH UPPER LEFT QUADRANT -25F1;N # WHITE SQUARE WITH LOWER LEFT QUADRANT -25F2;N # WHITE SQUARE WITH LOWER RIGHT QUADRANT -25F3;N # WHITE SQUARE WITH UPPER RIGHT QUADRANT -25F4;N # WHITE CIRCLE WITH UPPER LEFT QUADRANT -25F5;N # WHITE CIRCLE WITH LOWER LEFT QUADRANT -25F6;N # WHITE CIRCLE WITH LOWER RIGHT QUADRANT -25F7;N # WHITE CIRCLE WITH UPPER RIGHT QUADRANT -25F8;N # UPPER LEFT TRIANGLE -25F9;N # UPPER RIGHT TRIANGLE -25FA;N # LOWER LEFT TRIANGLE -25FB;N # WHITE MEDIUM SQUARE -25FC;N # BLACK MEDIUM SQUARE -25FD;N # WHITE MEDIUM SMALL SQUARE -25FE;N # BLACK MEDIUM SMALL SQUARE -25FF;N # LOWER RIGHT TRIANGLE -2600;N # BLACK SUN WITH RAYS -2601;N # CLOUD -2602;N # UMBRELLA -2603;N # SNOWMAN -2604;N # COMET -2605;A # BLACK STAR -2606;A # WHITE STAR -2607;N # LIGHTNING -2608;N # THUNDERSTORM -2609;A # SUN -260A;N # ASCENDING NODE -260B;N # DESCENDING NODE -260C;N # CONJUNCTION -260D;N # OPPOSITION -260E;A # BLACK TELEPHONE -260F;A # WHITE TELEPHONE -2610;N # BALLOT BOX -2611;N # BALLOT BOX WITH CHECK -2612;N # BALLOT BOX WITH X -2613;N # SALTIRE -2614;A # UMBRELLA WITH RAIN DROPS -2615;A # HOT BEVERAGE -2616;N # WHITE SHOGI PIECE -2617;N # BLACK SHOGI PIECE -2618;N # SHAMROCK -2619;N # REVERSED ROTATED FLORAL HEART BULLET -261A;N # BLACK LEFT POINTING INDEX -261B;N # BLACK RIGHT POINTING INDEX -261C;A # WHITE LEFT POINTING INDEX -261D;N # WHITE UP POINTING INDEX -261E;A # WHITE RIGHT POINTING INDEX -261F;N # WHITE DOWN POINTING INDEX -2620;N # SKULL AND CROSSBONES -2621;N # CAUTION SIGN -2622;N # RADIOACTIVE SIGN -2623;N # BIOHAZARD SIGN -2624;N # CADUCEUS -2625;N # ANKH -2626;N # ORTHODOX CROSS -2627;N # CHI RHO -2628;N # CROSS OF LORRAINE -2629;N # CROSS OF JERUSALEM -262A;N # STAR AND CRESCENT -262B;N # FARSI SYMBOL -262C;N # ADI SHAKTI -262D;N # HAMMER AND SICKLE -262E;N # PEACE SYMBOL -262F;N # YIN YANG -2630;N # TRIGRAM FOR HEAVEN -2631;N # TRIGRAM FOR LAKE -2632;N # TRIGRAM FOR FIRE -2633;N # TRIGRAM FOR THUNDER -2634;N # TRIGRAM FOR WIND -2635;N # TRIGRAM FOR WATER -2636;N # TRIGRAM FOR MOUNTAIN -2637;N # TRIGRAM FOR EARTH -2638;N # WHEEL OF DHARMA -2639;N # WHITE FROWNING FACE -263A;N # WHITE SMILING FACE -263B;N # BLACK SMILING FACE -263C;N # WHITE SUN WITH RAYS -263D;N # FIRST QUARTER MOON -263E;N # LAST QUARTER MOON -263F;N # MERCURY -2640;A # FEMALE SIGN -2641;N # EARTH -2642;A # MALE SIGN -2643;N # JUPITER -2644;N # SATURN -2645;N # URANUS -2646;N # NEPTUNE -2647;N # PLUTO -2648;N # ARIES -2649;N # TAURUS -264A;N # GEMINI -264B;N # CANCER -264C;N # LEO -264D;N # VIRGO -264E;N # LIBRA -264F;N # SCORPIUS -2650;N # SAGITTARIUS -2651;N # CAPRICORN -2652;N # AQUARIUS -2653;N # PISCES -2654;N # WHITE CHESS KING -2655;N # WHITE CHESS QUEEN -2656;N # WHITE CHESS ROOK -2657;N # WHITE CHESS BISHOP -2658;N # WHITE CHESS KNIGHT -2659;N # WHITE CHESS PAWN -265A;N # BLACK CHESS KING -265B;N # BLACK CHESS QUEEN -265C;N # BLACK CHESS ROOK -265D;N # BLACK CHESS BISHOP -265E;N # BLACK CHESS KNIGHT -265F;N # BLACK CHESS PAWN -2660;A # BLACK SPADE SUIT -2661;A # WHITE HEART SUIT -2662;N # WHITE DIAMOND SUIT -2663;A # BLACK CLUB SUIT -2664;A # WHITE SPADE SUIT -2665;A # BLACK HEART SUIT -2666;N # BLACK DIAMOND SUIT -2667;A # WHITE CLUB SUIT -2668;A # HOT SPRINGS -2669;A # QUARTER NOTE -266A;A # EIGHTH NOTE -266B;N # BEAMED EIGHTH NOTES -266C;A # BEAMED SIXTEENTH NOTES -266D;A # MUSIC FLAT SIGN -266E;N # MUSIC NATURAL SIGN -266F;A # MUSIC SHARP SIGN -2670;N # WEST SYRIAC CROSS -2671;N # EAST SYRIAC CROSS -2672;N # UNIVERSAL RECYCLING SYMBOL -2673;N # RECYCLING SYMBOL FOR TYPE-1 PLASTICS -2674;N # RECYCLING SYMBOL FOR TYPE-2 PLASTICS -2675;N # RECYCLING SYMBOL FOR TYPE-3 PLASTICS -2676;N # RECYCLING SYMBOL FOR TYPE-4 PLASTICS -2677;N # RECYCLING SYMBOL FOR TYPE-5 PLASTICS -2678;N # RECYCLING SYMBOL FOR TYPE-6 PLASTICS -2679;N # RECYCLING SYMBOL FOR TYPE-7 PLASTICS -267A;N # RECYCLING SYMBOL FOR GENERIC MATERIALS -267B;N # BLACK UNIVERSAL RECYCLING SYMBOL -267C;N # RECYCLED PAPER SYMBOL -267D;N # PARTIALLY-RECYCLED PAPER SYMBOL -267E;N # PERMANENT PAPER SIGN -267F;N # WHEELCHAIR SYMBOL -2680;N # DIE FACE-1 -2681;N # DIE FACE-2 -2682;N # DIE FACE-3 -2683;N # DIE FACE-4 -2684;N # DIE FACE-5 -2685;N # DIE FACE-6 -2686;N # WHITE CIRCLE WITH DOT RIGHT -2687;N # WHITE CIRCLE WITH TWO DOTS -2688;N # BLACK CIRCLE WITH WHITE DOT RIGHT -2689;N # BLACK CIRCLE WITH TWO WHITE DOTS -268A;N # MONOGRAM FOR YANG -268B;N # MONOGRAM FOR YIN -268C;N # DIGRAM FOR GREATER YANG -268D;N # DIGRAM FOR LESSER YIN -268E;N # DIGRAM FOR LESSER YANG -268F;N # DIGRAM FOR GREATER YIN -2690;N # WHITE FLAG -2691;N # BLACK FLAG -2692;N # HAMMER AND PICK -2693;N # ANCHOR -2694;N # CROSSED SWORDS -2695;N # STAFF OF AESCULAPIUS -2696;N # SCALES -2697;N # ALEMBIC -2698;N # FLOWER -2699;N # GEAR -269A;N # STAFF OF HERMES -269B;N # ATOM SYMBOL -269C;N # FLEUR-DE-LIS -26A0;N # WARNING SIGN -26A1;N # HIGH VOLTAGE SIGN -26A2;N # DOUBLED FEMALE SIGN -26A3;N # DOUBLED MALE SIGN -26A4;N # INTERLOCKED FEMALE AND MALE SIGN -26A5;N # MALE AND FEMALE SIGN -26A6;N # MALE WITH STROKE SIGN -26A7;N # MALE WITH STROKE AND MALE AND FEMALE SIGN -26A8;N # VERTICAL MALE WITH STROKE SIGN -26A9;N # HORIZONTAL MALE WITH STROKE SIGN -26AA;N # MEDIUM WHITE CIRCLE -26AB;N # MEDIUM BLACK CIRCLE -26AC;N # MEDIUM SMALL WHITE CIRCLE -26AD;N # MARRIAGE SYMBOL -26AE;N # DIVORCE SYMBOL -26AF;N # UNMARRIED PARTNERSHIP SYMBOL -26B0;N # COFFIN -26B1;N # FUNERAL URN -2701;N # UPPER BLADE SCISSORS -2702;N # BLACK SCISSORS -2703;N # LOWER BLADE SCISSORS -2704;N # WHITE SCISSORS -2706;N # TELEPHONE LOCATION SIGN -2707;N # TAPE DRIVE -2708;N # AIRPLANE -2709;N # ENVELOPE -270C;N # VICTORY HAND -270D;N # WRITING HAND -270E;N # LOWER RIGHT PENCIL -270F;N # PENCIL -2710;N # UPPER RIGHT PENCIL -2711;N # WHITE NIB -2712;N # BLACK NIB -2713;N # CHECK MARK -2714;N # HEAVY CHECK MARK -2715;N # MULTIPLICATION X -2716;N # HEAVY MULTIPLICATION X -2717;N # BALLOT X -2718;N # HEAVY BALLOT X -2719;N # OUTLINED GREEK CROSS -271A;N # HEAVY GREEK CROSS -271B;N # OPEN CENTRE CROSS -271C;N # HEAVY OPEN CENTRE CROSS -271D;N # LATIN CROSS -271E;N # SHADOWED WHITE LATIN CROSS -271F;N # OUTLINED LATIN CROSS -2720;N # MALTESE CROSS -2721;N # STAR OF DAVID -2722;N # FOUR TEARDROP-SPOKED ASTERISK -2723;N # FOUR BALLOON-SPOKED ASTERISK -2724;N # HEAVY FOUR BALLOON-SPOKED ASTERISK -2725;N # FOUR CLUB-SPOKED ASTERISK -2726;N # BLACK FOUR POINTED STAR -2727;N # WHITE FOUR POINTED STAR -2729;N # STRESS OUTLINED WHITE STAR -272A;N # CIRCLED WHITE STAR -272B;N # OPEN CENTRE BLACK STAR -272C;N # BLACK CENTRE WHITE STAR -272D;N # OUTLINED BLACK STAR -272E;N # HEAVY OUTLINED BLACK STAR -272F;N # PINWHEEL STAR -2730;N # SHADOWED WHITE STAR -2731;N # HEAVY ASTERISK -2732;N # OPEN CENTRE ASTERISK -2733;N # EIGHT SPOKED ASTERISK -2734;N # EIGHT POINTED BLACK STAR -2735;N # EIGHT POINTED PINWHEEL STAR -2736;N # SIX POINTED BLACK STAR -2737;N # EIGHT POINTED RECTILINEAR BLACK STAR -2738;N # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR -2739;N # TWELVE POINTED BLACK STAR -273A;N # SIXTEEN POINTED ASTERISK -273B;N # TEARDROP-SPOKED ASTERISK -273C;N # OPEN CENTRE TEARDROP-SPOKED ASTERISK -273D;A # HEAVY TEARDROP-SPOKED ASTERISK -273E;N # SIX PETALLED BLACK AND WHITE FLORETTE -273F;N # BLACK FLORETTE -2740;N # WHITE FLORETTE -2741;N # EIGHT PETALLED OUTLINED BLACK FLORETTE -2742;N # CIRCLED OPEN CENTRE EIGHT POINTED STAR -2743;N # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK -2744;N # SNOWFLAKE -2745;N # TIGHT TRIFOLIATE SNOWFLAKE -2746;N # HEAVY CHEVRON SNOWFLAKE -2747;N # SPARKLE -2748;N # HEAVY SPARKLE -2749;N # BALLOON-SPOKED ASTERISK -274A;N # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -274B;N # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -274D;N # SHADOWED WHITE CIRCLE -274F;N # LOWER RIGHT DROP-SHADOWED WHITE SQUARE -2750;N # UPPER RIGHT DROP-SHADOWED WHITE SQUARE -2751;N # LOWER RIGHT SHADOWED WHITE SQUARE -2752;N # UPPER RIGHT SHADOWED WHITE SQUARE -2756;N # BLACK DIAMOND MINUS WHITE X -2758;N # LIGHT VERTICAL BAR -2759;N # MEDIUM VERTICAL BAR -275A;N # HEAVY VERTICAL BAR -275B;N # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT -275C;N # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT -275D;N # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT -275E;N # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT -2761;N # CURVED STEM PARAGRAPH SIGN ORNAMENT -2762;N # HEAVY EXCLAMATION MARK ORNAMENT -2763;N # HEAVY HEART EXCLAMATION MARK ORNAMENT -2764;N # HEAVY BLACK HEART -2765;N # ROTATED HEAVY BLACK HEART BULLET -2766;N # FLORAL HEART -2767;N # ROTATED FLORAL HEART BULLET -2768;N # MEDIUM LEFT PARENTHESIS ORNAMENT -2769;N # MEDIUM RIGHT PARENTHESIS ORNAMENT -276A;N # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT -276B;N # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT -276C;N # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT -276D;N # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT -276E;N # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT -276F;N # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT -2770;N # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT -2771;N # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT -2772;N # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT -2773;N # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT -2774;N # MEDIUM LEFT CURLY BRACKET ORNAMENT -2775;N # MEDIUM RIGHT CURLY BRACKET ORNAMENT -2776;A # DINGBAT NEGATIVE CIRCLED DIGIT ONE -2777;A # DINGBAT NEGATIVE CIRCLED DIGIT TWO -2778;A # DINGBAT NEGATIVE CIRCLED DIGIT THREE -2779;A # DINGBAT NEGATIVE CIRCLED DIGIT FOUR -277A;A # DINGBAT NEGATIVE CIRCLED DIGIT FIVE -277B;A # DINGBAT NEGATIVE CIRCLED DIGIT SIX -277C;A # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN -277D;A # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT -277E;A # DINGBAT NEGATIVE CIRCLED DIGIT NINE -277F;A # DINGBAT NEGATIVE CIRCLED NUMBER TEN -2780;N # DINGBAT CIRCLED SANS-SERIF DIGIT ONE -2781;N # DINGBAT CIRCLED SANS-SERIF DIGIT TWO -2782;N # DINGBAT CIRCLED SANS-SERIF DIGIT THREE -2783;N # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR -2784;N # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE -2785;N # DINGBAT CIRCLED SANS-SERIF DIGIT SIX -2786;N # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN -2787;N # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT -2788;N # DINGBAT CIRCLED SANS-SERIF DIGIT NINE -2789;N # DINGBAT CIRCLED SANS-SERIF NUMBER TEN -278A;N # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE -278B;N # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO -278C;N # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE -278D;N # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR -278E;N # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE -278F;N # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX -2790;N # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN -2791;N # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT -2792;N # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE -2793;N # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN -2794;N # HEAVY WIDE-HEADED RIGHTWARDS ARROW -2798;N # HEAVY SOUTH EAST ARROW -2799;N # HEAVY RIGHTWARDS ARROW -279A;N # HEAVY NORTH EAST ARROW -279B;N # DRAFTING POINT RIGHTWARDS ARROW -279C;N # HEAVY ROUND-TIPPED RIGHTWARDS ARROW -279D;N # TRIANGLE-HEADED RIGHTWARDS ARROW -279E;N # HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW -279F;N # DASHED TRIANGLE-HEADED RIGHTWARDS ARROW -27A0;N # HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW -27A1;N # BLACK RIGHTWARDS ARROW -27A2;N # THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD -27A3;N # THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD -27A4;N # BLACK RIGHTWARDS ARROWHEAD -27A5;N # HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW -27A6;N # HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW -27A7;N # SQUAT BLACK RIGHTWARDS ARROW -27A8;N # HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW -27A9;N # RIGHT-SHADED WHITE RIGHTWARDS ARROW -27AA;N # LEFT-SHADED WHITE RIGHTWARDS ARROW -27AB;N # BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW -27AC;N # FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW -27AD;N # HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27AE;N # HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27AF;N # NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27B1;N # NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27B2;N # CIRCLED HEAVY WHITE RIGHTWARDS ARROW -27B3;N # WHITE-FEATHERED RIGHTWARDS ARROW -27B4;N # BLACK-FEATHERED SOUTH EAST ARROW -27B5;N # BLACK-FEATHERED RIGHTWARDS ARROW -27B6;N # BLACK-FEATHERED NORTH EAST ARROW -27B7;N # HEAVY BLACK-FEATHERED SOUTH EAST ARROW -27B8;N # HEAVY BLACK-FEATHERED RIGHTWARDS ARROW -27B9;N # HEAVY BLACK-FEATHERED NORTH EAST ARROW -27BA;N # TEARDROP-BARBED RIGHTWARDS ARROW -27BB;N # HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW -27BC;N # WEDGE-TAILED RIGHTWARDS ARROW -27BD;N # HEAVY WEDGE-TAILED RIGHTWARDS ARROW -27BE;N # OPEN-OUTLINED RIGHTWARDS ARROW -27C0;N # THREE DIMENSIONAL ANGLE -27C1;N # WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE -27C2;N # PERPENDICULAR -27C3;N # OPEN SUBSET -27C4;N # OPEN SUPERSET -27C5;N # LEFT S-SHAPED BAG DELIMITER -27C6;N # RIGHT S-SHAPED BAG DELIMITER -27D0;N # WHITE DIAMOND WITH CENTRED DOT -27D1;N # AND WITH DOT -27D2;N # ELEMENT OF OPENING UPWARDS -27D3;N # LOWER RIGHT CORNER WITH DOT -27D4;N # UPPER LEFT CORNER WITH DOT -27D5;N # LEFT OUTER JOIN -27D6;N # RIGHT OUTER JOIN -27D7;N # FULL OUTER JOIN -27D8;N # LARGE UP TACK -27D9;N # LARGE DOWN TACK -27DA;N # LEFT AND RIGHT DOUBLE TURNSTILE -27DB;N # LEFT AND RIGHT TACK -27DC;N # LEFT MULTIMAP -27DD;N # LONG RIGHT TACK -27DE;N # LONG LEFT TACK -27DF;N # UP TACK WITH CIRCLE ABOVE -27E0;N # LOZENGE DIVIDED BY HORIZONTAL RULE -27E1;N # WHITE CONCAVE-SIDED DIAMOND -27E2;N # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK -27E3;N # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK -27E4;N # WHITE SQUARE WITH LEFTWARDS TICK -27E5;N # WHITE SQUARE WITH RIGHTWARDS TICK -27E6;Na # MATHEMATICAL LEFT WHITE SQUARE BRACKET -27E7;Na # MATHEMATICAL RIGHT WHITE SQUARE BRACKET -27E8;Na # MATHEMATICAL LEFT ANGLE BRACKET -27E9;Na # MATHEMATICAL RIGHT ANGLE BRACKET -27EA;Na # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET -27EB;Na # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET -27F0;N # UPWARDS QUADRUPLE ARROW -27F1;N # DOWNWARDS QUADRUPLE ARROW -27F2;N # ANTICLOCKWISE GAPPED CIRCLE ARROW -27F3;N # CLOCKWISE GAPPED CIRCLE ARROW -27F4;N # RIGHT ARROW WITH CIRCLED PLUS -27F5;N # LONG LEFTWARDS ARROW -27F6;N # LONG RIGHTWARDS ARROW -27F7;N # LONG LEFT RIGHT ARROW -27F8;N # LONG LEFTWARDS DOUBLE ARROW -27F9;N # LONG RIGHTWARDS DOUBLE ARROW -27FA;N # LONG LEFT RIGHT DOUBLE ARROW -27FB;N # LONG LEFTWARDS ARROW FROM BAR -27FC;N # LONG RIGHTWARDS ARROW FROM BAR -27FD;N # LONG LEFTWARDS DOUBLE ARROW FROM BAR -27FE;N # LONG RIGHTWARDS DOUBLE ARROW FROM BAR -27FF;N # LONG RIGHTWARDS SQUIGGLE ARROW -2800;N # BRAILLE PATTERN BLANK -2801;N # BRAILLE PATTERN DOTS-1 -2802;N # BRAILLE PATTERN DOTS-2 -2803;N # BRAILLE PATTERN DOTS-12 -2804;N # BRAILLE PATTERN DOTS-3 -2805;N # BRAILLE PATTERN DOTS-13 -2806;N # BRAILLE PATTERN DOTS-23 -2807;N # BRAILLE PATTERN DOTS-123 -2808;N # BRAILLE PATTERN DOTS-4 -2809;N # BRAILLE PATTERN DOTS-14 -280A;N # BRAILLE PATTERN DOTS-24 -280B;N # BRAILLE PATTERN DOTS-124 -280C;N # BRAILLE PATTERN DOTS-34 -280D;N # BRAILLE PATTERN DOTS-134 -280E;N # BRAILLE PATTERN DOTS-234 -280F;N # BRAILLE PATTERN DOTS-1234 -2810;N # BRAILLE PATTERN DOTS-5 -2811;N # BRAILLE PATTERN DOTS-15 -2812;N # BRAILLE PATTERN DOTS-25 -2813;N # BRAILLE PATTERN DOTS-125 -2814;N # BRAILLE PATTERN DOTS-35 -2815;N # BRAILLE PATTERN DOTS-135 -2816;N # BRAILLE PATTERN DOTS-235 -2817;N # BRAILLE PATTERN DOTS-1235 -2818;N # BRAILLE PATTERN DOTS-45 -2819;N # BRAILLE PATTERN DOTS-145 -281A;N # BRAILLE PATTERN DOTS-245 -281B;N # BRAILLE PATTERN DOTS-1245 -281C;N # BRAILLE PATTERN DOTS-345 -281D;N # BRAILLE PATTERN DOTS-1345 -281E;N # BRAILLE PATTERN DOTS-2345 -281F;N # BRAILLE PATTERN DOTS-12345 -2820;N # BRAILLE PATTERN DOTS-6 -2821;N # BRAILLE PATTERN DOTS-16 -2822;N # BRAILLE PATTERN DOTS-26 -2823;N # BRAILLE PATTERN DOTS-126 -2824;N # BRAILLE PATTERN DOTS-36 -2825;N # BRAILLE PATTERN DOTS-136 -2826;N # BRAILLE PATTERN DOTS-236 -2827;N # BRAILLE PATTERN DOTS-1236 -2828;N # BRAILLE PATTERN DOTS-46 -2829;N # BRAILLE PATTERN DOTS-146 -282A;N # BRAILLE PATTERN DOTS-246 -282B;N # BRAILLE PATTERN DOTS-1246 -282C;N # BRAILLE PATTERN DOTS-346 -282D;N # BRAILLE PATTERN DOTS-1346 -282E;N # BRAILLE PATTERN DOTS-2346 -282F;N # BRAILLE PATTERN DOTS-12346 -2830;N # BRAILLE PATTERN DOTS-56 -2831;N # BRAILLE PATTERN DOTS-156 -2832;N # BRAILLE PATTERN DOTS-256 -2833;N # BRAILLE PATTERN DOTS-1256 -2834;N # BRAILLE PATTERN DOTS-356 -2835;N # BRAILLE PATTERN DOTS-1356 -2836;N # BRAILLE PATTERN DOTS-2356 -2837;N # BRAILLE PATTERN DOTS-12356 -2838;N # BRAILLE PATTERN DOTS-456 -2839;N # BRAILLE PATTERN DOTS-1456 -283A;N # BRAILLE PATTERN DOTS-2456 -283B;N # BRAILLE PATTERN DOTS-12456 -283C;N # BRAILLE PATTERN DOTS-3456 -283D;N # BRAILLE PATTERN DOTS-13456 -283E;N # BRAILLE PATTERN DOTS-23456 -283F;N # BRAILLE PATTERN DOTS-123456 -2840;N # BRAILLE PATTERN DOTS-7 -2841;N # BRAILLE PATTERN DOTS-17 -2842;N # BRAILLE PATTERN DOTS-27 -2843;N # BRAILLE PATTERN DOTS-127 -2844;N # BRAILLE PATTERN DOTS-37 -2845;N # BRAILLE PATTERN DOTS-137 -2846;N # BRAILLE PATTERN DOTS-237 -2847;N # BRAILLE PATTERN DOTS-1237 -2848;N # BRAILLE PATTERN DOTS-47 -2849;N # BRAILLE PATTERN DOTS-147 -284A;N # BRAILLE PATTERN DOTS-247 -284B;N # BRAILLE PATTERN DOTS-1247 -284C;N # BRAILLE PATTERN DOTS-347 -284D;N # BRAILLE PATTERN DOTS-1347 -284E;N # BRAILLE PATTERN DOTS-2347 -284F;N # BRAILLE PATTERN DOTS-12347 -2850;N # BRAILLE PATTERN DOTS-57 -2851;N # BRAILLE PATTERN DOTS-157 -2852;N # BRAILLE PATTERN DOTS-257 -2853;N # BRAILLE PATTERN DOTS-1257 -2854;N # BRAILLE PATTERN DOTS-357 -2855;N # BRAILLE PATTERN DOTS-1357 -2856;N # BRAILLE PATTERN DOTS-2357 -2857;N # BRAILLE PATTERN DOTS-12357 -2858;N # BRAILLE PATTERN DOTS-457 -2859;N # BRAILLE PATTERN DOTS-1457 -285A;N # BRAILLE PATTERN DOTS-2457 -285B;N # BRAILLE PATTERN DOTS-12457 -285C;N # BRAILLE PATTERN DOTS-3457 -285D;N # BRAILLE PATTERN DOTS-13457 -285E;N # BRAILLE PATTERN DOTS-23457 -285F;N # BRAILLE PATTERN DOTS-123457 -2860;N # BRAILLE PATTERN DOTS-67 -2861;N # BRAILLE PATTERN DOTS-167 -2862;N # BRAILLE PATTERN DOTS-267 -2863;N # BRAILLE PATTERN DOTS-1267 -2864;N # BRAILLE PATTERN DOTS-367 -2865;N # BRAILLE PATTERN DOTS-1367 -2866;N # BRAILLE PATTERN DOTS-2367 -2867;N # BRAILLE PATTERN DOTS-12367 -2868;N # BRAILLE PATTERN DOTS-467 -2869;N # BRAILLE PATTERN DOTS-1467 -286A;N # BRAILLE PATTERN DOTS-2467 -286B;N # BRAILLE PATTERN DOTS-12467 -286C;N # BRAILLE PATTERN DOTS-3467 -286D;N # BRAILLE PATTERN DOTS-13467 -286E;N # BRAILLE PATTERN DOTS-23467 -286F;N # BRAILLE PATTERN DOTS-123467 -2870;N # BRAILLE PATTERN DOTS-567 -2871;N # BRAILLE PATTERN DOTS-1567 -2872;N # BRAILLE PATTERN DOTS-2567 -2873;N # BRAILLE PATTERN DOTS-12567 -2874;N # BRAILLE PATTERN DOTS-3567 -2875;N # BRAILLE PATTERN DOTS-13567 -2876;N # BRAILLE PATTERN DOTS-23567 -2877;N # BRAILLE PATTERN DOTS-123567 -2878;N # BRAILLE PATTERN DOTS-4567 -2879;N # BRAILLE PATTERN DOTS-14567 -287A;N # BRAILLE PATTERN DOTS-24567 -287B;N # BRAILLE PATTERN DOTS-124567 -287C;N # BRAILLE PATTERN DOTS-34567 -287D;N # BRAILLE PATTERN DOTS-134567 -287E;N # BRAILLE PATTERN DOTS-234567 -287F;N # BRAILLE PATTERN DOTS-1234567 -2880;N # BRAILLE PATTERN DOTS-8 -2881;N # BRAILLE PATTERN DOTS-18 -2882;N # BRAILLE PATTERN DOTS-28 -2883;N # BRAILLE PATTERN DOTS-128 -2884;N # BRAILLE PATTERN DOTS-38 -2885;N # BRAILLE PATTERN DOTS-138 -2886;N # BRAILLE PATTERN DOTS-238 -2887;N # BRAILLE PATTERN DOTS-1238 -2888;N # BRAILLE PATTERN DOTS-48 -2889;N # BRAILLE PATTERN DOTS-148 -288A;N # BRAILLE PATTERN DOTS-248 -288B;N # BRAILLE PATTERN DOTS-1248 -288C;N # BRAILLE PATTERN DOTS-348 -288D;N # BRAILLE PATTERN DOTS-1348 -288E;N # BRAILLE PATTERN DOTS-2348 -288F;N # BRAILLE PATTERN DOTS-12348 -2890;N # BRAILLE PATTERN DOTS-58 -2891;N # BRAILLE PATTERN DOTS-158 -2892;N # BRAILLE PATTERN DOTS-258 -2893;N # BRAILLE PATTERN DOTS-1258 -2894;N # BRAILLE PATTERN DOTS-358 -2895;N # BRAILLE PATTERN DOTS-1358 -2896;N # BRAILLE PATTERN DOTS-2358 -2897;N # BRAILLE PATTERN DOTS-12358 -2898;N # BRAILLE PATTERN DOTS-458 -2899;N # BRAILLE PATTERN DOTS-1458 -289A;N # BRAILLE PATTERN DOTS-2458 -289B;N # BRAILLE PATTERN DOTS-12458 -289C;N # BRAILLE PATTERN DOTS-3458 -289D;N # BRAILLE PATTERN DOTS-13458 -289E;N # BRAILLE PATTERN DOTS-23458 -289F;N # BRAILLE PATTERN DOTS-123458 -28A0;N # BRAILLE PATTERN DOTS-68 -28A1;N # BRAILLE PATTERN DOTS-168 -28A2;N # BRAILLE PATTERN DOTS-268 -28A3;N # BRAILLE PATTERN DOTS-1268 -28A4;N # BRAILLE PATTERN DOTS-368 -28A5;N # BRAILLE PATTERN DOTS-1368 -28A6;N # BRAILLE PATTERN DOTS-2368 -28A7;N # BRAILLE PATTERN DOTS-12368 -28A8;N # BRAILLE PATTERN DOTS-468 -28A9;N # BRAILLE PATTERN DOTS-1468 -28AA;N # BRAILLE PATTERN DOTS-2468 -28AB;N # BRAILLE PATTERN DOTS-12468 -28AC;N # BRAILLE PATTERN DOTS-3468 -28AD;N # BRAILLE PATTERN DOTS-13468 -28AE;N # BRAILLE PATTERN DOTS-23468 -28AF;N # BRAILLE PATTERN DOTS-123468 -28B0;N # BRAILLE PATTERN DOTS-568 -28B1;N # BRAILLE PATTERN DOTS-1568 -28B2;N # BRAILLE PATTERN DOTS-2568 -28B3;N # BRAILLE PATTERN DOTS-12568 -28B4;N # BRAILLE PATTERN DOTS-3568 -28B5;N # BRAILLE PATTERN DOTS-13568 -28B6;N # BRAILLE PATTERN DOTS-23568 -28B7;N # BRAILLE PATTERN DOTS-123568 -28B8;N # BRAILLE PATTERN DOTS-4568 -28B9;N # BRAILLE PATTERN DOTS-14568 -28BA;N # BRAILLE PATTERN DOTS-24568 -28BB;N # BRAILLE PATTERN DOTS-124568 -28BC;N # BRAILLE PATTERN DOTS-34568 -28BD;N # BRAILLE PATTERN DOTS-134568 -28BE;N # BRAILLE PATTERN DOTS-234568 -28BF;N # BRAILLE PATTERN DOTS-1234568 -28C0;N # BRAILLE PATTERN DOTS-78 -28C1;N # BRAILLE PATTERN DOTS-178 -28C2;N # BRAILLE PATTERN DOTS-278 -28C3;N # BRAILLE PATTERN DOTS-1278 -28C4;N # BRAILLE PATTERN DOTS-378 -28C5;N # BRAILLE PATTERN DOTS-1378 -28C6;N # BRAILLE PATTERN DOTS-2378 -28C7;N # BRAILLE PATTERN DOTS-12378 -28C8;N # BRAILLE PATTERN DOTS-478 -28C9;N # BRAILLE PATTERN DOTS-1478 -28CA;N # BRAILLE PATTERN DOTS-2478 -28CB;N # BRAILLE PATTERN DOTS-12478 -28CC;N # BRAILLE PATTERN DOTS-3478 -28CD;N # BRAILLE PATTERN DOTS-13478 -28CE;N # BRAILLE PATTERN DOTS-23478 -28CF;N # BRAILLE PATTERN DOTS-123478 -28D0;N # BRAILLE PATTERN DOTS-578 -28D1;N # BRAILLE PATTERN DOTS-1578 -28D2;N # BRAILLE PATTERN DOTS-2578 -28D3;N # BRAILLE PATTERN DOTS-12578 -28D4;N # BRAILLE PATTERN DOTS-3578 -28D5;N # BRAILLE PATTERN DOTS-13578 -28D6;N # BRAILLE PATTERN DOTS-23578 -28D7;N # BRAILLE PATTERN DOTS-123578 -28D8;N # BRAILLE PATTERN DOTS-4578 -28D9;N # BRAILLE PATTERN DOTS-14578 -28DA;N # BRAILLE PATTERN DOTS-24578 -28DB;N # BRAILLE PATTERN DOTS-124578 -28DC;N # BRAILLE PATTERN DOTS-34578 -28DD;N # BRAILLE PATTERN DOTS-134578 -28DE;N # BRAILLE PATTERN DOTS-234578 -28DF;N # BRAILLE PATTERN DOTS-1234578 -28E0;N # BRAILLE PATTERN DOTS-678 -28E1;N # BRAILLE PATTERN DOTS-1678 -28E2;N # BRAILLE PATTERN DOTS-2678 -28E3;N # BRAILLE PATTERN DOTS-12678 -28E4;N # BRAILLE PATTERN DOTS-3678 -28E5;N # BRAILLE PATTERN DOTS-13678 -28E6;N # BRAILLE PATTERN DOTS-23678 -28E7;N # BRAILLE PATTERN DOTS-123678 -28E8;N # BRAILLE PATTERN DOTS-4678 -28E9;N # BRAILLE PATTERN DOTS-14678 -28EA;N # BRAILLE PATTERN DOTS-24678 -28EB;N # BRAILLE PATTERN DOTS-124678 -28EC;N # BRAILLE PATTERN DOTS-34678 -28ED;N # BRAILLE PATTERN DOTS-134678 -28EE;N # BRAILLE PATTERN DOTS-234678 -28EF;N # BRAILLE PATTERN DOTS-1234678 -28F0;N # BRAILLE PATTERN DOTS-5678 -28F1;N # BRAILLE PATTERN DOTS-15678 -28F2;N # BRAILLE PATTERN DOTS-25678 -28F3;N # BRAILLE PATTERN DOTS-125678 -28F4;N # BRAILLE PATTERN DOTS-35678 -28F5;N # BRAILLE PATTERN DOTS-135678 -28F6;N # BRAILLE PATTERN DOTS-235678 -28F7;N # BRAILLE PATTERN DOTS-1235678 -28F8;N # BRAILLE PATTERN DOTS-45678 -28F9;N # BRAILLE PATTERN DOTS-145678 -28FA;N # BRAILLE PATTERN DOTS-245678 -28FB;N # BRAILLE PATTERN DOTS-1245678 -28FC;N # BRAILLE PATTERN DOTS-345678 -28FD;N # BRAILLE PATTERN DOTS-1345678 -28FE;N # BRAILLE PATTERN DOTS-2345678 -28FF;N # BRAILLE PATTERN DOTS-12345678 -2900;N # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE -2901;N # RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE -2902;N # LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE -2903;N # RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE -2904;N # LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE -2905;N # RIGHTWARDS TWO-HEADED ARROW FROM BAR -2906;N # LEFTWARDS DOUBLE ARROW FROM BAR -2907;N # RIGHTWARDS DOUBLE ARROW FROM BAR -2908;N # DOWNWARDS ARROW WITH HORIZONTAL STROKE -2909;N # UPWARDS ARROW WITH HORIZONTAL STROKE -290A;N # UPWARDS TRIPLE ARROW -290B;N # DOWNWARDS TRIPLE ARROW -290C;N # LEFTWARDS DOUBLE DASH ARROW -290D;N # RIGHTWARDS DOUBLE DASH ARROW -290E;N # LEFTWARDS TRIPLE DASH ARROW -290F;N # RIGHTWARDS TRIPLE DASH ARROW -2910;N # RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW -2911;N # RIGHTWARDS ARROW WITH DOTTED STEM -2912;N # UPWARDS ARROW TO BAR -2913;N # DOWNWARDS ARROW TO BAR -2914;N # RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE -2915;N # RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE -2916;N # RIGHTWARDS TWO-HEADED ARROW WITH TAIL -2917;N # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE -2918;N # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE -2919;N # LEFTWARDS ARROW-TAIL -291A;N # RIGHTWARDS ARROW-TAIL -291B;N # LEFTWARDS DOUBLE ARROW-TAIL -291C;N # RIGHTWARDS DOUBLE ARROW-TAIL -291D;N # LEFTWARDS ARROW TO BLACK DIAMOND -291E;N # RIGHTWARDS ARROW TO BLACK DIAMOND -291F;N # LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND -2920;N # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND -2921;N # NORTH WEST AND SOUTH EAST ARROW -2922;N # NORTH EAST AND SOUTH WEST ARROW -2923;N # NORTH WEST ARROW WITH HOOK -2924;N # NORTH EAST ARROW WITH HOOK -2925;N # SOUTH EAST ARROW WITH HOOK -2926;N # SOUTH WEST ARROW WITH HOOK -2927;N # NORTH WEST ARROW AND NORTH EAST ARROW -2928;N # NORTH EAST ARROW AND SOUTH EAST ARROW -2929;N # SOUTH EAST ARROW AND SOUTH WEST ARROW -292A;N # SOUTH WEST ARROW AND NORTH WEST ARROW -292B;N # RISING DIAGONAL CROSSING FALLING DIAGONAL -292C;N # FALLING DIAGONAL CROSSING RISING DIAGONAL -292D;N # SOUTH EAST ARROW CROSSING NORTH EAST ARROW -292E;N # NORTH EAST ARROW CROSSING SOUTH EAST ARROW -292F;N # FALLING DIAGONAL CROSSING NORTH EAST ARROW -2930;N # RISING DIAGONAL CROSSING SOUTH EAST ARROW -2931;N # NORTH EAST ARROW CROSSING NORTH WEST ARROW -2932;N # NORTH WEST ARROW CROSSING NORTH EAST ARROW -2933;N # WAVE ARROW POINTING DIRECTLY RIGHT -2934;N # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS -2935;N # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS -2936;N # ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS -2937;N # ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS -2938;N # RIGHT-SIDE ARC CLOCKWISE ARROW -2939;N # LEFT-SIDE ARC ANTICLOCKWISE ARROW -293A;N # TOP ARC ANTICLOCKWISE ARROW -293B;N # BOTTOM ARC ANTICLOCKWISE ARROW -293C;N # TOP ARC CLOCKWISE ARROW WITH MINUS -293D;N # TOP ARC ANTICLOCKWISE ARROW WITH PLUS -293E;N # LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW -293F;N # LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW -2940;N # ANTICLOCKWISE CLOSED CIRCLE ARROW -2941;N # CLOCKWISE CLOSED CIRCLE ARROW -2942;N # RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW -2943;N # LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW -2944;N # SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW -2945;N # RIGHTWARDS ARROW WITH PLUS BELOW -2946;N # LEFTWARDS ARROW WITH PLUS BELOW -2947;N # RIGHTWARDS ARROW THROUGH X -2948;N # LEFT RIGHT ARROW THROUGH SMALL CIRCLE -2949;N # UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE -294A;N # LEFT BARB UP RIGHT BARB DOWN HARPOON -294B;N # LEFT BARB DOWN RIGHT BARB UP HARPOON -294C;N # UP BARB RIGHT DOWN BARB LEFT HARPOON -294D;N # UP BARB LEFT DOWN BARB RIGHT HARPOON -294E;N # LEFT BARB UP RIGHT BARB UP HARPOON -294F;N # UP BARB RIGHT DOWN BARB RIGHT HARPOON -2950;N # LEFT BARB DOWN RIGHT BARB DOWN HARPOON -2951;N # UP BARB LEFT DOWN BARB LEFT HARPOON -2952;N # LEFTWARDS HARPOON WITH BARB UP TO BAR -2953;N # RIGHTWARDS HARPOON WITH BARB UP TO BAR -2954;N # UPWARDS HARPOON WITH BARB RIGHT TO BAR -2955;N # DOWNWARDS HARPOON WITH BARB RIGHT TO BAR -2956;N # LEFTWARDS HARPOON WITH BARB DOWN TO BAR -2957;N # RIGHTWARDS HARPOON WITH BARB DOWN TO BAR -2958;N # UPWARDS HARPOON WITH BARB LEFT TO BAR -2959;N # DOWNWARDS HARPOON WITH BARB LEFT TO BAR -295A;N # LEFTWARDS HARPOON WITH BARB UP FROM BAR -295B;N # RIGHTWARDS HARPOON WITH BARB UP FROM BAR -295C;N # UPWARDS HARPOON WITH BARB RIGHT FROM BAR -295D;N # DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR -295E;N # LEFTWARDS HARPOON WITH BARB DOWN FROM BAR -295F;N # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR -2960;N # UPWARDS HARPOON WITH BARB LEFT FROM BAR -2961;N # DOWNWARDS HARPOON WITH BARB LEFT FROM BAR -2962;N # LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN -2963;N # UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT -2964;N # RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN -2965;N # DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT -2966;N # LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP -2967;N # LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN -2968;N # RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP -2969;N # RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN -296A;N # LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH -296B;N # LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH -296C;N # RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH -296D;N # RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH -296E;N # UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT -296F;N # DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT -2970;N # RIGHT DOUBLE ARROW WITH ROUNDED HEAD -2971;N # EQUALS SIGN ABOVE RIGHTWARDS ARROW -2972;N # TILDE OPERATOR ABOVE RIGHTWARDS ARROW -2973;N # LEFTWARDS ARROW ABOVE TILDE OPERATOR -2974;N # RIGHTWARDS ARROW ABOVE TILDE OPERATOR -2975;N # RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO -2976;N # LESS-THAN ABOVE LEFTWARDS ARROW -2977;N # LEFTWARDS ARROW THROUGH LESS-THAN -2978;N # GREATER-THAN ABOVE RIGHTWARDS ARROW -2979;N # SUBSET ABOVE RIGHTWARDS ARROW -297A;N # LEFTWARDS ARROW THROUGH SUBSET -297B;N # SUPERSET ABOVE LEFTWARDS ARROW -297C;N # LEFT FISH TAIL -297D;N # RIGHT FISH TAIL -297E;N # UP FISH TAIL -297F;N # DOWN FISH TAIL -2980;N # TRIPLE VERTICAL BAR DELIMITER -2981;N # Z NOTATION SPOT -2982;N # Z NOTATION TYPE COLON -2983;N # LEFT WHITE CURLY BRACKET -2984;N # RIGHT WHITE CURLY BRACKET -2985;Na # LEFT WHITE PARENTHESIS -2986;Na # RIGHT WHITE PARENTHESIS -2987;N # Z NOTATION LEFT IMAGE BRACKET -2988;N # Z NOTATION RIGHT IMAGE BRACKET -2989;N # Z NOTATION LEFT BINDING BRACKET -298A;N # Z NOTATION RIGHT BINDING BRACKET -298B;N # LEFT SQUARE BRACKET WITH UNDERBAR -298C;N # RIGHT SQUARE BRACKET WITH UNDERBAR -298D;N # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER -298E;N # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -298F;N # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -2990;N # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER -2991;N # LEFT ANGLE BRACKET WITH DOT -2992;N # RIGHT ANGLE BRACKET WITH DOT -2993;N # LEFT ARC LESS-THAN BRACKET -2994;N # RIGHT ARC GREATER-THAN BRACKET -2995;N # DOUBLE LEFT ARC GREATER-THAN BRACKET -2996;N # DOUBLE RIGHT ARC LESS-THAN BRACKET -2997;N # LEFT BLACK TORTOISE SHELL BRACKET -2998;N # RIGHT BLACK TORTOISE SHELL BRACKET -2999;N # DOTTED FENCE -299A;N # VERTICAL ZIGZAG LINE -299B;N # MEASURED ANGLE OPENING LEFT -299C;N # RIGHT ANGLE VARIANT WITH SQUARE -299D;N # MEASURED RIGHT ANGLE WITH DOT -299E;N # ANGLE WITH S INSIDE -299F;N # ACUTE ANGLE -29A0;N # SPHERICAL ANGLE OPENING LEFT -29A1;N # SPHERICAL ANGLE OPENING UP -29A2;N # TURNED ANGLE -29A3;N # REVERSED ANGLE -29A4;N # ANGLE WITH UNDERBAR -29A5;N # REVERSED ANGLE WITH UNDERBAR -29A6;N # OBLIQUE ANGLE OPENING UP -29A7;N # OBLIQUE ANGLE OPENING DOWN -29A8;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT -29A9;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT -29AA;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT -29AB;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT -29AC;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP -29AD;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP -29AE;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN -29AF;N # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN -29B0;N # REVERSED EMPTY SET -29B1;N # EMPTY SET WITH OVERBAR -29B2;N # EMPTY SET WITH SMALL CIRCLE ABOVE -29B3;N # EMPTY SET WITH RIGHT ARROW ABOVE -29B4;N # EMPTY SET WITH LEFT ARROW ABOVE -29B5;N # CIRCLE WITH HORIZONTAL BAR -29B6;N # CIRCLED VERTICAL BAR -29B7;N # CIRCLED PARALLEL -29B8;N # CIRCLED REVERSE SOLIDUS -29B9;N # CIRCLED PERPENDICULAR -29BA;N # CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR -29BB;N # CIRCLE WITH SUPERIMPOSED X -29BC;N # CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN -29BD;N # UP ARROW THROUGH CIRCLE -29BE;N # CIRCLED WHITE BULLET -29BF;N # CIRCLED BULLET -29C0;N # CIRCLED LESS-THAN -29C1;N # CIRCLED GREATER-THAN -29C2;N # CIRCLE WITH SMALL CIRCLE TO THE RIGHT -29C3;N # CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT -29C4;N # SQUARED RISING DIAGONAL SLASH -29C5;N # SQUARED FALLING DIAGONAL SLASH -29C6;N # SQUARED ASTERISK -29C7;N # SQUARED SMALL CIRCLE -29C8;N # SQUARED SQUARE -29C9;N # TWO JOINED SQUARES -29CA;N # TRIANGLE WITH DOT ABOVE -29CB;N # TRIANGLE WITH UNDERBAR -29CC;N # S IN TRIANGLE -29CD;N # TRIANGLE WITH SERIFS AT BOTTOM -29CE;N # RIGHT TRIANGLE ABOVE LEFT TRIANGLE -29CF;N # LEFT TRIANGLE BESIDE VERTICAL BAR -29D0;N # VERTICAL BAR BESIDE RIGHT TRIANGLE -29D1;N # BOWTIE WITH LEFT HALF BLACK -29D2;N # BOWTIE WITH RIGHT HALF BLACK -29D3;N # BLACK BOWTIE -29D4;N # TIMES WITH LEFT HALF BLACK -29D5;N # TIMES WITH RIGHT HALF BLACK -29D6;N # WHITE HOURGLASS -29D7;N # BLACK HOURGLASS -29D8;N # LEFT WIGGLY FENCE -29D9;N # RIGHT WIGGLY FENCE -29DA;N # LEFT DOUBLE WIGGLY FENCE -29DB;N # RIGHT DOUBLE WIGGLY FENCE -29DC;N # INCOMPLETE INFINITY -29DD;N # TIE OVER INFINITY -29DE;N # INFINITY NEGATED WITH VERTICAL BAR -29DF;N # DOUBLE-ENDED MULTIMAP -29E0;N # SQUARE WITH CONTOURED OUTLINE -29E1;N # INCREASES AS -29E2;N # SHUFFLE PRODUCT -29E3;N # EQUALS SIGN AND SLANTED PARALLEL -29E4;N # EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE -29E5;N # IDENTICAL TO AND SLANTED PARALLEL -29E6;N # GLEICH STARK -29E7;N # THERMODYNAMIC -29E8;N # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK -29E9;N # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK -29EA;N # BLACK DIAMOND WITH DOWN ARROW -29EB;N # BLACK LOZENGE -29EC;N # WHITE CIRCLE WITH DOWN ARROW -29ED;N # BLACK CIRCLE WITH DOWN ARROW -29EE;N # ERROR-BARRED WHITE SQUARE -29EF;N # ERROR-BARRED BLACK SQUARE -29F0;N # ERROR-BARRED WHITE DIAMOND -29F1;N # ERROR-BARRED BLACK DIAMOND -29F2;N # ERROR-BARRED WHITE CIRCLE -29F3;N # ERROR-BARRED BLACK CIRCLE -29F4;N # RULE-DELAYED -29F5;N # REVERSE SOLIDUS OPERATOR -29F6;N # SOLIDUS WITH OVERBAR -29F7;N # REVERSE SOLIDUS WITH HORIZONTAL STROKE -29F8;N # BIG SOLIDUS -29F9;N # BIG REVERSE SOLIDUS -29FA;N # DOUBLE PLUS -29FB;N # TRIPLE PLUS -29FC;N # LEFT-POINTING CURVED ANGLE BRACKET -29FD;N # RIGHT-POINTING CURVED ANGLE BRACKET -29FE;N # TINY -29FF;N # MINY -2A00;N # N-ARY CIRCLED DOT OPERATOR -2A01;N # N-ARY CIRCLED PLUS OPERATOR -2A02;N # N-ARY CIRCLED TIMES OPERATOR -2A03;N # N-ARY UNION OPERATOR WITH DOT -2A04;N # N-ARY UNION OPERATOR WITH PLUS -2A05;N # N-ARY SQUARE INTERSECTION OPERATOR -2A06;N # N-ARY SQUARE UNION OPERATOR -2A07;N # TWO LOGICAL AND OPERATOR -2A08;N # TWO LOGICAL OR OPERATOR -2A09;N # N-ARY TIMES OPERATOR -2A0A;N # MODULO TWO SUM -2A0B;N # SUMMATION WITH INTEGRAL -2A0C;N # QUADRUPLE INTEGRAL OPERATOR -2A0D;N # FINITE PART INTEGRAL -2A0E;N # INTEGRAL WITH DOUBLE STROKE -2A0F;N # INTEGRAL AVERAGE WITH SLASH -2A10;N # CIRCULATION FUNCTION -2A11;N # ANTICLOCKWISE INTEGRATION -2A12;N # LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE -2A13;N # LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE -2A14;N # LINE INTEGRATION NOT INCLUDING THE POLE -2A15;N # INTEGRAL AROUND A POINT OPERATOR -2A16;N # QUATERNION INTEGRAL OPERATOR -2A17;N # INTEGRAL WITH LEFTWARDS ARROW WITH HOOK -2A18;N # INTEGRAL WITH TIMES SIGN -2A19;N # INTEGRAL WITH INTERSECTION -2A1A;N # INTEGRAL WITH UNION -2A1B;N # INTEGRAL WITH OVERBAR -2A1C;N # INTEGRAL WITH UNDERBAR -2A1D;N # JOIN -2A1E;N # LARGE LEFT TRIANGLE OPERATOR -2A1F;N # Z NOTATION SCHEMA COMPOSITION -2A20;N # Z NOTATION SCHEMA PIPING -2A21;N # Z NOTATION SCHEMA PROJECTION -2A22;N # PLUS SIGN WITH SMALL CIRCLE ABOVE -2A23;N # PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE -2A24;N # PLUS SIGN WITH TILDE ABOVE -2A25;N # PLUS SIGN WITH DOT BELOW -2A26;N # PLUS SIGN WITH TILDE BELOW -2A27;N # PLUS SIGN WITH SUBSCRIPT TWO -2A28;N # PLUS SIGN WITH BLACK TRIANGLE -2A29;N # MINUS SIGN WITH COMMA ABOVE -2A2A;N # MINUS SIGN WITH DOT BELOW -2A2B;N # MINUS SIGN WITH FALLING DOTS -2A2C;N # MINUS SIGN WITH RISING DOTS -2A2D;N # PLUS SIGN IN LEFT HALF CIRCLE -2A2E;N # PLUS SIGN IN RIGHT HALF CIRCLE -2A2F;N # VECTOR OR CROSS PRODUCT -2A30;N # MULTIPLICATION SIGN WITH DOT ABOVE -2A31;N # MULTIPLICATION SIGN WITH UNDERBAR -2A32;N # SEMIDIRECT PRODUCT WITH BOTTOM CLOSED -2A33;N # SMASH PRODUCT -2A34;N # MULTIPLICATION SIGN IN LEFT HALF CIRCLE -2A35;N # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE -2A36;N # CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT -2A37;N # MULTIPLICATION SIGN IN DOUBLE CIRCLE -2A38;N # CIRCLED DIVISION SIGN -2A39;N # PLUS SIGN IN TRIANGLE -2A3A;N # MINUS SIGN IN TRIANGLE -2A3B;N # MULTIPLICATION SIGN IN TRIANGLE -2A3C;N # INTERIOR PRODUCT -2A3D;N # RIGHTHAND INTERIOR PRODUCT -2A3E;N # Z NOTATION RELATIONAL COMPOSITION -2A3F;N # AMALGAMATION OR COPRODUCT -2A40;N # INTERSECTION WITH DOT -2A41;N # UNION WITH MINUS SIGN -2A42;N # UNION WITH OVERBAR -2A43;N # INTERSECTION WITH OVERBAR -2A44;N # INTERSECTION WITH LOGICAL AND -2A45;N # UNION WITH LOGICAL OR -2A46;N # UNION ABOVE INTERSECTION -2A47;N # INTERSECTION ABOVE UNION -2A48;N # UNION ABOVE BAR ABOVE INTERSECTION -2A49;N # INTERSECTION ABOVE BAR ABOVE UNION -2A4A;N # UNION BESIDE AND JOINED WITH UNION -2A4B;N # INTERSECTION BESIDE AND JOINED WITH INTERSECTION -2A4C;N # CLOSED UNION WITH SERIFS -2A4D;N # CLOSED INTERSECTION WITH SERIFS -2A4E;N # DOUBLE SQUARE INTERSECTION -2A4F;N # DOUBLE SQUARE UNION -2A50;N # CLOSED UNION WITH SERIFS AND SMASH PRODUCT -2A51;N # LOGICAL AND WITH DOT ABOVE -2A52;N # LOGICAL OR WITH DOT ABOVE -2A53;N # DOUBLE LOGICAL AND -2A54;N # DOUBLE LOGICAL OR -2A55;N # TWO INTERSECTING LOGICAL AND -2A56;N # TWO INTERSECTING LOGICAL OR -2A57;N # SLOPING LARGE OR -2A58;N # SLOPING LARGE AND -2A59;N # LOGICAL OR OVERLAPPING LOGICAL AND -2A5A;N # LOGICAL AND WITH MIDDLE STEM -2A5B;N # LOGICAL OR WITH MIDDLE STEM -2A5C;N # LOGICAL AND WITH HORIZONTAL DASH -2A5D;N # LOGICAL OR WITH HORIZONTAL DASH -2A5E;N # LOGICAL AND WITH DOUBLE OVERBAR -2A5F;N # LOGICAL AND WITH UNDERBAR -2A60;N # LOGICAL AND WITH DOUBLE UNDERBAR -2A61;N # SMALL VEE WITH UNDERBAR -2A62;N # LOGICAL OR WITH DOUBLE OVERBAR -2A63;N # LOGICAL OR WITH DOUBLE UNDERBAR -2A64;N # Z NOTATION DOMAIN ANTIRESTRICTION -2A65;N # Z NOTATION RANGE ANTIRESTRICTION -2A66;N # EQUALS SIGN WITH DOT BELOW -2A67;N # IDENTICAL WITH DOT ABOVE -2A68;N # TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE -2A69;N # TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE -2A6A;N # TILDE OPERATOR WITH DOT ABOVE -2A6B;N # TILDE OPERATOR WITH RISING DOTS -2A6C;N # SIMILAR MINUS SIMILAR -2A6D;N # CONGRUENT WITH DOT ABOVE -2A6E;N # EQUALS WITH ASTERISK -2A6F;N # ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT -2A70;N # APPROXIMATELY EQUAL OR EQUAL TO -2A71;N # EQUALS SIGN ABOVE PLUS SIGN -2A72;N # PLUS SIGN ABOVE EQUALS SIGN -2A73;N # EQUALS SIGN ABOVE TILDE OPERATOR -2A74;N # DOUBLE COLON EQUAL -2A75;N # TWO CONSECUTIVE EQUALS SIGNS -2A76;N # THREE CONSECUTIVE EQUALS SIGNS -2A77;N # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW -2A78;N # EQUIVALENT WITH FOUR DOTS ABOVE -2A79;N # LESS-THAN WITH CIRCLE INSIDE -2A7A;N # GREATER-THAN WITH CIRCLE INSIDE -2A7B;N # LESS-THAN WITH QUESTION MARK ABOVE -2A7C;N # GREATER-THAN WITH QUESTION MARK ABOVE -2A7D;N # LESS-THAN OR SLANTED EQUAL TO -2A7E;N # GREATER-THAN OR SLANTED EQUAL TO -2A7F;N # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE -2A80;N # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE -2A81;N # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE -2A82;N # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE -2A83;N # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT -2A84;N # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT -2A85;N # LESS-THAN OR APPROXIMATE -2A86;N # GREATER-THAN OR APPROXIMATE -2A87;N # LESS-THAN AND SINGLE-LINE NOT EQUAL TO -2A88;N # GREATER-THAN AND SINGLE-LINE NOT EQUAL TO -2A89;N # LESS-THAN AND NOT APPROXIMATE -2A8A;N # GREATER-THAN AND NOT APPROXIMATE -2A8B;N # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN -2A8C;N # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN -2A8D;N # LESS-THAN ABOVE SIMILAR OR EQUAL -2A8E;N # GREATER-THAN ABOVE SIMILAR OR EQUAL -2A8F;N # LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN -2A90;N # GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN -2A91;N # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL -2A92;N # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL -2A93;N # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL -2A94;N # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL -2A95;N # SLANTED EQUAL TO OR LESS-THAN -2A96;N # SLANTED EQUAL TO OR GREATER-THAN -2A97;N # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE -2A98;N # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE -2A99;N # DOUBLE-LINE EQUAL TO OR LESS-THAN -2A9A;N # DOUBLE-LINE EQUAL TO OR GREATER-THAN -2A9B;N # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN -2A9C;N # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN -2A9D;N # SIMILAR OR LESS-THAN -2A9E;N # SIMILAR OR GREATER-THAN -2A9F;N # SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN -2AA0;N # SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN -2AA1;N # DOUBLE NESTED LESS-THAN -2AA2;N # DOUBLE NESTED GREATER-THAN -2AA3;N # DOUBLE NESTED LESS-THAN WITH UNDERBAR -2AA4;N # GREATER-THAN OVERLAPPING LESS-THAN -2AA5;N # GREATER-THAN BESIDE LESS-THAN -2AA6;N # LESS-THAN CLOSED BY CURVE -2AA7;N # GREATER-THAN CLOSED BY CURVE -2AA8;N # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL -2AA9;N # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL -2AAA;N # SMALLER THAN -2AAB;N # LARGER THAN -2AAC;N # SMALLER THAN OR EQUAL TO -2AAD;N # LARGER THAN OR EQUAL TO -2AAE;N # EQUALS SIGN WITH BUMPY ABOVE -2AAF;N # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN -2AB0;N # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN -2AB1;N # PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO -2AB2;N # SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO -2AB3;N # PRECEDES ABOVE EQUALS SIGN -2AB4;N # SUCCEEDS ABOVE EQUALS SIGN -2AB5;N # PRECEDES ABOVE NOT EQUAL TO -2AB6;N # SUCCEEDS ABOVE NOT EQUAL TO -2AB7;N # PRECEDES ABOVE ALMOST EQUAL TO -2AB8;N # SUCCEEDS ABOVE ALMOST EQUAL TO -2AB9;N # PRECEDES ABOVE NOT ALMOST EQUAL TO -2ABA;N # SUCCEEDS ABOVE NOT ALMOST EQUAL TO -2ABB;N # DOUBLE PRECEDES -2ABC;N # DOUBLE SUCCEEDS -2ABD;N # SUBSET WITH DOT -2ABE;N # SUPERSET WITH DOT -2ABF;N # SUBSET WITH PLUS SIGN BELOW -2AC0;N # SUPERSET WITH PLUS SIGN BELOW -2AC1;N # SUBSET WITH MULTIPLICATION SIGN BELOW -2AC2;N # SUPERSET WITH MULTIPLICATION SIGN BELOW -2AC3;N # SUBSET OF OR EQUAL TO WITH DOT ABOVE -2AC4;N # SUPERSET OF OR EQUAL TO WITH DOT ABOVE -2AC5;N # SUBSET OF ABOVE EQUALS SIGN -2AC6;N # SUPERSET OF ABOVE EQUALS SIGN -2AC7;N # SUBSET OF ABOVE TILDE OPERATOR -2AC8;N # SUPERSET OF ABOVE TILDE OPERATOR -2AC9;N # SUBSET OF ABOVE ALMOST EQUAL TO -2ACA;N # SUPERSET OF ABOVE ALMOST EQUAL TO -2ACB;N # SUBSET OF ABOVE NOT EQUAL TO -2ACC;N # SUPERSET OF ABOVE NOT EQUAL TO -2ACD;N # SQUARE LEFT OPEN BOX OPERATOR -2ACE;N # SQUARE RIGHT OPEN BOX OPERATOR -2ACF;N # CLOSED SUBSET -2AD0;N # CLOSED SUPERSET -2AD1;N # CLOSED SUBSET OR EQUAL TO -2AD2;N # CLOSED SUPERSET OR EQUAL TO -2AD3;N # SUBSET ABOVE SUPERSET -2AD4;N # SUPERSET ABOVE SUBSET -2AD5;N # SUBSET ABOVE SUBSET -2AD6;N # SUPERSET ABOVE SUPERSET -2AD7;N # SUPERSET BESIDE SUBSET -2AD8;N # SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET -2AD9;N # ELEMENT OF OPENING DOWNWARDS -2ADA;N # PITCHFORK WITH TEE TOP -2ADB;N # TRANSVERSAL INTERSECTION -2ADC;N # FORKING -2ADD;N # NONFORKING -2ADE;N # SHORT LEFT TACK -2ADF;N # SHORT DOWN TACK -2AE0;N # SHORT UP TACK -2AE1;N # PERPENDICULAR WITH S -2AE2;N # VERTICAL BAR TRIPLE RIGHT TURNSTILE -2AE3;N # DOUBLE VERTICAL BAR LEFT TURNSTILE -2AE4;N # VERTICAL BAR DOUBLE LEFT TURNSTILE -2AE5;N # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE -2AE6;N # LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL -2AE7;N # SHORT DOWN TACK WITH OVERBAR -2AE8;N # SHORT UP TACK WITH UNDERBAR -2AE9;N # SHORT UP TACK ABOVE SHORT DOWN TACK -2AEA;N # DOUBLE DOWN TACK -2AEB;N # DOUBLE UP TACK -2AEC;N # DOUBLE STROKE NOT SIGN -2AED;N # REVERSED DOUBLE STROKE NOT SIGN -2AEE;N # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH -2AEF;N # VERTICAL LINE WITH CIRCLE ABOVE -2AF0;N # VERTICAL LINE WITH CIRCLE BELOW -2AF1;N # DOWN TACK WITH CIRCLE BELOW -2AF2;N # PARALLEL WITH HORIZONTAL STROKE -2AF3;N # PARALLEL WITH TILDE OPERATOR -2AF4;N # TRIPLE VERTICAL BAR BINARY RELATION -2AF5;N # TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE -2AF6;N # TRIPLE COLON OPERATOR -2AF7;N # TRIPLE NESTED LESS-THAN -2AF8;N # TRIPLE NESTED GREATER-THAN -2AF9;N # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO -2AFA;N # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO -2AFB;N # TRIPLE SOLIDUS BINARY RELATION -2AFC;N # LARGE TRIPLE VERTICAL BAR OPERATOR -2AFD;N # DOUBLE SOLIDUS OPERATOR -2AFE;N # WHITE VERTICAL BAR -2AFF;N # N-ARY WHITE VERTICAL BAR -2B00;N # NORTH EAST WHITE ARROW -2B01;N # NORTH WEST WHITE ARROW -2B02;N # SOUTH EAST WHITE ARROW -2B03;N # SOUTH WEST WHITE ARROW -2B04;N # LEFT RIGHT WHITE ARROW -2B05;N # LEFTWARDS BLACK ARROW -2B06;N # UPWARDS BLACK ARROW -2B07;N # DOWNWARDS BLACK ARROW -2B08;N # NORTH EAST BLACK ARROW -2B09;N # NORTH WEST BLACK ARROW -2B0A;N # SOUTH EAST BLACK ARROW -2B0B;N # SOUTH WEST BLACK ARROW -2B0C;N # LEFT RIGHT BLACK ARROW -2B0D;N # UP DOWN BLACK ARROW -2B0E;N # RIGHTWARDS ARROW WITH TIP DOWNWARDS -2B0F;N # RIGHTWARDS ARROW WITH TIP UPWARDS -2B10;N # LEFTWARDS ARROW WITH TIP DOWNWARDS -2B11;N # LEFTWARDS ARROW WITH TIP UPWARDS -2B12;N # SQUARE WITH TOP HALF BLACK -2B13;N # SQUARE WITH BOTTOM HALF BLACK -2C00;N # GLAGOLITIC CAPITAL LETTER AZU -2C01;N # GLAGOLITIC CAPITAL LETTER BUKY -2C02;N # GLAGOLITIC CAPITAL LETTER VEDE -2C03;N # GLAGOLITIC CAPITAL LETTER GLAGOLI -2C04;N # GLAGOLITIC CAPITAL LETTER DOBRO -2C05;N # GLAGOLITIC CAPITAL LETTER YESTU -2C06;N # GLAGOLITIC CAPITAL LETTER ZHIVETE -2C07;N # GLAGOLITIC CAPITAL LETTER DZELO -2C08;N # GLAGOLITIC CAPITAL LETTER ZEMLJA -2C09;N # GLAGOLITIC CAPITAL LETTER IZHE -2C0A;N # GLAGOLITIC CAPITAL LETTER INITIAL IZHE -2C0B;N # GLAGOLITIC CAPITAL LETTER I -2C0C;N # GLAGOLITIC CAPITAL LETTER DJERVI -2C0D;N # GLAGOLITIC CAPITAL LETTER KAKO -2C0E;N # GLAGOLITIC CAPITAL LETTER LJUDIJE -2C0F;N # GLAGOLITIC CAPITAL LETTER MYSLITE -2C10;N # GLAGOLITIC CAPITAL LETTER NASHI -2C11;N # GLAGOLITIC CAPITAL LETTER ONU -2C12;N # GLAGOLITIC CAPITAL LETTER POKOJI -2C13;N # GLAGOLITIC CAPITAL LETTER RITSI -2C14;N # GLAGOLITIC CAPITAL LETTER SLOVO -2C15;N # GLAGOLITIC CAPITAL LETTER TVRIDO -2C16;N # GLAGOLITIC CAPITAL LETTER UKU -2C17;N # GLAGOLITIC CAPITAL LETTER FRITU -2C18;N # GLAGOLITIC CAPITAL LETTER HERU -2C19;N # GLAGOLITIC CAPITAL LETTER OTU -2C1A;N # GLAGOLITIC CAPITAL LETTER PE -2C1B;N # GLAGOLITIC CAPITAL LETTER SHTA -2C1C;N # GLAGOLITIC CAPITAL LETTER TSI -2C1D;N # GLAGOLITIC CAPITAL LETTER CHRIVI -2C1E;N # GLAGOLITIC CAPITAL LETTER SHA -2C1F;N # GLAGOLITIC CAPITAL LETTER YERU -2C20;N # GLAGOLITIC CAPITAL LETTER YERI -2C21;N # GLAGOLITIC CAPITAL LETTER YATI -2C22;N # GLAGOLITIC CAPITAL LETTER SPIDERY HA -2C23;N # GLAGOLITIC CAPITAL LETTER YU -2C24;N # GLAGOLITIC CAPITAL LETTER SMALL YUS -2C25;N # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL -2C26;N # GLAGOLITIC CAPITAL LETTER YO -2C27;N # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS -2C28;N # GLAGOLITIC CAPITAL LETTER BIG YUS -2C29;N # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS -2C2A;N # GLAGOLITIC CAPITAL LETTER FITA -2C2B;N # GLAGOLITIC CAPITAL LETTER IZHITSA -2C2C;N # GLAGOLITIC CAPITAL LETTER SHTAPIC -2C2D;N # GLAGOLITIC CAPITAL LETTER TROKUTASTI A -2C2E;N # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30;N # GLAGOLITIC SMALL LETTER AZU -2C31;N # GLAGOLITIC SMALL LETTER BUKY -2C32;N # GLAGOLITIC SMALL LETTER VEDE -2C33;N # GLAGOLITIC SMALL LETTER GLAGOLI -2C34;N # GLAGOLITIC SMALL LETTER DOBRO -2C35;N # GLAGOLITIC SMALL LETTER YESTU -2C36;N # GLAGOLITIC SMALL LETTER ZHIVETE -2C37;N # GLAGOLITIC SMALL LETTER DZELO -2C38;N # GLAGOLITIC SMALL LETTER ZEMLJA -2C39;N # GLAGOLITIC SMALL LETTER IZHE -2C3A;N # GLAGOLITIC SMALL LETTER INITIAL IZHE -2C3B;N # GLAGOLITIC SMALL LETTER I -2C3C;N # GLAGOLITIC SMALL LETTER DJERVI -2C3D;N # GLAGOLITIC SMALL LETTER KAKO -2C3E;N # GLAGOLITIC SMALL LETTER LJUDIJE -2C3F;N # GLAGOLITIC SMALL LETTER MYSLITE -2C40;N # GLAGOLITIC SMALL LETTER NASHI -2C41;N # GLAGOLITIC SMALL LETTER ONU -2C42;N # GLAGOLITIC SMALL LETTER POKOJI -2C43;N # GLAGOLITIC SMALL LETTER RITSI -2C44;N # GLAGOLITIC SMALL LETTER SLOVO -2C45;N # GLAGOLITIC SMALL LETTER TVRIDO -2C46;N # GLAGOLITIC SMALL LETTER UKU -2C47;N # GLAGOLITIC SMALL LETTER FRITU -2C48;N # GLAGOLITIC SMALL LETTER HERU -2C49;N # GLAGOLITIC SMALL LETTER OTU -2C4A;N # GLAGOLITIC SMALL LETTER PE -2C4B;N # GLAGOLITIC SMALL LETTER SHTA -2C4C;N # GLAGOLITIC SMALL LETTER TSI -2C4D;N # GLAGOLITIC SMALL LETTER CHRIVI -2C4E;N # GLAGOLITIC SMALL LETTER SHA -2C4F;N # GLAGOLITIC SMALL LETTER YERU -2C50;N # GLAGOLITIC SMALL LETTER YERI -2C51;N # GLAGOLITIC SMALL LETTER YATI -2C52;N # GLAGOLITIC SMALL LETTER SPIDERY HA -2C53;N # GLAGOLITIC SMALL LETTER YU -2C54;N # GLAGOLITIC SMALL LETTER SMALL YUS -2C55;N # GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL -2C56;N # GLAGOLITIC SMALL LETTER YO -2C57;N # GLAGOLITIC SMALL LETTER IOTATED SMALL YUS -2C58;N # GLAGOLITIC SMALL LETTER BIG YUS -2C59;N # GLAGOLITIC SMALL LETTER IOTATED BIG YUS -2C5A;N # GLAGOLITIC SMALL LETTER FITA -2C5B;N # GLAGOLITIC SMALL LETTER IZHITSA -2C5C;N # GLAGOLITIC SMALL LETTER SHTAPIC -2C5D;N # GLAGOLITIC SMALL LETTER TROKUTASTI A -2C5E;N # GLAGOLITIC SMALL LETTER LATINATE MYSLITE -2C80;N # COPTIC CAPITAL LETTER ALFA -2C81;N # COPTIC SMALL LETTER ALFA -2C82;N # COPTIC CAPITAL LETTER VIDA -2C83;N # COPTIC SMALL LETTER VIDA -2C84;N # COPTIC CAPITAL LETTER GAMMA -2C85;N # COPTIC SMALL LETTER GAMMA -2C86;N # COPTIC CAPITAL LETTER DALDA -2C87;N # COPTIC SMALL LETTER DALDA -2C88;N # COPTIC CAPITAL LETTER EIE -2C89;N # COPTIC SMALL LETTER EIE -2C8A;N # COPTIC CAPITAL LETTER SOU -2C8B;N # COPTIC SMALL LETTER SOU -2C8C;N # COPTIC CAPITAL LETTER ZATA -2C8D;N # COPTIC SMALL LETTER ZATA -2C8E;N # COPTIC CAPITAL LETTER HATE -2C8F;N # COPTIC SMALL LETTER HATE -2C90;N # COPTIC CAPITAL LETTER THETHE -2C91;N # COPTIC SMALL LETTER THETHE -2C92;N # COPTIC CAPITAL LETTER IAUDA -2C93;N # COPTIC SMALL LETTER IAUDA -2C94;N # COPTIC CAPITAL LETTER KAPA -2C95;N # COPTIC SMALL LETTER KAPA -2C96;N # COPTIC CAPITAL LETTER LAULA -2C97;N # COPTIC SMALL LETTER LAULA -2C98;N # COPTIC CAPITAL LETTER MI -2C99;N # COPTIC SMALL LETTER MI -2C9A;N # COPTIC CAPITAL LETTER NI -2C9B;N # COPTIC SMALL LETTER NI -2C9C;N # COPTIC CAPITAL LETTER KSI -2C9D;N # COPTIC SMALL LETTER KSI -2C9E;N # COPTIC CAPITAL LETTER O -2C9F;N # COPTIC SMALL LETTER O -2CA0;N # COPTIC CAPITAL LETTER PI -2CA1;N # COPTIC SMALL LETTER PI -2CA2;N # COPTIC CAPITAL LETTER RO -2CA3;N # COPTIC SMALL LETTER RO -2CA4;N # COPTIC CAPITAL LETTER SIMA -2CA5;N # COPTIC SMALL LETTER SIMA -2CA6;N # COPTIC CAPITAL LETTER TAU -2CA7;N # COPTIC SMALL LETTER TAU -2CA8;N # COPTIC CAPITAL LETTER UA -2CA9;N # COPTIC SMALL LETTER UA -2CAA;N # COPTIC CAPITAL LETTER FI -2CAB;N # COPTIC SMALL LETTER FI -2CAC;N # COPTIC CAPITAL LETTER KHI -2CAD;N # COPTIC SMALL LETTER KHI -2CAE;N # COPTIC CAPITAL LETTER PSI -2CAF;N # COPTIC SMALL LETTER PSI -2CB0;N # COPTIC CAPITAL LETTER OOU -2CB1;N # COPTIC SMALL LETTER OOU -2CB2;N # COPTIC CAPITAL LETTER DIALECT-P ALEF -2CB3;N # COPTIC SMALL LETTER DIALECT-P ALEF -2CB4;N # COPTIC CAPITAL LETTER OLD COPTIC AIN -2CB5;N # COPTIC SMALL LETTER OLD COPTIC AIN -2CB6;N # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE -2CB7;N # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE -2CB8;N # COPTIC CAPITAL LETTER DIALECT-P KAPA -2CB9;N # COPTIC SMALL LETTER DIALECT-P KAPA -2CBA;N # COPTIC CAPITAL LETTER DIALECT-P NI -2CBB;N # COPTIC SMALL LETTER DIALECT-P NI -2CBC;N # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI -2CBD;N # COPTIC SMALL LETTER CRYPTOGRAMMIC NI -2CBE;N # COPTIC CAPITAL LETTER OLD COPTIC OOU -2CBF;N # COPTIC SMALL LETTER OLD COPTIC OOU -2CC0;N # COPTIC CAPITAL LETTER SAMPI -2CC1;N # COPTIC SMALL LETTER SAMPI -2CC2;N # COPTIC CAPITAL LETTER CROSSED SHEI -2CC3;N # COPTIC SMALL LETTER CROSSED SHEI -2CC4;N # COPTIC CAPITAL LETTER OLD COPTIC SHEI -2CC5;N # COPTIC SMALL LETTER OLD COPTIC SHEI -2CC6;N # COPTIC CAPITAL LETTER OLD COPTIC ESH -2CC7;N # COPTIC SMALL LETTER OLD COPTIC ESH -2CC8;N # COPTIC CAPITAL LETTER AKHMIMIC KHEI -2CC9;N # COPTIC SMALL LETTER AKHMIMIC KHEI -2CCA;N # COPTIC CAPITAL LETTER DIALECT-P HORI -2CCB;N # COPTIC SMALL LETTER DIALECT-P HORI -2CCC;N # COPTIC CAPITAL LETTER OLD COPTIC HORI -2CCD;N # COPTIC SMALL LETTER OLD COPTIC HORI -2CCE;N # COPTIC CAPITAL LETTER OLD COPTIC HA -2CCF;N # COPTIC SMALL LETTER OLD COPTIC HA -2CD0;N # COPTIC CAPITAL LETTER L-SHAPED HA -2CD1;N # COPTIC SMALL LETTER L-SHAPED HA -2CD2;N # COPTIC CAPITAL LETTER OLD COPTIC HEI -2CD3;N # COPTIC SMALL LETTER OLD COPTIC HEI -2CD4;N # COPTIC CAPITAL LETTER OLD COPTIC HAT -2CD5;N # COPTIC SMALL LETTER OLD COPTIC HAT -2CD6;N # COPTIC CAPITAL LETTER OLD COPTIC GANGIA -2CD7;N # COPTIC SMALL LETTER OLD COPTIC GANGIA -2CD8;N # COPTIC CAPITAL LETTER OLD COPTIC DJA -2CD9;N # COPTIC SMALL LETTER OLD COPTIC DJA -2CDA;N # COPTIC CAPITAL LETTER OLD COPTIC SHIMA -2CDB;N # COPTIC SMALL LETTER OLD COPTIC SHIMA -2CDC;N # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA -2CDD;N # COPTIC SMALL LETTER OLD NUBIAN SHIMA -2CDE;N # COPTIC CAPITAL LETTER OLD NUBIAN NGI -2CDF;N # COPTIC SMALL LETTER OLD NUBIAN NGI -2CE0;N # COPTIC CAPITAL LETTER OLD NUBIAN NYI -2CE1;N # COPTIC SMALL LETTER OLD NUBIAN NYI -2CE2;N # COPTIC CAPITAL LETTER OLD NUBIAN WAU -2CE3;N # COPTIC SMALL LETTER OLD NUBIAN WAU -2CE4;N # COPTIC SYMBOL KAI -2CE5;N # COPTIC SYMBOL MI RO -2CE6;N # COPTIC SYMBOL PI RO -2CE7;N # COPTIC SYMBOL STAUROS -2CE8;N # COPTIC SYMBOL TAU RO -2CE9;N # COPTIC SYMBOL KHI RO -2CEA;N # COPTIC SYMBOL SHIMA SIMA -2CF9;N # COPTIC OLD NUBIAN FULL STOP -2CFA;N # COPTIC OLD NUBIAN DIRECT QUESTION MARK -2CFB;N # COPTIC OLD NUBIAN INDIRECT QUESTION MARK -2CFC;N # COPTIC OLD NUBIAN VERSE DIVIDER -2CFD;N # COPTIC FRACTION ONE HALF -2CFE;N # COPTIC FULL STOP -2CFF;N # COPTIC MORPHOLOGICAL DIVIDER -2D00;N # GEORGIAN SMALL LETTER AN -2D01;N # GEORGIAN SMALL LETTER BAN -2D02;N # GEORGIAN SMALL LETTER GAN -2D03;N # GEORGIAN SMALL LETTER DON -2D04;N # GEORGIAN SMALL LETTER EN -2D05;N # GEORGIAN SMALL LETTER VIN -2D06;N # GEORGIAN SMALL LETTER ZEN -2D07;N # GEORGIAN SMALL LETTER TAN -2D08;N # GEORGIAN SMALL LETTER IN -2D09;N # GEORGIAN SMALL LETTER KAN -2D0A;N # GEORGIAN SMALL LETTER LAS -2D0B;N # GEORGIAN SMALL LETTER MAN -2D0C;N # GEORGIAN SMALL LETTER NAR -2D0D;N # GEORGIAN SMALL LETTER ON -2D0E;N # GEORGIAN SMALL LETTER PAR -2D0F;N # GEORGIAN SMALL LETTER ZHAR -2D10;N # GEORGIAN SMALL LETTER RAE -2D11;N # GEORGIAN SMALL LETTER SAN -2D12;N # GEORGIAN SMALL LETTER TAR -2D13;N # GEORGIAN SMALL LETTER UN -2D14;N # GEORGIAN SMALL LETTER PHAR -2D15;N # GEORGIAN SMALL LETTER KHAR -2D16;N # GEORGIAN SMALL LETTER GHAN -2D17;N # GEORGIAN SMALL LETTER QAR -2D18;N # GEORGIAN SMALL LETTER SHIN -2D19;N # GEORGIAN SMALL LETTER CHIN -2D1A;N # GEORGIAN SMALL LETTER CAN -2D1B;N # GEORGIAN SMALL LETTER JIL -2D1C;N # GEORGIAN SMALL LETTER CIL -2D1D;N # GEORGIAN SMALL LETTER CHAR -2D1E;N # GEORGIAN SMALL LETTER XAN -2D1F;N # GEORGIAN SMALL LETTER JHAN -2D20;N # GEORGIAN SMALL LETTER HAE -2D21;N # GEORGIAN SMALL LETTER HE -2D22;N # GEORGIAN SMALL LETTER HIE -2D23;N # GEORGIAN SMALL LETTER WE -2D24;N # GEORGIAN SMALL LETTER HAR -2D25;N # GEORGIAN SMALL LETTER HOE -2D30;N # TIFINAGH LETTER YA -2D31;N # TIFINAGH LETTER YAB -2D32;N # TIFINAGH LETTER YABH -2D33;N # TIFINAGH LETTER YAG -2D34;N # TIFINAGH LETTER YAGHH -2D35;N # TIFINAGH LETTER BERBER ACADEMY YAJ -2D36;N # TIFINAGH LETTER YAJ -2D37;N # TIFINAGH LETTER YAD -2D38;N # TIFINAGH LETTER YADH -2D39;N # TIFINAGH LETTER YADD -2D3A;N # TIFINAGH LETTER YADDH -2D3B;N # TIFINAGH LETTER YEY -2D3C;N # TIFINAGH LETTER YAF -2D3D;N # TIFINAGH LETTER YAK -2D3E;N # TIFINAGH LETTER TUAREG YAK -2D3F;N # TIFINAGH LETTER YAKHH -2D40;N # TIFINAGH LETTER YAH -2D41;N # TIFINAGH LETTER BERBER ACADEMY YAH -2D42;N # TIFINAGH LETTER TUAREG YAH -2D43;N # TIFINAGH LETTER YAHH -2D44;N # TIFINAGH LETTER YAA -2D45;N # TIFINAGH LETTER YAKH -2D46;N # TIFINAGH LETTER TUAREG YAKH -2D47;N # TIFINAGH LETTER YAQ -2D48;N # TIFINAGH LETTER TUAREG YAQ -2D49;N # TIFINAGH LETTER YI -2D4A;N # TIFINAGH LETTER YAZH -2D4B;N # TIFINAGH LETTER AHAGGAR YAZH -2D4C;N # TIFINAGH LETTER TUAREG YAZH -2D4D;N # TIFINAGH LETTER YAL -2D4E;N # TIFINAGH LETTER YAM -2D4F;N # TIFINAGH LETTER YAN -2D50;N # TIFINAGH LETTER TUAREG YAGN -2D51;N # TIFINAGH LETTER TUAREG YANG -2D52;N # TIFINAGH LETTER YAP -2D53;N # TIFINAGH LETTER YU -2D54;N # TIFINAGH LETTER YAR -2D55;N # TIFINAGH LETTER YARR -2D56;N # TIFINAGH LETTER YAGH -2D57;N # TIFINAGH LETTER TUAREG YAGH -2D58;N # TIFINAGH LETTER AYER YAGH -2D59;N # TIFINAGH LETTER YAS -2D5A;N # TIFINAGH LETTER YASS -2D5B;N # TIFINAGH LETTER YASH -2D5C;N # TIFINAGH LETTER YAT -2D5D;N # TIFINAGH LETTER YATH -2D5E;N # TIFINAGH LETTER YACH -2D5F;N # TIFINAGH LETTER YATT -2D60;N # TIFINAGH LETTER YAV -2D61;N # TIFINAGH LETTER YAW -2D62;N # TIFINAGH LETTER YAY -2D63;N # TIFINAGH LETTER YAZ -2D64;N # TIFINAGH LETTER TAWELLEMET YAZ -2D65;N # TIFINAGH LETTER YAZZ -2D6F;N # TIFINAGH MODIFIER LETTER LABIALIZATION MARK -2D80;N # ETHIOPIC SYLLABLE LOA -2D81;N # ETHIOPIC SYLLABLE MOA -2D82;N # ETHIOPIC SYLLABLE ROA -2D83;N # ETHIOPIC SYLLABLE SOA -2D84;N # ETHIOPIC SYLLABLE SHOA -2D85;N # ETHIOPIC SYLLABLE BOA -2D86;N # ETHIOPIC SYLLABLE TOA -2D87;N # ETHIOPIC SYLLABLE COA -2D88;N # ETHIOPIC SYLLABLE NOA -2D89;N # ETHIOPIC SYLLABLE NYOA -2D8A;N # ETHIOPIC SYLLABLE GLOTTAL OA -2D8B;N # ETHIOPIC SYLLABLE ZOA -2D8C;N # ETHIOPIC SYLLABLE DOA -2D8D;N # ETHIOPIC SYLLABLE DDOA -2D8E;N # ETHIOPIC SYLLABLE JOA -2D8F;N # ETHIOPIC SYLLABLE THOA -2D90;N # ETHIOPIC SYLLABLE CHOA -2D91;N # ETHIOPIC SYLLABLE PHOA -2D92;N # ETHIOPIC SYLLABLE POA -2D93;N # ETHIOPIC SYLLABLE GGWA -2D94;N # ETHIOPIC SYLLABLE GGWI -2D95;N # ETHIOPIC SYLLABLE GGWEE -2D96;N # ETHIOPIC SYLLABLE GGWE -2DA0;N # ETHIOPIC SYLLABLE SSA -2DA1;N # ETHIOPIC SYLLABLE SSU -2DA2;N # ETHIOPIC SYLLABLE SSI -2DA3;N # ETHIOPIC SYLLABLE SSAA -2DA4;N # ETHIOPIC SYLLABLE SSEE -2DA5;N # ETHIOPIC SYLLABLE SSE -2DA6;N # ETHIOPIC SYLLABLE SSO -2DA8;N # ETHIOPIC SYLLABLE CCA -2DA9;N # ETHIOPIC SYLLABLE CCU -2DAA;N # ETHIOPIC SYLLABLE CCI -2DAB;N # ETHIOPIC SYLLABLE CCAA -2DAC;N # ETHIOPIC SYLLABLE CCEE -2DAD;N # ETHIOPIC SYLLABLE CCE -2DAE;N # ETHIOPIC SYLLABLE CCO -2DB0;N # ETHIOPIC SYLLABLE ZZA -2DB1;N # ETHIOPIC SYLLABLE ZZU -2DB2;N # ETHIOPIC SYLLABLE ZZI -2DB3;N # ETHIOPIC SYLLABLE ZZAA -2DB4;N # ETHIOPIC SYLLABLE ZZEE -2DB5;N # ETHIOPIC SYLLABLE ZZE -2DB6;N # ETHIOPIC SYLLABLE ZZO -2DB8;N # ETHIOPIC SYLLABLE CCHA -2DB9;N # ETHIOPIC SYLLABLE CCHU -2DBA;N # ETHIOPIC SYLLABLE CCHI -2DBB;N # ETHIOPIC SYLLABLE CCHAA -2DBC;N # ETHIOPIC SYLLABLE CCHEE -2DBD;N # ETHIOPIC SYLLABLE CCHE -2DBE;N # ETHIOPIC SYLLABLE CCHO -2DC0;N # ETHIOPIC SYLLABLE QYA -2DC1;N # ETHIOPIC SYLLABLE QYU -2DC2;N # ETHIOPIC SYLLABLE QYI -2DC3;N # ETHIOPIC SYLLABLE QYAA -2DC4;N # ETHIOPIC SYLLABLE QYEE -2DC5;N # ETHIOPIC SYLLABLE QYE -2DC6;N # ETHIOPIC SYLLABLE QYO -2DC8;N # ETHIOPIC SYLLABLE KYA -2DC9;N # ETHIOPIC SYLLABLE KYU -2DCA;N # ETHIOPIC SYLLABLE KYI -2DCB;N # ETHIOPIC SYLLABLE KYAA -2DCC;N # ETHIOPIC SYLLABLE KYEE -2DCD;N # ETHIOPIC SYLLABLE KYE -2DCE;N # ETHIOPIC SYLLABLE KYO -2DD0;N # ETHIOPIC SYLLABLE XYA -2DD1;N # ETHIOPIC SYLLABLE XYU -2DD2;N # ETHIOPIC SYLLABLE XYI -2DD3;N # ETHIOPIC SYLLABLE XYAA -2DD4;N # ETHIOPIC SYLLABLE XYEE -2DD5;N # ETHIOPIC SYLLABLE XYE -2DD6;N # ETHIOPIC SYLLABLE XYO -2DD8;N # ETHIOPIC SYLLABLE GYA -2DD9;N # ETHIOPIC SYLLABLE GYU -2DDA;N # ETHIOPIC SYLLABLE GYI -2DDB;N # ETHIOPIC SYLLABLE GYAA -2DDC;N # ETHIOPIC SYLLABLE GYEE -2DDD;N # ETHIOPIC SYLLABLE GYE -2DDE;N # ETHIOPIC SYLLABLE GYO -2E00;N # RIGHT ANGLE SUBSTITUTION MARKER -2E01;N # RIGHT ANGLE DOTTED SUBSTITUTION MARKER -2E02;N # LEFT SUBSTITUTION BRACKET -2E03;N # RIGHT SUBSTITUTION BRACKET -2E04;N # LEFT DOTTED SUBSTITUTION BRACKET -2E05;N # RIGHT DOTTED SUBSTITUTION BRACKET -2E06;N # RAISED INTERPOLATION MARKER -2E07;N # RAISED DOTTED INTERPOLATION MARKER -2E08;N # DOTTED TRANSPOSITION MARKER -2E09;N # LEFT TRANSPOSITION BRACKET -2E0A;N # RIGHT TRANSPOSITION BRACKET -2E0B;N # RAISED SQUARE -2E0C;N # LEFT RAISED OMISSION BRACKET -2E0D;N # RIGHT RAISED OMISSION BRACKET -2E0E;N # EDITORIAL CORONIS -2E0F;N # PARAGRAPHOS -2E10;N # FORKED PARAGRAPHOS -2E11;N # REVERSED FORKED PARAGRAPHOS -2E12;N # HYPODIASTOLE -2E13;N # DOTTED OBELOS -2E14;N # DOWNWARDS ANCORA -2E15;N # UPWARDS ANCORA -2E16;N # DOTTED RIGHT-POINTING ANGLE -2E17;N # DOUBLE OBLIQUE HYPHEN -2E1C;N # LEFT LOW PARAPHRASE BRACKET -2E1D;N # RIGHT LOW PARAPHRASE BRACKET -2E80;W # CJK RADICAL REPEAT -2E81;W # CJK RADICAL CLIFF -2E82;W # CJK RADICAL SECOND ONE -2E83;W # CJK RADICAL SECOND TWO -2E84;W # CJK RADICAL SECOND THREE -2E85;W # CJK RADICAL PERSON -2E86;W # CJK RADICAL BOX -2E87;W # CJK RADICAL TABLE -2E88;W # CJK RADICAL KNIFE ONE -2E89;W # CJK RADICAL KNIFE TWO -2E8A;W # CJK RADICAL DIVINATION -2E8B;W # CJK RADICAL SEAL -2E8C;W # CJK RADICAL SMALL ONE -2E8D;W # CJK RADICAL SMALL TWO -2E8E;W # CJK RADICAL LAME ONE -2E8F;W # CJK RADICAL LAME TWO -2E90;W # CJK RADICAL LAME THREE -2E91;W # CJK RADICAL LAME FOUR -2E92;W # CJK RADICAL SNAKE -2E93;W # CJK RADICAL THREAD -2E94;W # CJK RADICAL SNOUT ONE -2E95;W # CJK RADICAL SNOUT TWO -2E96;W # CJK RADICAL HEART ONE -2E97;W # CJK RADICAL HEART TWO -2E98;W # CJK RADICAL HAND -2E99;W # CJK RADICAL RAP -2E9B;W # CJK RADICAL CHOKE -2E9C;W # CJK RADICAL SUN -2E9D;W # CJK RADICAL MOON -2E9E;W # CJK RADICAL DEATH -2E9F;W # CJK RADICAL MOTHER -2EA0;W # CJK RADICAL CIVILIAN -2EA1;W # CJK RADICAL WATER ONE -2EA2;W # CJK RADICAL WATER TWO -2EA3;W # CJK RADICAL FIRE -2EA4;W # CJK RADICAL PAW ONE -2EA5;W # CJK RADICAL PAW TWO -2EA6;W # CJK RADICAL SIMPLIFIED HALF TREE TRUNK -2EA7;W # CJK RADICAL COW -2EA8;W # CJK RADICAL DOG -2EA9;W # CJK RADICAL JADE -2EAA;W # CJK RADICAL BOLT OF CLOTH -2EAB;W # CJK RADICAL EYE -2EAC;W # CJK RADICAL SPIRIT ONE -2EAD;W # CJK RADICAL SPIRIT TWO -2EAE;W # CJK RADICAL BAMBOO -2EAF;W # CJK RADICAL SILK -2EB0;W # CJK RADICAL C-SIMPLIFIED SILK -2EB1;W # CJK RADICAL NET ONE -2EB2;W # CJK RADICAL NET TWO -2EB3;W # CJK RADICAL NET THREE -2EB4;W # CJK RADICAL NET FOUR -2EB5;W # CJK RADICAL MESH -2EB6;W # CJK RADICAL SHEEP -2EB7;W # CJK RADICAL RAM -2EB8;W # CJK RADICAL EWE -2EB9;W # CJK RADICAL OLD -2EBA;W # CJK RADICAL BRUSH ONE -2EBB;W # CJK RADICAL BRUSH TWO -2EBC;W # CJK RADICAL MEAT -2EBD;W # CJK RADICAL MORTAR -2EBE;W # CJK RADICAL GRASS ONE -2EBF;W # CJK RADICAL GRASS TWO -2EC0;W # CJK RADICAL GRASS THREE -2EC1;W # CJK RADICAL TIGER -2EC2;W # CJK RADICAL CLOTHES -2EC3;W # CJK RADICAL WEST ONE -2EC4;W # CJK RADICAL WEST TWO -2EC5;W # CJK RADICAL C-SIMPLIFIED SEE -2EC6;W # CJK RADICAL SIMPLIFIED HORN -2EC7;W # CJK RADICAL HORN -2EC8;W # CJK RADICAL C-SIMPLIFIED SPEECH -2EC9;W # CJK RADICAL C-SIMPLIFIED SHELL -2ECA;W # CJK RADICAL FOOT -2ECB;W # CJK RADICAL C-SIMPLIFIED CART -2ECC;W # CJK RADICAL SIMPLIFIED WALK -2ECD;W # CJK RADICAL WALK ONE -2ECE;W # CJK RADICAL WALK TWO -2ECF;W # CJK RADICAL CITY -2ED0;W # CJK RADICAL C-SIMPLIFIED GOLD -2ED1;W # CJK RADICAL LONG ONE -2ED2;W # CJK RADICAL LONG TWO -2ED3;W # CJK RADICAL C-SIMPLIFIED LONG -2ED4;W # CJK RADICAL C-SIMPLIFIED GATE -2ED5;W # CJK RADICAL MOUND ONE -2ED6;W # CJK RADICAL MOUND TWO -2ED7;W # CJK RADICAL RAIN -2ED8;W # CJK RADICAL BLUE -2ED9;W # CJK RADICAL C-SIMPLIFIED TANNED LEATHER -2EDA;W # CJK RADICAL C-SIMPLIFIED LEAF -2EDB;W # CJK RADICAL C-SIMPLIFIED WIND -2EDC;W # CJK RADICAL C-SIMPLIFIED FLY -2EDD;W # CJK RADICAL EAT ONE -2EDE;W # CJK RADICAL EAT TWO -2EDF;W # CJK RADICAL EAT THREE -2EE0;W # CJK RADICAL C-SIMPLIFIED EAT -2EE1;W # CJK RADICAL HEAD -2EE2;W # CJK RADICAL C-SIMPLIFIED HORSE -2EE3;W # CJK RADICAL BONE -2EE4;W # CJK RADICAL GHOST -2EE5;W # CJK RADICAL C-SIMPLIFIED FISH -2EE6;W # CJK RADICAL C-SIMPLIFIED BIRD -2EE7;W # CJK RADICAL C-SIMPLIFIED SALT -2EE8;W # CJK RADICAL SIMPLIFIED WHEAT -2EE9;W # CJK RADICAL SIMPLIFIED YELLOW -2EEA;W # CJK RADICAL C-SIMPLIFIED FROG -2EEB;W # CJK RADICAL J-SIMPLIFIED EVEN -2EEC;W # CJK RADICAL C-SIMPLIFIED EVEN -2EED;W # CJK RADICAL J-SIMPLIFIED TOOTH -2EEE;W # CJK RADICAL C-SIMPLIFIED TOOTH -2EEF;W # CJK RADICAL J-SIMPLIFIED DRAGON -2EF0;W # CJK RADICAL C-SIMPLIFIED DRAGON -2EF1;W # CJK RADICAL TURTLE -2EF2;W # CJK RADICAL J-SIMPLIFIED TURTLE -2EF3;W # CJK RADICAL C-SIMPLIFIED TURTLE -2F00;W # KANGXI RADICAL ONE -2F01;W # KANGXI RADICAL LINE -2F02;W # KANGXI RADICAL DOT -2F03;W # KANGXI RADICAL SLASH -2F04;W # KANGXI RADICAL SECOND -2F05;W # KANGXI RADICAL HOOK -2F06;W # KANGXI RADICAL TWO -2F07;W # KANGXI RADICAL LID -2F08;W # KANGXI RADICAL MAN -2F09;W # KANGXI RADICAL LEGS -2F0A;W # KANGXI RADICAL ENTER -2F0B;W # KANGXI RADICAL EIGHT -2F0C;W # KANGXI RADICAL DOWN BOX -2F0D;W # KANGXI RADICAL COVER -2F0E;W # KANGXI RADICAL ICE -2F0F;W # KANGXI RADICAL TABLE -2F10;W # KANGXI RADICAL OPEN BOX -2F11;W # KANGXI RADICAL KNIFE -2F12;W # KANGXI RADICAL POWER -2F13;W # KANGXI RADICAL WRAP -2F14;W # KANGXI RADICAL SPOON -2F15;W # KANGXI RADICAL RIGHT OPEN BOX -2F16;W # KANGXI RADICAL HIDING ENCLOSURE -2F17;W # KANGXI RADICAL TEN -2F18;W # KANGXI RADICAL DIVINATION -2F19;W # KANGXI RADICAL SEAL -2F1A;W # KANGXI RADICAL CLIFF -2F1B;W # KANGXI RADICAL PRIVATE -2F1C;W # KANGXI RADICAL AGAIN -2F1D;W # KANGXI RADICAL MOUTH -2F1E;W # KANGXI RADICAL ENCLOSURE -2F1F;W # KANGXI RADICAL EARTH -2F20;W # KANGXI RADICAL SCHOLAR -2F21;W # KANGXI RADICAL GO -2F22;W # KANGXI RADICAL GO SLOWLY -2F23;W # KANGXI RADICAL EVENING -2F24;W # KANGXI RADICAL BIG -2F25;W # KANGXI RADICAL WOMAN -2F26;W # KANGXI RADICAL CHILD -2F27;W # KANGXI RADICAL ROOF -2F28;W # KANGXI RADICAL INCH -2F29;W # KANGXI RADICAL SMALL -2F2A;W # KANGXI RADICAL LAME -2F2B;W # KANGXI RADICAL CORPSE -2F2C;W # KANGXI RADICAL SPROUT -2F2D;W # KANGXI RADICAL MOUNTAIN -2F2E;W # KANGXI RADICAL RIVER -2F2F;W # KANGXI RADICAL WORK -2F30;W # KANGXI RADICAL ONESELF -2F31;W # KANGXI RADICAL TURBAN -2F32;W # KANGXI RADICAL DRY -2F33;W # KANGXI RADICAL SHORT THREAD -2F34;W # KANGXI RADICAL DOTTED CLIFF -2F35;W # KANGXI RADICAL LONG STRIDE -2F36;W # KANGXI RADICAL TWO HANDS -2F37;W # KANGXI RADICAL SHOOT -2F38;W # KANGXI RADICAL BOW -2F39;W # KANGXI RADICAL SNOUT -2F3A;W # KANGXI RADICAL BRISTLE -2F3B;W # KANGXI RADICAL STEP -2F3C;W # KANGXI RADICAL HEART -2F3D;W # KANGXI RADICAL HALBERD -2F3E;W # KANGXI RADICAL DOOR -2F3F;W # KANGXI RADICAL HAND -2F40;W # KANGXI RADICAL BRANCH -2F41;W # KANGXI RADICAL RAP -2F42;W # KANGXI RADICAL SCRIPT -2F43;W # KANGXI RADICAL DIPPER -2F44;W # KANGXI RADICAL AXE -2F45;W # KANGXI RADICAL SQUARE -2F46;W # KANGXI RADICAL NOT -2F47;W # KANGXI RADICAL SUN -2F48;W # KANGXI RADICAL SAY -2F49;W # KANGXI RADICAL MOON -2F4A;W # KANGXI RADICAL TREE -2F4B;W # KANGXI RADICAL LACK -2F4C;W # KANGXI RADICAL STOP -2F4D;W # KANGXI RADICAL DEATH -2F4E;W # KANGXI RADICAL WEAPON -2F4F;W # KANGXI RADICAL DO NOT -2F50;W # KANGXI RADICAL COMPARE -2F51;W # KANGXI RADICAL FUR -2F52;W # KANGXI RADICAL CLAN -2F53;W # KANGXI RADICAL STEAM -2F54;W # KANGXI RADICAL WATER -2F55;W # KANGXI RADICAL FIRE -2F56;W # KANGXI RADICAL CLAW -2F57;W # KANGXI RADICAL FATHER -2F58;W # KANGXI RADICAL DOUBLE X -2F59;W # KANGXI RADICAL HALF TREE TRUNK -2F5A;W # KANGXI RADICAL SLICE -2F5B;W # KANGXI RADICAL FANG -2F5C;W # KANGXI RADICAL COW -2F5D;W # KANGXI RADICAL DOG -2F5E;W # KANGXI RADICAL PROFOUND -2F5F;W # KANGXI RADICAL JADE -2F60;W # KANGXI RADICAL MELON -2F61;W # KANGXI RADICAL TILE -2F62;W # KANGXI RADICAL SWEET -2F63;W # KANGXI RADICAL LIFE -2F64;W # KANGXI RADICAL USE -2F65;W # KANGXI RADICAL FIELD -2F66;W # KANGXI RADICAL BOLT OF CLOTH -2F67;W # KANGXI RADICAL SICKNESS -2F68;W # KANGXI RADICAL DOTTED TENT -2F69;W # KANGXI RADICAL WHITE -2F6A;W # KANGXI RADICAL SKIN -2F6B;W # KANGXI RADICAL DISH -2F6C;W # KANGXI RADICAL EYE -2F6D;W # KANGXI RADICAL SPEAR -2F6E;W # KANGXI RADICAL ARROW -2F6F;W # KANGXI RADICAL STONE -2F70;W # KANGXI RADICAL SPIRIT -2F71;W # KANGXI RADICAL TRACK -2F72;W # KANGXI RADICAL GRAIN -2F73;W # KANGXI RADICAL CAVE -2F74;W # KANGXI RADICAL STAND -2F75;W # KANGXI RADICAL BAMBOO -2F76;W # KANGXI RADICAL RICE -2F77;W # KANGXI RADICAL SILK -2F78;W # KANGXI RADICAL JAR -2F79;W # KANGXI RADICAL NET -2F7A;W # KANGXI RADICAL SHEEP -2F7B;W # KANGXI RADICAL FEATHER -2F7C;W # KANGXI RADICAL OLD -2F7D;W # KANGXI RADICAL AND -2F7E;W # KANGXI RADICAL PLOW -2F7F;W # KANGXI RADICAL EAR -2F80;W # KANGXI RADICAL BRUSH -2F81;W # KANGXI RADICAL MEAT -2F82;W # KANGXI RADICAL MINISTER -2F83;W # KANGXI RADICAL SELF -2F84;W # KANGXI RADICAL ARRIVE -2F85;W # KANGXI RADICAL MORTAR -2F86;W # KANGXI RADICAL TONGUE -2F87;W # KANGXI RADICAL OPPOSE -2F88;W # KANGXI RADICAL BOAT -2F89;W # KANGXI RADICAL STOPPING -2F8A;W # KANGXI RADICAL COLOR -2F8B;W # KANGXI RADICAL GRASS -2F8C;W # KANGXI RADICAL TIGER -2F8D;W # KANGXI RADICAL INSECT -2F8E;W # KANGXI RADICAL BLOOD -2F8F;W # KANGXI RADICAL WALK ENCLOSURE -2F90;W # KANGXI RADICAL CLOTHES -2F91;W # KANGXI RADICAL WEST -2F92;W # KANGXI RADICAL SEE -2F93;W # KANGXI RADICAL HORN -2F94;W # KANGXI RADICAL SPEECH -2F95;W # KANGXI RADICAL VALLEY -2F96;W # KANGXI RADICAL BEAN -2F97;W # KANGXI RADICAL PIG -2F98;W # KANGXI RADICAL BADGER -2F99;W # KANGXI RADICAL SHELL -2F9A;W # KANGXI RADICAL RED -2F9B;W # KANGXI RADICAL RUN -2F9C;W # KANGXI RADICAL FOOT -2F9D;W # KANGXI RADICAL BODY -2F9E;W # KANGXI RADICAL CART -2F9F;W # KANGXI RADICAL BITTER -2FA0;W # KANGXI RADICAL MORNING -2FA1;W # KANGXI RADICAL WALK -2FA2;W # KANGXI RADICAL CITY -2FA3;W # KANGXI RADICAL WINE -2FA4;W # KANGXI RADICAL DISTINGUISH -2FA5;W # KANGXI RADICAL VILLAGE -2FA6;W # KANGXI RADICAL GOLD -2FA7;W # KANGXI RADICAL LONG -2FA8;W # KANGXI RADICAL GATE -2FA9;W # KANGXI RADICAL MOUND -2FAA;W # KANGXI RADICAL SLAVE -2FAB;W # KANGXI RADICAL SHORT TAILED BIRD -2FAC;W # KANGXI RADICAL RAIN -2FAD;W # KANGXI RADICAL BLUE -2FAE;W # KANGXI RADICAL WRONG -2FAF;W # KANGXI RADICAL FACE -2FB0;W # KANGXI RADICAL LEATHER -2FB1;W # KANGXI RADICAL TANNED LEATHER -2FB2;W # KANGXI RADICAL LEEK -2FB3;W # KANGXI RADICAL SOUND -2FB4;W # KANGXI RADICAL LEAF -2FB5;W # KANGXI RADICAL WIND -2FB6;W # KANGXI RADICAL FLY -2FB7;W # KANGXI RADICAL EAT -2FB8;W # KANGXI RADICAL HEAD -2FB9;W # KANGXI RADICAL FRAGRANT -2FBA;W # KANGXI RADICAL HORSE -2FBB;W # KANGXI RADICAL BONE -2FBC;W # KANGXI RADICAL TALL -2FBD;W # KANGXI RADICAL HAIR -2FBE;W # KANGXI RADICAL FIGHT -2FBF;W # KANGXI RADICAL SACRIFICIAL WINE -2FC0;W # KANGXI RADICAL CAULDRON -2FC1;W # KANGXI RADICAL GHOST -2FC2;W # KANGXI RADICAL FISH -2FC3;W # KANGXI RADICAL BIRD -2FC4;W # KANGXI RADICAL SALT -2FC5;W # KANGXI RADICAL DEER -2FC6;W # KANGXI RADICAL WHEAT -2FC7;W # KANGXI RADICAL HEMP -2FC8;W # KANGXI RADICAL YELLOW -2FC9;W # KANGXI RADICAL MILLET -2FCA;W # KANGXI RADICAL BLACK -2FCB;W # KANGXI RADICAL EMBROIDERY -2FCC;W # KANGXI RADICAL FROG -2FCD;W # KANGXI RADICAL TRIPOD -2FCE;W # KANGXI RADICAL DRUM -2FCF;W # KANGXI RADICAL RAT -2FD0;W # KANGXI RADICAL NOSE -2FD1;W # KANGXI RADICAL EVEN -2FD2;W # KANGXI RADICAL TOOTH -2FD3;W # KANGXI RADICAL DRAGON -2FD4;W # KANGXI RADICAL TURTLE -2FD5;W # KANGXI RADICAL FLUTE -2FF0;W # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT -2FF1;W # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW -2FF2;W # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT -2FF3;W # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW -2FF4;W # IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND -2FF5;W # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE -2FF6;W # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW -2FF7;W # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT -2FF8;W # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT -2FF9;W # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT -2FFA;W # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT -2FFB;W # IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID -3000;F # IDEOGRAPHIC SPACE -3001;W # IDEOGRAPHIC COMMA -3002;W # IDEOGRAPHIC FULL STOP -3003;W # DITTO MARK -3004;W # JAPANESE INDUSTRIAL STANDARD SYMBOL -3005;W # IDEOGRAPHIC ITERATION MARK -3006;W # IDEOGRAPHIC CLOSING MARK -3007;W # IDEOGRAPHIC NUMBER ZERO -3008;W # LEFT ANGLE BRACKET -3009;W # RIGHT ANGLE BRACKET -300A;W # LEFT DOUBLE ANGLE BRACKET -300B;W # RIGHT DOUBLE ANGLE BRACKET -300C;W # LEFT CORNER BRACKET -300D;W # RIGHT CORNER BRACKET -300E;W # LEFT WHITE CORNER BRACKET -300F;W # RIGHT WHITE CORNER BRACKET -3010;W # LEFT BLACK LENTICULAR BRACKET -3011;W # RIGHT BLACK LENTICULAR BRACKET -3012;W # POSTAL MARK -3013;W # GETA MARK -3014;W # LEFT TORTOISE SHELL BRACKET -3015;W # RIGHT TORTOISE SHELL BRACKET -3016;W # LEFT WHITE LENTICULAR BRACKET -3017;W # RIGHT WHITE LENTICULAR BRACKET -3018;W # LEFT WHITE TORTOISE SHELL BRACKET -3019;W # RIGHT WHITE TORTOISE SHELL BRACKET -301A;W # LEFT WHITE SQUARE BRACKET -301B;W # RIGHT WHITE SQUARE BRACKET -301C;W # WAVE DASH -301D;W # REVERSED DOUBLE PRIME QUOTATION MARK -301E;W # DOUBLE PRIME QUOTATION MARK -301F;W # LOW DOUBLE PRIME QUOTATION MARK -3020;W # POSTAL MARK FACE -3021;W # HANGZHOU NUMERAL ONE -3022;W # HANGZHOU NUMERAL TWO -3023;W # HANGZHOU NUMERAL THREE -3024;W # HANGZHOU NUMERAL FOUR -3025;W # HANGZHOU NUMERAL FIVE -3026;W # HANGZHOU NUMERAL SIX -3027;W # HANGZHOU NUMERAL SEVEN -3028;W # HANGZHOU NUMERAL EIGHT -3029;W # HANGZHOU NUMERAL NINE -302A;W # IDEOGRAPHIC LEVEL TONE MARK -302B;W # IDEOGRAPHIC RISING TONE MARK -302C;W # IDEOGRAPHIC DEPARTING TONE MARK -302D;W # IDEOGRAPHIC ENTERING TONE MARK -302E;W # HANGUL SINGLE DOT TONE MARK -302F;W # HANGUL DOUBLE DOT TONE MARK -3030;W # WAVY DASH -3031;W # VERTICAL KANA REPEAT MARK -3032;W # VERTICAL KANA REPEAT WITH VOICED SOUND MARK -3033;W # VERTICAL KANA REPEAT MARK UPPER HALF -3034;W # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF -3035;W # VERTICAL KANA REPEAT MARK LOWER HALF -3036;W # CIRCLED POSTAL MARK -3037;W # IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL -3038;W # HANGZHOU NUMERAL TEN -3039;W # HANGZHOU NUMERAL TWENTY -303A;W # HANGZHOU NUMERAL THIRTY -303B;W # VERTICAL IDEOGRAPHIC ITERATION MARK -303C;W # MASU MARK -303D;W # PART ALTERNATION MARK -303E;W # IDEOGRAPHIC VARIATION INDICATOR -303F;N # IDEOGRAPHIC HALF FILL SPACE -3041;W # HIRAGANA LETTER SMALL A -3042;W # HIRAGANA LETTER A -3043;W # HIRAGANA LETTER SMALL I -3044;W # HIRAGANA LETTER I -3045;W # HIRAGANA LETTER SMALL U -3046;W # HIRAGANA LETTER U -3047;W # HIRAGANA LETTER SMALL E -3048;W # HIRAGANA LETTER E -3049;W # HIRAGANA LETTER SMALL O -304A;W # HIRAGANA LETTER O -304B;W # HIRAGANA LETTER KA -304C;W # HIRAGANA LETTER GA -304D;W # HIRAGANA LETTER KI -304E;W # HIRAGANA LETTER GI -304F;W # HIRAGANA LETTER KU -3050;W # HIRAGANA LETTER GU -3051;W # HIRAGANA LETTER KE -3052;W # HIRAGANA LETTER GE -3053;W # HIRAGANA LETTER KO -3054;W # HIRAGANA LETTER GO -3055;W # HIRAGANA LETTER SA -3056;W # HIRAGANA LETTER ZA -3057;W # HIRAGANA LETTER SI -3058;W # HIRAGANA LETTER ZI -3059;W # HIRAGANA LETTER SU -305A;W # HIRAGANA LETTER ZU -305B;W # HIRAGANA LETTER SE -305C;W # HIRAGANA LETTER ZE -305D;W # HIRAGANA LETTER SO -305E;W # HIRAGANA LETTER ZO -305F;W # HIRAGANA LETTER TA -3060;W # HIRAGANA LETTER DA -3061;W # HIRAGANA LETTER TI -3062;W # HIRAGANA LETTER DI -3063;W # HIRAGANA LETTER SMALL TU -3064;W # HIRAGANA LETTER TU -3065;W # HIRAGANA LETTER DU -3066;W # HIRAGANA LETTER TE -3067;W # HIRAGANA LETTER DE -3068;W # HIRAGANA LETTER TO -3069;W # HIRAGANA LETTER DO -306A;W # HIRAGANA LETTER NA -306B;W # HIRAGANA LETTER NI -306C;W # HIRAGANA LETTER NU -306D;W # HIRAGANA LETTER NE -306E;W # HIRAGANA LETTER NO -306F;W # HIRAGANA LETTER HA -3070;W # HIRAGANA LETTER BA -3071;W # HIRAGANA LETTER PA -3072;W # HIRAGANA LETTER HI -3073;W # HIRAGANA LETTER BI -3074;W # HIRAGANA LETTER PI -3075;W # HIRAGANA LETTER HU -3076;W # HIRAGANA LETTER BU -3077;W # HIRAGANA LETTER PU -3078;W # HIRAGANA LETTER HE -3079;W # HIRAGANA LETTER BE -307A;W # HIRAGANA LETTER PE -307B;W # HIRAGANA LETTER HO -307C;W # HIRAGANA LETTER BO -307D;W # HIRAGANA LETTER PO -307E;W # HIRAGANA LETTER MA -307F;W # HIRAGANA LETTER MI -3080;W # HIRAGANA LETTER MU -3081;W # HIRAGANA LETTER ME -3082;W # HIRAGANA LETTER MO -3083;W # HIRAGANA LETTER SMALL YA -3084;W # HIRAGANA LETTER YA -3085;W # HIRAGANA LETTER SMALL YU -3086;W # HIRAGANA LETTER YU -3087;W # HIRAGANA LETTER SMALL YO -3088;W # HIRAGANA LETTER YO -3089;W # HIRAGANA LETTER RA -308A;W # HIRAGANA LETTER RI -308B;W # HIRAGANA LETTER RU -308C;W # HIRAGANA LETTER RE -308D;W # HIRAGANA LETTER RO -308E;W # HIRAGANA LETTER SMALL WA -308F;W # HIRAGANA LETTER WA -3090;W # HIRAGANA LETTER WI -3091;W # HIRAGANA LETTER WE -3092;W # HIRAGANA LETTER WO -3093;W # HIRAGANA LETTER N -3094;W # HIRAGANA LETTER VU -3095;W # HIRAGANA LETTER SMALL KA -3096;W # HIRAGANA LETTER SMALL KE -3099;W # COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK -309A;W # COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -309B;W # KATAKANA-HIRAGANA VOICED SOUND MARK -309C;W # KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -309D;W # HIRAGANA ITERATION MARK -309E;W # HIRAGANA VOICED ITERATION MARK -309F;W # HIRAGANA DIGRAPH YORI -30A0;W # KATAKANA-HIRAGANA DOUBLE HYPHEN -30A1;W # KATAKANA LETTER SMALL A -30A2;W # KATAKANA LETTER A -30A3;W # KATAKANA LETTER SMALL I -30A4;W # KATAKANA LETTER I -30A5;W # KATAKANA LETTER SMALL U -30A6;W # KATAKANA LETTER U -30A7;W # KATAKANA LETTER SMALL E -30A8;W # KATAKANA LETTER E -30A9;W # KATAKANA LETTER SMALL O -30AA;W # KATAKANA LETTER O -30AB;W # KATAKANA LETTER KA -30AC;W # KATAKANA LETTER GA -30AD;W # KATAKANA LETTER KI -30AE;W # KATAKANA LETTER GI -30AF;W # KATAKANA LETTER KU -30B0;W # KATAKANA LETTER GU -30B1;W # KATAKANA LETTER KE -30B2;W # KATAKANA LETTER GE -30B3;W # KATAKANA LETTER KO -30B4;W # KATAKANA LETTER GO -30B5;W # KATAKANA LETTER SA -30B6;W # KATAKANA LETTER ZA -30B7;W # KATAKANA LETTER SI -30B8;W # KATAKANA LETTER ZI -30B9;W # KATAKANA LETTER SU -30BA;W # KATAKANA LETTER ZU -30BB;W # KATAKANA LETTER SE -30BC;W # KATAKANA LETTER ZE -30BD;W # KATAKANA LETTER SO -30BE;W # KATAKANA LETTER ZO -30BF;W # KATAKANA LETTER TA -30C0;W # KATAKANA LETTER DA -30C1;W # KATAKANA LETTER TI -30C2;W # KATAKANA LETTER DI -30C3;W # KATAKANA LETTER SMALL TU -30C4;W # KATAKANA LETTER TU -30C5;W # KATAKANA LETTER DU -30C6;W # KATAKANA LETTER TE -30C7;W # KATAKANA LETTER DE -30C8;W # KATAKANA LETTER TO -30C9;W # KATAKANA LETTER DO -30CA;W # KATAKANA LETTER NA -30CB;W # KATAKANA LETTER NI -30CC;W # KATAKANA LETTER NU -30CD;W # KATAKANA LETTER NE -30CE;W # KATAKANA LETTER NO -30CF;W # KATAKANA LETTER HA -30D0;W # KATAKANA LETTER BA -30D1;W # KATAKANA LETTER PA -30D2;W # KATAKANA LETTER HI -30D3;W # KATAKANA LETTER BI -30D4;W # KATAKANA LETTER PI -30D5;W # KATAKANA LETTER HU -30D6;W # KATAKANA LETTER BU -30D7;W # KATAKANA LETTER PU -30D8;W # KATAKANA LETTER HE -30D9;W # KATAKANA LETTER BE -30DA;W # KATAKANA LETTER PE -30DB;W # KATAKANA LETTER HO -30DC;W # KATAKANA LETTER BO -30DD;W # KATAKANA LETTER PO -30DE;W # KATAKANA LETTER MA -30DF;W # KATAKANA LETTER MI -30E0;W # KATAKANA LETTER MU -30E1;W # KATAKANA LETTER ME -30E2;W # KATAKANA LETTER MO -30E3;W # KATAKANA LETTER SMALL YA -30E4;W # KATAKANA LETTER YA -30E5;W # KATAKANA LETTER SMALL YU -30E6;W # KATAKANA LETTER YU -30E7;W # KATAKANA LETTER SMALL YO -30E8;W # KATAKANA LETTER YO -30E9;W # KATAKANA LETTER RA -30EA;W # KATAKANA LETTER RI -30EB;W # KATAKANA LETTER RU -30EC;W # KATAKANA LETTER RE -30ED;W # KATAKANA LETTER RO -30EE;W # KATAKANA LETTER SMALL WA -30EF;W # KATAKANA LETTER WA -30F0;W # KATAKANA LETTER WI -30F1;W # KATAKANA LETTER WE -30F2;W # KATAKANA LETTER WO -30F3;W # KATAKANA LETTER N -30F4;W # KATAKANA LETTER VU -30F5;W # KATAKANA LETTER SMALL KA -30F6;W # KATAKANA LETTER SMALL KE -30F7;W # KATAKANA LETTER VA -30F8;W # KATAKANA LETTER VI -30F9;W # KATAKANA LETTER VE -30FA;W # KATAKANA LETTER VO -30FB;W # KATAKANA MIDDLE DOT -30FC;W # KATAKANA-HIRAGANA PROLONGED SOUND MARK -30FD;W # KATAKANA ITERATION MARK -30FE;W # KATAKANA VOICED ITERATION MARK -30FF;W # KATAKANA DIGRAPH KOTO -3105;W # BOPOMOFO LETTER B -3106;W # BOPOMOFO LETTER P -3107;W # BOPOMOFO LETTER M -3108;W # BOPOMOFO LETTER F -3109;W # BOPOMOFO LETTER D -310A;W # BOPOMOFO LETTER T -310B;W # BOPOMOFO LETTER N -310C;W # BOPOMOFO LETTER L -310D;W # BOPOMOFO LETTER G -310E;W # BOPOMOFO LETTER K -310F;W # BOPOMOFO LETTER H -3110;W # BOPOMOFO LETTER J -3111;W # BOPOMOFO LETTER Q -3112;W # BOPOMOFO LETTER X -3113;W # BOPOMOFO LETTER ZH -3114;W # BOPOMOFO LETTER CH -3115;W # BOPOMOFO LETTER SH -3116;W # BOPOMOFO LETTER R -3117;W # BOPOMOFO LETTER Z -3118;W # BOPOMOFO LETTER C -3119;W # BOPOMOFO LETTER S -311A;W # BOPOMOFO LETTER A -311B;W # BOPOMOFO LETTER O -311C;W # BOPOMOFO LETTER E -311D;W # BOPOMOFO LETTER EH -311E;W # BOPOMOFO LETTER AI -311F;W # BOPOMOFO LETTER EI -3120;W # BOPOMOFO LETTER AU -3121;W # BOPOMOFO LETTER OU -3122;W # BOPOMOFO LETTER AN -3123;W # BOPOMOFO LETTER EN -3124;W # BOPOMOFO LETTER ANG -3125;W # BOPOMOFO LETTER ENG -3126;W # BOPOMOFO LETTER ER -3127;W # BOPOMOFO LETTER I -3128;W # BOPOMOFO LETTER U -3129;W # BOPOMOFO LETTER IU -312A;W # BOPOMOFO LETTER V -312B;W # BOPOMOFO LETTER NG -312C;W # BOPOMOFO LETTER GN -3131;W # HANGUL LETTER KIYEOK -3132;W # HANGUL LETTER SSANGKIYEOK -3133;W # HANGUL LETTER KIYEOK-SIOS -3134;W # HANGUL LETTER NIEUN -3135;W # HANGUL LETTER NIEUN-CIEUC -3136;W # HANGUL LETTER NIEUN-HIEUH -3137;W # HANGUL LETTER TIKEUT -3138;W # HANGUL LETTER SSANGTIKEUT -3139;W # HANGUL LETTER RIEUL -313A;W # HANGUL LETTER RIEUL-KIYEOK -313B;W # HANGUL LETTER RIEUL-MIEUM -313C;W # HANGUL LETTER RIEUL-PIEUP -313D;W # HANGUL LETTER RIEUL-SIOS -313E;W # HANGUL LETTER RIEUL-THIEUTH -313F;W # HANGUL LETTER RIEUL-PHIEUPH -3140;W # HANGUL LETTER RIEUL-HIEUH -3141;W # HANGUL LETTER MIEUM -3142;W # HANGUL LETTER PIEUP -3143;W # HANGUL LETTER SSANGPIEUP -3144;W # HANGUL LETTER PIEUP-SIOS -3145;W # HANGUL LETTER SIOS -3146;W # HANGUL LETTER SSANGSIOS -3147;W # HANGUL LETTER IEUNG -3148;W # HANGUL LETTER CIEUC -3149;W # HANGUL LETTER SSANGCIEUC -314A;W # HANGUL LETTER CHIEUCH -314B;W # HANGUL LETTER KHIEUKH -314C;W # HANGUL LETTER THIEUTH -314D;W # HANGUL LETTER PHIEUPH -314E;W # HANGUL LETTER HIEUH -314F;W # HANGUL LETTER A -3150;W # HANGUL LETTER AE -3151;W # HANGUL LETTER YA -3152;W # HANGUL LETTER YAE -3153;W # HANGUL LETTER EO -3154;W # HANGUL LETTER E -3155;W # HANGUL LETTER YEO -3156;W # HANGUL LETTER YE -3157;W # HANGUL LETTER O -3158;W # HANGUL LETTER WA -3159;W # HANGUL LETTER WAE -315A;W # HANGUL LETTER OE -315B;W # HANGUL LETTER YO -315C;W # HANGUL LETTER U -315D;W # HANGUL LETTER WEO -315E;W # HANGUL LETTER WE -315F;W # HANGUL LETTER WI -3160;W # HANGUL LETTER YU -3161;W # HANGUL LETTER EU -3162;W # HANGUL LETTER YI -3163;W # HANGUL LETTER I -3164;W # HANGUL FILLER -3165;W # HANGUL LETTER SSANGNIEUN -3166;W # HANGUL LETTER NIEUN-TIKEUT -3167;W # HANGUL LETTER NIEUN-SIOS -3168;W # HANGUL LETTER NIEUN-PANSIOS -3169;W # HANGUL LETTER RIEUL-KIYEOK-SIOS -316A;W # HANGUL LETTER RIEUL-TIKEUT -316B;W # HANGUL LETTER RIEUL-PIEUP-SIOS -316C;W # HANGUL LETTER RIEUL-PANSIOS -316D;W # HANGUL LETTER RIEUL-YEORINHIEUH -316E;W # HANGUL LETTER MIEUM-PIEUP -316F;W # HANGUL LETTER MIEUM-SIOS -3170;W # HANGUL LETTER MIEUM-PANSIOS -3171;W # HANGUL LETTER KAPYEOUNMIEUM -3172;W # HANGUL LETTER PIEUP-KIYEOK -3173;W # HANGUL LETTER PIEUP-TIKEUT -3174;W # HANGUL LETTER PIEUP-SIOS-KIYEOK -3175;W # HANGUL LETTER PIEUP-SIOS-TIKEUT -3176;W # HANGUL LETTER PIEUP-CIEUC -3177;W # HANGUL LETTER PIEUP-THIEUTH -3178;W # HANGUL LETTER KAPYEOUNPIEUP -3179;W # HANGUL LETTER KAPYEOUNSSANGPIEUP -317A;W # HANGUL LETTER SIOS-KIYEOK -317B;W # HANGUL LETTER SIOS-NIEUN -317C;W # HANGUL LETTER SIOS-TIKEUT -317D;W # HANGUL LETTER SIOS-PIEUP -317E;W # HANGUL LETTER SIOS-CIEUC -317F;W # HANGUL LETTER PANSIOS -3180;W # HANGUL LETTER SSANGIEUNG -3181;W # HANGUL LETTER YESIEUNG -3182;W # HANGUL LETTER YESIEUNG-SIOS -3183;W # HANGUL LETTER YESIEUNG-PANSIOS -3184;W # HANGUL LETTER KAPYEOUNPHIEUPH -3185;W # HANGUL LETTER SSANGHIEUH -3186;W # HANGUL LETTER YEORINHIEUH -3187;W # HANGUL LETTER YO-YA -3188;W # HANGUL LETTER YO-YAE -3189;W # HANGUL LETTER YO-I -318A;W # HANGUL LETTER YU-YEO -318B;W # HANGUL LETTER YU-YE -318C;W # HANGUL LETTER YU-I -318D;W # HANGUL LETTER ARAEA -318E;W # HANGUL LETTER ARAEAE -3190;W # IDEOGRAPHIC ANNOTATION LINKING MARK -3191;W # IDEOGRAPHIC ANNOTATION REVERSE MARK -3192;W # IDEOGRAPHIC ANNOTATION ONE MARK -3193;W # IDEOGRAPHIC ANNOTATION TWO MARK -3194;W # IDEOGRAPHIC ANNOTATION THREE MARK -3195;W # IDEOGRAPHIC ANNOTATION FOUR MARK -3196;W # IDEOGRAPHIC ANNOTATION TOP MARK -3197;W # IDEOGRAPHIC ANNOTATION MIDDLE MARK -3198;W # IDEOGRAPHIC ANNOTATION BOTTOM MARK -3199;W # IDEOGRAPHIC ANNOTATION FIRST MARK -319A;W # IDEOGRAPHIC ANNOTATION SECOND MARK -319B;W # IDEOGRAPHIC ANNOTATION THIRD MARK -319C;W # IDEOGRAPHIC ANNOTATION FOURTH MARK -319D;W # IDEOGRAPHIC ANNOTATION HEAVEN MARK -319E;W # IDEOGRAPHIC ANNOTATION EARTH MARK -319F;W # IDEOGRAPHIC ANNOTATION MAN MARK -31A0;W # BOPOMOFO LETTER BU -31A1;W # BOPOMOFO LETTER ZI -31A2;W # BOPOMOFO LETTER JI -31A3;W # BOPOMOFO LETTER GU -31A4;W # BOPOMOFO LETTER EE -31A5;W # BOPOMOFO LETTER ENN -31A6;W # BOPOMOFO LETTER OO -31A7;W # BOPOMOFO LETTER ONN -31A8;W # BOPOMOFO LETTER IR -31A9;W # BOPOMOFO LETTER ANN -31AA;W # BOPOMOFO LETTER INN -31AB;W # BOPOMOFO LETTER UNN -31AC;W # BOPOMOFO LETTER IM -31AD;W # BOPOMOFO LETTER NGG -31AE;W # BOPOMOFO LETTER AINN -31AF;W # BOPOMOFO LETTER AUNN -31B0;W # BOPOMOFO LETTER AM -31B1;W # BOPOMOFO LETTER OM -31B2;W # BOPOMOFO LETTER ONG -31B3;W # BOPOMOFO LETTER INNN -31B4;W # BOPOMOFO FINAL LETTER P -31B5;W # BOPOMOFO FINAL LETTER T -31B6;W # BOPOMOFO FINAL LETTER K -31B7;W # BOPOMOFO FINAL LETTER H -31C0;W # CJK STROKE T -31C1;W # CJK STROKE WG -31C2;W # CJK STROKE XG -31C3;W # CJK STROKE BXG -31C4;W # CJK STROKE SW -31C5;W # CJK STROKE HZZ -31C6;W # CJK STROKE HZG -31C7;W # CJK STROKE HP -31C8;W # CJK STROKE HZWG -31C9;W # CJK STROKE SZWG -31CA;W # CJK STROKE HZT -31CB;W # CJK STROKE HZZP -31CC;W # CJK STROKE HPWG -31CD;W # CJK STROKE HZW -31CE;W # CJK STROKE HZZZ -31CF;W # CJK STROKE N -31F0;W # KATAKANA LETTER SMALL KU -31F1;W # KATAKANA LETTER SMALL SI -31F2;W # KATAKANA LETTER SMALL SU -31F3;W # KATAKANA LETTER SMALL TO -31F4;W # KATAKANA LETTER SMALL NU -31F5;W # KATAKANA LETTER SMALL HA -31F6;W # KATAKANA LETTER SMALL HI -31F7;W # KATAKANA LETTER SMALL HU -31F8;W # KATAKANA LETTER SMALL HE -31F9;W # KATAKANA LETTER SMALL HO -31FA;W # KATAKANA LETTER SMALL MU -31FB;W # KATAKANA LETTER SMALL RA -31FC;W # KATAKANA LETTER SMALL RI -31FD;W # KATAKANA LETTER SMALL RU -31FE;W # KATAKANA LETTER SMALL RE -31FF;W # KATAKANA LETTER SMALL RO -3200;W # PARENTHESIZED HANGUL KIYEOK -3201;W # PARENTHESIZED HANGUL NIEUN -3202;W # PARENTHESIZED HANGUL TIKEUT -3203;W # PARENTHESIZED HANGUL RIEUL -3204;W # PARENTHESIZED HANGUL MIEUM -3205;W # PARENTHESIZED HANGUL PIEUP -3206;W # PARENTHESIZED HANGUL SIOS -3207;W # PARENTHESIZED HANGUL IEUNG -3208;W # PARENTHESIZED HANGUL CIEUC -3209;W # PARENTHESIZED HANGUL CHIEUCH -320A;W # PARENTHESIZED HANGUL KHIEUKH -320B;W # PARENTHESIZED HANGUL THIEUTH -320C;W # PARENTHESIZED HANGUL PHIEUPH -320D;W # PARENTHESIZED HANGUL HIEUH -320E;W # PARENTHESIZED HANGUL KIYEOK A -320F;W # PARENTHESIZED HANGUL NIEUN A -3210;W # PARENTHESIZED HANGUL TIKEUT A -3211;W # PARENTHESIZED HANGUL RIEUL A -3212;W # PARENTHESIZED HANGUL MIEUM A -3213;W # PARENTHESIZED HANGUL PIEUP A -3214;W # PARENTHESIZED HANGUL SIOS A -3215;W # PARENTHESIZED HANGUL IEUNG A -3216;W # PARENTHESIZED HANGUL CIEUC A -3217;W # PARENTHESIZED HANGUL CHIEUCH A -3218;W # PARENTHESIZED HANGUL KHIEUKH A -3219;W # PARENTHESIZED HANGUL THIEUTH A -321A;W # PARENTHESIZED HANGUL PHIEUPH A -321B;W # PARENTHESIZED HANGUL HIEUH A -321C;W # PARENTHESIZED HANGUL CIEUC U -321D;W # PARENTHESIZED KOREAN CHARACTER OJEON -321E;W # PARENTHESIZED KOREAN CHARACTER O HU -3220;W # PARENTHESIZED IDEOGRAPH ONE -3221;W # PARENTHESIZED IDEOGRAPH TWO -3222;W # PARENTHESIZED IDEOGRAPH THREE -3223;W # PARENTHESIZED IDEOGRAPH FOUR -3224;W # PARENTHESIZED IDEOGRAPH FIVE -3225;W # PARENTHESIZED IDEOGRAPH SIX -3226;W # PARENTHESIZED IDEOGRAPH SEVEN -3227;W # PARENTHESIZED IDEOGRAPH EIGHT -3228;W # PARENTHESIZED IDEOGRAPH NINE -3229;W # PARENTHESIZED IDEOGRAPH TEN -322A;W # PARENTHESIZED IDEOGRAPH MOON -322B;W # PARENTHESIZED IDEOGRAPH FIRE -322C;W # PARENTHESIZED IDEOGRAPH WATER -322D;W # PARENTHESIZED IDEOGRAPH WOOD -322E;W # PARENTHESIZED IDEOGRAPH METAL -322F;W # PARENTHESIZED IDEOGRAPH EARTH -3230;W # PARENTHESIZED IDEOGRAPH SUN -3231;W # PARENTHESIZED IDEOGRAPH STOCK -3232;W # PARENTHESIZED IDEOGRAPH HAVE -3233;W # PARENTHESIZED IDEOGRAPH SOCIETY -3234;W # PARENTHESIZED IDEOGRAPH NAME -3235;W # PARENTHESIZED IDEOGRAPH SPECIAL -3236;W # PARENTHESIZED IDEOGRAPH FINANCIAL -3237;W # PARENTHESIZED IDEOGRAPH CONGRATULATION -3238;W # PARENTHESIZED IDEOGRAPH LABOR -3239;W # PARENTHESIZED IDEOGRAPH REPRESENT -323A;W # PARENTHESIZED IDEOGRAPH CALL -323B;W # PARENTHESIZED IDEOGRAPH STUDY -323C;W # PARENTHESIZED IDEOGRAPH SUPERVISE -323D;W # PARENTHESIZED IDEOGRAPH ENTERPRISE -323E;W # PARENTHESIZED IDEOGRAPH RESOURCE -323F;W # PARENTHESIZED IDEOGRAPH ALLIANCE -3240;W # PARENTHESIZED IDEOGRAPH FESTIVAL -3241;W # PARENTHESIZED IDEOGRAPH REST -3242;W # PARENTHESIZED IDEOGRAPH SELF -3243;W # PARENTHESIZED IDEOGRAPH REACH -3250;W # PARTNERSHIP SIGN -3251;W # CIRCLED NUMBER TWENTY ONE -3252;W # CIRCLED NUMBER TWENTY TWO -3253;W # CIRCLED NUMBER TWENTY THREE -3254;W # CIRCLED NUMBER TWENTY FOUR -3255;W # CIRCLED NUMBER TWENTY FIVE -3256;W # CIRCLED NUMBER TWENTY SIX -3257;W # CIRCLED NUMBER TWENTY SEVEN -3258;W # CIRCLED NUMBER TWENTY EIGHT -3259;W # CIRCLED NUMBER TWENTY NINE -325A;W # CIRCLED NUMBER THIRTY -325B;W # CIRCLED NUMBER THIRTY ONE -325C;W # CIRCLED NUMBER THIRTY TWO -325D;W # CIRCLED NUMBER THIRTY THREE -325E;W # CIRCLED NUMBER THIRTY FOUR -325F;W # CIRCLED NUMBER THIRTY FIVE -3260;W # CIRCLED HANGUL KIYEOK -3261;W # CIRCLED HANGUL NIEUN -3262;W # CIRCLED HANGUL TIKEUT -3263;W # CIRCLED HANGUL RIEUL -3264;W # CIRCLED HANGUL MIEUM -3265;W # CIRCLED HANGUL PIEUP -3266;W # CIRCLED HANGUL SIOS -3267;W # CIRCLED HANGUL IEUNG -3268;W # CIRCLED HANGUL CIEUC -3269;W # CIRCLED HANGUL CHIEUCH -326A;W # CIRCLED HANGUL KHIEUKH -326B;W # CIRCLED HANGUL THIEUTH -326C;W # CIRCLED HANGUL PHIEUPH -326D;W # CIRCLED HANGUL HIEUH -326E;W # CIRCLED HANGUL KIYEOK A -326F;W # CIRCLED HANGUL NIEUN A -3270;W # CIRCLED HANGUL TIKEUT A -3271;W # CIRCLED HANGUL RIEUL A -3272;W # CIRCLED HANGUL MIEUM A -3273;W # CIRCLED HANGUL PIEUP A -3274;W # CIRCLED HANGUL SIOS A -3275;W # CIRCLED HANGUL IEUNG A -3276;W # CIRCLED HANGUL CIEUC A -3277;W # CIRCLED HANGUL CHIEUCH A -3278;W # CIRCLED HANGUL KHIEUKH A -3279;W # CIRCLED HANGUL THIEUTH A -327A;W # CIRCLED HANGUL PHIEUPH A -327B;W # CIRCLED HANGUL HIEUH A -327C;W # CIRCLED KOREAN CHARACTER CHAMKO -327D;W # CIRCLED KOREAN CHARACTER JUEUI -327E;W # CIRCLED HANGUL IEUNG U -327F;W # KOREAN STANDARD SYMBOL -3280;W # CIRCLED IDEOGRAPH ONE -3281;W # CIRCLED IDEOGRAPH TWO -3282;W # CIRCLED IDEOGRAPH THREE -3283;W # CIRCLED IDEOGRAPH FOUR -3284;W # CIRCLED IDEOGRAPH FIVE -3285;W # CIRCLED IDEOGRAPH SIX -3286;W # CIRCLED IDEOGRAPH SEVEN -3287;W # CIRCLED IDEOGRAPH EIGHT -3288;W # CIRCLED IDEOGRAPH NINE -3289;W # CIRCLED IDEOGRAPH TEN -328A;W # CIRCLED IDEOGRAPH MOON -328B;W # CIRCLED IDEOGRAPH FIRE -328C;W # CIRCLED IDEOGRAPH WATER -328D;W # CIRCLED IDEOGRAPH WOOD -328E;W # CIRCLED IDEOGRAPH METAL -328F;W # CIRCLED IDEOGRAPH EARTH -3290;W # CIRCLED IDEOGRAPH SUN -3291;W # CIRCLED IDEOGRAPH STOCK -3292;W # CIRCLED IDEOGRAPH HAVE -3293;W # CIRCLED IDEOGRAPH SOCIETY -3294;W # CIRCLED IDEOGRAPH NAME -3295;W # CIRCLED IDEOGRAPH SPECIAL -3296;W # CIRCLED IDEOGRAPH FINANCIAL -3297;W # CIRCLED IDEOGRAPH CONGRATULATION -3298;W # CIRCLED IDEOGRAPH LABOR -3299;W # CIRCLED IDEOGRAPH SECRET -329A;W # CIRCLED IDEOGRAPH MALE -329B;W # CIRCLED IDEOGRAPH FEMALE -329C;W # CIRCLED IDEOGRAPH SUITABLE -329D;W # CIRCLED IDEOGRAPH EXCELLENT -329E;W # CIRCLED IDEOGRAPH PRINT -329F;W # CIRCLED IDEOGRAPH ATTENTION -32A0;W # CIRCLED IDEOGRAPH ITEM -32A1;W # CIRCLED IDEOGRAPH REST -32A2;W # CIRCLED IDEOGRAPH COPY -32A3;W # CIRCLED IDEOGRAPH CORRECT -32A4;W # CIRCLED IDEOGRAPH HIGH -32A5;W # CIRCLED IDEOGRAPH CENTRE -32A6;W # CIRCLED IDEOGRAPH LOW -32A7;W # CIRCLED IDEOGRAPH LEFT -32A8;W # CIRCLED IDEOGRAPH RIGHT -32A9;W # CIRCLED IDEOGRAPH MEDICINE -32AA;W # CIRCLED IDEOGRAPH RELIGION -32AB;W # CIRCLED IDEOGRAPH STUDY -32AC;W # CIRCLED IDEOGRAPH SUPERVISE -32AD;W # CIRCLED IDEOGRAPH ENTERPRISE -32AE;W # CIRCLED IDEOGRAPH RESOURCE -32AF;W # CIRCLED IDEOGRAPH ALLIANCE -32B0;W # CIRCLED IDEOGRAPH NIGHT -32B1;W # CIRCLED NUMBER THIRTY SIX -32B2;W # CIRCLED NUMBER THIRTY SEVEN -32B3;W # CIRCLED NUMBER THIRTY EIGHT -32B4;W # CIRCLED NUMBER THIRTY NINE -32B5;W # CIRCLED NUMBER FORTY -32B6;W # CIRCLED NUMBER FORTY ONE -32B7;W # CIRCLED NUMBER FORTY TWO -32B8;W # CIRCLED NUMBER FORTY THREE -32B9;W # CIRCLED NUMBER FORTY FOUR -32BA;W # CIRCLED NUMBER FORTY FIVE -32BB;W # CIRCLED NUMBER FORTY SIX -32BC;W # CIRCLED NUMBER FORTY SEVEN -32BD;W # CIRCLED NUMBER FORTY EIGHT -32BE;W # CIRCLED NUMBER FORTY NINE -32BF;W # CIRCLED NUMBER FIFTY -32C0;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY -32C1;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY -32C2;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH -32C3;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL -32C4;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY -32C5;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE -32C6;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY -32C7;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST -32C8;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER -32C9;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER -32CA;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER -32CB;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER -32CC;W # SQUARE HG -32CD;W # SQUARE ERG -32CE;W # SQUARE EV -32CF;W # LIMITED LIABILITY SIGN -32D0;W # CIRCLED KATAKANA A -32D1;W # CIRCLED KATAKANA I -32D2;W # CIRCLED KATAKANA U -32D3;W # CIRCLED KATAKANA E -32D4;W # CIRCLED KATAKANA O -32D5;W # CIRCLED KATAKANA KA -32D6;W # CIRCLED KATAKANA KI -32D7;W # CIRCLED KATAKANA KU -32D8;W # CIRCLED KATAKANA KE -32D9;W # CIRCLED KATAKANA KO -32DA;W # CIRCLED KATAKANA SA -32DB;W # CIRCLED KATAKANA SI -32DC;W # CIRCLED KATAKANA SU -32DD;W # CIRCLED KATAKANA SE -32DE;W # CIRCLED KATAKANA SO -32DF;W # CIRCLED KATAKANA TA -32E0;W # CIRCLED KATAKANA TI -32E1;W # CIRCLED KATAKANA TU -32E2;W # CIRCLED KATAKANA TE -32E3;W # CIRCLED KATAKANA TO -32E4;W # CIRCLED KATAKANA NA -32E5;W # CIRCLED KATAKANA NI -32E6;W # CIRCLED KATAKANA NU -32E7;W # CIRCLED KATAKANA NE -32E8;W # CIRCLED KATAKANA NO -32E9;W # CIRCLED KATAKANA HA -32EA;W # CIRCLED KATAKANA HI -32EB;W # CIRCLED KATAKANA HU -32EC;W # CIRCLED KATAKANA HE -32ED;W # CIRCLED KATAKANA HO -32EE;W # CIRCLED KATAKANA MA -32EF;W # CIRCLED KATAKANA MI -32F0;W # CIRCLED KATAKANA MU -32F1;W # CIRCLED KATAKANA ME -32F2;W # CIRCLED KATAKANA MO -32F3;W # CIRCLED KATAKANA YA -32F4;W # CIRCLED KATAKANA YU -32F5;W # CIRCLED KATAKANA YO -32F6;W # CIRCLED KATAKANA RA -32F7;W # CIRCLED KATAKANA RI -32F8;W # CIRCLED KATAKANA RU -32F9;W # CIRCLED KATAKANA RE -32FA;W # CIRCLED KATAKANA RO -32FB;W # CIRCLED KATAKANA WA -32FC;W # CIRCLED KATAKANA WI -32FD;W # CIRCLED KATAKANA WE -32FE;W # CIRCLED KATAKANA WO -3300;W # SQUARE APAATO -3301;W # SQUARE ARUHUA -3302;W # SQUARE ANPEA -3303;W # SQUARE AARU -3304;W # SQUARE ININGU -3305;W # SQUARE INTI -3306;W # SQUARE UON -3307;W # SQUARE ESUKUUDO -3308;W # SQUARE EEKAA -3309;W # SQUARE ONSU -330A;W # SQUARE OOMU -330B;W # SQUARE KAIRI -330C;W # SQUARE KARATTO -330D;W # SQUARE KARORII -330E;W # SQUARE GARON -330F;W # SQUARE GANMA -3310;W # SQUARE GIGA -3311;W # SQUARE GINII -3312;W # SQUARE KYURII -3313;W # SQUARE GIRUDAA -3314;W # SQUARE KIRO -3315;W # SQUARE KIROGURAMU -3316;W # SQUARE KIROMEETORU -3317;W # SQUARE KIROWATTO -3318;W # SQUARE GURAMU -3319;W # SQUARE GURAMUTON -331A;W # SQUARE KURUZEIRO -331B;W # SQUARE KUROONE -331C;W # SQUARE KEESU -331D;W # SQUARE KORUNA -331E;W # SQUARE KOOPO -331F;W # SQUARE SAIKURU -3320;W # SQUARE SANTIIMU -3321;W # SQUARE SIRINGU -3322;W # SQUARE SENTI -3323;W # SQUARE SENTO -3324;W # SQUARE DAASU -3325;W # SQUARE DESI -3326;W # SQUARE DORU -3327;W # SQUARE TON -3328;W # SQUARE NANO -3329;W # SQUARE NOTTO -332A;W # SQUARE HAITU -332B;W # SQUARE PAASENTO -332C;W # SQUARE PAATU -332D;W # SQUARE BAARERU -332E;W # SQUARE PIASUTORU -332F;W # SQUARE PIKURU -3330;W # SQUARE PIKO -3331;W # SQUARE BIRU -3332;W # SQUARE HUARADDO -3333;W # SQUARE HUIITO -3334;W # SQUARE BUSSYERU -3335;W # SQUARE HURAN -3336;W # SQUARE HEKUTAARU -3337;W # SQUARE PESO -3338;W # SQUARE PENIHI -3339;W # SQUARE HERUTU -333A;W # SQUARE PENSU -333B;W # SQUARE PEEZI -333C;W # SQUARE BEETA -333D;W # SQUARE POINTO -333E;W # SQUARE BORUTO -333F;W # SQUARE HON -3340;W # SQUARE PONDO -3341;W # SQUARE HOORU -3342;W # SQUARE HOON -3343;W # SQUARE MAIKURO -3344;W # SQUARE MAIRU -3345;W # SQUARE MAHHA -3346;W # SQUARE MARUKU -3347;W # SQUARE MANSYON -3348;W # SQUARE MIKURON -3349;W # SQUARE MIRI -334A;W # SQUARE MIRIBAARU -334B;W # SQUARE MEGA -334C;W # SQUARE MEGATON -334D;W # SQUARE MEETORU -334E;W # SQUARE YAADO -334F;W # SQUARE YAARU -3350;W # SQUARE YUAN -3351;W # SQUARE RITTORU -3352;W # SQUARE RIRA -3353;W # SQUARE RUPII -3354;W # SQUARE RUUBURU -3355;W # SQUARE REMU -3356;W # SQUARE RENTOGEN -3357;W # SQUARE WATTO -3358;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO -3359;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE -335A;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO -335B;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE -335C;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR -335D;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE -335E;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX -335F;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN -3360;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT -3361;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE -3362;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN -3363;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN -3364;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE -3365;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN -3366;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN -3367;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN -3368;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN -3369;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN -336A;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN -336B;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN -336C;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY -336D;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE -336E;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO -336F;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE -3370;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR -3371;W # SQUARE HPA -3372;W # SQUARE DA -3373;W # SQUARE AU -3374;W # SQUARE BAR -3375;W # SQUARE OV -3376;W # SQUARE PC -3377;W # SQUARE DM -3378;W # SQUARE DM SQUARED -3379;W # SQUARE DM CUBED -337A;W # SQUARE IU -337B;W # SQUARE ERA NAME HEISEI -337C;W # SQUARE ERA NAME SYOUWA -337D;W # SQUARE ERA NAME TAISYOU -337E;W # SQUARE ERA NAME MEIZI -337F;W # SQUARE CORPORATION -3380;W # SQUARE PA AMPS -3381;W # SQUARE NA -3382;W # SQUARE MU A -3383;W # SQUARE MA -3384;W # SQUARE KA -3385;W # SQUARE KB -3386;W # SQUARE MB -3387;W # SQUARE GB -3388;W # SQUARE CAL -3389;W # SQUARE KCAL -338A;W # SQUARE PF -338B;W # SQUARE NF -338C;W # SQUARE MU F -338D;W # SQUARE MU G -338E;W # SQUARE MG -338F;W # SQUARE KG -3390;W # SQUARE HZ -3391;W # SQUARE KHZ -3392;W # SQUARE MHZ -3393;W # SQUARE GHZ -3394;W # SQUARE THZ -3395;W # SQUARE MU L -3396;W # SQUARE ML -3397;W # SQUARE DL -3398;W # SQUARE KL -3399;W # SQUARE FM -339A;W # SQUARE NM -339B;W # SQUARE MU M -339C;W # SQUARE MM -339D;W # SQUARE CM -339E;W # SQUARE KM -339F;W # SQUARE MM SQUARED -33A0;W # SQUARE CM SQUARED -33A1;W # SQUARE M SQUARED -33A2;W # SQUARE KM SQUARED -33A3;W # SQUARE MM CUBED -33A4;W # SQUARE CM CUBED -33A5;W # SQUARE M CUBED -33A6;W # SQUARE KM CUBED -33A7;W # SQUARE M OVER S -33A8;W # SQUARE M OVER S SQUARED -33A9;W # SQUARE PA -33AA;W # SQUARE KPA -33AB;W # SQUARE MPA -33AC;W # SQUARE GPA -33AD;W # SQUARE RAD -33AE;W # SQUARE RAD OVER S -33AF;W # SQUARE RAD OVER S SQUARED -33B0;W # SQUARE PS -33B1;W # SQUARE NS -33B2;W # SQUARE MU S -33B3;W # SQUARE MS -33B4;W # SQUARE PV -33B5;W # SQUARE NV -33B6;W # SQUARE MU V -33B7;W # SQUARE MV -33B8;W # SQUARE KV -33B9;W # SQUARE MV MEGA -33BA;W # SQUARE PW -33BB;W # SQUARE NW -33BC;W # SQUARE MU W -33BD;W # SQUARE MW -33BE;W # SQUARE KW -33BF;W # SQUARE MW MEGA -33C0;W # SQUARE K OHM -33C1;W # SQUARE M OHM -33C2;W # SQUARE AM -33C3;W # SQUARE BQ -33C4;W # SQUARE CC -33C5;W # SQUARE CD -33C6;W # SQUARE C OVER KG -33C7;W # SQUARE CO -33C8;W # SQUARE DB -33C9;W # SQUARE GY -33CA;W # SQUARE HA -33CB;W # SQUARE HP -33CC;W # SQUARE IN -33CD;W # SQUARE KK -33CE;W # SQUARE KM CAPITAL -33CF;W # SQUARE KT -33D0;W # SQUARE LM -33D1;W # SQUARE LN -33D2;W # SQUARE LOG -33D3;W # SQUARE LX -33D4;W # SQUARE MB SMALL -33D5;W # SQUARE MIL -33D6;W # SQUARE MOL -33D7;W # SQUARE PH -33D8;W # SQUARE PM -33D9;W # SQUARE PPM -33DA;W # SQUARE PR -33DB;W # SQUARE SR -33DC;W # SQUARE SV -33DD;W # SQUARE WB -33DE;W # SQUARE V OVER M -33DF;W # SQUARE A OVER M -33E0;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE -33E1;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO -33E2;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE -33E3;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR -33E4;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE -33E5;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX -33E6;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN -33E7;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT -33E8;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE -33E9;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN -33EA;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN -33EB;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE -33EC;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN -33ED;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN -33EE;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN -33EF;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN -33F0;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN -33F1;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN -33F2;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN -33F3;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY -33F4;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE -33F5;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO -33F6;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE -33F7;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR -33F8;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE -33F9;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX -33FA;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN -33FB;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT -33FC;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE -33FD;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY -33FE;W # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE -33FF;W # SQUARE GAL -3400..4DB5;W # <CJK Ideograph Extension A, First>..<CJK Ideograph Extension A, Last> -4DC0;N # HEXAGRAM FOR THE CREATIVE HEAVEN -4DC1;N # HEXAGRAM FOR THE RECEPTIVE EARTH -4DC2;N # HEXAGRAM FOR DIFFICULTY AT THE BEGINNING -4DC3;N # HEXAGRAM FOR YOUTHFUL FOLLY -4DC4;N # HEXAGRAM FOR WAITING -4DC5;N # HEXAGRAM FOR CONFLICT -4DC6;N # HEXAGRAM FOR THE ARMY -4DC7;N # HEXAGRAM FOR HOLDING TOGETHER -4DC8;N # HEXAGRAM FOR SMALL TAMING -4DC9;N # HEXAGRAM FOR TREADING -4DCA;N # HEXAGRAM FOR PEACE -4DCB;N # HEXAGRAM FOR STANDSTILL -4DCC;N # HEXAGRAM FOR FELLOWSHIP -4DCD;N # HEXAGRAM FOR GREAT POSSESSION -4DCE;N # HEXAGRAM FOR MODESTY -4DCF;N # HEXAGRAM FOR ENTHUSIASM -4DD0;N # HEXAGRAM FOR FOLLOWING -4DD1;N # HEXAGRAM FOR WORK ON THE DECAYED -4DD2;N # HEXAGRAM FOR APPROACH -4DD3;N # HEXAGRAM FOR CONTEMPLATION -4DD4;N # HEXAGRAM FOR BITING THROUGH -4DD5;N # HEXAGRAM FOR GRACE -4DD6;N # HEXAGRAM FOR SPLITTING APART -4DD7;N # HEXAGRAM FOR RETURN -4DD8;N # HEXAGRAM FOR INNOCENCE -4DD9;N # HEXAGRAM FOR GREAT TAMING -4DDA;N # HEXAGRAM FOR MOUTH CORNERS -4DDB;N # HEXAGRAM FOR GREAT PREPONDERANCE -4DDC;N # HEXAGRAM FOR THE ABYSMAL WATER -4DDD;N # HEXAGRAM FOR THE CLINGING FIRE -4DDE;N # HEXAGRAM FOR INFLUENCE -4DDF;N # HEXAGRAM FOR DURATION -4DE0;N # HEXAGRAM FOR RETREAT -4DE1;N # HEXAGRAM FOR GREAT POWER -4DE2;N # HEXAGRAM FOR PROGRESS -4DE3;N # HEXAGRAM FOR DARKENING OF THE LIGHT -4DE4;N # HEXAGRAM FOR THE FAMILY -4DE5;N # HEXAGRAM FOR OPPOSITION -4DE6;N # HEXAGRAM FOR OBSTRUCTION -4DE7;N # HEXAGRAM FOR DELIVERANCE -4DE8;N # HEXAGRAM FOR DECREASE -4DE9;N # HEXAGRAM FOR INCREASE -4DEA;N # HEXAGRAM FOR BREAKTHROUGH -4DEB;N # HEXAGRAM FOR COMING TO MEET -4DEC;N # HEXAGRAM FOR GATHERING TOGETHER -4DED;N # HEXAGRAM FOR PUSHING UPWARD -4DEE;N # HEXAGRAM FOR OPPRESSION -4DEF;N # HEXAGRAM FOR THE WELL -4DF0;N # HEXAGRAM FOR REVOLUTION -4DF1;N # HEXAGRAM FOR THE CAULDRON -4DF2;N # HEXAGRAM FOR THE AROUSING THUNDER -4DF3;N # HEXAGRAM FOR THE KEEPING STILL MOUNTAIN -4DF4;N # HEXAGRAM FOR DEVELOPMENT -4DF5;N # HEXAGRAM FOR THE MARRYING MAIDEN -4DF6;N # HEXAGRAM FOR ABUNDANCE -4DF7;N # HEXAGRAM FOR THE WANDERER -4DF8;N # HEXAGRAM FOR THE GENTLE WIND -4DF9;N # HEXAGRAM FOR THE JOYOUS LAKE -4DFA;N # HEXAGRAM FOR DISPERSION -4DFB;N # HEXAGRAM FOR LIMITATION -4DFC;N # HEXAGRAM FOR INNER TRUTH -4DFD;N # HEXAGRAM FOR SMALL PREPONDERANCE -4DFE;N # HEXAGRAM FOR AFTER COMPLETION -4DFF;N # HEXAGRAM FOR BEFORE COMPLETION -4E00..9FBB;W # <CJK Ideograph, First>..<CJK Ideograph, Last> -A000;W # YI SYLLABLE IT -A001;W # YI SYLLABLE IX -A002;W # YI SYLLABLE I -A003;W # YI SYLLABLE IP -A004;W # YI SYLLABLE IET -A005;W # YI SYLLABLE IEX -A006;W # YI SYLLABLE IE -A007;W # YI SYLLABLE IEP -A008;W # YI SYLLABLE AT -A009;W # YI SYLLABLE AX -A00A;W # YI SYLLABLE A -A00B;W # YI SYLLABLE AP -A00C;W # YI SYLLABLE UOX -A00D;W # YI SYLLABLE UO -A00E;W # YI SYLLABLE UOP -A00F;W # YI SYLLABLE OT -A010;W # YI SYLLABLE OX -A011;W # YI SYLLABLE O -A012;W # YI SYLLABLE OP -A013;W # YI SYLLABLE EX -A014;W # YI SYLLABLE E -A015;W # YI SYLLABLE WU -A016;W # YI SYLLABLE BIT -A017;W # YI SYLLABLE BIX -A018;W # YI SYLLABLE BI -A019;W # YI SYLLABLE BIP -A01A;W # YI SYLLABLE BIET -A01B;W # YI SYLLABLE BIEX -A01C;W # YI SYLLABLE BIE -A01D;W # YI SYLLABLE BIEP -A01E;W # YI SYLLABLE BAT -A01F;W # YI SYLLABLE BAX -A020;W # YI SYLLABLE BA -A021;W # YI SYLLABLE BAP -A022;W # YI SYLLABLE BUOX -A023;W # YI SYLLABLE BUO -A024;W # YI SYLLABLE BUOP -A025;W # YI SYLLABLE BOT -A026;W # YI SYLLABLE BOX -A027;W # YI SYLLABLE BO -A028;W # YI SYLLABLE BOP -A029;W # YI SYLLABLE BEX -A02A;W # YI SYLLABLE BE -A02B;W # YI SYLLABLE BEP -A02C;W # YI SYLLABLE BUT -A02D;W # YI SYLLABLE BUX -A02E;W # YI SYLLABLE BU -A02F;W # YI SYLLABLE BUP -A030;W # YI SYLLABLE BURX -A031;W # YI SYLLABLE BUR -A032;W # YI SYLLABLE BYT -A033;W # YI SYLLABLE BYX -A034;W # YI SYLLABLE BY -A035;W # YI SYLLABLE BYP -A036;W # YI SYLLABLE BYRX -A037;W # YI SYLLABLE BYR -A038;W # YI SYLLABLE PIT -A039;W # YI SYLLABLE PIX -A03A;W # YI SYLLABLE PI -A03B;W # YI SYLLABLE PIP -A03C;W # YI SYLLABLE PIEX -A03D;W # YI SYLLABLE PIE -A03E;W # YI SYLLABLE PIEP -A03F;W # YI SYLLABLE PAT -A040;W # YI SYLLABLE PAX -A041;W # YI SYLLABLE PA -A042;W # YI SYLLABLE PAP -A043;W # YI SYLLABLE PUOX -A044;W # YI SYLLABLE PUO -A045;W # YI SYLLABLE PUOP -A046;W # YI SYLLABLE POT -A047;W # YI SYLLABLE POX -A048;W # YI SYLLABLE PO -A049;W # YI SYLLABLE POP -A04A;W # YI SYLLABLE PUT -A04B;W # YI SYLLABLE PUX -A04C;W # YI SYLLABLE PU -A04D;W # YI SYLLABLE PUP -A04E;W # YI SYLLABLE PURX -A04F;W # YI SYLLABLE PUR -A050;W # YI SYLLABLE PYT -A051;W # YI SYLLABLE PYX -A052;W # YI SYLLABLE PY -A053;W # YI SYLLABLE PYP -A054;W # YI SYLLABLE PYRX -A055;W # YI SYLLABLE PYR -A056;W # YI SYLLABLE BBIT -A057;W # YI SYLLABLE BBIX -A058;W # YI SYLLABLE BBI -A059;W # YI SYLLABLE BBIP -A05A;W # YI SYLLABLE BBIET -A05B;W # YI SYLLABLE BBIEX -A05C;W # YI SYLLABLE BBIE -A05D;W # YI SYLLABLE BBIEP -A05E;W # YI SYLLABLE BBAT -A05F;W # YI SYLLABLE BBAX -A060;W # YI SYLLABLE BBA -A061;W # YI SYLLABLE BBAP -A062;W # YI SYLLABLE BBUOX -A063;W # YI SYLLABLE BBUO -A064;W # YI SYLLABLE BBUOP -A065;W # YI SYLLABLE BBOT -A066;W # YI SYLLABLE BBOX -A067;W # YI SYLLABLE BBO -A068;W # YI SYLLABLE BBOP -A069;W # YI SYLLABLE BBEX -A06A;W # YI SYLLABLE BBE -A06B;W # YI SYLLABLE BBEP -A06C;W # YI SYLLABLE BBUT -A06D;W # YI SYLLABLE BBUX -A06E;W # YI SYLLABLE BBU -A06F;W # YI SYLLABLE BBUP -A070;W # YI SYLLABLE BBURX -A071;W # YI SYLLABLE BBUR -A072;W # YI SYLLABLE BBYT -A073;W # YI SYLLABLE BBYX -A074;W # YI SYLLABLE BBY -A075;W # YI SYLLABLE BBYP -A076;W # YI SYLLABLE NBIT -A077;W # YI SYLLABLE NBIX -A078;W # YI SYLLABLE NBI -A079;W # YI SYLLABLE NBIP -A07A;W # YI SYLLABLE NBIEX -A07B;W # YI SYLLABLE NBIE -A07C;W # YI SYLLABLE NBIEP -A07D;W # YI SYLLABLE NBAT -A07E;W # YI SYLLABLE NBAX -A07F;W # YI SYLLABLE NBA -A080;W # YI SYLLABLE NBAP -A081;W # YI SYLLABLE NBOT -A082;W # YI SYLLABLE NBOX -A083;W # YI SYLLABLE NBO -A084;W # YI SYLLABLE NBOP -A085;W # YI SYLLABLE NBUT -A086;W # YI SYLLABLE NBUX -A087;W # YI SYLLABLE NBU -A088;W # YI SYLLABLE NBUP -A089;W # YI SYLLABLE NBURX -A08A;W # YI SYLLABLE NBUR -A08B;W # YI SYLLABLE NBYT -A08C;W # YI SYLLABLE NBYX -A08D;W # YI SYLLABLE NBY -A08E;W # YI SYLLABLE NBYP -A08F;W # YI SYLLABLE NBYRX -A090;W # YI SYLLABLE NBYR -A091;W # YI SYLLABLE HMIT -A092;W # YI SYLLABLE HMIX -A093;W # YI SYLLABLE HMI -A094;W # YI SYLLABLE HMIP -A095;W # YI SYLLABLE HMIEX -A096;W # YI SYLLABLE HMIE -A097;W # YI SYLLABLE HMIEP -A098;W # YI SYLLABLE HMAT -A099;W # YI SYLLABLE HMAX -A09A;W # YI SYLLABLE HMA -A09B;W # YI SYLLABLE HMAP -A09C;W # YI SYLLABLE HMUOX -A09D;W # YI SYLLABLE HMUO -A09E;W # YI SYLLABLE HMUOP -A09F;W # YI SYLLABLE HMOT -A0A0;W # YI SYLLABLE HMOX -A0A1;W # YI SYLLABLE HMO -A0A2;W # YI SYLLABLE HMOP -A0A3;W # YI SYLLABLE HMUT -A0A4;W # YI SYLLABLE HMUX -A0A5;W # YI SYLLABLE HMU -A0A6;W # YI SYLLABLE HMUP -A0A7;W # YI SYLLABLE HMURX -A0A8;W # YI SYLLABLE HMUR -A0A9;W # YI SYLLABLE HMYX -A0AA;W # YI SYLLABLE HMY -A0AB;W # YI SYLLABLE HMYP -A0AC;W # YI SYLLABLE HMYRX -A0AD;W # YI SYLLABLE HMYR -A0AE;W # YI SYLLABLE MIT -A0AF;W # YI SYLLABLE MIX -A0B0;W # YI SYLLABLE MI -A0B1;W # YI SYLLABLE MIP -A0B2;W # YI SYLLABLE MIEX -A0B3;W # YI SYLLABLE MIE -A0B4;W # YI SYLLABLE MIEP -A0B5;W # YI SYLLABLE MAT -A0B6;W # YI SYLLABLE MAX -A0B7;W # YI SYLLABLE MA -A0B8;W # YI SYLLABLE MAP -A0B9;W # YI SYLLABLE MUOT -A0BA;W # YI SYLLABLE MUOX -A0BB;W # YI SYLLABLE MUO -A0BC;W # YI SYLLABLE MUOP -A0BD;W # YI SYLLABLE MOT -A0BE;W # YI SYLLABLE MOX -A0BF;W # YI SYLLABLE MO -A0C0;W # YI SYLLABLE MOP -A0C1;W # YI SYLLABLE MEX -A0C2;W # YI SYLLABLE ME -A0C3;W # YI SYLLABLE MUT -A0C4;W # YI SYLLABLE MUX -A0C5;W # YI SYLLABLE MU -A0C6;W # YI SYLLABLE MUP -A0C7;W # YI SYLLABLE MURX -A0C8;W # YI SYLLABLE MUR -A0C9;W # YI SYLLABLE MYT -A0CA;W # YI SYLLABLE MYX -A0CB;W # YI SYLLABLE MY -A0CC;W # YI SYLLABLE MYP -A0CD;W # YI SYLLABLE FIT -A0CE;W # YI SYLLABLE FIX -A0CF;W # YI SYLLABLE FI -A0D0;W # YI SYLLABLE FIP -A0D1;W # YI SYLLABLE FAT -A0D2;W # YI SYLLABLE FAX -A0D3;W # YI SYLLABLE FA -A0D4;W # YI SYLLABLE FAP -A0D5;W # YI SYLLABLE FOX -A0D6;W # YI SYLLABLE FO -A0D7;W # YI SYLLABLE FOP -A0D8;W # YI SYLLABLE FUT -A0D9;W # YI SYLLABLE FUX -A0DA;W # YI SYLLABLE FU -A0DB;W # YI SYLLABLE FUP -A0DC;W # YI SYLLABLE FURX -A0DD;W # YI SYLLABLE FUR -A0DE;W # YI SYLLABLE FYT -A0DF;W # YI SYLLABLE FYX -A0E0;W # YI SYLLABLE FY -A0E1;W # YI SYLLABLE FYP -A0E2;W # YI SYLLABLE VIT -A0E3;W # YI SYLLABLE VIX -A0E4;W # YI SYLLABLE VI -A0E5;W # YI SYLLABLE VIP -A0E6;W # YI SYLLABLE VIET -A0E7;W # YI SYLLABLE VIEX -A0E8;W # YI SYLLABLE VIE -A0E9;W # YI SYLLABLE VIEP -A0EA;W # YI SYLLABLE VAT -A0EB;W # YI SYLLABLE VAX -A0EC;W # YI SYLLABLE VA -A0ED;W # YI SYLLABLE VAP -A0EE;W # YI SYLLABLE VOT -A0EF;W # YI SYLLABLE VOX -A0F0;W # YI SYLLABLE VO -A0F1;W # YI SYLLABLE VOP -A0F2;W # YI SYLLABLE VEX -A0F3;W # YI SYLLABLE VEP -A0F4;W # YI SYLLABLE VUT -A0F5;W # YI SYLLABLE VUX -A0F6;W # YI SYLLABLE VU -A0F7;W # YI SYLLABLE VUP -A0F8;W # YI SYLLABLE VURX -A0F9;W # YI SYLLABLE VUR -A0FA;W # YI SYLLABLE VYT -A0FB;W # YI SYLLABLE VYX -A0FC;W # YI SYLLABLE VY -A0FD;W # YI SYLLABLE VYP -A0FE;W # YI SYLLABLE VYRX -A0FF;W # YI SYLLABLE VYR -A100;W # YI SYLLABLE DIT -A101;W # YI SYLLABLE DIX -A102;W # YI SYLLABLE DI -A103;W # YI SYLLABLE DIP -A104;W # YI SYLLABLE DIEX -A105;W # YI SYLLABLE DIE -A106;W # YI SYLLABLE DIEP -A107;W # YI SYLLABLE DAT -A108;W # YI SYLLABLE DAX -A109;W # YI SYLLABLE DA -A10A;W # YI SYLLABLE DAP -A10B;W # YI SYLLABLE DUOX -A10C;W # YI SYLLABLE DUO -A10D;W # YI SYLLABLE DOT -A10E;W # YI SYLLABLE DOX -A10F;W # YI SYLLABLE DO -A110;W # YI SYLLABLE DOP -A111;W # YI SYLLABLE DEX -A112;W # YI SYLLABLE DE -A113;W # YI SYLLABLE DEP -A114;W # YI SYLLABLE DUT -A115;W # YI SYLLABLE DUX -A116;W # YI SYLLABLE DU -A117;W # YI SYLLABLE DUP -A118;W # YI SYLLABLE DURX -A119;W # YI SYLLABLE DUR -A11A;W # YI SYLLABLE TIT -A11B;W # YI SYLLABLE TIX -A11C;W # YI SYLLABLE TI -A11D;W # YI SYLLABLE TIP -A11E;W # YI SYLLABLE TIEX -A11F;W # YI SYLLABLE TIE -A120;W # YI SYLLABLE TIEP -A121;W # YI SYLLABLE TAT -A122;W # YI SYLLABLE TAX -A123;W # YI SYLLABLE TA -A124;W # YI SYLLABLE TAP -A125;W # YI SYLLABLE TUOT -A126;W # YI SYLLABLE TUOX -A127;W # YI SYLLABLE TUO -A128;W # YI SYLLABLE TUOP -A129;W # YI SYLLABLE TOT -A12A;W # YI SYLLABLE TOX -A12B;W # YI SYLLABLE TO -A12C;W # YI SYLLABLE TOP -A12D;W # YI SYLLABLE TEX -A12E;W # YI SYLLABLE TE -A12F;W # YI SYLLABLE TEP -A130;W # YI SYLLABLE TUT -A131;W # YI SYLLABLE TUX -A132;W # YI SYLLABLE TU -A133;W # YI SYLLABLE TUP -A134;W # YI SYLLABLE TURX -A135;W # YI SYLLABLE TUR -A136;W # YI SYLLABLE DDIT -A137;W # YI SYLLABLE DDIX -A138;W # YI SYLLABLE DDI -A139;W # YI SYLLABLE DDIP -A13A;W # YI SYLLABLE DDIEX -A13B;W # YI SYLLABLE DDIE -A13C;W # YI SYLLABLE DDIEP -A13D;W # YI SYLLABLE DDAT -A13E;W # YI SYLLABLE DDAX -A13F;W # YI SYLLABLE DDA -A140;W # YI SYLLABLE DDAP -A141;W # YI SYLLABLE DDUOX -A142;W # YI SYLLABLE DDUO -A143;W # YI SYLLABLE DDUOP -A144;W # YI SYLLABLE DDOT -A145;W # YI SYLLABLE DDOX -A146;W # YI SYLLABLE DDO -A147;W # YI SYLLABLE DDOP -A148;W # YI SYLLABLE DDEX -A149;W # YI SYLLABLE DDE -A14A;W # YI SYLLABLE DDEP -A14B;W # YI SYLLABLE DDUT -A14C;W # YI SYLLABLE DDUX -A14D;W # YI SYLLABLE DDU -A14E;W # YI SYLLABLE DDUP -A14F;W # YI SYLLABLE DDURX -A150;W # YI SYLLABLE DDUR -A151;W # YI SYLLABLE NDIT -A152;W # YI SYLLABLE NDIX -A153;W # YI SYLLABLE NDI -A154;W # YI SYLLABLE NDIP -A155;W # YI SYLLABLE NDIEX -A156;W # YI SYLLABLE NDIE -A157;W # YI SYLLABLE NDAT -A158;W # YI SYLLABLE NDAX -A159;W # YI SYLLABLE NDA -A15A;W # YI SYLLABLE NDAP -A15B;W # YI SYLLABLE NDOT -A15C;W # YI SYLLABLE NDOX -A15D;W # YI SYLLABLE NDO -A15E;W # YI SYLLABLE NDOP -A15F;W # YI SYLLABLE NDEX -A160;W # YI SYLLABLE NDE -A161;W # YI SYLLABLE NDEP -A162;W # YI SYLLABLE NDUT -A163;W # YI SYLLABLE NDUX -A164;W # YI SYLLABLE NDU -A165;W # YI SYLLABLE NDUP -A166;W # YI SYLLABLE NDURX -A167;W # YI SYLLABLE NDUR -A168;W # YI SYLLABLE HNIT -A169;W # YI SYLLABLE HNIX -A16A;W # YI SYLLABLE HNI -A16B;W # YI SYLLABLE HNIP -A16C;W # YI SYLLABLE HNIET -A16D;W # YI SYLLABLE HNIEX -A16E;W # YI SYLLABLE HNIE -A16F;W # YI SYLLABLE HNIEP -A170;W # YI SYLLABLE HNAT -A171;W # YI SYLLABLE HNAX -A172;W # YI SYLLABLE HNA -A173;W # YI SYLLABLE HNAP -A174;W # YI SYLLABLE HNUOX -A175;W # YI SYLLABLE HNUO -A176;W # YI SYLLABLE HNOT -A177;W # YI SYLLABLE HNOX -A178;W # YI SYLLABLE HNOP -A179;W # YI SYLLABLE HNEX -A17A;W # YI SYLLABLE HNE -A17B;W # YI SYLLABLE HNEP -A17C;W # YI SYLLABLE HNUT -A17D;W # YI SYLLABLE NIT -A17E;W # YI SYLLABLE NIX -A17F;W # YI SYLLABLE NI -A180;W # YI SYLLABLE NIP -A181;W # YI SYLLABLE NIEX -A182;W # YI SYLLABLE NIE -A183;W # YI SYLLABLE NIEP -A184;W # YI SYLLABLE NAX -A185;W # YI SYLLABLE NA -A186;W # YI SYLLABLE NAP -A187;W # YI SYLLABLE NUOX -A188;W # YI SYLLABLE NUO -A189;W # YI SYLLABLE NUOP -A18A;W # YI SYLLABLE NOT -A18B;W # YI SYLLABLE NOX -A18C;W # YI SYLLABLE NO -A18D;W # YI SYLLABLE NOP -A18E;W # YI SYLLABLE NEX -A18F;W # YI SYLLABLE NE -A190;W # YI SYLLABLE NEP -A191;W # YI SYLLABLE NUT -A192;W # YI SYLLABLE NUX -A193;W # YI SYLLABLE NU -A194;W # YI SYLLABLE NUP -A195;W # YI SYLLABLE NURX -A196;W # YI SYLLABLE NUR -A197;W # YI SYLLABLE HLIT -A198;W # YI SYLLABLE HLIX -A199;W # YI SYLLABLE HLI -A19A;W # YI SYLLABLE HLIP -A19B;W # YI SYLLABLE HLIEX -A19C;W # YI SYLLABLE HLIE -A19D;W # YI SYLLABLE HLIEP -A19E;W # YI SYLLABLE HLAT -A19F;W # YI SYLLABLE HLAX -A1A0;W # YI SYLLABLE HLA -A1A1;W # YI SYLLABLE HLAP -A1A2;W # YI SYLLABLE HLUOX -A1A3;W # YI SYLLABLE HLUO -A1A4;W # YI SYLLABLE HLUOP -A1A5;W # YI SYLLABLE HLOX -A1A6;W # YI SYLLABLE HLO -A1A7;W # YI SYLLABLE HLOP -A1A8;W # YI SYLLABLE HLEX -A1A9;W # YI SYLLABLE HLE -A1AA;W # YI SYLLABLE HLEP -A1AB;W # YI SYLLABLE HLUT -A1AC;W # YI SYLLABLE HLUX -A1AD;W # YI SYLLABLE HLU -A1AE;W # YI SYLLABLE HLUP -A1AF;W # YI SYLLABLE HLURX -A1B0;W # YI SYLLABLE HLUR -A1B1;W # YI SYLLABLE HLYT -A1B2;W # YI SYLLABLE HLYX -A1B3;W # YI SYLLABLE HLY -A1B4;W # YI SYLLABLE HLYP -A1B5;W # YI SYLLABLE HLYRX -A1B6;W # YI SYLLABLE HLYR -A1B7;W # YI SYLLABLE LIT -A1B8;W # YI SYLLABLE LIX -A1B9;W # YI SYLLABLE LI -A1BA;W # YI SYLLABLE LIP -A1BB;W # YI SYLLABLE LIET -A1BC;W # YI SYLLABLE LIEX -A1BD;W # YI SYLLABLE LIE -A1BE;W # YI SYLLABLE LIEP -A1BF;W # YI SYLLABLE LAT -A1C0;W # YI SYLLABLE LAX -A1C1;W # YI SYLLABLE LA -A1C2;W # YI SYLLABLE LAP -A1C3;W # YI SYLLABLE LUOT -A1C4;W # YI SYLLABLE LUOX -A1C5;W # YI SYLLABLE LUO -A1C6;W # YI SYLLABLE LUOP -A1C7;W # YI SYLLABLE LOT -A1C8;W # YI SYLLABLE LOX -A1C9;W # YI SYLLABLE LO -A1CA;W # YI SYLLABLE LOP -A1CB;W # YI SYLLABLE LEX -A1CC;W # YI SYLLABLE LE -A1CD;W # YI SYLLABLE LEP -A1CE;W # YI SYLLABLE LUT -A1CF;W # YI SYLLABLE LUX -A1D0;W # YI SYLLABLE LU -A1D1;W # YI SYLLABLE LUP -A1D2;W # YI SYLLABLE LURX -A1D3;W # YI SYLLABLE LUR -A1D4;W # YI SYLLABLE LYT -A1D5;W # YI SYLLABLE LYX -A1D6;W # YI SYLLABLE LY -A1D7;W # YI SYLLABLE LYP -A1D8;W # YI SYLLABLE LYRX -A1D9;W # YI SYLLABLE LYR -A1DA;W # YI SYLLABLE GIT -A1DB;W # YI SYLLABLE GIX -A1DC;W # YI SYLLABLE GI -A1DD;W # YI SYLLABLE GIP -A1DE;W # YI SYLLABLE GIET -A1DF;W # YI SYLLABLE GIEX -A1E0;W # YI SYLLABLE GIE -A1E1;W # YI SYLLABLE GIEP -A1E2;W # YI SYLLABLE GAT -A1E3;W # YI SYLLABLE GAX -A1E4;W # YI SYLLABLE GA -A1E5;W # YI SYLLABLE GAP -A1E6;W # YI SYLLABLE GUOT -A1E7;W # YI SYLLABLE GUOX -A1E8;W # YI SYLLABLE GUO -A1E9;W # YI SYLLABLE GUOP -A1EA;W # YI SYLLABLE GOT -A1EB;W # YI SYLLABLE GOX -A1EC;W # YI SYLLABLE GO -A1ED;W # YI SYLLABLE GOP -A1EE;W # YI SYLLABLE GET -A1EF;W # YI SYLLABLE GEX -A1F0;W # YI SYLLABLE GE -A1F1;W # YI SYLLABLE GEP -A1F2;W # YI SYLLABLE GUT -A1F3;W # YI SYLLABLE GUX -A1F4;W # YI SYLLABLE GU -A1F5;W # YI SYLLABLE GUP -A1F6;W # YI SYLLABLE GURX -A1F7;W # YI SYLLABLE GUR -A1F8;W # YI SYLLABLE KIT -A1F9;W # YI SYLLABLE KIX -A1FA;W # YI SYLLABLE KI -A1FB;W # YI SYLLABLE KIP -A1FC;W # YI SYLLABLE KIEX -A1FD;W # YI SYLLABLE KIE -A1FE;W # YI SYLLABLE KIEP -A1FF;W # YI SYLLABLE KAT -A200;W # YI SYLLABLE KAX -A201;W # YI SYLLABLE KA -A202;W # YI SYLLABLE KAP -A203;W # YI SYLLABLE KUOX -A204;W # YI SYLLABLE KUO -A205;W # YI SYLLABLE KUOP -A206;W # YI SYLLABLE KOT -A207;W # YI SYLLABLE KOX -A208;W # YI SYLLABLE KO -A209;W # YI SYLLABLE KOP -A20A;W # YI SYLLABLE KET -A20B;W # YI SYLLABLE KEX -A20C;W # YI SYLLABLE KE -A20D;W # YI SYLLABLE KEP -A20E;W # YI SYLLABLE KUT -A20F;W # YI SYLLABLE KUX -A210;W # YI SYLLABLE KU -A211;W # YI SYLLABLE KUP -A212;W # YI SYLLABLE KURX -A213;W # YI SYLLABLE KUR -A214;W # YI SYLLABLE GGIT -A215;W # YI SYLLABLE GGIX -A216;W # YI SYLLABLE GGI -A217;W # YI SYLLABLE GGIEX -A218;W # YI SYLLABLE GGIE -A219;W # YI SYLLABLE GGIEP -A21A;W # YI SYLLABLE GGAT -A21B;W # YI SYLLABLE GGAX -A21C;W # YI SYLLABLE GGA -A21D;W # YI SYLLABLE GGAP -A21E;W # YI SYLLABLE GGUOT -A21F;W # YI SYLLABLE GGUOX -A220;W # YI SYLLABLE GGUO -A221;W # YI SYLLABLE GGUOP -A222;W # YI SYLLABLE GGOT -A223;W # YI SYLLABLE GGOX -A224;W # YI SYLLABLE GGO -A225;W # YI SYLLABLE GGOP -A226;W # YI SYLLABLE GGET -A227;W # YI SYLLABLE GGEX -A228;W # YI SYLLABLE GGE -A229;W # YI SYLLABLE GGEP -A22A;W # YI SYLLABLE GGUT -A22B;W # YI SYLLABLE GGUX -A22C;W # YI SYLLABLE GGU -A22D;W # YI SYLLABLE GGUP -A22E;W # YI SYLLABLE GGURX -A22F;W # YI SYLLABLE GGUR -A230;W # YI SYLLABLE MGIEX -A231;W # YI SYLLABLE MGIE -A232;W # YI SYLLABLE MGAT -A233;W # YI SYLLABLE MGAX -A234;W # YI SYLLABLE MGA -A235;W # YI SYLLABLE MGAP -A236;W # YI SYLLABLE MGUOX -A237;W # YI SYLLABLE MGUO -A238;W # YI SYLLABLE MGUOP -A239;W # YI SYLLABLE MGOT -A23A;W # YI SYLLABLE MGOX -A23B;W # YI SYLLABLE MGO -A23C;W # YI SYLLABLE MGOP -A23D;W # YI SYLLABLE MGEX -A23E;W # YI SYLLABLE MGE -A23F;W # YI SYLLABLE MGEP -A240;W # YI SYLLABLE MGUT -A241;W # YI SYLLABLE MGUX -A242;W # YI SYLLABLE MGU -A243;W # YI SYLLABLE MGUP -A244;W # YI SYLLABLE MGURX -A245;W # YI SYLLABLE MGUR -A246;W # YI SYLLABLE HXIT -A247;W # YI SYLLABLE HXIX -A248;W # YI SYLLABLE HXI -A249;W # YI SYLLABLE HXIP -A24A;W # YI SYLLABLE HXIET -A24B;W # YI SYLLABLE HXIEX -A24C;W # YI SYLLABLE HXIE -A24D;W # YI SYLLABLE HXIEP -A24E;W # YI SYLLABLE HXAT -A24F;W # YI SYLLABLE HXAX -A250;W # YI SYLLABLE HXA -A251;W # YI SYLLABLE HXAP -A252;W # YI SYLLABLE HXUOT -A253;W # YI SYLLABLE HXUOX -A254;W # YI SYLLABLE HXUO -A255;W # YI SYLLABLE HXUOP -A256;W # YI SYLLABLE HXOT -A257;W # YI SYLLABLE HXOX -A258;W # YI SYLLABLE HXO -A259;W # YI SYLLABLE HXOP -A25A;W # YI SYLLABLE HXEX -A25B;W # YI SYLLABLE HXE -A25C;W # YI SYLLABLE HXEP -A25D;W # YI SYLLABLE NGIEX -A25E;W # YI SYLLABLE NGIE -A25F;W # YI SYLLABLE NGIEP -A260;W # YI SYLLABLE NGAT -A261;W # YI SYLLABLE NGAX -A262;W # YI SYLLABLE NGA -A263;W # YI SYLLABLE NGAP -A264;W # YI SYLLABLE NGUOT -A265;W # YI SYLLABLE NGUOX -A266;W # YI SYLLABLE NGUO -A267;W # YI SYLLABLE NGOT -A268;W # YI SYLLABLE NGOX -A269;W # YI SYLLABLE NGO -A26A;W # YI SYLLABLE NGOP -A26B;W # YI SYLLABLE NGEX -A26C;W # YI SYLLABLE NGE -A26D;W # YI SYLLABLE NGEP -A26E;W # YI SYLLABLE HIT -A26F;W # YI SYLLABLE HIEX -A270;W # YI SYLLABLE HIE -A271;W # YI SYLLABLE HAT -A272;W # YI SYLLABLE HAX -A273;W # YI SYLLABLE HA -A274;W # YI SYLLABLE HAP -A275;W # YI SYLLABLE HUOT -A276;W # YI SYLLABLE HUOX -A277;W # YI SYLLABLE HUO -A278;W # YI SYLLABLE HUOP -A279;W # YI SYLLABLE HOT -A27A;W # YI SYLLABLE HOX -A27B;W # YI SYLLABLE HO -A27C;W # YI SYLLABLE HOP -A27D;W # YI SYLLABLE HEX -A27E;W # YI SYLLABLE HE -A27F;W # YI SYLLABLE HEP -A280;W # YI SYLLABLE WAT -A281;W # YI SYLLABLE WAX -A282;W # YI SYLLABLE WA -A283;W # YI SYLLABLE WAP -A284;W # YI SYLLABLE WUOX -A285;W # YI SYLLABLE WUO -A286;W # YI SYLLABLE WUOP -A287;W # YI SYLLABLE WOX -A288;W # YI SYLLABLE WO -A289;W # YI SYLLABLE WOP -A28A;W # YI SYLLABLE WEX -A28B;W # YI SYLLABLE WE -A28C;W # YI SYLLABLE WEP -A28D;W # YI SYLLABLE ZIT -A28E;W # YI SYLLABLE ZIX -A28F;W # YI SYLLABLE ZI -A290;W # YI SYLLABLE ZIP -A291;W # YI SYLLABLE ZIEX -A292;W # YI SYLLABLE ZIE -A293;W # YI SYLLABLE ZIEP -A294;W # YI SYLLABLE ZAT -A295;W # YI SYLLABLE ZAX -A296;W # YI SYLLABLE ZA -A297;W # YI SYLLABLE ZAP -A298;W # YI SYLLABLE ZUOX -A299;W # YI SYLLABLE ZUO -A29A;W # YI SYLLABLE ZUOP -A29B;W # YI SYLLABLE ZOT -A29C;W # YI SYLLABLE ZOX -A29D;W # YI SYLLABLE ZO -A29E;W # YI SYLLABLE ZOP -A29F;W # YI SYLLABLE ZEX -A2A0;W # YI SYLLABLE ZE -A2A1;W # YI SYLLABLE ZEP -A2A2;W # YI SYLLABLE ZUT -A2A3;W # YI SYLLABLE ZUX -A2A4;W # YI SYLLABLE ZU -A2A5;W # YI SYLLABLE ZUP -A2A6;W # YI SYLLABLE ZURX -A2A7;W # YI SYLLABLE ZUR -A2A8;W # YI SYLLABLE ZYT -A2A9;W # YI SYLLABLE ZYX -A2AA;W # YI SYLLABLE ZY -A2AB;W # YI SYLLABLE ZYP -A2AC;W # YI SYLLABLE ZYRX -A2AD;W # YI SYLLABLE ZYR -A2AE;W # YI SYLLABLE CIT -A2AF;W # YI SYLLABLE CIX -A2B0;W # YI SYLLABLE CI -A2B1;W # YI SYLLABLE CIP -A2B2;W # YI SYLLABLE CIET -A2B3;W # YI SYLLABLE CIEX -A2B4;W # YI SYLLABLE CIE -A2B5;W # YI SYLLABLE CIEP -A2B6;W # YI SYLLABLE CAT -A2B7;W # YI SYLLABLE CAX -A2B8;W # YI SYLLABLE CA -A2B9;W # YI SYLLABLE CAP -A2BA;W # YI SYLLABLE CUOX -A2BB;W # YI SYLLABLE CUO -A2BC;W # YI SYLLABLE CUOP -A2BD;W # YI SYLLABLE COT -A2BE;W # YI SYLLABLE COX -A2BF;W # YI SYLLABLE CO -A2C0;W # YI SYLLABLE COP -A2C1;W # YI SYLLABLE CEX -A2C2;W # YI SYLLABLE CE -A2C3;W # YI SYLLABLE CEP -A2C4;W # YI SYLLABLE CUT -A2C5;W # YI SYLLABLE CUX -A2C6;W # YI SYLLABLE CU -A2C7;W # YI SYLLABLE CUP -A2C8;W # YI SYLLABLE CURX -A2C9;W # YI SYLLABLE CUR -A2CA;W # YI SYLLABLE CYT -A2CB;W # YI SYLLABLE CYX -A2CC;W # YI SYLLABLE CY -A2CD;W # YI SYLLABLE CYP -A2CE;W # YI SYLLABLE CYRX -A2CF;W # YI SYLLABLE CYR -A2D0;W # YI SYLLABLE ZZIT -A2D1;W # YI SYLLABLE ZZIX -A2D2;W # YI SYLLABLE ZZI -A2D3;W # YI SYLLABLE ZZIP -A2D4;W # YI SYLLABLE ZZIET -A2D5;W # YI SYLLABLE ZZIEX -A2D6;W # YI SYLLABLE ZZIE -A2D7;W # YI SYLLABLE ZZIEP -A2D8;W # YI SYLLABLE ZZAT -A2D9;W # YI SYLLABLE ZZAX -A2DA;W # YI SYLLABLE ZZA -A2DB;W # YI SYLLABLE ZZAP -A2DC;W # YI SYLLABLE ZZOX -A2DD;W # YI SYLLABLE ZZO -A2DE;W # YI SYLLABLE ZZOP -A2DF;W # YI SYLLABLE ZZEX -A2E0;W # YI SYLLABLE ZZE -A2E1;W # YI SYLLABLE ZZEP -A2E2;W # YI SYLLABLE ZZUX -A2E3;W # YI SYLLABLE ZZU -A2E4;W # YI SYLLABLE ZZUP -A2E5;W # YI SYLLABLE ZZURX -A2E6;W # YI SYLLABLE ZZUR -A2E7;W # YI SYLLABLE ZZYT -A2E8;W # YI SYLLABLE ZZYX -A2E9;W # YI SYLLABLE ZZY -A2EA;W # YI SYLLABLE ZZYP -A2EB;W # YI SYLLABLE ZZYRX -A2EC;W # YI SYLLABLE ZZYR -A2ED;W # YI SYLLABLE NZIT -A2EE;W # YI SYLLABLE NZIX -A2EF;W # YI SYLLABLE NZI -A2F0;W # YI SYLLABLE NZIP -A2F1;W # YI SYLLABLE NZIEX -A2F2;W # YI SYLLABLE NZIE -A2F3;W # YI SYLLABLE NZIEP -A2F4;W # YI SYLLABLE NZAT -A2F5;W # YI SYLLABLE NZAX -A2F6;W # YI SYLLABLE NZA -A2F7;W # YI SYLLABLE NZAP -A2F8;W # YI SYLLABLE NZUOX -A2F9;W # YI SYLLABLE NZUO -A2FA;W # YI SYLLABLE NZOX -A2FB;W # YI SYLLABLE NZOP -A2FC;W # YI SYLLABLE NZEX -A2FD;W # YI SYLLABLE NZE -A2FE;W # YI SYLLABLE NZUX -A2FF;W # YI SYLLABLE NZU -A300;W # YI SYLLABLE NZUP -A301;W # YI SYLLABLE NZURX -A302;W # YI SYLLABLE NZUR -A303;W # YI SYLLABLE NZYT -A304;W # YI SYLLABLE NZYX -A305;W # YI SYLLABLE NZY -A306;W # YI SYLLABLE NZYP -A307;W # YI SYLLABLE NZYRX -A308;W # YI SYLLABLE NZYR -A309;W # YI SYLLABLE SIT -A30A;W # YI SYLLABLE SIX -A30B;W # YI SYLLABLE SI -A30C;W # YI SYLLABLE SIP -A30D;W # YI SYLLABLE SIEX -A30E;W # YI SYLLABLE SIE -A30F;W # YI SYLLABLE SIEP -A310;W # YI SYLLABLE SAT -A311;W # YI SYLLABLE SAX -A312;W # YI SYLLABLE SA -A313;W # YI SYLLABLE SAP -A314;W # YI SYLLABLE SUOX -A315;W # YI SYLLABLE SUO -A316;W # YI SYLLABLE SUOP -A317;W # YI SYLLABLE SOT -A318;W # YI SYLLABLE SOX -A319;W # YI SYLLABLE SO -A31A;W # YI SYLLABLE SOP -A31B;W # YI SYLLABLE SEX -A31C;W # YI SYLLABLE SE -A31D;W # YI SYLLABLE SEP -A31E;W # YI SYLLABLE SUT -A31F;W # YI SYLLABLE SUX -A320;W # YI SYLLABLE SU -A321;W # YI SYLLABLE SUP -A322;W # YI SYLLABLE SURX -A323;W # YI SYLLABLE SUR -A324;W # YI SYLLABLE SYT -A325;W # YI SYLLABLE SYX -A326;W # YI SYLLABLE SY -A327;W # YI SYLLABLE SYP -A328;W # YI SYLLABLE SYRX -A329;W # YI SYLLABLE SYR -A32A;W # YI SYLLABLE SSIT -A32B;W # YI SYLLABLE SSIX -A32C;W # YI SYLLABLE SSI -A32D;W # YI SYLLABLE SSIP -A32E;W # YI SYLLABLE SSIEX -A32F;W # YI SYLLABLE SSIE -A330;W # YI SYLLABLE SSIEP -A331;W # YI SYLLABLE SSAT -A332;W # YI SYLLABLE SSAX -A333;W # YI SYLLABLE SSA -A334;W # YI SYLLABLE SSAP -A335;W # YI SYLLABLE SSOT -A336;W # YI SYLLABLE SSOX -A337;W # YI SYLLABLE SSO -A338;W # YI SYLLABLE SSOP -A339;W # YI SYLLABLE SSEX -A33A;W # YI SYLLABLE SSE -A33B;W # YI SYLLABLE SSEP -A33C;W # YI SYLLABLE SSUT -A33D;W # YI SYLLABLE SSUX -A33E;W # YI SYLLABLE SSU -A33F;W # YI SYLLABLE SSUP -A340;W # YI SYLLABLE SSYT -A341;W # YI SYLLABLE SSYX -A342;W # YI SYLLABLE SSY -A343;W # YI SYLLABLE SSYP -A344;W # YI SYLLABLE SSYRX -A345;W # YI SYLLABLE SSYR -A346;W # YI SYLLABLE ZHAT -A347;W # YI SYLLABLE ZHAX -A348;W # YI SYLLABLE ZHA -A349;W # YI SYLLABLE ZHAP -A34A;W # YI SYLLABLE ZHUOX -A34B;W # YI SYLLABLE ZHUO -A34C;W # YI SYLLABLE ZHUOP -A34D;W # YI SYLLABLE ZHOT -A34E;W # YI SYLLABLE ZHOX -A34F;W # YI SYLLABLE ZHO -A350;W # YI SYLLABLE ZHOP -A351;W # YI SYLLABLE ZHET -A352;W # YI SYLLABLE ZHEX -A353;W # YI SYLLABLE ZHE -A354;W # YI SYLLABLE ZHEP -A355;W # YI SYLLABLE ZHUT -A356;W # YI SYLLABLE ZHUX -A357;W # YI SYLLABLE ZHU -A358;W # YI SYLLABLE ZHUP -A359;W # YI SYLLABLE ZHURX -A35A;W # YI SYLLABLE ZHUR -A35B;W # YI SYLLABLE ZHYT -A35C;W # YI SYLLABLE ZHYX -A35D;W # YI SYLLABLE ZHY -A35E;W # YI SYLLABLE ZHYP -A35F;W # YI SYLLABLE ZHYRX -A360;W # YI SYLLABLE ZHYR -A361;W # YI SYLLABLE CHAT -A362;W # YI SYLLABLE CHAX -A363;W # YI SYLLABLE CHA -A364;W # YI SYLLABLE CHAP -A365;W # YI SYLLABLE CHUOT -A366;W # YI SYLLABLE CHUOX -A367;W # YI SYLLABLE CHUO -A368;W # YI SYLLABLE CHUOP -A369;W # YI SYLLABLE CHOT -A36A;W # YI SYLLABLE CHOX -A36B;W # YI SYLLABLE CHO -A36C;W # YI SYLLABLE CHOP -A36D;W # YI SYLLABLE CHET -A36E;W # YI SYLLABLE CHEX -A36F;W # YI SYLLABLE CHE -A370;W # YI SYLLABLE CHEP -A371;W # YI SYLLABLE CHUX -A372;W # YI SYLLABLE CHU -A373;W # YI SYLLABLE CHUP -A374;W # YI SYLLABLE CHURX -A375;W # YI SYLLABLE CHUR -A376;W # YI SYLLABLE CHYT -A377;W # YI SYLLABLE CHYX -A378;W # YI SYLLABLE CHY -A379;W # YI SYLLABLE CHYP -A37A;W # YI SYLLABLE CHYRX -A37B;W # YI SYLLABLE CHYR -A37C;W # YI SYLLABLE RRAX -A37D;W # YI SYLLABLE RRA -A37E;W # YI SYLLABLE RRUOX -A37F;W # YI SYLLABLE RRUO -A380;W # YI SYLLABLE RROT -A381;W # YI SYLLABLE RROX -A382;W # YI SYLLABLE RRO -A383;W # YI SYLLABLE RROP -A384;W # YI SYLLABLE RRET -A385;W # YI SYLLABLE RREX -A386;W # YI SYLLABLE RRE -A387;W # YI SYLLABLE RREP -A388;W # YI SYLLABLE RRUT -A389;W # YI SYLLABLE RRUX -A38A;W # YI SYLLABLE RRU -A38B;W # YI SYLLABLE RRUP -A38C;W # YI SYLLABLE RRURX -A38D;W # YI SYLLABLE RRUR -A38E;W # YI SYLLABLE RRYT -A38F;W # YI SYLLABLE RRYX -A390;W # YI SYLLABLE RRY -A391;W # YI SYLLABLE RRYP -A392;W # YI SYLLABLE RRYRX -A393;W # YI SYLLABLE RRYR -A394;W # YI SYLLABLE NRAT -A395;W # YI SYLLABLE NRAX -A396;W # YI SYLLABLE NRA -A397;W # YI SYLLABLE NRAP -A398;W # YI SYLLABLE NROX -A399;W # YI SYLLABLE NRO -A39A;W # YI SYLLABLE NROP -A39B;W # YI SYLLABLE NRET -A39C;W # YI SYLLABLE NREX -A39D;W # YI SYLLABLE NRE -A39E;W # YI SYLLABLE NREP -A39F;W # YI SYLLABLE NRUT -A3A0;W # YI SYLLABLE NRUX -A3A1;W # YI SYLLABLE NRU -A3A2;W # YI SYLLABLE NRUP -A3A3;W # YI SYLLABLE NRURX -A3A4;W # YI SYLLABLE NRUR -A3A5;W # YI SYLLABLE NRYT -A3A6;W # YI SYLLABLE NRYX -A3A7;W # YI SYLLABLE NRY -A3A8;W # YI SYLLABLE NRYP -A3A9;W # YI SYLLABLE NRYRX -A3AA;W # YI SYLLABLE NRYR -A3AB;W # YI SYLLABLE SHAT -A3AC;W # YI SYLLABLE SHAX -A3AD;W # YI SYLLABLE SHA -A3AE;W # YI SYLLABLE SHAP -A3AF;W # YI SYLLABLE SHUOX -A3B0;W # YI SYLLABLE SHUO -A3B1;W # YI SYLLABLE SHUOP -A3B2;W # YI SYLLABLE SHOT -A3B3;W # YI SYLLABLE SHOX -A3B4;W # YI SYLLABLE SHO -A3B5;W # YI SYLLABLE SHOP -A3B6;W # YI SYLLABLE SHET -A3B7;W # YI SYLLABLE SHEX -A3B8;W # YI SYLLABLE SHE -A3B9;W # YI SYLLABLE SHEP -A3BA;W # YI SYLLABLE SHUT -A3BB;W # YI SYLLABLE SHUX -A3BC;W # YI SYLLABLE SHU -A3BD;W # YI SYLLABLE SHUP -A3BE;W # YI SYLLABLE SHURX -A3BF;W # YI SYLLABLE SHUR -A3C0;W # YI SYLLABLE SHYT -A3C1;W # YI SYLLABLE SHYX -A3C2;W # YI SYLLABLE SHY -A3C3;W # YI SYLLABLE SHYP -A3C4;W # YI SYLLABLE SHYRX -A3C5;W # YI SYLLABLE SHYR -A3C6;W # YI SYLLABLE RAT -A3C7;W # YI SYLLABLE RAX -A3C8;W # YI SYLLABLE RA -A3C9;W # YI SYLLABLE RAP -A3CA;W # YI SYLLABLE RUOX -A3CB;W # YI SYLLABLE RUO -A3CC;W # YI SYLLABLE RUOP -A3CD;W # YI SYLLABLE ROT -A3CE;W # YI SYLLABLE ROX -A3CF;W # YI SYLLABLE RO -A3D0;W # YI SYLLABLE ROP -A3D1;W # YI SYLLABLE REX -A3D2;W # YI SYLLABLE RE -A3D3;W # YI SYLLABLE REP -A3D4;W # YI SYLLABLE RUT -A3D5;W # YI SYLLABLE RUX -A3D6;W # YI SYLLABLE RU -A3D7;W # YI SYLLABLE RUP -A3D8;W # YI SYLLABLE RURX -A3D9;W # YI SYLLABLE RUR -A3DA;W # YI SYLLABLE RYT -A3DB;W # YI SYLLABLE RYX -A3DC;W # YI SYLLABLE RY -A3DD;W # YI SYLLABLE RYP -A3DE;W # YI SYLLABLE RYRX -A3DF;W # YI SYLLABLE RYR -A3E0;W # YI SYLLABLE JIT -A3E1;W # YI SYLLABLE JIX -A3E2;W # YI SYLLABLE JI -A3E3;W # YI SYLLABLE JIP -A3E4;W # YI SYLLABLE JIET -A3E5;W # YI SYLLABLE JIEX -A3E6;W # YI SYLLABLE JIE -A3E7;W # YI SYLLABLE JIEP -A3E8;W # YI SYLLABLE JUOT -A3E9;W # YI SYLLABLE JUOX -A3EA;W # YI SYLLABLE JUO -A3EB;W # YI SYLLABLE JUOP -A3EC;W # YI SYLLABLE JOT -A3ED;W # YI SYLLABLE JOX -A3EE;W # YI SYLLABLE JO -A3EF;W # YI SYLLABLE JOP -A3F0;W # YI SYLLABLE JUT -A3F1;W # YI SYLLABLE JUX -A3F2;W # YI SYLLABLE JU -A3F3;W # YI SYLLABLE JUP -A3F4;W # YI SYLLABLE JURX -A3F5;W # YI SYLLABLE JUR -A3F6;W # YI SYLLABLE JYT -A3F7;W # YI SYLLABLE JYX -A3F8;W # YI SYLLABLE JY -A3F9;W # YI SYLLABLE JYP -A3FA;W # YI SYLLABLE JYRX -A3FB;W # YI SYLLABLE JYR -A3FC;W # YI SYLLABLE QIT -A3FD;W # YI SYLLABLE QIX -A3FE;W # YI SYLLABLE QI -A3FF;W # YI SYLLABLE QIP -A400;W # YI SYLLABLE QIET -A401;W # YI SYLLABLE QIEX -A402;W # YI SYLLABLE QIE -A403;W # YI SYLLABLE QIEP -A404;W # YI SYLLABLE QUOT -A405;W # YI SYLLABLE QUOX -A406;W # YI SYLLABLE QUO -A407;W # YI SYLLABLE QUOP -A408;W # YI SYLLABLE QOT -A409;W # YI SYLLABLE QOX -A40A;W # YI SYLLABLE QO -A40B;W # YI SYLLABLE QOP -A40C;W # YI SYLLABLE QUT -A40D;W # YI SYLLABLE QUX -A40E;W # YI SYLLABLE QU -A40F;W # YI SYLLABLE QUP -A410;W # YI SYLLABLE QURX -A411;W # YI SYLLABLE QUR -A412;W # YI SYLLABLE QYT -A413;W # YI SYLLABLE QYX -A414;W # YI SYLLABLE QY -A415;W # YI SYLLABLE QYP -A416;W # YI SYLLABLE QYRX -A417;W # YI SYLLABLE QYR -A418;W # YI SYLLABLE JJIT -A419;W # YI SYLLABLE JJIX -A41A;W # YI SYLLABLE JJI -A41B;W # YI SYLLABLE JJIP -A41C;W # YI SYLLABLE JJIET -A41D;W # YI SYLLABLE JJIEX -A41E;W # YI SYLLABLE JJIE -A41F;W # YI SYLLABLE JJIEP -A420;W # YI SYLLABLE JJUOX -A421;W # YI SYLLABLE JJUO -A422;W # YI SYLLABLE JJUOP -A423;W # YI SYLLABLE JJOT -A424;W # YI SYLLABLE JJOX -A425;W # YI SYLLABLE JJO -A426;W # YI SYLLABLE JJOP -A427;W # YI SYLLABLE JJUT -A428;W # YI SYLLABLE JJUX -A429;W # YI SYLLABLE JJU -A42A;W # YI SYLLABLE JJUP -A42B;W # YI SYLLABLE JJURX -A42C;W # YI SYLLABLE JJUR -A42D;W # YI SYLLABLE JJYT -A42E;W # YI SYLLABLE JJYX -A42F;W # YI SYLLABLE JJY -A430;W # YI SYLLABLE JJYP -A431;W # YI SYLLABLE NJIT -A432;W # YI SYLLABLE NJIX -A433;W # YI SYLLABLE NJI -A434;W # YI SYLLABLE NJIP -A435;W # YI SYLLABLE NJIET -A436;W # YI SYLLABLE NJIEX -A437;W # YI SYLLABLE NJIE -A438;W # YI SYLLABLE NJIEP -A439;W # YI SYLLABLE NJUOX -A43A;W # YI SYLLABLE NJUO -A43B;W # YI SYLLABLE NJOT -A43C;W # YI SYLLABLE NJOX -A43D;W # YI SYLLABLE NJO -A43E;W # YI SYLLABLE NJOP -A43F;W # YI SYLLABLE NJUX -A440;W # YI SYLLABLE NJU -A441;W # YI SYLLABLE NJUP -A442;W # YI SYLLABLE NJURX -A443;W # YI SYLLABLE NJUR -A444;W # YI SYLLABLE NJYT -A445;W # YI SYLLABLE NJYX -A446;W # YI SYLLABLE NJY -A447;W # YI SYLLABLE NJYP -A448;W # YI SYLLABLE NJYRX -A449;W # YI SYLLABLE NJYR -A44A;W # YI SYLLABLE NYIT -A44B;W # YI SYLLABLE NYIX -A44C;W # YI SYLLABLE NYI -A44D;W # YI SYLLABLE NYIP -A44E;W # YI SYLLABLE NYIET -A44F;W # YI SYLLABLE NYIEX -A450;W # YI SYLLABLE NYIE -A451;W # YI SYLLABLE NYIEP -A452;W # YI SYLLABLE NYUOX -A453;W # YI SYLLABLE NYUO -A454;W # YI SYLLABLE NYUOP -A455;W # YI SYLLABLE NYOT -A456;W # YI SYLLABLE NYOX -A457;W # YI SYLLABLE NYO -A458;W # YI SYLLABLE NYOP -A459;W # YI SYLLABLE NYUT -A45A;W # YI SYLLABLE NYUX -A45B;W # YI SYLLABLE NYU -A45C;W # YI SYLLABLE NYUP -A45D;W # YI SYLLABLE XIT -A45E;W # YI SYLLABLE XIX -A45F;W # YI SYLLABLE XI -A460;W # YI SYLLABLE XIP -A461;W # YI SYLLABLE XIET -A462;W # YI SYLLABLE XIEX -A463;W # YI SYLLABLE XIE -A464;W # YI SYLLABLE XIEP -A465;W # YI SYLLABLE XUOX -A466;W # YI SYLLABLE XUO -A467;W # YI SYLLABLE XOT -A468;W # YI SYLLABLE XOX -A469;W # YI SYLLABLE XO -A46A;W # YI SYLLABLE XOP -A46B;W # YI SYLLABLE XYT -A46C;W # YI SYLLABLE XYX -A46D;W # YI SYLLABLE XY -A46E;W # YI SYLLABLE XYP -A46F;W # YI SYLLABLE XYRX -A470;W # YI SYLLABLE XYR -A471;W # YI SYLLABLE YIT -A472;W # YI SYLLABLE YIX -A473;W # YI SYLLABLE YI -A474;W # YI SYLLABLE YIP -A475;W # YI SYLLABLE YIET -A476;W # YI SYLLABLE YIEX -A477;W # YI SYLLABLE YIE -A478;W # YI SYLLABLE YIEP -A479;W # YI SYLLABLE YUOT -A47A;W # YI SYLLABLE YUOX -A47B;W # YI SYLLABLE YUO -A47C;W # YI SYLLABLE YUOP -A47D;W # YI SYLLABLE YOT -A47E;W # YI SYLLABLE YOX -A47F;W # YI SYLLABLE YO -A480;W # YI SYLLABLE YOP -A481;W # YI SYLLABLE YUT -A482;W # YI SYLLABLE YUX -A483;W # YI SYLLABLE YU -A484;W # YI SYLLABLE YUP -A485;W # YI SYLLABLE YURX -A486;W # YI SYLLABLE YUR -A487;W # YI SYLLABLE YYT -A488;W # YI SYLLABLE YYX -A489;W # YI SYLLABLE YY -A48A;W # YI SYLLABLE YYP -A48B;W # YI SYLLABLE YYRX -A48C;W # YI SYLLABLE YYR -A490;W # YI RADICAL QOT -A491;W # YI RADICAL LI -A492;W # YI RADICAL KIT -A493;W # YI RADICAL NYIP -A494;W # YI RADICAL CYP -A495;W # YI RADICAL SSI -A496;W # YI RADICAL GGOP -A497;W # YI RADICAL GEP -A498;W # YI RADICAL MI -A499;W # YI RADICAL HXIT -A49A;W # YI RADICAL LYR -A49B;W # YI RADICAL BBUT -A49C;W # YI RADICAL MOP -A49D;W # YI RADICAL YO -A49E;W # YI RADICAL PUT -A49F;W # YI RADICAL HXUO -A4A0;W # YI RADICAL TAT -A4A1;W # YI RADICAL GA -A4A2;W # YI RADICAL ZUP -A4A3;W # YI RADICAL CYT -A4A4;W # YI RADICAL DDUR -A4A5;W # YI RADICAL BUR -A4A6;W # YI RADICAL GGUO -A4A7;W # YI RADICAL NYOP -A4A8;W # YI RADICAL TU -A4A9;W # YI RADICAL OP -A4AA;W # YI RADICAL JJUT -A4AB;W # YI RADICAL ZOT -A4AC;W # YI RADICAL PYT -A4AD;W # YI RADICAL HMO -A4AE;W # YI RADICAL YIT -A4AF;W # YI RADICAL VUR -A4B0;W # YI RADICAL SHY -A4B1;W # YI RADICAL VEP -A4B2;W # YI RADICAL ZA -A4B3;W # YI RADICAL JO -A4B4;W # YI RADICAL NZUP -A4B5;W # YI RADICAL JJY -A4B6;W # YI RADICAL GOT -A4B7;W # YI RADICAL JJIE -A4B8;W # YI RADICAL WO -A4B9;W # YI RADICAL DU -A4BA;W # YI RADICAL SHUR -A4BB;W # YI RADICAL LIE -A4BC;W # YI RADICAL CY -A4BD;W # YI RADICAL CUOP -A4BE;W # YI RADICAL CIP -A4BF;W # YI RADICAL HXOP -A4C0;W # YI RADICAL SHAT -A4C1;W # YI RADICAL ZUR -A4C2;W # YI RADICAL SHOP -A4C3;W # YI RADICAL CHE -A4C4;W # YI RADICAL ZZIET -A4C5;W # YI RADICAL NBIE -A4C6;W # YI RADICAL KE -A700;N # MODIFIER LETTER CHINESE TONE YIN PING -A701;N # MODIFIER LETTER CHINESE TONE YANG PING -A702;N # MODIFIER LETTER CHINESE TONE YIN SHANG -A703;N # MODIFIER LETTER CHINESE TONE YANG SHANG -A704;N # MODIFIER LETTER CHINESE TONE YIN QU -A705;N # MODIFIER LETTER CHINESE TONE YANG QU -A706;N # MODIFIER LETTER CHINESE TONE YIN RU -A707;N # MODIFIER LETTER CHINESE TONE YANG RU -A708;N # MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR -A709;N # MODIFIER LETTER HIGH DOTTED TONE BAR -A70A;N # MODIFIER LETTER MID DOTTED TONE BAR -A70B;N # MODIFIER LETTER LOW DOTTED TONE BAR -A70C;N # MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR -A70D;N # MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR -A70E;N # MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR -A70F;N # MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR -A710;N # MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR -A711;N # MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR -A712;N # MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR -A713;N # MODIFIER LETTER HIGH LEFT-STEM TONE BAR -A714;N # MODIFIER LETTER MID LEFT-STEM TONE BAR -A715;N # MODIFIER LETTER LOW LEFT-STEM TONE BAR -A716;N # MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR -A800;N # SYLOTI NAGRI LETTER A -A801;N # SYLOTI NAGRI LETTER I -A802;N # SYLOTI NAGRI SIGN DVISVARA -A803;N # SYLOTI NAGRI LETTER U -A804;N # SYLOTI NAGRI LETTER E -A805;N # SYLOTI NAGRI LETTER O -A806;N # SYLOTI NAGRI SIGN HASANTA -A807;N # SYLOTI NAGRI LETTER KO -A808;N # SYLOTI NAGRI LETTER KHO -A809;N # SYLOTI NAGRI LETTER GO -A80A;N # SYLOTI NAGRI LETTER GHO -A80B;N # SYLOTI NAGRI SIGN ANUSVARA -A80C;N # SYLOTI NAGRI LETTER CO -A80D;N # SYLOTI NAGRI LETTER CHO -A80E;N # SYLOTI NAGRI LETTER JO -A80F;N # SYLOTI NAGRI LETTER JHO -A810;N # SYLOTI NAGRI LETTER TTO -A811;N # SYLOTI NAGRI LETTER TTHO -A812;N # SYLOTI NAGRI LETTER DDO -A813;N # SYLOTI NAGRI LETTER DDHO -A814;N # SYLOTI NAGRI LETTER TO -A815;N # SYLOTI NAGRI LETTER THO -A816;N # SYLOTI NAGRI LETTER DO -A817;N # SYLOTI NAGRI LETTER DHO -A818;N # SYLOTI NAGRI LETTER NO -A819;N # SYLOTI NAGRI LETTER PO -A81A;N # SYLOTI NAGRI LETTER PHO -A81B;N # SYLOTI NAGRI LETTER BO -A81C;N # SYLOTI NAGRI LETTER BHO -A81D;N # SYLOTI NAGRI LETTER MO -A81E;N # SYLOTI NAGRI LETTER RO -A81F;N # SYLOTI NAGRI LETTER LO -A820;N # SYLOTI NAGRI LETTER RRO -A821;N # SYLOTI NAGRI LETTER SO -A822;N # SYLOTI NAGRI LETTER HO -A823;N # SYLOTI NAGRI VOWEL SIGN A -A824;N # SYLOTI NAGRI VOWEL SIGN I -A825;N # SYLOTI NAGRI VOWEL SIGN U -A826;N # SYLOTI NAGRI VOWEL SIGN E -A827;N # SYLOTI NAGRI VOWEL SIGN OO -A828;N # SYLOTI NAGRI POETRY MARK-1 -A829;N # SYLOTI NAGRI POETRY MARK-2 -A82A;N # SYLOTI NAGRI POETRY MARK-3 -A82B;N # SYLOTI NAGRI POETRY MARK-4 -AC00..D7A3;W # <Hangul Syllable, First>..<Hangul Syllable, Last> -D800..DB7F;N # <Non Private Use High Surrogate, First>..<Non Private Use High Surrogate, Last> -DB80..DBFF;N # <Private Use High Surrogate, First>..<Private Use High Surrogate, Last> -DC00..DFFF;N # <Low Surrogate, First>..<Low Surrogate, Last> -E000..F8FF;A # <Private Use, First>..<Private Use, Last> -F900;W # CJK COMPATIBILITY IDEOGRAPH-F900 -F901;W # CJK COMPATIBILITY IDEOGRAPH-F901 -F902;W # CJK COMPATIBILITY IDEOGRAPH-F902 -F903;W # CJK COMPATIBILITY IDEOGRAPH-F903 -F904;W # CJK COMPATIBILITY IDEOGRAPH-F904 -F905;W # CJK COMPATIBILITY IDEOGRAPH-F905 -F906;W # CJK COMPATIBILITY IDEOGRAPH-F906 -F907;W # CJK COMPATIBILITY IDEOGRAPH-F907 -F908;W # CJK COMPATIBILITY IDEOGRAPH-F908 -F909;W # CJK COMPATIBILITY IDEOGRAPH-F909 -F90A;W # CJK COMPATIBILITY IDEOGRAPH-F90A -F90B;W # CJK COMPATIBILITY IDEOGRAPH-F90B -F90C;W # CJK COMPATIBILITY IDEOGRAPH-F90C -F90D;W # CJK COMPATIBILITY IDEOGRAPH-F90D -F90E;W # CJK COMPATIBILITY IDEOGRAPH-F90E -F90F;W # CJK COMPATIBILITY IDEOGRAPH-F90F -F910;W # CJK COMPATIBILITY IDEOGRAPH-F910 -F911;W # CJK COMPATIBILITY IDEOGRAPH-F911 -F912;W # CJK COMPATIBILITY IDEOGRAPH-F912 -F913;W # CJK COMPATIBILITY IDEOGRAPH-F913 -F914;W # CJK COMPATIBILITY IDEOGRAPH-F914 -F915;W # CJK COMPATIBILITY IDEOGRAPH-F915 -F916;W # CJK COMPATIBILITY IDEOGRAPH-F916 -F917;W # CJK COMPATIBILITY IDEOGRAPH-F917 -F918;W # CJK COMPATIBILITY IDEOGRAPH-F918 -F919;W # CJK COMPATIBILITY IDEOGRAPH-F919 -F91A;W # CJK COMPATIBILITY IDEOGRAPH-F91A -F91B;W # CJK COMPATIBILITY IDEOGRAPH-F91B -F91C;W # CJK COMPATIBILITY IDEOGRAPH-F91C -F91D;W # CJK COMPATIBILITY IDEOGRAPH-F91D -F91E;W # CJK COMPATIBILITY IDEOGRAPH-F91E -F91F;W # CJK COMPATIBILITY IDEOGRAPH-F91F -F920;W # CJK COMPATIBILITY IDEOGRAPH-F920 -F921;W # CJK COMPATIBILITY IDEOGRAPH-F921 -F922;W # CJK COMPATIBILITY IDEOGRAPH-F922 -F923;W # CJK COMPATIBILITY IDEOGRAPH-F923 -F924;W # CJK COMPATIBILITY IDEOGRAPH-F924 -F925;W # CJK COMPATIBILITY IDEOGRAPH-F925 -F926;W # CJK COMPATIBILITY IDEOGRAPH-F926 -F927;W # CJK COMPATIBILITY IDEOGRAPH-F927 -F928;W # CJK COMPATIBILITY IDEOGRAPH-F928 -F929;W # CJK COMPATIBILITY IDEOGRAPH-F929 -F92A;W # CJK COMPATIBILITY IDEOGRAPH-F92A -F92B;W # CJK COMPATIBILITY IDEOGRAPH-F92B -F92C;W # CJK COMPATIBILITY IDEOGRAPH-F92C -F92D;W # CJK COMPATIBILITY IDEOGRAPH-F92D -F92E;W # CJK COMPATIBILITY IDEOGRAPH-F92E -F92F;W # CJK COMPATIBILITY IDEOGRAPH-F92F -F930;W # CJK COMPATIBILITY IDEOGRAPH-F930 -F931;W # CJK COMPATIBILITY IDEOGRAPH-F931 -F932;W # CJK COMPATIBILITY IDEOGRAPH-F932 -F933;W # CJK COMPATIBILITY IDEOGRAPH-F933 -F934;W # CJK COMPATIBILITY IDEOGRAPH-F934 -F935;W # CJK COMPATIBILITY IDEOGRAPH-F935 -F936;W # CJK COMPATIBILITY IDEOGRAPH-F936 -F937;W # CJK COMPATIBILITY IDEOGRAPH-F937 -F938;W # CJK COMPATIBILITY IDEOGRAPH-F938 -F939;W # CJK COMPATIBILITY IDEOGRAPH-F939 -F93A;W # CJK COMPATIBILITY IDEOGRAPH-F93A -F93B;W # CJK COMPATIBILITY IDEOGRAPH-F93B -F93C;W # CJK COMPATIBILITY IDEOGRAPH-F93C -F93D;W # CJK COMPATIBILITY IDEOGRAPH-F93D -F93E;W # CJK COMPATIBILITY IDEOGRAPH-F93E -F93F;W # CJK COMPATIBILITY IDEOGRAPH-F93F -F940;W # CJK COMPATIBILITY IDEOGRAPH-F940 -F941;W # CJK COMPATIBILITY IDEOGRAPH-F941 -F942;W # CJK COMPATIBILITY IDEOGRAPH-F942 -F943;W # CJK COMPATIBILITY IDEOGRAPH-F943 -F944;W # CJK COMPATIBILITY IDEOGRAPH-F944 -F945;W # CJK COMPATIBILITY IDEOGRAPH-F945 -F946;W # CJK COMPATIBILITY IDEOGRAPH-F946 -F947;W # CJK COMPATIBILITY IDEOGRAPH-F947 -F948;W # CJK COMPATIBILITY IDEOGRAPH-F948 -F949;W # CJK COMPATIBILITY IDEOGRAPH-F949 -F94A;W # CJK COMPATIBILITY IDEOGRAPH-F94A -F94B;W # CJK COMPATIBILITY IDEOGRAPH-F94B -F94C;W # CJK COMPATIBILITY IDEOGRAPH-F94C -F94D;W # CJK COMPATIBILITY IDEOGRAPH-F94D -F94E;W # CJK COMPATIBILITY IDEOGRAPH-F94E -F94F;W # CJK COMPATIBILITY IDEOGRAPH-F94F -F950;W # CJK COMPATIBILITY IDEOGRAPH-F950 -F951;W # CJK COMPATIBILITY IDEOGRAPH-F951 -F952;W # CJK COMPATIBILITY IDEOGRAPH-F952 -F953;W # CJK COMPATIBILITY IDEOGRAPH-F953 -F954;W # CJK COMPATIBILITY IDEOGRAPH-F954 -F955;W # CJK COMPATIBILITY IDEOGRAPH-F955 -F956;W # CJK COMPATIBILITY IDEOGRAPH-F956 -F957;W # CJK COMPATIBILITY IDEOGRAPH-F957 -F958;W # CJK COMPATIBILITY IDEOGRAPH-F958 -F959;W # CJK COMPATIBILITY IDEOGRAPH-F959 -F95A;W # CJK COMPATIBILITY IDEOGRAPH-F95A -F95B;W # CJK COMPATIBILITY IDEOGRAPH-F95B -F95C;W # CJK COMPATIBILITY IDEOGRAPH-F95C -F95D;W # CJK COMPATIBILITY IDEOGRAPH-F95D -F95E;W # CJK COMPATIBILITY IDEOGRAPH-F95E -F95F;W # CJK COMPATIBILITY IDEOGRAPH-F95F -F960;W # CJK COMPATIBILITY IDEOGRAPH-F960 -F961;W # CJK COMPATIBILITY IDEOGRAPH-F961 -F962;W # CJK COMPATIBILITY IDEOGRAPH-F962 -F963;W # CJK COMPATIBILITY IDEOGRAPH-F963 -F964;W # CJK COMPATIBILITY IDEOGRAPH-F964 -F965;W # CJK COMPATIBILITY IDEOGRAPH-F965 -F966;W # CJK COMPATIBILITY IDEOGRAPH-F966 -F967;W # CJK COMPATIBILITY IDEOGRAPH-F967 -F968;W # CJK COMPATIBILITY IDEOGRAPH-F968 -F969;W # CJK COMPATIBILITY IDEOGRAPH-F969 -F96A;W # CJK COMPATIBILITY IDEOGRAPH-F96A -F96B;W # CJK COMPATIBILITY IDEOGRAPH-F96B -F96C;W # CJK COMPATIBILITY IDEOGRAPH-F96C -F96D;W # CJK COMPATIBILITY IDEOGRAPH-F96D -F96E;W # CJK COMPATIBILITY IDEOGRAPH-F96E -F96F;W # CJK COMPATIBILITY IDEOGRAPH-F96F -F970;W # CJK COMPATIBILITY IDEOGRAPH-F970 -F971;W # CJK COMPATIBILITY IDEOGRAPH-F971 -F972;W # CJK COMPATIBILITY IDEOGRAPH-F972 -F973;W # CJK COMPATIBILITY IDEOGRAPH-F973 -F974;W # CJK COMPATIBILITY IDEOGRAPH-F974 -F975;W # CJK COMPATIBILITY IDEOGRAPH-F975 -F976;W # CJK COMPATIBILITY IDEOGRAPH-F976 -F977;W # CJK COMPATIBILITY IDEOGRAPH-F977 -F978;W # CJK COMPATIBILITY IDEOGRAPH-F978 -F979;W # CJK COMPATIBILITY IDEOGRAPH-F979 -F97A;W # CJK COMPATIBILITY IDEOGRAPH-F97A -F97B;W # CJK COMPATIBILITY IDEOGRAPH-F97B -F97C;W # CJK COMPATIBILITY IDEOGRAPH-F97C -F97D;W # CJK COMPATIBILITY IDEOGRAPH-F97D -F97E;W # CJK COMPATIBILITY IDEOGRAPH-F97E -F97F;W # CJK COMPATIBILITY IDEOGRAPH-F97F -F980;W # CJK COMPATIBILITY IDEOGRAPH-F980 -F981;W # CJK COMPATIBILITY IDEOGRAPH-F981 -F982;W # CJK COMPATIBILITY IDEOGRAPH-F982 -F983;W # CJK COMPATIBILITY IDEOGRAPH-F983 -F984;W # CJK COMPATIBILITY IDEOGRAPH-F984 -F985;W # CJK COMPATIBILITY IDEOGRAPH-F985 -F986;W # CJK COMPATIBILITY IDEOGRAPH-F986 -F987;W # CJK COMPATIBILITY IDEOGRAPH-F987 -F988;W # CJK COMPATIBILITY IDEOGRAPH-F988 -F989;W # CJK COMPATIBILITY IDEOGRAPH-F989 -F98A;W # CJK COMPATIBILITY IDEOGRAPH-F98A -F98B;W # CJK COMPATIBILITY IDEOGRAPH-F98B -F98C;W # CJK COMPATIBILITY IDEOGRAPH-F98C -F98D;W # CJK COMPATIBILITY IDEOGRAPH-F98D -F98E;W # CJK COMPATIBILITY IDEOGRAPH-F98E -F98F;W # CJK COMPATIBILITY IDEOGRAPH-F98F -F990;W # CJK COMPATIBILITY IDEOGRAPH-F990 -F991;W # CJK COMPATIBILITY IDEOGRAPH-F991 -F992;W # CJK COMPATIBILITY IDEOGRAPH-F992 -F993;W # CJK COMPATIBILITY IDEOGRAPH-F993 -F994;W # CJK COMPATIBILITY IDEOGRAPH-F994 -F995;W # CJK COMPATIBILITY IDEOGRAPH-F995 -F996;W # CJK COMPATIBILITY IDEOGRAPH-F996 -F997;W # CJK COMPATIBILITY IDEOGRAPH-F997 -F998;W # CJK COMPATIBILITY IDEOGRAPH-F998 -F999;W # CJK COMPATIBILITY IDEOGRAPH-F999 -F99A;W # CJK COMPATIBILITY IDEOGRAPH-F99A -F99B;W # CJK COMPATIBILITY IDEOGRAPH-F99B -F99C;W # CJK COMPATIBILITY IDEOGRAPH-F99C -F99D;W # CJK COMPATIBILITY IDEOGRAPH-F99D -F99E;W # CJK COMPATIBILITY IDEOGRAPH-F99E -F99F;W # CJK COMPATIBILITY IDEOGRAPH-F99F -F9A0;W # CJK COMPATIBILITY IDEOGRAPH-F9A0 -F9A1;W # CJK COMPATIBILITY IDEOGRAPH-F9A1 -F9A2;W # CJK COMPATIBILITY IDEOGRAPH-F9A2 -F9A3;W # CJK COMPATIBILITY IDEOGRAPH-F9A3 -F9A4;W # CJK COMPATIBILITY IDEOGRAPH-F9A4 -F9A5;W # CJK COMPATIBILITY IDEOGRAPH-F9A5 -F9A6;W # CJK COMPATIBILITY IDEOGRAPH-F9A6 -F9A7;W # CJK COMPATIBILITY IDEOGRAPH-F9A7 -F9A8;W # CJK COMPATIBILITY IDEOGRAPH-F9A8 -F9A9;W # CJK COMPATIBILITY IDEOGRAPH-F9A9 -F9AA;W # CJK COMPATIBILITY IDEOGRAPH-F9AA -F9AB;W # CJK COMPATIBILITY IDEOGRAPH-F9AB -F9AC;W # CJK COMPATIBILITY IDEOGRAPH-F9AC -F9AD;W # CJK COMPATIBILITY IDEOGRAPH-F9AD -F9AE;W # CJK COMPATIBILITY IDEOGRAPH-F9AE -F9AF;W # CJK COMPATIBILITY IDEOGRAPH-F9AF -F9B0;W # CJK COMPATIBILITY IDEOGRAPH-F9B0 -F9B1;W # CJK COMPATIBILITY IDEOGRAPH-F9B1 -F9B2;W # CJK COMPATIBILITY IDEOGRAPH-F9B2 -F9B3;W # CJK COMPATIBILITY IDEOGRAPH-F9B3 -F9B4;W # CJK COMPATIBILITY IDEOGRAPH-F9B4 -F9B5;W # CJK COMPATIBILITY IDEOGRAPH-F9B5 -F9B6;W # CJK COMPATIBILITY IDEOGRAPH-F9B6 -F9B7;W # CJK COMPATIBILITY IDEOGRAPH-F9B7 -F9B8;W # CJK COMPATIBILITY IDEOGRAPH-F9B8 -F9B9;W # CJK COMPATIBILITY IDEOGRAPH-F9B9 -F9BA;W # CJK COMPATIBILITY IDEOGRAPH-F9BA -F9BB;W # CJK COMPATIBILITY IDEOGRAPH-F9BB -F9BC;W # CJK COMPATIBILITY IDEOGRAPH-F9BC -F9BD;W # CJK COMPATIBILITY IDEOGRAPH-F9BD -F9BE;W # CJK COMPATIBILITY IDEOGRAPH-F9BE -F9BF;W # CJK COMPATIBILITY IDEOGRAPH-F9BF -F9C0;W # CJK COMPATIBILITY IDEOGRAPH-F9C0 -F9C1;W # CJK COMPATIBILITY IDEOGRAPH-F9C1 -F9C2;W # CJK COMPATIBILITY IDEOGRAPH-F9C2 -F9C3;W # CJK COMPATIBILITY IDEOGRAPH-F9C3 -F9C4;W # CJK COMPATIBILITY IDEOGRAPH-F9C4 -F9C5;W # CJK COMPATIBILITY IDEOGRAPH-F9C5 -F9C6;W # CJK COMPATIBILITY IDEOGRAPH-F9C6 -F9C7;W # CJK COMPATIBILITY IDEOGRAPH-F9C7 -F9C8;W # CJK COMPATIBILITY IDEOGRAPH-F9C8 -F9C9;W # CJK COMPATIBILITY IDEOGRAPH-F9C9 -F9CA;W # CJK COMPATIBILITY IDEOGRAPH-F9CA -F9CB;W # CJK COMPATIBILITY IDEOGRAPH-F9CB -F9CC;W # CJK COMPATIBILITY IDEOGRAPH-F9CC -F9CD;W # CJK COMPATIBILITY IDEOGRAPH-F9CD -F9CE;W # CJK COMPATIBILITY IDEOGRAPH-F9CE -F9CF;W # CJK COMPATIBILITY IDEOGRAPH-F9CF -F9D0;W # CJK COMPATIBILITY IDEOGRAPH-F9D0 -F9D1;W # CJK COMPATIBILITY IDEOGRAPH-F9D1 -F9D2;W # CJK COMPATIBILITY IDEOGRAPH-F9D2 -F9D3;W # CJK COMPATIBILITY IDEOGRAPH-F9D3 -F9D4;W # CJK COMPATIBILITY IDEOGRAPH-F9D4 -F9D5;W # CJK COMPATIBILITY IDEOGRAPH-F9D5 -F9D6;W # CJK COMPATIBILITY IDEOGRAPH-F9D6 -F9D7;W # CJK COMPATIBILITY IDEOGRAPH-F9D7 -F9D8;W # CJK COMPATIBILITY IDEOGRAPH-F9D8 -F9D9;W # CJK COMPATIBILITY IDEOGRAPH-F9D9 -F9DA;W # CJK COMPATIBILITY IDEOGRAPH-F9DA -F9DB;W # CJK COMPATIBILITY IDEOGRAPH-F9DB -F9DC;W # CJK COMPATIBILITY IDEOGRAPH-F9DC -F9DD;W # CJK COMPATIBILITY IDEOGRAPH-F9DD -F9DE;W # CJK COMPATIBILITY IDEOGRAPH-F9DE -F9DF;W # CJK COMPATIBILITY IDEOGRAPH-F9DF -F9E0;W # CJK COMPATIBILITY IDEOGRAPH-F9E0 -F9E1;W # CJK COMPATIBILITY IDEOGRAPH-F9E1 -F9E2;W # CJK COMPATIBILITY IDEOGRAPH-F9E2 -F9E3;W # CJK COMPATIBILITY IDEOGRAPH-F9E3 -F9E4;W # CJK COMPATIBILITY IDEOGRAPH-F9E4 -F9E5;W # CJK COMPATIBILITY IDEOGRAPH-F9E5 -F9E6;W # CJK COMPATIBILITY IDEOGRAPH-F9E6 -F9E7;W # CJK COMPATIBILITY IDEOGRAPH-F9E7 -F9E8;W # CJK COMPATIBILITY IDEOGRAPH-F9E8 -F9E9;W # CJK COMPATIBILITY IDEOGRAPH-F9E9 -F9EA;W # CJK COMPATIBILITY IDEOGRAPH-F9EA -F9EB;W # CJK COMPATIBILITY IDEOGRAPH-F9EB -F9EC;W # CJK COMPATIBILITY IDEOGRAPH-F9EC -F9ED;W # CJK COMPATIBILITY IDEOGRAPH-F9ED -F9EE;W # CJK COMPATIBILITY IDEOGRAPH-F9EE -F9EF;W # CJK COMPATIBILITY IDEOGRAPH-F9EF -F9F0;W # CJK COMPATIBILITY IDEOGRAPH-F9F0 -F9F1;W # CJK COMPATIBILITY IDEOGRAPH-F9F1 -F9F2;W # CJK COMPATIBILITY IDEOGRAPH-F9F2 -F9F3;W # CJK COMPATIBILITY IDEOGRAPH-F9F3 -F9F4;W # CJK COMPATIBILITY IDEOGRAPH-F9F4 -F9F5;W # CJK COMPATIBILITY IDEOGRAPH-F9F5 -F9F6;W # CJK COMPATIBILITY IDEOGRAPH-F9F6 -F9F7;W # CJK COMPATIBILITY IDEOGRAPH-F9F7 -F9F8;W # CJK COMPATIBILITY IDEOGRAPH-F9F8 -F9F9;W # CJK COMPATIBILITY IDEOGRAPH-F9F9 -F9FA;W # CJK COMPATIBILITY IDEOGRAPH-F9FA -F9FB;W # CJK COMPATIBILITY IDEOGRAPH-F9FB -F9FC;W # CJK COMPATIBILITY IDEOGRAPH-F9FC -F9FD;W # CJK COMPATIBILITY IDEOGRAPH-F9FD -F9FE;W # CJK COMPATIBILITY IDEOGRAPH-F9FE -F9FF;W # CJK COMPATIBILITY IDEOGRAPH-F9FF -FA00;W # CJK COMPATIBILITY IDEOGRAPH-FA00 -FA01;W # CJK COMPATIBILITY IDEOGRAPH-FA01 -FA02;W # CJK COMPATIBILITY IDEOGRAPH-FA02 -FA03;W # CJK COMPATIBILITY IDEOGRAPH-FA03 -FA04;W # CJK COMPATIBILITY IDEOGRAPH-FA04 -FA05;W # CJK COMPATIBILITY IDEOGRAPH-FA05 -FA06;W # CJK COMPATIBILITY IDEOGRAPH-FA06 -FA07;W # CJK COMPATIBILITY IDEOGRAPH-FA07 -FA08;W # CJK COMPATIBILITY IDEOGRAPH-FA08 -FA09;W # CJK COMPATIBILITY IDEOGRAPH-FA09 -FA0A;W # CJK COMPATIBILITY IDEOGRAPH-FA0A -FA0B;W # CJK COMPATIBILITY IDEOGRAPH-FA0B -FA0C;W # CJK COMPATIBILITY IDEOGRAPH-FA0C -FA0D;W # CJK COMPATIBILITY IDEOGRAPH-FA0D -FA0E;W # CJK COMPATIBILITY IDEOGRAPH-FA0E -FA0F;W # CJK COMPATIBILITY IDEOGRAPH-FA0F -FA10;W # CJK COMPATIBILITY IDEOGRAPH-FA10 -FA11;W # CJK COMPATIBILITY IDEOGRAPH-FA11 -FA12;W # CJK COMPATIBILITY IDEOGRAPH-FA12 -FA13;W # CJK COMPATIBILITY IDEOGRAPH-FA13 -FA14;W # CJK COMPATIBILITY IDEOGRAPH-FA14 -FA15;W # CJK COMPATIBILITY IDEOGRAPH-FA15 -FA16;W # CJK COMPATIBILITY IDEOGRAPH-FA16 -FA17;W # CJK COMPATIBILITY IDEOGRAPH-FA17 -FA18;W # CJK COMPATIBILITY IDEOGRAPH-FA18 -FA19;W # CJK COMPATIBILITY IDEOGRAPH-FA19 -FA1A;W # CJK COMPATIBILITY IDEOGRAPH-FA1A -FA1B;W # CJK COMPATIBILITY IDEOGRAPH-FA1B -FA1C;W # CJK COMPATIBILITY IDEOGRAPH-FA1C -FA1D;W # CJK COMPATIBILITY IDEOGRAPH-FA1D -FA1E;W # CJK COMPATIBILITY IDEOGRAPH-FA1E -FA1F;W # CJK COMPATIBILITY IDEOGRAPH-FA1F -FA20;W # CJK COMPATIBILITY IDEOGRAPH-FA20 -FA21;W # CJK COMPATIBILITY IDEOGRAPH-FA21 -FA22;W # CJK COMPATIBILITY IDEOGRAPH-FA22 -FA23;W # CJK COMPATIBILITY IDEOGRAPH-FA23 -FA24;W # CJK COMPATIBILITY IDEOGRAPH-FA24 -FA25;W # CJK COMPATIBILITY IDEOGRAPH-FA25 -FA26;W # CJK COMPATIBILITY IDEOGRAPH-FA26 -FA27;W # CJK COMPATIBILITY IDEOGRAPH-FA27 -FA28;W # CJK COMPATIBILITY IDEOGRAPH-FA28 -FA29;W # CJK COMPATIBILITY IDEOGRAPH-FA29 -FA2A;W # CJK COMPATIBILITY IDEOGRAPH-FA2A -FA2B;W # CJK COMPATIBILITY IDEOGRAPH-FA2B -FA2C;W # CJK COMPATIBILITY IDEOGRAPH-FA2C -FA2D;W # CJK COMPATIBILITY IDEOGRAPH-FA2D -FA30;W # CJK COMPATIBILITY IDEOGRAPH-FA30 -FA31;W # CJK COMPATIBILITY IDEOGRAPH-FA31 -FA32;W # CJK COMPATIBILITY IDEOGRAPH-FA32 -FA33;W # CJK COMPATIBILITY IDEOGRAPH-FA33 -FA34;W # CJK COMPATIBILITY IDEOGRAPH-FA34 -FA35;W # CJK COMPATIBILITY IDEOGRAPH-FA35 -FA36;W # CJK COMPATIBILITY IDEOGRAPH-FA36 -FA37;W # CJK COMPATIBILITY IDEOGRAPH-FA37 -FA38;W # CJK COMPATIBILITY IDEOGRAPH-FA38 -FA39;W # CJK COMPATIBILITY IDEOGRAPH-FA39 -FA3A;W # CJK COMPATIBILITY IDEOGRAPH-FA3A -FA3B;W # CJK COMPATIBILITY IDEOGRAPH-FA3B -FA3C;W # CJK COMPATIBILITY IDEOGRAPH-FA3C -FA3D;W # CJK COMPATIBILITY IDEOGRAPH-FA3D -FA3E;W # CJK COMPATIBILITY IDEOGRAPH-FA3E -FA3F;W # CJK COMPATIBILITY IDEOGRAPH-FA3F -FA40;W # CJK COMPATIBILITY IDEOGRAPH-FA40 -FA41;W # CJK COMPATIBILITY IDEOGRAPH-FA41 -FA42;W # CJK COMPATIBILITY IDEOGRAPH-FA42 -FA43;W # CJK COMPATIBILITY IDEOGRAPH-FA43 -FA44;W # CJK COMPATIBILITY IDEOGRAPH-FA44 -FA45;W # CJK COMPATIBILITY IDEOGRAPH-FA45 -FA46;W # CJK COMPATIBILITY IDEOGRAPH-FA46 -FA47;W # CJK COMPATIBILITY IDEOGRAPH-FA47 -FA48;W # CJK COMPATIBILITY IDEOGRAPH-FA48 -FA49;W # CJK COMPATIBILITY IDEOGRAPH-FA49 -FA4A;W # CJK COMPATIBILITY IDEOGRAPH-FA4A -FA4B;W # CJK COMPATIBILITY IDEOGRAPH-FA4B -FA4C;W # CJK COMPATIBILITY IDEOGRAPH-FA4C -FA4D;W # CJK COMPATIBILITY IDEOGRAPH-FA4D -FA4E;W # CJK COMPATIBILITY IDEOGRAPH-FA4E -FA4F;W # CJK COMPATIBILITY IDEOGRAPH-FA4F -FA50;W # CJK COMPATIBILITY IDEOGRAPH-FA50 -FA51;W # CJK COMPATIBILITY IDEOGRAPH-FA51 -FA52;W # CJK COMPATIBILITY IDEOGRAPH-FA52 -FA53;W # CJK COMPATIBILITY IDEOGRAPH-FA53 -FA54;W # CJK COMPATIBILITY IDEOGRAPH-FA54 -FA55;W # CJK COMPATIBILITY IDEOGRAPH-FA55 -FA56;W # CJK COMPATIBILITY IDEOGRAPH-FA56 -FA57;W # CJK COMPATIBILITY IDEOGRAPH-FA57 -FA58;W # CJK COMPATIBILITY IDEOGRAPH-FA58 -FA59;W # CJK COMPATIBILITY IDEOGRAPH-FA59 -FA5A;W # CJK COMPATIBILITY IDEOGRAPH-FA5A -FA5B;W # CJK COMPATIBILITY IDEOGRAPH-FA5B -FA5C;W # CJK COMPATIBILITY IDEOGRAPH-FA5C -FA5D;W # CJK COMPATIBILITY IDEOGRAPH-FA5D -FA5E;W # CJK COMPATIBILITY IDEOGRAPH-FA5E -FA5F;W # CJK COMPATIBILITY IDEOGRAPH-FA5F -FA60;W # CJK COMPATIBILITY IDEOGRAPH-FA60 -FA61;W # CJK COMPATIBILITY IDEOGRAPH-FA61 -FA62;W # CJK COMPATIBILITY IDEOGRAPH-FA62 -FA63;W # CJK COMPATIBILITY IDEOGRAPH-FA63 -FA64;W # CJK COMPATIBILITY IDEOGRAPH-FA64 -FA65;W # CJK COMPATIBILITY IDEOGRAPH-FA65 -FA66;W # CJK COMPATIBILITY IDEOGRAPH-FA66 -FA67;W # CJK COMPATIBILITY IDEOGRAPH-FA67 -FA68;W # CJK COMPATIBILITY IDEOGRAPH-FA68 -FA69;W # CJK COMPATIBILITY IDEOGRAPH-FA69 -FA6A;W # CJK COMPATIBILITY IDEOGRAPH-FA6A -FA70;W # CJK COMPATIBILITY IDEOGRAPH-FA70 -FA71;W # CJK COMPATIBILITY IDEOGRAPH-FA71 -FA72;W # CJK COMPATIBILITY IDEOGRAPH-FA72 -FA73;W # CJK COMPATIBILITY IDEOGRAPH-FA73 -FA74;W # CJK COMPATIBILITY IDEOGRAPH-FA74 -FA75;W # CJK COMPATIBILITY IDEOGRAPH-FA75 -FA76;W # CJK COMPATIBILITY IDEOGRAPH-FA76 -FA77;W # CJK COMPATIBILITY IDEOGRAPH-FA77 -FA78;W # CJK COMPATIBILITY IDEOGRAPH-FA78 -FA79;W # CJK COMPATIBILITY IDEOGRAPH-FA79 -FA7A;W # CJK COMPATIBILITY IDEOGRAPH-FA7A -FA7B;W # CJK COMPATIBILITY IDEOGRAPH-FA7B -FA7C;W # CJK COMPATIBILITY IDEOGRAPH-FA7C -FA7D;W # CJK COMPATIBILITY IDEOGRAPH-FA7D -FA7E;W # CJK COMPATIBILITY IDEOGRAPH-FA7E -FA7F;W # CJK COMPATIBILITY IDEOGRAPH-FA7F -FA80;W # CJK COMPATIBILITY IDEOGRAPH-FA80 -FA81;W # CJK COMPATIBILITY IDEOGRAPH-FA81 -FA82;W # CJK COMPATIBILITY IDEOGRAPH-FA82 -FA83;W # CJK COMPATIBILITY IDEOGRAPH-FA83 -FA84;W # CJK COMPATIBILITY IDEOGRAPH-FA84 -FA85;W # CJK COMPATIBILITY IDEOGRAPH-FA85 -FA86;W # CJK COMPATIBILITY IDEOGRAPH-FA86 -FA87;W # CJK COMPATIBILITY IDEOGRAPH-FA87 -FA88;W # CJK COMPATIBILITY IDEOGRAPH-FA88 -FA89;W # CJK COMPATIBILITY IDEOGRAPH-FA89 -FA8A;W # CJK COMPATIBILITY IDEOGRAPH-FA8A -FA8B;W # CJK COMPATIBILITY IDEOGRAPH-FA8B -FA8C;W # CJK COMPATIBILITY IDEOGRAPH-FA8C -FA8D;W # CJK COMPATIBILITY IDEOGRAPH-FA8D -FA8E;W # CJK COMPATIBILITY IDEOGRAPH-FA8E -FA8F;W # CJK COMPATIBILITY IDEOGRAPH-FA8F -FA90;W # CJK COMPATIBILITY IDEOGRAPH-FA90 -FA91;W # CJK COMPATIBILITY IDEOGRAPH-FA91 -FA92;W # CJK COMPATIBILITY IDEOGRAPH-FA92 -FA93;W # CJK COMPATIBILITY IDEOGRAPH-FA93 -FA94;W # CJK COMPATIBILITY IDEOGRAPH-FA94 -FA95;W # CJK COMPATIBILITY IDEOGRAPH-FA95 -FA96;W # CJK COMPATIBILITY IDEOGRAPH-FA96 -FA97;W # CJK COMPATIBILITY IDEOGRAPH-FA97 -FA98;W # CJK COMPATIBILITY IDEOGRAPH-FA98 -FA99;W # CJK COMPATIBILITY IDEOGRAPH-FA99 -FA9A;W # CJK COMPATIBILITY IDEOGRAPH-FA9A -FA9B;W # CJK COMPATIBILITY IDEOGRAPH-FA9B -FA9C;W # CJK COMPATIBILITY IDEOGRAPH-FA9C -FA9D;W # CJK COMPATIBILITY IDEOGRAPH-FA9D -FA9E;W # CJK COMPATIBILITY IDEOGRAPH-FA9E -FA9F;W # CJK COMPATIBILITY IDEOGRAPH-FA9F -FAA0;W # CJK COMPATIBILITY IDEOGRAPH-FAA0 -FAA1;W # CJK COMPATIBILITY IDEOGRAPH-FAA1 -FAA2;W # CJK COMPATIBILITY IDEOGRAPH-FAA2 -FAA3;W # CJK COMPATIBILITY IDEOGRAPH-FAA3 -FAA4;W # CJK COMPATIBILITY IDEOGRAPH-FAA4 -FAA5;W # CJK COMPATIBILITY IDEOGRAPH-FAA5 -FAA6;W # CJK COMPATIBILITY IDEOGRAPH-FAA6 -FAA7;W # CJK COMPATIBILITY IDEOGRAPH-FAA7 -FAA8;W # CJK COMPATIBILITY IDEOGRAPH-FAA8 -FAA9;W # CJK COMPATIBILITY IDEOGRAPH-FAA9 -FAAA;W # CJK COMPATIBILITY IDEOGRAPH-FAAA -FAAB;W # CJK COMPATIBILITY IDEOGRAPH-FAAB -FAAC;W # CJK COMPATIBILITY IDEOGRAPH-FAAC -FAAD;W # CJK COMPATIBILITY IDEOGRAPH-FAAD -FAAE;W # CJK COMPATIBILITY IDEOGRAPH-FAAE -FAAF;W # CJK COMPATIBILITY IDEOGRAPH-FAAF -FAB0;W # CJK COMPATIBILITY IDEOGRAPH-FAB0 -FAB1;W # CJK COMPATIBILITY IDEOGRAPH-FAB1 -FAB2;W # CJK COMPATIBILITY IDEOGRAPH-FAB2 -FAB3;W # CJK COMPATIBILITY IDEOGRAPH-FAB3 -FAB4;W # CJK COMPATIBILITY IDEOGRAPH-FAB4 -FAB5;W # CJK COMPATIBILITY IDEOGRAPH-FAB5 -FAB6;W # CJK COMPATIBILITY IDEOGRAPH-FAB6 -FAB7;W # CJK COMPATIBILITY IDEOGRAPH-FAB7 -FAB8;W # CJK COMPATIBILITY IDEOGRAPH-FAB8 -FAB9;W # CJK COMPATIBILITY IDEOGRAPH-FAB9 -FABA;W # CJK COMPATIBILITY IDEOGRAPH-FABA -FABB;W # CJK COMPATIBILITY IDEOGRAPH-FABB -FABC;W # CJK COMPATIBILITY IDEOGRAPH-FABC -FABD;W # CJK COMPATIBILITY IDEOGRAPH-FABD -FABE;W # CJK COMPATIBILITY IDEOGRAPH-FABE -FABF;W # CJK COMPATIBILITY IDEOGRAPH-FABF -FAC0;W # CJK COMPATIBILITY IDEOGRAPH-FAC0 -FAC1;W # CJK COMPATIBILITY IDEOGRAPH-FAC1 -FAC2;W # CJK COMPATIBILITY IDEOGRAPH-FAC2 -FAC3;W # CJK COMPATIBILITY IDEOGRAPH-FAC3 -FAC4;W # CJK COMPATIBILITY IDEOGRAPH-FAC4 -FAC5;W # CJK COMPATIBILITY IDEOGRAPH-FAC5 -FAC6;W # CJK COMPATIBILITY IDEOGRAPH-FAC6 -FAC7;W # CJK COMPATIBILITY IDEOGRAPH-FAC7 -FAC8;W # CJK COMPATIBILITY IDEOGRAPH-FAC8 -FAC9;W # CJK COMPATIBILITY IDEOGRAPH-FAC9 -FACA;W # CJK COMPATIBILITY IDEOGRAPH-FACA -FACB;W # CJK COMPATIBILITY IDEOGRAPH-FACB -FACC;W # CJK COMPATIBILITY IDEOGRAPH-FACC -FACD;W # CJK COMPATIBILITY IDEOGRAPH-FACD -FACE;W # CJK COMPATIBILITY IDEOGRAPH-FACE -FACF;W # CJK COMPATIBILITY IDEOGRAPH-FACF -FAD0;W # CJK COMPATIBILITY IDEOGRAPH-FAD0 -FAD1;W # CJK COMPATIBILITY IDEOGRAPH-FAD1 -FAD2;W # CJK COMPATIBILITY IDEOGRAPH-FAD2 -FAD3;W # CJK COMPATIBILITY IDEOGRAPH-FAD3 -FAD4;W # CJK COMPATIBILITY IDEOGRAPH-FAD4 -FAD5;W # CJK COMPATIBILITY IDEOGRAPH-FAD5 -FAD6;W # CJK COMPATIBILITY IDEOGRAPH-FAD6 -FAD7;W # CJK COMPATIBILITY IDEOGRAPH-FAD7 -FAD8;W # CJK COMPATIBILITY IDEOGRAPH-FAD8 -FAD9;W # CJK COMPATIBILITY IDEOGRAPH-FAD9 -FB00;N # LATIN SMALL LIGATURE FF -FB01;N # LATIN SMALL LIGATURE FI -FB02;N # LATIN SMALL LIGATURE FL -FB03;N # LATIN SMALL LIGATURE FFI -FB04;N # LATIN SMALL LIGATURE FFL -FB05;N # LATIN SMALL LIGATURE LONG S T -FB06;N # LATIN SMALL LIGATURE ST -FB13;N # ARMENIAN SMALL LIGATURE MEN NOW -FB14;N # ARMENIAN SMALL LIGATURE MEN ECH -FB15;N # ARMENIAN SMALL LIGATURE MEN INI -FB16;N # ARMENIAN SMALL LIGATURE VEW NOW -FB17;N # ARMENIAN SMALL LIGATURE MEN XEH -FB1D;N # HEBREW LETTER YOD WITH HIRIQ -FB1E;N # HEBREW POINT JUDEO-SPANISH VARIKA -FB1F;N # HEBREW LIGATURE YIDDISH YOD YOD PATAH -FB20;N # HEBREW LETTER ALTERNATIVE AYIN -FB21;N # HEBREW LETTER WIDE ALEF -FB22;N # HEBREW LETTER WIDE DALET -FB23;N # HEBREW LETTER WIDE HE -FB24;N # HEBREW LETTER WIDE KAF -FB25;N # HEBREW LETTER WIDE LAMED -FB26;N # HEBREW LETTER WIDE FINAL MEM -FB27;N # HEBREW LETTER WIDE RESH -FB28;N # HEBREW LETTER WIDE TAV -FB29;N # HEBREW LETTER ALTERNATIVE PLUS SIGN -FB2A;N # HEBREW LETTER SHIN WITH SHIN DOT -FB2B;N # HEBREW LETTER SHIN WITH SIN DOT -FB2C;N # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT -FB2D;N # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT -FB2E;N # HEBREW LETTER ALEF WITH PATAH -FB2F;N # HEBREW LETTER ALEF WITH QAMATS -FB30;N # HEBREW LETTER ALEF WITH MAPIQ -FB31;N # HEBREW LETTER BET WITH DAGESH -FB32;N # HEBREW LETTER GIMEL WITH DAGESH -FB33;N # HEBREW LETTER DALET WITH DAGESH -FB34;N # HEBREW LETTER HE WITH MAPIQ -FB35;N # HEBREW LETTER VAV WITH DAGESH -FB36;N # HEBREW LETTER ZAYIN WITH DAGESH -FB38;N # HEBREW LETTER TET WITH DAGESH -FB39;N # HEBREW LETTER YOD WITH DAGESH -FB3A;N # HEBREW LETTER FINAL KAF WITH DAGESH -FB3B;N # HEBREW LETTER KAF WITH DAGESH -FB3C;N # HEBREW LETTER LAMED WITH DAGESH -FB3E;N # HEBREW LETTER MEM WITH DAGESH -FB40;N # HEBREW LETTER NUN WITH DAGESH -FB41;N # HEBREW LETTER SAMEKH WITH DAGESH -FB43;N # HEBREW LETTER FINAL PE WITH DAGESH -FB44;N # HEBREW LETTER PE WITH DAGESH -FB46;N # HEBREW LETTER TSADI WITH DAGESH -FB47;N # HEBREW LETTER QOF WITH DAGESH -FB48;N # HEBREW LETTER RESH WITH DAGESH -FB49;N # HEBREW LETTER SHIN WITH DAGESH -FB4A;N # HEBREW LETTER TAV WITH DAGESH -FB4B;N # HEBREW LETTER VAV WITH HOLAM -FB4C;N # HEBREW LETTER BET WITH RAFE -FB4D;N # HEBREW LETTER KAF WITH RAFE -FB4E;N # HEBREW LETTER PE WITH RAFE -FB4F;N # HEBREW LIGATURE ALEF LAMED -FB50;N # ARABIC LETTER ALEF WASLA ISOLATED FORM -FB51;N # ARABIC LETTER ALEF WASLA FINAL FORM -FB52;N # ARABIC LETTER BEEH ISOLATED FORM -FB53;N # ARABIC LETTER BEEH FINAL FORM -FB54;N # ARABIC LETTER BEEH INITIAL FORM -FB55;N # ARABIC LETTER BEEH MEDIAL FORM -FB56;N # ARABIC LETTER PEH ISOLATED FORM -FB57;N # ARABIC LETTER PEH FINAL FORM -FB58;N # ARABIC LETTER PEH INITIAL FORM -FB59;N # ARABIC LETTER PEH MEDIAL FORM -FB5A;N # ARABIC LETTER BEHEH ISOLATED FORM -FB5B;N # ARABIC LETTER BEHEH FINAL FORM -FB5C;N # ARABIC LETTER BEHEH INITIAL FORM -FB5D;N # ARABIC LETTER BEHEH MEDIAL FORM -FB5E;N # ARABIC LETTER TTEHEH ISOLATED FORM -FB5F;N # ARABIC LETTER TTEHEH FINAL FORM -FB60;N # ARABIC LETTER TTEHEH INITIAL FORM -FB61;N # ARABIC LETTER TTEHEH MEDIAL FORM -FB62;N # ARABIC LETTER TEHEH ISOLATED FORM -FB63;N # ARABIC LETTER TEHEH FINAL FORM -FB64;N # ARABIC LETTER TEHEH INITIAL FORM -FB65;N # ARABIC LETTER TEHEH MEDIAL FORM -FB66;N # ARABIC LETTER TTEH ISOLATED FORM -FB67;N # ARABIC LETTER TTEH FINAL FORM -FB68;N # ARABIC LETTER TTEH INITIAL FORM -FB69;N # ARABIC LETTER TTEH MEDIAL FORM -FB6A;N # ARABIC LETTER VEH ISOLATED FORM -FB6B;N # ARABIC LETTER VEH FINAL FORM -FB6C;N # ARABIC LETTER VEH INITIAL FORM -FB6D;N # ARABIC LETTER VEH MEDIAL FORM -FB6E;N # ARABIC LETTER PEHEH ISOLATED FORM -FB6F;N # ARABIC LETTER PEHEH FINAL FORM -FB70;N # ARABIC LETTER PEHEH INITIAL FORM -FB71;N # ARABIC LETTER PEHEH MEDIAL FORM -FB72;N # ARABIC LETTER DYEH ISOLATED FORM -FB73;N # ARABIC LETTER DYEH FINAL FORM -FB74;N # ARABIC LETTER DYEH INITIAL FORM -FB75;N # ARABIC LETTER DYEH MEDIAL FORM -FB76;N # ARABIC LETTER NYEH ISOLATED FORM -FB77;N # ARABIC LETTER NYEH FINAL FORM -FB78;N # ARABIC LETTER NYEH INITIAL FORM -FB79;N # ARABIC LETTER NYEH MEDIAL FORM -FB7A;N # ARABIC LETTER TCHEH ISOLATED FORM -FB7B;N # ARABIC LETTER TCHEH FINAL FORM -FB7C;N # ARABIC LETTER TCHEH INITIAL FORM -FB7D;N # ARABIC LETTER TCHEH MEDIAL FORM -FB7E;N # ARABIC LETTER TCHEHEH ISOLATED FORM -FB7F;N # ARABIC LETTER TCHEHEH FINAL FORM -FB80;N # ARABIC LETTER TCHEHEH INITIAL FORM -FB81;N # ARABIC LETTER TCHEHEH MEDIAL FORM -FB82;N # ARABIC LETTER DDAHAL ISOLATED FORM -FB83;N # ARABIC LETTER DDAHAL FINAL FORM -FB84;N # ARABIC LETTER DAHAL ISOLATED FORM -FB85;N # ARABIC LETTER DAHAL FINAL FORM -FB86;N # ARABIC LETTER DUL ISOLATED FORM -FB87;N # ARABIC LETTER DUL FINAL FORM -FB88;N # ARABIC LETTER DDAL ISOLATED FORM -FB89;N # ARABIC LETTER DDAL FINAL FORM -FB8A;N # ARABIC LETTER JEH ISOLATED FORM -FB8B;N # ARABIC LETTER JEH FINAL FORM -FB8C;N # ARABIC LETTER RREH ISOLATED FORM -FB8D;N # ARABIC LETTER RREH FINAL FORM -FB8E;N # ARABIC LETTER KEHEH ISOLATED FORM -FB8F;N # ARABIC LETTER KEHEH FINAL FORM -FB90;N # ARABIC LETTER KEHEH INITIAL FORM -FB91;N # ARABIC LETTER KEHEH MEDIAL FORM -FB92;N # ARABIC LETTER GAF ISOLATED FORM -FB93;N # ARABIC LETTER GAF FINAL FORM -FB94;N # ARABIC LETTER GAF INITIAL FORM -FB95;N # ARABIC LETTER GAF MEDIAL FORM -FB96;N # ARABIC LETTER GUEH ISOLATED FORM -FB97;N # ARABIC LETTER GUEH FINAL FORM -FB98;N # ARABIC LETTER GUEH INITIAL FORM -FB99;N # ARABIC LETTER GUEH MEDIAL FORM -FB9A;N # ARABIC LETTER NGOEH ISOLATED FORM -FB9B;N # ARABIC LETTER NGOEH FINAL FORM -FB9C;N # ARABIC LETTER NGOEH INITIAL FORM -FB9D;N # ARABIC LETTER NGOEH MEDIAL FORM -FB9E;N # ARABIC LETTER NOON GHUNNA ISOLATED FORM -FB9F;N # ARABIC LETTER NOON GHUNNA FINAL FORM -FBA0;N # ARABIC LETTER RNOON ISOLATED FORM -FBA1;N # ARABIC LETTER RNOON FINAL FORM -FBA2;N # ARABIC LETTER RNOON INITIAL FORM -FBA3;N # ARABIC LETTER RNOON MEDIAL FORM -FBA4;N # ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM -FBA5;N # ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM -FBA6;N # ARABIC LETTER HEH GOAL ISOLATED FORM -FBA7;N # ARABIC LETTER HEH GOAL FINAL FORM -FBA8;N # ARABIC LETTER HEH GOAL INITIAL FORM -FBA9;N # ARABIC LETTER HEH GOAL MEDIAL FORM -FBAA;N # ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM -FBAB;N # ARABIC LETTER HEH DOACHASHMEE FINAL FORM -FBAC;N # ARABIC LETTER HEH DOACHASHMEE INITIAL FORM -FBAD;N # ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM -FBAE;N # ARABIC LETTER YEH BARREE ISOLATED FORM -FBAF;N # ARABIC LETTER YEH BARREE FINAL FORM -FBB0;N # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM -FBB1;N # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM -FBD3;N # ARABIC LETTER NG ISOLATED FORM -FBD4;N # ARABIC LETTER NG FINAL FORM -FBD5;N # ARABIC LETTER NG INITIAL FORM -FBD6;N # ARABIC LETTER NG MEDIAL FORM -FBD7;N # ARABIC LETTER U ISOLATED FORM -FBD8;N # ARABIC LETTER U FINAL FORM -FBD9;N # ARABIC LETTER OE ISOLATED FORM -FBDA;N # ARABIC LETTER OE FINAL FORM -FBDB;N # ARABIC LETTER YU ISOLATED FORM -FBDC;N # ARABIC LETTER YU FINAL FORM -FBDD;N # ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM -FBDE;N # ARABIC LETTER VE ISOLATED FORM -FBDF;N # ARABIC LETTER VE FINAL FORM -FBE0;N # ARABIC LETTER KIRGHIZ OE ISOLATED FORM -FBE1;N # ARABIC LETTER KIRGHIZ OE FINAL FORM -FBE2;N # ARABIC LETTER KIRGHIZ YU ISOLATED FORM -FBE3;N # ARABIC LETTER KIRGHIZ YU FINAL FORM -FBE4;N # ARABIC LETTER E ISOLATED FORM -FBE5;N # ARABIC LETTER E FINAL FORM -FBE6;N # ARABIC LETTER E INITIAL FORM -FBE7;N # ARABIC LETTER E MEDIAL FORM -FBE8;N # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM -FBE9;N # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM -FBEA;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM -FBEB;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM -FBEC;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM -FBED;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM -FBEE;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM -FBEF;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM -FBF0;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM -FBF1;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM -FBF2;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM -FBF3;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM -FBF4;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM -FBF5;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM -FBF6;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM -FBF7;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM -FBF8;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM -FBF9;N # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM -FBFA;N # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM -FBFB;N # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM -FBFC;N # ARABIC LETTER FARSI YEH ISOLATED FORM -FBFD;N # ARABIC LETTER FARSI YEH FINAL FORM -FBFE;N # ARABIC LETTER FARSI YEH INITIAL FORM -FBFF;N # ARABIC LETTER FARSI YEH MEDIAL FORM -FC00;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM -FC01;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM -FC02;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM -FC03;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM -FC04;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM -FC05;N # ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM -FC06;N # ARABIC LIGATURE BEH WITH HAH ISOLATED FORM -FC07;N # ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM -FC08;N # ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM -FC09;N # ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM -FC0A;N # ARABIC LIGATURE BEH WITH YEH ISOLATED FORM -FC0B;N # ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM -FC0C;N # ARABIC LIGATURE TEH WITH HAH ISOLATED FORM -FC0D;N # ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM -FC0E;N # ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM -FC0F;N # ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM -FC10;N # ARABIC LIGATURE TEH WITH YEH ISOLATED FORM -FC11;N # ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM -FC12;N # ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM -FC13;N # ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM -FC14;N # ARABIC LIGATURE THEH WITH YEH ISOLATED FORM -FC15;N # ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM -FC16;N # ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM -FC17;N # ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM -FC18;N # ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM -FC19;N # ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM -FC1A;N # ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM -FC1B;N # ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM -FC1C;N # ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM -FC1D;N # ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM -FC1E;N # ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM -FC1F;N # ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM -FC20;N # ARABIC LIGATURE SAD WITH HAH ISOLATED FORM -FC21;N # ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM -FC22;N # ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM -FC23;N # ARABIC LIGATURE DAD WITH HAH ISOLATED FORM -FC24;N # ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM -FC25;N # ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM -FC26;N # ARABIC LIGATURE TAH WITH HAH ISOLATED FORM -FC27;N # ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM -FC28;N # ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM -FC29;N # ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM -FC2A;N # ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM -FC2B;N # ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM -FC2C;N # ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM -FC2D;N # ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM -FC2E;N # ARABIC LIGATURE FEH WITH HAH ISOLATED FORM -FC2F;N # ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM -FC30;N # ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM -FC31;N # ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM -FC32;N # ARABIC LIGATURE FEH WITH YEH ISOLATED FORM -FC33;N # ARABIC LIGATURE QAF WITH HAH ISOLATED FORM -FC34;N # ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM -FC35;N # ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM -FC36;N # ARABIC LIGATURE QAF WITH YEH ISOLATED FORM -FC37;N # ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM -FC38;N # ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM -FC39;N # ARABIC LIGATURE KAF WITH HAH ISOLATED FORM -FC3A;N # ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM -FC3B;N # ARABIC LIGATURE KAF WITH LAM ISOLATED FORM -FC3C;N # ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM -FC3D;N # ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM -FC3E;N # ARABIC LIGATURE KAF WITH YEH ISOLATED FORM -FC3F;N # ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM -FC40;N # ARABIC LIGATURE LAM WITH HAH ISOLATED FORM -FC41;N # ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM -FC42;N # ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM -FC43;N # ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM -FC44;N # ARABIC LIGATURE LAM WITH YEH ISOLATED FORM -FC45;N # ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM -FC46;N # ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM -FC47;N # ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM -FC48;N # ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM -FC49;N # ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM -FC4A;N # ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM -FC4B;N # ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM -FC4C;N # ARABIC LIGATURE NOON WITH HAH ISOLATED FORM -FC4D;N # ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM -FC4E;N # ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM -FC4F;N # ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM -FC50;N # ARABIC LIGATURE NOON WITH YEH ISOLATED FORM -FC51;N # ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM -FC52;N # ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM -FC53;N # ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM -FC54;N # ARABIC LIGATURE HEH WITH YEH ISOLATED FORM -FC55;N # ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM -FC56;N # ARABIC LIGATURE YEH WITH HAH ISOLATED FORM -FC57;N # ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM -FC58;N # ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM -FC59;N # ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM -FC5A;N # ARABIC LIGATURE YEH WITH YEH ISOLATED FORM -FC5B;N # ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM -FC5C;N # ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM -FC5D;N # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM -FC5E;N # ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM -FC5F;N # ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM -FC60;N # ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM -FC61;N # ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM -FC62;N # ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM -FC63;N # ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM -FC64;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM -FC65;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM -FC66;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM -FC67;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM -FC68;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM -FC69;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM -FC6A;N # ARABIC LIGATURE BEH WITH REH FINAL FORM -FC6B;N # ARABIC LIGATURE BEH WITH ZAIN FINAL FORM -FC6C;N # ARABIC LIGATURE BEH WITH MEEM FINAL FORM -FC6D;N # ARABIC LIGATURE BEH WITH NOON FINAL FORM -FC6E;N # ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM -FC6F;N # ARABIC LIGATURE BEH WITH YEH FINAL FORM -FC70;N # ARABIC LIGATURE TEH WITH REH FINAL FORM -FC71;N # ARABIC LIGATURE TEH WITH ZAIN FINAL FORM -FC72;N # ARABIC LIGATURE TEH WITH MEEM FINAL FORM -FC73;N # ARABIC LIGATURE TEH WITH NOON FINAL FORM -FC74;N # ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM -FC75;N # ARABIC LIGATURE TEH WITH YEH FINAL FORM -FC76;N # ARABIC LIGATURE THEH WITH REH FINAL FORM -FC77;N # ARABIC LIGATURE THEH WITH ZAIN FINAL FORM -FC78;N # ARABIC LIGATURE THEH WITH MEEM FINAL FORM -FC79;N # ARABIC LIGATURE THEH WITH NOON FINAL FORM -FC7A;N # ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM -FC7B;N # ARABIC LIGATURE THEH WITH YEH FINAL FORM -FC7C;N # ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM -FC7D;N # ARABIC LIGATURE FEH WITH YEH FINAL FORM -FC7E;N # ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM -FC7F;N # ARABIC LIGATURE QAF WITH YEH FINAL FORM -FC80;N # ARABIC LIGATURE KAF WITH ALEF FINAL FORM -FC81;N # ARABIC LIGATURE KAF WITH LAM FINAL FORM -FC82;N # ARABIC LIGATURE KAF WITH MEEM FINAL FORM -FC83;N # ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM -FC84;N # ARABIC LIGATURE KAF WITH YEH FINAL FORM -FC85;N # ARABIC LIGATURE LAM WITH MEEM FINAL FORM -FC86;N # ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM -FC87;N # ARABIC LIGATURE LAM WITH YEH FINAL FORM -FC88;N # ARABIC LIGATURE MEEM WITH ALEF FINAL FORM -FC89;N # ARABIC LIGATURE MEEM WITH MEEM FINAL FORM -FC8A;N # ARABIC LIGATURE NOON WITH REH FINAL FORM -FC8B;N # ARABIC LIGATURE NOON WITH ZAIN FINAL FORM -FC8C;N # ARABIC LIGATURE NOON WITH MEEM FINAL FORM -FC8D;N # ARABIC LIGATURE NOON WITH NOON FINAL FORM -FC8E;N # ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM -FC8F;N # ARABIC LIGATURE NOON WITH YEH FINAL FORM -FC90;N # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM -FC91;N # ARABIC LIGATURE YEH WITH REH FINAL FORM -FC92;N # ARABIC LIGATURE YEH WITH ZAIN FINAL FORM -FC93;N # ARABIC LIGATURE YEH WITH MEEM FINAL FORM -FC94;N # ARABIC LIGATURE YEH WITH NOON FINAL FORM -FC95;N # ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM -FC96;N # ARABIC LIGATURE YEH WITH YEH FINAL FORM -FC97;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM -FC98;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM -FC99;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM -FC9A;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM -FC9B;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM -FC9C;N # ARABIC LIGATURE BEH WITH JEEM INITIAL FORM -FC9D;N # ARABIC LIGATURE BEH WITH HAH INITIAL FORM -FC9E;N # ARABIC LIGATURE BEH WITH KHAH INITIAL FORM -FC9F;N # ARABIC LIGATURE BEH WITH MEEM INITIAL FORM -FCA0;N # ARABIC LIGATURE BEH WITH HEH INITIAL FORM -FCA1;N # ARABIC LIGATURE TEH WITH JEEM INITIAL FORM -FCA2;N # ARABIC LIGATURE TEH WITH HAH INITIAL FORM -FCA3;N # ARABIC LIGATURE TEH WITH KHAH INITIAL FORM -FCA4;N # ARABIC LIGATURE TEH WITH MEEM INITIAL FORM -FCA5;N # ARABIC LIGATURE TEH WITH HEH INITIAL FORM -FCA6;N # ARABIC LIGATURE THEH WITH MEEM INITIAL FORM -FCA7;N # ARABIC LIGATURE JEEM WITH HAH INITIAL FORM -FCA8;N # ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM -FCA9;N # ARABIC LIGATURE HAH WITH JEEM INITIAL FORM -FCAA;N # ARABIC LIGATURE HAH WITH MEEM INITIAL FORM -FCAB;N # ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM -FCAC;N # ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM -FCAD;N # ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM -FCAE;N # ARABIC LIGATURE SEEN WITH HAH INITIAL FORM -FCAF;N # ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM -FCB0;N # ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM -FCB1;N # ARABIC LIGATURE SAD WITH HAH INITIAL FORM -FCB2;N # ARABIC LIGATURE SAD WITH KHAH INITIAL FORM -FCB3;N # ARABIC LIGATURE SAD WITH MEEM INITIAL FORM -FCB4;N # ARABIC LIGATURE DAD WITH JEEM INITIAL FORM -FCB5;N # ARABIC LIGATURE DAD WITH HAH INITIAL FORM -FCB6;N # ARABIC LIGATURE DAD WITH KHAH INITIAL FORM -FCB7;N # ARABIC LIGATURE DAD WITH MEEM INITIAL FORM -FCB8;N # ARABIC LIGATURE TAH WITH HAH INITIAL FORM -FCB9;N # ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM -FCBA;N # ARABIC LIGATURE AIN WITH JEEM INITIAL FORM -FCBB;N # ARABIC LIGATURE AIN WITH MEEM INITIAL FORM -FCBC;N # ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM -FCBD;N # ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM -FCBE;N # ARABIC LIGATURE FEH WITH JEEM INITIAL FORM -FCBF;N # ARABIC LIGATURE FEH WITH HAH INITIAL FORM -FCC0;N # ARABIC LIGATURE FEH WITH KHAH INITIAL FORM -FCC1;N # ARABIC LIGATURE FEH WITH MEEM INITIAL FORM -FCC2;N # ARABIC LIGATURE QAF WITH HAH INITIAL FORM -FCC3;N # ARABIC LIGATURE QAF WITH MEEM INITIAL FORM -FCC4;N # ARABIC LIGATURE KAF WITH JEEM INITIAL FORM -FCC5;N # ARABIC LIGATURE KAF WITH HAH INITIAL FORM -FCC6;N # ARABIC LIGATURE KAF WITH KHAH INITIAL FORM -FCC7;N # ARABIC LIGATURE KAF WITH LAM INITIAL FORM -FCC8;N # ARABIC LIGATURE KAF WITH MEEM INITIAL FORM -FCC9;N # ARABIC LIGATURE LAM WITH JEEM INITIAL FORM -FCCA;N # ARABIC LIGATURE LAM WITH HAH INITIAL FORM -FCCB;N # ARABIC LIGATURE LAM WITH KHAH INITIAL FORM -FCCC;N # ARABIC LIGATURE LAM WITH MEEM INITIAL FORM -FCCD;N # ARABIC LIGATURE LAM WITH HEH INITIAL FORM -FCCE;N # ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM -FCCF;N # ARABIC LIGATURE MEEM WITH HAH INITIAL FORM -FCD0;N # ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM -FCD1;N # ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM -FCD2;N # ARABIC LIGATURE NOON WITH JEEM INITIAL FORM -FCD3;N # ARABIC LIGATURE NOON WITH HAH INITIAL FORM -FCD4;N # ARABIC LIGATURE NOON WITH KHAH INITIAL FORM -FCD5;N # ARABIC LIGATURE NOON WITH MEEM INITIAL FORM -FCD6;N # ARABIC LIGATURE NOON WITH HEH INITIAL FORM -FCD7;N # ARABIC LIGATURE HEH WITH JEEM INITIAL FORM -FCD8;N # ARABIC LIGATURE HEH WITH MEEM INITIAL FORM -FCD9;N # ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM -FCDA;N # ARABIC LIGATURE YEH WITH JEEM INITIAL FORM -FCDB;N # ARABIC LIGATURE YEH WITH HAH INITIAL FORM -FCDC;N # ARABIC LIGATURE YEH WITH KHAH INITIAL FORM -FCDD;N # ARABIC LIGATURE YEH WITH MEEM INITIAL FORM -FCDE;N # ARABIC LIGATURE YEH WITH HEH INITIAL FORM -FCDF;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM -FCE0;N # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM -FCE1;N # ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM -FCE2;N # ARABIC LIGATURE BEH WITH HEH MEDIAL FORM -FCE3;N # ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM -FCE4;N # ARABIC LIGATURE TEH WITH HEH MEDIAL FORM -FCE5;N # ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM -FCE6;N # ARABIC LIGATURE THEH WITH HEH MEDIAL FORM -FCE7;N # ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM -FCE8;N # ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM -FCE9;N # ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM -FCEA;N # ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM -FCEB;N # ARABIC LIGATURE KAF WITH LAM MEDIAL FORM -FCEC;N # ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM -FCED;N # ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM -FCEE;N # ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM -FCEF;N # ARABIC LIGATURE NOON WITH HEH MEDIAL FORM -FCF0;N # ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM -FCF1;N # ARABIC LIGATURE YEH WITH HEH MEDIAL FORM -FCF2;N # ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM -FCF3;N # ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM -FCF4;N # ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM -FCF5;N # ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM -FCF6;N # ARABIC LIGATURE TAH WITH YEH ISOLATED FORM -FCF7;N # ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM -FCF8;N # ARABIC LIGATURE AIN WITH YEH ISOLATED FORM -FCF9;N # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM -FCFA;N # ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM -FCFB;N # ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM -FCFC;N # ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM -FCFD;N # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM -FCFE;N # ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM -FCFF;N # ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM -FD00;N # ARABIC LIGATURE HAH WITH YEH ISOLATED FORM -FD01;N # ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM -FD02;N # ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM -FD03;N # ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM -FD04;N # ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM -FD05;N # ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM -FD06;N # ARABIC LIGATURE SAD WITH YEH ISOLATED FORM -FD07;N # ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM -FD08;N # ARABIC LIGATURE DAD WITH YEH ISOLATED FORM -FD09;N # ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM -FD0A;N # ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM -FD0B;N # ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM -FD0C;N # ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM -FD0D;N # ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM -FD0E;N # ARABIC LIGATURE SEEN WITH REH ISOLATED FORM -FD0F;N # ARABIC LIGATURE SAD WITH REH ISOLATED FORM -FD10;N # ARABIC LIGATURE DAD WITH REH ISOLATED FORM -FD11;N # ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM -FD12;N # ARABIC LIGATURE TAH WITH YEH FINAL FORM -FD13;N # ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM -FD14;N # ARABIC LIGATURE AIN WITH YEH FINAL FORM -FD15;N # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM -FD16;N # ARABIC LIGATURE GHAIN WITH YEH FINAL FORM -FD17;N # ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM -FD18;N # ARABIC LIGATURE SEEN WITH YEH FINAL FORM -FD19;N # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM -FD1A;N # ARABIC LIGATURE SHEEN WITH YEH FINAL FORM -FD1B;N # ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM -FD1C;N # ARABIC LIGATURE HAH WITH YEH FINAL FORM -FD1D;N # ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM -FD1E;N # ARABIC LIGATURE JEEM WITH YEH FINAL FORM -FD1F;N # ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM -FD20;N # ARABIC LIGATURE KHAH WITH YEH FINAL FORM -FD21;N # ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM -FD22;N # ARABIC LIGATURE SAD WITH YEH FINAL FORM -FD23;N # ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM -FD24;N # ARABIC LIGATURE DAD WITH YEH FINAL FORM -FD25;N # ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM -FD26;N # ARABIC LIGATURE SHEEN WITH HAH FINAL FORM -FD27;N # ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM -FD28;N # ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM -FD29;N # ARABIC LIGATURE SHEEN WITH REH FINAL FORM -FD2A;N # ARABIC LIGATURE SEEN WITH REH FINAL FORM -FD2B;N # ARABIC LIGATURE SAD WITH REH FINAL FORM -FD2C;N # ARABIC LIGATURE DAD WITH REH FINAL FORM -FD2D;N # ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM -FD2E;N # ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM -FD2F;N # ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM -FD30;N # ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM -FD31;N # ARABIC LIGATURE SEEN WITH HEH INITIAL FORM -FD32;N # ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM -FD33;N # ARABIC LIGATURE TAH WITH MEEM INITIAL FORM -FD34;N # ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM -FD35;N # ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM -FD36;N # ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM -FD37;N # ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM -FD38;N # ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM -FD39;N # ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM -FD3A;N # ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM -FD3B;N # ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM -FD3C;N # ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM -FD3D;N # ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM -FD3E;N # ORNATE LEFT PARENTHESIS -FD3F;N # ORNATE RIGHT PARENTHESIS -FD50;N # ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM -FD51;N # ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM -FD52;N # ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM -FD53;N # ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM -FD54;N # ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM -FD55;N # ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM -FD56;N # ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM -FD57;N # ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM -FD58;N # ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM -FD59;N # ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM -FD5A;N # ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM -FD5B;N # ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD5C;N # ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM -FD5D;N # ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM -FD5E;N # ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM -FD5F;N # ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM -FD60;N # ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM -FD61;N # ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM -FD62;N # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM -FD63;N # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM -FD64;N # ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM -FD65;N # ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM -FD66;N # ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM -FD67;N # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM -FD68;N # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM -FD69;N # ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM -FD6A;N # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM -FD6B;N # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM -FD6C;N # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM -FD6D;N # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM -FD6E;N # ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM -FD6F;N # ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM -FD70;N # ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM -FD71;N # ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM -FD72;N # ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM -FD73;N # ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM -FD74;N # ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM -FD75;N # ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM -FD76;N # ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM -FD77;N # ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM -FD78;N # ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD79;N # ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM -FD7A;N # ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM -FD7B;N # ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD7C;N # ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM -FD7D;N # ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM -FD7E;N # ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM -FD7F;N # ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM -FD80;N # ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM -FD81;N # ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM -FD82;N # ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM -FD83;N # ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM -FD84;N # ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM -FD85;N # ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM -FD86;N # ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM -FD87;N # ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM -FD88;N # ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM -FD89;N # ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM -FD8A;N # ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM -FD8B;N # ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM -FD8C;N # ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM -FD8D;N # ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM -FD8E;N # ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM -FD8F;N # ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM -FD92;N # ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM -FD93;N # ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM -FD94;N # ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM -FD95;N # ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM -FD96;N # ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM -FD97;N # ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM -FD98;N # ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM -FD99;N # ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM -FD9A;N # ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM -FD9B;N # ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD9C;N # ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM -FD9D;N # ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM -FD9E;N # ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM -FD9F;N # ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM -FDA0;N # ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM -FDA1;N # ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM -FDA2;N # ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM -FDA3;N # ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM -FDA4;N # ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM -FDA5;N # ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM -FDA6;N # ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM -FDA7;N # ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM -FDA8;N # ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM -FDA9;N # ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM -FDAA;N # ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM -FDAB;N # ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM -FDAC;N # ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM -FDAD;N # ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM -FDAE;N # ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM -FDAF;N # ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM -FDB0;N # ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM -FDB1;N # ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM -FDB2;N # ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM -FDB3;N # ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM -FDB4;N # ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM -FDB5;N # ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM -FDB6;N # ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM -FDB7;N # ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM -FDB8;N # ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM -FDB9;N # ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM -FDBA;N # ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM -FDBB;N # ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM -FDBC;N # ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM -FDBD;N # ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM -FDBE;N # ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM -FDBF;N # ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM -FDC0;N # ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM -FDC1;N # ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM -FDC2;N # ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM -FDC3;N # ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM -FDC4;N # ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM -FDC5;N # ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM -FDC6;N # ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM -FDC7;N # ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM -FDF0;N # ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM -FDF1;N # ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM -FDF2;N # ARABIC LIGATURE ALLAH ISOLATED FORM -FDF3;N # ARABIC LIGATURE AKBAR ISOLATED FORM -FDF4;N # ARABIC LIGATURE MOHAMMAD ISOLATED FORM -FDF5;N # ARABIC LIGATURE SALAM ISOLATED FORM -FDF6;N # ARABIC LIGATURE RASOUL ISOLATED FORM -FDF7;N # ARABIC LIGATURE ALAYHE ISOLATED FORM -FDF8;N # ARABIC LIGATURE WASALLAM ISOLATED FORM -FDF9;N # ARABIC LIGATURE SALLA ISOLATED FORM -FDFA;N # ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM -FDFB;N # ARABIC LIGATURE JALLAJALALOUHOU -FDFC;N # RIAL SIGN -FDFD;N # ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM -FE00;A # VARIATION SELECTOR-1 -FE01;A # VARIATION SELECTOR-2 -FE02;A # VARIATION SELECTOR-3 -FE03;A # VARIATION SELECTOR-4 -FE04;A # VARIATION SELECTOR-5 -FE05;A # VARIATION SELECTOR-6 -FE06;A # VARIATION SELECTOR-7 -FE07;A # VARIATION SELECTOR-8 -FE08;A # VARIATION SELECTOR-9 -FE09;A # VARIATION SELECTOR-10 -FE0A;A # VARIATION SELECTOR-11 -FE0B;A # VARIATION SELECTOR-12 -FE0C;A # VARIATION SELECTOR-13 -FE0D;A # VARIATION SELECTOR-14 -FE0E;A # VARIATION SELECTOR-15 -FE0F;A # VARIATION SELECTOR-16 -FE10;W # PRESENTATION FORM FOR VERTICAL COMMA -FE11;W # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA -FE12;W # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP -FE13;W # PRESENTATION FORM FOR VERTICAL COLON -FE14;W # PRESENTATION FORM FOR VERTICAL SEMICOLON -FE15;W # PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK -FE16;W # PRESENTATION FORM FOR VERTICAL QUESTION MARK -FE17;W # PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET -FE18;W # PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET -FE19;W # PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS -FE20;N # COMBINING LIGATURE LEFT HALF -FE21;N # COMBINING LIGATURE RIGHT HALF -FE22;N # COMBINING DOUBLE TILDE LEFT HALF -FE23;N # COMBINING DOUBLE TILDE RIGHT HALF -FE30;W # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER -FE31;W # PRESENTATION FORM FOR VERTICAL EM DASH -FE32;W # PRESENTATION FORM FOR VERTICAL EN DASH -FE33;W # PRESENTATION FORM FOR VERTICAL LOW LINE -FE34;W # PRESENTATION FORM FOR VERTICAL WAVY LOW LINE -FE35;W # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS -FE36;W # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS -FE37;W # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET -FE38;W # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET -FE39;W # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET -FE3A;W # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET -FE3B;W # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET -FE3C;W # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET -FE3D;W # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET -FE3E;W # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET -FE3F;W # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET -FE40;W # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET -FE41;W # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET -FE42;W # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET -FE43;W # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET -FE44;W # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET -FE45;W # SESAME DOT -FE46;W # WHITE SESAME DOT -FE47;W # PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET -FE48;W # PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET -FE49;W # DASHED OVERLINE -FE4A;W # CENTRELINE OVERLINE -FE4B;W # WAVY OVERLINE -FE4C;W # DOUBLE WAVY OVERLINE -FE4D;W # DASHED LOW LINE -FE4E;W # CENTRELINE LOW LINE -FE4F;W # WAVY LOW LINE -FE50;W # SMALL COMMA -FE51;W # SMALL IDEOGRAPHIC COMMA -FE52;W # SMALL FULL STOP -FE54;W # SMALL SEMICOLON -FE55;W # SMALL COLON -FE56;W # SMALL QUESTION MARK -FE57;W # SMALL EXCLAMATION MARK -FE58;W # SMALL EM DASH -FE59;W # SMALL LEFT PARENTHESIS -FE5A;W # SMALL RIGHT PARENTHESIS -FE5B;W # SMALL LEFT CURLY BRACKET -FE5C;W # SMALL RIGHT CURLY BRACKET -FE5D;W # SMALL LEFT TORTOISE SHELL BRACKET -FE5E;W # SMALL RIGHT TORTOISE SHELL BRACKET -FE5F;W # SMALL NUMBER SIGN -FE60;W # SMALL AMPERSAND -FE61;W # SMALL ASTERISK -FE62;W # SMALL PLUS SIGN -FE63;W # SMALL HYPHEN-MINUS -FE64;W # SMALL LESS-THAN SIGN -FE65;W # SMALL GREATER-THAN SIGN -FE66;W # SMALL EQUALS SIGN -FE68;W # SMALL REVERSE SOLIDUS -FE69;W # SMALL DOLLAR SIGN -FE6A;W # SMALL PERCENT SIGN -FE6B;W # SMALL COMMERCIAL AT -FE70;N # ARABIC FATHATAN ISOLATED FORM -FE71;N # ARABIC TATWEEL WITH FATHATAN ABOVE -FE72;N # ARABIC DAMMATAN ISOLATED FORM -FE73;N # ARABIC TAIL FRAGMENT -FE74;N # ARABIC KASRATAN ISOLATED FORM -FE76;N # ARABIC FATHA ISOLATED FORM -FE77;N # ARABIC FATHA MEDIAL FORM -FE78;N # ARABIC DAMMA ISOLATED FORM -FE79;N # ARABIC DAMMA MEDIAL FORM -FE7A;N # ARABIC KASRA ISOLATED FORM -FE7B;N # ARABIC KASRA MEDIAL FORM -FE7C;N # ARABIC SHADDA ISOLATED FORM -FE7D;N # ARABIC SHADDA MEDIAL FORM -FE7E;N # ARABIC SUKUN ISOLATED FORM -FE7F;N # ARABIC SUKUN MEDIAL FORM -FE80;N # ARABIC LETTER HAMZA ISOLATED FORM -FE81;N # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM -FE82;N # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM -FE83;N # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM -FE84;N # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM -FE85;N # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM -FE86;N # ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM -FE87;N # ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM -FE88;N # ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM -FE89;N # ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM -FE8A;N # ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM -FE8B;N # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM -FE8C;N # ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM -FE8D;N # ARABIC LETTER ALEF ISOLATED FORM -FE8E;N # ARABIC LETTER ALEF FINAL FORM -FE8F;N # ARABIC LETTER BEH ISOLATED FORM -FE90;N # ARABIC LETTER BEH FINAL FORM -FE91;N # ARABIC LETTER BEH INITIAL FORM -FE92;N # ARABIC LETTER BEH MEDIAL FORM -FE93;N # ARABIC LETTER TEH MARBUTA ISOLATED FORM -FE94;N # ARABIC LETTER TEH MARBUTA FINAL FORM -FE95;N # ARABIC LETTER TEH ISOLATED FORM -FE96;N # ARABIC LETTER TEH FINAL FORM -FE97;N # ARABIC LETTER TEH INITIAL FORM -FE98;N # ARABIC LETTER TEH MEDIAL FORM -FE99;N # ARABIC LETTER THEH ISOLATED FORM -FE9A;N # ARABIC LETTER THEH FINAL FORM -FE9B;N # ARABIC LETTER THEH INITIAL FORM -FE9C;N # ARABIC LETTER THEH MEDIAL FORM -FE9D;N # ARABIC LETTER JEEM ISOLATED FORM -FE9E;N # ARABIC LETTER JEEM FINAL FORM -FE9F;N # ARABIC LETTER JEEM INITIAL FORM -FEA0;N # ARABIC LETTER JEEM MEDIAL FORM -FEA1;N # ARABIC LETTER HAH ISOLATED FORM -FEA2;N # ARABIC LETTER HAH FINAL FORM -FEA3;N # ARABIC LETTER HAH INITIAL FORM -FEA4;N # ARABIC LETTER HAH MEDIAL FORM -FEA5;N # ARABIC LETTER KHAH ISOLATED FORM -FEA6;N # ARABIC LETTER KHAH FINAL FORM -FEA7;N # ARABIC LETTER KHAH INITIAL FORM -FEA8;N # ARABIC LETTER KHAH MEDIAL FORM -FEA9;N # ARABIC LETTER DAL ISOLATED FORM -FEAA;N # ARABIC LETTER DAL FINAL FORM -FEAB;N # ARABIC LETTER THAL ISOLATED FORM -FEAC;N # ARABIC LETTER THAL FINAL FORM -FEAD;N # ARABIC LETTER REH ISOLATED FORM -FEAE;N # ARABIC LETTER REH FINAL FORM -FEAF;N # ARABIC LETTER ZAIN ISOLATED FORM -FEB0;N # ARABIC LETTER ZAIN FINAL FORM -FEB1;N # ARABIC LETTER SEEN ISOLATED FORM -FEB2;N # ARABIC LETTER SEEN FINAL FORM -FEB3;N # ARABIC LETTER SEEN INITIAL FORM -FEB4;N # ARABIC LETTER SEEN MEDIAL FORM -FEB5;N # ARABIC LETTER SHEEN ISOLATED FORM -FEB6;N # ARABIC LETTER SHEEN FINAL FORM -FEB7;N # ARABIC LETTER SHEEN INITIAL FORM -FEB8;N # ARABIC LETTER SHEEN MEDIAL FORM -FEB9;N # ARABIC LETTER SAD ISOLATED FORM -FEBA;N # ARABIC LETTER SAD FINAL FORM -FEBB;N # ARABIC LETTER SAD INITIAL FORM -FEBC;N # ARABIC LETTER SAD MEDIAL FORM -FEBD;N # ARABIC LETTER DAD ISOLATED FORM -FEBE;N # ARABIC LETTER DAD FINAL FORM -FEBF;N # ARABIC LETTER DAD INITIAL FORM -FEC0;N # ARABIC LETTER DAD MEDIAL FORM -FEC1;N # ARABIC LETTER TAH ISOLATED FORM -FEC2;N # ARABIC LETTER TAH FINAL FORM -FEC3;N # ARABIC LETTER TAH INITIAL FORM -FEC4;N # ARABIC LETTER TAH MEDIAL FORM -FEC5;N # ARABIC LETTER ZAH ISOLATED FORM -FEC6;N # ARABIC LETTER ZAH FINAL FORM -FEC7;N # ARABIC LETTER ZAH INITIAL FORM -FEC8;N # ARABIC LETTER ZAH MEDIAL FORM -FEC9;N # ARABIC LETTER AIN ISOLATED FORM -FECA;N # ARABIC LETTER AIN FINAL FORM -FECB;N # ARABIC LETTER AIN INITIAL FORM -FECC;N # ARABIC LETTER AIN MEDIAL FORM -FECD;N # ARABIC LETTER GHAIN ISOLATED FORM -FECE;N # ARABIC LETTER GHAIN FINAL FORM -FECF;N # ARABIC LETTER GHAIN INITIAL FORM -FED0;N # ARABIC LETTER GHAIN MEDIAL FORM -FED1;N # ARABIC LETTER FEH ISOLATED FORM -FED2;N # ARABIC LETTER FEH FINAL FORM -FED3;N # ARABIC LETTER FEH INITIAL FORM -FED4;N # ARABIC LETTER FEH MEDIAL FORM -FED5;N # ARABIC LETTER QAF ISOLATED FORM -FED6;N # ARABIC LETTER QAF FINAL FORM -FED7;N # ARABIC LETTER QAF INITIAL FORM -FED8;N # ARABIC LETTER QAF MEDIAL FORM -FED9;N # ARABIC LETTER KAF ISOLATED FORM -FEDA;N # ARABIC LETTER KAF FINAL FORM -FEDB;N # ARABIC LETTER KAF INITIAL FORM -FEDC;N # ARABIC LETTER KAF MEDIAL FORM -FEDD;N # ARABIC LETTER LAM ISOLATED FORM -FEDE;N # ARABIC LETTER LAM FINAL FORM -FEDF;N # ARABIC LETTER LAM INITIAL FORM -FEE0;N # ARABIC LETTER LAM MEDIAL FORM -FEE1;N # ARABIC LETTER MEEM ISOLATED FORM -FEE2;N # ARABIC LETTER MEEM FINAL FORM -FEE3;N # ARABIC LETTER MEEM INITIAL FORM -FEE4;N # ARABIC LETTER MEEM MEDIAL FORM -FEE5;N # ARABIC LETTER NOON ISOLATED FORM -FEE6;N # ARABIC LETTER NOON FINAL FORM -FEE7;N # ARABIC LETTER NOON INITIAL FORM -FEE8;N # ARABIC LETTER NOON MEDIAL FORM -FEE9;N # ARABIC LETTER HEH ISOLATED FORM -FEEA;N # ARABIC LETTER HEH FINAL FORM -FEEB;N # ARABIC LETTER HEH INITIAL FORM -FEEC;N # ARABIC LETTER HEH MEDIAL FORM -FEED;N # ARABIC LETTER WAW ISOLATED FORM -FEEE;N # ARABIC LETTER WAW FINAL FORM -FEEF;N # ARABIC LETTER ALEF MAKSURA ISOLATED FORM -FEF0;N # ARABIC LETTER ALEF MAKSURA FINAL FORM -FEF1;N # ARABIC LETTER YEH ISOLATED FORM -FEF2;N # ARABIC LETTER YEH FINAL FORM -FEF3;N # ARABIC LETTER YEH INITIAL FORM -FEF4;N # ARABIC LETTER YEH MEDIAL FORM -FEF5;N # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM -FEF6;N # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM -FEF7;N # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM -FEF8;N # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM -FEF9;N # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM -FEFA;N # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM -FEFB;N # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM -FEFC;N # ARABIC LIGATURE LAM WITH ALEF FINAL FORM -FEFF;N # ZERO WIDTH NO-BREAK SPACE -FF01;F # FULLWIDTH EXCLAMATION MARK -FF02;F # FULLWIDTH QUOTATION MARK -FF03;F # FULLWIDTH NUMBER SIGN -FF04;F # FULLWIDTH DOLLAR SIGN -FF05;F # FULLWIDTH PERCENT SIGN -FF06;F # FULLWIDTH AMPERSAND -FF07;F # FULLWIDTH APOSTROPHE -FF08;F # FULLWIDTH LEFT PARENTHESIS -FF09;F # FULLWIDTH RIGHT PARENTHESIS -FF0A;F # FULLWIDTH ASTERISK -FF0B;F # FULLWIDTH PLUS SIGN -FF0C;F # FULLWIDTH COMMA -FF0D;F # FULLWIDTH HYPHEN-MINUS -FF0E;F # FULLWIDTH FULL STOP -FF0F;F # FULLWIDTH SOLIDUS -FF10;F # FULLWIDTH DIGIT ZERO -FF11;F # FULLWIDTH DIGIT ONE -FF12;F # FULLWIDTH DIGIT TWO -FF13;F # FULLWIDTH DIGIT THREE -FF14;F # FULLWIDTH DIGIT FOUR -FF15;F # FULLWIDTH DIGIT FIVE -FF16;F # FULLWIDTH DIGIT SIX -FF17;F # FULLWIDTH DIGIT SEVEN -FF18;F # FULLWIDTH DIGIT EIGHT -FF19;F # FULLWIDTH DIGIT NINE -FF1A;F # FULLWIDTH COLON -FF1B;F # FULLWIDTH SEMICOLON -FF1C;F # FULLWIDTH LESS-THAN SIGN -FF1D;F # FULLWIDTH EQUALS SIGN -FF1E;F # FULLWIDTH GREATER-THAN SIGN -FF1F;F # FULLWIDTH QUESTION MARK -FF20;F # FULLWIDTH COMMERCIAL AT -FF21;F # FULLWIDTH LATIN CAPITAL LETTER A -FF22;F # FULLWIDTH LATIN CAPITAL LETTER B -FF23;F # FULLWIDTH LATIN CAPITAL LETTER C -FF24;F # FULLWIDTH LATIN CAPITAL LETTER D -FF25;F # FULLWIDTH LATIN CAPITAL LETTER E -FF26;F # FULLWIDTH LATIN CAPITAL LETTER F -FF27;F # FULLWIDTH LATIN CAPITAL LETTER G -FF28;F # FULLWIDTH LATIN CAPITAL LETTER H -FF29;F # FULLWIDTH LATIN CAPITAL LETTER I -FF2A;F # FULLWIDTH LATIN CAPITAL LETTER J -FF2B;F # FULLWIDTH LATIN CAPITAL LETTER K -FF2C;F # FULLWIDTH LATIN CAPITAL LETTER L -FF2D;F # FULLWIDTH LATIN CAPITAL LETTER M -FF2E;F # FULLWIDTH LATIN CAPITAL LETTER N -FF2F;F # FULLWIDTH LATIN CAPITAL LETTER O -FF30;F # FULLWIDTH LATIN CAPITAL LETTER P -FF31;F # FULLWIDTH LATIN CAPITAL LETTER Q -FF32;F # FULLWIDTH LATIN CAPITAL LETTER R -FF33;F # FULLWIDTH LATIN CAPITAL LETTER S -FF34;F # FULLWIDTH LATIN CAPITAL LETTER T -FF35;F # FULLWIDTH LATIN CAPITAL LETTER U -FF36;F # FULLWIDTH LATIN CAPITAL LETTER V -FF37;F # FULLWIDTH LATIN CAPITAL LETTER W -FF38;F # FULLWIDTH LATIN CAPITAL LETTER X -FF39;F # FULLWIDTH LATIN CAPITAL LETTER Y -FF3A;F # FULLWIDTH LATIN CAPITAL LETTER Z -FF3B;F # FULLWIDTH LEFT SQUARE BRACKET -FF3C;F # FULLWIDTH REVERSE SOLIDUS -FF3D;F # FULLWIDTH RIGHT SQUARE BRACKET -FF3E;F # FULLWIDTH CIRCUMFLEX ACCENT -FF3F;F # FULLWIDTH LOW LINE -FF40;F # FULLWIDTH GRAVE ACCENT -FF41;F # FULLWIDTH LATIN SMALL LETTER A -FF42;F # FULLWIDTH LATIN SMALL LETTER B -FF43;F # FULLWIDTH LATIN SMALL LETTER C -FF44;F # FULLWIDTH LATIN SMALL LETTER D -FF45;F # FULLWIDTH LATIN SMALL LETTER E -FF46;F # FULLWIDTH LATIN SMALL LETTER F -FF47;F # FULLWIDTH LATIN SMALL LETTER G -FF48;F # FULLWIDTH LATIN SMALL LETTER H -FF49;F # FULLWIDTH LATIN SMALL LETTER I -FF4A;F # FULLWIDTH LATIN SMALL LETTER J -FF4B;F # FULLWIDTH LATIN SMALL LETTER K -FF4C;F # FULLWIDTH LATIN SMALL LETTER L -FF4D;F # FULLWIDTH LATIN SMALL LETTER M -FF4E;F # FULLWIDTH LATIN SMALL LETTER N -FF4F;F # FULLWIDTH LATIN SMALL LETTER O -FF50;F # FULLWIDTH LATIN SMALL LETTER P -FF51;F # FULLWIDTH LATIN SMALL LETTER Q -FF52;F # FULLWIDTH LATIN SMALL LETTER R -FF53;F # FULLWIDTH LATIN SMALL LETTER S -FF54;F # FULLWIDTH LATIN SMALL LETTER T -FF55;F # FULLWIDTH LATIN SMALL LETTER U -FF56;F # FULLWIDTH LATIN SMALL LETTER V -FF57;F # FULLWIDTH LATIN SMALL LETTER W -FF58;F # FULLWIDTH LATIN SMALL LETTER X -FF59;F # FULLWIDTH LATIN SMALL LETTER Y -FF5A;F # FULLWIDTH LATIN SMALL LETTER Z -FF5B;F # FULLWIDTH LEFT CURLY BRACKET -FF5C;F # FULLWIDTH VERTICAL LINE -FF5D;F # FULLWIDTH RIGHT CURLY BRACKET -FF5E;F # FULLWIDTH TILDE -FF5F;F # FULLWIDTH LEFT WHITE PARENTHESIS -FF60;F # FULLWIDTH RIGHT WHITE PARENTHESIS -FF61;H # HALFWIDTH IDEOGRAPHIC FULL STOP -FF62;H # HALFWIDTH LEFT CORNER BRACKET -FF63;H # HALFWIDTH RIGHT CORNER BRACKET -FF64;H # HALFWIDTH IDEOGRAPHIC COMMA -FF65;H # HALFWIDTH KATAKANA MIDDLE DOT -FF66;H # HALFWIDTH KATAKANA LETTER WO -FF67;H # HALFWIDTH KATAKANA LETTER SMALL A -FF68;H # HALFWIDTH KATAKANA LETTER SMALL I -FF69;H # HALFWIDTH KATAKANA LETTER SMALL U -FF6A;H # HALFWIDTH KATAKANA LETTER SMALL E -FF6B;H # HALFWIDTH KATAKANA LETTER SMALL O -FF6C;H # HALFWIDTH KATAKANA LETTER SMALL YA -FF6D;H # HALFWIDTH KATAKANA LETTER SMALL YU -FF6E;H # HALFWIDTH KATAKANA LETTER SMALL YO -FF6F;H # HALFWIDTH KATAKANA LETTER SMALL TU -FF70;H # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK -FF71;H # HALFWIDTH KATAKANA LETTER A -FF72;H # HALFWIDTH KATAKANA LETTER I -FF73;H # HALFWIDTH KATAKANA LETTER U -FF74;H # HALFWIDTH KATAKANA LETTER E -FF75;H # HALFWIDTH KATAKANA LETTER O -FF76;H # HALFWIDTH KATAKANA LETTER KA -FF77;H # HALFWIDTH KATAKANA LETTER KI -FF78;H # HALFWIDTH KATAKANA LETTER KU -FF79;H # HALFWIDTH KATAKANA LETTER KE -FF7A;H # HALFWIDTH KATAKANA LETTER KO -FF7B;H # HALFWIDTH KATAKANA LETTER SA -FF7C;H # HALFWIDTH KATAKANA LETTER SI -FF7D;H # HALFWIDTH KATAKANA LETTER SU -FF7E;H # HALFWIDTH KATAKANA LETTER SE -FF7F;H # HALFWIDTH KATAKANA LETTER SO -FF80;H # HALFWIDTH KATAKANA LETTER TA -FF81;H # HALFWIDTH KATAKANA LETTER TI -FF82;H # HALFWIDTH KATAKANA LETTER TU -FF83;H # HALFWIDTH KATAKANA LETTER TE -FF84;H # HALFWIDTH KATAKANA LETTER TO -FF85;H # HALFWIDTH KATAKANA LETTER NA -FF86;H # HALFWIDTH KATAKANA LETTER NI -FF87;H # HALFWIDTH KATAKANA LETTER NU -FF88;H # HALFWIDTH KATAKANA LETTER NE -FF89;H # HALFWIDTH KATAKANA LETTER NO -FF8A;H # HALFWIDTH KATAKANA LETTER HA -FF8B;H # HALFWIDTH KATAKANA LETTER HI -FF8C;H # HALFWIDTH KATAKANA LETTER HU -FF8D;H # HALFWIDTH KATAKANA LETTER HE -FF8E;H # HALFWIDTH KATAKANA LETTER HO -FF8F;H # HALFWIDTH KATAKANA LETTER MA -FF90;H # HALFWIDTH KATAKANA LETTER MI -FF91;H # HALFWIDTH KATAKANA LETTER MU -FF92;H # HALFWIDTH KATAKANA LETTER ME -FF93;H # HALFWIDTH KATAKANA LETTER MO -FF94;H # HALFWIDTH KATAKANA LETTER YA -FF95;H # HALFWIDTH KATAKANA LETTER YU -FF96;H # HALFWIDTH KATAKANA LETTER YO -FF97;H # HALFWIDTH KATAKANA LETTER RA -FF98;H # HALFWIDTH KATAKANA LETTER RI -FF99;H # HALFWIDTH KATAKANA LETTER RU -FF9A;H # HALFWIDTH KATAKANA LETTER RE -FF9B;H # HALFWIDTH KATAKANA LETTER RO -FF9C;H # HALFWIDTH KATAKANA LETTER WA -FF9D;H # HALFWIDTH KATAKANA LETTER N -FF9E;H # HALFWIDTH KATAKANA VOICED SOUND MARK -FF9F;H # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK -FFA0;H # HALFWIDTH HANGUL FILLER -FFA1;H # HALFWIDTH HANGUL LETTER KIYEOK -FFA2;H # HALFWIDTH HANGUL LETTER SSANGKIYEOK -FFA3;H # HALFWIDTH HANGUL LETTER KIYEOK-SIOS -FFA4;H # HALFWIDTH HANGUL LETTER NIEUN -FFA5;H # HALFWIDTH HANGUL LETTER NIEUN-CIEUC -FFA6;H # HALFWIDTH HANGUL LETTER NIEUN-HIEUH -FFA7;H # HALFWIDTH HANGUL LETTER TIKEUT -FFA8;H # HALFWIDTH HANGUL LETTER SSANGTIKEUT -FFA9;H # HALFWIDTH HANGUL LETTER RIEUL -FFAA;H # HALFWIDTH HANGUL LETTER RIEUL-KIYEOK -FFAB;H # HALFWIDTH HANGUL LETTER RIEUL-MIEUM -FFAC;H # HALFWIDTH HANGUL LETTER RIEUL-PIEUP -FFAD;H # HALFWIDTH HANGUL LETTER RIEUL-SIOS -FFAE;H # HALFWIDTH HANGUL LETTER RIEUL-THIEUTH -FFAF;H # HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH -FFB0;H # HALFWIDTH HANGUL LETTER RIEUL-HIEUH -FFB1;H # HALFWIDTH HANGUL LETTER MIEUM -FFB2;H # HALFWIDTH HANGUL LETTER PIEUP -FFB3;H # HALFWIDTH HANGUL LETTER SSANGPIEUP -FFB4;H # HALFWIDTH HANGUL LETTER PIEUP-SIOS -FFB5;H # HALFWIDTH HANGUL LETTER SIOS -FFB6;H # HALFWIDTH HANGUL LETTER SSANGSIOS -FFB7;H # HALFWIDTH HANGUL LETTER IEUNG -FFB8;H # HALFWIDTH HANGUL LETTER CIEUC -FFB9;H # HALFWIDTH HANGUL LETTER SSANGCIEUC -FFBA;H # HALFWIDTH HANGUL LETTER CHIEUCH -FFBB;H # HALFWIDTH HANGUL LETTER KHIEUKH -FFBC;H # HALFWIDTH HANGUL LETTER THIEUTH -FFBD;H # HALFWIDTH HANGUL LETTER PHIEUPH -FFBE;H # HALFWIDTH HANGUL LETTER HIEUH -FFC2;H # HALFWIDTH HANGUL LETTER A -FFC3;H # HALFWIDTH HANGUL LETTER AE -FFC4;H # HALFWIDTH HANGUL LETTER YA -FFC5;H # HALFWIDTH HANGUL LETTER YAE -FFC6;H # HALFWIDTH HANGUL LETTER EO -FFC7;H # HALFWIDTH HANGUL LETTER E -FFCA;H # HALFWIDTH HANGUL LETTER YEO -FFCB;H # HALFWIDTH HANGUL LETTER YE -FFCC;H # HALFWIDTH HANGUL LETTER O -FFCD;H # HALFWIDTH HANGUL LETTER WA -FFCE;H # HALFWIDTH HANGUL LETTER WAE -FFCF;H # HALFWIDTH HANGUL LETTER OE -FFD2;H # HALFWIDTH HANGUL LETTER YO -FFD3;H # HALFWIDTH HANGUL LETTER U -FFD4;H # HALFWIDTH HANGUL LETTER WEO -FFD5;H # HALFWIDTH HANGUL LETTER WE -FFD6;H # HALFWIDTH HANGUL LETTER WI -FFD7;H # HALFWIDTH HANGUL LETTER YU -FFDA;H # HALFWIDTH HANGUL LETTER EU -FFDB;H # HALFWIDTH HANGUL LETTER YI -FFDC;H # HALFWIDTH HANGUL LETTER I -FFE0;F # FULLWIDTH CENT SIGN -FFE1;F # FULLWIDTH POUND SIGN -FFE2;F # FULLWIDTH NOT SIGN -FFE3;F # FULLWIDTH MACRON -FFE4;F # FULLWIDTH BROKEN BAR -FFE5;F # FULLWIDTH YEN SIGN -FFE6;F # FULLWIDTH WON SIGN -FFE8;H # HALFWIDTH FORMS LIGHT VERTICAL -FFE9;H # HALFWIDTH LEFTWARDS ARROW -FFEA;H # HALFWIDTH UPWARDS ARROW -FFEB;H # HALFWIDTH RIGHTWARDS ARROW -FFEC;H # HALFWIDTH DOWNWARDS ARROW -FFED;H # HALFWIDTH BLACK SQUARE -FFEE;H # HALFWIDTH WHITE CIRCLE -FFF9;N # INTERLINEAR ANNOTATION ANCHOR -FFFA;N # INTERLINEAR ANNOTATION SEPARATOR -FFFB;N # INTERLINEAR ANNOTATION TERMINATOR -FFFC;N # OBJECT REPLACEMENT CHARACTER -FFFD;A # REPLACEMENT CHARACTER -10000;N # LINEAR B SYLLABLE B008 A -10001;N # LINEAR B SYLLABLE B038 E -10002;N # LINEAR B SYLLABLE B028 I -10003;N # LINEAR B SYLLABLE B061 O -10004;N # LINEAR B SYLLABLE B010 U -10005;N # LINEAR B SYLLABLE B001 DA -10006;N # LINEAR B SYLLABLE B045 DE -10007;N # LINEAR B SYLLABLE B007 DI -10008;N # LINEAR B SYLLABLE B014 DO -10009;N # LINEAR B SYLLABLE B051 DU -1000A;N # LINEAR B SYLLABLE B057 JA -1000B;N # LINEAR B SYLLABLE B046 JE -1000D;N # LINEAR B SYLLABLE B036 JO -1000E;N # LINEAR B SYLLABLE B065 JU -1000F;N # LINEAR B SYLLABLE B077 KA -10010;N # LINEAR B SYLLABLE B044 KE -10011;N # LINEAR B SYLLABLE B067 KI -10012;N # LINEAR B SYLLABLE B070 KO -10013;N # LINEAR B SYLLABLE B081 KU -10014;N # LINEAR B SYLLABLE B080 MA -10015;N # LINEAR B SYLLABLE B013 ME -10016;N # LINEAR B SYLLABLE B073 MI -10017;N # LINEAR B SYLLABLE B015 MO -10018;N # LINEAR B SYLLABLE B023 MU -10019;N # LINEAR B SYLLABLE B006 NA -1001A;N # LINEAR B SYLLABLE B024 NE -1001B;N # LINEAR B SYLLABLE B030 NI -1001C;N # LINEAR B SYLLABLE B052 NO -1001D;N # LINEAR B SYLLABLE B055 NU -1001E;N # LINEAR B SYLLABLE B003 PA -1001F;N # LINEAR B SYLLABLE B072 PE -10020;N # LINEAR B SYLLABLE B039 PI -10021;N # LINEAR B SYLLABLE B011 PO -10022;N # LINEAR B SYLLABLE B050 PU -10023;N # LINEAR B SYLLABLE B016 QA -10024;N # LINEAR B SYLLABLE B078 QE -10025;N # LINEAR B SYLLABLE B021 QI -10026;N # LINEAR B SYLLABLE B032 QO -10028;N # LINEAR B SYLLABLE B060 RA -10029;N # LINEAR B SYLLABLE B027 RE -1002A;N # LINEAR B SYLLABLE B053 RI -1002B;N # LINEAR B SYLLABLE B002 RO -1002C;N # LINEAR B SYLLABLE B026 RU -1002D;N # LINEAR B SYLLABLE B031 SA -1002E;N # LINEAR B SYLLABLE B009 SE -1002F;N # LINEAR B SYLLABLE B041 SI -10030;N # LINEAR B SYLLABLE B012 SO -10031;N # LINEAR B SYLLABLE B058 SU -10032;N # LINEAR B SYLLABLE B059 TA -10033;N # LINEAR B SYLLABLE B004 TE -10034;N # LINEAR B SYLLABLE B037 TI -10035;N # LINEAR B SYLLABLE B005 TO -10036;N # LINEAR B SYLLABLE B069 TU -10037;N # LINEAR B SYLLABLE B054 WA -10038;N # LINEAR B SYLLABLE B075 WE -10039;N # LINEAR B SYLLABLE B040 WI -1003A;N # LINEAR B SYLLABLE B042 WO -1003C;N # LINEAR B SYLLABLE B017 ZA -1003D;N # LINEAR B SYLLABLE B074 ZE -1003F;N # LINEAR B SYLLABLE B020 ZO -10040;N # LINEAR B SYLLABLE B025 A2 -10041;N # LINEAR B SYLLABLE B043 A3 -10042;N # LINEAR B SYLLABLE B085 AU -10043;N # LINEAR B SYLLABLE B071 DWE -10044;N # LINEAR B SYLLABLE B090 DWO -10045;N # LINEAR B SYLLABLE B048 NWA -10046;N # LINEAR B SYLLABLE B029 PU2 -10047;N # LINEAR B SYLLABLE B062 PTE -10048;N # LINEAR B SYLLABLE B076 RA2 -10049;N # LINEAR B SYLLABLE B033 RA3 -1004A;N # LINEAR B SYLLABLE B068 RO2 -1004B;N # LINEAR B SYLLABLE B066 TA2 -1004C;N # LINEAR B SYLLABLE B087 TWE -1004D;N # LINEAR B SYLLABLE B091 TWO -10050;N # LINEAR B SYMBOL B018 -10051;N # LINEAR B SYMBOL B019 -10052;N # LINEAR B SYMBOL B022 -10053;N # LINEAR B SYMBOL B034 -10054;N # LINEAR B SYMBOL B047 -10055;N # LINEAR B SYMBOL B049 -10056;N # LINEAR B SYMBOL B056 -10057;N # LINEAR B SYMBOL B063 -10058;N # LINEAR B SYMBOL B064 -10059;N # LINEAR B SYMBOL B079 -1005A;N # LINEAR B SYMBOL B082 -1005B;N # LINEAR B SYMBOL B083 -1005C;N # LINEAR B SYMBOL B086 -1005D;N # LINEAR B SYMBOL B089 -10080;N # LINEAR B IDEOGRAM B100 MAN -10081;N # LINEAR B IDEOGRAM B102 WOMAN -10082;N # LINEAR B IDEOGRAM B104 DEER -10083;N # LINEAR B IDEOGRAM B105 EQUID -10084;N # LINEAR B IDEOGRAM B105F MARE -10085;N # LINEAR B IDEOGRAM B105M STALLION -10086;N # LINEAR B IDEOGRAM B106F EWE -10087;N # LINEAR B IDEOGRAM B106M RAM -10088;N # LINEAR B IDEOGRAM B107F SHE-GOAT -10089;N # LINEAR B IDEOGRAM B107M HE-GOAT -1008A;N # LINEAR B IDEOGRAM B108F SOW -1008B;N # LINEAR B IDEOGRAM B108M BOAR -1008C;N # LINEAR B IDEOGRAM B109F COW -1008D;N # LINEAR B IDEOGRAM B109M BULL -1008E;N # LINEAR B IDEOGRAM B120 WHEAT -1008F;N # LINEAR B IDEOGRAM B121 BARLEY -10090;N # LINEAR B IDEOGRAM B122 OLIVE -10091;N # LINEAR B IDEOGRAM B123 SPICE -10092;N # LINEAR B IDEOGRAM B125 CYPERUS -10093;N # LINEAR B MONOGRAM B127 KAPO -10094;N # LINEAR B MONOGRAM B128 KANAKO -10095;N # LINEAR B IDEOGRAM B130 OIL -10096;N # LINEAR B IDEOGRAM B131 WINE -10097;N # LINEAR B IDEOGRAM B132 -10098;N # LINEAR B MONOGRAM B133 AREPA -10099;N # LINEAR B MONOGRAM B135 MERI -1009A;N # LINEAR B IDEOGRAM B140 BRONZE -1009B;N # LINEAR B IDEOGRAM B141 GOLD -1009C;N # LINEAR B IDEOGRAM B142 -1009D;N # LINEAR B IDEOGRAM B145 WOOL -1009E;N # LINEAR B IDEOGRAM B146 -1009F;N # LINEAR B IDEOGRAM B150 -100A0;N # LINEAR B IDEOGRAM B151 HORN -100A1;N # LINEAR B IDEOGRAM B152 -100A2;N # LINEAR B IDEOGRAM B153 -100A3;N # LINEAR B IDEOGRAM B154 -100A4;N # LINEAR B MONOGRAM B156 TURO2 -100A5;N # LINEAR B IDEOGRAM B157 -100A6;N # LINEAR B IDEOGRAM B158 -100A7;N # LINEAR B IDEOGRAM B159 CLOTH -100A8;N # LINEAR B IDEOGRAM B160 -100A9;N # LINEAR B IDEOGRAM B161 -100AA;N # LINEAR B IDEOGRAM B162 GARMENT -100AB;N # LINEAR B IDEOGRAM B163 ARMOUR -100AC;N # LINEAR B IDEOGRAM B164 -100AD;N # LINEAR B IDEOGRAM B165 -100AE;N # LINEAR B IDEOGRAM B166 -100AF;N # LINEAR B IDEOGRAM B167 -100B0;N # LINEAR B IDEOGRAM B168 -100B1;N # LINEAR B IDEOGRAM B169 -100B2;N # LINEAR B IDEOGRAM B170 -100B3;N # LINEAR B IDEOGRAM B171 -100B4;N # LINEAR B IDEOGRAM B172 -100B5;N # LINEAR B IDEOGRAM B173 MONTH -100B6;N # LINEAR B IDEOGRAM B174 -100B7;N # LINEAR B IDEOGRAM B176 TREE -100B8;N # LINEAR B IDEOGRAM B177 -100B9;N # LINEAR B IDEOGRAM B178 -100BA;N # LINEAR B IDEOGRAM B179 -100BB;N # LINEAR B IDEOGRAM B180 -100BC;N # LINEAR B IDEOGRAM B181 -100BD;N # LINEAR B IDEOGRAM B182 -100BE;N # LINEAR B IDEOGRAM B183 -100BF;N # LINEAR B IDEOGRAM B184 -100C0;N # LINEAR B IDEOGRAM B185 -100C1;N # LINEAR B IDEOGRAM B189 -100C2;N # LINEAR B IDEOGRAM B190 -100C3;N # LINEAR B IDEOGRAM B191 HELMET -100C4;N # LINEAR B IDEOGRAM B220 FOOTSTOOL -100C5;N # LINEAR B IDEOGRAM B225 BATHTUB -100C6;N # LINEAR B IDEOGRAM B230 SPEAR -100C7;N # LINEAR B IDEOGRAM B231 ARROW -100C8;N # LINEAR B IDEOGRAM B232 -100C9;N # LINEAR B IDEOGRAM B233 SWORD -100CA;N # LINEAR B IDEOGRAM B234 -100CB;N # LINEAR B IDEOGRAM B236 -100CC;N # LINEAR B IDEOGRAM B240 WHEELED CHARIOT -100CD;N # LINEAR B IDEOGRAM B241 CHARIOT -100CE;N # LINEAR B IDEOGRAM B242 CHARIOT FRAME -100CF;N # LINEAR B IDEOGRAM B243 WHEEL -100D0;N # LINEAR B IDEOGRAM B245 -100D1;N # LINEAR B IDEOGRAM B246 -100D2;N # LINEAR B MONOGRAM B247 DIPTE -100D3;N # LINEAR B IDEOGRAM B248 -100D4;N # LINEAR B IDEOGRAM B249 -100D5;N # LINEAR B IDEOGRAM B251 -100D6;N # LINEAR B IDEOGRAM B252 -100D7;N # LINEAR B IDEOGRAM B253 -100D8;N # LINEAR B IDEOGRAM B254 DART -100D9;N # LINEAR B IDEOGRAM B255 -100DA;N # LINEAR B IDEOGRAM B256 -100DB;N # LINEAR B IDEOGRAM B257 -100DC;N # LINEAR B IDEOGRAM B258 -100DD;N # LINEAR B IDEOGRAM B259 -100DE;N # LINEAR B IDEOGRAM VESSEL B155 -100DF;N # LINEAR B IDEOGRAM VESSEL B200 -100E0;N # LINEAR B IDEOGRAM VESSEL B201 -100E1;N # LINEAR B IDEOGRAM VESSEL B202 -100E2;N # LINEAR B IDEOGRAM VESSEL B203 -100E3;N # LINEAR B IDEOGRAM VESSEL B204 -100E4;N # LINEAR B IDEOGRAM VESSEL B205 -100E5;N # LINEAR B IDEOGRAM VESSEL B206 -100E6;N # LINEAR B IDEOGRAM VESSEL B207 -100E7;N # LINEAR B IDEOGRAM VESSEL B208 -100E8;N # LINEAR B IDEOGRAM VESSEL B209 -100E9;N # LINEAR B IDEOGRAM VESSEL B210 -100EA;N # LINEAR B IDEOGRAM VESSEL B211 -100EB;N # LINEAR B IDEOGRAM VESSEL B212 -100EC;N # LINEAR B IDEOGRAM VESSEL B213 -100ED;N # LINEAR B IDEOGRAM VESSEL B214 -100EE;N # LINEAR B IDEOGRAM VESSEL B215 -100EF;N # LINEAR B IDEOGRAM VESSEL B216 -100F0;N # LINEAR B IDEOGRAM VESSEL B217 -100F1;N # LINEAR B IDEOGRAM VESSEL B218 -100F2;N # LINEAR B IDEOGRAM VESSEL B219 -100F3;N # LINEAR B IDEOGRAM VESSEL B221 -100F4;N # LINEAR B IDEOGRAM VESSEL B222 -100F5;N # LINEAR B IDEOGRAM VESSEL B226 -100F6;N # LINEAR B IDEOGRAM VESSEL B227 -100F7;N # LINEAR B IDEOGRAM VESSEL B228 -100F8;N # LINEAR B IDEOGRAM VESSEL B229 -100F9;N # LINEAR B IDEOGRAM VESSEL B250 -100FA;N # LINEAR B IDEOGRAM VESSEL B305 -10100;N # AEGEAN WORD SEPARATOR LINE -10101;N # AEGEAN WORD SEPARATOR DOT -10102;N # AEGEAN CHECK MARK -10107;N # AEGEAN NUMBER ONE -10108;N # AEGEAN NUMBER TWO -10109;N # AEGEAN NUMBER THREE -1010A;N # AEGEAN NUMBER FOUR -1010B;N # AEGEAN NUMBER FIVE -1010C;N # AEGEAN NUMBER SIX -1010D;N # AEGEAN NUMBER SEVEN -1010E;N # AEGEAN NUMBER EIGHT -1010F;N # AEGEAN NUMBER NINE -10110;N # AEGEAN NUMBER TEN -10111;N # AEGEAN NUMBER TWENTY -10112;N # AEGEAN NUMBER THIRTY -10113;N # AEGEAN NUMBER FORTY -10114;N # AEGEAN NUMBER FIFTY -10115;N # AEGEAN NUMBER SIXTY -10116;N # AEGEAN NUMBER SEVENTY -10117;N # AEGEAN NUMBER EIGHTY -10118;N # AEGEAN NUMBER NINETY -10119;N # AEGEAN NUMBER ONE HUNDRED -1011A;N # AEGEAN NUMBER TWO HUNDRED -1011B;N # AEGEAN NUMBER THREE HUNDRED -1011C;N # AEGEAN NUMBER FOUR HUNDRED -1011D;N # AEGEAN NUMBER FIVE HUNDRED -1011E;N # AEGEAN NUMBER SIX HUNDRED -1011F;N # AEGEAN NUMBER SEVEN HUNDRED -10120;N # AEGEAN NUMBER EIGHT HUNDRED -10121;N # AEGEAN NUMBER NINE HUNDRED -10122;N # AEGEAN NUMBER ONE THOUSAND -10123;N # AEGEAN NUMBER TWO THOUSAND -10124;N # AEGEAN NUMBER THREE THOUSAND -10125;N # AEGEAN NUMBER FOUR THOUSAND -10126;N # AEGEAN NUMBER FIVE THOUSAND -10127;N # AEGEAN NUMBER SIX THOUSAND -10128;N # AEGEAN NUMBER SEVEN THOUSAND -10129;N # AEGEAN NUMBER EIGHT THOUSAND -1012A;N # AEGEAN NUMBER NINE THOUSAND -1012B;N # AEGEAN NUMBER TEN THOUSAND -1012C;N # AEGEAN NUMBER TWENTY THOUSAND -1012D;N # AEGEAN NUMBER THIRTY THOUSAND -1012E;N # AEGEAN NUMBER FORTY THOUSAND -1012F;N # AEGEAN NUMBER FIFTY THOUSAND -10130;N # AEGEAN NUMBER SIXTY THOUSAND -10131;N # AEGEAN NUMBER SEVENTY THOUSAND -10132;N # AEGEAN NUMBER EIGHTY THOUSAND -10133;N # AEGEAN NUMBER NINETY THOUSAND -10137;N # AEGEAN WEIGHT BASE UNIT -10138;N # AEGEAN WEIGHT FIRST SUBUNIT -10139;N # AEGEAN WEIGHT SECOND SUBUNIT -1013A;N # AEGEAN WEIGHT THIRD SUBUNIT -1013B;N # AEGEAN WEIGHT FOURTH SUBUNIT -1013C;N # AEGEAN DRY MEASURE FIRST SUBUNIT -1013D;N # AEGEAN LIQUID MEASURE FIRST SUBUNIT -1013E;N # AEGEAN MEASURE SECOND SUBUNIT -1013F;N # AEGEAN MEASURE THIRD SUBUNIT -10140;N # GREEK ACROPHONIC ATTIC ONE QUARTER -10141;N # GREEK ACROPHONIC ATTIC ONE HALF -10142;N # GREEK ACROPHONIC ATTIC ONE DRACHMA -10143;N # GREEK ACROPHONIC ATTIC FIVE -10144;N # GREEK ACROPHONIC ATTIC FIFTY -10145;N # GREEK ACROPHONIC ATTIC FIVE HUNDRED -10146;N # GREEK ACROPHONIC ATTIC FIVE THOUSAND -10147;N # GREEK ACROPHONIC ATTIC FIFTY THOUSAND -10148;N # GREEK ACROPHONIC ATTIC FIVE TALENTS -10149;N # GREEK ACROPHONIC ATTIC TEN TALENTS -1014A;N # GREEK ACROPHONIC ATTIC FIFTY TALENTS -1014B;N # GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS -1014C;N # GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS -1014D;N # GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS -1014E;N # GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS -1014F;N # GREEK ACROPHONIC ATTIC FIVE STATERS -10150;N # GREEK ACROPHONIC ATTIC TEN STATERS -10151;N # GREEK ACROPHONIC ATTIC FIFTY STATERS -10152;N # GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS -10153;N # GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS -10154;N # GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS -10155;N # GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS -10156;N # GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS -10157;N # GREEK ACROPHONIC ATTIC TEN MNAS -10158;N # GREEK ACROPHONIC HERAEUM ONE PLETHRON -10159;N # GREEK ACROPHONIC THESPIAN ONE -1015A;N # GREEK ACROPHONIC HERMIONIAN ONE -1015B;N # GREEK ACROPHONIC EPIDAUREAN TWO -1015C;N # GREEK ACROPHONIC THESPIAN TWO -1015D;N # GREEK ACROPHONIC CYRENAIC TWO DRACHMAS -1015E;N # GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS -1015F;N # GREEK ACROPHONIC TROEZENIAN FIVE -10160;N # GREEK ACROPHONIC TROEZENIAN TEN -10161;N # GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM -10162;N # GREEK ACROPHONIC HERMIONIAN TEN -10163;N # GREEK ACROPHONIC MESSENIAN TEN -10164;N # GREEK ACROPHONIC THESPIAN TEN -10165;N # GREEK ACROPHONIC THESPIAN THIRTY -10166;N # GREEK ACROPHONIC TROEZENIAN FIFTY -10167;N # GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM -10168;N # GREEK ACROPHONIC HERMIONIAN FIFTY -10169;N # GREEK ACROPHONIC THESPIAN FIFTY -1016A;N # GREEK ACROPHONIC THESPIAN ONE HUNDRED -1016B;N # GREEK ACROPHONIC THESPIAN THREE HUNDRED -1016C;N # GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED -1016D;N # GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED -1016E;N # GREEK ACROPHONIC THESPIAN FIVE HUNDRED -1016F;N # GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED -10170;N # GREEK ACROPHONIC NAXIAN FIVE HUNDRED -10171;N # GREEK ACROPHONIC THESPIAN ONE THOUSAND -10172;N # GREEK ACROPHONIC THESPIAN FIVE THOUSAND -10173;N # GREEK ACROPHONIC DELPHIC FIVE MNAS -10174;N # GREEK ACROPHONIC STRATIAN FIFTY MNAS -10175;N # GREEK ONE HALF SIGN -10176;N # GREEK ONE HALF SIGN ALTERNATE FORM -10177;N # GREEK TWO THIRDS SIGN -10178;N # GREEK THREE QUARTERS SIGN -10179;N # GREEK YEAR SIGN -1017A;N # GREEK TALENT SIGN -1017B;N # GREEK DRACHMA SIGN -1017C;N # GREEK OBOL SIGN -1017D;N # GREEK TWO OBOLS SIGN -1017E;N # GREEK THREE OBOLS SIGN -1017F;N # GREEK FOUR OBOLS SIGN -10180;N # GREEK FIVE OBOLS SIGN -10181;N # GREEK METRETES SIGN -10182;N # GREEK KYATHOS BASE SIGN -10183;N # GREEK LITRA SIGN -10184;N # GREEK OUNKIA SIGN -10185;N # GREEK XESTES SIGN -10186;N # GREEK ARTABE SIGN -10187;N # GREEK AROURA SIGN -10188;N # GREEK GRAMMA SIGN -10189;N # GREEK TRYBLION BASE SIGN -1018A;N # GREEK ZERO SIGN -10300;N # OLD ITALIC LETTER A -10301;N # OLD ITALIC LETTER BE -10302;N # OLD ITALIC LETTER KE -10303;N # OLD ITALIC LETTER DE -10304;N # OLD ITALIC LETTER E -10305;N # OLD ITALIC LETTER VE -10306;N # OLD ITALIC LETTER ZE -10307;N # OLD ITALIC LETTER HE -10308;N # OLD ITALIC LETTER THE -10309;N # OLD ITALIC LETTER I -1030A;N # OLD ITALIC LETTER KA -1030B;N # OLD ITALIC LETTER EL -1030C;N # OLD ITALIC LETTER EM -1030D;N # OLD ITALIC LETTER EN -1030E;N # OLD ITALIC LETTER ESH -1030F;N # OLD ITALIC LETTER O -10310;N # OLD ITALIC LETTER PE -10311;N # OLD ITALIC LETTER SHE -10312;N # OLD ITALIC LETTER KU -10313;N # OLD ITALIC LETTER ER -10314;N # OLD ITALIC LETTER ES -10315;N # OLD ITALIC LETTER TE -10316;N # OLD ITALIC LETTER U -10317;N # OLD ITALIC LETTER EKS -10318;N # OLD ITALIC LETTER PHE -10319;N # OLD ITALIC LETTER KHE -1031A;N # OLD ITALIC LETTER EF -1031B;N # OLD ITALIC LETTER ERS -1031C;N # OLD ITALIC LETTER CHE -1031D;N # OLD ITALIC LETTER II -1031E;N # OLD ITALIC LETTER UU -10320;N # OLD ITALIC NUMERAL ONE -10321;N # OLD ITALIC NUMERAL FIVE -10322;N # OLD ITALIC NUMERAL TEN -10323;N # OLD ITALIC NUMERAL FIFTY -10330;N # GOTHIC LETTER AHSA -10331;N # GOTHIC LETTER BAIRKAN -10332;N # GOTHIC LETTER GIBA -10333;N # GOTHIC LETTER DAGS -10334;N # GOTHIC LETTER AIHVUS -10335;N # GOTHIC LETTER QAIRTHRA -10336;N # GOTHIC LETTER IUJA -10337;N # GOTHIC LETTER HAGL -10338;N # GOTHIC LETTER THIUTH -10339;N # GOTHIC LETTER EIS -1033A;N # GOTHIC LETTER KUSMA -1033B;N # GOTHIC LETTER LAGUS -1033C;N # GOTHIC LETTER MANNA -1033D;N # GOTHIC LETTER NAUTHS -1033E;N # GOTHIC LETTER JER -1033F;N # GOTHIC LETTER URUS -10340;N # GOTHIC LETTER PAIRTHRA -10341;N # GOTHIC LETTER NINETY -10342;N # GOTHIC LETTER RAIDA -10343;N # GOTHIC LETTER SAUIL -10344;N # GOTHIC LETTER TEIWS -10345;N # GOTHIC LETTER WINJA -10346;N # GOTHIC LETTER FAIHU -10347;N # GOTHIC LETTER IGGWS -10348;N # GOTHIC LETTER HWAIR -10349;N # GOTHIC LETTER OTHAL -1034A;N # GOTHIC LETTER NINE HUNDRED -10380;N # UGARITIC LETTER ALPA -10381;N # UGARITIC LETTER BETA -10382;N # UGARITIC LETTER GAMLA -10383;N # UGARITIC LETTER KHA -10384;N # UGARITIC LETTER DELTA -10385;N # UGARITIC LETTER HO -10386;N # UGARITIC LETTER WO -10387;N # UGARITIC LETTER ZETA -10388;N # UGARITIC LETTER HOTA -10389;N # UGARITIC LETTER TET -1038A;N # UGARITIC LETTER YOD -1038B;N # UGARITIC LETTER KAF -1038C;N # UGARITIC LETTER SHIN -1038D;N # UGARITIC LETTER LAMDA -1038E;N # UGARITIC LETTER MEM -1038F;N # UGARITIC LETTER DHAL -10390;N # UGARITIC LETTER NUN -10391;N # UGARITIC LETTER ZU -10392;N # UGARITIC LETTER SAMKA -10393;N # UGARITIC LETTER AIN -10394;N # UGARITIC LETTER PU -10395;N # UGARITIC LETTER SADE -10396;N # UGARITIC LETTER QOPA -10397;N # UGARITIC LETTER RASHA -10398;N # UGARITIC LETTER THANNA -10399;N # UGARITIC LETTER GHAIN -1039A;N # UGARITIC LETTER TO -1039B;N # UGARITIC LETTER I -1039C;N # UGARITIC LETTER U -1039D;N # UGARITIC LETTER SSU -1039F;N # UGARITIC WORD DIVIDER -103A0;N # OLD PERSIAN SIGN A -103A1;N # OLD PERSIAN SIGN I -103A2;N # OLD PERSIAN SIGN U -103A3;N # OLD PERSIAN SIGN KA -103A4;N # OLD PERSIAN SIGN KU -103A5;N # OLD PERSIAN SIGN GA -103A6;N # OLD PERSIAN SIGN GU -103A7;N # OLD PERSIAN SIGN XA -103A8;N # OLD PERSIAN SIGN CA -103A9;N # OLD PERSIAN SIGN JA -103AA;N # OLD PERSIAN SIGN JI -103AB;N # OLD PERSIAN SIGN TA -103AC;N # OLD PERSIAN SIGN TU -103AD;N # OLD PERSIAN SIGN DA -103AE;N # OLD PERSIAN SIGN DI -103AF;N # OLD PERSIAN SIGN DU -103B0;N # OLD PERSIAN SIGN THA -103B1;N # OLD PERSIAN SIGN PA -103B2;N # OLD PERSIAN SIGN BA -103B3;N # OLD PERSIAN SIGN FA -103B4;N # OLD PERSIAN SIGN NA -103B5;N # OLD PERSIAN SIGN NU -103B6;N # OLD PERSIAN SIGN MA -103B7;N # OLD PERSIAN SIGN MI -103B8;N # OLD PERSIAN SIGN MU -103B9;N # OLD PERSIAN SIGN YA -103BA;N # OLD PERSIAN SIGN VA -103BB;N # OLD PERSIAN SIGN VI -103BC;N # OLD PERSIAN SIGN RA -103BD;N # OLD PERSIAN SIGN RU -103BE;N # OLD PERSIAN SIGN LA -103BF;N # OLD PERSIAN SIGN SA -103C0;N # OLD PERSIAN SIGN ZA -103C1;N # OLD PERSIAN SIGN SHA -103C2;N # OLD PERSIAN SIGN SSA -103C3;N # OLD PERSIAN SIGN HA -103C8;N # OLD PERSIAN SIGN AURAMAZDAA -103C9;N # OLD PERSIAN SIGN AURAMAZDAA-2 -103CA;N # OLD PERSIAN SIGN AURAMAZDAAHA -103CB;N # OLD PERSIAN SIGN XSHAAYATHIYA -103CC;N # OLD PERSIAN SIGN DAHYAAUSH -103CD;N # OLD PERSIAN SIGN DAHYAAUSH-2 -103CE;N # OLD PERSIAN SIGN BAGA -103CF;N # OLD PERSIAN SIGN BUUMISH -103D0;N # OLD PERSIAN WORD DIVIDER -103D1;N # OLD PERSIAN NUMBER ONE -103D2;N # OLD PERSIAN NUMBER TWO -103D3;N # OLD PERSIAN NUMBER TEN -103D4;N # OLD PERSIAN NUMBER TWENTY -103D5;N # OLD PERSIAN NUMBER HUNDRED -10400;N # DESERET CAPITAL LETTER LONG I -10401;N # DESERET CAPITAL LETTER LONG E -10402;N # DESERET CAPITAL LETTER LONG A -10403;N # DESERET CAPITAL LETTER LONG AH -10404;N # DESERET CAPITAL LETTER LONG O -10405;N # DESERET CAPITAL LETTER LONG OO -10406;N # DESERET CAPITAL LETTER SHORT I -10407;N # DESERET CAPITAL LETTER SHORT E -10408;N # DESERET CAPITAL LETTER SHORT A -10409;N # DESERET CAPITAL LETTER SHORT AH -1040A;N # DESERET CAPITAL LETTER SHORT O -1040B;N # DESERET CAPITAL LETTER SHORT OO -1040C;N # DESERET CAPITAL LETTER AY -1040D;N # DESERET CAPITAL LETTER OW -1040E;N # DESERET CAPITAL LETTER WU -1040F;N # DESERET CAPITAL LETTER YEE -10410;N # DESERET CAPITAL LETTER H -10411;N # DESERET CAPITAL LETTER PEE -10412;N # DESERET CAPITAL LETTER BEE -10413;N # DESERET CAPITAL LETTER TEE -10414;N # DESERET CAPITAL LETTER DEE -10415;N # DESERET CAPITAL LETTER CHEE -10416;N # DESERET CAPITAL LETTER JEE -10417;N # DESERET CAPITAL LETTER KAY -10418;N # DESERET CAPITAL LETTER GAY -10419;N # DESERET CAPITAL LETTER EF -1041A;N # DESERET CAPITAL LETTER VEE -1041B;N # DESERET CAPITAL LETTER ETH -1041C;N # DESERET CAPITAL LETTER THEE -1041D;N # DESERET CAPITAL LETTER ES -1041E;N # DESERET CAPITAL LETTER ZEE -1041F;N # DESERET CAPITAL LETTER ESH -10420;N # DESERET CAPITAL LETTER ZHEE -10421;N # DESERET CAPITAL LETTER ER -10422;N # DESERET CAPITAL LETTER EL -10423;N # DESERET CAPITAL LETTER EM -10424;N # DESERET CAPITAL LETTER EN -10425;N # DESERET CAPITAL LETTER ENG -10426;N # DESERET CAPITAL LETTER OI -10427;N # DESERET CAPITAL LETTER EW -10428;N # DESERET SMALL LETTER LONG I -10429;N # DESERET SMALL LETTER LONG E -1042A;N # DESERET SMALL LETTER LONG A -1042B;N # DESERET SMALL LETTER LONG AH -1042C;N # DESERET SMALL LETTER LONG O -1042D;N # DESERET SMALL LETTER LONG OO -1042E;N # DESERET SMALL LETTER SHORT I -1042F;N # DESERET SMALL LETTER SHORT E -10430;N # DESERET SMALL LETTER SHORT A -10431;N # DESERET SMALL LETTER SHORT AH -10432;N # DESERET SMALL LETTER SHORT O -10433;N # DESERET SMALL LETTER SHORT OO -10434;N # DESERET SMALL LETTER AY -10435;N # DESERET SMALL LETTER OW -10436;N # DESERET SMALL LETTER WU -10437;N # DESERET SMALL LETTER YEE -10438;N # DESERET SMALL LETTER H -10439;N # DESERET SMALL LETTER PEE -1043A;N # DESERET SMALL LETTER BEE -1043B;N # DESERET SMALL LETTER TEE -1043C;N # DESERET SMALL LETTER DEE -1043D;N # DESERET SMALL LETTER CHEE -1043E;N # DESERET SMALL LETTER JEE -1043F;N # DESERET SMALL LETTER KAY -10440;N # DESERET SMALL LETTER GAY -10441;N # DESERET SMALL LETTER EF -10442;N # DESERET SMALL LETTER VEE -10443;N # DESERET SMALL LETTER ETH -10444;N # DESERET SMALL LETTER THEE -10445;N # DESERET SMALL LETTER ES -10446;N # DESERET SMALL LETTER ZEE -10447;N # DESERET SMALL LETTER ESH -10448;N # DESERET SMALL LETTER ZHEE -10449;N # DESERET SMALL LETTER ER -1044A;N # DESERET SMALL LETTER EL -1044B;N # DESERET SMALL LETTER EM -1044C;N # DESERET SMALL LETTER EN -1044D;N # DESERET SMALL LETTER ENG -1044E;N # DESERET SMALL LETTER OI -1044F;N # DESERET SMALL LETTER EW -10450;N # SHAVIAN LETTER PEEP -10451;N # SHAVIAN LETTER TOT -10452;N # SHAVIAN LETTER KICK -10453;N # SHAVIAN LETTER FEE -10454;N # SHAVIAN LETTER THIGH -10455;N # SHAVIAN LETTER SO -10456;N # SHAVIAN LETTER SURE -10457;N # SHAVIAN LETTER CHURCH -10458;N # SHAVIAN LETTER YEA -10459;N # SHAVIAN LETTER HUNG -1045A;N # SHAVIAN LETTER BIB -1045B;N # SHAVIAN LETTER DEAD -1045C;N # SHAVIAN LETTER GAG -1045D;N # SHAVIAN LETTER VOW -1045E;N # SHAVIAN LETTER THEY -1045F;N # SHAVIAN LETTER ZOO -10460;N # SHAVIAN LETTER MEASURE -10461;N # SHAVIAN LETTER JUDGE -10462;N # SHAVIAN LETTER WOE -10463;N # SHAVIAN LETTER HA-HA -10464;N # SHAVIAN LETTER LOLL -10465;N # SHAVIAN LETTER MIME -10466;N # SHAVIAN LETTER IF -10467;N # SHAVIAN LETTER EGG -10468;N # SHAVIAN LETTER ASH -10469;N # SHAVIAN LETTER ADO -1046A;N # SHAVIAN LETTER ON -1046B;N # SHAVIAN LETTER WOOL -1046C;N # SHAVIAN LETTER OUT -1046D;N # SHAVIAN LETTER AH -1046E;N # SHAVIAN LETTER ROAR -1046F;N # SHAVIAN LETTER NUN -10470;N # SHAVIAN LETTER EAT -10471;N # SHAVIAN LETTER AGE -10472;N # SHAVIAN LETTER ICE -10473;N # SHAVIAN LETTER UP -10474;N # SHAVIAN LETTER OAK -10475;N # SHAVIAN LETTER OOZE -10476;N # SHAVIAN LETTER OIL -10477;N # SHAVIAN LETTER AWE -10478;N # SHAVIAN LETTER ARE -10479;N # SHAVIAN LETTER OR -1047A;N # SHAVIAN LETTER AIR -1047B;N # SHAVIAN LETTER ERR -1047C;N # SHAVIAN LETTER ARRAY -1047D;N # SHAVIAN LETTER EAR -1047E;N # SHAVIAN LETTER IAN -1047F;N # SHAVIAN LETTER YEW -10480;N # OSMANYA LETTER ALEF -10481;N # OSMANYA LETTER BA -10482;N # OSMANYA LETTER TA -10483;N # OSMANYA LETTER JA -10484;N # OSMANYA LETTER XA -10485;N # OSMANYA LETTER KHA -10486;N # OSMANYA LETTER DEEL -10487;N # OSMANYA LETTER RA -10488;N # OSMANYA LETTER SA -10489;N # OSMANYA LETTER SHIIN -1048A;N # OSMANYA LETTER DHA -1048B;N # OSMANYA LETTER CAYN -1048C;N # OSMANYA LETTER GA -1048D;N # OSMANYA LETTER FA -1048E;N # OSMANYA LETTER QAAF -1048F;N # OSMANYA LETTER KAAF -10490;N # OSMANYA LETTER LAAN -10491;N # OSMANYA LETTER MIIN -10492;N # OSMANYA LETTER NUUN -10493;N # OSMANYA LETTER WAW -10494;N # OSMANYA LETTER HA -10495;N # OSMANYA LETTER YA -10496;N # OSMANYA LETTER A -10497;N # OSMANYA LETTER E -10498;N # OSMANYA LETTER I -10499;N # OSMANYA LETTER O -1049A;N # OSMANYA LETTER U -1049B;N # OSMANYA LETTER AA -1049C;N # OSMANYA LETTER EE -1049D;N # OSMANYA LETTER OO -104A0;N # OSMANYA DIGIT ZERO -104A1;N # OSMANYA DIGIT ONE -104A2;N # OSMANYA DIGIT TWO -104A3;N # OSMANYA DIGIT THREE -104A4;N # OSMANYA DIGIT FOUR -104A5;N # OSMANYA DIGIT FIVE -104A6;N # OSMANYA DIGIT SIX -104A7;N # OSMANYA DIGIT SEVEN -104A8;N # OSMANYA DIGIT EIGHT -104A9;N # OSMANYA DIGIT NINE -10800;N # CYPRIOT SYLLABLE A -10801;N # CYPRIOT SYLLABLE E -10802;N # CYPRIOT SYLLABLE I -10803;N # CYPRIOT SYLLABLE O -10804;N # CYPRIOT SYLLABLE U -10805;N # CYPRIOT SYLLABLE JA -10808;N # CYPRIOT SYLLABLE JO -1080A;N # CYPRIOT SYLLABLE KA -1080B;N # CYPRIOT SYLLABLE KE -1080C;N # CYPRIOT SYLLABLE KI -1080D;N # CYPRIOT SYLLABLE KO -1080E;N # CYPRIOT SYLLABLE KU -1080F;N # CYPRIOT SYLLABLE LA -10810;N # CYPRIOT SYLLABLE LE -10811;N # CYPRIOT SYLLABLE LI -10812;N # CYPRIOT SYLLABLE LO -10813;N # CYPRIOT SYLLABLE LU -10814;N # CYPRIOT SYLLABLE MA -10815;N # CYPRIOT SYLLABLE ME -10816;N # CYPRIOT SYLLABLE MI -10817;N # CYPRIOT SYLLABLE MO -10818;N # CYPRIOT SYLLABLE MU -10819;N # CYPRIOT SYLLABLE NA -1081A;N # CYPRIOT SYLLABLE NE -1081B;N # CYPRIOT SYLLABLE NI -1081C;N # CYPRIOT SYLLABLE NO -1081D;N # CYPRIOT SYLLABLE NU -1081E;N # CYPRIOT SYLLABLE PA -1081F;N # CYPRIOT SYLLABLE PE -10820;N # CYPRIOT SYLLABLE PI -10821;N # CYPRIOT SYLLABLE PO -10822;N # CYPRIOT SYLLABLE PU -10823;N # CYPRIOT SYLLABLE RA -10824;N # CYPRIOT SYLLABLE RE -10825;N # CYPRIOT SYLLABLE RI -10826;N # CYPRIOT SYLLABLE RO -10827;N # CYPRIOT SYLLABLE RU -10828;N # CYPRIOT SYLLABLE SA -10829;N # CYPRIOT SYLLABLE SE -1082A;N # CYPRIOT SYLLABLE SI -1082B;N # CYPRIOT SYLLABLE SO -1082C;N # CYPRIOT SYLLABLE SU -1082D;N # CYPRIOT SYLLABLE TA -1082E;N # CYPRIOT SYLLABLE TE -1082F;N # CYPRIOT SYLLABLE TI -10830;N # CYPRIOT SYLLABLE TO -10831;N # CYPRIOT SYLLABLE TU -10832;N # CYPRIOT SYLLABLE WA -10833;N # CYPRIOT SYLLABLE WE -10834;N # CYPRIOT SYLLABLE WI -10835;N # CYPRIOT SYLLABLE WO -10837;N # CYPRIOT SYLLABLE XA -10838;N # CYPRIOT SYLLABLE XE -1083C;N # CYPRIOT SYLLABLE ZA -1083F;N # CYPRIOT SYLLABLE ZO -10A00;N # KHAROSHTHI LETTER A -10A01;N # KHAROSHTHI VOWEL SIGN I -10A02;N # KHAROSHTHI VOWEL SIGN U -10A03;N # KHAROSHTHI VOWEL SIGN VOCALIC R -10A05;N # KHAROSHTHI VOWEL SIGN E -10A06;N # KHAROSHTHI VOWEL SIGN O -10A0C;N # KHAROSHTHI VOWEL LENGTH MARK -10A0D;N # KHAROSHTHI SIGN DOUBLE RING BELOW -10A0E;N # KHAROSHTHI SIGN ANUSVARA -10A0F;N # KHAROSHTHI SIGN VISARGA -10A10;N # KHAROSHTHI LETTER KA -10A11;N # KHAROSHTHI LETTER KHA -10A12;N # KHAROSHTHI LETTER GA -10A13;N # KHAROSHTHI LETTER GHA -10A15;N # KHAROSHTHI LETTER CA -10A16;N # KHAROSHTHI LETTER CHA -10A17;N # KHAROSHTHI LETTER JA -10A19;N # KHAROSHTHI LETTER NYA -10A1A;N # KHAROSHTHI LETTER TTA -10A1B;N # KHAROSHTHI LETTER TTHA -10A1C;N # KHAROSHTHI LETTER DDA -10A1D;N # KHAROSHTHI LETTER DDHA -10A1E;N # KHAROSHTHI LETTER NNA -10A1F;N # KHAROSHTHI LETTER TA -10A20;N # KHAROSHTHI LETTER THA -10A21;N # KHAROSHTHI LETTER DA -10A22;N # KHAROSHTHI LETTER DHA -10A23;N # KHAROSHTHI LETTER NA -10A24;N # KHAROSHTHI LETTER PA -10A25;N # KHAROSHTHI LETTER PHA -10A26;N # KHAROSHTHI LETTER BA -10A27;N # KHAROSHTHI LETTER BHA -10A28;N # KHAROSHTHI LETTER MA -10A29;N # KHAROSHTHI LETTER YA -10A2A;N # KHAROSHTHI LETTER RA -10A2B;N # KHAROSHTHI LETTER LA -10A2C;N # KHAROSHTHI LETTER VA -10A2D;N # KHAROSHTHI LETTER SHA -10A2E;N # KHAROSHTHI LETTER SSA -10A2F;N # KHAROSHTHI LETTER SA -10A30;N # KHAROSHTHI LETTER ZA -10A31;N # KHAROSHTHI LETTER HA -10A32;N # KHAROSHTHI LETTER KKA -10A33;N # KHAROSHTHI LETTER TTTHA -10A38;N # KHAROSHTHI SIGN BAR ABOVE -10A39;N # KHAROSHTHI SIGN CAUDA -10A3A;N # KHAROSHTHI SIGN DOT BELOW -10A3F;N # KHAROSHTHI VIRAMA -10A40;N # KHAROSHTHI DIGIT ONE -10A41;N # KHAROSHTHI DIGIT TWO -10A42;N # KHAROSHTHI DIGIT THREE -10A43;N # KHAROSHTHI DIGIT FOUR -10A44;N # KHAROSHTHI NUMBER TEN -10A45;N # KHAROSHTHI NUMBER TWENTY -10A46;N # KHAROSHTHI NUMBER ONE HUNDRED -10A47;N # KHAROSHTHI NUMBER ONE THOUSAND -10A50;N # KHAROSHTHI PUNCTUATION DOT -10A51;N # KHAROSHTHI PUNCTUATION SMALL CIRCLE -10A52;N # KHAROSHTHI PUNCTUATION CIRCLE -10A53;N # KHAROSHTHI PUNCTUATION CRESCENT BAR -10A54;N # KHAROSHTHI PUNCTUATION MANGALAM -10A55;N # KHAROSHTHI PUNCTUATION LOTUS -10A56;N # KHAROSHTHI PUNCTUATION DANDA -10A57;N # KHAROSHTHI PUNCTUATION DOUBLE DANDA -10A58;N # KHAROSHTHI PUNCTUATION LINES -1D000;N # BYZANTINE MUSICAL SYMBOL PSILI -1D001;N # BYZANTINE MUSICAL SYMBOL DASEIA -1D002;N # BYZANTINE MUSICAL SYMBOL PERISPOMENI -1D003;N # BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON -1D004;N # BYZANTINE MUSICAL SYMBOL OXEIA DIPLI -1D005;N # BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON -1D006;N # BYZANTINE MUSICAL SYMBOL VAREIA DIPLI -1D007;N # BYZANTINE MUSICAL SYMBOL KATHISTI -1D008;N # BYZANTINE MUSICAL SYMBOL SYRMATIKI -1D009;N # BYZANTINE MUSICAL SYMBOL PARAKLITIKI -1D00A;N # BYZANTINE MUSICAL SYMBOL YPOKRISIS -1D00B;N # BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI -1D00C;N # BYZANTINE MUSICAL SYMBOL KREMASTI -1D00D;N # BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON -1D00E;N # BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON -1D00F;N # BYZANTINE MUSICAL SYMBOL TELEIA -1D010;N # BYZANTINE MUSICAL SYMBOL KENTIMATA -1D011;N # BYZANTINE MUSICAL SYMBOL APOSTROFOS -1D012;N # BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI -1D013;N # BYZANTINE MUSICAL SYMBOL SYNEVMA -1D014;N # BYZANTINE MUSICAL SYMBOL THITA -1D015;N # BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION -1D016;N # BYZANTINE MUSICAL SYMBOL GORGON ARCHAION -1D017;N # BYZANTINE MUSICAL SYMBOL PSILON -1D018;N # BYZANTINE MUSICAL SYMBOL CHAMILON -1D019;N # BYZANTINE MUSICAL SYMBOL VATHY -1D01A;N # BYZANTINE MUSICAL SYMBOL ISON ARCHAION -1D01B;N # BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION -1D01C;N # BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION -1D01D;N # BYZANTINE MUSICAL SYMBOL SAXIMATA -1D01E;N # BYZANTINE MUSICAL SYMBOL PARICHON -1D01F;N # BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA -1D020;N # BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION -1D021;N # BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION -1D022;N # BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION -1D023;N # BYZANTINE MUSICAL SYMBOL APOTHEMA -1D024;N # BYZANTINE MUSICAL SYMBOL KLASMA -1D025;N # BYZANTINE MUSICAL SYMBOL REVMA -1D026;N # BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION -1D027;N # BYZANTINE MUSICAL SYMBOL TINAGMA -1D028;N # BYZANTINE MUSICAL SYMBOL ANATRICHISMA -1D029;N # BYZANTINE MUSICAL SYMBOL SEISMA -1D02A;N # BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION -1D02B;N # BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU -1D02C;N # BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION -1D02D;N # BYZANTINE MUSICAL SYMBOL THEMA -1D02E;N # BYZANTINE MUSICAL SYMBOL LEMOI -1D02F;N # BYZANTINE MUSICAL SYMBOL DYO -1D030;N # BYZANTINE MUSICAL SYMBOL TRIA -1D031;N # BYZANTINE MUSICAL SYMBOL TESSERA -1D032;N # BYZANTINE MUSICAL SYMBOL KRATIMATA -1D033;N # BYZANTINE MUSICAL SYMBOL APESO EXO NEO -1D034;N # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION -1D035;N # BYZANTINE MUSICAL SYMBOL IMIFTHORA -1D036;N # BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION -1D037;N # BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON -1D038;N # BYZANTINE MUSICAL SYMBOL PELASTON -1D039;N # BYZANTINE MUSICAL SYMBOL PSIFISTON -1D03A;N # BYZANTINE MUSICAL SYMBOL KONTEVMA -1D03B;N # BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION -1D03C;N # BYZANTINE MUSICAL SYMBOL RAPISMA -1D03D;N # BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION -1D03E;N # BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION -1D03F;N # BYZANTINE MUSICAL SYMBOL ICHADIN -1D040;N # BYZANTINE MUSICAL SYMBOL NANA -1D041;N # BYZANTINE MUSICAL SYMBOL PETASMA -1D042;N # BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO -1D043;N # BYZANTINE MUSICAL SYMBOL TROMIKON ALLO -1D044;N # BYZANTINE MUSICAL SYMBOL STRAGGISMATA -1D045;N # BYZANTINE MUSICAL SYMBOL GRONTHISMATA -1D046;N # BYZANTINE MUSICAL SYMBOL ISON NEO -1D047;N # BYZANTINE MUSICAL SYMBOL OLIGON NEO -1D048;N # BYZANTINE MUSICAL SYMBOL OXEIA NEO -1D049;N # BYZANTINE MUSICAL SYMBOL PETASTI -1D04A;N # BYZANTINE MUSICAL SYMBOL KOUFISMA -1D04B;N # BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA -1D04C;N # BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA -1D04D;N # BYZANTINE MUSICAL SYMBOL PELASTON NEO -1D04E;N # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO -1D04F;N # BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO -1D050;N # BYZANTINE MUSICAL SYMBOL YPSILI -1D051;N # BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO -1D052;N # BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO -1D053;N # BYZANTINE MUSICAL SYMBOL YPORROI -1D054;N # BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON -1D055;N # BYZANTINE MUSICAL SYMBOL ELAFRON -1D056;N # BYZANTINE MUSICAL SYMBOL CHAMILI -1D057;N # BYZANTINE MUSICAL SYMBOL MIKRON ISON -1D058;N # BYZANTINE MUSICAL SYMBOL VAREIA NEO -1D059;N # BYZANTINE MUSICAL SYMBOL PIASMA NEO -1D05A;N # BYZANTINE MUSICAL SYMBOL PSIFISTON NEO -1D05B;N # BYZANTINE MUSICAL SYMBOL OMALON -1D05C;N # BYZANTINE MUSICAL SYMBOL ANTIKENOMA -1D05D;N # BYZANTINE MUSICAL SYMBOL LYGISMA -1D05E;N # BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO -1D05F;N # BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO -1D060;N # BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA -1D061;N # BYZANTINE MUSICAL SYMBOL KYLISMA -1D062;N # BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA -1D063;N # BYZANTINE MUSICAL SYMBOL TROMIKON NEO -1D064;N # BYZANTINE MUSICAL SYMBOL EKSTREPTON -1D065;N # BYZANTINE MUSICAL SYMBOL SYNAGMA NEO -1D066;N # BYZANTINE MUSICAL SYMBOL SYRMA -1D067;N # BYZANTINE MUSICAL SYMBOL CHOREVMA NEO -1D068;N # BYZANTINE MUSICAL SYMBOL EPEGERMA -1D069;N # BYZANTINE MUSICAL SYMBOL SEISMA NEO -1D06A;N # BYZANTINE MUSICAL SYMBOL XIRON KLASMA -1D06B;N # BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON -1D06C;N # BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA -1D06D;N # BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA -1D06E;N # BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA -1D06F;N # BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA -1D070;N # BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA -1D071;N # BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA -1D072;N # BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON -1D073;N # BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON -1D074;N # BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON -1D075;N # BYZANTINE MUSICAL SYMBOL OYRANISMA NEO -1D076;N # BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO -1D077;N # BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO -1D078;N # BYZANTINE MUSICAL SYMBOL THEMA APLOUN -1D079;N # BYZANTINE MUSICAL SYMBOL THES KAI APOTHES -1D07A;N # BYZANTINE MUSICAL SYMBOL KATAVASMA -1D07B;N # BYZANTINE MUSICAL SYMBOL ENDOFONON -1D07C;N # BYZANTINE MUSICAL SYMBOL YFEN KATO -1D07D;N # BYZANTINE MUSICAL SYMBOL YFEN ANO -1D07E;N # BYZANTINE MUSICAL SYMBOL STAVROS -1D07F;N # BYZANTINE MUSICAL SYMBOL KLASMA ANO -1D080;N # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION -1D081;N # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION -1D082;N # BYZANTINE MUSICAL SYMBOL KRATIMA ALLO -1D083;N # BYZANTINE MUSICAL SYMBOL KRATIMA NEO -1D084;N # BYZANTINE MUSICAL SYMBOL APODERMA NEO -1D085;N # BYZANTINE MUSICAL SYMBOL APLI -1D086;N # BYZANTINE MUSICAL SYMBOL DIPLI -1D087;N # BYZANTINE MUSICAL SYMBOL TRIPLI -1D088;N # BYZANTINE MUSICAL SYMBOL TETRAPLI -1D089;N # BYZANTINE MUSICAL SYMBOL KORONIS -1D08A;N # BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU -1D08B;N # BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON -1D08C;N # BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON -1D08D;N # BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON -1D08E;N # BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU -1D08F;N # BYZANTINE MUSICAL SYMBOL GORGON NEO ANO -1D090;N # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA -1D091;N # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA -1D092;N # BYZANTINE MUSICAL SYMBOL DIGORGON -1D093;N # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO -1D094;N # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO -1D095;N # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA -1D096;N # BYZANTINE MUSICAL SYMBOL TRIGORGON -1D097;N # BYZANTINE MUSICAL SYMBOL ARGON -1D098;N # BYZANTINE MUSICAL SYMBOL IMIDIARGON -1D099;N # BYZANTINE MUSICAL SYMBOL DIARGON -1D09A;N # BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI -1D09B;N # BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI -1D09C;N # BYZANTINE MUSICAL SYMBOL AGOGI ARGI -1D09D;N # BYZANTINE MUSICAL SYMBOL AGOGI METRIA -1D09E;N # BYZANTINE MUSICAL SYMBOL AGOGI MESI -1D09F;N # BYZANTINE MUSICAL SYMBOL AGOGI GORGI -1D0A0;N # BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI -1D0A1;N # BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI -1D0A2;N # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS -1D0A3;N # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS -1D0A4;N # BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS -1D0A5;N # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS -1D0A6;N # BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS -1D0A7;N # BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS -1D0A8;N # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS -1D0A9;N # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS -1D0AA;N # BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS -1D0AB;N # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS -1D0AC;N # BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS -1D0AD;N # BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS -1D0AE;N # BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS -1D0AF;N # BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS -1D0B0;N # BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS -1D0B1;N # BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS -1D0B2;N # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS -1D0B3;N # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS -1D0B4;N # BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN -1D0B5;N # BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN -1D0B6;N # BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU -1D0B7;N # BYZANTINE MUSICAL SYMBOL IMIFONON -1D0B8;N # BYZANTINE MUSICAL SYMBOL IMIFTHORON -1D0B9;N # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU -1D0BA;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA -1D0BB;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA -1D0BC;N # BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS -1D0BD;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI -1D0BE;N # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI -1D0BF;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE -1D0C0;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO -1D0C1;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO -1D0C2;N # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO -1D0C3;N # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS -1D0C4;N # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS -1D0C5;N # BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS -1D0C6;N # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI -1D0C7;N # BYZANTINE MUSICAL SYMBOL FTHORA NENANO -1D0C8;N # BYZANTINE MUSICAL SYMBOL CHROA ZYGOS -1D0C9;N # BYZANTINE MUSICAL SYMBOL CHROA KLITON -1D0CA;N # BYZANTINE MUSICAL SYMBOL CHROA SPATHI -1D0CB;N # BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION -1D0CC;N # BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA -1D0CD;N # BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION -1D0CE;N # BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION -1D0CF;N # BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION -1D0D0;N # BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA -1D0D1;N # BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA -1D0D2;N # BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA -1D0D3;N # BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA -1D0D4;N # BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA -1D0D5;N # BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA -1D0D6;N # BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA -1D0D7;N # BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA -1D0D8;N # BYZANTINE MUSICAL SYMBOL GENIKI DIESIS -1D0D9;N # BYZANTINE MUSICAL SYMBOL GENIKI YFESIS -1D0DA;N # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI -1D0DB;N # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI -1D0DC;N # BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI -1D0DD;N # BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS -1D0DE;N # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS -1D0DF;N # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU -1D0E0;N # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU -1D0E1;N # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU -1D0E2;N # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS -1D0E3;N # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU -1D0E4;N # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU -1D0E5;N # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU -1D0E6;N # BYZANTINE MUSICAL SYMBOL DIGRAMMA GG -1D0E7;N # BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU -1D0E8;N # BYZANTINE MUSICAL SYMBOL STIGMA -1D0E9;N # BYZANTINE MUSICAL SYMBOL ARKTIKO PA -1D0EA;N # BYZANTINE MUSICAL SYMBOL ARKTIKO VOU -1D0EB;N # BYZANTINE MUSICAL SYMBOL ARKTIKO GA -1D0EC;N # BYZANTINE MUSICAL SYMBOL ARKTIKO DI -1D0ED;N # BYZANTINE MUSICAL SYMBOL ARKTIKO KE -1D0EE;N # BYZANTINE MUSICAL SYMBOL ARKTIKO ZO -1D0EF;N # BYZANTINE MUSICAL SYMBOL ARKTIKO NI -1D0F0;N # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO -1D0F1;N # BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO -1D0F2;N # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO -1D0F3;N # BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO -1D0F4;N # BYZANTINE MUSICAL SYMBOL KLASMA KATO -1D0F5;N # BYZANTINE MUSICAL SYMBOL GORGON NEO KATO -1D100;N # MUSICAL SYMBOL SINGLE BARLINE -1D101;N # MUSICAL SYMBOL DOUBLE BARLINE -1D102;N # MUSICAL SYMBOL FINAL BARLINE -1D103;N # MUSICAL SYMBOL REVERSE FINAL BARLINE -1D104;N # MUSICAL SYMBOL DASHED BARLINE -1D105;N # MUSICAL SYMBOL SHORT BARLINE -1D106;N # MUSICAL SYMBOL LEFT REPEAT SIGN -1D107;N # MUSICAL SYMBOL RIGHT REPEAT SIGN -1D108;N # MUSICAL SYMBOL REPEAT DOTS -1D109;N # MUSICAL SYMBOL DAL SEGNO -1D10A;N # MUSICAL SYMBOL DA CAPO -1D10B;N # MUSICAL SYMBOL SEGNO -1D10C;N # MUSICAL SYMBOL CODA -1D10D;N # MUSICAL SYMBOL REPEATED FIGURE-1 -1D10E;N # MUSICAL SYMBOL REPEATED FIGURE-2 -1D10F;N # MUSICAL SYMBOL REPEATED FIGURE-3 -1D110;N # MUSICAL SYMBOL FERMATA -1D111;N # MUSICAL SYMBOL FERMATA BELOW -1D112;N # MUSICAL SYMBOL BREATH MARK -1D113;N # MUSICAL SYMBOL CAESURA -1D114;N # MUSICAL SYMBOL BRACE -1D115;N # MUSICAL SYMBOL BRACKET -1D116;N # MUSICAL SYMBOL ONE-LINE STAFF -1D117;N # MUSICAL SYMBOL TWO-LINE STAFF -1D118;N # MUSICAL SYMBOL THREE-LINE STAFF -1D119;N # MUSICAL SYMBOL FOUR-LINE STAFF -1D11A;N # MUSICAL SYMBOL FIVE-LINE STAFF -1D11B;N # MUSICAL SYMBOL SIX-LINE STAFF -1D11C;N # MUSICAL SYMBOL SIX-STRING FRETBOARD -1D11D;N # MUSICAL SYMBOL FOUR-STRING FRETBOARD -1D11E;N # MUSICAL SYMBOL G CLEF -1D11F;N # MUSICAL SYMBOL G CLEF OTTAVA ALTA -1D120;N # MUSICAL SYMBOL G CLEF OTTAVA BASSA -1D121;N # MUSICAL SYMBOL C CLEF -1D122;N # MUSICAL SYMBOL F CLEF -1D123;N # MUSICAL SYMBOL F CLEF OTTAVA ALTA -1D124;N # MUSICAL SYMBOL F CLEF OTTAVA BASSA -1D125;N # MUSICAL SYMBOL DRUM CLEF-1 -1D126;N # MUSICAL SYMBOL DRUM CLEF-2 -1D12A;N # MUSICAL SYMBOL DOUBLE SHARP -1D12B;N # MUSICAL SYMBOL DOUBLE FLAT -1D12C;N # MUSICAL SYMBOL FLAT UP -1D12D;N # MUSICAL SYMBOL FLAT DOWN -1D12E;N # MUSICAL SYMBOL NATURAL UP -1D12F;N # MUSICAL SYMBOL NATURAL DOWN -1D130;N # MUSICAL SYMBOL SHARP UP -1D131;N # MUSICAL SYMBOL SHARP DOWN -1D132;N # MUSICAL SYMBOL QUARTER TONE SHARP -1D133;N # MUSICAL SYMBOL QUARTER TONE FLAT -1D134;N # MUSICAL SYMBOL COMMON TIME -1D135;N # MUSICAL SYMBOL CUT TIME -1D136;N # MUSICAL SYMBOL OTTAVA ALTA -1D137;N # MUSICAL SYMBOL OTTAVA BASSA -1D138;N # MUSICAL SYMBOL QUINDICESIMA ALTA -1D139;N # MUSICAL SYMBOL QUINDICESIMA BASSA -1D13A;N # MUSICAL SYMBOL MULTI REST -1D13B;N # MUSICAL SYMBOL WHOLE REST -1D13C;N # MUSICAL SYMBOL HALF REST -1D13D;N # MUSICAL SYMBOL QUARTER REST -1D13E;N # MUSICAL SYMBOL EIGHTH REST -1D13F;N # MUSICAL SYMBOL SIXTEENTH REST -1D140;N # MUSICAL SYMBOL THIRTY-SECOND REST -1D141;N # MUSICAL SYMBOL SIXTY-FOURTH REST -1D142;N # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST -1D143;N # MUSICAL SYMBOL X NOTEHEAD -1D144;N # MUSICAL SYMBOL PLUS NOTEHEAD -1D145;N # MUSICAL SYMBOL CIRCLE X NOTEHEAD -1D146;N # MUSICAL SYMBOL SQUARE NOTEHEAD WHITE -1D147;N # MUSICAL SYMBOL SQUARE NOTEHEAD BLACK -1D148;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE -1D149;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK -1D14A;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE -1D14B;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK -1D14C;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE -1D14D;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK -1D14E;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE -1D14F;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK -1D150;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE -1D151;N # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK -1D152;N # MUSICAL SYMBOL MOON NOTEHEAD WHITE -1D153;N # MUSICAL SYMBOL MOON NOTEHEAD BLACK -1D154;N # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE -1D155;N # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK -1D156;N # MUSICAL SYMBOL PARENTHESIS NOTEHEAD -1D157;N # MUSICAL SYMBOL VOID NOTEHEAD -1D158;N # MUSICAL SYMBOL NOTEHEAD BLACK -1D159;N # MUSICAL SYMBOL NULL NOTEHEAD -1D15A;N # MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE -1D15B;N # MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK -1D15C;N # MUSICAL SYMBOL BREVE -1D15D;N # MUSICAL SYMBOL WHOLE NOTE -1D15E;N # MUSICAL SYMBOL HALF NOTE -1D15F;N # MUSICAL SYMBOL QUARTER NOTE -1D160;N # MUSICAL SYMBOL EIGHTH NOTE -1D161;N # MUSICAL SYMBOL SIXTEENTH NOTE -1D162;N # MUSICAL SYMBOL THIRTY-SECOND NOTE -1D163;N # MUSICAL SYMBOL SIXTY-FOURTH NOTE -1D164;N # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE -1D165;N # MUSICAL SYMBOL COMBINING STEM -1D166;N # MUSICAL SYMBOL COMBINING SPRECHGESANG STEM -1D167;N # MUSICAL SYMBOL COMBINING TREMOLO-1 -1D168;N # MUSICAL SYMBOL COMBINING TREMOLO-2 -1D169;N # MUSICAL SYMBOL COMBINING TREMOLO-3 -1D16A;N # MUSICAL SYMBOL FINGERED TREMOLO-1 -1D16B;N # MUSICAL SYMBOL FINGERED TREMOLO-2 -1D16C;N # MUSICAL SYMBOL FINGERED TREMOLO-3 -1D16D;N # MUSICAL SYMBOL COMBINING AUGMENTATION DOT -1D16E;N # MUSICAL SYMBOL COMBINING FLAG-1 -1D16F;N # MUSICAL SYMBOL COMBINING FLAG-2 -1D170;N # MUSICAL SYMBOL COMBINING FLAG-3 -1D171;N # MUSICAL SYMBOL COMBINING FLAG-4 -1D172;N # MUSICAL SYMBOL COMBINING FLAG-5 -1D173;N # MUSICAL SYMBOL BEGIN BEAM -1D174;N # MUSICAL SYMBOL END BEAM -1D175;N # MUSICAL SYMBOL BEGIN TIE -1D176;N # MUSICAL SYMBOL END TIE -1D177;N # MUSICAL SYMBOL BEGIN SLUR -1D178;N # MUSICAL SYMBOL END SLUR -1D179;N # MUSICAL SYMBOL BEGIN PHRASE -1D17A;N # MUSICAL SYMBOL END PHRASE -1D17B;N # MUSICAL SYMBOL COMBINING ACCENT -1D17C;N # MUSICAL SYMBOL COMBINING STACCATO -1D17D;N # MUSICAL SYMBOL COMBINING TENUTO -1D17E;N # MUSICAL SYMBOL COMBINING STACCATISSIMO -1D17F;N # MUSICAL SYMBOL COMBINING MARCATO -1D180;N # MUSICAL SYMBOL COMBINING MARCATO-STACCATO -1D181;N # MUSICAL SYMBOL COMBINING ACCENT-STACCATO -1D182;N # MUSICAL SYMBOL COMBINING LOURE -1D183;N # MUSICAL SYMBOL ARPEGGIATO UP -1D184;N # MUSICAL SYMBOL ARPEGGIATO DOWN -1D185;N # MUSICAL SYMBOL COMBINING DOIT -1D186;N # MUSICAL SYMBOL COMBINING RIP -1D187;N # MUSICAL SYMBOL COMBINING FLIP -1D188;N # MUSICAL SYMBOL COMBINING SMEAR -1D189;N # MUSICAL SYMBOL COMBINING BEND -1D18A;N # MUSICAL SYMBOL COMBINING DOUBLE TONGUE -1D18B;N # MUSICAL SYMBOL COMBINING TRIPLE TONGUE -1D18C;N # MUSICAL SYMBOL RINFORZANDO -1D18D;N # MUSICAL SYMBOL SUBITO -1D18E;N # MUSICAL SYMBOL Z -1D18F;N # MUSICAL SYMBOL PIANO -1D190;N # MUSICAL SYMBOL MEZZO -1D191;N # MUSICAL SYMBOL FORTE -1D192;N # MUSICAL SYMBOL CRESCENDO -1D193;N # MUSICAL SYMBOL DECRESCENDO -1D194;N # MUSICAL SYMBOL GRACE NOTE SLASH -1D195;N # MUSICAL SYMBOL GRACE NOTE NO SLASH -1D196;N # MUSICAL SYMBOL TR -1D197;N # MUSICAL SYMBOL TURN -1D198;N # MUSICAL SYMBOL INVERTED TURN -1D199;N # MUSICAL SYMBOL TURN SLASH -1D19A;N # MUSICAL SYMBOL TURN UP -1D19B;N # MUSICAL SYMBOL ORNAMENT STROKE-1 -1D19C;N # MUSICAL SYMBOL ORNAMENT STROKE-2 -1D19D;N # MUSICAL SYMBOL ORNAMENT STROKE-3 -1D19E;N # MUSICAL SYMBOL ORNAMENT STROKE-4 -1D19F;N # MUSICAL SYMBOL ORNAMENT STROKE-5 -1D1A0;N # MUSICAL SYMBOL ORNAMENT STROKE-6 -1D1A1;N # MUSICAL SYMBOL ORNAMENT STROKE-7 -1D1A2;N # MUSICAL SYMBOL ORNAMENT STROKE-8 -1D1A3;N # MUSICAL SYMBOL ORNAMENT STROKE-9 -1D1A4;N # MUSICAL SYMBOL ORNAMENT STROKE-10 -1D1A5;N # MUSICAL SYMBOL ORNAMENT STROKE-11 -1D1A6;N # MUSICAL SYMBOL HAUPTSTIMME -1D1A7;N # MUSICAL SYMBOL NEBENSTIMME -1D1A8;N # MUSICAL SYMBOL END OF STIMME -1D1A9;N # MUSICAL SYMBOL DEGREE SLASH -1D1AA;N # MUSICAL SYMBOL COMBINING DOWN BOW -1D1AB;N # MUSICAL SYMBOL COMBINING UP BOW -1D1AC;N # MUSICAL SYMBOL COMBINING HARMONIC -1D1AD;N # MUSICAL SYMBOL COMBINING SNAP PIZZICATO -1D1AE;N # MUSICAL SYMBOL PEDAL MARK -1D1AF;N # MUSICAL SYMBOL PEDAL UP MARK -1D1B0;N # MUSICAL SYMBOL HALF PEDAL MARK -1D1B1;N # MUSICAL SYMBOL GLISSANDO UP -1D1B2;N # MUSICAL SYMBOL GLISSANDO DOWN -1D1B3;N # MUSICAL SYMBOL WITH FINGERNAILS -1D1B4;N # MUSICAL SYMBOL DAMP -1D1B5;N # MUSICAL SYMBOL DAMP ALL -1D1B6;N # MUSICAL SYMBOL MAXIMA -1D1B7;N # MUSICAL SYMBOL LONGA -1D1B8;N # MUSICAL SYMBOL BREVIS -1D1B9;N # MUSICAL SYMBOL SEMIBREVIS WHITE -1D1BA;N # MUSICAL SYMBOL SEMIBREVIS BLACK -1D1BB;N # MUSICAL SYMBOL MINIMA -1D1BC;N # MUSICAL SYMBOL MINIMA BLACK -1D1BD;N # MUSICAL SYMBOL SEMIMINIMA WHITE -1D1BE;N # MUSICAL SYMBOL SEMIMINIMA BLACK -1D1BF;N # MUSICAL SYMBOL FUSA WHITE -1D1C0;N # MUSICAL SYMBOL FUSA BLACK -1D1C1;N # MUSICAL SYMBOL LONGA PERFECTA REST -1D1C2;N # MUSICAL SYMBOL LONGA IMPERFECTA REST -1D1C3;N # MUSICAL SYMBOL BREVIS REST -1D1C4;N # MUSICAL SYMBOL SEMIBREVIS REST -1D1C5;N # MUSICAL SYMBOL MINIMA REST -1D1C6;N # MUSICAL SYMBOL SEMIMINIMA REST -1D1C7;N # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA -1D1C8;N # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA -1D1C9;N # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1 -1D1CA;N # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA -1D1CB;N # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA -1D1CC;N # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1 -1D1CD;N # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2 -1D1CE;N # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3 -1D1CF;N # MUSICAL SYMBOL CROIX -1D1D0;N # MUSICAL SYMBOL GREGORIAN C CLEF -1D1D1;N # MUSICAL SYMBOL GREGORIAN F CLEF -1D1D2;N # MUSICAL SYMBOL SQUARE B -1D1D3;N # MUSICAL SYMBOL VIRGA -1D1D4;N # MUSICAL SYMBOL PODATUS -1D1D5;N # MUSICAL SYMBOL CLIVIS -1D1D6;N # MUSICAL SYMBOL SCANDICUS -1D1D7;N # MUSICAL SYMBOL CLIMACUS -1D1D8;N # MUSICAL SYMBOL TORCULUS -1D1D9;N # MUSICAL SYMBOL PORRECTUS -1D1DA;N # MUSICAL SYMBOL PORRECTUS FLEXUS -1D1DB;N # MUSICAL SYMBOL SCANDICUS FLEXUS -1D1DC;N # MUSICAL SYMBOL TORCULUS RESUPINUS -1D1DD;N # MUSICAL SYMBOL PES SUBPUNCTIS -1D200;N # GREEK VOCAL NOTATION SYMBOL-1 -1D201;N # GREEK VOCAL NOTATION SYMBOL-2 -1D202;N # GREEK VOCAL NOTATION SYMBOL-3 -1D203;N # GREEK VOCAL NOTATION SYMBOL-4 -1D204;N # GREEK VOCAL NOTATION SYMBOL-5 -1D205;N # GREEK VOCAL NOTATION SYMBOL-6 -1D206;N # GREEK VOCAL NOTATION SYMBOL-7 -1D207;N # GREEK VOCAL NOTATION SYMBOL-8 -1D208;N # GREEK VOCAL NOTATION SYMBOL-9 -1D209;N # GREEK VOCAL NOTATION SYMBOL-10 -1D20A;N # GREEK VOCAL NOTATION SYMBOL-11 -1D20B;N # GREEK VOCAL NOTATION SYMBOL-12 -1D20C;N # GREEK VOCAL NOTATION SYMBOL-13 -1D20D;N # GREEK VOCAL NOTATION SYMBOL-14 -1D20E;N # GREEK VOCAL NOTATION SYMBOL-15 -1D20F;N # GREEK VOCAL NOTATION SYMBOL-16 -1D210;N # GREEK VOCAL NOTATION SYMBOL-17 -1D211;N # GREEK VOCAL NOTATION SYMBOL-18 -1D212;N # GREEK VOCAL NOTATION SYMBOL-19 -1D213;N # GREEK VOCAL NOTATION SYMBOL-20 -1D214;N # GREEK VOCAL NOTATION SYMBOL-21 -1D215;N # GREEK VOCAL NOTATION SYMBOL-22 -1D216;N # GREEK VOCAL NOTATION SYMBOL-23 -1D217;N # GREEK VOCAL NOTATION SYMBOL-24 -1D218;N # GREEK VOCAL NOTATION SYMBOL-50 -1D219;N # GREEK VOCAL NOTATION SYMBOL-51 -1D21A;N # GREEK VOCAL NOTATION SYMBOL-52 -1D21B;N # GREEK VOCAL NOTATION SYMBOL-53 -1D21C;N # GREEK VOCAL NOTATION SYMBOL-54 -1D21D;N # GREEK INSTRUMENTAL NOTATION SYMBOL-1 -1D21E;N # GREEK INSTRUMENTAL NOTATION SYMBOL-2 -1D21F;N # GREEK INSTRUMENTAL NOTATION SYMBOL-4 -1D220;N # GREEK INSTRUMENTAL NOTATION SYMBOL-5 -1D221;N # GREEK INSTRUMENTAL NOTATION SYMBOL-7 -1D222;N # GREEK INSTRUMENTAL NOTATION SYMBOL-8 -1D223;N # GREEK INSTRUMENTAL NOTATION SYMBOL-11 -1D224;N # GREEK INSTRUMENTAL NOTATION SYMBOL-12 -1D225;N # GREEK INSTRUMENTAL NOTATION SYMBOL-13 -1D226;N # GREEK INSTRUMENTAL NOTATION SYMBOL-14 -1D227;N # GREEK INSTRUMENTAL NOTATION SYMBOL-17 -1D228;N # GREEK INSTRUMENTAL NOTATION SYMBOL-18 -1D229;N # GREEK INSTRUMENTAL NOTATION SYMBOL-19 -1D22A;N # GREEK INSTRUMENTAL NOTATION SYMBOL-23 -1D22B;N # GREEK INSTRUMENTAL NOTATION SYMBOL-24 -1D22C;N # GREEK INSTRUMENTAL NOTATION SYMBOL-25 -1D22D;N # GREEK INSTRUMENTAL NOTATION SYMBOL-26 -1D22E;N # GREEK INSTRUMENTAL NOTATION SYMBOL-27 -1D22F;N # GREEK INSTRUMENTAL NOTATION SYMBOL-29 -1D230;N # GREEK INSTRUMENTAL NOTATION SYMBOL-30 -1D231;N # GREEK INSTRUMENTAL NOTATION SYMBOL-32 -1D232;N # GREEK INSTRUMENTAL NOTATION SYMBOL-36 -1D233;N # GREEK INSTRUMENTAL NOTATION SYMBOL-37 -1D234;N # GREEK INSTRUMENTAL NOTATION SYMBOL-38 -1D235;N # GREEK INSTRUMENTAL NOTATION SYMBOL-39 -1D236;N # GREEK INSTRUMENTAL NOTATION SYMBOL-40 -1D237;N # GREEK INSTRUMENTAL NOTATION SYMBOL-42 -1D238;N # GREEK INSTRUMENTAL NOTATION SYMBOL-43 -1D239;N # GREEK INSTRUMENTAL NOTATION SYMBOL-45 -1D23A;N # GREEK INSTRUMENTAL NOTATION SYMBOL-47 -1D23B;N # GREEK INSTRUMENTAL NOTATION SYMBOL-48 -1D23C;N # GREEK INSTRUMENTAL NOTATION SYMBOL-49 -1D23D;N # GREEK INSTRUMENTAL NOTATION SYMBOL-50 -1D23E;N # GREEK INSTRUMENTAL NOTATION SYMBOL-51 -1D23F;N # GREEK INSTRUMENTAL NOTATION SYMBOL-52 -1D240;N # GREEK INSTRUMENTAL NOTATION SYMBOL-53 -1D241;N # GREEK INSTRUMENTAL NOTATION SYMBOL-54 -1D242;N # COMBINING GREEK MUSICAL TRISEME -1D243;N # COMBINING GREEK MUSICAL TETRASEME -1D244;N # COMBINING GREEK MUSICAL PENTASEME -1D245;N # GREEK MUSICAL LEIMMA -1D300;N # MONOGRAM FOR EARTH -1D301;N # DIGRAM FOR HEAVENLY EARTH -1D302;N # DIGRAM FOR HUMAN EARTH -1D303;N # DIGRAM FOR EARTHLY HEAVEN -1D304;N # DIGRAM FOR EARTHLY HUMAN -1D305;N # DIGRAM FOR EARTH -1D306;N # TETRAGRAM FOR CENTRE -1D307;N # TETRAGRAM FOR FULL CIRCLE -1D308;N # TETRAGRAM FOR MIRED -1D309;N # TETRAGRAM FOR BARRIER -1D30A;N # TETRAGRAM FOR KEEPING SMALL -1D30B;N # TETRAGRAM FOR CONTRARIETY -1D30C;N # TETRAGRAM FOR ASCENT -1D30D;N # TETRAGRAM FOR OPPOSITION -1D30E;N # TETRAGRAM FOR BRANCHING OUT -1D30F;N # TETRAGRAM FOR DEFECTIVENESS OR DISTORTION -1D310;N # TETRAGRAM FOR DIVERGENCE -1D311;N # TETRAGRAM FOR YOUTHFULNESS -1D312;N # TETRAGRAM FOR INCREASE -1D313;N # TETRAGRAM FOR PENETRATION -1D314;N # TETRAGRAM FOR REACH -1D315;N # TETRAGRAM FOR CONTACT -1D316;N # TETRAGRAM FOR HOLDING BACK -1D317;N # TETRAGRAM FOR WAITING -1D318;N # TETRAGRAM FOR FOLLOWING -1D319;N # TETRAGRAM FOR ADVANCE -1D31A;N # TETRAGRAM FOR RELEASE -1D31B;N # TETRAGRAM FOR RESISTANCE -1D31C;N # TETRAGRAM FOR EASE -1D31D;N # TETRAGRAM FOR JOY -1D31E;N # TETRAGRAM FOR CONTENTION -1D31F;N # TETRAGRAM FOR ENDEAVOUR -1D320;N # TETRAGRAM FOR DUTIES -1D321;N # TETRAGRAM FOR CHANGE -1D322;N # TETRAGRAM FOR DECISIVENESS -1D323;N # TETRAGRAM FOR BOLD RESOLUTION -1D324;N # TETRAGRAM FOR PACKING -1D325;N # TETRAGRAM FOR LEGION -1D326;N # TETRAGRAM FOR CLOSENESS -1D327;N # TETRAGRAM FOR KINSHIP -1D328;N # TETRAGRAM FOR GATHERING -1D329;N # TETRAGRAM FOR STRENGTH -1D32A;N # TETRAGRAM FOR PURITY -1D32B;N # TETRAGRAM FOR FULLNESS -1D32C;N # TETRAGRAM FOR RESIDENCE -1D32D;N # TETRAGRAM FOR LAW OR MODEL -1D32E;N # TETRAGRAM FOR RESPONSE -1D32F;N # TETRAGRAM FOR GOING TO MEET -1D330;N # TETRAGRAM FOR ENCOUNTERS -1D331;N # TETRAGRAM FOR STOVE -1D332;N # TETRAGRAM FOR GREATNESS -1D333;N # TETRAGRAM FOR ENLARGEMENT -1D334;N # TETRAGRAM FOR PATTERN -1D335;N # TETRAGRAM FOR RITUAL -1D336;N # TETRAGRAM FOR FLIGHT -1D337;N # TETRAGRAM FOR VASTNESS OR WASTING -1D338;N # TETRAGRAM FOR CONSTANCY -1D339;N # TETRAGRAM FOR MEASURE -1D33A;N # TETRAGRAM FOR ETERNITY -1D33B;N # TETRAGRAM FOR UNITY -1D33C;N # TETRAGRAM FOR DIMINISHMENT -1D33D;N # TETRAGRAM FOR CLOSED MOUTH -1D33E;N # TETRAGRAM FOR GUARDEDNESS -1D33F;N # TETRAGRAM FOR GATHERING IN -1D340;N # TETRAGRAM FOR MASSING -1D341;N # TETRAGRAM FOR ACCUMULATION -1D342;N # TETRAGRAM FOR EMBELLISHMENT -1D343;N # TETRAGRAM FOR DOUBT -1D344;N # TETRAGRAM FOR WATCH -1D345;N # TETRAGRAM FOR SINKING -1D346;N # TETRAGRAM FOR INNER -1D347;N # TETRAGRAM FOR DEPARTURE -1D348;N # TETRAGRAM FOR DARKENING -1D349;N # TETRAGRAM FOR DIMMING -1D34A;N # TETRAGRAM FOR EXHAUSTION -1D34B;N # TETRAGRAM FOR SEVERANCE -1D34C;N # TETRAGRAM FOR STOPPAGE -1D34D;N # TETRAGRAM FOR HARDNESS -1D34E;N # TETRAGRAM FOR COMPLETION -1D34F;N # TETRAGRAM FOR CLOSURE -1D350;N # TETRAGRAM FOR FAILURE -1D351;N # TETRAGRAM FOR AGGRAVATION -1D352;N # TETRAGRAM FOR COMPLIANCE -1D353;N # TETRAGRAM FOR ON THE VERGE -1D354;N # TETRAGRAM FOR DIFFICULTIES -1D355;N # TETRAGRAM FOR LABOURING -1D356;N # TETRAGRAM FOR FOSTERING -1D400;N # MATHEMATICAL BOLD CAPITAL A -1D401;N # MATHEMATICAL BOLD CAPITAL B -1D402;N # MATHEMATICAL BOLD CAPITAL C -1D403;N # MATHEMATICAL BOLD CAPITAL D -1D404;N # MATHEMATICAL BOLD CAPITAL E -1D405;N # MATHEMATICAL BOLD CAPITAL F -1D406;N # MATHEMATICAL BOLD CAPITAL G -1D407;N # MATHEMATICAL BOLD CAPITAL H -1D408;N # MATHEMATICAL BOLD CAPITAL I -1D409;N # MATHEMATICAL BOLD CAPITAL J -1D40A;N # MATHEMATICAL BOLD CAPITAL K -1D40B;N # MATHEMATICAL BOLD CAPITAL L -1D40C;N # MATHEMATICAL BOLD CAPITAL M -1D40D;N # MATHEMATICAL BOLD CAPITAL N -1D40E;N # MATHEMATICAL BOLD CAPITAL O -1D40F;N # MATHEMATICAL BOLD CAPITAL P -1D410;N # MATHEMATICAL BOLD CAPITAL Q -1D411;N # MATHEMATICAL BOLD CAPITAL R -1D412;N # MATHEMATICAL BOLD CAPITAL S -1D413;N # MATHEMATICAL BOLD CAPITAL T -1D414;N # MATHEMATICAL BOLD CAPITAL U -1D415;N # MATHEMATICAL BOLD CAPITAL V -1D416;N # MATHEMATICAL BOLD CAPITAL W -1D417;N # MATHEMATICAL BOLD CAPITAL X -1D418;N # MATHEMATICAL BOLD CAPITAL Y -1D419;N # MATHEMATICAL BOLD CAPITAL Z -1D41A;N # MATHEMATICAL BOLD SMALL A -1D41B;N # MATHEMATICAL BOLD SMALL B -1D41C;N # MATHEMATICAL BOLD SMALL C -1D41D;N # MATHEMATICAL BOLD SMALL D -1D41E;N # MATHEMATICAL BOLD SMALL E -1D41F;N # MATHEMATICAL BOLD SMALL F -1D420;N # MATHEMATICAL BOLD SMALL G -1D421;N # MATHEMATICAL BOLD SMALL H -1D422;N # MATHEMATICAL BOLD SMALL I -1D423;N # MATHEMATICAL BOLD SMALL J -1D424;N # MATHEMATICAL BOLD SMALL K -1D425;N # MATHEMATICAL BOLD SMALL L -1D426;N # MATHEMATICAL BOLD SMALL M -1D427;N # MATHEMATICAL BOLD SMALL N -1D428;N # MATHEMATICAL BOLD SMALL O -1D429;N # MATHEMATICAL BOLD SMALL P -1D42A;N # MATHEMATICAL BOLD SMALL Q -1D42B;N # MATHEMATICAL BOLD SMALL R -1D42C;N # MATHEMATICAL BOLD SMALL S -1D42D;N # MATHEMATICAL BOLD SMALL T -1D42E;N # MATHEMATICAL BOLD SMALL U -1D42F;N # MATHEMATICAL BOLD SMALL V -1D430;N # MATHEMATICAL BOLD SMALL W -1D431;N # MATHEMATICAL BOLD SMALL X -1D432;N # MATHEMATICAL BOLD SMALL Y -1D433;N # MATHEMATICAL BOLD SMALL Z -1D434;N # MATHEMATICAL ITALIC CAPITAL A -1D435;N # MATHEMATICAL ITALIC CAPITAL B -1D436;N # MATHEMATICAL ITALIC CAPITAL C -1D437;N # MATHEMATICAL ITALIC CAPITAL D -1D438;N # MATHEMATICAL ITALIC CAPITAL E -1D439;N # MATHEMATICAL ITALIC CAPITAL F -1D43A;N # MATHEMATICAL ITALIC CAPITAL G -1D43B;N # MATHEMATICAL ITALIC CAPITAL H -1D43C;N # MATHEMATICAL ITALIC CAPITAL I -1D43D;N # MATHEMATICAL ITALIC CAPITAL J -1D43E;N # MATHEMATICAL ITALIC CAPITAL K -1D43F;N # MATHEMATICAL ITALIC CAPITAL L -1D440;N # MATHEMATICAL ITALIC CAPITAL M -1D441;N # MATHEMATICAL ITALIC CAPITAL N -1D442;N # MATHEMATICAL ITALIC CAPITAL O -1D443;N # MATHEMATICAL ITALIC CAPITAL P -1D444;N # MATHEMATICAL ITALIC CAPITAL Q -1D445;N # MATHEMATICAL ITALIC CAPITAL R -1D446;N # MATHEMATICAL ITALIC CAPITAL S -1D447;N # MATHEMATICAL ITALIC CAPITAL T -1D448;N # MATHEMATICAL ITALIC CAPITAL U -1D449;N # MATHEMATICAL ITALIC CAPITAL V -1D44A;N # MATHEMATICAL ITALIC CAPITAL W -1D44B;N # MATHEMATICAL ITALIC CAPITAL X -1D44C;N # MATHEMATICAL ITALIC CAPITAL Y -1D44D;N # MATHEMATICAL ITALIC CAPITAL Z -1D44E;N # MATHEMATICAL ITALIC SMALL A -1D44F;N # MATHEMATICAL ITALIC SMALL B -1D450;N # MATHEMATICAL ITALIC SMALL C -1D451;N # MATHEMATICAL ITALIC SMALL D -1D452;N # MATHEMATICAL ITALIC SMALL E -1D453;N # MATHEMATICAL ITALIC SMALL F -1D454;N # MATHEMATICAL ITALIC SMALL G -1D456;N # MATHEMATICAL ITALIC SMALL I -1D457;N # MATHEMATICAL ITALIC SMALL J -1D458;N # MATHEMATICAL ITALIC SMALL K -1D459;N # MATHEMATICAL ITALIC SMALL L -1D45A;N # MATHEMATICAL ITALIC SMALL M -1D45B;N # MATHEMATICAL ITALIC SMALL N -1D45C;N # MATHEMATICAL ITALIC SMALL O -1D45D;N # MATHEMATICAL ITALIC SMALL P -1D45E;N # MATHEMATICAL ITALIC SMALL Q -1D45F;N # MATHEMATICAL ITALIC SMALL R -1D460;N # MATHEMATICAL ITALIC SMALL S -1D461;N # MATHEMATICAL ITALIC SMALL T -1D462;N # MATHEMATICAL ITALIC SMALL U -1D463;N # MATHEMATICAL ITALIC SMALL V -1D464;N # MATHEMATICAL ITALIC SMALL W -1D465;N # MATHEMATICAL ITALIC SMALL X -1D466;N # MATHEMATICAL ITALIC SMALL Y -1D467;N # MATHEMATICAL ITALIC SMALL Z -1D468;N # MATHEMATICAL BOLD ITALIC CAPITAL A -1D469;N # MATHEMATICAL BOLD ITALIC CAPITAL B -1D46A;N # MATHEMATICAL BOLD ITALIC CAPITAL C -1D46B;N # MATHEMATICAL BOLD ITALIC CAPITAL D -1D46C;N # MATHEMATICAL BOLD ITALIC CAPITAL E -1D46D;N # MATHEMATICAL BOLD ITALIC CAPITAL F -1D46E;N # MATHEMATICAL BOLD ITALIC CAPITAL G -1D46F;N # MATHEMATICAL BOLD ITALIC CAPITAL H -1D470;N # MATHEMATICAL BOLD ITALIC CAPITAL I -1D471;N # MATHEMATICAL BOLD ITALIC CAPITAL J -1D472;N # MATHEMATICAL BOLD ITALIC CAPITAL K -1D473;N # MATHEMATICAL BOLD ITALIC CAPITAL L -1D474;N # MATHEMATICAL BOLD ITALIC CAPITAL M -1D475;N # MATHEMATICAL BOLD ITALIC CAPITAL N -1D476;N # MATHEMATICAL BOLD ITALIC CAPITAL O -1D477;N # MATHEMATICAL BOLD ITALIC CAPITAL P -1D478;N # MATHEMATICAL BOLD ITALIC CAPITAL Q -1D479;N # MATHEMATICAL BOLD ITALIC CAPITAL R -1D47A;N # MATHEMATICAL BOLD ITALIC CAPITAL S -1D47B;N # MATHEMATICAL BOLD ITALIC CAPITAL T -1D47C;N # MATHEMATICAL BOLD ITALIC CAPITAL U -1D47D;N # MATHEMATICAL BOLD ITALIC CAPITAL V -1D47E;N # MATHEMATICAL BOLD ITALIC CAPITAL W -1D47F;N # MATHEMATICAL BOLD ITALIC CAPITAL X -1D480;N # MATHEMATICAL BOLD ITALIC CAPITAL Y -1D481;N # MATHEMATICAL BOLD ITALIC CAPITAL Z -1D482;N # MATHEMATICAL BOLD ITALIC SMALL A -1D483;N # MATHEMATICAL BOLD ITALIC SMALL B -1D484;N # MATHEMATICAL BOLD ITALIC SMALL C -1D485;N # MATHEMATICAL BOLD ITALIC SMALL D -1D486;N # MATHEMATICAL BOLD ITALIC SMALL E -1D487;N # MATHEMATICAL BOLD ITALIC SMALL F -1D488;N # MATHEMATICAL BOLD ITALIC SMALL G -1D489;N # MATHEMATICAL BOLD ITALIC SMALL H -1D48A;N # MATHEMATICAL BOLD ITALIC SMALL I -1D48B;N # MATHEMATICAL BOLD ITALIC SMALL J -1D48C;N # MATHEMATICAL BOLD ITALIC SMALL K -1D48D;N # MATHEMATICAL BOLD ITALIC SMALL L -1D48E;N # MATHEMATICAL BOLD ITALIC SMALL M -1D48F;N # MATHEMATICAL BOLD ITALIC SMALL N -1D490;N # MATHEMATICAL BOLD ITALIC SMALL O -1D491;N # MATHEMATICAL BOLD ITALIC SMALL P -1D492;N # MATHEMATICAL BOLD ITALIC SMALL Q -1D493;N # MATHEMATICAL BOLD ITALIC SMALL R -1D494;N # MATHEMATICAL BOLD ITALIC SMALL S -1D495;N # MATHEMATICAL BOLD ITALIC SMALL T -1D496;N # MATHEMATICAL BOLD ITALIC SMALL U -1D497;N # MATHEMATICAL BOLD ITALIC SMALL V -1D498;N # MATHEMATICAL BOLD ITALIC SMALL W -1D499;N # MATHEMATICAL BOLD ITALIC SMALL X -1D49A;N # MATHEMATICAL BOLD ITALIC SMALL Y -1D49B;N # MATHEMATICAL BOLD ITALIC SMALL Z -1D49C;N # MATHEMATICAL SCRIPT CAPITAL A -1D49E;N # MATHEMATICAL SCRIPT CAPITAL C -1D49F;N # MATHEMATICAL SCRIPT CAPITAL D -1D4A2;N # MATHEMATICAL SCRIPT CAPITAL G -1D4A5;N # MATHEMATICAL SCRIPT CAPITAL J -1D4A6;N # MATHEMATICAL SCRIPT CAPITAL K -1D4A9;N # MATHEMATICAL SCRIPT CAPITAL N -1D4AA;N # MATHEMATICAL SCRIPT CAPITAL O -1D4AB;N # MATHEMATICAL SCRIPT CAPITAL P -1D4AC;N # MATHEMATICAL SCRIPT CAPITAL Q -1D4AE;N # MATHEMATICAL SCRIPT CAPITAL S -1D4AF;N # MATHEMATICAL SCRIPT CAPITAL T -1D4B0;N # MATHEMATICAL SCRIPT CAPITAL U -1D4B1;N # MATHEMATICAL SCRIPT CAPITAL V -1D4B2;N # MATHEMATICAL SCRIPT CAPITAL W -1D4B3;N # MATHEMATICAL SCRIPT CAPITAL X -1D4B4;N # MATHEMATICAL SCRIPT CAPITAL Y -1D4B5;N # MATHEMATICAL SCRIPT CAPITAL Z -1D4B6;N # MATHEMATICAL SCRIPT SMALL A -1D4B7;N # MATHEMATICAL SCRIPT SMALL B -1D4B8;N # MATHEMATICAL SCRIPT SMALL C -1D4B9;N # MATHEMATICAL SCRIPT SMALL D -1D4BB;N # MATHEMATICAL SCRIPT SMALL F -1D4BD;N # MATHEMATICAL SCRIPT SMALL H -1D4BE;N # MATHEMATICAL SCRIPT SMALL I -1D4BF;N # MATHEMATICAL SCRIPT SMALL J -1D4C0;N # MATHEMATICAL SCRIPT SMALL K -1D4C1;N # MATHEMATICAL SCRIPT SMALL L -1D4C2;N # MATHEMATICAL SCRIPT SMALL M -1D4C3;N # MATHEMATICAL SCRIPT SMALL N -1D4C5;N # MATHEMATICAL SCRIPT SMALL P -1D4C6;N # MATHEMATICAL SCRIPT SMALL Q -1D4C7;N # MATHEMATICAL SCRIPT SMALL R -1D4C8;N # MATHEMATICAL SCRIPT SMALL S -1D4C9;N # MATHEMATICAL SCRIPT SMALL T -1D4CA;N # MATHEMATICAL SCRIPT SMALL U -1D4CB;N # MATHEMATICAL SCRIPT SMALL V -1D4CC;N # MATHEMATICAL SCRIPT SMALL W -1D4CD;N # MATHEMATICAL SCRIPT SMALL X -1D4CE;N # MATHEMATICAL SCRIPT SMALL Y -1D4CF;N # MATHEMATICAL SCRIPT SMALL Z -1D4D0;N # MATHEMATICAL BOLD SCRIPT CAPITAL A -1D4D1;N # MATHEMATICAL BOLD SCRIPT CAPITAL B -1D4D2;N # MATHEMATICAL BOLD SCRIPT CAPITAL C -1D4D3;N # MATHEMATICAL BOLD SCRIPT CAPITAL D -1D4D4;N # MATHEMATICAL BOLD SCRIPT CAPITAL E -1D4D5;N # MATHEMATICAL BOLD SCRIPT CAPITAL F -1D4D6;N # MATHEMATICAL BOLD SCRIPT CAPITAL G -1D4D7;N # MATHEMATICAL BOLD SCRIPT CAPITAL H -1D4D8;N # MATHEMATICAL BOLD SCRIPT CAPITAL I -1D4D9;N # MATHEMATICAL BOLD SCRIPT CAPITAL J -1D4DA;N # MATHEMATICAL BOLD SCRIPT CAPITAL K -1D4DB;N # MATHEMATICAL BOLD SCRIPT CAPITAL L -1D4DC;N # MATHEMATICAL BOLD SCRIPT CAPITAL M -1D4DD;N # MATHEMATICAL BOLD SCRIPT CAPITAL N -1D4DE;N # MATHEMATICAL BOLD SCRIPT CAPITAL O -1D4DF;N # MATHEMATICAL BOLD SCRIPT CAPITAL P -1D4E0;N # MATHEMATICAL BOLD SCRIPT CAPITAL Q -1D4E1;N # MATHEMATICAL BOLD SCRIPT CAPITAL R -1D4E2;N # MATHEMATICAL BOLD SCRIPT CAPITAL S -1D4E3;N # MATHEMATICAL BOLD SCRIPT CAPITAL T -1D4E4;N # MATHEMATICAL BOLD SCRIPT CAPITAL U -1D4E5;N # MATHEMATICAL BOLD SCRIPT CAPITAL V -1D4E6;N # MATHEMATICAL BOLD SCRIPT CAPITAL W -1D4E7;N # MATHEMATICAL BOLD SCRIPT CAPITAL X -1D4E8;N # MATHEMATICAL BOLD SCRIPT CAPITAL Y -1D4E9;N # MATHEMATICAL BOLD SCRIPT CAPITAL Z -1D4EA;N # MATHEMATICAL BOLD SCRIPT SMALL A -1D4EB;N # MATHEMATICAL BOLD SCRIPT SMALL B -1D4EC;N # MATHEMATICAL BOLD SCRIPT SMALL C -1D4ED;N # MATHEMATICAL BOLD SCRIPT SMALL D -1D4EE;N # MATHEMATICAL BOLD SCRIPT SMALL E -1D4EF;N # MATHEMATICAL BOLD SCRIPT SMALL F -1D4F0;N # MATHEMATICAL BOLD SCRIPT SMALL G -1D4F1;N # MATHEMATICAL BOLD SCRIPT SMALL H -1D4F2;N # MATHEMATICAL BOLD SCRIPT SMALL I -1D4F3;N # MATHEMATICAL BOLD SCRIPT SMALL J -1D4F4;N # MATHEMATICAL BOLD SCRIPT SMALL K -1D4F5;N # MATHEMATICAL BOLD SCRIPT SMALL L -1D4F6;N # MATHEMATICAL BOLD SCRIPT SMALL M -1D4F7;N # MATHEMATICAL BOLD SCRIPT SMALL N -1D4F8;N # MATHEMATICAL BOLD SCRIPT SMALL O -1D4F9;N # MATHEMATICAL BOLD SCRIPT SMALL P -1D4FA;N # MATHEMATICAL BOLD SCRIPT SMALL Q -1D4FB;N # MATHEMATICAL BOLD SCRIPT SMALL R -1D4FC;N # MATHEMATICAL BOLD SCRIPT SMALL S -1D4FD;N # MATHEMATICAL BOLD SCRIPT SMALL T -1D4FE;N # MATHEMATICAL BOLD SCRIPT SMALL U -1D4FF;N # MATHEMATICAL BOLD SCRIPT SMALL V -1D500;N # MATHEMATICAL BOLD SCRIPT SMALL W -1D501;N # MATHEMATICAL BOLD SCRIPT SMALL X -1D502;N # MATHEMATICAL BOLD SCRIPT SMALL Y -1D503;N # MATHEMATICAL BOLD SCRIPT SMALL Z -1D504;N # MATHEMATICAL FRAKTUR CAPITAL A -1D505;N # MATHEMATICAL FRAKTUR CAPITAL B -1D507;N # MATHEMATICAL FRAKTUR CAPITAL D -1D508;N # MATHEMATICAL FRAKTUR CAPITAL E -1D509;N # MATHEMATICAL FRAKTUR CAPITAL F -1D50A;N # MATHEMATICAL FRAKTUR CAPITAL G -1D50D;N # MATHEMATICAL FRAKTUR CAPITAL J -1D50E;N # MATHEMATICAL FRAKTUR CAPITAL K -1D50F;N # MATHEMATICAL FRAKTUR CAPITAL L -1D510;N # MATHEMATICAL FRAKTUR CAPITAL M -1D511;N # MATHEMATICAL FRAKTUR CAPITAL N -1D512;N # MATHEMATICAL FRAKTUR CAPITAL O -1D513;N # MATHEMATICAL FRAKTUR CAPITAL P -1D514;N # MATHEMATICAL FRAKTUR CAPITAL Q -1D516;N # MATHEMATICAL FRAKTUR CAPITAL S -1D517;N # MATHEMATICAL FRAKTUR CAPITAL T -1D518;N # MATHEMATICAL FRAKTUR CAPITAL U -1D519;N # MATHEMATICAL FRAKTUR CAPITAL V -1D51A;N # MATHEMATICAL FRAKTUR CAPITAL W -1D51B;N # MATHEMATICAL FRAKTUR CAPITAL X -1D51C;N # MATHEMATICAL FRAKTUR CAPITAL Y -1D51E;N # MATHEMATICAL FRAKTUR SMALL A -1D51F;N # MATHEMATICAL FRAKTUR SMALL B -1D520;N # MATHEMATICAL FRAKTUR SMALL C -1D521;N # MATHEMATICAL FRAKTUR SMALL D -1D522;N # MATHEMATICAL FRAKTUR SMALL E -1D523;N # MATHEMATICAL FRAKTUR SMALL F -1D524;N # MATHEMATICAL FRAKTUR SMALL G -1D525;N # MATHEMATICAL FRAKTUR SMALL H -1D526;N # MATHEMATICAL FRAKTUR SMALL I -1D527;N # MATHEMATICAL FRAKTUR SMALL J -1D528;N # MATHEMATICAL FRAKTUR SMALL K -1D529;N # MATHEMATICAL FRAKTUR SMALL L -1D52A;N # MATHEMATICAL FRAKTUR SMALL M -1D52B;N # MATHEMATICAL FRAKTUR SMALL N -1D52C;N # MATHEMATICAL FRAKTUR SMALL O -1D52D;N # MATHEMATICAL FRAKTUR SMALL P -1D52E;N # MATHEMATICAL FRAKTUR SMALL Q -1D52F;N # MATHEMATICAL FRAKTUR SMALL R -1D530;N # MATHEMATICAL FRAKTUR SMALL S -1D531;N # MATHEMATICAL FRAKTUR SMALL T -1D532;N # MATHEMATICAL FRAKTUR SMALL U -1D533;N # MATHEMATICAL FRAKTUR SMALL V -1D534;N # MATHEMATICAL FRAKTUR SMALL W -1D535;N # MATHEMATICAL FRAKTUR SMALL X -1D536;N # MATHEMATICAL FRAKTUR SMALL Y -1D537;N # MATHEMATICAL FRAKTUR SMALL Z -1D538;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL A -1D539;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL B -1D53B;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL D -1D53C;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL E -1D53D;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL F -1D53E;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL G -1D540;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL I -1D541;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL J -1D542;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL K -1D543;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL L -1D544;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL M -1D546;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL O -1D54A;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL S -1D54B;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL T -1D54C;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL U -1D54D;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL V -1D54E;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL W -1D54F;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL X -1D550;N # MATHEMATICAL DOUBLE-STRUCK CAPITAL Y -1D552;N # MATHEMATICAL DOUBLE-STRUCK SMALL A -1D553;N # MATHEMATICAL DOUBLE-STRUCK SMALL B -1D554;N # MATHEMATICAL DOUBLE-STRUCK SMALL C -1D555;N # MATHEMATICAL DOUBLE-STRUCK SMALL D -1D556;N # MATHEMATICAL DOUBLE-STRUCK SMALL E -1D557;N # MATHEMATICAL DOUBLE-STRUCK SMALL F -1D558;N # MATHEMATICAL DOUBLE-STRUCK SMALL G -1D559;N # MATHEMATICAL DOUBLE-STRUCK SMALL H -1D55A;N # MATHEMATICAL DOUBLE-STRUCK SMALL I -1D55B;N # MATHEMATICAL DOUBLE-STRUCK SMALL J -1D55C;N # MATHEMATICAL DOUBLE-STRUCK SMALL K -1D55D;N # MATHEMATICAL DOUBLE-STRUCK SMALL L -1D55E;N # MATHEMATICAL DOUBLE-STRUCK SMALL M -1D55F;N # MATHEMATICAL DOUBLE-STRUCK SMALL N -1D560;N # MATHEMATICAL DOUBLE-STRUCK SMALL O -1D561;N # MATHEMATICAL DOUBLE-STRUCK SMALL P -1D562;N # MATHEMATICAL DOUBLE-STRUCK SMALL Q -1D563;N # MATHEMATICAL DOUBLE-STRUCK SMALL R -1D564;N # MATHEMATICAL DOUBLE-STRUCK SMALL S -1D565;N # MATHEMATICAL DOUBLE-STRUCK SMALL T -1D566;N # MATHEMATICAL DOUBLE-STRUCK SMALL U -1D567;N # MATHEMATICAL DOUBLE-STRUCK SMALL V -1D568;N # MATHEMATICAL DOUBLE-STRUCK SMALL W -1D569;N # MATHEMATICAL DOUBLE-STRUCK SMALL X -1D56A;N # MATHEMATICAL DOUBLE-STRUCK SMALL Y -1D56B;N # MATHEMATICAL DOUBLE-STRUCK SMALL Z -1D56C;N # MATHEMATICAL BOLD FRAKTUR CAPITAL A -1D56D;N # MATHEMATICAL BOLD FRAKTUR CAPITAL B -1D56E;N # MATHEMATICAL BOLD FRAKTUR CAPITAL C -1D56F;N # MATHEMATICAL BOLD FRAKTUR CAPITAL D -1D570;N # MATHEMATICAL BOLD FRAKTUR CAPITAL E -1D571;N # MATHEMATICAL BOLD FRAKTUR CAPITAL F -1D572;N # MATHEMATICAL BOLD FRAKTUR CAPITAL G -1D573;N # MATHEMATICAL BOLD FRAKTUR CAPITAL H -1D574;N # MATHEMATICAL BOLD FRAKTUR CAPITAL I -1D575;N # MATHEMATICAL BOLD FRAKTUR CAPITAL J -1D576;N # MATHEMATICAL BOLD FRAKTUR CAPITAL K -1D577;N # MATHEMATICAL BOLD FRAKTUR CAPITAL L -1D578;N # MATHEMATICAL BOLD FRAKTUR CAPITAL M -1D579;N # MATHEMATICAL BOLD FRAKTUR CAPITAL N -1D57A;N # MATHEMATICAL BOLD FRAKTUR CAPITAL O -1D57B;N # MATHEMATICAL BOLD FRAKTUR CAPITAL P -1D57C;N # MATHEMATICAL BOLD FRAKTUR CAPITAL Q -1D57D;N # MATHEMATICAL BOLD FRAKTUR CAPITAL R -1D57E;N # MATHEMATICAL BOLD FRAKTUR CAPITAL S -1D57F;N # MATHEMATICAL BOLD FRAKTUR CAPITAL T -1D580;N # MATHEMATICAL BOLD FRAKTUR CAPITAL U -1D581;N # MATHEMATICAL BOLD FRAKTUR CAPITAL V -1D582;N # MATHEMATICAL BOLD FRAKTUR CAPITAL W -1D583;N # MATHEMATICAL BOLD FRAKTUR CAPITAL X -1D584;N # MATHEMATICAL BOLD FRAKTUR CAPITAL Y -1D585;N # MATHEMATICAL BOLD FRAKTUR CAPITAL Z -1D586;N # MATHEMATICAL BOLD FRAKTUR SMALL A -1D587;N # MATHEMATICAL BOLD FRAKTUR SMALL B -1D588;N # MATHEMATICAL BOLD FRAKTUR SMALL C -1D589;N # MATHEMATICAL BOLD FRAKTUR SMALL D -1D58A;N # MATHEMATICAL BOLD FRAKTUR SMALL E -1D58B;N # MATHEMATICAL BOLD FRAKTUR SMALL F -1D58C;N # MATHEMATICAL BOLD FRAKTUR SMALL G -1D58D;N # MATHEMATICAL BOLD FRAKTUR SMALL H -1D58E;N # MATHEMATICAL BOLD FRAKTUR SMALL I -1D58F;N # MATHEMATICAL BOLD FRAKTUR SMALL J -1D590;N # MATHEMATICAL BOLD FRAKTUR SMALL K -1D591;N # MATHEMATICAL BOLD FRAKTUR SMALL L -1D592;N # MATHEMATICAL BOLD FRAKTUR SMALL M -1D593;N # MATHEMATICAL BOLD FRAKTUR SMALL N -1D594;N # MATHEMATICAL BOLD FRAKTUR SMALL O -1D595;N # MATHEMATICAL BOLD FRAKTUR SMALL P -1D596;N # MATHEMATICAL BOLD FRAKTUR SMALL Q -1D597;N # MATHEMATICAL BOLD FRAKTUR SMALL R -1D598;N # MATHEMATICAL BOLD FRAKTUR SMALL S -1D599;N # MATHEMATICAL BOLD FRAKTUR SMALL T -1D59A;N # MATHEMATICAL BOLD FRAKTUR SMALL U -1D59B;N # MATHEMATICAL BOLD FRAKTUR SMALL V -1D59C;N # MATHEMATICAL BOLD FRAKTUR SMALL W -1D59D;N # MATHEMATICAL BOLD FRAKTUR SMALL X -1D59E;N # MATHEMATICAL BOLD FRAKTUR SMALL Y -1D59F;N # MATHEMATICAL BOLD FRAKTUR SMALL Z -1D5A0;N # MATHEMATICAL SANS-SERIF CAPITAL A -1D5A1;N # MATHEMATICAL SANS-SERIF CAPITAL B -1D5A2;N # MATHEMATICAL SANS-SERIF CAPITAL C -1D5A3;N # MATHEMATICAL SANS-SERIF CAPITAL D -1D5A4;N # MATHEMATICAL SANS-SERIF CAPITAL E -1D5A5;N # MATHEMATICAL SANS-SERIF CAPITAL F -1D5A6;N # MATHEMATICAL SANS-SERIF CAPITAL G -1D5A7;N # MATHEMATICAL SANS-SERIF CAPITAL H -1D5A8;N # MATHEMATICAL SANS-SERIF CAPITAL I -1D5A9;N # MATHEMATICAL SANS-SERIF CAPITAL J -1D5AA;N # MATHEMATICAL SANS-SERIF CAPITAL K -1D5AB;N # MATHEMATICAL SANS-SERIF CAPITAL L -1D5AC;N # MATHEMATICAL SANS-SERIF CAPITAL M -1D5AD;N # MATHEMATICAL SANS-SERIF CAPITAL N -1D5AE;N # MATHEMATICAL SANS-SERIF CAPITAL O -1D5AF;N # MATHEMATICAL SANS-SERIF CAPITAL P -1D5B0;N # MATHEMATICAL SANS-SERIF CAPITAL Q -1D5B1;N # MATHEMATICAL SANS-SERIF CAPITAL R -1D5B2;N # MATHEMATICAL SANS-SERIF CAPITAL S -1D5B3;N # MATHEMATICAL SANS-SERIF CAPITAL T -1D5B4;N # MATHEMATICAL SANS-SERIF CAPITAL U -1D5B5;N # MATHEMATICAL SANS-SERIF CAPITAL V -1D5B6;N # MATHEMATICAL SANS-SERIF CAPITAL W -1D5B7;N # MATHEMATICAL SANS-SERIF CAPITAL X -1D5B8;N # MATHEMATICAL SANS-SERIF CAPITAL Y -1D5B9;N # MATHEMATICAL SANS-SERIF CAPITAL Z -1D5BA;N # MATHEMATICAL SANS-SERIF SMALL A -1D5BB;N # MATHEMATICAL SANS-SERIF SMALL B -1D5BC;N # MATHEMATICAL SANS-SERIF SMALL C -1D5BD;N # MATHEMATICAL SANS-SERIF SMALL D -1D5BE;N # MATHEMATICAL SANS-SERIF SMALL E -1D5BF;N # MATHEMATICAL SANS-SERIF SMALL F -1D5C0;N # MATHEMATICAL SANS-SERIF SMALL G -1D5C1;N # MATHEMATICAL SANS-SERIF SMALL H -1D5C2;N # MATHEMATICAL SANS-SERIF SMALL I -1D5C3;N # MATHEMATICAL SANS-SERIF SMALL J -1D5C4;N # MATHEMATICAL SANS-SERIF SMALL K -1D5C5;N # MATHEMATICAL SANS-SERIF SMALL L -1D5C6;N # MATHEMATICAL SANS-SERIF SMALL M -1D5C7;N # MATHEMATICAL SANS-SERIF SMALL N -1D5C8;N # MATHEMATICAL SANS-SERIF SMALL O -1D5C9;N # MATHEMATICAL SANS-SERIF SMALL P -1D5CA;N # MATHEMATICAL SANS-SERIF SMALL Q -1D5CB;N # MATHEMATICAL SANS-SERIF SMALL R -1D5CC;N # MATHEMATICAL SANS-SERIF SMALL S -1D5CD;N # MATHEMATICAL SANS-SERIF SMALL T -1D5CE;N # MATHEMATICAL SANS-SERIF SMALL U -1D5CF;N # MATHEMATICAL SANS-SERIF SMALL V -1D5D0;N # MATHEMATICAL SANS-SERIF SMALL W -1D5D1;N # MATHEMATICAL SANS-SERIF SMALL X -1D5D2;N # MATHEMATICAL SANS-SERIF SMALL Y -1D5D3;N # MATHEMATICAL SANS-SERIF SMALL Z -1D5D4;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL A -1D5D5;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL B -1D5D6;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL C -1D5D7;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL D -1D5D8;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL E -1D5D9;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL F -1D5DA;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL G -1D5DB;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL H -1D5DC;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL I -1D5DD;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL J -1D5DE;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL K -1D5DF;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL L -1D5E0;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL M -1D5E1;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL N -1D5E2;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL O -1D5E3;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL P -1D5E4;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL Q -1D5E5;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL R -1D5E6;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL S -1D5E7;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL T -1D5E8;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL U -1D5E9;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL V -1D5EA;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL W -1D5EB;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL X -1D5EC;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL Y -1D5ED;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL Z -1D5EE;N # MATHEMATICAL SANS-SERIF BOLD SMALL A -1D5EF;N # MATHEMATICAL SANS-SERIF BOLD SMALL B -1D5F0;N # MATHEMATICAL SANS-SERIF BOLD SMALL C -1D5F1;N # MATHEMATICAL SANS-SERIF BOLD SMALL D -1D5F2;N # MATHEMATICAL SANS-SERIF BOLD SMALL E -1D5F3;N # MATHEMATICAL SANS-SERIF BOLD SMALL F -1D5F4;N # MATHEMATICAL SANS-SERIF BOLD SMALL G -1D5F5;N # MATHEMATICAL SANS-SERIF BOLD SMALL H -1D5F6;N # MATHEMATICAL SANS-SERIF BOLD SMALL I -1D5F7;N # MATHEMATICAL SANS-SERIF BOLD SMALL J -1D5F8;N # MATHEMATICAL SANS-SERIF BOLD SMALL K -1D5F9;N # MATHEMATICAL SANS-SERIF BOLD SMALL L -1D5FA;N # MATHEMATICAL SANS-SERIF BOLD SMALL M -1D5FB;N # MATHEMATICAL SANS-SERIF BOLD SMALL N -1D5FC;N # MATHEMATICAL SANS-SERIF BOLD SMALL O -1D5FD;N # MATHEMATICAL SANS-SERIF BOLD SMALL P -1D5FE;N # MATHEMATICAL SANS-SERIF BOLD SMALL Q -1D5FF;N # MATHEMATICAL SANS-SERIF BOLD SMALL R -1D600;N # MATHEMATICAL SANS-SERIF BOLD SMALL S -1D601;N # MATHEMATICAL SANS-SERIF BOLD SMALL T -1D602;N # MATHEMATICAL SANS-SERIF BOLD SMALL U -1D603;N # MATHEMATICAL SANS-SERIF BOLD SMALL V -1D604;N # MATHEMATICAL SANS-SERIF BOLD SMALL W -1D605;N # MATHEMATICAL SANS-SERIF BOLD SMALL X -1D606;N # MATHEMATICAL SANS-SERIF BOLD SMALL Y -1D607;N # MATHEMATICAL SANS-SERIF BOLD SMALL Z -1D608;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL A -1D609;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL B -1D60A;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL C -1D60B;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL D -1D60C;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL E -1D60D;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL F -1D60E;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL G -1D60F;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL H -1D610;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL I -1D611;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL J -1D612;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL K -1D613;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL L -1D614;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL M -1D615;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL N -1D616;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL O -1D617;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL P -1D618;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q -1D619;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL R -1D61A;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL S -1D61B;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL T -1D61C;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL U -1D61D;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL V -1D61E;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL W -1D61F;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL X -1D620;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y -1D621;N # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z -1D622;N # MATHEMATICAL SANS-SERIF ITALIC SMALL A -1D623;N # MATHEMATICAL SANS-SERIF ITALIC SMALL B -1D624;N # MATHEMATICAL SANS-SERIF ITALIC SMALL C -1D625;N # MATHEMATICAL SANS-SERIF ITALIC SMALL D -1D626;N # MATHEMATICAL SANS-SERIF ITALIC SMALL E -1D627;N # MATHEMATICAL SANS-SERIF ITALIC SMALL F -1D628;N # MATHEMATICAL SANS-SERIF ITALIC SMALL G -1D629;N # MATHEMATICAL SANS-SERIF ITALIC SMALL H -1D62A;N # MATHEMATICAL SANS-SERIF ITALIC SMALL I -1D62B;N # MATHEMATICAL SANS-SERIF ITALIC SMALL J -1D62C;N # MATHEMATICAL SANS-SERIF ITALIC SMALL K -1D62D;N # MATHEMATICAL SANS-SERIF ITALIC SMALL L -1D62E;N # MATHEMATICAL SANS-SERIF ITALIC SMALL M -1D62F;N # MATHEMATICAL SANS-SERIF ITALIC SMALL N -1D630;N # MATHEMATICAL SANS-SERIF ITALIC SMALL O -1D631;N # MATHEMATICAL SANS-SERIF ITALIC SMALL P -1D632;N # MATHEMATICAL SANS-SERIF ITALIC SMALL Q -1D633;N # MATHEMATICAL SANS-SERIF ITALIC SMALL R -1D634;N # MATHEMATICAL SANS-SERIF ITALIC SMALL S -1D635;N # MATHEMATICAL SANS-SERIF ITALIC SMALL T -1D636;N # MATHEMATICAL SANS-SERIF ITALIC SMALL U -1D637;N # MATHEMATICAL SANS-SERIF ITALIC SMALL V -1D638;N # MATHEMATICAL SANS-SERIF ITALIC SMALL W -1D639;N # MATHEMATICAL SANS-SERIF ITALIC SMALL X -1D63A;N # MATHEMATICAL SANS-SERIF ITALIC SMALL Y -1D63B;N # MATHEMATICAL SANS-SERIF ITALIC SMALL Z -1D63C;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A -1D63D;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B -1D63E;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C -1D63F;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D -1D640;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E -1D641;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F -1D642;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G -1D643;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H -1D644;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I -1D645;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J -1D646;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K -1D647;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L -1D648;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M -1D649;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N -1D64A;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O -1D64B;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P -1D64C;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q -1D64D;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R -1D64E;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S -1D64F;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T -1D650;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U -1D651;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V -1D652;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W -1D653;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X -1D654;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y -1D655;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z -1D656;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A -1D657;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B -1D658;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C -1D659;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D -1D65A;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E -1D65B;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F -1D65C;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G -1D65D;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H -1D65E;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I -1D65F;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J -1D660;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K -1D661;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L -1D662;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M -1D663;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N -1D664;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O -1D665;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P -1D666;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q -1D667;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R -1D668;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S -1D669;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T -1D66A;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U -1D66B;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V -1D66C;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W -1D66D;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X -1D66E;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y -1D66F;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z -1D670;N # MATHEMATICAL MONOSPACE CAPITAL A -1D671;N # MATHEMATICAL MONOSPACE CAPITAL B -1D672;N # MATHEMATICAL MONOSPACE CAPITAL C -1D673;N # MATHEMATICAL MONOSPACE CAPITAL D -1D674;N # MATHEMATICAL MONOSPACE CAPITAL E -1D675;N # MATHEMATICAL MONOSPACE CAPITAL F -1D676;N # MATHEMATICAL MONOSPACE CAPITAL G -1D677;N # MATHEMATICAL MONOSPACE CAPITAL H -1D678;N # MATHEMATICAL MONOSPACE CAPITAL I -1D679;N # MATHEMATICAL MONOSPACE CAPITAL J -1D67A;N # MATHEMATICAL MONOSPACE CAPITAL K -1D67B;N # MATHEMATICAL MONOSPACE CAPITAL L -1D67C;N # MATHEMATICAL MONOSPACE CAPITAL M -1D67D;N # MATHEMATICAL MONOSPACE CAPITAL N -1D67E;N # MATHEMATICAL MONOSPACE CAPITAL O -1D67F;N # MATHEMATICAL MONOSPACE CAPITAL P -1D680;N # MATHEMATICAL MONOSPACE CAPITAL Q -1D681;N # MATHEMATICAL MONOSPACE CAPITAL R -1D682;N # MATHEMATICAL MONOSPACE CAPITAL S -1D683;N # MATHEMATICAL MONOSPACE CAPITAL T -1D684;N # MATHEMATICAL MONOSPACE CAPITAL U -1D685;N # MATHEMATICAL MONOSPACE CAPITAL V -1D686;N # MATHEMATICAL MONOSPACE CAPITAL W -1D687;N # MATHEMATICAL MONOSPACE CAPITAL X -1D688;N # MATHEMATICAL MONOSPACE CAPITAL Y -1D689;N # MATHEMATICAL MONOSPACE CAPITAL Z -1D68A;N # MATHEMATICAL MONOSPACE SMALL A -1D68B;N # MATHEMATICAL MONOSPACE SMALL B -1D68C;N # MATHEMATICAL MONOSPACE SMALL C -1D68D;N # MATHEMATICAL MONOSPACE SMALL D -1D68E;N # MATHEMATICAL MONOSPACE SMALL E -1D68F;N # MATHEMATICAL MONOSPACE SMALL F -1D690;N # MATHEMATICAL MONOSPACE SMALL G -1D691;N # MATHEMATICAL MONOSPACE SMALL H -1D692;N # MATHEMATICAL MONOSPACE SMALL I -1D693;N # MATHEMATICAL MONOSPACE SMALL J -1D694;N # MATHEMATICAL MONOSPACE SMALL K -1D695;N # MATHEMATICAL MONOSPACE SMALL L -1D696;N # MATHEMATICAL MONOSPACE SMALL M -1D697;N # MATHEMATICAL MONOSPACE SMALL N -1D698;N # MATHEMATICAL MONOSPACE SMALL O -1D699;N # MATHEMATICAL MONOSPACE SMALL P -1D69A;N # MATHEMATICAL MONOSPACE SMALL Q -1D69B;N # MATHEMATICAL MONOSPACE SMALL R -1D69C;N # MATHEMATICAL MONOSPACE SMALL S -1D69D;N # MATHEMATICAL MONOSPACE SMALL T -1D69E;N # MATHEMATICAL MONOSPACE SMALL U -1D69F;N # MATHEMATICAL MONOSPACE SMALL V -1D6A0;N # MATHEMATICAL MONOSPACE SMALL W -1D6A1;N # MATHEMATICAL MONOSPACE SMALL X -1D6A2;N # MATHEMATICAL MONOSPACE SMALL Y -1D6A3;N # MATHEMATICAL MONOSPACE SMALL Z -1D6A4;N # MATHEMATICAL ITALIC SMALL DOTLESS I -1D6A5;N # MATHEMATICAL ITALIC SMALL DOTLESS J -1D6A8;N # MATHEMATICAL BOLD CAPITAL ALPHA -1D6A9;N # MATHEMATICAL BOLD CAPITAL BETA -1D6AA;N # MATHEMATICAL BOLD CAPITAL GAMMA -1D6AB;N # MATHEMATICAL BOLD CAPITAL DELTA -1D6AC;N # MATHEMATICAL BOLD CAPITAL EPSILON -1D6AD;N # MATHEMATICAL BOLD CAPITAL ZETA -1D6AE;N # MATHEMATICAL BOLD CAPITAL ETA -1D6AF;N # MATHEMATICAL BOLD CAPITAL THETA -1D6B0;N # MATHEMATICAL BOLD CAPITAL IOTA -1D6B1;N # MATHEMATICAL BOLD CAPITAL KAPPA -1D6B2;N # MATHEMATICAL BOLD CAPITAL LAMDA -1D6B3;N # MATHEMATICAL BOLD CAPITAL MU -1D6B4;N # MATHEMATICAL BOLD CAPITAL NU -1D6B5;N # MATHEMATICAL BOLD CAPITAL XI -1D6B6;N # MATHEMATICAL BOLD CAPITAL OMICRON -1D6B7;N # MATHEMATICAL BOLD CAPITAL PI -1D6B8;N # MATHEMATICAL BOLD CAPITAL RHO -1D6B9;N # MATHEMATICAL BOLD CAPITAL THETA SYMBOL -1D6BA;N # MATHEMATICAL BOLD CAPITAL SIGMA -1D6BB;N # MATHEMATICAL BOLD CAPITAL TAU -1D6BC;N # MATHEMATICAL BOLD CAPITAL UPSILON -1D6BD;N # MATHEMATICAL BOLD CAPITAL PHI -1D6BE;N # MATHEMATICAL BOLD CAPITAL CHI -1D6BF;N # MATHEMATICAL BOLD CAPITAL PSI -1D6C0;N # MATHEMATICAL BOLD CAPITAL OMEGA -1D6C1;N # MATHEMATICAL BOLD NABLA -1D6C2;N # MATHEMATICAL BOLD SMALL ALPHA -1D6C3;N # MATHEMATICAL BOLD SMALL BETA -1D6C4;N # MATHEMATICAL BOLD SMALL GAMMA -1D6C5;N # MATHEMATICAL BOLD SMALL DELTA -1D6C6;N # MATHEMATICAL BOLD SMALL EPSILON -1D6C7;N # MATHEMATICAL BOLD SMALL ZETA -1D6C8;N # MATHEMATICAL BOLD SMALL ETA -1D6C9;N # MATHEMATICAL BOLD SMALL THETA -1D6CA;N # MATHEMATICAL BOLD SMALL IOTA -1D6CB;N # MATHEMATICAL BOLD SMALL KAPPA -1D6CC;N # MATHEMATICAL BOLD SMALL LAMDA -1D6CD;N # MATHEMATICAL BOLD SMALL MU -1D6CE;N # MATHEMATICAL BOLD SMALL NU -1D6CF;N # MATHEMATICAL BOLD SMALL XI -1D6D0;N # MATHEMATICAL BOLD SMALL OMICRON -1D6D1;N # MATHEMATICAL BOLD SMALL PI -1D6D2;N # MATHEMATICAL BOLD SMALL RHO -1D6D3;N # MATHEMATICAL BOLD SMALL FINAL SIGMA -1D6D4;N # MATHEMATICAL BOLD SMALL SIGMA -1D6D5;N # MATHEMATICAL BOLD SMALL TAU -1D6D6;N # MATHEMATICAL BOLD SMALL UPSILON -1D6D7;N # MATHEMATICAL BOLD SMALL PHI -1D6D8;N # MATHEMATICAL BOLD SMALL CHI -1D6D9;N # MATHEMATICAL BOLD SMALL PSI -1D6DA;N # MATHEMATICAL BOLD SMALL OMEGA -1D6DB;N # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL -1D6DC;N # MATHEMATICAL BOLD EPSILON SYMBOL -1D6DD;N # MATHEMATICAL BOLD THETA SYMBOL -1D6DE;N # MATHEMATICAL BOLD KAPPA SYMBOL -1D6DF;N # MATHEMATICAL BOLD PHI SYMBOL -1D6E0;N # MATHEMATICAL BOLD RHO SYMBOL -1D6E1;N # MATHEMATICAL BOLD PI SYMBOL -1D6E2;N # MATHEMATICAL ITALIC CAPITAL ALPHA -1D6E3;N # MATHEMATICAL ITALIC CAPITAL BETA -1D6E4;N # MATHEMATICAL ITALIC CAPITAL GAMMA -1D6E5;N # MATHEMATICAL ITALIC CAPITAL DELTA -1D6E6;N # MATHEMATICAL ITALIC CAPITAL EPSILON -1D6E7;N # MATHEMATICAL ITALIC CAPITAL ZETA -1D6E8;N # MATHEMATICAL ITALIC CAPITAL ETA -1D6E9;N # MATHEMATICAL ITALIC CAPITAL THETA -1D6EA;N # MATHEMATICAL ITALIC CAPITAL IOTA -1D6EB;N # MATHEMATICAL ITALIC CAPITAL KAPPA -1D6EC;N # MATHEMATICAL ITALIC CAPITAL LAMDA -1D6ED;N # MATHEMATICAL ITALIC CAPITAL MU -1D6EE;N # MATHEMATICAL ITALIC CAPITAL NU -1D6EF;N # MATHEMATICAL ITALIC CAPITAL XI -1D6F0;N # MATHEMATICAL ITALIC CAPITAL OMICRON -1D6F1;N # MATHEMATICAL ITALIC CAPITAL PI -1D6F2;N # MATHEMATICAL ITALIC CAPITAL RHO -1D6F3;N # MATHEMATICAL ITALIC CAPITAL THETA SYMBOL -1D6F4;N # MATHEMATICAL ITALIC CAPITAL SIGMA -1D6F5;N # MATHEMATICAL ITALIC CAPITAL TAU -1D6F6;N # MATHEMATICAL ITALIC CAPITAL UPSILON -1D6F7;N # MATHEMATICAL ITALIC CAPITAL PHI -1D6F8;N # MATHEMATICAL ITALIC CAPITAL CHI -1D6F9;N # MATHEMATICAL ITALIC CAPITAL PSI -1D6FA;N # MATHEMATICAL ITALIC CAPITAL OMEGA -1D6FB;N # MATHEMATICAL ITALIC NABLA -1D6FC;N # MATHEMATICAL ITALIC SMALL ALPHA -1D6FD;N # MATHEMATICAL ITALIC SMALL BETA -1D6FE;N # MATHEMATICAL ITALIC SMALL GAMMA -1D6FF;N # MATHEMATICAL ITALIC SMALL DELTA -1D700;N # MATHEMATICAL ITALIC SMALL EPSILON -1D701;N # MATHEMATICAL ITALIC SMALL ZETA -1D702;N # MATHEMATICAL ITALIC SMALL ETA -1D703;N # MATHEMATICAL ITALIC SMALL THETA -1D704;N # MATHEMATICAL ITALIC SMALL IOTA -1D705;N # MATHEMATICAL ITALIC SMALL KAPPA -1D706;N # MATHEMATICAL ITALIC SMALL LAMDA -1D707;N # MATHEMATICAL ITALIC SMALL MU -1D708;N # MATHEMATICAL ITALIC SMALL NU -1D709;N # MATHEMATICAL ITALIC SMALL XI -1D70A;N # MATHEMATICAL ITALIC SMALL OMICRON -1D70B;N # MATHEMATICAL ITALIC SMALL PI -1D70C;N # MATHEMATICAL ITALIC SMALL RHO -1D70D;N # MATHEMATICAL ITALIC SMALL FINAL SIGMA -1D70E;N # MATHEMATICAL ITALIC SMALL SIGMA -1D70F;N # MATHEMATICAL ITALIC SMALL TAU -1D710;N # MATHEMATICAL ITALIC SMALL UPSILON -1D711;N # MATHEMATICAL ITALIC SMALL PHI -1D712;N # MATHEMATICAL ITALIC SMALL CHI -1D713;N # MATHEMATICAL ITALIC SMALL PSI -1D714;N # MATHEMATICAL ITALIC SMALL OMEGA -1D715;N # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL -1D716;N # MATHEMATICAL ITALIC EPSILON SYMBOL -1D717;N # MATHEMATICAL ITALIC THETA SYMBOL -1D718;N # MATHEMATICAL ITALIC KAPPA SYMBOL -1D719;N # MATHEMATICAL ITALIC PHI SYMBOL -1D71A;N # MATHEMATICAL ITALIC RHO SYMBOL -1D71B;N # MATHEMATICAL ITALIC PI SYMBOL -1D71C;N # MATHEMATICAL BOLD ITALIC CAPITAL ALPHA -1D71D;N # MATHEMATICAL BOLD ITALIC CAPITAL BETA -1D71E;N # MATHEMATICAL BOLD ITALIC CAPITAL GAMMA -1D71F;N # MATHEMATICAL BOLD ITALIC CAPITAL DELTA -1D720;N # MATHEMATICAL BOLD ITALIC CAPITAL EPSILON -1D721;N # MATHEMATICAL BOLD ITALIC CAPITAL ZETA -1D722;N # MATHEMATICAL BOLD ITALIC CAPITAL ETA -1D723;N # MATHEMATICAL BOLD ITALIC CAPITAL THETA -1D724;N # MATHEMATICAL BOLD ITALIC CAPITAL IOTA -1D725;N # MATHEMATICAL BOLD ITALIC CAPITAL KAPPA -1D726;N # MATHEMATICAL BOLD ITALIC CAPITAL LAMDA -1D727;N # MATHEMATICAL BOLD ITALIC CAPITAL MU -1D728;N # MATHEMATICAL BOLD ITALIC CAPITAL NU -1D729;N # MATHEMATICAL BOLD ITALIC CAPITAL XI -1D72A;N # MATHEMATICAL BOLD ITALIC CAPITAL OMICRON -1D72B;N # MATHEMATICAL BOLD ITALIC CAPITAL PI -1D72C;N # MATHEMATICAL BOLD ITALIC CAPITAL RHO -1D72D;N # MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL -1D72E;N # MATHEMATICAL BOLD ITALIC CAPITAL SIGMA -1D72F;N # MATHEMATICAL BOLD ITALIC CAPITAL TAU -1D730;N # MATHEMATICAL BOLD ITALIC CAPITAL UPSILON -1D731;N # MATHEMATICAL BOLD ITALIC CAPITAL PHI -1D732;N # MATHEMATICAL BOLD ITALIC CAPITAL CHI -1D733;N # MATHEMATICAL BOLD ITALIC CAPITAL PSI -1D734;N # MATHEMATICAL BOLD ITALIC CAPITAL OMEGA -1D735;N # MATHEMATICAL BOLD ITALIC NABLA -1D736;N # MATHEMATICAL BOLD ITALIC SMALL ALPHA -1D737;N # MATHEMATICAL BOLD ITALIC SMALL BETA -1D738;N # MATHEMATICAL BOLD ITALIC SMALL GAMMA -1D739;N # MATHEMATICAL BOLD ITALIC SMALL DELTA -1D73A;N # MATHEMATICAL BOLD ITALIC SMALL EPSILON -1D73B;N # MATHEMATICAL BOLD ITALIC SMALL ZETA -1D73C;N # MATHEMATICAL BOLD ITALIC SMALL ETA -1D73D;N # MATHEMATICAL BOLD ITALIC SMALL THETA -1D73E;N # MATHEMATICAL BOLD ITALIC SMALL IOTA -1D73F;N # MATHEMATICAL BOLD ITALIC SMALL KAPPA -1D740;N # MATHEMATICAL BOLD ITALIC SMALL LAMDA -1D741;N # MATHEMATICAL BOLD ITALIC SMALL MU -1D742;N # MATHEMATICAL BOLD ITALIC SMALL NU -1D743;N # MATHEMATICAL BOLD ITALIC SMALL XI -1D744;N # MATHEMATICAL BOLD ITALIC SMALL OMICRON -1D745;N # MATHEMATICAL BOLD ITALIC SMALL PI -1D746;N # MATHEMATICAL BOLD ITALIC SMALL RHO -1D747;N # MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA -1D748;N # MATHEMATICAL BOLD ITALIC SMALL SIGMA -1D749;N # MATHEMATICAL BOLD ITALIC SMALL TAU -1D74A;N # MATHEMATICAL BOLD ITALIC SMALL UPSILON -1D74B;N # MATHEMATICAL BOLD ITALIC SMALL PHI -1D74C;N # MATHEMATICAL BOLD ITALIC SMALL CHI -1D74D;N # MATHEMATICAL BOLD ITALIC SMALL PSI -1D74E;N # MATHEMATICAL BOLD ITALIC SMALL OMEGA -1D74F;N # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL -1D750;N # MATHEMATICAL BOLD ITALIC EPSILON SYMBOL -1D751;N # MATHEMATICAL BOLD ITALIC THETA SYMBOL -1D752;N # MATHEMATICAL BOLD ITALIC KAPPA SYMBOL -1D753;N # MATHEMATICAL BOLD ITALIC PHI SYMBOL -1D754;N # MATHEMATICAL BOLD ITALIC RHO SYMBOL -1D755;N # MATHEMATICAL BOLD ITALIC PI SYMBOL -1D756;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA -1D757;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA -1D758;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA -1D759;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA -1D75A;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON -1D75B;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA -1D75C;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA -1D75D;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA -1D75E;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA -1D75F;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA -1D760;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA -1D761;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL MU -1D762;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL NU -1D763;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL XI -1D764;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON -1D765;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL PI -1D766;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO -1D767;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL -1D768;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA -1D769;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU -1D76A;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON -1D76B;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI -1D76C;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI -1D76D;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI -1D76E;N # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA -1D76F;N # MATHEMATICAL SANS-SERIF BOLD NABLA -1D770;N # MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA -1D771;N # MATHEMATICAL SANS-SERIF BOLD SMALL BETA -1D772;N # MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA -1D773;N # MATHEMATICAL SANS-SERIF BOLD SMALL DELTA -1D774;N # MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON -1D775;N # MATHEMATICAL SANS-SERIF BOLD SMALL ZETA -1D776;N # MATHEMATICAL SANS-SERIF BOLD SMALL ETA -1D777;N # MATHEMATICAL SANS-SERIF BOLD SMALL THETA -1D778;N # MATHEMATICAL SANS-SERIF BOLD SMALL IOTA -1D779;N # MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA -1D77A;N # MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA -1D77B;N # MATHEMATICAL SANS-SERIF BOLD SMALL MU -1D77C;N # MATHEMATICAL SANS-SERIF BOLD SMALL NU -1D77D;N # MATHEMATICAL SANS-SERIF BOLD SMALL XI -1D77E;N # MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON -1D77F;N # MATHEMATICAL SANS-SERIF BOLD SMALL PI -1D780;N # MATHEMATICAL SANS-SERIF BOLD SMALL RHO -1D781;N # MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA -1D782;N # MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA -1D783;N # MATHEMATICAL SANS-SERIF BOLD SMALL TAU -1D784;N # MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON -1D785;N # MATHEMATICAL SANS-SERIF BOLD SMALL PHI -1D786;N # MATHEMATICAL SANS-SERIF BOLD SMALL CHI -1D787;N # MATHEMATICAL SANS-SERIF BOLD SMALL PSI -1D788;N # MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA -1D789;N # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL -1D78A;N # MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL -1D78B;N # MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL -1D78C;N # MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL -1D78D;N # MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL -1D78E;N # MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL -1D78F;N # MATHEMATICAL SANS-SERIF BOLD PI SYMBOL -1D790;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA -1D791;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA -1D792;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA -1D793;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA -1D794;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON -1D795;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA -1D796;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA -1D797;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA -1D798;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA -1D799;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA -1D79A;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA -1D79B;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU -1D79C;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU -1D79D;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI -1D79E;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON -1D79F;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI -1D7A0;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO -1D7A1;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL -1D7A2;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA -1D7A3;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU -1D7A4;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON -1D7A5;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI -1D7A6;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI -1D7A7;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI -1D7A8;N # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA -1D7A9;N # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA -1D7AA;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA -1D7AB;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA -1D7AC;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA -1D7AD;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA -1D7AE;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON -1D7AF;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA -1D7B0;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA -1D7B1;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA -1D7B2;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA -1D7B3;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA -1D7B4;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA -1D7B5;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU -1D7B6;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU -1D7B7;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI -1D7B8;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON -1D7B9;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI -1D7BA;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO -1D7BB;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA -1D7BC;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA -1D7BD;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU -1D7BE;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON -1D7BF;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI -1D7C0;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI -1D7C1;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI -1D7C2;N # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA -1D7C3;N # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL -1D7C4;N # MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL -1D7C5;N # MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL -1D7C6;N # MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL -1D7C7;N # MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL -1D7C8;N # MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL -1D7C9;N # MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL -1D7CE;N # MATHEMATICAL BOLD DIGIT ZERO -1D7CF;N # MATHEMATICAL BOLD DIGIT ONE -1D7D0;N # MATHEMATICAL BOLD DIGIT TWO -1D7D1;N # MATHEMATICAL BOLD DIGIT THREE -1D7D2;N # MATHEMATICAL BOLD DIGIT FOUR -1D7D3;N # MATHEMATICAL BOLD DIGIT FIVE -1D7D4;N # MATHEMATICAL BOLD DIGIT SIX -1D7D5;N # MATHEMATICAL BOLD DIGIT SEVEN -1D7D6;N # MATHEMATICAL BOLD DIGIT EIGHT -1D7D7;N # MATHEMATICAL BOLD DIGIT NINE -1D7D8;N # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO -1D7D9;N # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE -1D7DA;N # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO -1D7DB;N # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE -1D7DC;N # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR -1D7DD;N # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE -1D7DE;N # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX -1D7DF;N # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN -1D7E0;N # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT -1D7E1;N # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE -1D7E2;N # MATHEMATICAL SANS-SERIF DIGIT ZERO -1D7E3;N # MATHEMATICAL SANS-SERIF DIGIT ONE -1D7E4;N # MATHEMATICAL SANS-SERIF DIGIT TWO -1D7E5;N # MATHEMATICAL SANS-SERIF DIGIT THREE -1D7E6;N # MATHEMATICAL SANS-SERIF DIGIT FOUR -1D7E7;N # MATHEMATICAL SANS-SERIF DIGIT FIVE -1D7E8;N # MATHEMATICAL SANS-SERIF DIGIT SIX -1D7E9;N # MATHEMATICAL SANS-SERIF DIGIT SEVEN -1D7EA;N # MATHEMATICAL SANS-SERIF DIGIT EIGHT -1D7EB;N # MATHEMATICAL SANS-SERIF DIGIT NINE -1D7EC;N # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO -1D7ED;N # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE -1D7EE;N # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO -1D7EF;N # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE -1D7F0;N # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR -1D7F1;N # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE -1D7F2;N # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX -1D7F3;N # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN -1D7F4;N # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT -1D7F5;N # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE -1D7F6;N # MATHEMATICAL MONOSPACE DIGIT ZERO -1D7F7;N # MATHEMATICAL MONOSPACE DIGIT ONE -1D7F8;N # MATHEMATICAL MONOSPACE DIGIT TWO -1D7F9;N # MATHEMATICAL MONOSPACE DIGIT THREE -1D7FA;N # MATHEMATICAL MONOSPACE DIGIT FOUR -1D7FB;N # MATHEMATICAL MONOSPACE DIGIT FIVE -1D7FC;N # MATHEMATICAL MONOSPACE DIGIT SIX -1D7FD;N # MATHEMATICAL MONOSPACE DIGIT SEVEN -1D7FE;N # MATHEMATICAL MONOSPACE DIGIT EIGHT -1D7FF;N # MATHEMATICAL MONOSPACE DIGIT NINE -20000..2A6D6;W # <CJK Ideograph Extension B, First>..<CJK Ideograph Extension B, Last> -2A6D7..2F7FF;W # <reserved> -2F800;W # CJK COMPATIBILITY IDEOGRAPH-2F800 -2F801;W # CJK COMPATIBILITY IDEOGRAPH-2F801 -2F802;W # CJK COMPATIBILITY IDEOGRAPH-2F802 -2F803;W # CJK COMPATIBILITY IDEOGRAPH-2F803 -2F804;W # CJK COMPATIBILITY IDEOGRAPH-2F804 -2F805;W # CJK COMPATIBILITY IDEOGRAPH-2F805 -2F806;W # CJK COMPATIBILITY IDEOGRAPH-2F806 -2F807;W # CJK COMPATIBILITY IDEOGRAPH-2F807 -2F808;W # CJK COMPATIBILITY IDEOGRAPH-2F808 -2F809;W # CJK COMPATIBILITY IDEOGRAPH-2F809 -2F80A;W # CJK COMPATIBILITY IDEOGRAPH-2F80A -2F80B;W # CJK COMPATIBILITY IDEOGRAPH-2F80B -2F80C;W # CJK COMPATIBILITY IDEOGRAPH-2F80C -2F80D;W # CJK COMPATIBILITY IDEOGRAPH-2F80D -2F80E;W # CJK COMPATIBILITY IDEOGRAPH-2F80E -2F80F;W # CJK COMPATIBILITY IDEOGRAPH-2F80F -2F810;W # CJK COMPATIBILITY IDEOGRAPH-2F810 -2F811;W # CJK COMPATIBILITY IDEOGRAPH-2F811 -2F812;W # CJK COMPATIBILITY IDEOGRAPH-2F812 -2F813;W # CJK COMPATIBILITY IDEOGRAPH-2F813 -2F814;W # CJK COMPATIBILITY IDEOGRAPH-2F814 -2F815;W # CJK COMPATIBILITY IDEOGRAPH-2F815 -2F816;W # CJK COMPATIBILITY IDEOGRAPH-2F816 -2F817;W # CJK COMPATIBILITY IDEOGRAPH-2F817 -2F818;W # CJK COMPATIBILITY IDEOGRAPH-2F818 -2F819;W # CJK COMPATIBILITY IDEOGRAPH-2F819 -2F81A;W # CJK COMPATIBILITY IDEOGRAPH-2F81A -2F81B;W # CJK COMPATIBILITY IDEOGRAPH-2F81B -2F81C;W # CJK COMPATIBILITY IDEOGRAPH-2F81C -2F81D;W # CJK COMPATIBILITY IDEOGRAPH-2F81D -2F81E;W # CJK COMPATIBILITY IDEOGRAPH-2F81E -2F81F;W # CJK COMPATIBILITY IDEOGRAPH-2F81F -2F820;W # CJK COMPATIBILITY IDEOGRAPH-2F820 -2F821;W # CJK COMPATIBILITY IDEOGRAPH-2F821 -2F822;W # CJK COMPATIBILITY IDEOGRAPH-2F822 -2F823;W # CJK COMPATIBILITY IDEOGRAPH-2F823 -2F824;W # CJK COMPATIBILITY IDEOGRAPH-2F824 -2F825;W # CJK COMPATIBILITY IDEOGRAPH-2F825 -2F826;W # CJK COMPATIBILITY IDEOGRAPH-2F826 -2F827;W # CJK COMPATIBILITY IDEOGRAPH-2F827 -2F828;W # CJK COMPATIBILITY IDEOGRAPH-2F828 -2F829;W # CJK COMPATIBILITY IDEOGRAPH-2F829 -2F82A;W # CJK COMPATIBILITY IDEOGRAPH-2F82A -2F82B;W # CJK COMPATIBILITY IDEOGRAPH-2F82B -2F82C;W # CJK COMPATIBILITY IDEOGRAPH-2F82C -2F82D;W # CJK COMPATIBILITY IDEOGRAPH-2F82D -2F82E;W # CJK COMPATIBILITY IDEOGRAPH-2F82E -2F82F;W # CJK COMPATIBILITY IDEOGRAPH-2F82F -2F830;W # CJK COMPATIBILITY IDEOGRAPH-2F830 -2F831;W # CJK COMPATIBILITY IDEOGRAPH-2F831 -2F832;W # CJK COMPATIBILITY IDEOGRAPH-2F832 -2F833;W # CJK COMPATIBILITY IDEOGRAPH-2F833 -2F834;W # CJK COMPATIBILITY IDEOGRAPH-2F834 -2F835;W # CJK COMPATIBILITY IDEOGRAPH-2F835 -2F836;W # CJK COMPATIBILITY IDEOGRAPH-2F836 -2F837;W # CJK COMPATIBILITY IDEOGRAPH-2F837 -2F838;W # CJK COMPATIBILITY IDEOGRAPH-2F838 -2F839;W # CJK COMPATIBILITY IDEOGRAPH-2F839 -2F83A;W # CJK COMPATIBILITY IDEOGRAPH-2F83A -2F83B;W # CJK COMPATIBILITY IDEOGRAPH-2F83B -2F83C;W # CJK COMPATIBILITY IDEOGRAPH-2F83C -2F83D;W # CJK COMPATIBILITY IDEOGRAPH-2F83D -2F83E;W # CJK COMPATIBILITY IDEOGRAPH-2F83E -2F83F;W # CJK COMPATIBILITY IDEOGRAPH-2F83F -2F840;W # CJK COMPATIBILITY IDEOGRAPH-2F840 -2F841;W # CJK COMPATIBILITY IDEOGRAPH-2F841 -2F842;W # CJK COMPATIBILITY IDEOGRAPH-2F842 -2F843;W # CJK COMPATIBILITY IDEOGRAPH-2F843 -2F844;W # CJK COMPATIBILITY IDEOGRAPH-2F844 -2F845;W # CJK COMPATIBILITY IDEOGRAPH-2F845 -2F846;W # CJK COMPATIBILITY IDEOGRAPH-2F846 -2F847;W # CJK COMPATIBILITY IDEOGRAPH-2F847 -2F848;W # CJK COMPATIBILITY IDEOGRAPH-2F848 -2F849;W # CJK COMPATIBILITY IDEOGRAPH-2F849 -2F84A;W # CJK COMPATIBILITY IDEOGRAPH-2F84A -2F84B;W # CJK COMPATIBILITY IDEOGRAPH-2F84B -2F84C;W # CJK COMPATIBILITY IDEOGRAPH-2F84C -2F84D;W # CJK COMPATIBILITY IDEOGRAPH-2F84D -2F84E;W # CJK COMPATIBILITY IDEOGRAPH-2F84E -2F84F;W # CJK COMPATIBILITY IDEOGRAPH-2F84F -2F850;W # CJK COMPATIBILITY IDEOGRAPH-2F850 -2F851;W # CJK COMPATIBILITY IDEOGRAPH-2F851 -2F852;W # CJK COMPATIBILITY IDEOGRAPH-2F852 -2F853;W # CJK COMPATIBILITY IDEOGRAPH-2F853 -2F854;W # CJK COMPATIBILITY IDEOGRAPH-2F854 -2F855;W # CJK COMPATIBILITY IDEOGRAPH-2F855 -2F856;W # CJK COMPATIBILITY IDEOGRAPH-2F856 -2F857;W # CJK COMPATIBILITY IDEOGRAPH-2F857 -2F858;W # CJK COMPATIBILITY IDEOGRAPH-2F858 -2F859;W # CJK COMPATIBILITY IDEOGRAPH-2F859 -2F85A;W # CJK COMPATIBILITY IDEOGRAPH-2F85A -2F85B;W # CJK COMPATIBILITY IDEOGRAPH-2F85B -2F85C;W # CJK COMPATIBILITY IDEOGRAPH-2F85C -2F85D;W # CJK COMPATIBILITY IDEOGRAPH-2F85D -2F85E;W # CJK COMPATIBILITY IDEOGRAPH-2F85E -2F85F;W # CJK COMPATIBILITY IDEOGRAPH-2F85F -2F860;W # CJK COMPATIBILITY IDEOGRAPH-2F860 -2F861;W # CJK COMPATIBILITY IDEOGRAPH-2F861 -2F862;W # CJK COMPATIBILITY IDEOGRAPH-2F862 -2F863;W # CJK COMPATIBILITY IDEOGRAPH-2F863 -2F864;W # CJK COMPATIBILITY IDEOGRAPH-2F864 -2F865;W # CJK COMPATIBILITY IDEOGRAPH-2F865 -2F866;W # CJK COMPATIBILITY IDEOGRAPH-2F866 -2F867;W # CJK COMPATIBILITY IDEOGRAPH-2F867 -2F868;W # CJK COMPATIBILITY IDEOGRAPH-2F868 -2F869;W # CJK COMPATIBILITY IDEOGRAPH-2F869 -2F86A;W # CJK COMPATIBILITY IDEOGRAPH-2F86A -2F86B;W # CJK COMPATIBILITY IDEOGRAPH-2F86B -2F86C;W # CJK COMPATIBILITY IDEOGRAPH-2F86C -2F86D;W # CJK COMPATIBILITY IDEOGRAPH-2F86D -2F86E;W # CJK COMPATIBILITY IDEOGRAPH-2F86E -2F86F;W # CJK COMPATIBILITY IDEOGRAPH-2F86F -2F870;W # CJK COMPATIBILITY IDEOGRAPH-2F870 -2F871;W # CJK COMPATIBILITY IDEOGRAPH-2F871 -2F872;W # CJK COMPATIBILITY IDEOGRAPH-2F872 -2F873;W # CJK COMPATIBILITY IDEOGRAPH-2F873 -2F874;W # CJK COMPATIBILITY IDEOGRAPH-2F874 -2F875;W # CJK COMPATIBILITY IDEOGRAPH-2F875 -2F876;W # CJK COMPATIBILITY IDEOGRAPH-2F876 -2F877;W # CJK COMPATIBILITY IDEOGRAPH-2F877 -2F878;W # CJK COMPATIBILITY IDEOGRAPH-2F878 -2F879;W # CJK COMPATIBILITY IDEOGRAPH-2F879 -2F87A;W # CJK COMPATIBILITY IDEOGRAPH-2F87A -2F87B;W # CJK COMPATIBILITY IDEOGRAPH-2F87B -2F87C;W # CJK COMPATIBILITY IDEOGRAPH-2F87C -2F87D;W # CJK COMPATIBILITY IDEOGRAPH-2F87D -2F87E;W # CJK COMPATIBILITY IDEOGRAPH-2F87E -2F87F;W # CJK COMPATIBILITY IDEOGRAPH-2F87F -2F880;W # CJK COMPATIBILITY IDEOGRAPH-2F880 -2F881;W # CJK COMPATIBILITY IDEOGRAPH-2F881 -2F882;W # CJK COMPATIBILITY IDEOGRAPH-2F882 -2F883;W # CJK COMPATIBILITY IDEOGRAPH-2F883 -2F884;W # CJK COMPATIBILITY IDEOGRAPH-2F884 -2F885;W # CJK COMPATIBILITY IDEOGRAPH-2F885 -2F886;W # CJK COMPATIBILITY IDEOGRAPH-2F886 -2F887;W # CJK COMPATIBILITY IDEOGRAPH-2F887 -2F888;W # CJK COMPATIBILITY IDEOGRAPH-2F888 -2F889;W # CJK COMPATIBILITY IDEOGRAPH-2F889 -2F88A;W # CJK COMPATIBILITY IDEOGRAPH-2F88A -2F88B;W # CJK COMPATIBILITY IDEOGRAPH-2F88B -2F88C;W # CJK COMPATIBILITY IDEOGRAPH-2F88C -2F88D;W # CJK COMPATIBILITY IDEOGRAPH-2F88D -2F88E;W # CJK COMPATIBILITY IDEOGRAPH-2F88E -2F88F;W # CJK COMPATIBILITY IDEOGRAPH-2F88F -2F890;W # CJK COMPATIBILITY IDEOGRAPH-2F890 -2F891;W # CJK COMPATIBILITY IDEOGRAPH-2F891 -2F892;W # CJK COMPATIBILITY IDEOGRAPH-2F892 -2F893;W # CJK COMPATIBILITY IDEOGRAPH-2F893 -2F894;W # CJK COMPATIBILITY IDEOGRAPH-2F894 -2F895;W # CJK COMPATIBILITY IDEOGRAPH-2F895 -2F896;W # CJK COMPATIBILITY IDEOGRAPH-2F896 -2F897;W # CJK COMPATIBILITY IDEOGRAPH-2F897 -2F898;W # CJK COMPATIBILITY IDEOGRAPH-2F898 -2F899;W # CJK COMPATIBILITY IDEOGRAPH-2F899 -2F89A;W # CJK COMPATIBILITY IDEOGRAPH-2F89A -2F89B;W # CJK COMPATIBILITY IDEOGRAPH-2F89B -2F89C;W # CJK COMPATIBILITY IDEOGRAPH-2F89C -2F89D;W # CJK COMPATIBILITY IDEOGRAPH-2F89D -2F89E;W # CJK COMPATIBILITY IDEOGRAPH-2F89E -2F89F;W # CJK COMPATIBILITY IDEOGRAPH-2F89F -2F8A0;W # CJK COMPATIBILITY IDEOGRAPH-2F8A0 -2F8A1;W # CJK COMPATIBILITY IDEOGRAPH-2F8A1 -2F8A2;W # CJK COMPATIBILITY IDEOGRAPH-2F8A2 -2F8A3;W # CJK COMPATIBILITY IDEOGRAPH-2F8A3 -2F8A4;W # CJK COMPATIBILITY IDEOGRAPH-2F8A4 -2F8A5;W # CJK COMPATIBILITY IDEOGRAPH-2F8A5 -2F8A6;W # CJK COMPATIBILITY IDEOGRAPH-2F8A6 -2F8A7;W # CJK COMPATIBILITY IDEOGRAPH-2F8A7 -2F8A8;W # CJK COMPATIBILITY IDEOGRAPH-2F8A8 -2F8A9;W # CJK COMPATIBILITY IDEOGRAPH-2F8A9 -2F8AA;W # CJK COMPATIBILITY IDEOGRAPH-2F8AA -2F8AB;W # CJK COMPATIBILITY IDEOGRAPH-2F8AB -2F8AC;W # CJK COMPATIBILITY IDEOGRAPH-2F8AC -2F8AD;W # CJK COMPATIBILITY IDEOGRAPH-2F8AD -2F8AE;W # CJK COMPATIBILITY IDEOGRAPH-2F8AE -2F8AF;W # CJK COMPATIBILITY IDEOGRAPH-2F8AF -2F8B0;W # CJK COMPATIBILITY IDEOGRAPH-2F8B0 -2F8B1;W # CJK COMPATIBILITY IDEOGRAPH-2F8B1 -2F8B2;W # CJK COMPATIBILITY IDEOGRAPH-2F8B2 -2F8B3;W # CJK COMPATIBILITY IDEOGRAPH-2F8B3 -2F8B4;W # CJK COMPATIBILITY IDEOGRAPH-2F8B4 -2F8B5;W # CJK COMPATIBILITY IDEOGRAPH-2F8B5 -2F8B6;W # CJK COMPATIBILITY IDEOGRAPH-2F8B6 -2F8B7;W # CJK COMPATIBILITY IDEOGRAPH-2F8B7 -2F8B8;W # CJK COMPATIBILITY IDEOGRAPH-2F8B8 -2F8B9;W # CJK COMPATIBILITY IDEOGRAPH-2F8B9 -2F8BA;W # CJK COMPATIBILITY IDEOGRAPH-2F8BA -2F8BB;W # CJK COMPATIBILITY IDEOGRAPH-2F8BB -2F8BC;W # CJK COMPATIBILITY IDEOGRAPH-2F8BC -2F8BD;W # CJK COMPATIBILITY IDEOGRAPH-2F8BD -2F8BE;W # CJK COMPATIBILITY IDEOGRAPH-2F8BE -2F8BF;W # CJK COMPATIBILITY IDEOGRAPH-2F8BF -2F8C0;W # CJK COMPATIBILITY IDEOGRAPH-2F8C0 -2F8C1;W # CJK COMPATIBILITY IDEOGRAPH-2F8C1 -2F8C2;W # CJK COMPATIBILITY IDEOGRAPH-2F8C2 -2F8C3;W # CJK COMPATIBILITY IDEOGRAPH-2F8C3 -2F8C4;W # CJK COMPATIBILITY IDEOGRAPH-2F8C4 -2F8C5;W # CJK COMPATIBILITY IDEOGRAPH-2F8C5 -2F8C6;W # CJK COMPATIBILITY IDEOGRAPH-2F8C6 -2F8C7;W # CJK COMPATIBILITY IDEOGRAPH-2F8C7 -2F8C8;W # CJK COMPATIBILITY IDEOGRAPH-2F8C8 -2F8C9;W # CJK COMPATIBILITY IDEOGRAPH-2F8C9 -2F8CA;W # CJK COMPATIBILITY IDEOGRAPH-2F8CA -2F8CB;W # CJK COMPATIBILITY IDEOGRAPH-2F8CB -2F8CC;W # CJK COMPATIBILITY IDEOGRAPH-2F8CC -2F8CD;W # CJK COMPATIBILITY IDEOGRAPH-2F8CD -2F8CE;W # CJK COMPATIBILITY IDEOGRAPH-2F8CE -2F8CF;W # CJK COMPATIBILITY IDEOGRAPH-2F8CF -2F8D0;W # CJK COMPATIBILITY IDEOGRAPH-2F8D0 -2F8D1;W # CJK COMPATIBILITY IDEOGRAPH-2F8D1 -2F8D2;W # CJK COMPATIBILITY IDEOGRAPH-2F8D2 -2F8D3;W # CJK COMPATIBILITY IDEOGRAPH-2F8D3 -2F8D4;W # CJK COMPATIBILITY IDEOGRAPH-2F8D4 -2F8D5;W # CJK COMPATIBILITY IDEOGRAPH-2F8D5 -2F8D6;W # CJK COMPATIBILITY IDEOGRAPH-2F8D6 -2F8D7;W # CJK COMPATIBILITY IDEOGRAPH-2F8D7 -2F8D8;W # CJK COMPATIBILITY IDEOGRAPH-2F8D8 -2F8D9;W # CJK COMPATIBILITY IDEOGRAPH-2F8D9 -2F8DA;W # CJK COMPATIBILITY IDEOGRAPH-2F8DA -2F8DB;W # CJK COMPATIBILITY IDEOGRAPH-2F8DB -2F8DC;W # CJK COMPATIBILITY IDEOGRAPH-2F8DC -2F8DD;W # CJK COMPATIBILITY IDEOGRAPH-2F8DD -2F8DE;W # CJK COMPATIBILITY IDEOGRAPH-2F8DE -2F8DF;W # CJK COMPATIBILITY IDEOGRAPH-2F8DF -2F8E0;W # CJK COMPATIBILITY IDEOGRAPH-2F8E0 -2F8E1;W # CJK COMPATIBILITY IDEOGRAPH-2F8E1 -2F8E2;W # CJK COMPATIBILITY IDEOGRAPH-2F8E2 -2F8E3;W # CJK COMPATIBILITY IDEOGRAPH-2F8E3 -2F8E4;W # CJK COMPATIBILITY IDEOGRAPH-2F8E4 -2F8E5;W # CJK COMPATIBILITY IDEOGRAPH-2F8E5 -2F8E6;W # CJK COMPATIBILITY IDEOGRAPH-2F8E6 -2F8E7;W # CJK COMPATIBILITY IDEOGRAPH-2F8E7 -2F8E8;W # CJK COMPATIBILITY IDEOGRAPH-2F8E8 -2F8E9;W # CJK COMPATIBILITY IDEOGRAPH-2F8E9 -2F8EA;W # CJK COMPATIBILITY IDEOGRAPH-2F8EA -2F8EB;W # CJK COMPATIBILITY IDEOGRAPH-2F8EB -2F8EC;W # CJK COMPATIBILITY IDEOGRAPH-2F8EC -2F8ED;W # CJK COMPATIBILITY IDEOGRAPH-2F8ED -2F8EE;W # CJK COMPATIBILITY IDEOGRAPH-2F8EE -2F8EF;W # CJK COMPATIBILITY IDEOGRAPH-2F8EF -2F8F0;W # CJK COMPATIBILITY IDEOGRAPH-2F8F0 -2F8F1;W # CJK COMPATIBILITY IDEOGRAPH-2F8F1 -2F8F2;W # CJK COMPATIBILITY IDEOGRAPH-2F8F2 -2F8F3;W # CJK COMPATIBILITY IDEOGRAPH-2F8F3 -2F8F4;W # CJK COMPATIBILITY IDEOGRAPH-2F8F4 -2F8F5;W # CJK COMPATIBILITY IDEOGRAPH-2F8F5 -2F8F6;W # CJK COMPATIBILITY IDEOGRAPH-2F8F6 -2F8F7;W # CJK COMPATIBILITY IDEOGRAPH-2F8F7 -2F8F8;W # CJK COMPATIBILITY IDEOGRAPH-2F8F8 -2F8F9;W # CJK COMPATIBILITY IDEOGRAPH-2F8F9 -2F8FA;W # CJK COMPATIBILITY IDEOGRAPH-2F8FA -2F8FB;W # CJK COMPATIBILITY IDEOGRAPH-2F8FB -2F8FC;W # CJK COMPATIBILITY IDEOGRAPH-2F8FC -2F8FD;W # CJK COMPATIBILITY IDEOGRAPH-2F8FD -2F8FE;W # CJK COMPATIBILITY IDEOGRAPH-2F8FE -2F8FF;W # CJK COMPATIBILITY IDEOGRAPH-2F8FF -2F900;W # CJK COMPATIBILITY IDEOGRAPH-2F900 -2F901;W # CJK COMPATIBILITY IDEOGRAPH-2F901 -2F902;W # CJK COMPATIBILITY IDEOGRAPH-2F902 -2F903;W # CJK COMPATIBILITY IDEOGRAPH-2F903 -2F904;W # CJK COMPATIBILITY IDEOGRAPH-2F904 -2F905;W # CJK COMPATIBILITY IDEOGRAPH-2F905 -2F906;W # CJK COMPATIBILITY IDEOGRAPH-2F906 -2F907;W # CJK COMPATIBILITY IDEOGRAPH-2F907 -2F908;W # CJK COMPATIBILITY IDEOGRAPH-2F908 -2F909;W # CJK COMPATIBILITY IDEOGRAPH-2F909 -2F90A;W # CJK COMPATIBILITY IDEOGRAPH-2F90A -2F90B;W # CJK COMPATIBILITY IDEOGRAPH-2F90B -2F90C;W # CJK COMPATIBILITY IDEOGRAPH-2F90C -2F90D;W # CJK COMPATIBILITY IDEOGRAPH-2F90D -2F90E;W # CJK COMPATIBILITY IDEOGRAPH-2F90E -2F90F;W # CJK COMPATIBILITY IDEOGRAPH-2F90F -2F910;W # CJK COMPATIBILITY IDEOGRAPH-2F910 -2F911;W # CJK COMPATIBILITY IDEOGRAPH-2F911 -2F912;W # CJK COMPATIBILITY IDEOGRAPH-2F912 -2F913;W # CJK COMPATIBILITY IDEOGRAPH-2F913 -2F914;W # CJK COMPATIBILITY IDEOGRAPH-2F914 -2F915;W # CJK COMPATIBILITY IDEOGRAPH-2F915 -2F916;W # CJK COMPATIBILITY IDEOGRAPH-2F916 -2F917;W # CJK COMPATIBILITY IDEOGRAPH-2F917 -2F918;W # CJK COMPATIBILITY IDEOGRAPH-2F918 -2F919;W # CJK COMPATIBILITY IDEOGRAPH-2F919 -2F91A;W # CJK COMPATIBILITY IDEOGRAPH-2F91A -2F91B;W # CJK COMPATIBILITY IDEOGRAPH-2F91B -2F91C;W # CJK COMPATIBILITY IDEOGRAPH-2F91C -2F91D;W # CJK COMPATIBILITY IDEOGRAPH-2F91D -2F91E;W # CJK COMPATIBILITY IDEOGRAPH-2F91E -2F91F;W # CJK COMPATIBILITY IDEOGRAPH-2F91F -2F920;W # CJK COMPATIBILITY IDEOGRAPH-2F920 -2F921;W # CJK COMPATIBILITY IDEOGRAPH-2F921 -2F922;W # CJK COMPATIBILITY IDEOGRAPH-2F922 -2F923;W # CJK COMPATIBILITY IDEOGRAPH-2F923 -2F924;W # CJK COMPATIBILITY IDEOGRAPH-2F924 -2F925;W # CJK COMPATIBILITY IDEOGRAPH-2F925 -2F926;W # CJK COMPATIBILITY IDEOGRAPH-2F926 -2F927;W # CJK COMPATIBILITY IDEOGRAPH-2F927 -2F928;W # CJK COMPATIBILITY IDEOGRAPH-2F928 -2F929;W # CJK COMPATIBILITY IDEOGRAPH-2F929 -2F92A;W # CJK COMPATIBILITY IDEOGRAPH-2F92A -2F92B;W # CJK COMPATIBILITY IDEOGRAPH-2F92B -2F92C;W # CJK COMPATIBILITY IDEOGRAPH-2F92C -2F92D;W # CJK COMPATIBILITY IDEOGRAPH-2F92D -2F92E;W # CJK COMPATIBILITY IDEOGRAPH-2F92E -2F92F;W # CJK COMPATIBILITY IDEOGRAPH-2F92F -2F930;W # CJK COMPATIBILITY IDEOGRAPH-2F930 -2F931;W # CJK COMPATIBILITY IDEOGRAPH-2F931 -2F932;W # CJK COMPATIBILITY IDEOGRAPH-2F932 -2F933;W # CJK COMPATIBILITY IDEOGRAPH-2F933 -2F934;W # CJK COMPATIBILITY IDEOGRAPH-2F934 -2F935;W # CJK COMPATIBILITY IDEOGRAPH-2F935 -2F936;W # CJK COMPATIBILITY IDEOGRAPH-2F936 -2F937;W # CJK COMPATIBILITY IDEOGRAPH-2F937 -2F938;W # CJK COMPATIBILITY IDEOGRAPH-2F938 -2F939;W # CJK COMPATIBILITY IDEOGRAPH-2F939 -2F93A;W # CJK COMPATIBILITY IDEOGRAPH-2F93A -2F93B;W # CJK COMPATIBILITY IDEOGRAPH-2F93B -2F93C;W # CJK COMPATIBILITY IDEOGRAPH-2F93C -2F93D;W # CJK COMPATIBILITY IDEOGRAPH-2F93D -2F93E;W # CJK COMPATIBILITY IDEOGRAPH-2F93E -2F93F;W # CJK COMPATIBILITY IDEOGRAPH-2F93F -2F940;W # CJK COMPATIBILITY IDEOGRAPH-2F940 -2F941;W # CJK COMPATIBILITY IDEOGRAPH-2F941 -2F942;W # CJK COMPATIBILITY IDEOGRAPH-2F942 -2F943;W # CJK COMPATIBILITY IDEOGRAPH-2F943 -2F944;W # CJK COMPATIBILITY IDEOGRAPH-2F944 -2F945;W # CJK COMPATIBILITY IDEOGRAPH-2F945 -2F946;W # CJK COMPATIBILITY IDEOGRAPH-2F946 -2F947;W # CJK COMPATIBILITY IDEOGRAPH-2F947 -2F948;W # CJK COMPATIBILITY IDEOGRAPH-2F948 -2F949;W # CJK COMPATIBILITY IDEOGRAPH-2F949 -2F94A;W # CJK COMPATIBILITY IDEOGRAPH-2F94A -2F94B;W # CJK COMPATIBILITY IDEOGRAPH-2F94B -2F94C;W # CJK COMPATIBILITY IDEOGRAPH-2F94C -2F94D;W # CJK COMPATIBILITY IDEOGRAPH-2F94D -2F94E;W # CJK COMPATIBILITY IDEOGRAPH-2F94E -2F94F;W # CJK COMPATIBILITY IDEOGRAPH-2F94F -2F950;W # CJK COMPATIBILITY IDEOGRAPH-2F950 -2F951;W # CJK COMPATIBILITY IDEOGRAPH-2F951 -2F952;W # CJK COMPATIBILITY IDEOGRAPH-2F952 -2F953;W # CJK COMPATIBILITY IDEOGRAPH-2F953 -2F954;W # CJK COMPATIBILITY IDEOGRAPH-2F954 -2F955;W # CJK COMPATIBILITY IDEOGRAPH-2F955 -2F956;W # CJK COMPATIBILITY IDEOGRAPH-2F956 -2F957;W # CJK COMPATIBILITY IDEOGRAPH-2F957 -2F958;W # CJK COMPATIBILITY IDEOGRAPH-2F958 -2F959;W # CJK COMPATIBILITY IDEOGRAPH-2F959 -2F95A;W # CJK COMPATIBILITY IDEOGRAPH-2F95A -2F95B;W # CJK COMPATIBILITY IDEOGRAPH-2F95B -2F95C;W # CJK COMPATIBILITY IDEOGRAPH-2F95C -2F95D;W # CJK COMPATIBILITY IDEOGRAPH-2F95D -2F95E;W # CJK COMPATIBILITY IDEOGRAPH-2F95E -2F95F;W # CJK COMPATIBILITY IDEOGRAPH-2F95F -2F960;W # CJK COMPATIBILITY IDEOGRAPH-2F960 -2F961;W # CJK COMPATIBILITY IDEOGRAPH-2F961 -2F962;W # CJK COMPATIBILITY IDEOGRAPH-2F962 -2F963;W # CJK COMPATIBILITY IDEOGRAPH-2F963 -2F964;W # CJK COMPATIBILITY IDEOGRAPH-2F964 -2F965;W # CJK COMPATIBILITY IDEOGRAPH-2F965 -2F966;W # CJK COMPATIBILITY IDEOGRAPH-2F966 -2F967;W # CJK COMPATIBILITY IDEOGRAPH-2F967 -2F968;W # CJK COMPATIBILITY IDEOGRAPH-2F968 -2F969;W # CJK COMPATIBILITY IDEOGRAPH-2F969 -2F96A;W # CJK COMPATIBILITY IDEOGRAPH-2F96A -2F96B;W # CJK COMPATIBILITY IDEOGRAPH-2F96B -2F96C;W # CJK COMPATIBILITY IDEOGRAPH-2F96C -2F96D;W # CJK COMPATIBILITY IDEOGRAPH-2F96D -2F96E;W # CJK COMPATIBILITY IDEOGRAPH-2F96E -2F96F;W # CJK COMPATIBILITY IDEOGRAPH-2F96F -2F970;W # CJK COMPATIBILITY IDEOGRAPH-2F970 -2F971;W # CJK COMPATIBILITY IDEOGRAPH-2F971 -2F972;W # CJK COMPATIBILITY IDEOGRAPH-2F972 -2F973;W # CJK COMPATIBILITY IDEOGRAPH-2F973 -2F974;W # CJK COMPATIBILITY IDEOGRAPH-2F974 -2F975;W # CJK COMPATIBILITY IDEOGRAPH-2F975 -2F976;W # CJK COMPATIBILITY IDEOGRAPH-2F976 -2F977;W # CJK COMPATIBILITY IDEOGRAPH-2F977 -2F978;W # CJK COMPATIBILITY IDEOGRAPH-2F978 -2F979;W # CJK COMPATIBILITY IDEOGRAPH-2F979 -2F97A;W # CJK COMPATIBILITY IDEOGRAPH-2F97A -2F97B;W # CJK COMPATIBILITY IDEOGRAPH-2F97B -2F97C;W # CJK COMPATIBILITY IDEOGRAPH-2F97C -2F97D;W # CJK COMPATIBILITY IDEOGRAPH-2F97D -2F97E;W # CJK COMPATIBILITY IDEOGRAPH-2F97E -2F97F;W # CJK COMPATIBILITY IDEOGRAPH-2F97F -2F980;W # CJK COMPATIBILITY IDEOGRAPH-2F980 -2F981;W # CJK COMPATIBILITY IDEOGRAPH-2F981 -2F982;W # CJK COMPATIBILITY IDEOGRAPH-2F982 -2F983;W # CJK COMPATIBILITY IDEOGRAPH-2F983 -2F984;W # CJK COMPATIBILITY IDEOGRAPH-2F984 -2F985;W # CJK COMPATIBILITY IDEOGRAPH-2F985 -2F986;W # CJK COMPATIBILITY IDEOGRAPH-2F986 -2F987;W # CJK COMPATIBILITY IDEOGRAPH-2F987 -2F988;W # CJK COMPATIBILITY IDEOGRAPH-2F988 -2F989;W # CJK COMPATIBILITY IDEOGRAPH-2F989 -2F98A;W # CJK COMPATIBILITY IDEOGRAPH-2F98A -2F98B;W # CJK COMPATIBILITY IDEOGRAPH-2F98B -2F98C;W # CJK COMPATIBILITY IDEOGRAPH-2F98C -2F98D;W # CJK COMPATIBILITY IDEOGRAPH-2F98D -2F98E;W # CJK COMPATIBILITY IDEOGRAPH-2F98E -2F98F;W # CJK COMPATIBILITY IDEOGRAPH-2F98F -2F990;W # CJK COMPATIBILITY IDEOGRAPH-2F990 -2F991;W # CJK COMPATIBILITY IDEOGRAPH-2F991 -2F992;W # CJK COMPATIBILITY IDEOGRAPH-2F992 -2F993;W # CJK COMPATIBILITY IDEOGRAPH-2F993 -2F994;W # CJK COMPATIBILITY IDEOGRAPH-2F994 -2F995;W # CJK COMPATIBILITY IDEOGRAPH-2F995 -2F996;W # CJK COMPATIBILITY IDEOGRAPH-2F996 -2F997;W # CJK COMPATIBILITY IDEOGRAPH-2F997 -2F998;W # CJK COMPATIBILITY IDEOGRAPH-2F998 -2F999;W # CJK COMPATIBILITY IDEOGRAPH-2F999 -2F99A;W # CJK COMPATIBILITY IDEOGRAPH-2F99A -2F99B;W # CJK COMPATIBILITY IDEOGRAPH-2F99B -2F99C;W # CJK COMPATIBILITY IDEOGRAPH-2F99C -2F99D;W # CJK COMPATIBILITY IDEOGRAPH-2F99D -2F99E;W # CJK COMPATIBILITY IDEOGRAPH-2F99E -2F99F;W # CJK COMPATIBILITY IDEOGRAPH-2F99F -2F9A0;W # CJK COMPATIBILITY IDEOGRAPH-2F9A0 -2F9A1;W # CJK COMPATIBILITY IDEOGRAPH-2F9A1 -2F9A2;W # CJK COMPATIBILITY IDEOGRAPH-2F9A2 -2F9A3;W # CJK COMPATIBILITY IDEOGRAPH-2F9A3 -2F9A4;W # CJK COMPATIBILITY IDEOGRAPH-2F9A4 -2F9A5;W # CJK COMPATIBILITY IDEOGRAPH-2F9A5 -2F9A6;W # CJK COMPATIBILITY IDEOGRAPH-2F9A6 -2F9A7;W # CJK COMPATIBILITY IDEOGRAPH-2F9A7 -2F9A8;W # CJK COMPATIBILITY IDEOGRAPH-2F9A8 -2F9A9;W # CJK COMPATIBILITY IDEOGRAPH-2F9A9 -2F9AA;W # CJK COMPATIBILITY IDEOGRAPH-2F9AA -2F9AB;W # CJK COMPATIBILITY IDEOGRAPH-2F9AB -2F9AC;W # CJK COMPATIBILITY IDEOGRAPH-2F9AC -2F9AD;W # CJK COMPATIBILITY IDEOGRAPH-2F9AD -2F9AE;W # CJK COMPATIBILITY IDEOGRAPH-2F9AE -2F9AF;W # CJK COMPATIBILITY IDEOGRAPH-2F9AF -2F9B0;W # CJK COMPATIBILITY IDEOGRAPH-2F9B0 -2F9B1;W # CJK COMPATIBILITY IDEOGRAPH-2F9B1 -2F9B2;W # CJK COMPATIBILITY IDEOGRAPH-2F9B2 -2F9B3;W # CJK COMPATIBILITY IDEOGRAPH-2F9B3 -2F9B4;W # CJK COMPATIBILITY IDEOGRAPH-2F9B4 -2F9B5;W # CJK COMPATIBILITY IDEOGRAPH-2F9B5 -2F9B6;W # CJK COMPATIBILITY IDEOGRAPH-2F9B6 -2F9B7;W # CJK COMPATIBILITY IDEOGRAPH-2F9B7 -2F9B8;W # CJK COMPATIBILITY IDEOGRAPH-2F9B8 -2F9B9;W # CJK COMPATIBILITY IDEOGRAPH-2F9B9 -2F9BA;W # CJK COMPATIBILITY IDEOGRAPH-2F9BA -2F9BB;W # CJK COMPATIBILITY IDEOGRAPH-2F9BB -2F9BC;W # CJK COMPATIBILITY IDEOGRAPH-2F9BC -2F9BD;W # CJK COMPATIBILITY IDEOGRAPH-2F9BD -2F9BE;W # CJK COMPATIBILITY IDEOGRAPH-2F9BE -2F9BF;W # CJK COMPATIBILITY IDEOGRAPH-2F9BF -2F9C0;W # CJK COMPATIBILITY IDEOGRAPH-2F9C0 -2F9C1;W # CJK COMPATIBILITY IDEOGRAPH-2F9C1 -2F9C2;W # CJK COMPATIBILITY IDEOGRAPH-2F9C2 -2F9C3;W # CJK COMPATIBILITY IDEOGRAPH-2F9C3 -2F9C4;W # CJK COMPATIBILITY IDEOGRAPH-2F9C4 -2F9C5;W # CJK COMPATIBILITY IDEOGRAPH-2F9C5 -2F9C6;W # CJK COMPATIBILITY IDEOGRAPH-2F9C6 -2F9C7;W # CJK COMPATIBILITY IDEOGRAPH-2F9C7 -2F9C8;W # CJK COMPATIBILITY IDEOGRAPH-2F9C8 -2F9C9;W # CJK COMPATIBILITY IDEOGRAPH-2F9C9 -2F9CA;W # CJK COMPATIBILITY IDEOGRAPH-2F9CA -2F9CB;W # CJK COMPATIBILITY IDEOGRAPH-2F9CB -2F9CC;W # CJK COMPATIBILITY IDEOGRAPH-2F9CC -2F9CD;W # CJK COMPATIBILITY IDEOGRAPH-2F9CD -2F9CE;W # CJK COMPATIBILITY IDEOGRAPH-2F9CE -2F9CF;W # CJK COMPATIBILITY IDEOGRAPH-2F9CF -2F9D0;W # CJK COMPATIBILITY IDEOGRAPH-2F9D0 -2F9D1;W # CJK COMPATIBILITY IDEOGRAPH-2F9D1 -2F9D2;W # CJK COMPATIBILITY IDEOGRAPH-2F9D2 -2F9D3;W # CJK COMPATIBILITY IDEOGRAPH-2F9D3 -2F9D4;W # CJK COMPATIBILITY IDEOGRAPH-2F9D4 -2F9D5;W # CJK COMPATIBILITY IDEOGRAPH-2F9D5 -2F9D6;W # CJK COMPATIBILITY IDEOGRAPH-2F9D6 -2F9D7;W # CJK COMPATIBILITY IDEOGRAPH-2F9D7 -2F9D8;W # CJK COMPATIBILITY IDEOGRAPH-2F9D8 -2F9D9;W # CJK COMPATIBILITY IDEOGRAPH-2F9D9 -2F9DA;W # CJK COMPATIBILITY IDEOGRAPH-2F9DA -2F9DB;W # CJK COMPATIBILITY IDEOGRAPH-2F9DB -2F9DC;W # CJK COMPATIBILITY IDEOGRAPH-2F9DC -2F9DD;W # CJK COMPATIBILITY IDEOGRAPH-2F9DD -2F9DE;W # CJK COMPATIBILITY IDEOGRAPH-2F9DE -2F9DF;W # CJK COMPATIBILITY IDEOGRAPH-2F9DF -2F9E0;W # CJK COMPATIBILITY IDEOGRAPH-2F9E0 -2F9E1;W # CJK COMPATIBILITY IDEOGRAPH-2F9E1 -2F9E2;W # CJK COMPATIBILITY IDEOGRAPH-2F9E2 -2F9E3;W # CJK COMPATIBILITY IDEOGRAPH-2F9E3 -2F9E4;W # CJK COMPATIBILITY IDEOGRAPH-2F9E4 -2F9E5;W # CJK COMPATIBILITY IDEOGRAPH-2F9E5 -2F9E6;W # CJK COMPATIBILITY IDEOGRAPH-2F9E6 -2F9E7;W # CJK COMPATIBILITY IDEOGRAPH-2F9E7 -2F9E8;W # CJK COMPATIBILITY IDEOGRAPH-2F9E8 -2F9E9;W # CJK COMPATIBILITY IDEOGRAPH-2F9E9 -2F9EA;W # CJK COMPATIBILITY IDEOGRAPH-2F9EA -2F9EB;W # CJK COMPATIBILITY IDEOGRAPH-2F9EB -2F9EC;W # CJK COMPATIBILITY IDEOGRAPH-2F9EC -2F9ED;W # CJK COMPATIBILITY IDEOGRAPH-2F9ED -2F9EE;W # CJK COMPATIBILITY IDEOGRAPH-2F9EE -2F9EF;W # CJK COMPATIBILITY IDEOGRAPH-2F9EF -2F9F0;W # CJK COMPATIBILITY IDEOGRAPH-2F9F0 -2F9F1;W # CJK COMPATIBILITY IDEOGRAPH-2F9F1 -2F9F2;W # CJK COMPATIBILITY IDEOGRAPH-2F9F2 -2F9F3;W # CJK COMPATIBILITY IDEOGRAPH-2F9F3 -2F9F4;W # CJK COMPATIBILITY IDEOGRAPH-2F9F4 -2F9F5;W # CJK COMPATIBILITY IDEOGRAPH-2F9F5 -2F9F6;W # CJK COMPATIBILITY IDEOGRAPH-2F9F6 -2F9F7;W # CJK COMPATIBILITY IDEOGRAPH-2F9F7 -2F9F8;W # CJK COMPATIBILITY IDEOGRAPH-2F9F8 -2F9F9;W # CJK COMPATIBILITY IDEOGRAPH-2F9F9 -2F9FA;W # CJK COMPATIBILITY IDEOGRAPH-2F9FA -2F9FB;W # CJK COMPATIBILITY IDEOGRAPH-2F9FB -2F9FC;W # CJK COMPATIBILITY IDEOGRAPH-2F9FC -2F9FD;W # CJK COMPATIBILITY IDEOGRAPH-2F9FD -2F9FE;W # CJK COMPATIBILITY IDEOGRAPH-2F9FE -2F9FF;W # CJK COMPATIBILITY IDEOGRAPH-2F9FF -2FA00;W # CJK COMPATIBILITY IDEOGRAPH-2FA00 -2FA01;W # CJK COMPATIBILITY IDEOGRAPH-2FA01 -2FA02;W # CJK COMPATIBILITY IDEOGRAPH-2FA02 -2FA03;W # CJK COMPATIBILITY IDEOGRAPH-2FA03 -2FA04;W # CJK COMPATIBILITY IDEOGRAPH-2FA04 -2FA05;W # CJK COMPATIBILITY IDEOGRAPH-2FA05 -2FA06;W # CJK COMPATIBILITY IDEOGRAPH-2FA06 -2FA07;W # CJK COMPATIBILITY IDEOGRAPH-2FA07 -2FA08;W # CJK COMPATIBILITY IDEOGRAPH-2FA08 -2FA09;W # CJK COMPATIBILITY IDEOGRAPH-2FA09 -2FA0A;W # CJK COMPATIBILITY IDEOGRAPH-2FA0A -2FA0B;W # CJK COMPATIBILITY IDEOGRAPH-2FA0B -2FA0C;W # CJK COMPATIBILITY IDEOGRAPH-2FA0C -2FA0D;W # CJK COMPATIBILITY IDEOGRAPH-2FA0D -2FA0E;W # CJK COMPATIBILITY IDEOGRAPH-2FA0E -2FA0F;W # CJK COMPATIBILITY IDEOGRAPH-2FA0F -2FA10;W # CJK COMPATIBILITY IDEOGRAPH-2FA10 -2FA11;W # CJK COMPATIBILITY IDEOGRAPH-2FA11 -2FA12;W # CJK COMPATIBILITY IDEOGRAPH-2FA12 -2FA13;W # CJK COMPATIBILITY IDEOGRAPH-2FA13 -2FA14;W # CJK COMPATIBILITY IDEOGRAPH-2FA14 -2FA15;W # CJK COMPATIBILITY IDEOGRAPH-2FA15 -2FA16;W # CJK COMPATIBILITY IDEOGRAPH-2FA16 -2FA17;W # CJK COMPATIBILITY IDEOGRAPH-2FA17 -2FA18;W # CJK COMPATIBILITY IDEOGRAPH-2FA18 -2FA19;W # CJK COMPATIBILITY IDEOGRAPH-2FA19 -2FA1A;W # CJK COMPATIBILITY IDEOGRAPH-2FA1A -2FA1B;W # CJK COMPATIBILITY IDEOGRAPH-2FA1B -2FA1C;W # CJK COMPATIBILITY IDEOGRAPH-2FA1C -2FA1D;W # CJK COMPATIBILITY IDEOGRAPH-2FA1D -2FA1E..2FFFD;W # <reserved> -30000..3FFFD;W # <reserved> -E0001;N # LANGUAGE TAG -E0020;N # TAG SPACE -E0021;N # TAG EXCLAMATION MARK -E0022;N # TAG QUOTATION MARK -E0023;N # TAG NUMBER SIGN -E0024;N # TAG DOLLAR SIGN -E0025;N # TAG PERCENT SIGN -E0026;N # TAG AMPERSAND -E0027;N # TAG APOSTROPHE -E0028;N # TAG LEFT PARENTHESIS -E0029;N # TAG RIGHT PARENTHESIS -E002A;N # TAG ASTERISK -E002B;N # TAG PLUS SIGN -E002C;N # TAG COMMA -E002D;N # TAG HYPHEN-MINUS -E002E;N # TAG FULL STOP -E002F;N # TAG SOLIDUS -E0030;N # TAG DIGIT ZERO -E0031;N # TAG DIGIT ONE -E0032;N # TAG DIGIT TWO -E0033;N # TAG DIGIT THREE -E0034;N # TAG DIGIT FOUR -E0035;N # TAG DIGIT FIVE -E0036;N # TAG DIGIT SIX -E0037;N # TAG DIGIT SEVEN -E0038;N # TAG DIGIT EIGHT -E0039;N # TAG DIGIT NINE -E003A;N # TAG COLON -E003B;N # TAG SEMICOLON -E003C;N # TAG LESS-THAN SIGN -E003D;N # TAG EQUALS SIGN -E003E;N # TAG GREATER-THAN SIGN -E003F;N # TAG QUESTION MARK -E0040;N # TAG COMMERCIAL AT -E0041;N # TAG LATIN CAPITAL LETTER A -E0042;N # TAG LATIN CAPITAL LETTER B -E0043;N # TAG LATIN CAPITAL LETTER C -E0044;N # TAG LATIN CAPITAL LETTER D -E0045;N # TAG LATIN CAPITAL LETTER E -E0046;N # TAG LATIN CAPITAL LETTER F -E0047;N # TAG LATIN CAPITAL LETTER G -E0048;N # TAG LATIN CAPITAL LETTER H -E0049;N # TAG LATIN CAPITAL LETTER I -E004A;N # TAG LATIN CAPITAL LETTER J -E004B;N # TAG LATIN CAPITAL LETTER K -E004C;N # TAG LATIN CAPITAL LETTER L -E004D;N # TAG LATIN CAPITAL LETTER M -E004E;N # TAG LATIN CAPITAL LETTER N -E004F;N # TAG LATIN CAPITAL LETTER O -E0050;N # TAG LATIN CAPITAL LETTER P -E0051;N # TAG LATIN CAPITAL LETTER Q -E0052;N # TAG LATIN CAPITAL LETTER R -E0053;N # TAG LATIN CAPITAL LETTER S -E0054;N # TAG LATIN CAPITAL LETTER T -E0055;N # TAG LATIN CAPITAL LETTER U -E0056;N # TAG LATIN CAPITAL LETTER V -E0057;N # TAG LATIN CAPITAL LETTER W -E0058;N # TAG LATIN CAPITAL LETTER X -E0059;N # TAG LATIN CAPITAL LETTER Y -E005A;N # TAG LATIN CAPITAL LETTER Z -E005B;N # TAG LEFT SQUARE BRACKET -E005C;N # TAG REVERSE SOLIDUS -E005D;N # TAG RIGHT SQUARE BRACKET -E005E;N # TAG CIRCUMFLEX ACCENT -E005F;N # TAG LOW LINE -E0060;N # TAG GRAVE ACCENT -E0061;N # TAG LATIN SMALL LETTER A -E0062;N # TAG LATIN SMALL LETTER B -E0063;N # TAG LATIN SMALL LETTER C -E0064;N # TAG LATIN SMALL LETTER D -E0065;N # TAG LATIN SMALL LETTER E -E0066;N # TAG LATIN SMALL LETTER F -E0067;N # TAG LATIN SMALL LETTER G -E0068;N # TAG LATIN SMALL LETTER H -E0069;N # TAG LATIN SMALL LETTER I -E006A;N # TAG LATIN SMALL LETTER J -E006B;N # TAG LATIN SMALL LETTER K -E006C;N # TAG LATIN SMALL LETTER L -E006D;N # TAG LATIN SMALL LETTER M -E006E;N # TAG LATIN SMALL LETTER N -E006F;N # TAG LATIN SMALL LETTER O -E0070;N # TAG LATIN SMALL LETTER P -E0071;N # TAG LATIN SMALL LETTER Q -E0072;N # TAG LATIN SMALL LETTER R -E0073;N # TAG LATIN SMALL LETTER S -E0074;N # TAG LATIN SMALL LETTER T -E0075;N # TAG LATIN SMALL LETTER U -E0076;N # TAG LATIN SMALL LETTER V -E0077;N # TAG LATIN SMALL LETTER W -E0078;N # TAG LATIN SMALL LETTER X -E0079;N # TAG LATIN SMALL LETTER Y -E007A;N # TAG LATIN SMALL LETTER Z -E007B;N # TAG LEFT CURLY BRACKET -E007C;N # TAG VERTICAL LINE -E007D;N # TAG RIGHT CURLY BRACKET -E007E;N # TAG TILDE -E007F;N # CANCEL TAG -E0100;A # VARIATION SELECTOR-17 -E0101;A # VARIATION SELECTOR-18 -E0102;A # VARIATION SELECTOR-19 -E0103;A # VARIATION SELECTOR-20 -E0104;A # VARIATION SELECTOR-21 -E0105;A # VARIATION SELECTOR-22 -E0106;A # VARIATION SELECTOR-23 -E0107;A # VARIATION SELECTOR-24 -E0108;A # VARIATION SELECTOR-25 -E0109;A # VARIATION SELECTOR-26 -E010A;A # VARIATION SELECTOR-27 -E010B;A # VARIATION SELECTOR-28 -E010C;A # VARIATION SELECTOR-29 -E010D;A # VARIATION SELECTOR-30 -E010E;A # VARIATION SELECTOR-31 -E010F;A # VARIATION SELECTOR-32 -E0110;A # VARIATION SELECTOR-33 -E0111;A # VARIATION SELECTOR-34 -E0112;A # VARIATION SELECTOR-35 -E0113;A # VARIATION SELECTOR-36 -E0114;A # VARIATION SELECTOR-37 -E0115;A # VARIATION SELECTOR-38 -E0116;A # VARIATION SELECTOR-39 -E0117;A # VARIATION SELECTOR-40 -E0118;A # VARIATION SELECTOR-41 -E0119;A # VARIATION SELECTOR-42 -E011A;A # VARIATION SELECTOR-43 -E011B;A # VARIATION SELECTOR-44 -E011C;A # VARIATION SELECTOR-45 -E011D;A # VARIATION SELECTOR-46 -E011E;A # VARIATION SELECTOR-47 -E011F;A # VARIATION SELECTOR-48 -E0120;A # VARIATION SELECTOR-49 -E0121;A # VARIATION SELECTOR-50 -E0122;A # VARIATION SELECTOR-51 -E0123;A # VARIATION SELECTOR-52 -E0124;A # VARIATION SELECTOR-53 -E0125;A # VARIATION SELECTOR-54 -E0126;A # VARIATION SELECTOR-55 -E0127;A # VARIATION SELECTOR-56 -E0128;A # VARIATION SELECTOR-57 -E0129;A # VARIATION SELECTOR-58 -E012A;A # VARIATION SELECTOR-59 -E012B;A # VARIATION SELECTOR-60 -E012C;A # VARIATION SELECTOR-61 -E012D;A # VARIATION SELECTOR-62 -E012E;A # VARIATION SELECTOR-63 -E012F;A # VARIATION SELECTOR-64 -E0130;A # VARIATION SELECTOR-65 -E0131;A # VARIATION SELECTOR-66 -E0132;A # VARIATION SELECTOR-67 -E0133;A # VARIATION SELECTOR-68 -E0134;A # VARIATION SELECTOR-69 -E0135;A # VARIATION SELECTOR-70 -E0136;A # VARIATION SELECTOR-71 -E0137;A # VARIATION SELECTOR-72 -E0138;A # VARIATION SELECTOR-73 -E0139;A # VARIATION SELECTOR-74 -E013A;A # VARIATION SELECTOR-75 -E013B;A # VARIATION SELECTOR-76 -E013C;A # VARIATION SELECTOR-77 -E013D;A # VARIATION SELECTOR-78 -E013E;A # VARIATION SELECTOR-79 -E013F;A # VARIATION SELECTOR-80 -E0140;A # VARIATION SELECTOR-81 -E0141;A # VARIATION SELECTOR-82 -E0142;A # VARIATION SELECTOR-83 -E0143;A # VARIATION SELECTOR-84 -E0144;A # VARIATION SELECTOR-85 -E0145;A # VARIATION SELECTOR-86 -E0146;A # VARIATION SELECTOR-87 -E0147;A # VARIATION SELECTOR-88 -E0148;A # VARIATION SELECTOR-89 -E0149;A # VARIATION SELECTOR-90 -E014A;A # VARIATION SELECTOR-91 -E014B;A # VARIATION SELECTOR-92 -E014C;A # VARIATION SELECTOR-93 -E014D;A # VARIATION SELECTOR-94 -E014E;A # VARIATION SELECTOR-95 -E014F;A # VARIATION SELECTOR-96 -E0150;A # VARIATION SELECTOR-97 -E0151;A # VARIATION SELECTOR-98 -E0152;A # VARIATION SELECTOR-99 -E0153;A # VARIATION SELECTOR-100 -E0154;A # VARIATION SELECTOR-101 -E0155;A # VARIATION SELECTOR-102 -E0156;A # VARIATION SELECTOR-103 -E0157;A # VARIATION SELECTOR-104 -E0158;A # VARIATION SELECTOR-105 -E0159;A # VARIATION SELECTOR-106 -E015A;A # VARIATION SELECTOR-107 -E015B;A # VARIATION SELECTOR-108 -E015C;A # VARIATION SELECTOR-109 -E015D;A # VARIATION SELECTOR-110 -E015E;A # VARIATION SELECTOR-111 -E015F;A # VARIATION SELECTOR-112 -E0160;A # VARIATION SELECTOR-113 -E0161;A # VARIATION SELECTOR-114 -E0162;A # VARIATION SELECTOR-115 -E0163;A # VARIATION SELECTOR-116 -E0164;A # VARIATION SELECTOR-117 -E0165;A # VARIATION SELECTOR-118 -E0166;A # VARIATION SELECTOR-119 -E0167;A # VARIATION SELECTOR-120 -E0168;A # VARIATION SELECTOR-121 -E0169;A # VARIATION SELECTOR-122 -E016A;A # VARIATION SELECTOR-123 -E016B;A # VARIATION SELECTOR-124 -E016C;A # VARIATION SELECTOR-125 -E016D;A # VARIATION SELECTOR-126 -E016E;A # VARIATION SELECTOR-127 -E016F;A # VARIATION SELECTOR-128 -E0170;A # VARIATION SELECTOR-129 -E0171;A # VARIATION SELECTOR-130 -E0172;A # VARIATION SELECTOR-131 -E0173;A # VARIATION SELECTOR-132 -E0174;A # VARIATION SELECTOR-133 -E0175;A # VARIATION SELECTOR-134 -E0176;A # VARIATION SELECTOR-135 -E0177;A # VARIATION SELECTOR-136 -E0178;A # VARIATION SELECTOR-137 -E0179;A # VARIATION SELECTOR-138 -E017A;A # VARIATION SELECTOR-139 -E017B;A # VARIATION SELECTOR-140 -E017C;A # VARIATION SELECTOR-141 -E017D;A # VARIATION SELECTOR-142 -E017E;A # VARIATION SELECTOR-143 -E017F;A # VARIATION SELECTOR-144 -E0180;A # VARIATION SELECTOR-145 -E0181;A # VARIATION SELECTOR-146 -E0182;A # VARIATION SELECTOR-147 -E0183;A # VARIATION SELECTOR-148 -E0184;A # VARIATION SELECTOR-149 -E0185;A # VARIATION SELECTOR-150 -E0186;A # VARIATION SELECTOR-151 -E0187;A # VARIATION SELECTOR-152 -E0188;A # VARIATION SELECTOR-153 -E0189;A # VARIATION SELECTOR-154 -E018A;A # VARIATION SELECTOR-155 -E018B;A # VARIATION SELECTOR-156 -E018C;A # VARIATION SELECTOR-157 -E018D;A # VARIATION SELECTOR-158 -E018E;A # VARIATION SELECTOR-159 -E018F;A # VARIATION SELECTOR-160 -E0190;A # VARIATION SELECTOR-161 -E0191;A # VARIATION SELECTOR-162 -E0192;A # VARIATION SELECTOR-163 -E0193;A # VARIATION SELECTOR-164 -E0194;A # VARIATION SELECTOR-165 -E0195;A # VARIATION SELECTOR-166 -E0196;A # VARIATION SELECTOR-167 -E0197;A # VARIATION SELECTOR-168 -E0198;A # VARIATION SELECTOR-169 -E0199;A # VARIATION SELECTOR-170 -E019A;A # VARIATION SELECTOR-171 -E019B;A # VARIATION SELECTOR-172 -E019C;A # VARIATION SELECTOR-173 -E019D;A # VARIATION SELECTOR-174 -E019E;A # VARIATION SELECTOR-175 -E019F;A # VARIATION SELECTOR-176 -E01A0;A # VARIATION SELECTOR-177 -E01A1;A # VARIATION SELECTOR-178 -E01A2;A # VARIATION SELECTOR-179 -E01A3;A # VARIATION SELECTOR-180 -E01A4;A # VARIATION SELECTOR-181 -E01A5;A # VARIATION SELECTOR-182 -E01A6;A # VARIATION SELECTOR-183 -E01A7;A # VARIATION SELECTOR-184 -E01A8;A # VARIATION SELECTOR-185 -E01A9;A # VARIATION SELECTOR-186 -E01AA;A # VARIATION SELECTOR-187 -E01AB;A # VARIATION SELECTOR-188 -E01AC;A # VARIATION SELECTOR-189 -E01AD;A # VARIATION SELECTOR-190 -E01AE;A # VARIATION SELECTOR-191 -E01AF;A # VARIATION SELECTOR-192 -E01B0;A # VARIATION SELECTOR-193 -E01B1;A # VARIATION SELECTOR-194 -E01B2;A # VARIATION SELECTOR-195 -E01B3;A # VARIATION SELECTOR-196 -E01B4;A # VARIATION SELECTOR-197 -E01B5;A # VARIATION SELECTOR-198 -E01B6;A # VARIATION SELECTOR-199 -E01B7;A # VARIATION SELECTOR-200 -E01B8;A # VARIATION SELECTOR-201 -E01B9;A # VARIATION SELECTOR-202 -E01BA;A # VARIATION SELECTOR-203 -E01BB;A # VARIATION SELECTOR-204 -E01BC;A # VARIATION SELECTOR-205 -E01BD;A # VARIATION SELECTOR-206 -E01BE;A # VARIATION SELECTOR-207 -E01BF;A # VARIATION SELECTOR-208 -E01C0;A # VARIATION SELECTOR-209 -E01C1;A # VARIATION SELECTOR-210 -E01C2;A # VARIATION SELECTOR-211 -E01C3;A # VARIATION SELECTOR-212 -E01C4;A # VARIATION SELECTOR-213 -E01C5;A # VARIATION SELECTOR-214 -E01C6;A # VARIATION SELECTOR-215 -E01C7;A # VARIATION SELECTOR-216 -E01C8;A # VARIATION SELECTOR-217 -E01C9;A # VARIATION SELECTOR-218 -E01CA;A # VARIATION SELECTOR-219 -E01CB;A # VARIATION SELECTOR-220 -E01CC;A # VARIATION SELECTOR-221 -E01CD;A # VARIATION SELECTOR-222 -E01CE;A # VARIATION SELECTOR-223 -E01CF;A # VARIATION SELECTOR-224 -E01D0;A # VARIATION SELECTOR-225 -E01D1;A # VARIATION SELECTOR-226 -E01D2;A # VARIATION SELECTOR-227 -E01D3;A # VARIATION SELECTOR-228 -E01D4;A # VARIATION SELECTOR-229 -E01D5;A # VARIATION SELECTOR-230 -E01D6;A # VARIATION SELECTOR-231 -E01D7;A # VARIATION SELECTOR-232 -E01D8;A # VARIATION SELECTOR-233 -E01D9;A # VARIATION SELECTOR-234 -E01DA;A # VARIATION SELECTOR-235 -E01DB;A # VARIATION SELECTOR-236 -E01DC;A # VARIATION SELECTOR-237 -E01DD;A # VARIATION SELECTOR-238 -E01DE;A # VARIATION SELECTOR-239 -E01DF;A # VARIATION SELECTOR-240 -E01E0;A # VARIATION SELECTOR-241 -E01E1;A # VARIATION SELECTOR-242 -E01E2;A # VARIATION SELECTOR-243 -E01E3;A # VARIATION SELECTOR-244 -E01E4;A # VARIATION SELECTOR-245 -E01E5;A # VARIATION SELECTOR-246 -E01E6;A # VARIATION SELECTOR-247 -E01E7;A # VARIATION SELECTOR-248 -E01E8;A # VARIATION SELECTOR-249 -E01E9;A # VARIATION SELECTOR-250 -E01EA;A # VARIATION SELECTOR-251 -E01EB;A # VARIATION SELECTOR-252 -E01EC;A # VARIATION SELECTOR-253 -E01ED;A # VARIATION SELECTOR-254 -E01EE;A # VARIATION SELECTOR-255 -E01EF;A # VARIATION SELECTOR-256 -F0000..FFFFD;A # <Plane 15 Private Use, First>..<Plane 15 Private Use, Last> -100000..10FFFD;A # <Plane 16 Private Use, First>..<Plane 16 Private Use, Last> diff --git a/Master/tlpkg/tlperl.old/lib/unicore/Exact.pl b/Master/tlpkg/tlperl.old/lib/unicore/Exact.pl deleted file mode 100644 index 42312b054cc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/Exact.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! - -## -## Data in this file used by ../utf8_heavy.pl -## - -## Mapping from name to filename in ./lib/gc_sc -%utf8::Exact = ( - ASCII => 'ASCII', - All => 'Any', - Alnum => 'Alnum', - Alpha => 'Alpha', - Any => 'Any', - Assigned => 'Assigned', - Blank => 'Blank', - C => 'C', - Cc => 'Cc', - Cf => 'Cf', - Cn => 'Cn', - Cntrl => 'Cntrl', - Co => 'Co', - Cs => 'Cs', - Digit => 'Digit', - Graph => 'Graph', - InGreek => 'InGreekA', - L => 'L', - LC => 'LC', - Ll => 'Ll', - Lm => 'Lm', - Lo => 'Lo', - Lower => 'Lower', - Lt => 'Lt', - Lu => 'Lu', - M => 'M', - Mc => 'Mc', - Me => 'Me', - 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/tlpkg/tlperl.old/lib/unicore/HangulSyllableType.txt b/Master/tlpkg/tlperl.old/lib/unicore/HangulSyllableType.txt deleted file mode 100644 index 5c4b1f47116..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/HangulSyllableType.txt +++ /dev/null @@ -1,851 +0,0 @@ -# HangulSyllableType-4.1.0.txt -# Date: 2004-12-11, 05:44:43 GMT [MD] -# -# Unicode Character Database -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# For documentation, see UCD.html - -# ================================================ - -# Property: Hangul_Syllable_Type - -# All code points not explicitly listed for Hangul_Syllable_Type -# have the value Not_Applicable (NA). - -# ================================================ - -# Hangul_Syllable_Type=Leading_Jamo - -1100..1159 ; L # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH -115F ; L # Lo HANGUL CHOSEONG FILLER - -# Total code points: 91 - -# ================================================ - -# Hangul_Syllable_Type=Vowel_Jamo - -1160..11A2 ; V # Lo [67] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA - -# Total code points: 67 - -# ================================================ - -# Hangul_Syllable_Type=Trailing_Jamo - -11A8..11F9 ; T # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH - -# Total code points: 82 - -# ================================================ - -# Hangul_Syllable_Type=LV_Syllable - -AC00 ; LV # Lo HANGUL SYLLABLE GA -AC1C ; LV # Lo HANGUL SYLLABLE GAE -AC38 ; LV # Lo HANGUL SYLLABLE GYA -AC54 ; LV # Lo HANGUL SYLLABLE GYAE -AC70 ; LV # Lo HANGUL SYLLABLE GEO -AC8C ; LV # Lo HANGUL SYLLABLE GE -ACA8 ; LV # Lo HANGUL SYLLABLE GYEO -ACC4 ; LV # Lo HANGUL SYLLABLE GYE -ACE0 ; LV # Lo HANGUL SYLLABLE GO -ACFC ; LV # Lo HANGUL SYLLABLE GWA -AD18 ; LV # Lo HANGUL SYLLABLE GWAE -AD34 ; LV # Lo HANGUL SYLLABLE GOE -AD50 ; LV # Lo HANGUL SYLLABLE GYO -AD6C ; LV # Lo HANGUL SYLLABLE GU -AD88 ; LV # Lo HANGUL SYLLABLE GWEO -ADA4 ; LV # Lo HANGUL SYLLABLE GWE -ADC0 ; LV # Lo HANGUL SYLLABLE GWI -ADDC ; LV # Lo HANGUL SYLLABLE GYU -ADF8 ; LV # Lo HANGUL SYLLABLE GEU -AE14 ; LV # Lo HANGUL SYLLABLE GYI -AE30 ; LV # Lo HANGUL SYLLABLE GI -AE4C ; LV # Lo HANGUL SYLLABLE GGA -AE68 ; LV # Lo HANGUL SYLLABLE GGAE -AE84 ; LV # Lo HANGUL SYLLABLE GGYA -AEA0 ; LV # Lo HANGUL SYLLABLE GGYAE -AEBC ; LV # Lo HANGUL SYLLABLE GGEO -AED8 ; LV # Lo HANGUL SYLLABLE GGE -AEF4 ; LV # Lo HANGUL SYLLABLE GGYEO -AF10 ; LV # Lo HANGUL SYLLABLE GGYE -AF2C ; LV # Lo HANGUL SYLLABLE GGO -AF48 ; LV # Lo HANGUL SYLLABLE GGWA -AF64 ; LV # Lo HANGUL SYLLABLE GGWAE -AF80 ; LV # Lo HANGUL SYLLABLE GGOE -AF9C ; LV # Lo HANGUL SYLLABLE GGYO -AFB8 ; LV # Lo HANGUL SYLLABLE GGU -AFD4 ; LV # Lo HANGUL SYLLABLE GGWEO -AFF0 ; LV # Lo HANGUL SYLLABLE GGWE -B00C ; LV # Lo HANGUL SYLLABLE GGWI -B028 ; LV # Lo HANGUL SYLLABLE GGYU -B044 ; LV # Lo HANGUL SYLLABLE GGEU -B060 ; LV # Lo HANGUL SYLLABLE GGYI -B07C ; LV # Lo HANGUL SYLLABLE GGI -B098 ; LV # Lo HANGUL SYLLABLE NA -B0B4 ; LV # Lo HANGUL SYLLABLE NAE -B0D0 ; LV # Lo HANGUL SYLLABLE NYA -B0EC ; LV # Lo HANGUL SYLLABLE NYAE -B108 ; LV # Lo HANGUL SYLLABLE NEO -B124 ; LV # Lo HANGUL SYLLABLE NE -B140 ; LV # Lo HANGUL SYLLABLE NYEO -B15C ; LV # Lo HANGUL SYLLABLE NYE -B178 ; LV # Lo HANGUL SYLLABLE NO -B194 ; LV # Lo HANGUL SYLLABLE NWA -B1B0 ; LV # Lo HANGUL SYLLABLE NWAE -B1CC ; LV # Lo HANGUL SYLLABLE NOE -B1E8 ; LV # Lo HANGUL SYLLABLE NYO -B204 ; LV # Lo HANGUL SYLLABLE NU -B220 ; LV # Lo HANGUL SYLLABLE NWEO -B23C ; LV # Lo HANGUL SYLLABLE NWE -B258 ; LV # Lo HANGUL SYLLABLE NWI -B274 ; LV # Lo HANGUL SYLLABLE NYU -B290 ; LV # Lo HANGUL SYLLABLE NEU -B2AC ; LV # Lo HANGUL SYLLABLE NYI -B2C8 ; LV # Lo HANGUL SYLLABLE NI -B2E4 ; LV # Lo HANGUL SYLLABLE DA -B300 ; LV # Lo HANGUL SYLLABLE DAE -B31C ; LV # Lo HANGUL SYLLABLE DYA -B338 ; LV # Lo HANGUL SYLLABLE DYAE -B354 ; LV # Lo HANGUL SYLLABLE DEO -B370 ; LV # Lo HANGUL SYLLABLE DE -B38C ; LV # Lo HANGUL SYLLABLE DYEO -B3A8 ; LV # Lo HANGUL SYLLABLE DYE -B3C4 ; LV # Lo HANGUL SYLLABLE DO -B3E0 ; LV # Lo HANGUL SYLLABLE DWA -B3FC ; LV # Lo HANGUL SYLLABLE DWAE -B418 ; LV # Lo HANGUL SYLLABLE DOE -B434 ; LV # Lo HANGUL SYLLABLE DYO -B450 ; LV # Lo HANGUL SYLLABLE DU -B46C ; LV # Lo HANGUL SYLLABLE DWEO -B488 ; LV # Lo HANGUL SYLLABLE DWE -B4A4 ; LV # Lo HANGUL SYLLABLE DWI -B4C0 ; LV # Lo HANGUL SYLLABLE DYU -B4DC ; LV # Lo HANGUL SYLLABLE DEU -B4F8 ; LV # Lo HANGUL SYLLABLE DYI -B514 ; LV # Lo HANGUL SYLLABLE DI -B530 ; LV # Lo HANGUL SYLLABLE DDA -B54C ; LV # Lo HANGUL SYLLABLE DDAE -B568 ; LV # Lo HANGUL SYLLABLE DDYA -B584 ; LV # Lo HANGUL SYLLABLE DDYAE -B5A0 ; LV # Lo HANGUL SYLLABLE DDEO -B5BC ; LV # Lo HANGUL SYLLABLE DDE -B5D8 ; LV # Lo HANGUL SYLLABLE DDYEO -B5F4 ; LV # Lo HANGUL SYLLABLE DDYE -B610 ; LV # Lo HANGUL SYLLABLE DDO -B62C ; LV # Lo HANGUL SYLLABLE DDWA -B648 ; LV # Lo HANGUL SYLLABLE DDWAE -B664 ; LV # Lo HANGUL SYLLABLE DDOE -B680 ; LV # Lo HANGUL SYLLABLE DDYO -B69C ; LV # Lo HANGUL SYLLABLE DDU -B6B8 ; LV # Lo HANGUL SYLLABLE DDWEO -B6D4 ; LV # Lo HANGUL SYLLABLE DDWE -B6F0 ; LV # Lo HANGUL SYLLABLE DDWI -B70C ; LV # Lo HANGUL SYLLABLE DDYU -B728 ; LV # Lo HANGUL SYLLABLE DDEU -B744 ; LV # Lo HANGUL SYLLABLE DDYI -B760 ; LV # Lo HANGUL SYLLABLE DDI -B77C ; LV # Lo HANGUL SYLLABLE RA -B798 ; LV # Lo HANGUL SYLLABLE RAE -B7B4 ; LV # Lo HANGUL SYLLABLE RYA -B7D0 ; LV # Lo HANGUL SYLLABLE RYAE -B7EC ; LV # Lo HANGUL SYLLABLE REO -B808 ; LV # Lo HANGUL SYLLABLE RE -B824 ; LV # Lo HANGUL SYLLABLE RYEO -B840 ; LV # Lo HANGUL SYLLABLE RYE -B85C ; LV # Lo HANGUL SYLLABLE RO -B878 ; LV # Lo HANGUL SYLLABLE RWA -B894 ; LV # Lo HANGUL SYLLABLE RWAE -B8B0 ; LV # Lo HANGUL SYLLABLE ROE -B8CC ; LV # Lo HANGUL SYLLABLE RYO -B8E8 ; LV # Lo HANGUL SYLLABLE RU -B904 ; LV # Lo HANGUL SYLLABLE RWEO -B920 ; LV # Lo HANGUL SYLLABLE RWE -B93C ; LV # Lo HANGUL SYLLABLE RWI -B958 ; LV # Lo HANGUL SYLLABLE RYU -B974 ; LV # Lo HANGUL SYLLABLE REU -B990 ; LV # Lo HANGUL SYLLABLE RYI -B9AC ; LV # Lo HANGUL SYLLABLE RI -B9C8 ; LV # Lo HANGUL SYLLABLE MA -B9E4 ; LV # Lo HANGUL SYLLABLE MAE -BA00 ; LV # Lo HANGUL SYLLABLE MYA -BA1C ; LV # Lo HANGUL SYLLABLE MYAE -BA38 ; LV # Lo HANGUL SYLLABLE MEO -BA54 ; LV # Lo HANGUL SYLLABLE ME -BA70 ; LV # Lo HANGUL SYLLABLE MYEO -BA8C ; LV # Lo HANGUL SYLLABLE MYE -BAA8 ; LV # Lo HANGUL SYLLABLE MO -BAC4 ; LV # Lo HANGUL SYLLABLE MWA -BAE0 ; LV # Lo HANGUL SYLLABLE MWAE -BAFC ; LV # Lo HANGUL SYLLABLE MOE -BB18 ; LV # Lo HANGUL SYLLABLE MYO -BB34 ; LV # Lo HANGUL SYLLABLE MU -BB50 ; LV # Lo HANGUL SYLLABLE MWEO -BB6C ; LV # Lo HANGUL SYLLABLE MWE -BB88 ; LV # Lo HANGUL SYLLABLE MWI -BBA4 ; LV # Lo HANGUL SYLLABLE MYU -BBC0 ; LV # Lo HANGUL SYLLABLE MEU -BBDC ; LV # Lo HANGUL SYLLABLE MYI -BBF8 ; LV # Lo HANGUL SYLLABLE MI -BC14 ; LV # Lo HANGUL SYLLABLE BA -BC30 ; LV # Lo HANGUL SYLLABLE BAE -BC4C ; LV # Lo HANGUL SYLLABLE BYA -BC68 ; LV # Lo HANGUL SYLLABLE BYAE -BC84 ; LV # Lo HANGUL SYLLABLE BEO -BCA0 ; LV # Lo HANGUL SYLLABLE BE -BCBC ; LV # Lo HANGUL SYLLABLE BYEO -BCD8 ; LV # Lo HANGUL SYLLABLE BYE -BCF4 ; LV # Lo HANGUL SYLLABLE BO -BD10 ; LV # Lo HANGUL SYLLABLE BWA -BD2C ; LV # Lo HANGUL SYLLABLE BWAE -BD48 ; LV # Lo HANGUL SYLLABLE BOE -BD64 ; LV # Lo HANGUL SYLLABLE BYO -BD80 ; LV # Lo HANGUL SYLLABLE BU -BD9C ; LV # Lo HANGUL SYLLABLE BWEO -BDB8 ; LV # Lo HANGUL SYLLABLE BWE -BDD4 ; LV # Lo HANGUL SYLLABLE BWI -BDF0 ; LV # Lo HANGUL SYLLABLE BYU -BE0C ; LV # Lo HANGUL SYLLABLE BEU -BE28 ; LV # Lo HANGUL SYLLABLE BYI -BE44 ; LV # Lo HANGUL SYLLABLE BI -BE60 ; LV # Lo HANGUL SYLLABLE BBA -BE7C ; LV # Lo HANGUL SYLLABLE BBAE -BE98 ; LV # Lo HANGUL SYLLABLE BBYA -BEB4 ; LV # Lo HANGUL SYLLABLE BBYAE -BED0 ; LV # Lo HANGUL SYLLABLE BBEO -BEEC ; LV # Lo HANGUL SYLLABLE BBE -BF08 ; LV # Lo HANGUL SYLLABLE BBYEO -BF24 ; LV # Lo HANGUL SYLLABLE BBYE -BF40 ; LV # Lo HANGUL SYLLABLE BBO -BF5C ; LV # Lo HANGUL SYLLABLE BBWA -BF78 ; LV # Lo HANGUL SYLLABLE BBWAE -BF94 ; LV # Lo HANGUL SYLLABLE BBOE -BFB0 ; LV # Lo HANGUL SYLLABLE BBYO -BFCC ; LV # Lo HANGUL SYLLABLE BBU -BFE8 ; LV # Lo HANGUL SYLLABLE BBWEO -C004 ; LV # Lo HANGUL SYLLABLE BBWE -C020 ; LV # Lo HANGUL SYLLABLE BBWI -C03C ; LV # Lo HANGUL SYLLABLE BBYU -C058 ; LV # Lo HANGUL SYLLABLE BBEU -C074 ; LV # Lo HANGUL SYLLABLE BBYI -C090 ; LV # Lo HANGUL SYLLABLE BBI -C0AC ; LV # Lo HANGUL SYLLABLE SA -C0C8 ; LV # Lo HANGUL SYLLABLE SAE -C0E4 ; LV # Lo HANGUL SYLLABLE SYA -C100 ; LV # Lo HANGUL SYLLABLE SYAE -C11C ; LV # Lo HANGUL SYLLABLE SEO -C138 ; LV # Lo HANGUL SYLLABLE SE -C154 ; LV # Lo HANGUL SYLLABLE SYEO -C170 ; LV # Lo HANGUL SYLLABLE SYE -C18C ; LV # Lo HANGUL SYLLABLE SO -C1A8 ; LV # Lo HANGUL SYLLABLE SWA -C1C4 ; LV # Lo HANGUL SYLLABLE SWAE -C1E0 ; LV # Lo HANGUL SYLLABLE SOE -C1FC ; LV # Lo HANGUL SYLLABLE SYO -C218 ; LV # Lo HANGUL SYLLABLE SU -C234 ; LV # Lo HANGUL SYLLABLE SWEO -C250 ; LV # Lo HANGUL SYLLABLE SWE -C26C ; LV # Lo HANGUL SYLLABLE SWI -C288 ; LV # Lo HANGUL SYLLABLE SYU -C2A4 ; LV # Lo HANGUL SYLLABLE SEU -C2C0 ; LV # Lo HANGUL SYLLABLE SYI -C2DC ; LV # Lo HANGUL SYLLABLE SI -C2F8 ; LV # Lo HANGUL SYLLABLE SSA -C314 ; LV # Lo HANGUL SYLLABLE SSAE -C330 ; LV # Lo HANGUL SYLLABLE SSYA -C34C ; LV # Lo HANGUL SYLLABLE SSYAE -C368 ; LV # Lo HANGUL SYLLABLE SSEO -C384 ; LV # Lo HANGUL SYLLABLE SSE -C3A0 ; LV # Lo HANGUL SYLLABLE SSYEO -C3BC ; LV # Lo HANGUL SYLLABLE SSYE -C3D8 ; LV # Lo HANGUL SYLLABLE SSO -C3F4 ; LV # Lo HANGUL SYLLABLE SSWA -C410 ; LV # Lo HANGUL SYLLABLE SSWAE -C42C ; LV # Lo HANGUL SYLLABLE SSOE -C448 ; LV # Lo HANGUL SYLLABLE SSYO -C464 ; LV # Lo HANGUL SYLLABLE SSU -C480 ; LV # Lo HANGUL SYLLABLE SSWEO -C49C ; LV # Lo HANGUL SYLLABLE SSWE -C4B8 ; LV # Lo HANGUL SYLLABLE SSWI -C4D4 ; LV # Lo HANGUL SYLLABLE SSYU -C4F0 ; LV # Lo HANGUL SYLLABLE SSEU -C50C ; LV # Lo HANGUL SYLLABLE SSYI -C528 ; LV # Lo HANGUL SYLLABLE SSI -C544 ; LV # Lo HANGUL SYLLABLE A -C560 ; LV # Lo HANGUL SYLLABLE AE -C57C ; LV # Lo HANGUL SYLLABLE YA -C598 ; LV # Lo HANGUL SYLLABLE YAE -C5B4 ; LV # Lo HANGUL SYLLABLE EO -C5D0 ; LV # Lo HANGUL SYLLABLE E -C5EC ; LV # Lo HANGUL SYLLABLE YEO -C608 ; LV # Lo HANGUL SYLLABLE YE -C624 ; LV # Lo HANGUL SYLLABLE O -C640 ; LV # Lo HANGUL SYLLABLE WA -C65C ; LV # Lo HANGUL SYLLABLE WAE -C678 ; LV # Lo HANGUL SYLLABLE OE -C694 ; LV # Lo HANGUL SYLLABLE YO -C6B0 ; LV # Lo HANGUL SYLLABLE U -C6CC ; LV # Lo HANGUL SYLLABLE WEO -C6E8 ; LV # Lo HANGUL SYLLABLE WE -C704 ; LV # Lo HANGUL SYLLABLE WI -C720 ; LV # Lo HANGUL SYLLABLE YU -C73C ; LV # Lo HANGUL SYLLABLE EU -C758 ; LV # Lo HANGUL SYLLABLE YI -C774 ; LV # Lo HANGUL SYLLABLE I -C790 ; LV # Lo HANGUL SYLLABLE JA -C7AC ; LV # Lo HANGUL SYLLABLE JAE -C7C8 ; LV # Lo HANGUL SYLLABLE JYA -C7E4 ; LV # Lo HANGUL SYLLABLE JYAE -C800 ; LV # Lo HANGUL SYLLABLE JEO -C81C ; LV # Lo HANGUL SYLLABLE JE -C838 ; LV # Lo HANGUL SYLLABLE JYEO -C854 ; LV # Lo HANGUL SYLLABLE JYE -C870 ; LV # Lo HANGUL SYLLABLE JO -C88C ; LV # Lo HANGUL SYLLABLE JWA -C8A8 ; LV # Lo HANGUL SYLLABLE JWAE -C8C4 ; LV # Lo HANGUL SYLLABLE JOE -C8E0 ; LV # Lo HANGUL SYLLABLE JYO -C8FC ; LV # Lo HANGUL SYLLABLE JU -C918 ; LV # Lo HANGUL SYLLABLE JWEO -C934 ; LV # Lo HANGUL SYLLABLE JWE -C950 ; LV # Lo HANGUL SYLLABLE JWI -C96C ; LV # Lo HANGUL SYLLABLE JYU -C988 ; LV # Lo HANGUL SYLLABLE JEU -C9A4 ; LV # Lo HANGUL SYLLABLE JYI -C9C0 ; LV # Lo HANGUL SYLLABLE JI -C9DC ; LV # Lo HANGUL SYLLABLE JJA -C9F8 ; LV # Lo HANGUL SYLLABLE JJAE -CA14 ; LV # Lo HANGUL SYLLABLE JJYA -CA30 ; LV # Lo HANGUL SYLLABLE JJYAE -CA4C ; LV # Lo HANGUL SYLLABLE JJEO -CA68 ; LV # Lo HANGUL SYLLABLE JJE -CA84 ; LV # Lo HANGUL SYLLABLE JJYEO -CAA0 ; LV # Lo HANGUL SYLLABLE JJYE -CABC ; LV # Lo HANGUL SYLLABLE JJO -CAD8 ; LV # Lo HANGUL SYLLABLE JJWA -CAF4 ; LV # Lo HANGUL SYLLABLE JJWAE -CB10 ; LV # Lo HANGUL SYLLABLE JJOE -CB2C ; LV # Lo HANGUL SYLLABLE JJYO -CB48 ; LV # Lo HANGUL SYLLABLE JJU -CB64 ; LV # Lo HANGUL SYLLABLE JJWEO -CB80 ; LV # Lo HANGUL SYLLABLE JJWE -CB9C ; LV # Lo HANGUL SYLLABLE JJWI -CBB8 ; LV # Lo HANGUL SYLLABLE JJYU -CBD4 ; LV # Lo HANGUL SYLLABLE JJEU -CBF0 ; LV # Lo HANGUL SYLLABLE JJYI -CC0C ; LV # Lo HANGUL SYLLABLE JJI -CC28 ; LV # Lo HANGUL SYLLABLE CA -CC44 ; LV # Lo HANGUL SYLLABLE CAE -CC60 ; LV # Lo HANGUL SYLLABLE CYA -CC7C ; LV # Lo HANGUL SYLLABLE CYAE -CC98 ; LV # Lo HANGUL SYLLABLE CEO -CCB4 ; LV # Lo HANGUL SYLLABLE CE -CCD0 ; LV # Lo HANGUL SYLLABLE CYEO -CCEC ; LV # Lo HANGUL SYLLABLE CYE -CD08 ; LV # Lo HANGUL SYLLABLE CO -CD24 ; LV # Lo HANGUL SYLLABLE CWA -CD40 ; LV # Lo HANGUL SYLLABLE CWAE -CD5C ; LV # Lo HANGUL SYLLABLE COE -CD78 ; LV # Lo HANGUL SYLLABLE CYO -CD94 ; LV # Lo HANGUL SYLLABLE CU -CDB0 ; LV # Lo HANGUL SYLLABLE CWEO -CDCC ; LV # Lo HANGUL SYLLABLE CWE -CDE8 ; LV # Lo HANGUL SYLLABLE CWI -CE04 ; LV # Lo HANGUL SYLLABLE CYU -CE20 ; LV # Lo HANGUL SYLLABLE CEU -CE3C ; LV # Lo HANGUL SYLLABLE CYI -CE58 ; LV # Lo HANGUL SYLLABLE CI -CE74 ; LV # Lo HANGUL SYLLABLE KA -CE90 ; LV # Lo HANGUL SYLLABLE KAE -CEAC ; LV # Lo HANGUL SYLLABLE KYA -CEC8 ; LV # Lo HANGUL SYLLABLE KYAE -CEE4 ; LV # Lo HANGUL SYLLABLE KEO -CF00 ; LV # Lo HANGUL SYLLABLE KE -CF1C ; LV # Lo HANGUL SYLLABLE KYEO -CF38 ; LV # Lo HANGUL SYLLABLE KYE -CF54 ; LV # Lo HANGUL SYLLABLE KO -CF70 ; LV # Lo HANGUL SYLLABLE KWA -CF8C ; LV # Lo HANGUL SYLLABLE KWAE -CFA8 ; LV # Lo HANGUL SYLLABLE KOE -CFC4 ; LV # Lo HANGUL SYLLABLE KYO -CFE0 ; LV # Lo HANGUL SYLLABLE KU -CFFC ; LV # Lo HANGUL SYLLABLE KWEO -D018 ; LV # Lo HANGUL SYLLABLE KWE -D034 ; LV # Lo HANGUL SYLLABLE KWI -D050 ; LV # Lo HANGUL SYLLABLE KYU -D06C ; LV # Lo HANGUL SYLLABLE KEU -D088 ; LV # Lo HANGUL SYLLABLE KYI -D0A4 ; LV # Lo HANGUL SYLLABLE KI -D0C0 ; LV # Lo HANGUL SYLLABLE TA -D0DC ; LV # Lo HANGUL SYLLABLE TAE -D0F8 ; LV # Lo HANGUL SYLLABLE TYA -D114 ; LV # Lo HANGUL SYLLABLE TYAE -D130 ; LV # Lo HANGUL SYLLABLE TEO -D14C ; LV # Lo HANGUL SYLLABLE TE -D168 ; LV # Lo HANGUL SYLLABLE TYEO -D184 ; LV # Lo HANGUL SYLLABLE TYE -D1A0 ; LV # Lo HANGUL SYLLABLE TO -D1BC ; LV # Lo HANGUL SYLLABLE TWA -D1D8 ; LV # Lo HANGUL SYLLABLE TWAE -D1F4 ; LV # Lo HANGUL SYLLABLE TOE -D210 ; LV # Lo HANGUL SYLLABLE TYO -D22C ; LV # Lo HANGUL SYLLABLE TU -D248 ; LV # Lo HANGUL SYLLABLE TWEO -D264 ; LV # Lo HANGUL SYLLABLE TWE -D280 ; LV # Lo HANGUL SYLLABLE TWI -D29C ; LV # Lo HANGUL SYLLABLE TYU -D2B8 ; LV # Lo HANGUL SYLLABLE TEU -D2D4 ; LV # Lo HANGUL SYLLABLE TYI -D2F0 ; LV # Lo HANGUL SYLLABLE TI -D30C ; LV # Lo HANGUL SYLLABLE PA -D328 ; LV # Lo HANGUL SYLLABLE PAE -D344 ; LV # Lo HANGUL SYLLABLE PYA -D360 ; LV # Lo HANGUL SYLLABLE PYAE -D37C ; LV # Lo HANGUL SYLLABLE PEO -D398 ; LV # Lo HANGUL SYLLABLE PE -D3B4 ; LV # Lo HANGUL SYLLABLE PYEO -D3D0 ; LV # Lo HANGUL SYLLABLE PYE -D3EC ; LV # Lo HANGUL SYLLABLE PO -D408 ; LV # Lo HANGUL SYLLABLE PWA -D424 ; LV # Lo HANGUL SYLLABLE PWAE -D440 ; LV # Lo HANGUL SYLLABLE POE -D45C ; LV # Lo HANGUL SYLLABLE PYO -D478 ; LV # Lo HANGUL SYLLABLE PU -D494 ; LV # Lo HANGUL SYLLABLE PWEO -D4B0 ; LV # Lo HANGUL SYLLABLE PWE -D4CC ; LV # Lo HANGUL SYLLABLE PWI -D4E8 ; LV # Lo HANGUL SYLLABLE PYU -D504 ; LV # Lo HANGUL SYLLABLE PEU -D520 ; LV # Lo HANGUL SYLLABLE PYI -D53C ; LV # Lo HANGUL SYLLABLE PI -D558 ; LV # Lo HANGUL SYLLABLE HA -D574 ; LV # Lo HANGUL SYLLABLE HAE -D590 ; LV # Lo HANGUL SYLLABLE HYA -D5AC ; LV # Lo HANGUL SYLLABLE HYAE -D5C8 ; LV # Lo HANGUL SYLLABLE HEO -D5E4 ; LV # Lo HANGUL SYLLABLE HE -D600 ; LV # Lo HANGUL SYLLABLE HYEO -D61C ; LV # Lo HANGUL SYLLABLE HYE -D638 ; LV # Lo HANGUL SYLLABLE HO -D654 ; LV # Lo HANGUL SYLLABLE HWA -D670 ; LV # Lo HANGUL SYLLABLE HWAE -D68C ; LV # Lo HANGUL SYLLABLE HOE -D6A8 ; LV # Lo HANGUL SYLLABLE HYO -D6C4 ; LV # Lo HANGUL SYLLABLE HU -D6E0 ; LV # Lo HANGUL SYLLABLE HWEO -D6FC ; LV # Lo HANGUL SYLLABLE HWE -D718 ; LV # Lo HANGUL SYLLABLE HWI -D734 ; LV # Lo HANGUL SYLLABLE HYU -D750 ; LV # Lo HANGUL SYLLABLE HEU -D76C ; LV # Lo HANGUL SYLLABLE HYI -D788 ; LV # Lo HANGUL SYLLABLE HI - -# Total code points: 399 - -# ================================================ - -# Hangul_Syllable_Type=LVT_Syllable - -AC01..AC1B ; LVT # Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH -AC1D..AC37 ; LVT # Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH -AC39..AC53 ; LVT # Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH -AC55..AC6F ; LVT # Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH -AC71..AC8B ; LVT # Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH -AC8D..ACA7 ; LVT # Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH -ACA9..ACC3 ; LVT # Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH -ACC5..ACDF ; LVT # Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH -ACE1..ACFB ; LVT # Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH -ACFD..AD17 ; LVT # Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH -AD19..AD33 ; LVT # Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH -AD35..AD4F ; LVT # Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH -AD51..AD6B ; LVT # Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH -AD6D..AD87 ; LVT # Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH -AD89..ADA3 ; LVT # Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH -ADA5..ADBF ; LVT # Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH -ADC1..ADDB ; LVT # Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH -ADDD..ADF7 ; LVT # Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH -ADF9..AE13 ; LVT # Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH -AE15..AE2F ; LVT # Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH -AE31..AE4B ; LVT # Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH -AE4D..AE67 ; LVT # Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH -AE69..AE83 ; LVT # Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH -AE85..AE9F ; LVT # Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH -AEA1..AEBB ; LVT # Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH -AEBD..AED7 ; LVT # Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH -AED9..AEF3 ; LVT # Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH -AEF5..AF0F ; LVT # Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH -AF11..AF2B ; LVT # Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH -AF2D..AF47 ; LVT # Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH -AF49..AF63 ; LVT # Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH -AF65..AF7F ; LVT # Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH -AF81..AF9B ; LVT # Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH -AF9D..AFB7 ; LVT # Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH -AFB9..AFD3 ; LVT # Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH -AFD5..AFEF ; LVT # Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH -AFF1..B00B ; LVT # Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH -B00D..B027 ; LVT # Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH -B029..B043 ; LVT # Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH -B045..B05F ; LVT # Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH -B061..B07B ; LVT # Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH -B07D..B097 ; LVT # Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH -B099..B0B3 ; LVT # Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH -B0B5..B0CF ; LVT # Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH -B0D1..B0EB ; LVT # Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH -B0ED..B107 ; LVT # Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH -B109..B123 ; LVT # Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH -B125..B13F ; LVT # Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH -B141..B15B ; LVT # Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH -B15D..B177 ; LVT # Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH -B179..B193 ; LVT # Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH -B195..B1AF ; LVT # Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH -B1B1..B1CB ; LVT # Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH -B1CD..B1E7 ; LVT # Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH -B1E9..B203 ; LVT # Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH -B205..B21F ; LVT # Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH -B221..B23B ; LVT # Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH -B23D..B257 ; LVT # Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH -B259..B273 ; LVT # Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH -B275..B28F ; LVT # Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH -B291..B2AB ; LVT # Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH -B2AD..B2C7 ; LVT # Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH -B2C9..B2E3 ; LVT # Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH -B2E5..B2FF ; LVT # Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH -B301..B31B ; LVT # Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH -B31D..B337 ; LVT # Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH -B339..B353 ; LVT # Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH -B355..B36F ; LVT # Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH -B371..B38B ; LVT # Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH -B38D..B3A7 ; LVT # Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH -B3A9..B3C3 ; LVT # Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH -B3C5..B3DF ; LVT # Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH -B3E1..B3FB ; LVT # Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH -B3FD..B417 ; LVT # Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH -B419..B433 ; LVT # Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH -B435..B44F ; LVT # Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH -B451..B46B ; LVT # Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH -B46D..B487 ; LVT # Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH -B489..B4A3 ; LVT # Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH -B4A5..B4BF ; LVT # Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH -B4C1..B4DB ; LVT # Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH -B4DD..B4F7 ; LVT # Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH -B4F9..B513 ; LVT # Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH -B515..B52F ; LVT # Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH -B531..B54B ; LVT # Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH -B54D..B567 ; LVT # Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH -B569..B583 ; LVT # Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH -B585..B59F ; LVT # Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH -B5A1..B5BB ; LVT # Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH -B5BD..B5D7 ; LVT # Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH -B5D9..B5F3 ; LVT # Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH -B5F5..B60F ; LVT # Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH -B611..B62B ; LVT # Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH -B62D..B647 ; LVT # Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH -B649..B663 ; LVT # Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH -B665..B67F ; LVT # Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH -B681..B69B ; LVT # Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH -B69D..B6B7 ; LVT # Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH -B6B9..B6D3 ; LVT # Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH -B6D5..B6EF ; LVT # Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH -B6F1..B70B ; LVT # Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH -B70D..B727 ; LVT # Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH -B729..B743 ; LVT # Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH -B745..B75F ; LVT # Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH -B761..B77B ; LVT # Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH -B77D..B797 ; LVT # Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH -B799..B7B3 ; LVT # Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH -B7B5..B7CF ; LVT # Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH -B7D1..B7EB ; LVT # Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH -B7ED..B807 ; LVT # Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH -B809..B823 ; LVT # Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH -B825..B83F ; LVT # Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH -B841..B85B ; LVT # Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH -B85D..B877 ; LVT # Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH -B879..B893 ; LVT # Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH -B895..B8AF ; LVT # Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH -B8B1..B8CB ; LVT # Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH -B8CD..B8E7 ; LVT # Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH -B8E9..B903 ; LVT # Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH -B905..B91F ; LVT # Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH -B921..B93B ; LVT # Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH -B93D..B957 ; LVT # Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH -B959..B973 ; LVT # Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH -B975..B98F ; LVT # Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH -B991..B9AB ; LVT # Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH -B9AD..B9C7 ; LVT # Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH -B9C9..B9E3 ; LVT # Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH -B9E5..B9FF ; LVT # Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH -BA01..BA1B ; LVT # Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH -BA1D..BA37 ; LVT # Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH -BA39..BA53 ; LVT # Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH -BA55..BA6F ; LVT # Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH -BA71..BA8B ; LVT # Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH -BA8D..BAA7 ; LVT # Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH -BAA9..BAC3 ; LVT # Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH -BAC5..BADF ; LVT # Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH -BAE1..BAFB ; LVT # Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH -BAFD..BB17 ; LVT # Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH -BB19..BB33 ; LVT # Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH -BB35..BB4F ; LVT # Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH -BB51..BB6B ; LVT # Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH -BB6D..BB87 ; LVT # Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH -BB89..BBA3 ; LVT # Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH -BBA5..BBBF ; LVT # Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH -BBC1..BBDB ; LVT # Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH -BBDD..BBF7 ; LVT # Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH -BBF9..BC13 ; LVT # Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH -BC15..BC2F ; LVT # Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH -BC31..BC4B ; LVT # Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH -BC4D..BC67 ; LVT # Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH -BC69..BC83 ; LVT # Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH -BC85..BC9F ; LVT # Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH -BCA1..BCBB ; LVT # Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH -BCBD..BCD7 ; LVT # Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH -BCD9..BCF3 ; LVT # Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH -BCF5..BD0F ; LVT # Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH -BD11..BD2B ; LVT # Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH -BD2D..BD47 ; LVT # Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH -BD49..BD63 ; LVT # Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH -BD65..BD7F ; LVT # Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH -BD81..BD9B ; LVT # Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH -BD9D..BDB7 ; LVT # Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH -BDB9..BDD3 ; LVT # Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH -BDD5..BDEF ; LVT # Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH -BDF1..BE0B ; LVT # Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH -BE0D..BE27 ; LVT # Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH -BE29..BE43 ; LVT # Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH -BE45..BE5F ; LVT # Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH -BE61..BE7B ; LVT # Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH -BE7D..BE97 ; LVT # Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH -BE99..BEB3 ; LVT # Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH -BEB5..BECF ; LVT # Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH -BED1..BEEB ; LVT # Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH -BEED..BF07 ; LVT # Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH -BF09..BF23 ; LVT # Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH -BF25..BF3F ; LVT # Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH -BF41..BF5B ; LVT # Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH -BF5D..BF77 ; LVT # Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH -BF79..BF93 ; LVT # Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH -BF95..BFAF ; LVT # Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH -BFB1..BFCB ; LVT # Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH -BFCD..BFE7 ; LVT # Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH -BFE9..C003 ; LVT # Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH -C005..C01F ; LVT # Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH -C021..C03B ; LVT # Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH -C03D..C057 ; LVT # Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH -C059..C073 ; LVT # Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH -C075..C08F ; LVT # Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH -C091..C0AB ; LVT # Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH -C0AD..C0C7 ; LVT # Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH -C0C9..C0E3 ; LVT # Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH -C0E5..C0FF ; LVT # Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH -C101..C11B ; LVT # Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH -C11D..C137 ; LVT # Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH -C139..C153 ; LVT # Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH -C155..C16F ; LVT # Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH -C171..C18B ; LVT # Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH -C18D..C1A7 ; LVT # Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH -C1A9..C1C3 ; LVT # Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH -C1C5..C1DF ; LVT # Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH -C1E1..C1FB ; LVT # Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH -C1FD..C217 ; LVT # Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH -C219..C233 ; LVT # Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH -C235..C24F ; LVT # Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH -C251..C26B ; LVT # Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH -C26D..C287 ; LVT # Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH -C289..C2A3 ; LVT # Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH -C2A5..C2BF ; LVT # Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH -C2C1..C2DB ; LVT # Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH -C2DD..C2F7 ; LVT # Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH -C2F9..C313 ; LVT # Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH -C315..C32F ; LVT # Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH -C331..C34B ; LVT # Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH -C34D..C367 ; LVT # Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH -C369..C383 ; LVT # Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH -C385..C39F ; LVT # Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH -C3A1..C3BB ; LVT # Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH -C3BD..C3D7 ; LVT # Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH -C3D9..C3F3 ; LVT # Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH -C3F5..C40F ; LVT # Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH -C411..C42B ; LVT # Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH -C42D..C447 ; LVT # Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH -C449..C463 ; LVT # Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH -C465..C47F ; LVT # Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH -C481..C49B ; LVT # Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH -C49D..C4B7 ; LVT # Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH -C4B9..C4D3 ; LVT # Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH -C4D5..C4EF ; LVT # Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH -C4F1..C50B ; LVT # Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH -C50D..C527 ; LVT # Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH -C529..C543 ; LVT # Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH -C545..C55F ; LVT # Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH -C561..C57B ; LVT # Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH -C57D..C597 ; LVT # Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH -C599..C5B3 ; LVT # Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH -C5B5..C5CF ; LVT # Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH -C5D1..C5EB ; LVT # Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH -C5ED..C607 ; LVT # Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH -C609..C623 ; LVT # Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH -C625..C63F ; LVT # Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH -C641..C65B ; LVT # Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH -C65D..C677 ; LVT # Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH -C679..C693 ; LVT # Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH -C695..C6AF ; LVT # Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH -C6B1..C6CB ; LVT # Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH -C6CD..C6E7 ; LVT # Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH -C6E9..C703 ; LVT # Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH -C705..C71F ; LVT # Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH -C721..C73B ; LVT # Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH -C73D..C757 ; LVT # Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH -C759..C773 ; LVT # Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH -C775..C78F ; LVT # Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH -C791..C7AB ; LVT # Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH -C7AD..C7C7 ; LVT # Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH -C7C9..C7E3 ; LVT # Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH -C7E5..C7FF ; LVT # Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH -C801..C81B ; LVT # Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH -C81D..C837 ; LVT # Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH -C839..C853 ; LVT # Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH -C855..C86F ; LVT # Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH -C871..C88B ; LVT # Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH -C88D..C8A7 ; LVT # Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH -C8A9..C8C3 ; LVT # Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH -C8C5..C8DF ; LVT # Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH -C8E1..C8FB ; LVT # Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH -C8FD..C917 ; LVT # Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH -C919..C933 ; LVT # Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH -C935..C94F ; LVT # Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH -C951..C96B ; LVT # Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH -C96D..C987 ; LVT # Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH -C989..C9A3 ; LVT # Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH -C9A5..C9BF ; LVT # Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH -C9C1..C9DB ; LVT # Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH -C9DD..C9F7 ; LVT # Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH -C9F9..CA13 ; LVT # Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH -CA15..CA2F ; LVT # Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH -CA31..CA4B ; LVT # Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH -CA4D..CA67 ; LVT # Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH -CA69..CA83 ; LVT # Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH -CA85..CA9F ; LVT # Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH -CAA1..CABB ; LVT # Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH -CABD..CAD7 ; LVT # Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH -CAD9..CAF3 ; LVT # Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH -CAF5..CB0F ; LVT # Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH -CB11..CB2B ; LVT # Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH -CB2D..CB47 ; LVT # Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH -CB49..CB63 ; LVT # Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH -CB65..CB7F ; LVT # Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH -CB81..CB9B ; LVT # Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH -CB9D..CBB7 ; LVT # Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH -CBB9..CBD3 ; LVT # Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH -CBD5..CBEF ; LVT # Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH -CBF1..CC0B ; LVT # Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH -CC0D..CC27 ; LVT # Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH -CC29..CC43 ; LVT # Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH -CC45..CC5F ; LVT # Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH -CC61..CC7B ; LVT # Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH -CC7D..CC97 ; LVT # Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH -CC99..CCB3 ; LVT # Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH -CCB5..CCCF ; LVT # Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH -CCD1..CCEB ; LVT # Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH -CCED..CD07 ; LVT # Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH -CD09..CD23 ; LVT # Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH -CD25..CD3F ; LVT # Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH -CD41..CD5B ; LVT # Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH -CD5D..CD77 ; LVT # Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH -CD79..CD93 ; LVT # Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH -CD95..CDAF ; LVT # Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH -CDB1..CDCB ; LVT # Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH -CDCD..CDE7 ; LVT # Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH -CDE9..CE03 ; LVT # Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH -CE05..CE1F ; LVT # Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH -CE21..CE3B ; LVT # Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH -CE3D..CE57 ; LVT # Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH -CE59..CE73 ; LVT # Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH -CE75..CE8F ; LVT # Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH -CE91..CEAB ; LVT # Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH -CEAD..CEC7 ; LVT # Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH -CEC9..CEE3 ; LVT # Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH -CEE5..CEFF ; LVT # Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH -CF01..CF1B ; LVT # Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH -CF1D..CF37 ; LVT # Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH -CF39..CF53 ; LVT # Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH -CF55..CF6F ; LVT # Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH -CF71..CF8B ; LVT # Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH -CF8D..CFA7 ; LVT # Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH -CFA9..CFC3 ; LVT # Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH -CFC5..CFDF ; LVT # Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH -CFE1..CFFB ; LVT # Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH -CFFD..D017 ; LVT # Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH -D019..D033 ; LVT # Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH -D035..D04F ; LVT # Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH -D051..D06B ; LVT # Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH -D06D..D087 ; LVT # Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH -D089..D0A3 ; LVT # Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH -D0A5..D0BF ; LVT # Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH -D0C1..D0DB ; LVT # Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH -D0DD..D0F7 ; LVT # Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH -D0F9..D113 ; LVT # Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH -D115..D12F ; LVT # Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH -D131..D14B ; LVT # Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH -D14D..D167 ; LVT # Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH -D169..D183 ; LVT # Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH -D185..D19F ; LVT # Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH -D1A1..D1BB ; LVT # Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH -D1BD..D1D7 ; LVT # Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH -D1D9..D1F3 ; LVT # Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH -D1F5..D20F ; LVT # Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH -D211..D22B ; LVT # Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH -D22D..D247 ; LVT # Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH -D249..D263 ; LVT # Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH -D265..D27F ; LVT # Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH -D281..D29B ; LVT # Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH -D29D..D2B7 ; LVT # Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH -D2B9..D2D3 ; LVT # Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH -D2D5..D2EF ; LVT # Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH -D2F1..D30B ; LVT # Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH -D30D..D327 ; LVT # Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH -D329..D343 ; LVT # Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH -D345..D35F ; LVT # Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH -D361..D37B ; LVT # Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH -D37D..D397 ; LVT # Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH -D399..D3B3 ; LVT # Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH -D3B5..D3CF ; LVT # Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH -D3D1..D3EB ; LVT # Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH -D3ED..D407 ; LVT # Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH -D409..D423 ; LVT # Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH -D425..D43F ; LVT # Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH -D441..D45B ; LVT # Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH -D45D..D477 ; LVT # Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH -D479..D493 ; LVT # Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH -D495..D4AF ; LVT # Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH -D4B1..D4CB ; LVT # Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH -D4CD..D4E7 ; LVT # Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH -D4E9..D503 ; LVT # Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH -D505..D51F ; LVT # Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH -D521..D53B ; LVT # Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH -D53D..D557 ; LVT # Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH -D559..D573 ; LVT # Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH -D575..D58F ; LVT # Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH -D591..D5AB ; LVT # Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH -D5AD..D5C7 ; LVT # Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH -D5C9..D5E3 ; LVT # Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH -D5E5..D5FF ; LVT # Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH -D601..D61B ; LVT # Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH -D61D..D637 ; LVT # Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH -D639..D653 ; LVT # Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH -D655..D66F ; LVT # Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH -D671..D68B ; LVT # Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH -D68D..D6A7 ; LVT # Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH -D6A9..D6C3 ; LVT # Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH -D6C5..D6DF ; LVT # Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH -D6E1..D6FB ; LVT # Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH -D6FD..D717 ; LVT # Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH -D719..D733 ; LVT # Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH -D735..D74F ; LVT # Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH -D751..D76B ; LVT # Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH -D76D..D787 ; LVT # Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH -D789..D7A3 ; LVT # Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH - -# Total code points: 10773 diff --git a/Master/tlpkg/tlperl.old/lib/unicore/Index.txt b/Master/tlpkg/tlperl.old/lib/unicore/Index.txt deleted file mode 100644 index c55a1f8bca4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/Index.txt +++ /dev/null @@ -1,4307 +0,0 @@ -8859-1 (Latin-1), Based on ISO 00A0 -8859-2, -3, -4, -9 (European Latin), Based on ISO 0100 -8859-5 (Cyrillic), Based on ISO 0400 -8859-6 (Arabic), Based on ISO 0600 -8859-7 (Greek), Based on ISO 0370 -8859-8 (Hebrew), Based on ISO 05D0 -A, COMBINING LATIN SMALL LETTER 0363 -a, latin small letter script 0251 -A, LATIN SMALL LETTER TURNED 0250 -ABBREVIATION MARK, ARMENIAN 055F -ABBREVIATION MARK, SYRIAC 070F -ABBREVIATION SIGN, DEVANAGARI 0970 -Abbreviations, Squared Latin 3371 -Aboriginal Syllabics, Unified Canadian 1400 -above, cedilla 0312 -ABOVE, COMBINING ALMOST EQUAL TO 034C -ABOVE, COMBINING BRIDGE 0346 -ABOVE, COMBINING CLOCKWISE ARROW 20D5 -ABOVE, COMBINING COMMA 0313 -ABOVE, COMBINING DOT 0307 -ABOVE, COMBINING DOUBLE VERTICAL LINE 030E -ABOVE, COMBINING FOUR DOTS 20DC -ABOVE, COMBINING HOMOTHETIC 034B -ABOVE, COMBINING HOOK 0309 -ABOVE, COMBINING LEFT ANGLE 031A -ABOVE, COMBINING LEFT ARROW 20D6 -ABOVE, COMBINING LEFT HARPOON 20D0 -ABOVE, COMBINING LEFT RIGHT ARROW 20E1 -ABOVE, COMBINING NOT TILDE 034A -ABOVE, COMBINING REVERSED COMMA 0314 -ABOVE, COMBINING RING 030A -ABOVE, COMBINING THREE DOTS 20DB -ABOVE, COMBINING TURNED COMMA 0312 -ABOVE, COMBINING VERTICAL LINE 030D -ABOVE, COMBINING WIDE BRIDGE 20E9 -ABOVE, COMBINING X 033D -ABOVE, DOT 02D9 -above, double dot 0308 -ABOVE, RING 02DA -above, vee 030C -ABOVE RIGHT, COMBINING COMMA 0315 -absolute continuity 2AA1 -ACCENT, ACUTE 00B4 -ACCENT, ALMOST EQUAL TO WITH CIRCUMFLEX 2A6F -ACCENT, CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX 2A36 -ACCENT, CIRCUMFLEX 005E -ACCENT, COMBINING ACUTE 0301 -ACCENT, COMBINING CIRCUMFLEX 0302 -ACCENT, COMBINING DOUBLE ACUTE 030B -ACCENT, COMBINING DOUBLE GRAVE 030F -ACCENT, COMBINING GRAVE 0300 -ACCENT, DOUBLE ACUTE 02DD -ACCENT, GRAVE 0060 -ACCENT, MODIFIER LETTER ACUTE 02CA -ACCENT, MODIFIER LETTER CIRCUMFLEX 02C6 -ACCENT, MODIFIER LETTER CROSS 02DF -ACCENT, MODIFIER LETTER GRAVE 02CB -ACCENT, MODIFIER LETTER LOW ACUTE 02CF -ACCENT, MODIFIER LETTER LOW GRAVE 02CE -accent, swedish grave 02DF -ACCENT ABOVE, PLUS SIGN WITH CIRCUMFLEX 2A23 -ACCENT BELOW, COMBINING ACUTE 0317 -ACCENT BELOW, COMBINING CIRCUMFLEX 032D -ACCENT BELOW, COMBINING GRAVE 0316 -ACCOUNT OF 2100 -acknowledge 0006 -acknowledge, graphic for negative 237B -acknowledge, negative 0015 -ACKNOWLEDGE, SYMBOL FOR 2406 -ACKNOWLEDGE, SYMBOL FOR NEGATIVE 2415 -ACTIVATE ARABIC FORM SHAPING 206D -ACTIVATE SYMMETRIC SWAPPING 206B -actuarial bend 20E7 -acute, spacing 00B4 -ACUTE ACCENT 00B4 -ACUTE ACCENT, COMBINING 0301 -ACUTE ACCENT, COMBINING DOUBLE 030B -ACUTE ACCENT, DEVANAGARI 0954 -ACUTE ACCENT, DOUBLE 02DD -ACUTE ACCENT, MODIFIER LETTER 02CA -ACUTE ACCENT, MODIFIER LETTER LOW 02CF -ACUTE ACCENT BELOW, COMBINING 0317 -ACUTE ANGLE 299F -ACUTE TONE MARK, COMBINING 0341 -ADDRESSED TO THE SUBJECT 2101 -Addu dialect, consonant for 0780 -AE, LATIN SMALL LETTER 00E6 -Aegean Numbers 10100 -AEGEAN CHECK MARK 10102 -AEGEAN WORD SEPARATOR DOT 10101 -AEGEAN WORD SEPARATOR LINE 10100 -Ainu, Phonetic Extensions For 31F0 -AIRPLANE 2708 -aldus leaf 2766 -ALEF SYMBOL 2135 -ALL, FOR 2200 -ALL AROUND-PROFILE 232E -ALL EQUAL TO 224C -ALMOST EQUAL TO 2248 -ALMOST EQUAL TO, PRECEDES ABOVE 2AB7 -ALMOST EQUAL TO, PRECEDES ABOVE NOT 2AB9 -ALMOST EQUAL TO, SUBSET OF ABOVE 2AC9 -ALMOST EQUAL TO, SUCCEEDS ABOVE 2AB8 -ALMOST EQUAL TO, SUCCEEDS ABOVE NOT 2ABA -ALMOST EQUAL TO, SUPERSET OF ABOVE 2ACA -ALMOST EQUAL TO ABOVE, COMBINING 034C -ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT 2A6F -ALPHA, LATIN SMALL LETTER 0251 -ALPHA, LATIN SMALL LETTER TURNED 0252 -Alphabetic Presentation Forms FB00 -Alphanumerics, Enclosed 2460 -alternating current 223F -ALTERNATION MARK, PART 303D -ALTERNATIVE KEY SYMBOL 2387 -ALVEOLAR CLICK, LATIN LETTER 01C2 -always (modal operator) 25FB -always (modal operator), was 27E4 -always be (modal operator), will 27E5 -AMALGAMATION OR COPRODUCT 2A3F -AMPERSAND 0026 -AMPERSAND, TURNED 214B -AND, CURLY LOGICAL 22CF -AND, LOGICAL 2227 -AND, N-ARY LOGICAL 22C0 -andrew's, cross st. 2613 -Ands and Ors, Logical 2A51 -ANGLE 2220 -ANGLE, ACUTE 299F -ANGLE, MEASURED 2221 -ANGLE, RIGHT 221F -ANGLE, SPHERICAL 2222 -ANGLE, TURNED 29A2 -ANGLE ABOVE, COMBINING LEFT 031A -angle arc 2222 -ANGLE BELOW, COMBINING LEFT 0349 -ANGLE BRACKET, LEFT 3008 -ANGLE BRACKET, LEFT DOUBLE 300A -ANGLE BRACKET, LEFT-POINTING 2329 -ANGLE BRACKET, MATHEMATICAL LEFT 27E8 -ANGLE BRACKET, MATHEMATICAL LEFT DOUBLE 27EA -ANGLE BRACKET, RIGHT-POINTING 232A -ANGLE OPENING LEFT, SPHERICAL 29A0 -ANGLE OPENING UP, SPHERICAL 29A1 -ANGLE QUOTATION MARK, LEFT-POINTING DOUBLE 00AB -ANGLE QUOTATION MARK, RIGHT-POINTING DOUBLE 00BB -ANGLE QUOTATION MARK, SINGLE LEFT-POINTING 2039 -ANGLE QUOTATION MARK, SINGLE RIGHT-POINTING 203A -Angle Quotation Marks, Ornamental 276E -ANGLE WITH ARC, RIGHT 22BE -ANGLE WITH DOWNWARDS ZIGZAG ARROW, RIGHT 237C -angled dash 00AC -Angles and Measured Angles 299B -ANGSTROM SIGN 212B -ANKH 2625 -Annotation, Interlinear FFF9 -Annotation, Kanbun Ideographic 3190 -Annotation Signs, Koranic 06D6 -ANNUITY SYMBOL, COMBINING 20E7 -ano teleia 00B7 -ANTICLOCKWISE INTEGRATION 2A11 -ANTICLOCKWISE-ROTATED DIVISION SIGN, CIRCLED 29BC -ANTIRESTRICTION, Z NOTATION DOMAIN 2A64 -ANTIRESTRICTION, Z NOTATION RANGE 2A65 -APL 2336 -APL Functional Symbols 2336 -apl jot 2218 -apl overbar 00AF -apl quote 0022 -apl stile 2223 -apl tilde 223C -apl upstile 2308 -APOSTROPHE 0027 -apostrophe 02BC -apostrophe 2019 -APOSTROPHE, ARMENIAN 055A -APOSTROPHE, MODIFIER LETTER 02BC -APOSTROPHE, MODIFIER LETTER DOUBLE 02EE -apostrophe-quote 0027 -APPLICATION, FUNCTION 2061 -application program command 009F -APPROACHES THE LIMIT 2250 -APPROXIMATE, GREATER-THAN AND NOT 2A8A -APPROXIMATE, GREATER-THAN OR 2A86 -APPROXIMATE, LESS-THAN AND NOT 2A89 -APPROXIMATE, LESS-THAN OR 2A85 -APPROXIMATELY EQUAL OR EQUAL TO 2A70 -APPROXIMATELY EQUAL TO 2245 -approximately equal to 2257 -AQUARIUS 2652 -Arabic 0600 -Arabic, Extended 0671 -ARABIC COMMA 060C -ARABIC DECIMAL SEPARATOR 066B -ARABIC END OF AYAH 06DD -ARABIC FIVE POINTED STAR 066D -ARABIC FOOTNOTE MARKER 0602 -ARABIC FORM SHAPING, ACTIVATE 206D -ARABIC FORM SHAPING, INHIBIT 206C -ARABIC FULL STOP 06D4 -Arabic Honorifics 0610 -ARABIC LETTER DOTLESS BEH 066E -ARABIC LETTER DOTLESS QAF 066F -Arabic Letters 0627 -ARABIC NUMBER SIGN 0600 -ARABIC PERCENT SIGN 066A -Arabic Points 064B -Arabic Presentation Forms-A FB50 -Arabic Presentation Forms-B FE70 -ARABIC QUESTION MARK 061F -ARABIC SEMICOLON 061B -ARABIC SIGN SAFHA 0603 -ARABIC SIGN SANAH 0601 -Arabic Poetic Marks 0610 -Arabic Subtending Marks 0600 -ARABIC TAIL FRAGMENT FE73 -ARABIC THOUSANDS SEPARATOR 066C -Arabic-Indic Digits 0660 -Arabic-Indic Digits for Persian and Urdu, Eastern 06F0 -ARC 2312 -arc, angle 2222 -ARC, RIGHT ANGLE WITH 22BE -ARCH BELOW, COMBINING INVERTED DOUBLE 032B -Arcs 25DC -area, end of guarded 0097 -area, end of selected 0087 -area, start of guarded 0096 -area, start of selected 0086 -ARIES 2648 -Armenian 0530 -ARMENIAN ABBREVIATION MARK 055F -ARMENIAN APOSTROPHE 055A -Armenian Capital Letters 0531 -ARMENIAN COMMA 055D -ARMENIAN EMPHASIS MARK 055B -ARMENIAN EXCLAMATION MARK 055C -ARMENIAN FULL STOP 0589 -ARMENIAN HYPHEN 058A -Armenian Ligatures FB13 -ARMENIAN QUESTION MARK 055E -Armenian Small Letters 0561 -ARROW, BLACK CIRCLE WITH DOWN 29ED -ARROW, BLACK DIAMOND WITH DOWN 29EA -arrow, colon right 29F4 -ARROW, ELECTRIC 2301 -ARROW, RIGHT ANGLE WITH DOWNWARDS ZIGZAG 237C -ARROW, WHITE CIRCLE WITH DOWN 29EC -ARROW ABOVE, COMBINING CLOCKWISE 20D5 -ARROW ABOVE, COMBINING LEFT 20D6 -ARROW ABOVE, COMBINING LEFT RIGHT 20E1 -ARROW BELOW, COMBINING DOUBLE RIGHTWARDS 0362 -ARROW BELOW, COMBINING LEFT RIGHT 034D -ARROW BELOW, COMBINING UPWARDS 034E -Arrow Dingbats 2794 -ARROW OVERLAY, COMBINING LEFTWARDS 20EA -ARROW THROUGH CIRCLE, UP 29BD -ARROW WITH HOOK, INTEGRAL WITH LEFTWARDS 2A17 -ARROWHEAD, UP 2303 -Arrowheads, Modifier Letter 02C2 -Arrows 2190 -Arrows, Long 27F5 -Arrows, Other White and Black 2B00 -arrows extension 23AF -Arrows-A, Supplemental 27F0 -Arrows-B, Supplemental 2900 -ASCENDING NODE 260A -ASCII 0020 -ASCII C0 Control Codes 0000 -ASCII Digits 0030 -ASCII Variants, Fullwidth FF01 -ash 00E6 -ASSERTION 22A6 -ASTERISK 002A -ASTERISK, EQUALS WITH 2A6E -ASTERISK, LOW 204E -ASTERISK, SQUARED 29C6 -Asterisk Dingbats 2722 -ASTERISK OPERATOR 2217 -ASTERISK OPERATOR, CIRCLED 229B -ASTERISKS ALIGNED VERTICALLY, TWO 2051 -Asterisks and Snowflakes, Stars, 2721 -ASTERISM 2042 -Astrological Symbols 263D -asymptotic to 2248 -ASYMPTOTICALLY EQUAL TO 2243 -AT, COMMERCIAL 0040 -AVERAGE WITH SLASH, INTEGRAL 2A0F -AYAH, ARABIC END OF 06DD -B, LATIN LETTER SMALL CAPITAL 0299 -B, SCRIPT CAPITAL 212C -baby gamma, latin small letter 0264 -backslash 005C -BACKSLASH, COMBINING ENCLOSING CIRCLE 20E0 -backspace 0008 -BACKSPACE, SYMBOL FOR 2408 -backward difference 2207 -bag bracket, z notation left 27E6 -BAG MEMBERSHIP, Z NOTATION 22FF -bag subtraction, z notation 2A41 -BAHT, THAI CURRENCY SYMBOL 0E3F -BALLOT BOX 2610 -BALLOT BOX WITH CHECK 2611 -BALLOT BOX WITH X 2612 -BALLOT X 2717 -BALLOT X, HEAVY 2718 -bang 0021 -bar, broken vertical 00A6 -BAR, CIRCLED VERTICAL 29B6 -BAR, HORIZONTAL 2015 -BAR, N-ARY WHITE VERTICAL 2AFF -bar, vertical 007C -BAR, WHITE VERTICAL 2AFE -BAR BINARY RELATION, TRIPLE VERTICAL 2AF4 -BAR DELIMITER, TRIPLE VERTICAL 2980 -Bar Dingbats, Vertical 2758 -BAR OPERATOR, LARGE TRIPLE VERTICAL 2AFC -Bar Symbols, Error 29EE -BAR WITH DOUBLE VERTICAL STROKE, TRIPLE HORIZONTAL 2A68 -BAR WITH HORIZONTAL STROKE, TRIPLE VERTICAL 2AF5 -BAR WITH TRIPLE VERTICAL STROKE, TRIPLE HORIZONTAL 2A69 -barred o, latin capital letter 019F -BARRED O, LATIN SMALL LETTER 0275 -Basic Latin, C0 Controls and 0000 -Basic Russian Alphabet 0410 -BEAMED EIGHTH NOTES 266B -BEAMED SIXTEENTH NOTES 266C -BECAUSE 2235 -beginning of line 2310 -bell 0007 -BELL, SYMBOL FOR 2407 -BELL SYMBOL 237E -BELOW, COMBINING ACUTE ACCENT 0317 -BELOW, COMBINING BREVE 032E -BELOW, COMBINING BRIDGE 032A -BELOW, COMBINING CARON 032C -BELOW, COMBINING CIRCUMFLEX ACCENT 032D -BELOW, COMBINING COMMA 0326 -BELOW, COMBINING DIAERESIS 0324 -BELOW, COMBINING DOT 0323 -BELOW, COMBINING DOUBLE RIGHTWARDS ARROW 0362 -BELOW, COMBINING DOUBLE VERTICAL LINE 0348 -BELOW, COMBINING EQUALS SIGN 0347 -BELOW, COMBINING GRAVE ACCENT 0316 -BELOW, COMBINING INVERTED BREVE 032F -BELOW, COMBINING INVERTED BRIDGE 033A -BELOW, COMBINING INVERTED DOUBLE ARCH 032B -BELOW, COMBINING LEFT ANGLE 0349 -BELOW, COMBINING LEFT HALF RING 031C -BELOW, COMBINING LEFT RIGHT ARROW 034D -BELOW, COMBINING LEFT TACK 0318 -BELOW, COMBINING MACRON 0331 -BELOW, COMBINING MINUS SIGN 0320 -BELOW, COMBINING PALATALIZED HOOK 0321 -BELOW, COMBINING PLUS SIGN 031F -BELOW, COMBINING RETROFLEX HOOK 0322 -BELOW, COMBINING RIGHT HALF RING 0339 -BELOW, COMBINING RING 0325 -BELOW, COMBINING SEAGULL 033C -BELOW, COMBINING SQUARE 033B -BELOW, COMBINING TILDE 0330 -BELOW, COMBINING UP TACK 031D -BELOW, COMBINING UPWARDS ARROW 034E -BELOW, COMBINING VERTICAL LINE 0329 -below, greek non-spacing iota 0345 -bend, actuarial 20E7 -Bengali 0980 -Bengali Currency Signs 09F2 -Bengali Digits 09E6 -Bengali Letters 0985 -BENGALI RUPEE MARK 09F2 -BENGALI RUPEE SIGN 09F3 -BENZENE RING 232C -bernoulli function 212C -BET SYMBOL 2136 -Betty BOOP 263A -BETWEEN 226C -BEVERAGE, HOT 2615 -BIDENTAL PERCUSSIVE, LATIN LETTER 02AD -Bidirectional Formatting Controls 202A -Big 5, Duplicates from FA0C -BIG REVERSE SOLIDUS 29F9 -BIG SOLIDUS 29F8 -bijection, z notation 2917 -bijective mapping 2916 -BILABIAL CLICK, LATIN LETTER 0298 -BILABIAL PERCUSSIVE, LATIN LETTER 02AC -BINARY RELATION, TRIPLE SOLIDUS 2AFB -BINARY RELATION, TRIPLE VERTICAL BAR 2AF4 -BIOHAZARD SIGN 2623 -BLACK, BOWTIE WITH LEFT HALF 29D1 -BLACK, BOWTIE WITH RIGHT HALF 29D2 -BLACK, DOWN-POINTING TRIANGLE WITH LEFT HALF 29E8 -BLACK, DOWN-POINTING TRIANGLE WITH RIGHT HALF 29E9 -BLACK, TIMES WITH LEFT HALF 29D4 -BLACK, TIMES WITH RIGHT HALF 29D5 -BLACK BOWTIE 29D3 -BLACK CIRCLE WITH DOWN ARROW 29ED -BLACK CIRCLE WITH TWO WHITE DOTS 2689 -BLACK CIRCLE WITH WHITE DOT RIGHT 2688 -Black Circled Numbers, White On 24EB -BLACK DIAMOND WITH DOWN ARROW 29EA -BLACK FLAG 2691 -BLACK HOURGLASS 29D7 -BLACK LEFT POINTING INDEX 261A -BLACK LEFTWARDS BULLET 204C -BLACK LENTICULAR BRACKET, LEFT 3010 -BLACK LOZENGE 29EB -BLACK MEDIUM SMALL SQUARE 25FE -BLACK MEDIUM SQUARE 25FC -BLACK NIB 2712 -BLACK PARALLELOGRAM 25B0 -BLACK SCISSORS 2702 -BLACK SHOGI PIECE 2617 -black small circle 2022 -BLACK SMILING FACE 263B -BLACK STAR 2605 -BLACK SUN WITH RAYS 2600 -BLACK TELEPHONE 260E -BLACK TRIANGLE, PLUS SIGN WITH 2A28 -BLACK UNIVERSAL RECYCLING SYMBOL 267B -BLACK-LETTER CAPITAL C 212D -BLACK-LETTER CAPITAL H 210C -BLACK-LETTER CAPITAL I 2111 -BLACK-LETTER CAPITAL R 211C -BLACK-LETTER CAPITAL Z 2128 -BLANK SYMBOL 2422 -block, end of transmission 0017 -BLOCK, SYMBOL FOR END OF TRANSMISSION 2417 -Block Elements 2580 -bom FEFF -Bopomofo, Chinese 3100 -Bopomofo Extended for Minnan and Hakka, Chinese 31A0 -BOWTIE 22C8 -bowtie, large 2A1D -Bowtie Symbols 29D1 -BOX, BALLOT 2610 -BOX, OPEN 2423 -BOX, SHOULDERED OPEN 237D -BOX, X IN A RECTANGLE 2327 -Box Drawing 2500 -BOX LINE, LEFT VERTICAL 23B8 -BOX LINE, RIGHT VERTICAL 23B9 -BOX OPERATOR, SQUARE LEFT OPEN 2ACD -BOX OPERATOR, SQUARE RIGHT OPEN 2ACE -BOX WITH CHECK, BALLOT 2611 -BOX WITH X, BALLOT 2612 -bra 27E6 -brace, closing 007D -brace, opening 007B -bracket, z notation left bag 27E6 -bracket, closing curly 007D -bracket, closing square 005D -BRACKET, LEFT ANGLE 3008 -BRACKET, LEFT BLACK LENTICULAR 3010 -BRACKET, LEFT CORNER 300C -BRACKET, LEFT CURLY 007B -BRACKET, LEFT DOUBLE ANGLE 300A -BRACKET, LEFT SQUARE 005B -BRACKET, LEFT TORTOISE SHELL 3014 -BRACKET, LEFT WHITE CORNER 300E -BRACKET, LEFT WHITE LENTICULAR 3016 -BRACKET, LEFT WHITE SQUARE 301A -BRACKET, LEFT WHITE TORTOISE SHELL 3018 -BRACKET, LEFT-POINTING ANGLE 2329 -bracket, opening curly 007B -bracket, opening square 005B -BRACKET, RIGHT CURLY 007D -BRACKET, RIGHT SQUARE 005D -Bracket Pieces 239B -Bracket Pieces 23B0 -BRACKET WITH QUILL, LEFT SQUARE 2045 -Brackets 2983 -Brackets, CJK Angle 3008 -Brackets, Corner 2308 -Brackets, CJK Corner 300C -Brackets, CJK 3010 -Brackets, CJK 3014 -Brackets, Fullwidth FF5F -Brackets, Mathematical 27E6 -Brackets, Ornamental 2768 -Brackets, Ornamental 2770 -Brackets, Vertical 23B4 -Braille Patterns 2800 -brazilian currency 20A2 -break here, no 0083 -break permitted here 0082 -breathing, rough 0314 -breathing, smooth 0313 -BREVE 02D8 -BREVE, COMBINING 0306 -BREVE, COMBINING DOUBLE INVERTED 0361 -BREVE, COMBINING INVERTED 0311 -BREVE BELOW, COMBINING 032E -BREVE BELOW, COMBINING INVERTED 032F -BRIDGE ABOVE, COMBINING 0346 -BRIDGE ABOVE, COMBINING WIDE 20E9 -BRIDGE BELOW, COMBINING 032A -BRIDGE BELOW, COMBINING INVERTED 033A -broken vertical bar 00A6 -Buhid 1740 -BULLET 2022 -BULLET, BLACK LEFTWARDS 204C -BULLET, HYPHEN 2043 -BULLET, REVERSED ROTATED FLORAL HEART 2619 -bullet, tainome (japanese, a kind of) 25C9 -BULLET, TRIANGULAR 2023 -BULLET, WHITE 25E6 -BULLET OPERATOR 2219 -BULLSEYE 25CE -bullseye, latin letter 0298 -BUMPY ABOVE, EQUALS SIGN WITH 2AAE -BY, MEASURED 225E -by definition, equal to 225C -BY DEFINITION, EQUAL TO 225D -byte order mark FEFF -C, BLACK-LETTER CAPITAL 212D -C, COMBINING LATIN SMALL LETTER 0368 -C, DOUBLE-STRUCK CAPITAL 2102 -C, LATIN LETTER STRETCHED 0297 -C0 Controls and Basic Latin 0000 -C1 Controls and Latin-1 Supplement 0080 -CADA UNA 2106 -CADUCEUS 2624 -Canadian Aboriginal Syllabics, Unified 1400 -cancel 0018 -CANCEL, SYMBOL FOR 2418 -cancel character 0094 -CANCER 264B -CANDRABINDU, COMBINING 0310 -Cantillation Marks, Hebrew 0591 -cap 2229 -CAP, SQUARE 2293 -Capital Letters, Armenian 0531 -Capital Letters, Cyrillic 0401 -Capital Letters, Georgian 10A0 -Capital Letters, Greek 0391 -Capital Letters, Latin 0041 -CAPRICORN 2651 -caps lock 21EA -caps lock 21EC -Card Suits, Playing 2660 -cardinal (countable), first transfinite 2135 -cardinal (functions of a real variable), third transfinite 2137 -cardinal (the continuum), second transfinite 2136 -CARE OF 2105 -caret 028C -CARET 2038 -CARET INSERTION POINT 2041 -CARON 02C7 -CARON, COMBINING 030C -CARON BELOW, COMBINING 032C -carriage return 000D -carriage return 21B5 -CARRIAGE RETURN, SYMBOL FOR 240D -CAUTION SIGN 2621 -CEDILLA 00B8 -CEDILLA, COMBINING 0327 -cedilla, spacing 00B8 -cedilla above 0312 -CEILING, LEFT 2308 -CELSIUS, DEGREE 2103 -CENT SIGN 00A2 -centigrade, degrees 2103 -CENTRE LINE SYMBOL 2104 -CENTRED LEFT HALF RING, MODIFIER LETTER 02D3 -CENTRELINE LOW LINE FE4E -CENTRELINE OVERLINE FE4A -cgj 034F -character introducer, single 009A -character tabulation set 0088 -character tabulation with justification 0089 -CHARACTER TIE 2040 -Chart Components, Form and 2500 -CHECK, BALLOT BOX WITH 2611 -CHECK MARK 2713 -CHECK MARK, AEGEAN 10102 -CHECK MARK, HEAVY 2714 -CHECK MARK, NOT 237B -Cherokee 13A0 -Chess Pieces 2654 -Chess Symbols, Japanese 2616 -chevrons 00AB -CHI RHO 2627 -Chinese Bopomofo 3100 -Chinese Bopomofo Extended for Minnan and Hakka 31A0 -choice, dijkstra 2AFE -choice, n-ary dijkstra 2AFF -CIRCLE, BLACK 25CF -circle, black small 2022 -CIRCLE, COMBINING ENCLOSING 20DD -CIRCLE, DOTTED 25CC -circle, jis composition 20DD -CIRCLE, LARGE 25EF -CIRCLE, MULTIPLICATION SIGN IN DOUBLE 2A37 -CIRCLE, MULTIPLICATION SIGN IN LEFT HALF 2A34 -CIRCLE, MULTIPLICATION SIGN IN RIGHT HALF 2A35 -CIRCLE, PLUS SIGN IN LEFT HALF 2A2D -CIRCLE, PLUS SIGN IN RIGHT HALF 2A2E -CIRCLE, SQUARED SMALL 29C7 -CIRCLE ABOVE, PLUS SIGN WITH SMALL 2A22 -CIRCLE ABOVE, UP TACK WITH 27DF -CIRCLE ABOVE, VERTICAL LINE WITH 2AEF -CIRCLE BACKSLASH, COMBINING ENCLOSING 20E0 -CIRCLE BELOW, DOWN TACK WITH 2AF1 -CIRCLE BELOW, VERTICAL LINE WITH 2AF0 -CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR 29BA -CIRCLE INSIDE, GREATER-THAN WITH 2A7A -CIRCLE INSIDE, LESS-THAN WITH 2A79 -Circle Symbols 29B5 -CIRCLE WITH DOT RIGHT, WHITE 2686 -CIRCLE WITH DOWN ARROW, BLACK 29ED -CIRCLE WITH DOWN ARROW, WHITE 29EC -CIRCLE WITH TWO DOTS, WHITE 2687 -CIRCLE WITH TWO WHITE DOTS, BLACK 2689 -CIRCLE WITH WHITE DOT RIGHT, BLACK 2688 -CIRCLED ASTERISK OPERATOR 229B -CIRCLED DASH 229D -CIRCLED DIGIT ZERO 24EA -Circled Digits, Dingbat 2776 -CIRCLED DIVISION SIGN 2A38 -CIRCLED DIVISION SLASH 2298 -CIRCLED DOT OPERATOR 2299 -CIRCLED DOT OPERATOR, N-ARY 2A00 -CIRCLED EQUALS 229C -Circled Ideographs 3280 -Circled Inverse Numbers 2776 -Circled Japanese Katakana 32D0 -Circled Korean Hangul Elements 3260 -Circled Korean Hangul Syllables 326E -Circled Latin Letters 24B6 -CIRCLED MINUS 2296 -CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT 2A36 -Circled Numbers 2460 -Circled Numbers 3251 -Circled Numbers 32B1 -Circled Numbers, Double 24F5 -Circled Numbers, White On Black 24EB -CIRCLED PLUS 2295 -CIRCLED PLUS OPERATOR, N-ARY 2A01 -CIRCLED POSTAL MARK 3036 -CIRCLED RING OPERATOR 229A -CIRCLED TIMES 2297 -CIRCLED TIMES OPERATOR, N-ARY 2A02 -Circles 25CB -CIRCULATION FUNCTION 2A10 -circumflex, spacing 005E -CIRCUMFLEX ACCENT 005E -CIRCUMFLEX ACCENT, ALMOST EQUAL TO WITH 2A6F -CIRCUMFLEX ACCENT, CIRCLED MULTIPLICATION SIGN WITH 2A36 -CIRCUMFLEX ACCENT, COMBINING 0302 -CIRCUMFLEX ACCENT, MODIFIER LETTER 02C6 -CIRCUMFLEX ACCENT ABOVE, PLUS SIGN WITH 2A23 -CIRCUMFLEX ACCENT BELOW, COMBINING 032D -CJK Compatibility 3300 -CJK Compatibility Forms FE30 -CJK Compatibility Ideographs F900 -CJK Compatibility Ideographs, IBM FA0E -CJK Ideographs Area 3400 -CJK Letters and Ideographs, Enclosed 3200 -CJK Phonetics and Symbols Area 2E00 -CJK Radicals Supplement 2E80 -CJK Symbols and Punctuation 3000 -CJK Unified Ideographs 4E00 -CJK Unified Ideographs Extension A 3400 -clear key 2327 -CLEAR SCREEN SYMBOL 239A -clear weather 2600 -CLICK, LATIN LETTER ALVEOLAR 01C2 -CLICK, LATIN LETTER BILABIAL 0298 -CLICK, LATIN LETTER DENTAL 01C0 -CLICK, LATIN LETTER LATERAL 01C1 -CLICK, LATIN LETTER RETROFLEX 01C3 -CLOCKWISE ARROW ABOVE, COMBINING 20D5 -CLOCKWISE CONTOUR INTEGRAL 2232 -CLOCKWISE INTEGRAL 2231 -CLOCKWISE RING OVERLAY, COMBINING 20D9 -clone 2104 -Clones of Diacritics, Spacing 02D8 -CLOSE UP 2050 -closed epsilon, latin small letter 029A -CLOSED INTERSECTION WITH SERIFS 2A4D -CLOSED OMEGA, LATIN SMALL LETTER 0277 -CLOSED OPEN E, LATIN SMALL LETTER 029A -closed reversed epsilon, latin small letter 025E -CLOSED REVERSED OPEN E, LATIN SMALL LETTER 025E -CLOSED SUBSET 2ACF -CLOSED SUBSET OR EQUAL TO 2AD1 -CLOSED SUPERSET 2AD0 -CLOSED SUPERSET OR EQUAL TO 2AD2 -CLOSED UNION WITH SERIFS 2A4C -CLOSED UNION WITH SERIFS AND SMASH PRODUCT 2A50 -closing brace 007D -closing curly bracket 007D -CLOSING MARK, IDEOGRAPHIC 3006 -closing parenthesis 0029 -closing square bracket 005D -CLOUD 2601 -cloudy weather 2601 -Codes, Process Internal FDD0 -coffee 2615 -COLON 003A -COLON, ETHIOPIC 1365 -COLON, MODIFIER LETTER HALF TRIANGULAR 02D1 -COLON, MODIFIER LETTER TRIANGULAR 02D0 -COLON, MONGOLIAN 1804 -COLON, Z NOTATION TYPE 2982 -COLON EQUAL, DOUBLE 2A74 -COLON EQUALS 2254 -COLON OPERATOR, TRIPLE 2AF6 -colon right arrow 29F4 -COLON SIGN 20A1 -COMBINING ACUTE ACCENT 0301 -COMBINING ACUTE ACCENT BELOW 0317 -COMBINING ACUTE TONE MARK 0341 -COMBINING ALMOST EQUAL TO ABOVE 034C -Combining Alphabet, Korean Hangul Jamo 1100 -COMBINING ANNUITY SYMBOL 20E7 -COMBINING BREVE 0306 -COMBINING BREVE BELOW 032E -COMBINING BRIDGE ABOVE 0346 -COMBINING BRIDGE BELOW 032A -COMBINING CANDRABINDU 0310 -COMBINING CARON 030C -COMBINING CARON BELOW 032C -COMBINING CEDILLA 0327 -Combining Characters, Cyrillic 0483 -COMBINING CIRCUMFLEX ACCENT 0302 -COMBINING CIRCUMFLEX ACCENT BELOW 032D -COMBINING CLOCKWISE ARROW ABOVE 20D5 -COMBINING CLOCKWISE RING OVERLAY 20D9 -COMBINING COMMA ABOVE 0313 -COMBINING COMMA ABOVE RIGHT 0315 -COMBINING COMMA BELOW 0326 -Combining Diacritical Marks 0300 -Combining Diacritical Marks for Symbols 20D0 -COMBINING DIAERESIS 0308 -COMBINING DIAERESIS BELOW 0324 -COMBINING DOT ABOVE 0307 -COMBINING DOT BELOW 0323 -COMBINING DOUBLE ACUTE ACCENT 030B -COMBINING DOUBLE GRAVE ACCENT 030F -COMBINING DOUBLE INVERTED BREVE 0361 -COMBINING DOUBLE LOW LINE 0333 -COMBINING DOUBLE OVERLINE 033F -COMBINING DOUBLE RIGHTWARDS ARROW BELOW 0362 -COMBINING DOUBLE TILDE 0360 -COMBINING DOUBLE TILDE LEFT HALF FE22 -COMBINING DOUBLE VERTICAL LINE ABOVE 030E -COMBINING DOUBLE VERTICAL LINE BELOW 0348 -COMBINING DOUBLE VERTICAL STROKE OVERLAY 20E6 -COMBINING DOWN TACK BELOW 031E -COMBINING ENCLOSING CIRCLE 20DD -COMBINING ENCLOSING CIRCLE BACKSLASH 20E0 -COMBINING ENCLOSING DIAMOND 20DF -COMBINING ENCLOSING KEYCAP 20E3 -COMBINING ENCLOSING SCREEN 20E2 -COMBINING ENCLOSING SQUARE 20DE -COMBINING ENCLOSING UPWARD POINTING TRIANGLE 20E4 -COMBINING EQUALS SIGN BELOW 0347 -COMBINING FOUR DOTS ABOVE 20DC -COMBINING GRAPHEME JOINER 034F -COMBINING GRAVE ACCENT 0300 -COMBINING GRAVE ACCENT BELOW 0316 -COMBINING GRAVE TONE MARK 0340 -COMBINING GREEK DIALYTIKA TONOS 0344 -COMBINING GREEK KORONIS 0343 -COMBINING GREEK PERISPOMENI 0342 -COMBINING GREEK YPOGEGRAMMENI 0345 -combining hacek 030C -Combining Half Marks FE20 -COMBINING HOMOTHETIC ABOVE 034B -COMBINING HOOK ABOVE 0309 -COMBINING HORN 031B -COMBINING INVERTED BREVE 0311 -COMBINING INVERTED BREVE BELOW 032F -COMBINING INVERTED BRIDGE BELOW 033A -COMBINING INVERTED DOUBLE ARCH BELOW 032B -COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK 3099 -Combining Latin Small Letters 0363 -COMBINING LEFT ANGLE ABOVE 031A -COMBINING LEFT ANGLE BELOW 0349 -COMBINING LEFT ARROW ABOVE 20D6 -COMBINING LEFT HALF RING BELOW 031C -COMBINING LEFT HARPOON ABOVE 20D0 -COMBINING LEFT RIGHT ARROW ABOVE 20E1 -COMBINING LEFT RIGHT ARROW BELOW 034D -COMBINING LEFT TACK BELOW 0318 -COMBINING LEFTWARDS ARROW OVERLAY 20EA -COMBINING LIGATURE LEFT HALF FE20 -COMBINING LONG SOLIDUS OVERLAY 0338 -COMBINING LONG STROKE OVERLAY 0336 -COMBINING LONG VERTICAL LINE OVERLAY 20D2 -COMBINING LOW LINE 0332 -COMBINING MACRON 0304 -COMBINING MACRON BELOW 0331 -COMBINING MINUS SIGN BELOW 0320 -COMBINING NOT TILDE ABOVE 034A -COMBINING OGONEK 0328 -COMBINING OVERLINE 0305 -COMBINING PALATALIZED HOOK BELOW 0321 -COMBINING PLUS SIGN BELOW 031F -COMBINING RETROFLEX HOOK BELOW 0322 -COMBINING REVERSE SOLIDUS OVERLAY 20E5 -COMBINING REVERSED COMMA ABOVE 0314 -COMBINING RIGHT HALF RING BELOW 0339 -COMBINING RING ABOVE 030A -COMBINING RING BELOW 0325 -COMBINING RING OVERLAY 20D8 -COMBINING SEAGULL BELOW 033C -COMBINING SHORT SOLIDUS OVERLAY 0337 -COMBINING SHORT STROKE OVERLAY 0335 -COMBINING SHORT VERTICAL LINE OVERLAY 20D3 -COMBINING SQUARE BELOW 033B -COMBINING THREE DOTS ABOVE 20DB -COMBINING TILDE 0303 -COMBINING TILDE BELOW 0330 -COMBINING TILDE OVERLAY 0334 -COMBINING TRIPLE UNDERDOT 20E8 -COMBINING TURNED COMMA ABOVE 0312 -COMBINING UP TACK BELOW 031D -COMBINING UPWARDS ARROW BELOW 034E -COMBINING VERTICAL LINE ABOVE 030D -COMBINING VERTICAL LINE BELOW 0329 -COMBINING VERTICAL TILDE 033E -COMBINING WIDE BRIDGE ABOVE 20E9 -COMBINING X ABOVE 033D -COMET 2604 -COMMA 002C -COMMA, ARABIC 060C -COMMA, ARMENIAN 055D -COMMA, ETHIOPIC 1363 -comma, georgian 00B7 -COMMA, IDEOGRAPHIC 3001 -comma, invisible 2063 -COMMA, MODIFIER LETTER REVERSED 02BD -COMMA, MODIFIER LETTER TURNED 02BB -COMMA, MONGOLIAN 1802 -COMMA ABOVE, COMBINING 0313 -COMMA ABOVE, COMBINING REVERSED 0314 -COMMA ABOVE, COMBINING TURNED 0312 -COMMA ABOVE, MINUS SIGN WITH 2A29 -COMMA ABOVE RIGHT, COMBINING 0315 -COMMA BELOW, COMBINING 0326 -comma quotation mark, double 201D -comma quotation mark, double reversed 201F -comma quotation mark, double turned 201C -comma quotation mark, low double 201E -comma quotation mark, low single 201A -comma quotation mark, single 2019 -comma quotation mark, single reversed 201B -comma quotation mark, single turned 2018 -command, application program 009F -command, operating system 009D -command key 2318 -COMMERCIAL AT 0040 -COMMERCIAL MINUS SIGN 2052 -compass 263C -Compatibility, CJK 3300 -Compatibility and Specials Area F900 -Compatibility Forms, CJK FE30 -Compatibility Ideographs, CJK F900 -Compatibility Ideographs, IBM CJK FA0E -Compatibility Jamo, Korean Hangul 3130 -COMPLEMENT 2201 -complex numbers, the set of 2102 -component, radial 27DF -Components, Form and Chart 2500 -composite function 2218 -COMPOSITION, Z NOTATION RELATIONAL 2A3E -COMPOSITION, Z NOTATION SCHEMA 2A1F -composition circle, jis 20DD -COMPOSITION SYMBOL 2384 -concatenation, z notation sequence 2040 -CONCAVE-SIDED DIAMOND, WHITE 27E1 -CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK, WHITE 27E2 -CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK, WHITE 27E3 -conductance 2127 -CONGRUENT WITH DOT ABOVE 2A6D -CONICAL TAPER 2332 -CONJUGATE MATRIX, HERMITIAN 22B9 -conjunction 2227 -CONJUNCTION 260C -CONSECUTIVE EQUALS SIGNS, THREE 2A76 -CONSECUTIVE EQUALS SIGNS, TWO 2A75 -consonant for Addu dialect 0780 -CONTAINS AS MEMBER 220B -CONTAINS AS MEMBER, SMALL 220D -CONTAINS AS NORMAL SUBGROUP 22B3 -CONTAINS WITH LONG HORIZONTAL STROKE 22FA -CONTAINS WITH OVERBAR 22FD -CONTAINS WITH OVERBAR, SMALL 22FE -CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22FB -CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE, SMALL 22FC -continuity, absolute 2AA1 -CONTINUOUS UNDERLINE SYMBOL 2381 -continuum, second transfinite cardinal 2136 -CONTOUR INTEGRAL 222E -CONTOUR INTEGRAL, CLOCKWISE 2232 -CONTOURED OUTLINE, SQUARE WITH 29E0 -contraction operator 20E9 -control, graphic for 2388 -Control, Syriac Format 070F -Control Code Graphics 25F0 -Control Codes, ASCII C0 0000 -Control Codes, C1 0080 -Control Codes, Graphic Pictures for 2400 -Control Codes, Graphics for 237B -control sequence introducer 009B -control string, device 0090 -Controls, Bidirectional Formatting 202A -Controls, Mongolian Format 180B -Controls and Basic Latin, C0 0000 -Controls and Latin-1 Supplement, C1 0080 -COPRODUCT, AMALGAMATION OR 2A3F -COPRODUCT, N-ARY 2210 -Coptic, Greek and 0370 -Coptic-unique Letters 03E2 -COPYRIGHT, SOUND RECORDING 2117 -COPYRIGHT SIGN 00A9 -CORNER, TOP LEFT 231C -CORNER BRACKET, LEFT 300C -CORNER BRACKET, LEFT WHITE 300E -Corner brackets 2308 -Corner brackets, CJK 300C -CORNER WITH DOT, LOWER RIGHT 27D3 -CORNER WITH DOT, UPPER LEFT 27D4 -corners, Quine 231C -CORPORATION, SQUARE 337F -CORRESPONDS TO 2258 -corresponds to 2259 -costa rican currency 20A1 -countable, first transfinite cardinal 2135 -COUNTERBORE 2334 -COUNTERSINK 2335 -cr 000D -CRESCENT, STAR AND 262A -Croatian, Additions for Slovenian and 0200 -Croatian Digraphs Matching Serbian Cyrillic Letters 01C4 -CROP, TOP LEFT 230F -CROSS, EAST SYRIAC 2671 -CROSS, LATIN 271D -cross, long 2020 -CROSS, MALTESE 2720 -CROSS, ORTHODOX 2626 -cross, st. andrew's 2613 -CROSS, WEST SYRIAC 2670 -CROSS ACCENT, MODIFIER LETTER 02DF -Cross Dingbats 2719 -CROSS OF JERUSALEM 2629 -CROSS OF LORRAINE 2628 -CROSS PRODUCT, VECTOR OR 2A2F -cross ratio 211E -CROSSBONES, SKULL AND 2620 -crosshatch 0023 -CRUZEIRO SIGN 20A2 -CUBE ROOT 221B -cubed 00B3 -cup 222A -CUP, SQUARE 2294 -curly bracket, closing 007D -CURLY BRACKET, LEFT 007B -curly bracket, opening 007B -CURLY BRACKET, RIGHT 007D -CURLY LOGICAL AND 22CF -CURLY LOGICAL OR 22CE -currency, brazilian 20A2 -currency, costa rican 20A1 -currency, el salvadorian 20A1 -currency, euro european 20AC -currency, french 20A3 -currency, greek 20AF -currency, hebrew 20AA -currency, indian 20A8 -currency, iranian FDFC -currency, israeli 20AA -currency, italian 20A4 -currency, korean 20A9 -currency, laotian 20AD -currency, mongolian 20AE -currency, nigerian 20A6 -currency, phillipine 20B1 -currency, spanish 20A7 -currency, turkish 20A4 -currency, vietnamese 20AB -CURRENCY SIGN 00A4 -Currency Signs, Bengali 09F2 -currency symbol, florin 0192 -CURRENCY SYMBOL BAHT, THAI 0E3F -Currency Symbols 20A0 -current, alternating 223F -CURRENT SYMBOL FORM TWO, DIRECT 2393 -cycle 223C -CYLINDRICITY 232D -Cypriot Syllabary 10800 -Cyrillic 0400 -Cyrillic, Extended 048C -Cyrillic Capital Letters 0401 -Cyrillic Combining Characters 0483 -Cyrillic Extensions 0450 -Cyrillic Historic Letters 0460 -Cyrillic Komi Letters 0500 -Cyrillic Small Letters 0430 -Cyrillic Supplementary 0500 -D, COMBINING LATIN SMALL LETTER 0369 -D, DOUBLE-STRUCK ITALIC CAPITAL 2145 -D, DOUBLE-STRUCK ITALIC SMALL 2146 -D, LATIN CAPITAL LETTER AFRICAN 0189 -d retroflex hook, latin small letter 0256 -D WITH TAIL, LATIN SMALL LETTER 0256 -DAGGER 2020 -DAGGER, DOUBLE 2021 -d'alembertian 29E0 -DALET SYMBOL 2138 -DANDA, DEVANAGARI 0964 -DANDA, DEVANAGARI DOUBLE 0965 -dash, angled 00AC -DASH, CIRCLED 229D -DASH, EM 2014 -DASH, EN 2013 -DASH, FIGURE 2012 -dash, long 2015 -dash, quotation 2015 -DASH, SWUNG 2053 -DASH, WAVE 301C -DASH, WAVY 3030 -DASHED LOW LINE FE4D -DASHED OVERLINE FE49 -Dashes 2010 -dasia 0314 -data link escape 0010 -DATA LINK ESCAPE, SYMBOL FOR 2410 -Database Theory Operators 27D5 -DAVID, STAR OF 2721 -Days, Telegraph Symbols for 33E0 -DAY SIGN, TAMIL 0BF3 -decimal point 002E -decimal separator 002C -DECIMAL SEPARATOR, ARABIC 066B -DECIMAL SEPARATOR KEY SYMBOL 2396 -deergh viram 0965 -definition, equal to by 225C -DEFINITION, EQUAL TO BY 225D -DEGREE CELSIUS 2103 -DEGREE FAHRENHEIT 2109 -DEGREE SIGN 00B0 -degrees centigrade 2103 -degrees kelvin 212A -del 2207 -delete 007F -DELETE, SYMBOL FOR 2421 -delete, undoable 2425 -DELETE FORM TWO, SYMBOL FOR 2425 -delete to the left key 232B -delete to the right key 2326 -DELIMITER, TRIPLE VERTICAL BAR 2980 -DELTA, LATIN SMALL LETTER TURNED 018D -DELTA EQUAL TO 225C -DENTAL CLICK, LATIN LETTER 01C0 -Dentistry Notation Symbols 23BE -depth symbol 21A7 -derivative 0307 -derivative, double 0308 -derivative, fourth 20DC -derivative, third 20DB -DESCENDING NODE 260B -Description Characters, Ideographic 2FF0 -Devanagari 0900 -DEVANAGARI DANDA 0964 -Devanagari Digits 0966 -DEVANAGARI DOUBLE DANDA 0965 -Devanagari Letters 0905 -DEVANAGARI OM 0950 -device control four 0014 -DEVICE CONTROL FOUR, SYMBOL FOR 2414 -device control one 0011 -DEVICE CONTROL ONE, SYMBOL FOR 2411 -device control string 0090 -device control three 0013 -DEVICE CONTROL THREE, SYMBOL FOR 2413 -device control two 0012 -DEVICE CONTROL TWO, SYMBOL FOR 2412 -DHARMA, WHEEL OF 2638 -Diacritic-vowel Combinations, Pinyin 01CD -Diacritical Marks, Combining 0300 -Diacritical Marks for Symbols, Combining 20D0 -Diacritics, Double 0360 -Diacritics, Enclosing 20DD -Diacritics, Medieval Superscript Letter 0363 -Diacritics, Overstruck 0334 -Diacritics, Spacing Clones of 02D8 -Diacritics for Greek 0342 -Diacritics for IPA 0346 -DIAERESIS 00A8 -DIAERESIS, COMBINING 0308 -diaeresis, greek capital letter upsilon hook 03D4 -diaeresis, spacing 00A8 -DIAERESIS AND HOOK SYMBOL, GREEK UPSILON WITH 03D4 -DIAERESIS BELOW, COMBINING 0324 -DIAGONAL ELLIPSIS, UP RIGHT 22F0 -DIAGONAL SLASH, SQUARED FALLING 29C5 -DIAGONAL SLASH, SQUARED RISING 29C4 -dialytika 0308 -DIALYTIKA TONOS, COMBINING GREEK 0344 -DIAMETER SIGN 2300 -diameter symbol 2205 -DIAMOND, COMBINING ENCLOSING 20DF -DIAMOND, WHITE CONCAVE-SIDED 27E1 -DIAMOND OPERATOR 22C4 -DIAMOND WITH CENTRED DOT, WHITE 27D0 -DIAMOND WITH DOWN ARROW, BLACK 29EA -DIAMOND WITH LEFTWARDS TICK, WHITE CONCAVE-SIDED 27E2 -DIAMOND WITH RIGHTWARDS TICK, WHITE CONCAVE-SIDED 27E3 -Diamonds 25C6 -Dice 2680 -diesis 2021 -difference, backward 2207 -difference, forward 2206 -difference, sum or positive 2A26 -difference, symmetric 2238 -difference, symmetric 2296 -difference between 223C -DIFFERENCE BETWEEN 224F -difference or sum, positive 2A24 -DIFFERENTIAL, PARTIAL 2202 -DIGIT SHAPES, NATIONAL 206E -DIGIT SHAPES, NOMINAL 206F -Digits, Arabic-Indic 0660 -Digits, ASCII 0030 -Digits, Bengali 09E6 -Digits, Devanagari 0966 -Digits, Dingbat Circled 2776 -Digits, Ethiopic 1369 -Digits, Gujarati 0AE6 -Digits, Gurmukhi 0A66 -Digits, Kannada 0CE6 -Digits, Khmer 17E0 -Digits, Lao 0ED0 -Digits, Malayalam 0D66 -Digits, Mongolian 1810 -Digits, Myanmar 1040 -Digits, Oriya 0B66 -Digits, Osmanya 104A0 -Digits, Subscript 2080 -Digits, Superscript 2070 -Digits, Tamil 0BE7 -Digits, Telugu 0C66 -Digits, Thai 0E50 -Digits, Tibetan 0F20 -Digits for Persian and Urdu, Eastern Arabic-Indic 06F0 -DIGRAPH KOTO, KATAKANA 30FF -DIGRAPH YORI, HIRAGANA 309F -Digraphs, Phonetic 02A3 -Digraphs, Yiddish 05F0 -Digraphs Matching Serbian Cyrillic Letters, Croatian 01C4 -Digram Symbols, Yijing Monogram and 268A -Digram Symbols, Tai Xuan Jing 1D301 -dijkstra choice 2AFE -dijkstra choice, n-ary 2AFF -DIMENSION ORIGIN 2331 -Dingbat Circled Digits 2776 -Dingbats 2700 -Dingbats, Arrow 2794 -Dingbats, Asterisk 2722 -Dingbats, Cross 2719 -Dingbats, Drop-Shadowed 274D -Dingbats, Hazard 2620 -Dingbats, Heart 2763 -Dingbats, Miscellaneous 2600 -Dingbats, Music 2669 -Dingbats, Pencil 270E -Dingbats, Pointing Index Finger 261A -Dingbats, Quotation Mark 275B -Dingbats, Scissors 2701 -Dingbats, Snowflake 2744 -Dingbats, Star 2726 -Dingbats, Vertical Bar 2758 -Dingbats, Warning 2620 -Dingbats, Weather 2600 -Dingbats, Zapf 2700 -Dingbats Series 100, ITC Zapf 2700 -DIRECT CURRENT SYMBOL FORM TWO 2393 -direct product 2299 -direct sum 2295 -DIRECTIONAL FORMATTING, POP 202C -Directional Formatting Controls 202A -DISCONTINUOUS UNDERLINE SYMBOL 2382 -discretionary hyphen 00AD -disjunction 2228 -DITTO MARK 3003 -DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR, CIRCLE 29BA -DIVIDED BY HORIZONTAL RULE, LOZENGE 27E0 -DIVIDED BY VERTICAL BAR, CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF 29BA -DIVIDES 2223 -Divination Lore, Khmer Symbols for 17F0 -DIVISION SIGN 00F7 -DIVISION SIGN, CIRCLED 2A38 -DIVISION SIGN, CIRCLED ANTICLOCKWISE-ROTATED 29BC -Division Sign Operators, Multiplication and 2A2F -DIVISION SLASH 2215 -DIVISION SLASH, CIRCLED 2298 -DIVISION TIMES 22C7 -DOES NOT DIVIDE WITH REVERSED NEGATION SLASH 2AEE -does not yield 22A3 -DOLLAR SIGN 0024 -DOMAIN ANTIRESTRICTION, Z NOTATION 2A64 -DONG SIGN 20AB -dot 002E -DOT, AEGEAN LINE SEPARATOR 10101 -dot, greek middle 00B7 -DOT, KATAKANA MIDDLE 30FB -DOT, MIDDLE 00B7 -DOT, SESAME FE45 -DOT, WHITE SESAME FE46 -DOT ABOVE 02D9 -DOT ABOVE, COMBINING 0307 -dot above, double 0308 -DOT ABOVE, LATIN CAPITAL LETTER I WITH 0130 -DOT BELOW, COMBINING 0323 -DOT MINUS 2238 -DOT OPERATOR 22C5 -DOT OPERATOR, CIRCLED 2299 -DOT OPERATOR, N-ARY CIRCLED 2A00 -DOT OPERATOR, SQUARED 22A1 -DOT PLUS 2214 -DOTLESS BEH, ARABIC LETTER 066E -DOTLESS I, LATIN SMALL LETTER 0131 -DOTLESS QAF, ARABIC LETTER 066F -DOTS ABOVE, COMBINING FOUR 20DC -DOTS ABOVE, COMBINING THREE 20DB -DOTTED CIRCLE 25CC -DOTTED FENCE 2999 -DOUBLE ACUTE ACCENT 02DD -DOUBLE ACUTE ACCENT, COMBINING 030B -DOUBLE ANGLE BRACKET, LEFT 300A -DOUBLE ANGLE QUOTATION MARK, LEFT-POINTING 00AB -DOUBLE ANGLE QUOTATION MARK, RIGHT-POINTING 00BB -DOUBLE APOSTROPHE, MODIFIER LETTER 02EE -DOUBLE ARCH BELOW, COMBINING INVERTED 032B -double bar, latin letter pipe 01C2 -DOUBLE CIRCLE, MULTIPLICATION SIGN IN 2A37 -Double Circled Numbers 24F5 -DOUBLE COLON EQUAL 2A74 -double comma quotation mark 201D -double comma quotation mark, low 201E -DOUBLE DAGGER 2021 -DOUBLE DANDA, DEVANAGARI 0965 -double derivative 0308 -Double Diacritics 0360 -double dot above 0308 -DOUBLE DOWN TACK 2AEA -DOUBLE EXCLAMATION MARK 203C -DOUBLE GRAVE ACCENT, COMBINING 030F -DOUBLE HIGH-REVERSED-9 QUOTATION MARK 201F -DOUBLE HYPHEN, KATAKANA-HIRAGANA 30A0 -DOUBLE INTEGRAL 222C -DOUBLE INTERSECTION 22D2 -DOUBLE INVERTED BREVE, COMBINING 0361 -DOUBLE LEFT TURNSTILE, DOUBLE VERTICAL BAR 2AE5 -DOUBLE LEFT TURNSTILE, VERTICAL BAR 2AE4 -DOUBLE LOGICAL AND 2A53 -DOUBLE LOGICAL OR 2A54 -DOUBLE LOW LINE 2017 -DOUBLE LOW LINE, COMBINING 0333 -DOUBLE LOW-9 QUOTATION MARK 201E -DOUBLE NESTED GREATER-THAN 2AA2 -DOUBLE NESTED LESS-THAN 2AA1 -DOUBLE NESTED LESS-THAN WITH UNDERBAR 2AA3 -double obelisk 2021 -DOUBLE OVERBAR, LOGICAL AND WITH 2A5E -DOUBLE OVERBAR, LOGICAL OR WITH 2A62 -DOUBLE OVERLINE, COMBINING 033F -double pipe 01C1 -DOUBLE PLUS 29FA -DOUBLE PRECEDES 2ABB -DOUBLE PRIME 2033 -DOUBLE PRIME, MODIFIER LETTER 02BA -DOUBLE PRIME, REVERSED 2036 -DOUBLE PRIME QUOTATION MARK 301E -DOUBLE PRIME QUOTATION MARK, LOW 301F -DOUBLE PRIME QUOTATION MARK, REVERSED 301D -DOUBLE PUNCTUATION, PHILIPPINE 1736 -Double punctuation for vertical text 2047 -DOUBLE QUESTION MARK 2047 -DOUBLE QUOTATION MARK, LEFT 201C -DOUBLE QUOTATION MARK, RIGHT 201D -double reversed comma quotation mark 201F -DOUBLE RIGHTWARDS ARROW BELOW, COMBINING 0362 -DOUBLE SOLIDUS OPERATOR 2AFD -DOUBLE SQUARE INTERSECTION 2A4E -DOUBLE SQUARE UNION 2A4F -DOUBLE STROKE, INTEGRAL WITH 2A0E -DOUBLE STROKE NOT SIGN 2AEC -DOUBLE STROKE NOT SIGN, REVERSED 2AED -DOUBLE SUBSET 22D0 -DOUBLE SUCCEEDS 2ABC -DOUBLE SUPERSET 22D1 -DOUBLE TILDE, COMBINING 0360 -DOUBLE TILDE LEFT HALF, COMBINING FE22 -double turned comma quotation mark 201C -DOUBLE TURNSTILE, LEFT AND RIGHT 27DA -DOUBLE UNDERBAR, LOGICAL AND WITH 2A60 -DOUBLE UNDERBAR, LOGICAL OR WITH 2A63 -double underline 0333 -double underscore 0333 -double underscore, spacing 2017 -DOUBLE UNION 22D3 -DOUBLE UP TACK 2AEB -DOUBLE VERTICAL, LONG DASH FROM LEFT MEMBER OF 2AE6 -DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE 2AE5 -DOUBLE VERTICAL BAR LEFT TURNSTILE 2AE3 -DOUBLE VERTICAL LINE 2016 -DOUBLE VERTICAL LINE ABOVE, COMBINING 030E -DOUBLE VERTICAL LINE BELOW, COMBINING 0348 -DOUBLE VERTICAL STROKE, RIGHTWARDS ARROW WITH TAIL WITH 2915 -DOUBLE VERTICAL STROKE, TRIPLE HORIZONTAL BAR WITH 2A68 -DOUBLE VERTICAL STROKE OVERLAY, COMBINING 20E6 -DOUBLE WAVY OVERLINE FE4C -DOUBLE WIGGLY FENCE, LEFT 29DA -DOUBLE WIGGLY FENCE, RIGHT 29DB -double-barred pipe 01C2 -DOUBLE-ENDED MULTIMAP 29DF -DOUBLE-STRUCK CAPITAL C 2102 -DOUBLE-STRUCK CAPITAL H 210D -DOUBLE-STRUCK CAPITAL N 2115 -DOUBLE-STRUCK CAPITAL P 2119 -DOUBLE-STRUCK CAPITAL Q 211A -DOUBLE-STRUCK CAPITAL R 211D -DOUBLE-STRUCK CAPITAL Z 2124 -Double-struck Greek Letters 213D -Double-Struck Italic Mathematical Symbols 2145 -DOUBLE-STRUCK N-ARY SUMMATION 2140 -down, page 21DF -DOWN TACK 22A4 -DOWN TACK BELOW, COMBINING 031E -DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK 29E8 -DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK 29E9 -DRACHMA SIGN 20AF -Drafting Symbols 232D -dram 0292 -drop 264F -Duplicates from Big 5 FA0C -E, COMBINING LATIN SMALL LETTER 0364 -E, DOUBLE-STRUCK ITALIC SMALL 2147 -E, LATIN CAPITAL LETTER OPEN 0190 -E, LATIN CAPITAL LETTER REVERSED 018E -e, latin capital letter turned 018E -E, LATIN SMALL LETTER CLOSED OPEN 029A -E, LATIN SMALL LETTER CLOSED REVERSED OPEN 025E -E, LATIN SMALL LETTER OPEN 025B -E, LATIN SMALL LETTER REVERSED 0258 -E, LATIN SMALL LETTER REVERSED OPEN 025C -E, LATIN SMALL LETTER TURNED 01DD -E, SCRIPT CAPITAL 2130 -E, SCRIPT SMALL 212F -EARTH 2641 -Eastern Arabic-Indic Digits for Persian and Urdu 06F0 -ecu 20A0 -EIGHTH NOTE 266A -EIGHTH NOTES, BEAMED 266B -Eighths, Fractions 215B -EJECT SYMBOL 23CF -EK ONKAR, GURMUKHI 0A74 -el salvadorian currency 20A1 -ELECTRIC ARROW 2301 -electro-magnetic force, emf 2130 -electrolysis 21AF -Electrotechnical Symbols from IR 181 238D -element, unique 2129 -ELEMENT OF 2208 -ELEMENT OF, NOT AN 2209 -ELEMENT OF, SMALL 220A -ELEMENT OF OPENING DOWNWARDS 2AD9 -ELEMENT OF OPENING UPWARDS 27D2 -ELEMENT OF WITH DOT ABOVE 22F5 -ELEMENT OF WITH LONG HORIZONTAL STROKE 22F2 -ELEMENT OF WITH OVERBAR 22F6 -ELEMENT OF WITH OVERBAR, SMALL 22F7 -ELEMENT OF WITH TWO HORIZONTAL STROKES 22F9 -ELEMENT OF WITH UNDERBAR 22F8 -ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22F3 -ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE, SMALL 22F4 -ell, mathematical symbol 2113 -ELLIPSIS, HORIZONTAL 2026 -ELLIPSIS, MIDLINE HORIZONTAL 22EF -ELLIPSIS, UP RIGHT DIAGONAL 22F0 -ELLIPSIS, VERTICAL 22EE -elliptic function, weierstrass 2118 -EM DASH 2014 -EM QUAD 2001 -EM SPACE 2003 -EMBEDDING, LEFT-TO-RIGHT 202A -EMBEDDING, RIGHT-TO-LEFT 202B -emf 2130 -EMPHASIS MARK, ARMENIAN 055B -Emphasis Marks, Sidelining FE45 -EMPHASIS SYMBOL 2383 -EMPTY SET 2205 -Empty Sets 29B0 -EN DASH 2013 -EN QUAD 2000 -EN SPACE 2002 -Enclosed Alphanumerics 2460 -Enclosed CJK Letters and Ideographs 3200 -ENCLOSING CIRCLE, COMBINING 20DD -ENCLOSING CIRCLE BACKSLASH, COMBINING 20E0 -Enclosing Diacritics 20DD -ENCLOSING DIAMOND, COMBINING 20DF -ENCLOSING KEYCAP, COMBINING 20E3 -ENCLOSING SCREEN, COMBINING 20E2 -ENCLOSING SQUARE, COMBINING 20DE -ENCLOSING UPWARD POINTING TRIANGLE, COMBINING 20E4 -end 21F2 -end of guarded area 0097 -end of medium 0019 -end of medium, graphic for 237F -END OF MEDIUM, SYMBOL FOR 2419 -END OF PROOF 220E -end of selected area 0087 -end of text 0003 -END OF TEXT, SYMBOL FOR 2403 -end of transmission 0004 -end of transmission, graphic for 2301 -END OF TRANSMISSION, SYMBOL FOR 2404 -end of transmission block 0017 -END OF TRANSMISSION BLOCK, SYMBOL FOR 2417 -ENG, LATIN SMALL LETTER 014B -enotikon, greek 203F -enquiry 0005 -ENQUIRY, SYMBOL FOR 2405 -enter key 2324 -ENTER SYMBOL 2386 -ENVELOPE 2709 -epsilon, latin capital letter 0190 -epsilon, latin small letter 025B -epsilon, latin small letter closed 029A -epsilon, latin small letter closed reversed 025E -epsilon, reversed straight 03F6 -epsilon, reversed straight 220D -epsilon, straight 03F5 -epsilon, straight 220A -EPSILON SYMBOL, GREEK LUNATE 03F5 -EPSILON SYMBOL, GREEK REVERSED LUNATE 03F6 -EQUAL, DOUBLE COLON 2A74 -EQUAL, GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE 2A92 -EQUAL, GREATER-THAN ABOVE SIMILAR OR 2A8E -EQUAL, GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED 2A94 -EQUAL, GREATER-THAN CLOSED BY CURVE ABOVE SLANTED 2AA9 -EQUAL, LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE 2A91 -EQUAL, LESS-THAN ABOVE SIMILAR OR 2A8D -EQUAL, LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED 2A93 -EQUAL, LESS-THAN CLOSED BY CURVE ABOVE SLANTED 2AA8 -EQUAL ABOVE GREATER-THAN, LESS-THAN ABOVE DOUBLE-LINE 2A8B -EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL, LESS-THAN ABOVE SLANTED 2A93 -EQUAL ABOVE LESS-THAN, GREATER-THAN ABOVE DOUBLE-LINE 2A8C -EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL, GREATER-THAN ABOVE SLANTED 2A94 -EQUAL OR EQUAL TO, APPROXIMATELY 2A70 -EQUAL TO, ALL 224C -EQUAL TO, ALMOST 2248 -EQUAL TO, APPROXIMATELY 2245 -equal to, approximately 2257 -EQUAL TO, APPROXIMATELY EQUAL OR 2A70 -EQUAL TO, ASYMPTOTICALLY 2243 -EQUAL TO, CLOSED SUBSET OR 2AD1 -EQUAL TO, CLOSED SUPERSET OR 2AD2 -EQUAL TO, DELTA 225C -EQUAL TO, DOUBLE-LINE SLANTED GREATER-THAN OR 2AFA -EQUAL TO, DOUBLE-LINE SLANTED LESS-THAN OR 2AF9 -EQUAL TO, GEOMETRICALLY 2251 -EQUAL TO, GREATER-THAN AND SINGLE-LINE NOT 2A88 -EQUAL TO, GREATER-THAN OR 2265 -EQUAL TO, GREATER-THAN OR SLANTED 2A7E -EQUAL TO, LARGER THAN OR 2AAD -EQUAL TO, LESS-THAN AND SINGLE-LINE NOT 2A87 -EQUAL TO, LESS-THAN OR 2264 -EQUAL TO, LESS-THAN OR SLANTED 2A7D -EQUAL TO, NOT 2260 -EQUAL TO, PRECEDES ABOVE ALMOST 2AB7 -EQUAL TO, PRECEDES ABOVE NOT 2AB5 -EQUAL TO, PRECEDES ABOVE NOT ALMOST 2AB9 -EQUAL TO, PRECEDES ABOVE SINGLE-LINE NOT 2AB1 -EQUAL TO, QUESTIONED 225F -EQUAL TO, RING 2257 -EQUAL TO, RING IN 2256 -EQUAL TO, SMALLER THAN OR 2AAC -EQUAL TO, SUBSET OF ABOVE ALMOST 2AC9 -EQUAL TO, SUBSET OF ABOVE NOT 2ACB -EQUAL TO, SUCCEEDS ABOVE ALMOST 2AB8 -EQUAL TO, SUCCEEDS ABOVE NOT 2AB6 -EQUAL TO, SUCCEEDS ABOVE NOT ALMOST 2ABA -EQUAL TO, SUCCEEDS ABOVE SINGLE-LINE NOT 2AB2 -EQUAL TO, SUPERSET OF ABOVE ALMOST 2ACA -EQUAL TO, SUPERSET OF ABOVE NOT 2ACC -EQUAL TO ABOVE, COMBINING ALMOST 034C -equal to by definition 225C -EQUAL TO BY DEFINITION 225D -EQUAL TO OR GREATER-THAN, DOUBLE-LINE 2A9A -EQUAL TO OR GREATER-THAN, DOUBLE-LINE SLANTED 2A9C -EQUAL TO OR GREATER-THAN, SLANTED 2A96 -EQUAL TO OR GREATER-THAN WITH DOT INSIDE, SLANTED 2A98 -EQUAL TO OR LESS-THAN, DOUBLE-LINE 2A99 -EQUAL TO OR LESS-THAN, DOUBLE-LINE SLANTED 2A9B -EQUAL TO OR LESS-THAN, SLANTED 2A95 -EQUAL TO OR LESS-THAN WITH DOT INSIDE, SLANTED 2A97 -EQUAL TO WITH CIRCUMFLEX ACCENT, ALMOST 2A6F -EQUAL TO WITH DOT ABOVE, GREATER-THAN OR SLANTED 2A82 -EQUAL TO WITH DOT ABOVE, LESS-THAN OR SLANTED 2A81 -EQUAL TO WITH DOT ABOVE, SUBSET OF OR 2AC3 -EQUAL TO WITH DOT ABOVE, SUPERSET OF OR 2AC4 -EQUAL TO WITH DOT ABOVE LEFT, GREATER-THAN OR SLANTED 2A84 -EQUAL TO WITH DOT ABOVE RIGHT, LESS-THAN OR SLANTED 2A83 -EQUAL TO WITH DOT INSIDE, GREATER-THAN OR SLANTED 2A80 -EQUAL TO WITH DOT INSIDE, LESS-THAN OR SLANTED 2A7F -EQUALS, CIRCLED 229C -EQUALS, REVERSED TILDE 22CD -EQUALS, STAR 225B -EQUALS COLON 2255 -EQUALS SIGN 003D -EQUALS SIGN, PLUS SIGN ABOVE 2A72 -EQUALS SIGN, PRECEDES ABOVE 2AB3 -EQUALS SIGN, PRECEDES ABOVE SINGLE-LINE 2AAF -EQUALS SIGN, SIMILAR ABOVE GREATER-THAN ABOVE 2AA0 -EQUALS SIGN, SIMILAR ABOVE LESS-THAN ABOVE 2A9F -EQUALS SIGN, SUBSCRIPT 208C -EQUALS SIGN, SUBSET OF ABOVE 2AC5 -EQUALS SIGN, SUCCEEDS ABOVE 2AB4 -EQUALS SIGN, SUCCEEDS ABOVE SINGLE-LINE 2AB0 -EQUALS SIGN, SUPERSCRIPT 207C -EQUALS SIGN, SUPERSET OF ABOVE 2AC6 -EQUALS SIGN ABOVE PLUS SIGN 2A71 -EQUALS SIGN ABOVE TILDE OPERATOR 2A73 -EQUALS SIGN AND SLANTED PARALLEL 29E3 -EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE 29E4 -EQUALS SIGN BELOW, COMBINING 0347 -EQUALS SIGN WITH BUMPY ABOVE 2AAE -EQUALS SIGN WITH DOT BELOW 2A66 -EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW 2A77 -EQUALS SIGNS, THREE CONSECUTIVE 2A76 -EQUALS SIGNS, TWO CONSECUTIVE 2A75 -EQUALS WITH ASTERISK 2A6E -equiangular 225C -EQUIANGULAR TO 225A -equivalent, tautological 29E6 -EQUIVALENT TO 224D -EQUIVALENT TO, GEOMETRICALLY 224E -EQUIVALENT TO, STRICTLY 2263 -EQUIVALENT WITH FOUR DOTS ABOVE 2A78 -Era Names, Japanese 337B -ERASE TO THE LEFT 232B -ERASE TO THE RIGHT 2326 -error 212F -Error Bar Symbols 29EE -escape 001B -escape, data link 0010 -ESCAPE, SYMBOL FOR 241B -ESCAPE, SYMBOL FOR DATA LINK 2410 -escudo 0024 -ESH, LATIN CAPITAL LETTER 01A9 -ESH, LATIN SMALL LETTER 0283 -ESH, LATIN SMALL LETTER SQUAT REVERSED 0285 -ESH LOOP, LATIN LETTER REVERSED 01AA -ESTIMATED SYMBOL 212E -ESTIMATES 2259 -eszett 00DF -ET, TIRONIAN SIGN 204A -ETH, LATIN SMALL LETTER 00F0 -ethel 0153 -Ethiopic 1200 -ETHIOPIC COLON 1365 -ETHIOPIC COMMA 1363 -Ethiopic Digits 1369 -ETHIOPIC FULL STOP 1362 -ETHIOPIC QUESTION MARK 1367 -ETHIOPIC SEMICOLON 1364 -ETHIOPIC WORDSPACE 1361 -EULER CONSTANT 2107 -EURO SIGN 20AC -European Latin 0100 -european paragraph sign 00A7 -european section sign 00B6 -EXCESS 2239 -EXCLAMATION MARK 0021 -EXCLAMATION MARK, ARMENIAN 055C -EXCLAMATION MARK, DOUBLE 203C -EXCLAMATION MARK, INVERTED 00A1 -exclamation mark, latin letter 01C3 -EXCLAMATION MARK, QUESTION 2048 -EXCLAMATION MARK ORNAMENT, HEAVY 2762 -EXCLAMATION QUESTION MARK 2049 -EXISTS, THERE 2203 -Extended Additional, Latin 1E00 -Extended Arabic 0671 -Extended Cyrillic 048C -Extended for Minnan and Hakka, Chinese Bopomofo 31A0 -Extended Greek 1F00 -Extended-A, Latin 0100 -Extended-B, Latin 0180 -extension, arrows 23AF -EXTENSION, HORIZONTAL LINE 23AF -EXTENSION, INTEGRAL 23AE -EXTENSION, VERTICAL LINE 23D0 -Extension A, CJK Unified Ideographs 3400 -Extensions, Cyrillic 0450 -Extensions, IPA 0250 -Extensions, Katakana Phonetic 31F0 -Extensions, Special Characters 23AE -Extensions for Sanskrit and Tibetan, Mongolian 1880 -Extensions for Vietnamese, Latin 1EA0 -EZH, LATIN CAPITAL LETTER 01B7 -EZH, LATIN SMALL LETTER 0292 -EZH REVERSED, LATIN SMALL LETTER 01B9 -F, SCRIPT CAPITAL 2131 -F, TURNED CAPITAL 2132 -F WITH HOOK, LATIN SMALL LETTER 0192 -FACE, BLACK SMILING 263B -FACE, POSTAL MARK 3020 -FACE, WHITE FROWNING 2639 -FACE, WHITE SMILING 263A -FACSIMILE SIGN 213B -factorial 0021 -FAHRENHEIT, DEGREE 2109 -FALLING DIAGONAL SLASH, SQUARED 29C5 -FALLING DOTS, MINUS SIGN WITH 2A2B -feet 2032 -FEMALE SIGN 2640 -FEMININE ORDINAL INDICATOR 00AA -FENCE, DOTTED 2999 -FENCE, LEFT DOUBLE WIGGLY 29DA -FENCE, LEFT WIGGLY 29D8 -FENCE, RIGHT DOUBLE WIGGLY 29DB -FENCE, RIGHT WIGGLY 29D9 -Fences 2999 -Fences 29D8 -Fifths, Fractions 2155 -FIGURE DASH 2012 -FIGURE SPACE 2007 -file separator 001C -FILE SEPARATOR, SYMBOL FOR 241C -Finger Dingbats, Pointing Index 261A -finite function, z notation 20E6 -finite function, z notation 21FB -finite injection, z notation 2915 -FINITE PART INTEGRAL 2A0D -finite relation, z notation 21FC -finite surjection, z notation 2901 -finite surjective injection, z notation 2918 -FIRST QUARTER MOON 263D -first transfinite cardinal (countable) 2135 -Fish Tails 297C -FISHEYE 25C9 -fist 261E -FIVE, LATIN SMALL LETTER TONE 01BD -FIVE POINTED STAR, ARABIC 066D -FLAG, BLACK 2691 -FLAT SIGN, MUSIC 266D -FLOOR, LEFT 230A -FLORAL HEART BULLET, REVERSED ROTATED 2619 -florin currency symbol 0192 -folder 0192 -FOOT, SQUARE 23CD -FOONOTE MARKER, ARABIC 0602 -FOR ALL 2200 -FORCES 22A9 -FORKING 2ADC -Forks 2AD9 -Form and Chart Components 2500 -form feed 000C -form feed 21A1 -FORM FEED, SYMBOL FOR 240C -Format Control, Syriac 070F -Format Controls, Mongolian 180B -FORMATTING, POP DIRECTIONAL 202C -Formatting Characters 200C -Formatting Characters 2028 -Formatting Controls, Bidirectional 202A -forward difference 2206 -FOUR DOTS ABOVE, COMBINING 20DC -FOUR-PER-EM SPACE 2005 -fourier transform 2131 -fourth derivative 20DC -FOURTH ROOT 221C -fourth transfinite cardinal 2138 -Fourths, Fractions 00BC -FRACTION NUMERATOR ONE 215F -FRACTION ONE HALF, VULGAR 00BD -FRACTION ONE QUARTER, VULGAR 00BC -FRACTION SLASH 2044 -FRACTION THREE QUARTERS, VULGAR 00BE -Fractions 2153 -FRAGMENT, ARABIC TAIL FE73 -framus, white 29D6 -FRANC SIGN, FRENCH 20A3 -FRICATIVE, LATIN LETTER PHARYNGEAL VOICED 0295 -FROWN 2322 -FROWNING FACE, WHITE 2639 -FULL BLOCK 2588 -FULL OUTER JOIN 27D7 -FULL STOP 002E -FULL STOP, ARABIC 06D4 -FULL STOP, ARMENIAN 0589 -FULL STOP, ETHIOPIC 1362 -full stop, georgian 0589 -FULL STOP, IDEOGRAPHIC 3002 -FULL STOP, MONGOLIAN 1803 -Fullwidth ASCII Variants FF01 -Fullwidth Brackets FF5F -Fullwidth Forms, Halfwidth and FF00 -Fullwidth Symbol Variants FFE0 -FUNCTION, CIRCULATION 2A10 -function, gamma 0393 -function, z notation finite 20E6 -function, z notation finite 21FB -function, z notation partial 21F8 -FUNCTION APPLICATION 2061 -function symbol 0192 -fvs 180B -G, LATIN LETTER SMALL CAPITAL 0262 -G, LATIN SMALL LETTER SCRIPT 0261 -G, SCRIPT SMALL 210A -G, TURNED SANS-SERIF CAPITAL 2141 -game 2141 -GAMMA, DOUBLE-STRUCK CAPITAL 213E -GAMMA, DOUBLE-STRUCK SMALL 213D -GAMMA, LATIN CAPITAL LETTER 0194 -GAMMA, LATIN SMALL LETTER 0263 -gamma, latin small letter baby 0264 -GAMMA, MODIFIER LETTER SMALL 02E0 -gamma function 0393 -GB 2312 (Chinese), Based on 3100 -GEMINI 264A -General Punctuation 2000 -General Scripts Area 0000 -GENERIC MATERIALS, RECYCLING SYMBOL FOR 267A -Generic punctuation for Philippine scripts 1735 -GEOMETRIC PROPORTION 223A -Geometric Shapes 25A0 -GEOMETRICALLY EQUAL TO 2251 -GEOMETRICALLY EQUIVALENT TO 224E -Georgian 10A0 -Georgian Capital Letters 10A0 -georgian comma 00B7 -georgian full stop 0589 -GEORGIAN PARAGRAPH SEPARATOR 10FB -Georgian Small Letters 10D0 -german mark 2133 -GERMAN PENNY SIGN 20B0 -GETA MARK 3013 -GIMEL SYMBOL 2137 -GLEICH STARK 29E6 -glottal stop 02BC -GLOTTAL STOP, LATIN LETTER 0294 -GLOTTAL STOP, LATIN LETTER INVERTED 0296 -glottal stop, latin letter reversed 0295 -GLOTTAL STOP, MODIFIER LETTER 02C0 -GLOTTAL STOP, MODIFIER LETTER REVERSED 02C1 -GLOTTAL STOP, MODIFIER LETTER SMALL REVERSED 02E4 -Go Markers 2686 -Golden Number Runes 16EE -GRAPHEME JOINER, COMBINING 034F -Graphic Characters, Terminal 23B7 -Graphic Characters, Terminal 2596 -Graphic Pictures for Control Codes 2400 -Graphics, Control Code 25F0 -Graphics, Scan Lines For Terminal 23BA -Graphics for Control Codes 237B -grave, spacing 0060 -GRAVE ACCENT 0060 -GRAVE ACCENT, COMBINING 0300 -GRAVE ACCENT, COMBINING DOUBLE 030F -GRAVE ACCENT, DEVANAGARI 0953 -GRAVE ACCENT, MODIFIER LETTER 02CB -GRAVE ACCENT, MODIFIER LETTER LOW 02CE -grave accent, swedish 02DF -GRAVE ACCENT BELOW, COMBINING 0316 -GRAVE TONE MARK, COMBINING 0340 -GREATER-THAN, CIRCLED 29C1 -GREATER-THAN, DOUBLE NESTED 2AA2 -GREATER-THAN, DOUBLE-LINE EQUAL TO OR 2A9A -GREATER-THAN, DOUBLE-LINE SLANTED EQUAL TO OR 2A9C -GREATER-THAN, LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE 2A8B -GREATER-THAN, LESS-THAN ABOVE SIMILAR ABOVE 2A8F -GREATER-THAN, MUCH 226B -GREATER-THAN, SIMILAR OR 2A9E -GREATER-THAN, SLANTED EQUAL TO OR 2A96 -GREATER-THAN, TRIPLE NESTED 2AF8 -GREATER-THAN, VERY MUCH 22D9 -GREATER-THAN ABOVE DOUBLE-LINE EQUAL, LESS-THAN ABOVE 2A91 -GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN 2A8C -GREATER-THAN ABOVE EQUALS SIGN, SIMILAR ABOVE 2AA0 -GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL 2A92 -GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN 2A90 -GREATER-THAN ABOVE SIMILAR OR EQUAL 2A8E -GREATER-THAN ABOVE SLANTED EQUAL, LESS-THAN ABOVE SLANTED EQUAL ABOVE 2A93 -GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL 2A94 -GREATER-THAN AND NOT APPROXIMATE 2A8A -GREATER-THAN AND SINGLE-LINE NOT EQUAL TO 2A88 -GREATER-THAN BESIDE LESS-THAN 2AA5 -GREATER-THAN CLOSED BY CURVE 2AA7 -GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL 2AA9 -GREATER-THAN OR APPROXIMATE 2A86 -GREATER-THAN OR EQUAL TO 2265 -GREATER-THAN OR EQUAL TO, DOUBLE-LINE SLANTED 2AFA -GREATER-THAN OR SLANTED EQUAL TO 2A7E -GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE 2A82 -GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT 2A84 -GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE 2A80 -GREATER-THAN OVERLAPPING LESS-THAN 2AA4 -GREATER-THAN SIGN 003E -GREATER-THAN WITH CIRCLE INSIDE 2A7A -GREATER-THAN WITH DOT INSIDE, SLANTED EQUAL TO OR 2A98 -GREATER-THAN WITH QUESTION MARK ABOVE 2A7C -Greek, Diacritics for 0342 -Greek, Extended 1F00 -Greek and Coptic 0370 -Greek Capital Letters 0391 -greek currency 20AF -GREEK DIALYTIKA TONOS, COMBINING 0344 -greek enotikon 203F -GREEK KORONIS, COMBINING 0343 -greek middle dot 00B7 -greek non-spacing iota below 0345 -GREEK PERISPOMENI, COMBINING 0342 -GREEK QUESTION MARK 037E -GREEK SMALL LETTER IOTA, TURNED 2129 -Greek Small Letters 03B1 -Greek Symbols 03D0 -GREEK YPOGEGRAMMENI, COMBINING 0345 -group lock 21F0 -group separator 001D -GROUP SEPARATOR, SYMBOL FOR 241D -guarded area, end of 0097 -guarded area, start of 0096 -gui icons 231A -guillemet, left pointing 00AB -guillemet, left pointing single 2039 -guillemet, right pointing 00BB -guillemet, right pointing single 203A -Gujarati 0A80 -Gujarati Digits 0AE6 -Gujarati Letters 0A85 -GUJARATI RUPEE SIGN 0AF1 -Gurmukhi 0A00 -Gurmukhi Digits 0A66 -Gurmukhi Letters 0A05 -H, BLACK-LETTER CAPITAL 210C -H, COMBINING LATIN SMALL LETTER 036A -H, DOUBLE-STRUCK CAPITAL 210D -H, LATIN LETTER SMALL CAPITAL 029C -H, LATIN SMALL LETTER TURNED 0265 -H, MODIFIER LETTER SMALL 02B0 -H, SCRIPT CAPITAL 210B -hacek, combining 030C -hacek, modifier letter 02C7 -HAIR SPACE 200A -Hakka, Chinese Bopomofo Extended for Minnan and 31A0 -halant, bengali 09CD -halant, devanagari 094D -HALF, COMBINING DOUBLE TILDE LEFT FE22 -HALF, COMBINING LIGATURE LEFT FE20 -HALF, VULGAR FRACTION ONE 00BD -HALF CIRCLE, MULTIPLICATION SIGN IN LEFT 2A34 -HALF CIRCLE, MULTIPLICATION SIGN IN RIGHT 2A35 -HALF CIRCLE, PLUS SIGN IN LEFT 2A2D -HALF CIRCLE, PLUS SIGN IN RIGHT 2A2E -HALF FILL SPACE, IDEOGRAPHIC 303F -HALF INTEGRAL, TOP 2320 -Half Marks, Combining FE20 -HALF RING, MODIFIER LETTER CENTRED LEFT 02D3 -HALF RING, MODIFIER LETTER LEFT 02BF -HALF RING BELOW, COMBINING LEFT 031C -HALF RING BELOW, COMBINING RIGHT 0339 -HALF TRIANGULAR COLON, MODIFIER LETTER 02D1 -Halfwidth and Fullwidth Forms FF00 -Halfwidth Japanese Katakana Variants FF61 -Halfwidth Korean Hangul Variants FFA0 -hamiltonian function 210B -HAMMER AND SICKLE 262D -Han Ideographs 4E00 -HAND, VICTORY 270C -HAND, WRITING 270D -Hand Symbols, Pointing 261A -Hangul, Based on KS C 5601 (Korean) 3130 -HANGUL CHOSEONG FILLER 115F -Hangul Compatibility Jamo, Korean 3130 -Hangul Elements, Circled Korean 3260 -Hangul Elements, Parenthesized Korean 3200 -HANGUL FILLER 3164 -Hangul Jamo Combining Alphabet, Korean 1100 -HANGUL JUNGSEONG FILLER 1160 -Hangul Syllables, Circled Korean 326E -Hangul Syllables, Parenthesized Korean 320E -Hangul Syllables Area, Korean AC00 -Hangul Variants, Halfwidth Korean FFA0 -Hangzhou-style Numerals 3021 -Hanunoo 1720 -HANUNOO SIGN PAMUDPOD 1734 -Hanunóo-specific punctuation 1734 -HARPOON ABOVE, COMBINING LEFT 20D0 -hasant 09CD -hash 0023 -hat 0302 -hat 2229 -have a nice day! 263A -Hazard Dingbats 2620 -heading, start of 0001 -HEADING, SYMBOL FOR START OF 2401 -Heart Ornaments 2763 -HEAVY BALLOT X 2718 -HEAVY CHECK MARK 2714 -HEAVY MULTIPLICATION X 2716 -Hebrew 0590 -Hebrew Cantillation Marks 0591 -hebrew currency 20AA -Hebrew Letters 05D0 -Hebrew Points 05B0 -Hebrew Presentation Forms FB1D -HELM SYMBOL 2388 -HERMITIAN CONJUGATE MATRIX 22B9 -Hexagram Symbols, Yijing 4DC0 -hiding, z notation schema 29F9 -High Surrogates D800 -HIGH VOLTAGE SIGN 26A1 -HIGH-REVERSED-9 QUOTATION MARK, DOUBLE 201F -HIGH-REVERSED-9 QUOTATION MARK, SINGLE 201B -higher rank than 227B -hilbert space 210C -Hiragana, Based on JIS X 0208 (Japanese) 3040 -HIRAGANA DIGRAPH YORI 309F -HIRAGANA ITERATION MARK 309D -histogram marker 25AE -Historic Letters, Cyrillic 0460 -home 21B8 -home 21F1 -HOMOTHETIC 223B -HOMOTHETIC ABOVE, COMBINING 034B -Honorific Signs, Arabic 0610 -HOOK, MODIFIER LETTER RHOTIC 02DE -hook, nasal 0328 -HOOK ABOVE, COMBINING 0309 -HOOK BELOW, COMBINING PALATALIZED 0321 -HOOK BELOW, COMBINING RETROFLEX 0322 -HORIZONTAL BAR 2015 -HORIZONTAL BAR, CIRCLE WITH 29B5 -HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE, TRIPLE 2A68 -HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE, TRIPLE 2A69 -HORIZONTAL ELLIPSIS 2026 -HORIZONTAL ELLIPSIS, MIDLINE 22EF -HORIZONTAL LINE EXTENSION 23AF -HORIZONTAL RULE, LOZENGE DIVIDED BY 27E0 -horizontal tabulation 0009 -HORIZONTAL TABULATION, SYMBOL FOR 2409 -HORN, COMBINING 031B -HORN, LATIN SMALL LETTER RAMS 0264 -HOT BEVERAGE 2615 -HOT SPRINGS 2668 -HOURGLASS 231B -HOURGLASS, BLACK 29D7 -HOURGLASS, WHITE 29D6 -Hours, Telegraph Symbols for 3358 -HOUSE 2302 -HV, LATIN SMALL LETTER 0195 -HWAIR, LATIN CAPITAL LETTER 01F6 -HYPHEN 2010 -HYPHEN, ARMENIAN 058A -hyphen, discretionary 00AD -HYPHEN, KATAKANA-HIRAGANA DOUBLE 30A0 -HYPHEN, NON-BREAKING 2011 -HYPHEN, SOFT 00AD -HYPHEN BULLET 2043 -hyphen or minus sign 002D -HYPHEN-MINUS 002D -HYPHENATION POINT 2027 -hyphus 002D -HYSTERESIS SYMBOL 238E -I, BLACK-LETTER CAPITAL 2111 -I, COMBINING LATIN SMALL LETTER 0365 -I, DOUBLE-STRUCK ITALIC SMALL 2148 -I, LATIN LETTER SMALL CAPITAL 026A -I, LATIN SMALL LETTER DOTLESS 0131 -I, SCRIPT CAPITAL 2110 -I, SUPERSCRIPT LATIN SMALL LETTER 2071 -I WITH DOT ABOVE, LATIN CAPITAL LETTER 0130 -IBM CJK Compatibility Ideographs FA0E -icons, gui 231A -identical and parallel to 2A68 -IDENTICAL TO 2261 -IDENTICAL TO AND SLANTED PARALLEL 29E5 -IDENTICAL WITH DOT ABOVE 2A67 -Ideographic Annotation, Japanese Kanbun 3190 -IDEOGRAPHIC CLOSING MARK 3006 -IDEOGRAPHIC COMMA 3001 -Ideographic Description Characters 2FF0 -IDEOGRAPHIC FULL STOP 3002 -IDEOGRAPHIC HALF FILL SPACE 303F -IDEOGRAPHIC ITERATION MARK 3005 -IDEOGRAPHIC ITERATION MARK, VERTICAL 303B -IDEOGRAPHIC NUMBER ZERO 3007 -IDEOGRAPHIC SPACE 3000 -Ideographic Tone Marks 302A -Ideographs, Circled 3280 -Ideographs, CJK Compatibility F900 -Ideographs, CJK Unified 4E00 -Ideographs, Enclosed CJK Letters and 3200 -Ideographs, Han 4E00 -Ideographs, IBM CJK Compatibility FA0E -Ideographs, Parenthesized 3220 -Ideographs Area, CJK 3400 -Ideographs Extension A, CJK Unified 3400 -IDLE, SYMBOL FOR SYNCHRONOUS 2416 -idle, synchronous 0016 -IJ, LATIN SMALL LIGATURE 0133 -IMAGE OF 22B7 -IMAGE OF, SQUARE 228F -imaginary part 2111 -implies 22A2 -inches 2033 -included in set 2282 -includes in set 2283 -INCOMPLETE INFINITY 29DC -incorporated, japanese 337F -INCREASES AS 29E1 -INCREMENT 2206 -independence 2AEB -independent 2ADD -independent, not 2ADC -index 0084 -Index Finger Dingbats, Pointing 261A -indian currency 20A8 -inferior order to, of 2134 -INFINITY 221E -INFINITY, INCOMPLETE 29DC -INFINITY, TIE OVER 29DD -INFINITY NEGATED WITH VERTICAL BAR 29DE -INFORMATION SOURCE 2139 -INHIBIT ARABIC FORM SHAPING 206C -INHIBIT SYMMETRIC SWAPPING 206A -injection, z notation finite 2915 -injection, z notation finite surjective 2918 -injection, z notation partial 2914 -injection, z notation surjective 2917 -INSERTION POINT, CARET 2041 -INSERTION SYMBOL 2380 -integers, the set of 2124 -INTEGRAL 222B -INTEGRAL, CLOCKWISE 2231 -INTEGRAL, CLOCKWISE CONTOUR 2232 -INTEGRAL, CONTOUR 222E -INTEGRAL, DOUBLE 222C -integral, riemann 211B -INTEGRAL, SURFACE 222F -INTEGRAL, TOP HALF 2320 -INTEGRAL, TRIPLE 222D -INTEGRAL, VOLUME 2230 -Integrals, Summations and 2A0A -INTERCALATE 22BA -INTERIOR PRODUCT 2A3C -INTERIOR PRODUCT, RIGHTHAND 2A3D -interleave 2AF4 -Interlinear Annotation FFF9 -Internal Codes, Process FDD0 -International Phonetic Alphabet 0250 -INTERROBANG 203D -INTERSECTION 2229 -INTERSECTION, DOUBLE 22D2 -INTERSECTION, INTEGRAL WITH 2A19 -INTERSECTION, N-ARY 22C2 -intersection, proper 22D4 -INTERSECTION, TRANSVERSAL 2ADB -INTERSECTION OPERATOR, N-ARY SQUARE 2A05 -INTERSECTION WITH DOT 2A40 -Intersections and Unions 2A40 -introducer, control sequence 009B -introducer, single character 009A -Inverse Numbers, Circled 2776 -INVERTED BREVE, COMBINING 0311 -INVERTED BREVE, COMBINING DOUBLE 0361 -INVERTED BREVE BELOW, COMBINING 032F -INVERTED BRIDGE BELOW, COMBINING 033A -INVERTED DOUBLE ARCH BELOW, COMBINING 032B -INVERTED EXCLAMATION MARK 00A1 -INVERTED GLOTTAL STOP, LATIN LETTER 0296 -INVERTED LAZY S 223E -INVERTED OHM SIGN 2127 -INVERTED QUESTION MARK 00BF -INVERTED R, LATIN LETTER SMALL CAPITAL 0281 -INVERTED R, MODIFIER LETTER SMALL CAPITAL 02B6 -INVERTED UNDERTIE 2054 -Invisible Operators 2063 -IOTA, LATIN CAPITAL LETTER 0196 -IOTA, LATIN SMALL LETTER 0269 -IOTA, TURNED GREEK SMALL LETTER 2129 -iota below, greek non-spacing 0345 -IPA, Diacritics for 0346 -IPA Extensions 0250 -IR 181, Electrotechnical Symbols from 238D -iran, symbol of 262B -irish punt 00A3 -ISCII 1988 (Devanagari), Based on 0901 -ISO 8859-1 (Latin-1), Based on 00A0 -ISO 8859-2, -3, -4, -9 (European Latin), Based on 0100 -ISO 8859-5 (Cyrillic), Based on 0400 -ISO 8859-6 (Arabic), Based on 0600 -ISO 8859-7 (Greek), Based on 0370 -ISO 8859-8 (Hebrew), Based on 05D0 -ISO 9995-7, Keyboard Symbols from 2380 -ISO 9995-7, Keyboard Symbols from 2396 -israeli currency 20AA -italian currency 20A4 -Italic Mathematical Symbols, Double-Struck 2145 -ITC Zapf Dingbats Series 100 2700 -ITERATION MARK, HIRAGANA 309D -ITERATION MARK, IDEOGRAPHIC 3005 -ITERATION MARK, KATAKANA 30FD -ITERATION MARK, VERTICAL IDEOGRAPHIC 303B -ivy leaf 2767 -J, DOUBLE-STRUCK ITALIC SMALL 2149 -J, MODIFIER LETTER SMALL 02B2 -jack 2749 -Jamo, Korean Hangul Compatibility 3130 -Jamo Combining Alphabet, Korean Hangul 1100 -Japanese Chess Symbols 2616 -Japanese Era Names 337B -Japanese Hiragana 3040 -japanese incorporated 337F -JAPANESE INDUSTRIAL STANDARD SYMBOL 3004 -Japanese Kanbun (Ideographic Annotation) 3190 -Japanese Katakana 30A0 -Japanese Katakana, Circled 32D0 -Japanese Katakana Variants, Halfwidth FF61 -Japanese Katakana Words, Squared 3300 -japanese kome 203B -JERUSALEM, CROSS OF 2629 -jis composition circle 20DD -JIS X 0208, Based on 3040 -JIS X 0213 Compatibility Ideographs FA30 -JOIN 2A1D -JOIN, FULL OUTER 27D7 -JOIN, LEFT OUTER 27D5 -JOIN, RIGHT OUTER 27D6 -JOINER, COMBINING GRAPHEME 034F -JOINER, WORD 2060 -JOINER, ZERO WIDTH 200D -jot, apl 2218 -JUPITER 2643 -justification, character tabulation with 0089 -K, LATIN SMALL LETTER TURNED 029E -kabusiki-gaisya 337F -Kana Repeat Marks 3031 -Kanbun (Ideographic Annotation), Japanese 3190 -Kangxi Radicals 2F00 -Kannada 0C80 -Kannada Digits 0CE6 -Kannada Letters 0C85 -Katakana, Circled Japanese 32D0 -Katakana, Japanese 30A0 -KATAKANA DIGRAPH KOTO 30FF -KATAKANA ITERATION MARK 30FD -KATAKANA MIDDLE DOT 30FB -Katakana Phonetic Extensions 31F0 -Katakana Variants, Halfwidth Japanese FF61 -Katakana Words, Squared Japanese 3300 -KATAKANA-HIRAGANA DOUBLE HYPHEN 30A0 -KATAKANA-HIRAGANA PROLONGED SOUND MARK 30FC -KATAKANA-HIRAGANA VOICED SOUND MARK 309B -KATAKANA-HIRAGANA VOICED SOUND MARK, COMBINING 3099 -KELVIN SIGN 212A -ket 27E7 -key, clear 2327 -key, command 2318 -key, delete to the left 232B -key, delete to the right 2326 -key, enter 2324 -KEY, OPTION 2325 -KEY SYMBOL, ALTERNATIVE 2387 -KEY SYMBOL, DECIMAL SEPARATOR 2396 -KEYBOARD 2328 -Keyboard Symbols 2324 -Keyboard Symbols from ISO 9995-7 2380 -Keyboard Symbols from ISO 9995-7 2396 -Keyboard and UI Symbols 23CE -KEYCAP, COMBINING ENCLOSING 20E3 -Khmer 1780 -Khmer Digits 17E0 -Khmer Lunar Date Symbols 19E0 -Khmer Symbols 19E0 -Khmer Symbols for Divination Lore 17F0 -KIP SIGN 20AD -kome, japanese 203B -Komi Letters, Cyrillic 0500 -Koranic Annotation Signs 06D6 -korean currency 20A9 -Korean Hangul Compatibility Jamo 3130 -Korean Hangul Elements, Circled 3260 -Korean Hangul Elements, Parenthesized 3200 -Korean Hangul Jamo Combining Alphabet 1100 -Korean Hangul Syllables, Circled 326E -Korean Hangul Syllables, Parenthesized 320E -Korean Hangul Syllables Area AC00 -Korean Hangul Variants, Halfwidth FFA0 -KOREAN STANDARD SYMBOL 327F -KORONIS, COMBINING GREEK 0343 -KOTO, KATAKANA DIGRAPH 30FF -KRA, LATIN SMALL LETTER 0138 -KS C 5601 (Korean Hangul), Based on 3130 -L, LATIN LETTER SMALL CAPITAL 029F -L, MODIFIER LETTER SMALL 02E1 -L, REVERSED SANS-SERIF CAPITAL 2143 -L, SCRIPT CAPITAL 2112 -L, SCRIPT SMALL 2113 -L, TURNED SANS-SERIF CAPITAL 2142 -L B BAR SYMBOL 2114 -L WITH MIDDLE DOT, LATIN SMALL LETTER 0140 -L WITH MIDDLE TILDE, LATIN SMALL LETTER 026B -lambda bar, latin letter 019B -Lao 0E80 -Lao Digits 0ED0 -Lao Letters 0E81 -laotian currency 20AD -laplace operator 2206 -laplace operator 2207 -laplace symbol 2112 -LARGE AND, SLOPING 2A58 -large bowtie 2A1D -LARGE DOWN TACK 27D9 -LARGE LEFT TRIANGLE OPERATOR 2A1E -LARGE OR, SLOPING 2A57 -LARGE TRIPLE VERTICAL BAR OPERATOR 2AFC -LARGE UP TACK 27D8 -LARGER THAN 2AAB -LARGER THAN OR EQUAL TO 2AAD -LAST QUARTER MOON 263E -LATERAL CLICK, LATIN LETTER 01C1 -Latin, Based on ISO 8859-2, -3, -4, -9 (European) 0100 -Latin, C0 Controls and Basic 0000 -Latin, European 0100 -Latin Abbreviations, Squared 3371 -LATIN CAPITAL LETTER N WITH LONG RIGHT LEG 0220 -Latin Capital Letters 0041 -LATIN CROSS 271D -Latin Extended Additional 1E00 -Latin Extended-A 0100 -Latin Extended-B 0180 -Latin Extensions for Vietnamese 1EA0 -Latin Letters, Circled 24B6 -Latin Letters, Parenthesized 249C -Latin Letters, Phonetic Modifiers Derived from 02B0 -Latin Ligatures FB00 -Latin Small Letters 0061 -Latin Small Letters, Combining 0363 -Latin-1, ISO 8859-1 aka 00A0 -Latin-1 Supplement, C1 Controls and 0080 -lazy s 223D -LAZY S, INVERTED 223E -LEADER, ONE DOT 2024 -leader, three dot 2026 -LEADER, TWO DOT 2025 -leaf, aldus 2766 -leaf, ivy 2767 -LEFT-TO-RIGHT EMBEDDING 202A -LEFT-TO-RIGHT MARK 200E -LEFT-TO-RIGHT OVERRIDE 202D -leftward tab 21E4 -LEG, LATIN CAPITAL LETTER N WITH LONG RIGHT 0220 -LENTICULAR BRACKET, LEFT BLACK 3010 -LENTICULAR BRACKET, LEFT WHITE 3016 -LEO 264C -LESS-THAN, CIRCLED 29C0 -LESS-THAN, DOUBLE NESTED 2AA1 -LESS-THAN, DOUBLE-LINE EQUAL TO OR 2A99 -LESS-THAN, DOUBLE-LINE SLANTED EQUAL TO OR 2A9B -LESS-THAN, GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE 2A8C -LESS-THAN, GREATER-THAN ABOVE SIMILAR ABOVE 2A90 -LESS-THAN, GREATER-THAN BESIDE 2AA5 -LESS-THAN, GREATER-THAN OVERLAPPING 2AA4 -LESS-THAN, MUCH 226A -LESS-THAN, SIMILAR OR 2A9D -LESS-THAN, SLANTED EQUAL TO OR 2A95 -LESS-THAN, TRIPLE NESTED 2AF7 -LESS-THAN, VERY MUCH 22D8 -LESS-THAN ABOVE DOUBLE-LINE EQUAL, GREATER-THAN ABOVE 2A92 -LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN 2A8B -LESS-THAN ABOVE EQUALS SIGN, SIMILAR ABOVE 2A9F -LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL 2A91 -LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN 2A8F -LESS-THAN ABOVE SIMILAR OR EQUAL 2A8D -LESS-THAN ABOVE SLANTED EQUAL, GREATER-THAN ABOVE SLANTED EQUAL ABOVE 2A94 -LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL 2A93 -LESS-THAN AND NOT APPROXIMATE 2A89 -LESS-THAN AND SINGLE-LINE NOT EQUAL TO 2A87 -LESS-THAN CLOSED BY CURVE 2AA6 -LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL 2AA8 -LESS-THAN OR APPROXIMATE 2A85 -LESS-THAN OR EQUAL TO 2264 -LESS-THAN OR EQUAL TO, DOUBLE-LINE SLANTED 2AF9 -LESS-THAN OR SLANTED EQUAL TO 2A7D -LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE 2A81 -LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT 2A83 -LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE 2A7F -LESS-THAN SIGN 003C -LESS-THAN WITH CIRCLE INSIDE 2A79 -LESS-THAN WITH DOT INSIDE, SLANTED EQUAL TO OR 2A97 -LESS-THAN WITH QUESTION MARK ABOVE 2A7B -LESS-THAN WITH UNDERBAR, DOUBLE NESTED 2AA3 -Letterlike Symbols 2100 -level 2 lock 21EB -level 3 lock 21EF -level 3 select 21EE -LEZH, LATIN SMALL LETTER 026E -lf 000A -LIABILITY SIGN, LIMITED 32CF -LIBRA 264E -ligature ae, latin small 00E6 -LIGATURE IJ, LATIN SMALL 0133 -LIGATURE LEFT HALF, COMBINING FE20 -LIGATURE OE, LATIN SMALL 0153 -ligature tie 0361 -Ligatures, Armenian FB13 -Ligatures, Latin FB00 -LIGHTNING 2607 -LIMIT, APPROACHES THE 2250 -Limbu 1900 -Limbu Digits 1946 -LIMITED LIABILITY SIGN 32CF -LINE, AEGEAN WORD SEPARATOR 10100 -line, beginning of 2310 -LINE, CENTRELINE LOW FE4E -LINE, COMBINING DOUBLE LOW 0333 -LINE, COMBINING LOW 0332 -LINE, DASHED LOW FE4D -LINE, DOUBLE LOW 2017 -LINE, DOUBLE VERTICAL 2016 -LINE, LOW 005F -LINE, MODIFIER LETTER LOW VERTICAL 02CC -LINE, MODIFIER LETTER VERTICAL 02C8 -line, new 21B5 -line, next 0085 -LINE, VERTICAL 007C -LINE, WAVY 2307 -LINE, WAVY LOW FE4F -LINE ABOVE, COMBINING DOUBLE VERTICAL 030E -LINE ABOVE, COMBINING VERTICAL 030D -LINE BELOW, COMBINING DOUBLE VERTICAL 0348 -LINE BELOW, COMBINING VERTICAL 0329 -line down, partial 008B -line feed 000A -line feed 21B4 -line feed, reverse 008D -LINE FEED, SYMBOL FOR 240A -line marker 2319 -LINE OVERLAY, COMBINING LONG VERTICAL 20D2 -LINE OVERLAY, COMBINING SHORT VERTICAL 20D3 -LINE SEPARATOR 2028 -LINE SYMBOL, CENTRE 2104 -line tabulation set 008A -line up, partial 008C -LINE WITH MIDDLE DOT, VERTICAL 237F -Linear B Ideograms 10080 -Linear B Syllabary 10000 -Lines For Terminal Graphics, Scan 23BA -Lira, Italian 00A3 -LIRA SIGN 20A4 -liter 2113 -Livonian, Additions for 022A -LOCATION SIGN, TELEPHONE 2706 -lock, caps 21EA -lock, caps 21EC -lock, group 21F0 -lock, level 2 21EB -lock, level 3 21EF -lock, numerics 21ED -Logic Operators, Modal 27E0 -LOGICAL AND 2227 -LOGICAL AND, CURLY 22CF -LOGICAL AND, INTERSECTION WITH 2A44 -LOGICAL AND, N-ARY 22C0 -LOGICAL AND OPERATOR, TWO 2A07 -Logical Ands and Ors 2A51 -LOGICAL OR 2228 -LOGICAL OR, CURLY 22CE -LOGICAL OR, N-ARY 22C1 -LOGICAL OR, UNION WITH 2A45 -LOGICAL OR OPERATOR, TWO 2A08 -long 0304 -Long Arrows 27F5 -long cross 2020 -long dash 2015 -LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL 2AE6 -LONG HORIZONTAL STROKE, CONTAINS WITH 22FA -LONG HORIZONTAL STROKE, ELEMENT OF WITH 22F2 -LONG LEFT TACK 27DE -LONG RIGHT LEG, LATIN CAPITAL LETTER N WITH 0220 -LONG RIGHT TACK 27DD -LONG S, LATIN SMALL LETTER 017F -long slash overlay 0338 -LONG SOLIDUS OVERLAY, COMBINING 0338 -LONG STROKE OVERLAY, COMBINING 0336 -LONG VERTICAL LINE OVERLAY, COMBINING 20D2 -LORRAINE, CROSS OF 2628 -LOW ACUTE ACCENT, MODIFIER LETTER 02CF -LOW ASTERISK 204E -low double comma quotation mark 201E -LOW DOUBLE PRIME QUOTATION MARK 301F -LOW GRAVE ACCENT, MODIFIER LETTER 02CE -LOW LINE 005F -LOW LINE, CENTRELINE FE4E -LOW LINE, COMBINING 0332 -LOW LINE, COMBINING DOUBLE 0333 -LOW LINE, DASHED FE4D -LOW LINE, DOUBLE 2017 -LOW LINE, WAVY FE4F -LOW MACRON, MODIFIER LETTER 02CD -low single comma quotation mark 201A -Low Surrogates DC00 -LOW VERTICAL LINE, MODIFIER LETTER 02CC -LOW-9 QUOTATION MARK, DOUBLE 201E -LOW-9 QUOTATION MARK, SINGLE 201A -lower rank than 227A -LOZENGE 25CA -LOZENGE, BLACK 29EB -LOZENGE, SQUARE 2311 -LOZENGE DIVIDED BY HORIZONTAL RULE 27E0 -lre 202A -lrm 200E -lro 202D -M, COMBINING LATIN SMALL LETTER 036B -M, LATIN CAPITAL LETTER TURNED 019C -M, LATIN SMALL LETTER TURNED 026F -M, SCRIPT CAPITAL 2133 -m-matrix 2133 -MACRON 00AF -MACRON, COMBINING 0304 -MACRON, MODIFIER LETTER 02C9 -MACRON, MODIFIER LETTER LOW 02CD -macron, spacing 00AF -MACRON BELOW, COMBINING 0331 -Malayalam 0D00 -Malayalam Digits 0D66 -Malayalam Letters 0D05 -MALE SIGN 2642 -MALTESE CROSS 2720 -Manchu Letters, Mongolian 1873 -Map Markers 2690 -mapping, bijective 2916 -maps from 27FB -maps from 2906 -maps to 27FC -maps to 2905 -maps to 2907 -mark, german 2133 -marker, histogram 25AE -Markers, Go 2686 -Markers, Map 2690 -mars 2642 -MASCULINE ORDINAL INDICATOR 00BA -MASU MARK 303C -MATERIALS, RECYCLING SYMBOL FOR GENERIC 267A -Mathematical Brackets 27E6 -Mathematical Operators 2200 -Mathematical Operators, Supplemental 2A00 -MATHEMATICAL SPACE, MEDIUM 205F -Mathematical Symbols, Double-Struck Italic 2145 -Mathematical Symbols-A, Miscellaneous 27C0 -Mathematical Symbols-B, Miscellaneous 2980 -MATRIX, HERMITIAN CONJUGATE 22B9 -MEASURED ANGLE 2221 -Measured Angles, Angles and 299B -MEASURED BY 225E -Medieval Superscript Letter Diacritics 0363 -medium, end of 0019 -MEDIUM, SYMBOL FOR END OF 2419 -MEDIUM MATHEMATICAL SPACE 205F -MEDIUM SMALL SQUARE, BLACK 25FE -MEDIUM SMALL SQUARE, WHITE 25FD -MEDIUM SQUARE, BLACK 25FC -MEDIUM SQUARE, WHITE 25FB -MEMBER, CONTAINS AS 220B -MEMBER, SMALL CONTAINS AS 220D -MEMBER OF DOUBLE VERTICAL, LONG DASH FROM LEFT 2AE6 -MEMBERSHIP, Z NOTATION BAG 22FF -MERCURY 263F -merge 2A07 -message, privacy 009E -message waiting 0095 -mho 2127 -MICRO SIGN 00B5 -mid space 2005 -MIDDLE DOT 00B7 -middle dot, greek 00B7 -MIDDLE DOT, KATAKANA 30FB -MIDDLE DOT, LATIN SMALL LETTER L WITH 0140 -MIDDLE DOT, VERTICAL LINE WITH 237F -MIDDLE TILDE, LATIN CAPITAL LETTER O WITH 019F -MIDDLE TILDE, LATIN SMALL LETTER L WITH 026B -MIDLINE HORIZONTAL ELLIPSIS 22EF -midpoint 00B7 -MILL SIGN 20A5 -MILLE SIGN, PER 2030 -milreis 0024 -minim 264F -minim (alternate glyph) 264D -Minnan and Hakka, Chinese Bopomofo Extended for 31A0 -MINUS, CIRCLED 2296 -MINUS, DOT 2238 -MINUS, SET 2216 -MINUS, SQUARED 229F -MINUS, SUBSCRIPT 208B -MINUS, SUPERSCRIPT 207B -MINUS SIGN 2212 -MINUS SIGN, COMMERCIAL 2052 -minus sign, hyphen or 002D -MINUS SIGN, MODIFIER LETTER 02D7 -MINUS SIGN, UNION WITH 2A41 -MINUS SIGN BELOW, COMBINING 0320 -MINUS SIGN IN TRIANGLE 2A3A -Minus Sign Operators, Plus and 2A22 -MINUS SIMILAR, SIMILAR 2A6C -MINUS TILDE 2242 -MINUS-OR-PLUS SIGN 2213 -minutes 2032 -MINY 29FF -Miscellaneous Mathematical Symbols-A 27C0 -Miscellaneous Mathematical Symbols-B 2980 -Miscellaneous Symbols 2600 -Miscellaneous Symbols and Arrows 2B00 -Miscellaneous Technical 2300 -MISRA, ARABIC SIGN 060F -mmsp 205F -Modal Logic Operators 27E0 -MODELS 22A7 -Modifier Letters, Spacing 02B0 -MODULO TWO SUM 2A0A -Mongolian 1800 -MONGOLIAN COLON 1804 -MONGOLIAN COMMA 1802 -mongolian currency 20AE -Mongolian Digits 1810 -Mongolian Extensions for Sanskrit and Tibetan 1880 -Mongolian Format Controls 180B -MONGOLIAN FULL STOP 1803 -Mongolian Manchu Letters 1873 -Mongolian Sibe Letters 185D -Mongolian Todo Letters 1843 -Monogram and Digram Symbols, Yijing 268C -Monogram Symbol, Tai Xuan Jing 1D300 -MONOSTABLE SYMBOL 238D -MONTH SIGN, TAMIL 0BF4 -Months, Enclosed CJK Letters and 3200 -Months, Telegraph Symbols for 32C0 -MOON, FIRST QUARTER 263D -MOON, LAST QUARTER 263E -most positive 223E -MUCH GREATER-THAN 226B -MUCH GREATER-THAN, VERY 22D9 -MUCH LESS-THAN 226A -MUCH LESS-THAN, VERY 22D8 -MULTIMAP 22B8 -MULTIMAP, DOUBLE-ENDED 29DF -MULTIMAP, LEFT 27DC -MULTIPLICATION, MULTISET 228D -Multiplication and Division Sign Operators 2A2F -MULTIPLICATION SIGN 00D7 -MULTIPLICATION SIGN BELOW, SUBSET WITH 2AC1 -MULTIPLICATION SIGN BELOW, SUPERSET WITH 2AC2 -MULTIPLICATION X 2715 -MULTIPLICATION X, HEAVY 2716 -MULTISET 228C -MULTISET MULTIPLICATION 228D -MULTISET UNION 228E -MUSIC FLAT SIGN 266D -MUSIC NATURAL SIGN 266E -MUSIC SHARP SIGN 266F -Musical Symbols 2669 -mutton 2003 -mutton quad 2001 -mvs 180E -Myanmar 1000 -Myanmar Digits 1040 -N, DOUBLE-STRUCK CAPITAL 2115 -N, LATIN LETTER SMALL CAPITAL 0274 -N WITH LONG RIGHT LEG, LATIN CAPITAL LETTER 0220 -N-ARY COPRODUCT 2210 -n-ary dijkstra choice 2AFF -N-ARY INTERSECTION 22C2 -N-ARY LOGICAL AND 22C0 -N-ARY LOGICAL OR 22C1 -N-ary Operators 2A00 -N-ARY PRODUCT 220F -N-ARY SUMMATION 2211 -N-ARY SUMMATION, DOUBLE-STRUCK 2140 -N-ARY UNION 22C3 -N-ARY WHITE VERTICAL BAR 2AFF -NABLA 2207 -NAIRA SIGN 20A6 -NAND 22BC -nang 0323 -NARROW NO-BREAK SPACE 202F -nasal hook 0328 -NATIONAL DIGIT SHAPES 206E -natural number 2115 -NATURAL SIGN, MUSIC 266E -nbsp 0080 -necessarily satisfies 2AF1 -NEGATED WITH VERTICAL BAR, INFINITY 29DE -negation 20D3 -NEGATION SLASH, DOES NOT DIVIDE WITH REVERSED 2AEE -negative acknowledge 0015 -negative acknowledge, graphic for 237B -NEGATIVE ACKNOWLEDGE, SYMBOL FOR 2415 -NEPTUNE 2646 -never (modal operator) 27E1 -never (modal operator), was 27E2 -never be (modal operator), will 27E3 -new line 21B5 -NEW SHEQEL SIGN 20AA -NEWLINE, SYMBOL FOR 2424 -next line 0085 -NEXT PAGE 2398 -NIB, BLACK 2712 -nigerian currency 20A6 -nim-addition 2A27 -nnbsp 202F -no break here 0083 -no break space, graphic for 237D -NO-BREAK SPACE 00A0 -NO-BREAK SPACE, NARROW 202F -NO-BREAK SPACE, ZERO WIDTH FEFF -NODE, ASCENDING 260A -NODE, DESCENDING 260B -NOMINAL DIGIT SHAPES 206F -NON-BREAKING HYPHEN 2011 -non-breaking space 00A0 -NON-JOINER, ZERO WIDTH 200C -non-theorem 22A3 -Noncharacters FDD0 -Noncharacters FFFE -Noncharacters 1FFFE -Noncharacters 2FFFE -Noncharacters 3FFFE -Noncharacters 4FFFE -Noncharacters 5FFFE -Noncharacters 6FFFE -Noncharacters 7FFFE -Noncharacters 8FFFE -Noncharacters 9FFFE -Noncharacters AFFFE -Noncharacters BFFFE -Noncharacters CFFFE -Noncharacters DFFFE -Noncharacters EFFFE -Noncharacters FFFFE -Noncharacters 10FFFE -NONFORKING 2ADD -NOR 22BD -NORMAL SUBGROUP, CONTAINS AS 22B3 -NORMAL SUBGROUP OF 22B2 -not 223C -Not a Character FFFE -Not a Character FFFF -NOT ALMOST EQUAL TO, PRECEDES ABOVE 2AB9 -NOT ALMOST EQUAL TO, SUCCEEDS ABOVE 2ABA -NOT AN ELEMENT OF 2209 -NOT APPROXIMATE, GREATER-THAN AND 2A8A -NOT APPROXIMATE, LESS-THAN AND 2A89 -NOT CHECK MARK 237B -NOT DIVIDE WITH REVERSED NEGATION SLASH, DOES 2AEE -NOT EQUAL TO 2260 -NOT EQUAL TO, GREATER-THAN AND SINGLE-LINE 2A88 -NOT EQUAL TO, LESS-THAN AND SINGLE-LINE 2A87 -NOT EQUAL TO, PRECEDES ABOVE 2AB5 -NOT EQUAL TO, PRECEDES ABOVE SINGLE-LINE 2AB1 -NOT EQUAL TO, SUBSET OF ABOVE 2ACB -NOT EQUAL TO, SUCCEEDS ABOVE 2AB6 -NOT EQUAL TO, SUCCEEDS ABOVE SINGLE-LINE 2AB2 -NOT EQUAL TO, SUPERSET OF ABOVE 2ACC -not independent 2ADC -NOT SIGN 00AC -NOT SIGN, DOUBLE STROKE 2AEC -NOT SIGN, REVERSED 2310 -NOT SIGN, REVERSED DOUBLE STROKE 2AED -NOT SIGN, TURNED 2319 -NOT TILDE ABOVE, COMBINING 034A -not yield, does 22A3 -NOTE, EIGHTH 266A -NOTE, QUARTER 2669 -NOTES, BEAMED EIGHTH 266B -NOTES, BEAMED SIXTEENTH 266C -null 0000 -NULL, SYMBOL FOR 2400 -null set 2205 -number, natural 2115 -Number Forms 2150 -Number Runes, Golden 16EE -NUMBER SIGN 0023 -NUBMER SIGN, ARABIC 0600 -NUMBER SIGN, TAMIl 0BFA -number symbol, real 210A -NUMBER ZERO, IDEOGRAPHIC 3007 -Numbers, Aegean 10100 -Numbers, Circled 2460 -Numbers, Circled 3251 -Numbers, Circled 32B1 -Numbers, Circled Inverse 2776 -Numbers, Double Circled 24F5 -Numbers, Parenthesized 2474 -numbers, the set of complex 2102 -numbers, the set of rational 211A -numbers, the set of real 211D -Numbers, White On Black Circled 24EB -Numbers Period 2488 -Numerals, Hangzhou-style 3021 -Numerals, Old Italic 10320 -Numerals, Roman 2160 -NUMERATOR ONE, FRACTION 215F -numerics lock 21ED -NUMERO SIGN 2116 -nut 2002 -O, COMBINING LATIN SMALL LETTER 0366 -o, latin capital letter barred 019F -O, LATIN CAPITAL LETTER OPEN 0186 -O, LATIN SMALL LETTER BARRED 0275 -O, LATIN SMALL LETTER OPEN 0254 -O, SCRIPT SMALL 2134 -o bar 019F -o bar 0275 -o e, latin small letter 0153 -O WITH MIDDLE TILDE, LATIN CAPITAL LETTER 019F -obelisk 2020 -obelisk, double 2021 -OBJECT REPLACEMENT CHARACTER FFFC -OCR, Optical Character Recognition 2440 -octothorpe 0023 -OE, LATIN LETTER SMALL CAPITAL 0276 -OE, LATIN SMALL LIGATURE 0153 -Ogham 1680 -OGHAM SPACE MARK 1680 -OGONEK 02DB -OGONEK, COMBINING 0328 -OHM SIGN 2126 -OHM SIGN, INVERTED 2127 -OI, LATIN SMALL LETTER 01A3 -OM, DEVANAGARI 0950 -OMEGA, LATIN SMALL LETTER CLOSED 0277 -ONE, FRACTION NUMERATOR 215F -ONE, SUPERSCRIPT 00B9 -ONE DOT LEADER 2024 -ONE HALF, VULGAR FRACTION 00BD -ONE QUARTER, VULGAR FRACTION 00BC -OPEN BOX 2423 -OPEN BOX, SHOULDERED 237D -OPEN E, LATIN CAPITAL LETTER 0190 -OPEN E, LATIN SMALL LETTER 025B -OPEN E, LATIN SMALL LETTER CLOSED 029A -OPEN E, LATIN SMALL LETTER CLOSED REVERSED 025E -OPEN E, LATIN SMALL LETTER REVERSED 025C -OPEN O, LATIN CAPITAL LETTER 0186 -OPEN O, LATIN SMALL LETTER 0254 -opening brace 007B -opening curly bracket 007B -opening parenthesis 0028 -opening square bracket 005B -operating system command 009D -OPERATOR, ASTERISK 2217 -OPERATOR, BULLET 2219 -OPERATOR, CIRCLED ASTERISK 229B -OPERATOR, CIRCLED DOT 2299 -OPERATOR, CIRCLED RING 229A -OPERATOR, DIAMOND 22C4 -OPERATOR, DOT 22C5 -OPERATOR, RING 2218 -OPERATOR, SQUARED DOT 22A1 -OPERATOR, STAR 22C6 -OPERATOR, TILDE 223C -Operators, Database Theory 27D5 -Operators, Invisible 2063 -Operators, Mathematical 2200 -Operators, Modal Logic 27E0 -Operators, Multiplication and Division Sign 2A2F -Operators, N-Ary 2A00 -Operators, Plus and Minus Sign 2A22 -Operators, Relational 2A66 -Operators, Specialized plus sign 29FA -Operators, Supplemental Mathematical 2A00 -Operators, Vertical Line 2AEE -OPPOSITION 260D -Optical Character Recognition (OCR) 2440 -OPTION KEY 2325 -OR, CURLY LOGICAL 22CE -OR, DOUBLE LOGICAL 2A54 -OR, LOGICAL 2228 -OR, N-ARY LOGICAL 22C1 -OR, SLOPING LARGE 2A57 -OR, TWO INTERSECTING LOGICAL 2A56 -OR, UNION WITH LOGICAL 2A45 -OR OPERATOR, TWO LOGICAL 2A08 -OR WITH DOT ABOVE, LOGICAL 2A52 -OR WITH DOUBLE OVERBAR, LOGICAL 2A62 -OR WITH DOUBLE UNDERBAR, LOGICAL 2A63 -OR WITH HORIZONTAL DASH, LOGICAL 2A5D -OR WITH MIDDLE STEM, LOGICAL 2A5B -order 2134 -ORDINAL INDICATOR, FEMININE 00AA -ORDINAL INDICATOR, MASCULINE 00BA -ordinarily satisfies 2AE2 -ORIGIN, DIMENSION 2331 -ORIGINAL OF 22B6 -ORIGINAL OF, SQUARE 2290 -Oriya 0B00 -Oriya Digits 0B66 -Oriya Letters 0B05 -Ornamental Angle Quotation Marks 276E -Ornamental Brackets 2768 -Ornamental Brackets 2770 -Ornaments, Heart 2763 -Ornaments, Punctuation 275B -ORNATE LEFT PARENTHESIS FD3E -ors, logical ands and 2A51 -ORTHODOX CROSS 2626 -orthogonal to 22A5 -Osmanya 10480 -Osmanya Digits 104A0 -OU, LATIN SMALL LETTER 0223 -OUNCE SIGN 2125 -OUTER JOIN, FULL 27D7 -OUTER JOIN, LEFT 27D5 -OUTER JOIN, RIGHT 27D6 -OUTLINE, SQUARE WITH CONTOURED 29E0 -OVER INFINITY, TIE 29DD -OVER TOP SQUARE BRACKET, BOTTOM SQUARE BRACKET 23B6 -overbar, apl 00AF -OVERLAPPING LESS-THAN, GREATER-THAN 2AA4 -OVERLAPPING LOGICAL AND, LOGICAL OR 2A59 -OVERLAY, COMBINING CLOCKWISE RING 20D9 -OVERLAY, COMBINING DOUBLE VERTICAL STROKE 20E6 -OVERLAY, COMBINING LEFTWARDS ARROW 20EA -OVERLAY, COMBINING LONG SOLIDUS 0338 -OVERLAY, COMBINING LONG STROKE 0336 -OVERLAY, COMBINING LONG VERTICAL LINE 20D2 -OVERLAY, COMBINING REVERSE SOLIDUS 20E5 -OVERLAY, COMBINING RING 20D8 -OVERLAY, COMBINING SHORT SOLIDUS 0337 -OVERLAY, COMBINING SHORT STROKE 0335 -OVERLAY, COMBINING SHORT VERTICAL LINE 20D3 -OVERLAY, COMBINING TILDE 0334 -overlay, long slash 0338 -overlay, short slash 0337 -overline 00AF -OVERLINE 203E -OVERLINE, CENTRELINE FE4A -OVERLINE, COMBINING 0305 -OVERLINE, COMBINING DOUBLE 033F -OVERLINE, DASHED FE49 -OVERLINE, DOUBLE WAVY FE4C -OVERLINE, WAVY FE4B -OVERRIDE, LEFT-TO-RIGHT 202D -OVERRIDE, RIGHT-TO-LEFT 202E -overscore 0305 -overscore, spacing 203E -Overscores and Underscores FE49 -Overstruck Diacritics 0334 -oxia 0301 -P, DOUBLE-STRUCK CAPITAL 2119 -P, SCRIPT CAPITAL 2118 -PAGE, NEXT 2398 -PAGE, PREVIOUS 2397 -page down 21DF -page up 21DE -PALATALIZED HOOK BELOW, COMBINING 0321 -PAMUDPOD, HANUNOO SIGN 1734 -PAPER SYMBOL, PARTIALLY-RECYCLED 267D -PAPER SYMBOL, RECYCLED 267C -PARAGRAPH SEPARATOR 2029 -PARAGRAPH SEPARATOR, GEORGIAN 10FB -paragraph separator, urdu 203B -paragraph sign 00B6 -paragraph sign, european 00A7 -PARAGRAPH SIGN ORNAMENT, CURVED STEM 2761 -PARALLEL, CIRCLED 29B7 -PARALLEL, EQUALS SIGN AND SLANTED 29E3 -PARALLEL, IDENTICAL TO AND SLANTED 29E5 -PARALLEL TO 2225 -parallel to, identical and 2A68 -PARALLEL WITH HORIZONTAL STROKE 2AF2 -PARALLEL WITH TILDE ABOVE, EQUALS SIGN AND SLANTED 29E4 -PARALLEL WITH TILDE OPERATOR 2AF3 -PARALLELOGRAM, BLACK 25B0 -parenthesis, closing 0029 -PARENTHESIS, LEFT 0028 -parenthesis, opening 0028 -PARENTHESIS, ORNATE LEFT FD3E -PARENTHESIS, RIGHT 0029 -PARENTHESIS, SUBSCRIPT LEFT 208D -PARENTHESIS, SUPERSCRIPT LEFT 207D -Parenthesized Ideographs 3220 -Parenthesized Korean Hangul Elements 3200 -Parenthesized Korean Hangul Syllables 320E -Parenthesized Latin Letters 249C -Parenthesized Numbers 2474 -PART ALTERNATION MARK 303D -PART INTEGRAL, FINITE 2A0D -parted rule 00A6 -PARTIAL DIFFERENTIAL 2202 -partial function, z notation 21F8 -partial injection, z notation 2914 -partial line down 008B -partial line up 008C -partial relation, z notation 21F9 -partial surjection, z notation 2900 -PARTIALLY-RECYCLED PAPER SYMBOL 267D -PARTNERSHIP SIGN 3250 -Parts, Summation Sign 23B2 -pdf 202C -PEACE SYMBOL 262E -PENCIL, UPPER RIGHT 2710 -Pencil Dingbats 270E -PENNY SIGN, GERMAN 20B0 -per 2118 -PER MILLE SIGN 2030 -PER TEN THOUSAND SIGN 2031 -PERCENT SIGN 0025 -PERCENT SIGN, ARABIC 066A -PERCUSSIVE, LATIN LETTER BIDENTAL 02AD -PERCUSSIVE, LATIN LETTER BILABIAL 02AC -period 002E -PERISPOMENI, COMBINING GREEK 0342 -perpendicular 22A5 -PERPENDICULAR, CIRCLED 29B9 -PERPENDICULAR WITH S 2AE1 -Persian and Urdu, Eastern Arabic-Indic Digits for 06F0 -PERSPECTIVE 2306 -PESETA SIGN 20A7 -PESO SIGN 20B1 -PHARYNGEAL VOICED FRICATIVE, LATIN LETTER 0295 -PHI, LATIN SMALL LETTER 0278 -Philippine Scripts, Generic Punctuation For 1735 -Phonetic Alphabet, International 0250 -Phonetic Extensions 1D00 -Phonetic Extensions, Katakana 31F0 -Phonetic Extensions, non-IPA 1D00 -Phonetic Extensions for Ainu 31F0 -Phonetic Modifiers Derived from Latin Letters 02B0 -Phonetics and Symbols Area, CJK 2E00 -phonorecord sign 2117 -PI, DOUBLE-STRUCK CAPITAL 213F -pi, mathematical constant 03C0 -Pictures for Control Codes, Graphic 2400 -Pieces, Bracket 239B -Pieces, Bracket 23B0 -PILCROW SIGN 00B6 -PILCROW SIGN, REVERSED 204B -Pinyin Diacritic-vowel Combinations 01CD -pipe 01C0 -pipe, double 01C1 -pipe, double-barred 01C2 -PIPING, Z NOTATION SCHEMA 2A20 -PISCES 2653 -PITCHFORK 22D4 -PITCHFORK WITH TEE TOP 2ADA -PLACE OF INTEREST SIGN 2318 -plaintiff 226C -PLANCK CONSTANT 210E -PLANCK CONSTANT OVER TWO PI 210F -Planet Symbols 263F -Playing Card Suits 2660 -PLUS, CIRCLED 2295 -PLUS, DOT 2214 -PLUS, DOUBLE 29FA -PLUS, N-ARY UNION OPERATOR WITH 2A04 -PLUS, SQUARED 229E -PLUS, TRIPLE 29FB -Plus and Minus Sign Operators 2A22 -PLUS OPERATOR, N-ARY CIRCLED 2A01 -PLUS SIGN 002B -PLUS SIGN, EQUALS SIGN ABOVE 2A71 -PLUS SIGN, MODIFIER LETTER 02D6 -PLUS SIGN, SUBSCRIPT 208A -PLUS SIGN, SUPERSCRIPT 207A -PLUS SIGN ABOVE EQUALS SIGN 2A72 -PLUS SIGN BELOW, COMBINING 031F -PLUS SIGN BELOW, SUBSET WITH 2ABF -PLUS SIGN BELOW, SUPERSET WITH 2AC0 -PLUS SIGN IN LEFT HALF CIRCLE 2A2D -PLUS SIGN IN RIGHT HALF CIRCLE 2A2E -PLUS SIGN IN TRIANGLE 2A39 -Plus Sign Operators, Specialized 29FA -PLUS-MINUS SIGN 00B1 -PLUTO 2647 -POETIC VERSE SIGN, ARABIC 060E -POINT OPERATOR, INTEGRAL AROUND A 2A15 -Pointers 25BA -Points, Arabic 064B -Points, Hebrew 05B0 -poison 2620 -Political Symbols, Religious and 2626 -POP DIRECTIONAL FORMATTING 202C -POSITION INDICATOR 2316 -positive, most 223E -positive difference, sum or 2A26 -positive difference or sum 2A24 -POSTAL MARK 3012 -POSTAL MARK, CIRCLED 3036 -POSTAL MARK FACE 3020 -pound sign 0023 -POUND SIGN 00A3 -pound sterling 00A3 -pounds 2114 -power set 2118 -PRECEDES 227A -PRECEDES, DOUBLE 2ABB -PRECEDES ABOVE ALMOST EQUAL TO 2AB7 -PRECEDES ABOVE EQUALS SIGN 2AB3 -PRECEDES ABOVE NOT ALMOST EQUAL TO 2AB9 -PRECEDES ABOVE NOT EQUAL TO 2AB5 -PRECEDES ABOVE SINGLE-LINE EQUALS SIGN 2AAF -PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO 2AB1 -PRECEDES UNDER RELATION 22B0 -PRESCRIPTION TAKE 211E -Presentation Forms, Alphabetic FB00 -Presentation Forms, Hebrew FB1D -Presentation Forms-A, Arabic FB50 -Presentation Forms-B, Arabic FE70 -PREVIOUS PAGE 2397 -PRIME 2032 -PRIME, DOUBLE 2033 -PRIME, MODIFIER LETTER 02B9 -PRIME, MODIFIER LETTER DOUBLE 02BA -PRIME, QUADRUPLE 2057 -PRIME, REVERSED 2035 -PRIME, REVERSED DOUBLE 2036 -PRIME, REVERSED TRIPLE 2037 -PRIME, TRIPLE 2034 -PRIME QUOTATION MARK, DOUBLE 301E -PRIME QUOTATION MARK, LOW DOUBLE 301F -PRIME QUOTATION MARK, REVERSED DOUBLE 301D -PRINT SCREEN SYMBOL 2399 -privacy message 009E -Private Use Area E000 -Private Use Area-A, Supplementary F0000 -Private Use Area-B, Supplementary 100000 -private use one 0091 -private use two 0092 -PRODUCT, CLOSED UNION WITH SERIFS AND SMASH 2A50 -product, direct 2299 -PRODUCT, INTERIOR 2A3C -PRODUCT, LEFT SEMIDIRECT 22CB -PRODUCT, N-ARY 220F -PRODUCT, RIGHTHAND INTERIOR 2A3D -PRODUCT, SHUFFLE 29E2 -PRODUCT, SMASH 2A33 -product, tensor 2297 -PRODUCT, VECTOR OR CROSS 2A2F -PRODUCT, WREATH 2240 -PRODUCT WITH BOTTOM CLOSED, SEMIDIRECT 2A32 -PROFILE, ALL AROUND- 232E -prohibition 20E0 -PROJECTION, Z NOTATION SCHEMA 2A21 -PROJECTIVE 2305 -PROOF, END OF 220E -PROPERTY LINE 214A -PROPORTION 2237 -PROPORTION, GEOMETRIC 223A -PROPORTIONAL TO 221D -proportional to, varies with 223C -proves 22A2 -psili 0313 -published 2117 -pullback 27D3 -Punctuation, CJK Symbols and 3000 -Punctuation, General 2000 -Punctuation, Hanunóo-Specific 1734 -Punctuation, Katakana 30A0 -PUNCTUATION, PHILIPPINE DOUBLE 1736 -PUNCTUATION, PHILIPPINE SINGLE 1735 -Punctuation For Philippine Scripts, Generic 1735 -Punctuation For Vertical Text, Double 2047 -Punctuation Ornaments 275B -PUNCTUATION SPACE 2008 -punt, irish 00A3 -purna viram 0964 -pushout 27D4 -Q, DOUBLE-STRUCK CAPITAL 211A -Q, ROTATED CAPITAL 213A -QAF, ARABIC LETTER DOTLESS 066F -qed 220E -QUAD, EM 2001 -QUAD, EN 2000 -quad, mutton 2001 -Quadrants 2596 -quadrature 25A1 -QUADRUPLE INTEGRAL OPERATOR 2A0C -QUADRUPLE PRIME 2057 -quantic 226C -QUARTER MOON, FIRST 263D -QUARTER MOON, LAST 263E -QUARTER NOTE 2669 -Quarters, Fractions 00BC -QUATERNION INTEGRAL OPERATOR 2A16 -QUESTION EXCLAMATION MARK 2048 -QUESTION MARK 003F -QUESTION MARK, ARABIC 061F -QUESTION MARK, ARMENIAN 055E -QUESTION MARK, DOUBLE 2047 -QUESTION MARK, ETHIOPIC 1367 -QUESTION MARK, EXCLAMATION 2049 -QUESTION MARK, GREEK 037E -QUESTION MARK, INVERTED 00BF -QUESTION MARK ABOVE, GREATER-THAN WITH 2A7C -QUESTION MARK ABOVE, LESS-THAN WITH 2A7B -QUESTIONED EQUAL TO 225F -QUILL, LEFT SQUARE BRACKET WITH 2045 -Quine Corners 231C -quotation dash 2015 -QUOTATION MARK 0022 -quotation mark, double comma 201D -QUOTATION MARK, DOUBLE HIGH-REVERSED-9 201F -QUOTATION MARK, DOUBLE LOW-9 201E -QUOTATION MARK, DOUBLE PRIME 301E -quotation mark, double reversed comma 201F -quotation mark, double turned comma 201C -QUOTATION MARK, LEFT DOUBLE 201C -QUOTATION MARK, LEFT SINGLE 2018 -QUOTATION MARK, LEFT-POINTING DOUBLE ANGLE 00AB -quotation mark, low double comma 201E -QUOTATION MARK, LOW DOUBLE PRIME 301F -quotation mark, low single comma 201A -QUOTATION MARK, REVERSED DOUBLE PRIME 301D -QUOTATION MARK, RIGHT DOUBLE 201D -QUOTATION MARK, RIGHT SINGLE 2019 -QUOTATION MARK, RIGHT-POINTING DOUBLE ANGLE 00BB -quotation mark, single comma 2019 -QUOTATION MARK, SINGLE HIGH-REVERSED-9 201B -QUOTATION MARK, SINGLE LEFT-POINTING ANGLE 2039 -QUOTATION MARK, SINGLE LOW-9 201A -quotation mark, single reversed comma 201B -QUOTATION MARK, SINGLE RIGHT-POINTING ANGLE 203A -quotation mark, single turned comma 2018 -Quotation Mark Ornaments 275B -Quotation Marks, Ornamental Angle 276E -quote, apl 0022 -R, BLACK-LETTER CAPITAL 211C -R, COMBINING LATIN SMALL LETTER 036C -R, DOUBLE-STRUCK CAPITAL 211D -R, LATIN LETTER SMALL CAPITAL 0280 -R, LATIN LETTER SMALL CAPITAL INVERTED 0281 -R, LATIN SMALL LETTER TURNED 0279 -R, MODIFIER LETTER SMALL 02B3 -R, MODIFIER LETTER SMALL CAPITAL INVERTED 02B6 -R, MODIFIER LETTER SMALL TURNED 02B4 -R, SCRIPT CAPITAL 211B -radial component 27DF -radical sign 221A -Radicals, Kangxi 2F00 -Radicals, Yi A490 -Radicals Supplement, CJK 2E80 -RADIOACTIVE SIGN 2622 -RAIN DROPS, UMBRELLA WITH 2614 -rainy weather 2602 -RAMS HORN, LATIN SMALL LETTER 0264 -RANGE ANTIRESTRICTION, Z NOTATION 2A65 -RATIO 2236 -ratio, cross 211E -rational numbers, the set of 211A -real number symbol 210A -real numbers, the set of 211D -real part 211C -recipe 211E -record separator 001E -RECORD SEPARATOR, SYMBOL FOR 241E -RECORDER, TELEPHONE 2315 -RECORDING COPYRIGHT, SOUND 2117 -Rectangles 25AC -RECTANGULAR PATH AROUND POLE, LINE INTEGRATION WITH 2A12 -RECYCLED PAPER SYMBOL 267C -RECYCLING SYMBOL, BLACK UNIVERSAL 267B -RECYCLING SYMBOL, UNIVERSAL 2672 -RECYCLING SYMBOL FOR GENERIC MATERIALS 267A -Recycling Symbols 2672 -Recycling Symbols For Plastics 2673 -reduces to 22A6 -reducible 22A2 -REFERENCE MARK 203B -registered trade mark sign 00AE -RELATION, TRIPLE SOLIDUS BINARY 2AFB -RELATION, TRIPLE VERTICAL BAR BINARY 2AF4 -relation, z notation finite 21FC -relation, z notation partial 21F9 -RELATIONAL COMPOSITION, Z NOTATION 2A3E -Relational Operators 2A66 -Relations 29E3 -Relations 2AF7 -Relations, Subset and superset 2ABD -Religious and Political Symbols 2626 -Repeat Marks, Kana 3031 -REPLACEMENT CHARACTER FFFD -REPLACEMENT CHARACTER, OBJECT FFFC -resistance 2126 -RESPONSE 211F -results in 22A8 -RETROFLEX CLICK, LATIN LETTER 01C3 -retroflex hook, latin small letter d 0256 -RETROFLEX HOOK BELOW, COMBINING 0322 -return, carriage 000D -return, carriage 21B5 -RETURN, SYMBOL FOR CARRIAGE 240D -RETURN SYMBOL 23CE -reverse line feed 008D -REVERSE SOLIDUS 005C -REVERSE SOLIDUS, BIG 29F9 -REVERSE SOLIDUS, CIRCLED 29B8 -REVERSE SOLIDUS OPERATOR 29F5 -REVERSE SOLIDUS OVERLAY, COMBINING 20E5 -REVERSE SOLIDUS WITH HORIZONTAL STROKE 29F7 -reverse turnstile 22A3 -REVERSED, LATIN SMALL LETTER EZH 01B9 -REVERSED COMMA, MODIFIER LETTER 02BD -REVERSED COMMA ABOVE, COMBINING 0314 -reversed comma quotation mark, double 201F -reversed comma quotation mark, single 201B -REVERSED DOUBLE PRIME 2036 -REVERSED DOUBLE PRIME QUOTATION MARK 301D -REVERSED DOUBLE STROKE NOT SIGN 2AED -REVERSED E, LATIN CAPITAL LETTER 018E -REVERSED E, LATIN SMALL LETTER 0258 -reversed epsilon, latin small letter closed 025E -REVERSED ESH, LATIN SMALL LETTER SQUAT 0285 -REVERSED ESH LOOP, LATIN LETTER 01AA -reversed glottal stop, latin letter 0295 -REVERSED GLOTTAL STOP, MODIFIER LETTER 02C1 -REVERSED GLOTTAL STOP, MODIFIER LETTER SMALL 02E4 -REVERSED NEGATION SLASH, DOES NOT DIVIDE WITH 2AEE -REVERSED NOT SIGN 2310 -REVERSED OPEN E, LATIN SMALL LETTER 025C -REVERSED OPEN E, LATIN SMALL LETTER CLOSED 025E -REVERSED PILCROW SIGN 204B -REVERSED PRIME 2035 -REVERSED SANS-SERIF CAPITAL L 2143 -REVERSED SEMICOLON 204F -reversed straight epsilon 220D -REVERSED TILDE 223D -REVERSED TILDE EQUALS 22CD -REVERSED TRIPLE PRIME 2037 -RHOTIC HOOK, MODIFIER LETTER 02DE -riemann integral 211B -RIGHT ANGLE 221F -RIGHT ANGLE WITH ARC 22BE -RIGHT TRIANGLE 22BF -RIGHT-TO-LEFT EMBEDDING 202B -RIGHT-TO-LEFT MARK 200F -RIGHT-TO-LEFT OVERRIDE 202E -RIGHTHAND INTERIOR PRODUCT 2A3D -RING, BENZENE 232C -RING, MODIFIER LETTER CENTRED LEFT HALF 02D3 -RING, MODIFIER LETTER LEFT HALF 02BF -RING ABOVE 02DA -RING ABOVE, COMBINING 030A -RING BELOW, COMBINING 0325 -RING BELOW, COMBINING LEFT HALF 031C -RING BELOW, COMBINING RIGHT HALF 0339 -RING EQUAL TO 2257 -RING IN EQUAL TO 2256 -RING OPERATOR 2218 -RING OPERATOR, CIRCLED 229A -RING OVERLAY, COMBINING 20D8 -RING OVERLAY, COMBINING CLOCKWISE 20D9 -RISING DIAGONAL SLASH, SQUARED 29C4 -RISING DOTS, MINUS SIGN WITH 2A2C -RISING DOTS, TILDE OPERATOR WITH 2A6B -rle 202B -rlm 200F -rlo 202E -Roman Numerals 2160 -Romanian, Additions for 0218 -ROOT, CUBE 221B -ROOT, FOURTH 221C -ROOT, SQUARE 221A -ROTATED CAPITAL Q 213A -rotation 20D5 -rough breathing 0314 -RULE, LOZENGE DIVIDED BY HORIZONTAL 27E0 -rule, parted 00A6 -RULE-DELAYED 29F4 -Runes, Golden Number 16EE -Runic 16A0 -RUNOUT, TOTAL 2330 -RUPEE MARK, BENGALI 09F2 -RUPEE SIGN 20A8 -RUPEE SIGN, BENGALI 09F3 -RUPEE SIGN, GUJARATI 0AF1 -RUPEE SIGN, TAMIL 0BF9 -Russian Alphabet, Basic 0410 -S, INVERTED LAZY 223E -S, LATIN SMALL LETTER LONG 017F -S, LATIN SMALL LETTER SHARP 00DF -s, lazy 223D -S, MODIFIER LETTER SMALL 02E2 -S, PERPENDICULAR WITH 2AE1 -S IN TRIANGLE 29CC -SAFHA, ARABIC SIGN 0603 -SAGITTARIUS 2650 -SALTIRE 2613 -sam 070F -SANAH, ARABIC SIGN 0601 -SANS-SERIF CAPITAL G, TURNED 2141 -SANS-SERIF CAPITAL L, REVERSED 2143 -SANS-SERIF CAPITAL L, TURNED 2142 -SANS-SERIF CAPITAL Y, TURNED 2144 -Sanskrit and Tibetan, Mongolian Extensions for 1880 -satisfies 22A8 -satisfies, necessarily 2AF1 -satisfies, ordinarily 2AE2 -SATURN 2644 -SCHEMA COMPOSITION, Z NOTATION 2A1F -schema hiding, z notation 29F9 -SCHEMA PIPING, Z NOTATION 2A20 -SCHEMA PROJECTION, Z NOTATION 2A21 -SCHWA, LATIN CAPITAL LETTER 018F -SCHWA, LATIN SMALL LETTER 0259 -Scissors Dingbats 2701 -SCORPIUS 264F -SCREEN, COMBINING ENCLOSING 20E2 -script a, latin small letter 0251 -SCRIPT CAPITAL B 212C -SCRIPT CAPITAL E 2130 -SCRIPT CAPITAL F 2131 -SCRIPT CAPITAL H 210B -SCRIPT CAPITAL I 2110 -SCRIPT CAPITAL L 2112 -SCRIPT CAPITAL M 2133 -SCRIPT CAPITAL P 2118 -SCRIPT CAPITAL R 211B -script f, latin small letter 0192 -SCRIPT G, LATIN SMALL LETTER 0261 -SCRIPT SMALL E 212F -SCRIPT SMALL G 210A -SCRIPT SMALL L 2113 -SCRIPT SMALL O 2134 -script v, latin capital letter 01B2 -script v, latin small letter 028B -Scripts Area, General 0000 -scrolling 21F3 -SCRUPLE 2108 -SEAGULL BELOW, COMBINING 033C -second transfinite cardinal (the continuum) 2136 -seconds 2033 -SECTION SIGN 00A7 -section sign, european 00B6 -SECTOR 2314 -SEGMENT 2313 -selected area, end of 0087 -selected area, start of 0086 -Selectors, Variation FE00 -SEMICIRCULAR PATH AROUND POLE, LINE INTEGRATION WITH 2A13 -SEMICOLON 003B -SEMICOLON, ARABIC 061B -SEMICOLON, ETHIOPIC 1364 -SEMICOLON, REVERSED 204F -SEMIDIRECT PRODUCT, LEFT 22CB -SEMIDIRECT PRODUCT WITH BOTTOM CLOSED 2A32 -SEPARATOR DOT, AEGEAN WORD 10101 -SEPARATOR LINE, AEGEAN WORD 10100 -SEPARATOR, ARABIC DECIMAL 066B -SEPARATOR, ARABIC THOUSANDS 066C -separator, decimal 002C -separator, devanagari phrase 0964 -separator, file 001C -SEPARATOR, GEORGIAN PARAGRAPH 10FB -separator, group 001D -SEPARATOR, INVISIBLE 2063 -SEPARATOR, LINE 2028 -SEPARATOR, PARAGRAPH 2029 -separator, record 001E -SEPARATOR, SYMBOL FOR FILE 241C -SEPARATOR, SYMBOL FOR GROUP 241D -SEPARATOR, SYMBOL FOR RECORD 241E -SEPARATOR, SYMBOL FOR UNIT 241F -separator, unit 001F -separator, urdu paragraph 203B -SEPARATOR KEY SYMBOL, DECIMAL 2396 -sequence concatenation, z notation 2040 -sequence introducer, control 009B -Serbian Cyrillic Letters, Croatian Digraphs Matching 01C4 -SERIFS, CLOSED INTERSECTION WITH 2A4D -SERIFS, CLOSED UNION WITH 2A4C -SERIFS AND SMASH PRODUCT, CLOSED UNION WITH 2A50 -SERIFS AT BOTTOM, TRIANGLE WITH 29CD -SERVICE MARK 2120 -SESAME DOT FE45 -SESAME DOT, WHITE FE46 -SET, EMPTY 2205 -set, included in 2282 -set, includes in 2283 -set, null 2205 -set, power 2118 -SET MINUS 2216 -set of complex numbers, the 2102 -set of integers, the 2124 -set of rational numbers, the 211A -set of real numbers, the 211D -set transmit state 0093 -Sets, Empty 29B0 -sextile 2736 -Shade Characters 2591 -shamrock 2663 -Shapes, Geometric 25A0 -SHARP S, LATIN SMALL LETTER 00DF -SHARP SIGN, MUSIC 266F -Shavian 10450 -SHEQEL SIGN, NEW 20AA -shift 21E7 -shift in 000F -SHIFT IN, SYMBOL FOR 240F -shift out 000E -SHIFT OUT, SYMBOL FOR 240E -shilling 002F -SHOGI PIECE, BLACK 2617 -SHOGI PIECE, WHITE 2616 -short 0306 -SHORT DOWN TACK 2ADF -SHORT DOWN TACK, SHORT UP TACK ABOVE 2AE9 -SHORT DOWN TACK WITH OVERBAR 2AE7 -SHORT I WITH TAIL, CYRILLIC CAPITAL LETTER 048A -SHORT I WITH TAIL, CYRILLIC SMALL LETTER 048B -SHORT LEFT TACK 2ADE -short slash overlay 0337 -SHORT SOLIDUS OVERLAY, COMBINING 0337 -SHORT STROKE OVERLAY, COMBINING 0335 -SHORT UP TACK 2AE0 -SHORT UP TACK ABOVE SHORT DOWN TACK 2AE9 -SHORT UP TACK WITH UNDERBAR 2AE8 -SHORT VERTICAL LINE OVERLAY, COMBINING 20D3 -SHOULDERED OPEN BOX 237D -SHUFFLE PRODUCT 29E2 -shy 00AD -Sibe Letters, Mongolian 185D -Sidelining Emphasis Marks FE45 -SIMILAR, SIMILAR MINUS 2A6C -SIMILAR ABOVE GREATER-THAN, LESS-THAN ABOVE 2A8F -SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN 2AA0 -SIMILAR ABOVE LESS-THAN, GREATER-THAN ABOVE 2A90 -SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN 2A9F -SIMILAR MINUS SIMILAR 2A6C -SIMILAR OR EQUAL, GREATER-THAN ABOVE 2A8E -SIMILAR OR EQUAL, LESS-THAN ABOVE 2A8D -SIMILAR OR GREATER-THAN 2A9E -SIMILAR OR LESS-THAN 2A9D -similar to 223C -SINE WAVE 223F -single character introducer 009A -single comma quotation mark 2019 -single comma quotation mark, low 201A -single guillemet, left pointing 2039 -single guillemet, right pointing 203A -SINGLE HIGH-REVERSED-9 QUOTATION MARK 201B -SINGLE LEFT-POINTING ANGLE QUOTATION MARK 2039 -SINGLE LOW-9 QUOTATION MARK 201A -SINGLE PUNCTUATION, PHILIPPINE 1735 -SINGLE QUOTATION MARK, LEFT 2018 -SINGLE QUOTATION MARK, RIGHT 2019 -single reversed comma quotation mark 201B -SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 203A -single shift three 008F -single shift two 008E -single turned comma quotation mark 2018 -Sinhala 0D80 -SIX-PER-EM SPACE 2006 -SIXTEENTH NOTES, BEAMED 266C -Sixths, Fractions 2159 -SKULL AND CROSSBONES 2620 -slash 002F -SLASH, CIRCLED DIVISION 2298 -SLASH, DIVISION 2215 -SLASH, DOES NOT DIVIDE WITH REVERSED NEGATION 2AEE -SLASH, FRACTION 2044 -SLASH, INTEGRAL AVERAGE WITH 2A0F -SLASH, SQUARED FALLING DIAGONAL 29C5 -SLASH, SQUARED RISING DIAGONAL 29C4 -slash overlay, long 0338 -slash overlay, short 0337 -SLOPE 2333 -SLOPING LARGE AND 2A58 -SLOPING LARGE OR 2A57 -Slovenian and Croatian, Additions for 0200 -SMALL CAPITAL B, LATIN LETTER 0299 -SMALL CAPITAL G, LATIN LETTER 0262 -SMALL CAPITAL H, LATIN LETTER 029C -SMALL CAPITAL I, LATIN LETTER 026A -SMALL CAPITAL INVERTED R, LATIN LETTER 0281 -SMALL CAPITAL INVERTED R, MODIFIER LETTER 02B6 -SMALL CAPITAL L, LATIN LETTER 029F -SMALL CAPITAL N, LATIN LETTER 0274 -SMALL CAPITAL OE, LATIN LETTER 0276 -SMALL CAPITAL R, LATIN LETTER 0280 -SMALL CAPITAL Y, LATIN LETTER 028F -small circle, black 2022 -SMALL CIRCLE, SQUARED 29C7 -SMALL CIRCLE ABOVE, PLUS SIGN WITH 2A22 -SMALL CIRCLE TO THE RIGHT, CIRCLE WITH 29C2 -SMALL CONTAINS AS MEMBER 220D -SMALL CONTAINS WITH OVERBAR 22FE -SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22FC -SMALL D, DOUBLE-STRUCK ITALIC 2146 -SMALL E, DOUBLE-STRUCK ITALIC 2147 -SMALL ELEMENT OF 220A -SMALL ELEMENT OF WITH OVERBAR 22F7 -SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22F4 -Small Form Variants FE50 -SMALL GAMMA, DOUBLE-STRUCK 213D -SMALL I, DOUBLE-STRUCK ITALIC 2148 -SMALL J, DOUBLE-STRUCK ITALIC 2149 -Small Letters, Armenian 0561 -Small Letters, Combining Latin 0363 -Small Letters, Cyrillic 0430 -Small Letters, Georgian 10D0 -Small Letters, Greek 03B1 -Small Letters, Latin 0061 -SMALL SQUARE, BLACK MEDIUM 25FE -SMALL SQUARE, WHITE MEDIUM 25FD -SMALL VEE WITH UNDERBAR 2A61 -SMALLER THAN 2AAA -SMALLER THAN OR EQUAL TO 2AAC -SMASH PRODUCT 2A33 -SMASH PRODUCT, CLOSED UNION WITH SERIFS AND 2A50 -SMILE 2323 -SMILING FACE, BLACK 263B -SMILING FACE, WHITE 263A -smooth breathing 0313 -Snowflake Dingbats 2744 -Snowflakes, Stars, Asterisks and 2721 -SNOWMAN 2603 -snowy weather 2603 -SOFT HYPHEN 00AD -SOFTWARE-FUNCTION SYMBOL 2394 -solid 2588 -SOLIDUS 002F -solidus 2044 -SOLIDUS, BIG 29F8 -SOLIDUS, BIG REVERSE 29F9 -SOLIDUS, CIRCLED REVERSE 29B8 -SOLIDUS, REVERSE 005C -SOLIDUS BINARY RELATION, TRIPLE 2AFB -SOLIDUS OPERATOR, DOUBLE 2AFD -SOLIDUS OPERATOR, REVERSE 29F5 -SOLIDUS OVERLAY, COMBINING LONG 0338 -SOLIDUS OVERLAY, COMBINING REVERSE 20E5 -SOLIDUS OVERLAY, COMBINING SHORT 0337 -SOLIDUS WITH HORIZONTAL STROKE, REVERSE 29F7 -SOLIDUS WITH OVERBAR 29F6 -SOUND RECORDING COPYRIGHT 2117 -SOURCE, INFORMATION 2139 -SPACE 0020 -SPACE, EM 2003 -SPACE, EN 2002 -SPACE, FIGURE 2007 -SPACE, FOUR-PER-EM 2005 -space, graphic for 2422 -space, graphic for 2423 -space, graphic for no break 237D -SPACE, HAIR 200A -SPACE, IDEOGRAPHIC 3000 -SPACE, MEDIUM MATHEMATICAL 205F -space, mid 2005 -SPACE, NARROW NO-BREAK 202F -SPACE, NO-BREAK 00A0 -SPACE, PUNCTUATION 2008 -SPACE, SIX-PER-EM 2006 -SPACE, SYMBOL FOR 2420 -space, thick 2004 -SPACE, THIN 2009 -SPACE, THREE-PER-EM 2004 -SPACE, ZERO WIDTH 200B -SPACE, ZERO WIDTH NO-BREAK FEFF -SPACE MARK, OGHAM 1680 -Spaces 2000 -spacing acute 00B4 -spacing cedilla 00B8 -spacing circumflex 005E -Spacing Clones of Diacritics 02D8 -spacing diaeresis 00A8 -spacing double underscore 2017 -spacing grave 0060 -spacing macron 00AF -Spacing Modifier Letters 02B0 -spacing overscore 203E -spacing underscore 005F -spanish currency 20A7 -Special character extensions 23AE -Specialized plus sign operators 29FA -Specials FFF0 -Specials Area, Compatibility and F900 -SPHERICAL ANGLE 2222 -SPHERICAL ANGLE OPENING LEFT 29A0 -SPHERICAL ANGLE OPENING UP 29A1 -SPOT, Z NOTATION 2981 -SQUARE, BLACK MEDIUM 25FC -SQUARE, BLACK MEDIUM SMALL 25FE -SQUARE, COMBINING ENCLOSING 20DE -SQUARE, VIEWDATA 2317 -SQUARE, WHITE MEDIUM 25FB -SQUARE, WHITE MEDIUM SMALL 25FD -SQUARE BELOW, COMBINING 033B -square bracket, closing 005D -SQUARE BRACKET, LEFT 005B -SQUARE BRACKET, LEFT WHITE 301A -square bracket, opening 005B -SQUARE BRACKET, RIGHT 005D -SQUARE BRACKET WITH QUILL, LEFT 2045 -SQUARE CAP 2293 -SQUARE CORPORATION 337F -SQUARE CUP 2294 -SQUARE FOOT 23CD -SQUARE IMAGE OF 228F -SQUARE INTERSECTION, DOUBLE 2A4E -SQUARE INTERSECTION OPERATOR, N-ARY 2A05 -SQUARE LEFT OPEN BOX OPERATOR 2ACD -SQUARE LOZENGE 2311 -SQUARE ORIGINAL OF 2290 -SQUARE RIGHT OPEN BOX OPERATOR 2ACE -SQUARE ROOT 221A -Square Symbols 29C4 -SQUARE UNION, DOUBLE 2A4F -SQUARE UNION OPERATOR, N-ARY 2A06 -SQUARE WITH CONTOURED OUTLINE 29E0 -SQUARE WITH LEFTWARDS TICK, WHITE 27E4 -SQUARE WITH RIGHTWARDS TICK, WHITE 27E5 -squared 00B2 -SQUARED DOT OPERATOR 22A1 -Squared Japanese Katakana Words 3300 -Squared Latin Abbreviations 3371 -SQUARED MINUS 229F -SQUARED PLUS 229E -SQUARED TIMES 22A0 -Squares 25A0 -SQUAT REVERSED ESH, LATIN SMALL LETTER 0285 -st. andrew's cross 2613 -star 002A -STAR, ARABIC FIVE POINTED 066D -STAR, BLACK 2605 -STAR AND CRESCENT 262A -Star Dingbats 2726 -STAR EQUALS 225B -STAR OF DAVID 2721 -STAR OPERATOR 22C6 -starburst 273A -STARK, GLEICH 29E6 -Stars, Asterisks and Snowflakes 2721 -start of guarded area 0096 -start of heading 0001 -START OF HEADING, SYMBOL FOR 2401 -start of selected area 0086 -start of string 0098 -start of text 0002 -START OF TEXT, SYMBOL FOR 2402 -statement is true 22A8 -sterling, pound 00A3 -stile, apl 2223 -straight epsilon 220A -straight epsilon, reversed 220D -stress mark 0301 -STRETCHED C, LATIN LETTER 0297 -STRICTLY EQUIVALENT TO 2263 -string, device control 0090 -string, start of 0098 -string terminator 009C -STROKE OVERLAY, COMBINING LONG 0336 -STROKE OVERLAY, COMBINING SHORT 0335 -SUBGROUP, CONTAINS AS NORMAL 22B3 -SUBGROUP OF, NORMAL 22B2 -subscript, iota 0345 -Subscript Digits 2080 -SUBSCRIPT EQUALS SIGN 208C -SUBSCRIPT LEFT PARENTHESIS 208D -SUBSCRIPT MINUS 208B -SUBSCRIPT PLUS SIGN 208A -SUBSCRIPT TWO, PLUS SIGN WITH 2A27 -Subscripts 2080 -SUBSET, DOUBLE 22D0 -Subset and Superset Relations 2ABD -SUBSET OF 2282 -substitute 001A -SUBSTITUTE, SYMBOL FOR 241A -SUBSTITUTE FORM TWO, SYMBOL FOR 2426 -Subtending Marks, Arabic 0600 -subtraction, z notation bag 2A41 -SUCCEEDS 227B -SUCCEEDS, DOUBLE 2ABC -SUCCEEDS ABOVE ALMOST EQUAL TO 2AB8 -SUCCEEDS ABOVE EQUALS SIGN 2AB4 -SUCCEEDS ABOVE NOT ALMOST EQUAL TO 2ABA -SUCCEEDS ABOVE NOT EQUAL TO 2AB6 -SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN 2AB0 -SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO 2AB2 -SUCCEEDS UNDER RELATION 22B1 -such that 220B -such that 2223 -Suits, Playing Card 2660 -sum, direct 2295 -SUM, MODULO TWO 2A0A -sum, positive difference or 2A24 -sum or positive difference 2A26 -SUMMATION, DOUBLE-STRUCK N-ARY 2140 -SUMMATION, N-ARY 2211 -SUMMATION BOTTOM 23B3 -Summation Sign Parts 23B2 -SUMMATION TOP 23B2 -Summations and Integrals 2A0A -SUN 2609 -SUN WITH RAYS, BLACK 2600 -SUPERIMPOSED X, CIRCLE WITH 29BB -SUPERSCRIPT ALEF, ARABIC LETTER 0670 -Superscript Digits 2070 -SUPERSCRIPT EQUALS SIGN 207C -SUPERSCRIPT LATIN SMALL LETTER I 2071 -SUPERSCRIPT LEFT PARENTHESIS 207D -Superscript Letter Diacritics, Medieval 0363 -SUPERSCRIPT MINUS 207B -SUPERSCRIPT ONE 00B9 -SUPERSCRIPT PLUS SIGN 207A -SUPERSCRIPT THREE 00B3 -SUPERSCRIPT TWO 00B2 -SUPERSCRIPT ZERO 2070 -Superscripts 2070 -Superscripts and Subscripts 2070 -SUPERSET, DOUBLE 22D1 -SUPERSET OF 2283 -Superset Relations, Subset and 2ABD -Supplemental Arrows-A 27F0 -Supplemental Arrows-B 2900 -Supplemental Mathematical Operators 2A00 -Supplementary, Cyrillic 0500 -Supplementary Private Use Area-A F0000 -Supplementary Private Use Area-B 100000 -SURFACE INTEGRAL 222F -surjection, z notation finite 2901 -surjection, z notation partial 2900 -surjective injection, z notation 2917 -surjective injection, z notation finite 2918 -Surrogates, High D800 -Surrogates, Low DC00 -Surrogates Area D800 -swedish grave accent 02DF -SWUNG DASH 2053 -Syllabics, Unified Canadian Aboriginal 1400 -Syllables, Yi A000 -Syllables Area, Korean Hangul AC00 -Symbol Variants, Fullwidth FFE0 -Symbols, Bowtie 29D1 -Symbols, Circle 29B5 -Symbols, Combining Diacritical Marks for 20D0 -Symbols, Dentistry Notation 23BE -Symbols, Double-Struck Italic Mathematical 2145 -Symbols, Error Bar 29EE -Symbols, Greek 03D0 -Symbols, Japanese Chess 2616 -Symbols, Letterlike 2100 -Symbols, Miscellaneous 2600 -Symbols, Recycling 2672 -Symbols, Square 29C4 -Symbols, Triangle 29CA -Symbols and Arrows, Miscellaneous 2B00 -Symbols and Punctuation, CJK 3000 -Symbols Area 2000 -Symbols Area, CJK Phonetics and 2E00 -Symbols for Control Codes, Graphic 2400 -Symbols For Plastics, Recycling 2673 -Symbols-A, Miscellaneous Mathematical 27C0 -Symbols-B, Miscellaneous Mathematical 2980 -symmetric difference 2238 -symmetric difference 2296 -SYMMETRIC SWAPPING, ACTIVATE 206B -SYMMETRIC SWAPPING, INHIBIT 206A -SYMMETRY 232F -synchronous idle 0016 -SYNCHRONOUS IDLE, SYMBOL FOR 2416 -Syriac 0700 -SYRIAC ABBREVIATION MARK 070F -SYRIAC CROSS, EAST 2671 -SYRIAC CROSS, WEST 2670 -Syriac Format Control 070F -T, COMBINING LATIN SMALL LETTER 036D -T, LATIN SMALL LETTER TURNED 0287 -tab 0009 -tab, leftward 21E4 -tab, rightward 21E5 -tab, symbol for 2409 -tab with shift tab 21B9 -tabulation, horizontal 0009 -TABULATION, SYMBOL FOR HORIZONTAL 2409 -TABULATION, SYMBOL FOR VERTICAL 240B -tabulation, vertical 000B -tabulation set, character 0088 -tabulation set, line 008A -tabulation with justification, character 0089 -TACK, LEFT 22A3 -TACK, MODIFIER LETTER UP 02D4 -TACK, RIGHT 22A2 -TACK, UP 22A5 -TACK BELOW, COMBINING LEFT 0318 -TACK BELOW, COMBINING UP 031D -Tacks and Turnstiles 27D8 -Tacks and Turnstiles 2ADE -Tagalog 1700 -TAGALOG SIGN VIRAMA 1714 -Tagbanwa 1760 -Tai Le 1950 -Tai Xuan Jing Symbols 1D300 -TAIL FRAGMENT, ARABIC FE73 -Tails, Fish 297C -tainome (japanese, a kind of bullet) 25C9 -TAKE, PRESCRIPTION 211E -Tamil 0B80 -Tamil Digits 0BE7 -Tamil Letters 0B85 -TAMIL RUPEE SIGN 0BF9 -TAMIL NUMBER SIGN 0BFA -Tamil Symbols 0BF3 -TAPE DRIVE 2707 -TAPER, CONICAL 2332 -TAURUS 2649 -tautological equivalent 29E6 -tautology 22A8 -tea 2615 -Technical, Miscellaneous 2300 -TEE TOP, PITCHFORK WITH 2ADA -Telegraph Symbols for Days 33E0 -Telegraph Symbols for Hours 3358 -Telegraph Symbols for Months 32C0 -TELEPHONE, BLACK 260E -TELEPHONE LOCATION SIGN 2706 -TELEPHONE RECORDER 2315 -TELEPHONE SIGN 2121 -Telugu 0C00 -Telugu Digits 0C66 -Telugu Letters 0C05 -TEN THOUSAND SIGN, PER 2031 -tensor 20E1 -tensor product 2297 -Terminal graphic characters 23B7 -Terminal Graphic Characters 2596 -Terminal Graphics, Scan Lines For 23BA -terminator, string 009C -Tetragram Symbols, Tai Xuan Jing 1D306 -text, end of 0003 -text, start of 0002 -TEXT, SYMBOL FOR END OF 2403 -TEXT, SYMBOL FOR START OF 2402 -Thaana 0780 -Thai 0E00 -THAI CURRENCY SYMBOL BAHT 0E3F -Thai Digits 0E50 -Thai Letters 0E01 -THERE EXISTS 2203 -THEREFORE 2234 -THERMODYNAMIC 29E7 -thick space 2004 -THIN SPACE 2009 -third derivative 20DB -third transfinite cardinal (functions of a real variable) 2137 -Thirds, Fractions 2153 -THORN, LATIN CAPITAL LETTER 00DE -THORN, LATIN SMALL LETTER 00FE -THOUSANDS SEPARATOR, ARABIC 066C -THOUSANDS SIGN, CYRILLIC 0482 -THREE, SUPERSCRIPT 00B3 -three dot leader 2026 -THREE DOTS ABOVE, COMBINING 20DB -THREE QUARTERS, VULGAR FRACTION 00BE -THREE-PER-EM SPACE 2004 -THUNDERSTORM 2608 -Tibetan 0F00 -Tibetan, Mongolian Extensions for Sanskrit and 1880 -Tibetan Digits 0F20 -Tibetan Letters 0F40 -TICK, WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS 27E2 -TICK, WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS 27E3 -TICK, WHITE SQUARE WITH LEFTWARDS 27E4 -TICK, WHITE SQUARE WITH RIGHTWARDS 27E5 -TIE, CHARACTER 2040 -tie, ligature 0361 -TIE OVER INFINITY 29DD -TILDE 007E -tilde, apl 223C -TILDE, COMBINING 0303 -TILDE, COMBINING DOUBLE 0360 -TILDE, COMBINING VERTICAL 033E -TILDE, MINUS 2242 -TILDE, REVERSED 223D -TILDE, SMALL 02DC -TILDE, TRIPLE 224B -TILDE ABOVE, COMBINING NOT 034A -TILDE BELOW, COMBINING 0330 -TILDE EQUALS, REVERSED 22CD -TILDE LEFT HALF, COMBINING DOUBLE FE22 -TILDE OPERATOR 223C -TILDE OPERATOR, EQUALS SIGN ABOVE 2A73 -TILDE OPERATOR, PARALLEL WITH 2AF3 -TILDE OPERATOR, SUBSET OF ABOVE 2AC7 -TILDE OPERATOR, SUPERSET OF ABOVE 2AC8 -TILDE OPERATOR WITH DOT ABOVE 2A6A -TILDE OPERATOR WITH RISING DOTS 2A6B -TILDE OVERLAY, COMBINING 0334 -TIMES, CIRCLED 2297 -TIMES, DIVISION 22C7 -TIMES, INVISIBLE 2062 -TIMES, SQUARED 22A0 -TIMES OPERATOR, N-ARY 2A09 -TIMES OPERATOR, N-ARY CIRCLED 2A02 -TIMES SIGN, INTEGRAL WITH 2A18 -TIMES WITH LEFT HALF BLACK 29D4 -TIMES WITH RIGHT HALF BLACK 29D5 -TINY 29FE -TIRONIAN SIGN ET 204A -TIS 620-2529 (Thai), Based on 0E01 -Todo Letters, Mongolian 1843 -Tone Bar Letters 02E5 -TONE FIVE, LATIN SMALL LETTER 01BD -TONE MARK, COMBINING ACUTE 0341 -TONE MARK, COMBINING GRAVE 0340 -Tone Marks, Ideographic 302A -Tone Marks, Vietnamese 0340 -TONE SIX, LATIN SMALL LETTER 0185 -TONE TWO, LATIN SMALL LETTER 01A8 -tonos 0301 -TONOS, COMBINING GREEK DIALYTIKA 0344 -TOP HALF INTEGRAL 2320 -TOP LEFT CORNER 231C -TOP LEFT CROP 230F -TORTOISE SHELL BRACKET, LEFT 3014 -TORTOISE SHELL BRACKET, LEFT WHITE 3018 -TOTAL RUNOUT 2330 -TRADE MARK SIGN 2122 -trade mark sign, registered 00AE -transfinite cardinal, fourth 2138 -transfinite cardinal (countable), first 2135 -transfinite cardinal (functions of a real variable), third 2137 -transfinite cardinal (the continuum), second 2136 -transmission, end of 0004 -transmission, graphic for end of 2301 -TRANSMISSION, SYMBOL FOR END OF 2404 -transmission block, end of 0017 -TRANSMISSION BLOCK, SYMBOL FOR END OF 2417 -transmit state, set 0093 -TRANSVERSAL INTERSECTION 2ADB -TRIANGLE, COMBINING ENCLOSING UPWARD POINTING 20E4 -TRIANGLE, LOWER LEFT 25FA -TRIANGLE, LOWER RIGHT 25FF -TRIANGLE, MINUS SIGN IN 2A3A -TRIANGLE, MULTIPLICATION SIGN IN 2A3B -TRIANGLE, PLUS SIGN IN 2A39 -TRIANGLE, PLUS SIGN WITH BLACK 2A28 -TRIANGLE, RIGHT 22BF -TRIANGLE, UPPER LEFT 25F8 -TRIANGLE, UPPER RIGHT 25F9 -TRIANGLE, VERTICAL BAR BESIDE RIGHT 29D0 -TRIANGLE OPERATOR, LARGE LEFT 2A1E -Triangle symbols 29CA -TRIANGLE WITH LEFT HALF BLACK, DOWN-POINTING 29E8 -TRIANGLE WITH RIGHT HALF BLACK, DOWN-POINTING 29E9 -Triangles 25B2 -TRIANGULAR BULLET 2023 -TRIANGULAR COLON, MODIFIER LETTER 02D0 -TRIANGULAR COLON, MODIFIER LETTER HALF 02D1 -Trigram Symbols, Yijing 2630 -trine 25B3 -TRIPLE COLON OPERATOR 2AF6 -TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE 2A68 -TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE 2A69 -TRIPLE INTEGRAL 222D -TRIPLE NESTED GREATER-THAN 2AF8 -TRIPLE NESTED LESS-THAN 2AF7 -TRIPLE PLUS 29FB -TRIPLE PRIME 2034 -TRIPLE PRIME, REVERSED 2037 -TRIPLE RIGHT TURNSTILE, VERTICAL BAR 2AE2 -TRIPLE SOLIDUS BINARY RELATION 2AFB -TRIPLE TILDE 224B -TRIPLE UNDERDOT, COMBINING 20E8 -TRIPLE VERTICAL BAR BINARY RELATION 2AF4 -TRIPLE VERTICAL BAR DELIMITER 2980 -TRIPLE VERTICAL BAR OPERATOR, LARGE 2AFC -TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE 2AF5 -TRIPLE VERTICAL STROKE, TRIPLE HORIZONTAL BAR WITH 2A69 -TRUE 22A8 -TUGRIK SIGN 20AE -turbofan 274B -turkish currency 20A4 -TURNED A, LATIN SMALL LETTER 0250 -TURNED ALPHA, LATIN SMALL LETTER 0252 -TURNED AMPERSAND 214B -TURNED ANGLE 29A2 -TURNED CAPITAL F 2132 -TURNED COMMA, MODIFIER LETTER 02BB -TURNED COMMA ABOVE, COMBINING 0312 -turned comma quotation mark, double 201C -turned comma quotation mark, single 2018 -TURNED DELTA, LATIN SMALL LETTER 018D -turned e, latin capital letter 018E -TURNED E, LATIN SMALL LETTER 01DD -TURNED GREEK SMALL LETTER IOTA 2129 -TURNED H, LATIN SMALL LETTER 0265 -TURNED K, LATIN SMALL LETTER 029E -TURNED M, LATIN CAPITAL LETTER 019C -TURNED M, LATIN SMALL LETTER 026F -TURNED NOT SIGN 2319 -turned question mark 00BF -TURNED R, LATIN SMALL LETTER 0279 -TURNED R, MODIFIER LETTER SMALL 02B4 -TURNED SANS-SERIF CAPITAL G 2141 -TURNED SANS-SERIF CAPITAL L 2142 -TURNED SANS-SERIF CAPITAL Y 2144 -TURNED T, LATIN SMALL LETTER 0287 -TURNED V, LATIN SMALL LETTER 028C -TURNED W, LATIN SMALL LETTER 028D -TURNED Y, LATIN SMALL LETTER 028E -turnstile 22A2 -turnstile, reverse 22A3 -Turnstiles, Tacks and 27D8 -Turnstiles, Tacks and 2ADE -TWO, SUPERSCRIPT 00B2 -TWO DOT LEADER 2025 -TWO-HEADED ARROW FROM BAR, RIGHTWARDS 2905 -TWO-HEADED ARROW WITH TAIL, RIGHTWARDS 2916 -TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE, RIGHTWARDS 2917 -TYPE COLON, Z NOTATION 2982 -U, COMBINING LATIN SMALL LETTER 0367 -Ugaritic 10380 -UMBRELLA 2602 -UMBRELLA WITH RAIN DROPS 2614 -umlaut 0308 -UNASPIRATED, MODIFIER LETTER 02ED -UNDERDOT, COMBINING TRIPLE 20E8 -underline 0332 -underline, double 0333 -UNDERLINE SYMBOL, CONTINUOUS 2381 -UNDERLINE SYMBOL, DISCONTINUOUS 2382 -underscore 0332 -underscore, double 0333 -underscore, spacing 005F -underscore, spacing double 2017 -Underscores, Overscores and FE49 -UNDERTIE 203F -UNDERTIE, INVERTED 2054 -UNDO SYMBOL 238C -undoable delete 2425 -UNION 222A -UNION, DOUBLE 22D3 -UNION, DOUBLE SQUARE 2A4F -UNION, INTEGRAL WITH 2A1A -UNION, INTERSECTION ABOVE 2A47 -UNION, INTERSECTION ABOVE BAR ABOVE 2A49 -UNION, MULTISET 228E -UNION, N-ARY 22C3 -UNION, UNION BESIDE AND JOINED WITH 2A4A -UNION ABOVE BAR ABOVE INTERSECTION 2A48 -UNION ABOVE INTERSECTION 2A46 -UNION BESIDE AND JOINED WITH UNION 2A4A -UNION OPERATOR, N-ARY SQUARE 2A06 -UNION OPERATOR WITH DOT, N-ARY 2A03 -UNION OPERATOR WITH PLUS, N-ARY 2A04 -UNION WITH LOGICAL OR 2A45 -UNION WITH MINUS SIGN 2A41 -UNION WITH OVERBAR 2A42 -UNION WITH SERIFS, CLOSED 2A4C -UNION WITH SERIFS AND SMASH PRODUCT, CLOSED 2A50 -Unions, Intersections and 2A40 -unique element 2129 -unit separator 001F -UNIT SEPARATOR, SYMBOL FOR 241F -UNIVERSAL RECYCLING SYMBOL 2672 -UNIVERSAL RECYCLING SYMBOL, BLACK 267B -up, page 21DE -UP ARROWHEAD 2303 -UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS 2324 -UP RIGHT DIAGONAL ELLIPSIS 22F0 -UP TACK 22A5 -UP TACK, MODIFIER LETTER 02D4 -UP TACK BELOW, COMBINING 031D -UPA Modifiers 02EF -UPPER BLADE SCISSORS 2701 -UPPER RIGHT PENCIL 2710 -UPSILON, LATIN CAPITAL LETTER 01B1 -UPSILON, LATIN SMALL LETTER 028A -upstile, apl 2308 -UPWARDS ARROW BELOW, COMBINING 034E -URANUS 2645 -Urdu, Eastern Arabic-Indic Digits for Persian and 06F0 -urdu paragraph separator 203B -V, COMBINING LATIN SMALL LETTER 036E -v, latin capital letter script 01B2 -v, latin small letter script 028B -V, LATIN SMALL LETTER TURNED 028C -V WITH HOOK, LATIN CAPITAL LETTER 01B2 -valentine 2665 -valid 22A8 -varia 0300 -Variation Selectors FE00 -Variation Selectors Supplement E0100 -varies with (proportional to) 223C -vector 20D0 -vector 20D6 -VECTOR OR CROSS PRODUCT 2A2F -vector pointing into page 2295 -vector pointing into page 2297 -vector pointing out of page 2299 -vee 2228 -vee above 030C -VEE WITH UNDERBAR, SMALL 2A61 -venus 2640 -VERSICLE 2123 -VERTICAL, LONG DASH FROM LEFT MEMBER OF DOUBLE 2AE6 -vertical bar 007C -vertical bar, broken 00A6 -VERTICAL BAR, CIRCLED 29B6 -VERTICAL BAR, N-ARY WHITE 2AFF -VERTICAL BAR, WHITE 2AFE -VERTICAL BAR BINARY RELATION, TRIPLE 2AF4 -VERTICAL BAR DELIMITER, TRIPLE 2980 -Vertical Bar Dingbats 2758 -VERTICAL BAR OPERATOR, LARGE TRIPLE 2AFC -VERTICAL BAR WITH HORIZONTAL STROKE, TRIPLE 2AF5 -vertical bowtie 29D6 -VERTICAL BOX LINE, LEFT 23B8 -VERTICAL BOX LINE, RIGHT 23B9 -Vertical brackets 23B4 -VERTICAL ELLIPSIS 22EE -VERTICAL IDEOGRAPHIC ITERATION MARK 303B -VERTICAL KANA REPEAT MARK 3031 -VERTICAL LINE 007C -VERTICAL LINE, DOUBLE 2016 -VERTICAL LINE, MODIFIER LETTER 02C8 -VERTICAL LINE, MODIFIER LETTER LOW 02CC -VERTICAL LINE ABOVE, COMBINING 030D -VERTICAL LINE ABOVE, COMBINING DOUBLE 030E -VERTICAL LINE BELOW, COMBINING 0329 -VERTICAL LINE BELOW, COMBINING DOUBLE 0348 -VERTICAL LINE EXTENSION 23D0 -Vertical Line Operators 2AEE -VERTICAL LINE OVERLAY, COMBINING LONG 20D2 -VERTICAL LINE OVERLAY, COMBINING SHORT 20D3 -VERTICAL LINE WITH CIRCLE ABOVE 2AEF -VERTICAL LINE WITH CIRCLE BELOW 2AF0 -VERTICAL LINE WITH MIDDLE DOT 237F -VERTICAL STROKE OVERLAY, COMBINING DOUBLE 20E6 -vertical tabulation 000B -VERTICAL TABULATION, SYMBOL FOR 240B -Vertical Text, Double Punctuation For 2047 -VERTICAL TILDE, COMBINING 033E -Vertical Variants, Glyphs for FE30 -VERTICAL ZIGZAG LINE 299A -VERY MUCH GREATER-THAN 22D9 -VERY MUCH LESS-THAN 22D8 -VICTORY HAND 270C -Vietnamese, Latin Extensions for 1EA0 -vietnamese currency 20AB -Vietnamese Tone Marks 0340 -VIEWDATA SQUARE 2317 -vinculum 0305 -viram, deergh 0965 -viram, purna 0964 -VIRAMA, BENGALI SIGN 09CD -VIRAMA, DEVANAGARI SIGN 094D -VIRAMA, GUJARATI SIGN 0ACD -VIRAMA, GURMUKHI SIGN 0A4D -VIRAMA, KANNADA SIGN 0CCD -VIRAMA, MALAYALAM SIGN 0D4D -VIRAMA, ORIYA SIGN 0B4D -VIRAMA, TAGALOG SIGN 1714 -VIRAMA, TAMIL SIGN 0BCD -VIRAMA, TELUGU SIGN 0C4D -VIRGO 264D -virgule 002F -VOICED FRICATIVE, LATIN LETTER PHARYNGEAL 0295 -VOICED SOUND MARK, COMBINING KATAKANA-HIRAGANA 3099 -VOICED SOUND MARK, KATAKANA-HIRAGANA 309B -VOICING, MODIFIER LETTER 02EC -VOLUME INTEGRAL 2230 -VOLTAGE SIGN, HIGH 26A1 -vrachy 0306 -VS1 FE00 -W, LATIN SMALL LETTER TURNED 028D -W, MODIFIER LETTER SMALL 02B7 -WARNING SIGN 26A0 -Warning Signs 2620 -Warning Signs 26A0 -WATCH 231A -WAVE, SINE 223F -WAVE DASH 301C -WAVY DASH 3030 -WAVY LINE 2307 -WAVY LOW LINE FE4F -WAVY OVERLINE FE4B -WAVY OVERLINE, DOUBLE FE4C -Weather and Astrological Symbols 2600 -wedge 028C -wedge 2227 -weierstrass elliptic function 2118 -WHEEL OF DHARMA 2638 -WHITE BULLET, CIRCLED 29BE -WHITE CIRCLE WITH DOT RIGHT 2686 -WHITE CIRCLE WITH DOWN ARROW 29EC -WHITE CIRCLE WITH TWO DOTS 2687 -WHITE CONCAVE-SIDED DIAMOND 27E1 -WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK 27E2 -WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK 27E3 -WHITE DIAMOND WITH CENTRED DOT 27D0 -WHITE DOT RIGHT, BLACK CIRCLE WITH 2688 -WHITE DOTS, BLACK CIRCLE WITH TWO 2689 -WHITE FLAG 2690 -white framus 29D6 -WHITE HOURGLASS 29D6 -WHITE MEDIUM SMALL SQUARE 25FD -WHITE MEDIUM SQUARE 25FB -White On Black Circled Numbers 24EB -WHITE SESAME DOT FE46 -WHITE SHOGI PIECE 2616 -WHITE SQUARE WITH LEFTWARDS TICK 27E4 -WHITE SQUARE WITH RIGHTWARDS TICK 27E5 -WHITE VERTICAL BAR 2AFE -WHITE VERTICAL BAR, N-ARY 2AFF -WIDE BRIDGE ABOVE, COMBINING 20E9 -WIGGLY FENCE, LEFT 29D8 -WIGGLY FENCE, LEFT DOUBLE 29DA -WIGGLY FENCE, RIGHT 29D9 -WIGGLY FENCE, RIGHT DOUBLE 29DB -wj 2060 -WON SIGN 20A9 -WORD DIVIDER, UGARITIC 1039F -WORD JOINER 2060 -Word Separators, Aegean 10100 -Words, Squared Japanese Katakana 3300 -WORDSPACE, ETHIOPIC 1361 -WREATH PRODUCT 2240 -WRITING HAND 270D -WYNN, LATIN CAPITAL LETTER 01F7 -WYNN, LATIN LETTER 01BF -X, BALLOT 2717 -X, BALLOT BOX WITH 2612 -X, CIRCLE WITH SUPERIMPOSED 29BB -X, COMBINING LATIN SMALL LETTER 036F -X, HEAVY BALLOT 2718 -X, HEAVY MULTIPLICATION 2716 -X, MODIFIER LETTER SMALL 02E3 -X, MULTIPLICATION 2715 -X ABOVE, COMBINING 033D -X IN A RECTANGLE BOX 2327 -XOR 22BB -Y, LATIN LETTER SMALL CAPITAL 028F -Y, LATIN SMALL LETTER TURNED 028E -Y, MODIFIER LETTER SMALL 02B8 -Y, TURNED SANS-SERIF CAPITAL 2144 -YANG, YIN 262F -YEN SIGN 00A5 -Yi Radicals A490 -Yi Syllables A000 -Yiddish Digraphs 05F0 -yields 22A2 -Yijing Monogram and Digram Symbols 268A -Yijing Hexagram Symbols 4DC0 -Yijing Trigram Symbols 2630 -YIN YANG 262F -yogh, latin capital letter 01B7 -YOGH, LATIN SMALL LETTER 021D -yogh, latin small letter 0292 -YPOGEGRAMMENI, COMBINING GREEK 0345 -YR, LATIN LETTER 01A6 -yuan sign 00A5 -Z, BLACK-LETTER CAPITAL 2128 -Z, DOUBLE-STRUCK CAPITAL 2124 -Z NOTATION BAG MEMBERSHIP 22FF -z notation bag subtraction 2A41 -z notation bijection 2917 -Z Notation Binding Brackets 2989 -Z NOTATION DOMAIN ANTIRESTRICTION 2A64 -z notation finite function 20E6 -z notation finite function 21FB -z notation finite injection 2915 -z notation finite relation 21FC -z notation finite surjection 2901 -z notation finite surjective injection 2918 -Z Notation Image Brackets 2987 -z notation left bag bracket 27E6 -z notation partial function 21F8 -z notation partial injection 2914 -z notation partial relation 21F9 -z notation partial surjection 2900 -Z NOTATION RANGE ANTIRESTRICTION 2A65 -Z NOTATION RELATIONAL COMPOSITION 2A3E -Z NOTATION SCHEMA COMPOSITION 2A1F -z notation schema hiding 29F9 -Z NOTATION SCHEMA PIPING 2A20 -Z NOTATION SCHEMA PROJECTION 2A21 -z notations sequence concatenation 2040 -Z NOTATION SPOT 2981 -z notation surjective injection 2917 -Z NOTATION TYPE COLON 2982 -Zapf Dingbats Series 100, ITC 2700 -ZERO, CIRCLED DIGIT 24EA -ZERO, IDEOGRAPHIC NUMBER 3007 -ZERO, SUPERSCRIPT 2070 -ZERO WIDTH JOINER 200D -ZERO WIDTH NO-BREAK SPACE FEFF -ZERO WIDTH NON-JOINER 200C -ZERO WIDTH SPACE 200B -ZIGZAG ARROW, RIGHT ANGLE WITH DOWNWARDS 237C -ZIGZAG LINE, VERTICAL 299A -Zodiacal Symbols 2648 -zwj 200D -zwnbsp FEFF -zwnj 200C -zwsp 200B - diff --git a/Master/tlpkg/tlperl.old/lib/unicore/Jamo.txt b/Master/tlpkg/tlperl.old/lib/unicore/Jamo.txt deleted file mode 100644 index 84f54bea902..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/Jamo.txt +++ /dev/null @@ -1,92 +0,0 @@ -# Jamo-4.1.0.txt -# Date: 2004-12-09, 17:48 PST [KW] -# -# Unicode Character Database -# Copyright (c) 1991-2004 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# For documentation, see UCD.html -# -# This file defines the Jamo Short Name property. -# -# See Section 3.12 of The Unicode Standard, Version 4.0 -# for more information. -# -# Each line contains two fields, separated by a semicolon. -# -# The first field gives the code point, in 4-digit hexadecimal -# form, of a combining jamo character that participates in -# the algorithmic determination Hangul syllable character names. -# The second field gives the Jamo Short Name as a one-, two-, -# or three-character ASCII string (or in one case, for U+110B, -# the null string). -# -# ############################################################# - -1100; G # HANGUL CHOSEONG KIYEOK -1101; GG # HANGUL CHOSEONG SSANGKIYEOK -1102; N # HANGUL CHOSEONG NIEUN -1103; D # HANGUL CHOSEONG TIKEUT -1104; DD # HANGUL CHOSEONG SSANGTIKEUT -1105; R # HANGUL CHOSEONG RIEUL -1106; M # HANGUL CHOSEONG MIEUM -1107; B # HANGUL CHOSEONG PIEUP -1108; BB # HANGUL CHOSEONG SSANGPIEUP -1109; S # HANGUL CHOSEONG SIOS -110A; SS # HANGUL CHOSEONG SSANGSIOS -110B; # HANGUL CHOSEONG IEUNG -110C; J # HANGUL CHOSEONG CIEUC -110D; JJ # HANGUL CHOSEONG SSANGCIEUC -110E; C # HANGUL CHOSEONG CHIEUCH -110F; K # HANGUL CHOSEONG KHIEUKH -1110; T # HANGUL CHOSEONG THIEUTH -1111; P # HANGUL CHOSEONG PHIEUPH -1112; H # HANGUL CHOSEONG HIEUH -1161; A # HANGUL JUNGSEONG A -1162; AE # HANGUL JUNGSEONG AE -1163; YA # HANGUL JUNGSEONG YA -1164; YAE # HANGUL JUNGSEONG YAE -1165; EO # HANGUL JUNGSEONG EO -1166; E # HANGUL JUNGSEONG E -1167; YEO # HANGUL JUNGSEONG YEO -1168; YE # HANGUL JUNGSEONG YE -1169; O # HANGUL JUNGSEONG O -116A; WA # HANGUL JUNGSEONG WA -116B; WAE # HANGUL JUNGSEONG WAE -116C; OE # HANGUL JUNGSEONG OE -116D; YO # HANGUL JUNGSEONG YO -116E; U # HANGUL JUNGSEONG U -116F; WEO # HANGUL JUNGSEONG WEO -1170; WE # HANGUL JUNGSEONG WE -1171; WI # HANGUL JUNGSEONG WI -1172; YU # HANGUL JUNGSEONG YU -1173; EU # HANGUL JUNGSEONG EU -1174; YI # HANGUL JUNGSEONG YI -1175; I # HANGUL JUNGSEONG I -11A8; G # HANGUL JONGSEONG KIYEOK -11A9; GG # HANGUL JONGSEONG SSANGKIYEOK -11AA; GS # HANGUL JONGSEONG KIYEOK-SIOS -11AB; N # HANGUL JONGSEONG NIEUN -11AC; NJ # HANGUL JONGSEONG NIEUN-CIEUC -11AD; NH # HANGUL JONGSEONG NIEUN-HIEUH -11AE; D # HANGUL JONGSEONG TIKEUT -11AF; L # HANGUL JONGSEONG RIEUL -11B0; LG # HANGUL JONGSEONG RIEUL-KIYEOK -11B1; LM # HANGUL JONGSEONG RIEUL-MIEUM -11B2; LB # HANGUL JONGSEONG RIEUL-PIEUP -11B3; LS # HANGUL JONGSEONG RIEUL-SIOS -11B4; LT # HANGUL JONGSEONG RIEUL-THIEUTH -11B5; LP # HANGUL JONGSEONG RIEUL-PHIEUPH -11B6; LH # HANGUL JONGSEONG RIEUL-HIEUH -11B7; M # HANGUL JONGSEONG MIEUM -11B8; B # HANGUL JONGSEONG PIEUP -11B9; BS # HANGUL JONGSEONG PIEUP-SIOS -11BA; S # HANGUL JONGSEONG SIOS -11BB; SS # HANGUL JONGSEONG SSANGSIOS -11BC; NG # HANGUL JONGSEONG IEUNG -11BD; J # HANGUL JONGSEONG CIEUC -11BE; C # HANGUL JONGSEONG CHIEUCH -11BF; K # HANGUL JONGSEONG KHIEUKH -11C0; T # HANGUL JONGSEONG THIEUTH -11C1; P # HANGUL JONGSEONG PHIEUPH -11C2; H # HANGUL JONGSEONG HIEUH - diff --git a/Master/tlpkg/tlperl.old/lib/unicore/LineBreak.txt b/Master/tlpkg/tlperl.old/lib/unicore/LineBreak.txt deleted file mode 100644 index 988f1caf866..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/LineBreak.txt +++ /dev/null @@ -1,17169 +0,0 @@ -# LineBreak-4.1.0.txt -# Date: 2005-03-17, 15:21:00 PST [KW] -# -# Line Break Properties -# -# This file is a normative contributory data file in the -# Unicode Character Database. -# It contains both normative and informative data. -# -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# -# The format is two fields separated by a semicolon. -# Field 0: Unicode value -# Field 1: LineBreak property, consisting of one of the following values: -# Normative: -# "BK", "CR", "LF", "CM", "SG", "GL", "CB", "SP", "ZW", -# "NL", "WJ", "JL", "JV", "JT", "H2", "H3" -# Informative: -# "XX", "OP", "CL", "QU", "NS", "EX", "SY", -# "IS", "PR", "PO", "NU", "AL", "ID", "IN", "HY", -# "BB", "BA", "SA", "AI", "B2" -# - All code points, assigned and unassigned, that are not listed -# explicitly are given the value "XX". -# - Characters ranges are specified as for other property files in -# the Unicode Character Database. -# -# The Unicode name of each character is provided in a comment for help -# in identifying the characters. -# -# See UAX #14: Line Breaking Properties, for more information -0000;CM # <control> -0001;CM # <control> -0002;CM # <control> -0003;CM # <control> -0004;CM # <control> -0005;CM # <control> -0006;CM # <control> -0007;CM # <control> -0008;CM # <control> -0009;BA # <control> -000A;LF # <control> -000B;CM # <control> -000C;BK # <control> -000D;CR # <control> -000E;CM # <control> -000F;CM # <control> -0010;CM # <control> -0011;CM # <control> -0012;CM # <control> -0013;CM # <control> -0014;CM # <control> -0015;CM # <control> -0016;CM # <control> -0017;CM # <control> -0018;CM # <control> -0019;CM # <control> -001A;CM # <control> -001B;CM # <control> -001C;CM # <control> -001D;CM # <control> -001E;CM # <control> -001F;CM # <control> -0020;SP # SPACE -0021;EX # EXCLAMATION MARK -0022;QU # QUOTATION MARK -0023;AL # NUMBER SIGN -0024;PR # DOLLAR SIGN -0025;PO # PERCENT SIGN -0026;AL # AMPERSAND -0027;QU # APOSTROPHE -0028;OP # LEFT PARENTHESIS -0029;CL # RIGHT PARENTHESIS -002A;AL # ASTERISK -002B;PR # PLUS SIGN -002C;IS # COMMA -002D;HY # HYPHEN-MINUS -002E;IS # FULL STOP -002F;SY # SOLIDUS -0030;NU # DIGIT ZERO -0031;NU # DIGIT ONE -0032;NU # DIGIT TWO -0033;NU # DIGIT THREE -0034;NU # DIGIT FOUR -0035;NU # DIGIT FIVE -0036;NU # DIGIT SIX -0037;NU # DIGIT SEVEN -0038;NU # DIGIT EIGHT -0039;NU # DIGIT NINE -003A;IS # COLON -003B;IS # SEMICOLON -003C;AL # LESS-THAN SIGN -003D;AL # EQUALS SIGN -003E;AL # GREATER-THAN SIGN -003F;EX # QUESTION MARK -0040;AL # COMMERCIAL AT -0041;AL # LATIN CAPITAL LETTER A -0042;AL # LATIN CAPITAL LETTER B -0043;AL # LATIN CAPITAL LETTER C -0044;AL # LATIN CAPITAL LETTER D -0045;AL # LATIN CAPITAL LETTER E -0046;AL # LATIN CAPITAL LETTER F -0047;AL # LATIN CAPITAL LETTER G -0048;AL # LATIN CAPITAL LETTER H -0049;AL # LATIN CAPITAL LETTER I -004A;AL # LATIN CAPITAL LETTER J -004B;AL # LATIN CAPITAL LETTER K -004C;AL # LATIN CAPITAL LETTER L -004D;AL # LATIN CAPITAL LETTER M -004E;AL # LATIN CAPITAL LETTER N -004F;AL # LATIN CAPITAL LETTER O -0050;AL # LATIN CAPITAL LETTER P -0051;AL # LATIN CAPITAL LETTER Q -0052;AL # LATIN CAPITAL LETTER R -0053;AL # LATIN CAPITAL LETTER S -0054;AL # LATIN CAPITAL LETTER T -0055;AL # LATIN CAPITAL LETTER U -0056;AL # LATIN CAPITAL LETTER V -0057;AL # LATIN CAPITAL LETTER W -0058;AL # LATIN CAPITAL LETTER X -0059;AL # LATIN CAPITAL LETTER Y -005A;AL # LATIN CAPITAL LETTER Z -005B;OP # LEFT SQUARE BRACKET -005C;PR # REVERSE SOLIDUS -005D;CL # RIGHT SQUARE BRACKET -005E;AL # CIRCUMFLEX ACCENT -005F;AL # LOW LINE -0060;AL # GRAVE ACCENT -0061;AL # LATIN SMALL LETTER A -0062;AL # LATIN SMALL LETTER B -0063;AL # LATIN SMALL LETTER C -0064;AL # LATIN SMALL LETTER D -0065;AL # LATIN SMALL LETTER E -0066;AL # LATIN SMALL LETTER F -0067;AL # LATIN SMALL LETTER G -0068;AL # LATIN SMALL LETTER H -0069;AL # LATIN SMALL LETTER I -006A;AL # LATIN SMALL LETTER J -006B;AL # LATIN SMALL LETTER K -006C;AL # LATIN SMALL LETTER L -006D;AL # LATIN SMALL LETTER M -006E;AL # LATIN SMALL LETTER N -006F;AL # LATIN SMALL LETTER O -0070;AL # LATIN SMALL LETTER P -0071;AL # LATIN SMALL LETTER Q -0072;AL # LATIN SMALL LETTER R -0073;AL # LATIN SMALL LETTER S -0074;AL # LATIN SMALL LETTER T -0075;AL # LATIN SMALL LETTER U -0076;AL # LATIN SMALL LETTER V -0077;AL # LATIN SMALL LETTER W -0078;AL # LATIN SMALL LETTER X -0079;AL # LATIN SMALL LETTER Y -007A;AL # LATIN SMALL LETTER Z -007B;OP # LEFT CURLY BRACKET -007C;BA # VERTICAL LINE -007D;CL # RIGHT CURLY BRACKET -007E;AL # TILDE -007F;CM # <control> -0080;CM # <control> -0081;CM # <control> -0082;CM # <control> -0083;CM # <control> -0084;CM # <control> -0085;NL # <control> -0086;CM # <control> -0087;CM # <control> -0088;CM # <control> -0089;CM # <control> -008A;CM # <control> -008B;CM # <control> -008C;CM # <control> -008D;CM # <control> -008E;CM # <control> -008F;CM # <control> -0090;CM # <control> -0091;CM # <control> -0092;CM # <control> -0093;CM # <control> -0094;CM # <control> -0095;CM # <control> -0096;CM # <control> -0097;CM # <control> -0098;CM # <control> -0099;CM # <control> -009A;CM # <control> -009B;CM # <control> -009C;CM # <control> -009D;CM # <control> -009E;CM # <control> -009F;CM # <control> -00A0;GL # NO-BREAK SPACE -00A1;AI # INVERTED EXCLAMATION MARK -00A2;PO # CENT SIGN -00A3;PR # POUND SIGN -00A4;PR # CURRENCY SIGN -00A5;PR # YEN SIGN -00A6;AL # BROKEN BAR -00A7;AI # SECTION SIGN -00A8;AI # DIAERESIS -00A9;AL # COPYRIGHT SIGN -00AA;AI # FEMININE ORDINAL INDICATOR -00AB;QU # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -00AC;AL # NOT SIGN -00AD;BA # SOFT HYPHEN -00AE;AL # REGISTERED SIGN -00AF;AL # MACRON -00B0;PO # DEGREE SIGN -00B1;PR # PLUS-MINUS SIGN -00B2;AI # SUPERSCRIPT TWO -00B3;AI # SUPERSCRIPT THREE -00B4;BB # ACUTE ACCENT -00B5;AL # MICRO SIGN -00B6;AI # PILCROW SIGN -00B7;AI # MIDDLE DOT -00B8;AI # CEDILLA -00B9;AI # SUPERSCRIPT ONE -00BA;AI # MASCULINE ORDINAL INDICATOR -00BB;QU # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -00BC;AI # VULGAR FRACTION ONE QUARTER -00BD;AI # VULGAR FRACTION ONE HALF -00BE;AI # VULGAR FRACTION THREE QUARTERS -00BF;AI # INVERTED QUESTION MARK -00C0;AL # LATIN CAPITAL LETTER A WITH GRAVE -00C1;AL # LATIN CAPITAL LETTER A WITH ACUTE -00C2;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX -00C3;AL # LATIN CAPITAL LETTER A WITH TILDE -00C4;AL # LATIN CAPITAL LETTER A WITH DIAERESIS -00C5;AL # LATIN CAPITAL LETTER A WITH RING ABOVE -00C6;AL # LATIN CAPITAL LETTER AE -00C7;AL # LATIN CAPITAL LETTER C WITH CEDILLA -00C8;AL # LATIN CAPITAL LETTER E WITH GRAVE -00C9;AL # LATIN CAPITAL LETTER E WITH ACUTE -00CA;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -00CB;AL # LATIN CAPITAL LETTER E WITH DIAERESIS -00CC;AL # LATIN CAPITAL LETTER I WITH GRAVE -00CD;AL # LATIN CAPITAL LETTER I WITH ACUTE -00CE;AL # LATIN CAPITAL LETTER I WITH CIRCUMFLEX -00CF;AL # LATIN CAPITAL LETTER I WITH DIAERESIS -00D0;AL # LATIN CAPITAL LETTER ETH -00D1;AL # LATIN CAPITAL LETTER N WITH TILDE -00D2;AL # LATIN CAPITAL LETTER O WITH GRAVE -00D3;AL # LATIN CAPITAL LETTER O WITH ACUTE -00D4;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -00D5;AL # LATIN CAPITAL LETTER O WITH TILDE -00D6;AL # LATIN CAPITAL LETTER O WITH DIAERESIS -00D7;AI # MULTIPLICATION SIGN -00D8;AL # LATIN CAPITAL LETTER O WITH STROKE -00D9;AL # LATIN CAPITAL LETTER U WITH GRAVE -00DA;AL # LATIN CAPITAL LETTER U WITH ACUTE -00DB;AL # LATIN CAPITAL LETTER U WITH CIRCUMFLEX -00DC;AL # LATIN CAPITAL LETTER U WITH DIAERESIS -00DD;AL # LATIN CAPITAL LETTER Y WITH ACUTE -00DE;AL # LATIN CAPITAL LETTER THORN -00DF;AL # LATIN SMALL LETTER SHARP S -00E0;AL # LATIN SMALL LETTER A WITH GRAVE -00E1;AL # LATIN SMALL LETTER A WITH ACUTE -00E2;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX -00E3;AL # LATIN SMALL LETTER A WITH TILDE -00E4;AL # LATIN SMALL LETTER A WITH DIAERESIS -00E5;AL # LATIN SMALL LETTER A WITH RING ABOVE -00E6;AL # LATIN SMALL LETTER AE -00E7;AL # LATIN SMALL LETTER C WITH CEDILLA -00E8;AL # LATIN SMALL LETTER E WITH GRAVE -00E9;AL # LATIN SMALL LETTER E WITH ACUTE -00EA;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX -00EB;AL # LATIN SMALL LETTER E WITH DIAERESIS -00EC;AL # LATIN SMALL LETTER I WITH GRAVE -00ED;AL # LATIN SMALL LETTER I WITH ACUTE -00EE;AL # LATIN SMALL LETTER I WITH CIRCUMFLEX -00EF;AL # LATIN SMALL LETTER I WITH DIAERESIS -00F0;AL # LATIN SMALL LETTER ETH -00F1;AL # LATIN SMALL LETTER N WITH TILDE -00F2;AL # LATIN SMALL LETTER O WITH GRAVE -00F3;AL # LATIN SMALL LETTER O WITH ACUTE -00F4;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX -00F5;AL # LATIN SMALL LETTER O WITH TILDE -00F6;AL # LATIN SMALL LETTER O WITH DIAERESIS -00F7;AI # DIVISION SIGN -00F8;AL # LATIN SMALL LETTER O WITH STROKE -00F9;AL # LATIN SMALL LETTER U WITH GRAVE -00FA;AL # LATIN SMALL LETTER U WITH ACUTE -00FB;AL # LATIN SMALL LETTER U WITH CIRCUMFLEX -00FC;AL # LATIN SMALL LETTER U WITH DIAERESIS -00FD;AL # LATIN SMALL LETTER Y WITH ACUTE -00FE;AL # LATIN SMALL LETTER THORN -00FF;AL # LATIN SMALL LETTER Y WITH DIAERESIS -0100;AL # LATIN CAPITAL LETTER A WITH MACRON -0101;AL # LATIN SMALL LETTER A WITH MACRON -0102;AL # LATIN CAPITAL LETTER A WITH BREVE -0103;AL # LATIN SMALL LETTER A WITH BREVE -0104;AL # LATIN CAPITAL LETTER A WITH OGONEK -0105;AL # LATIN SMALL LETTER A WITH OGONEK -0106;AL # LATIN CAPITAL LETTER C WITH ACUTE -0107;AL # LATIN SMALL LETTER C WITH ACUTE -0108;AL # LATIN CAPITAL LETTER C WITH CIRCUMFLEX -0109;AL # LATIN SMALL LETTER C WITH CIRCUMFLEX -010A;AL # LATIN CAPITAL LETTER C WITH DOT ABOVE -010B;AL # LATIN SMALL LETTER C WITH DOT ABOVE -010C;AL # LATIN CAPITAL LETTER C WITH CARON -010D;AL # LATIN SMALL LETTER C WITH CARON -010E;AL # LATIN CAPITAL LETTER D WITH CARON -010F;AL # LATIN SMALL LETTER D WITH CARON -0110;AL # LATIN CAPITAL LETTER D WITH STROKE -0111;AL # LATIN SMALL LETTER D WITH STROKE -0112;AL # LATIN CAPITAL LETTER E WITH MACRON -0113;AL # LATIN SMALL LETTER E WITH MACRON -0114;AL # LATIN CAPITAL LETTER E WITH BREVE -0115;AL # LATIN SMALL LETTER E WITH BREVE -0116;AL # LATIN CAPITAL LETTER E WITH DOT ABOVE -0117;AL # LATIN SMALL LETTER E WITH DOT ABOVE -0118;AL # LATIN CAPITAL LETTER E WITH OGONEK -0119;AL # LATIN SMALL LETTER E WITH OGONEK -011A;AL # LATIN CAPITAL LETTER E WITH CARON -011B;AL # LATIN SMALL LETTER E WITH CARON -011C;AL # LATIN CAPITAL LETTER G WITH CIRCUMFLEX -011D;AL # LATIN SMALL LETTER G WITH CIRCUMFLEX -011E;AL # LATIN CAPITAL LETTER G WITH BREVE -011F;AL # LATIN SMALL LETTER G WITH BREVE -0120;AL # LATIN CAPITAL LETTER G WITH DOT ABOVE -0121;AL # LATIN SMALL LETTER G WITH DOT ABOVE -0122;AL # LATIN CAPITAL LETTER G WITH CEDILLA -0123;AL # LATIN SMALL LETTER G WITH CEDILLA -0124;AL # LATIN CAPITAL LETTER H WITH CIRCUMFLEX -0125;AL # LATIN SMALL LETTER H WITH CIRCUMFLEX -0126;AL # LATIN CAPITAL LETTER H WITH STROKE -0127;AL # LATIN SMALL LETTER H WITH STROKE -0128;AL # LATIN CAPITAL LETTER I WITH TILDE -0129;AL # LATIN SMALL LETTER I WITH TILDE -012A;AL # LATIN CAPITAL LETTER I WITH MACRON -012B;AL # LATIN SMALL LETTER I WITH MACRON -012C;AL # LATIN CAPITAL LETTER I WITH BREVE -012D;AL # LATIN SMALL LETTER I WITH BREVE -012E;AL # LATIN CAPITAL LETTER I WITH OGONEK -012F;AL # LATIN SMALL LETTER I WITH OGONEK -0130;AL # LATIN CAPITAL LETTER I WITH DOT ABOVE -0131;AL # LATIN SMALL LETTER DOTLESS I -0132;AL # LATIN CAPITAL LIGATURE IJ -0133;AL # LATIN SMALL LIGATURE IJ -0134;AL # LATIN CAPITAL LETTER J WITH CIRCUMFLEX -0135;AL # LATIN SMALL LETTER J WITH CIRCUMFLEX -0136;AL # LATIN CAPITAL LETTER K WITH CEDILLA -0137;AL # LATIN SMALL LETTER K WITH CEDILLA -0138;AL # LATIN SMALL LETTER KRA -0139;AL # LATIN CAPITAL LETTER L WITH ACUTE -013A;AL # LATIN SMALL LETTER L WITH ACUTE -013B;AL # LATIN CAPITAL LETTER L WITH CEDILLA -013C;AL # LATIN SMALL LETTER L WITH CEDILLA -013D;AL # LATIN CAPITAL LETTER L WITH CARON -013E;AL # LATIN SMALL LETTER L WITH CARON -013F;AL # LATIN CAPITAL LETTER L WITH MIDDLE DOT -0140;AL # LATIN SMALL LETTER L WITH MIDDLE DOT -0141;AL # LATIN CAPITAL LETTER L WITH STROKE -0142;AL # LATIN SMALL LETTER L WITH STROKE -0143;AL # LATIN CAPITAL LETTER N WITH ACUTE -0144;AL # LATIN SMALL LETTER N WITH ACUTE -0145;AL # LATIN CAPITAL LETTER N WITH CEDILLA -0146;AL # LATIN SMALL LETTER N WITH CEDILLA -0147;AL # LATIN CAPITAL LETTER N WITH CARON -0148;AL # LATIN SMALL LETTER N WITH CARON -0149;AL # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -014A;AL # LATIN CAPITAL LETTER ENG -014B;AL # LATIN SMALL LETTER ENG -014C;AL # LATIN CAPITAL LETTER O WITH MACRON -014D;AL # LATIN SMALL LETTER O WITH MACRON -014E;AL # LATIN CAPITAL LETTER O WITH BREVE -014F;AL # LATIN SMALL LETTER O WITH BREVE -0150;AL # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -0151;AL # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0152;AL # LATIN CAPITAL LIGATURE OE -0153;AL # LATIN SMALL LIGATURE OE -0154;AL # LATIN CAPITAL LETTER R WITH ACUTE -0155;AL # LATIN SMALL LETTER R WITH ACUTE -0156;AL # LATIN CAPITAL LETTER R WITH CEDILLA -0157;AL # LATIN SMALL LETTER R WITH CEDILLA -0158;AL # LATIN CAPITAL LETTER R WITH CARON -0159;AL # LATIN SMALL LETTER R WITH CARON -015A;AL # LATIN CAPITAL LETTER S WITH ACUTE -015B;AL # LATIN SMALL LETTER S WITH ACUTE -015C;AL # LATIN CAPITAL LETTER S WITH CIRCUMFLEX -015D;AL # LATIN SMALL LETTER S WITH CIRCUMFLEX -015E;AL # LATIN CAPITAL LETTER S WITH CEDILLA -015F;AL # LATIN SMALL LETTER S WITH CEDILLA -0160;AL # LATIN CAPITAL LETTER S WITH CARON -0161;AL # LATIN SMALL LETTER S WITH CARON -0162;AL # LATIN CAPITAL LETTER T WITH CEDILLA -0163;AL # LATIN SMALL LETTER T WITH CEDILLA -0164;AL # LATIN CAPITAL LETTER T WITH CARON -0165;AL # LATIN SMALL LETTER T WITH CARON -0166;AL # LATIN CAPITAL LETTER T WITH STROKE -0167;AL # LATIN SMALL LETTER T WITH STROKE -0168;AL # LATIN CAPITAL LETTER U WITH TILDE -0169;AL # LATIN SMALL LETTER U WITH TILDE -016A;AL # LATIN CAPITAL LETTER U WITH MACRON -016B;AL # LATIN SMALL LETTER U WITH MACRON -016C;AL # LATIN CAPITAL LETTER U WITH BREVE -016D;AL # LATIN SMALL LETTER U WITH BREVE -016E;AL # LATIN CAPITAL LETTER U WITH RING ABOVE -016F;AL # LATIN SMALL LETTER U WITH RING ABOVE -0170;AL # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0171;AL # LATIN SMALL LETTER U WITH DOUBLE ACUTE -0172;AL # LATIN CAPITAL LETTER U WITH OGONEK -0173;AL # LATIN SMALL LETTER U WITH OGONEK -0174;AL # LATIN CAPITAL LETTER W WITH CIRCUMFLEX -0175;AL # LATIN SMALL LETTER W WITH CIRCUMFLEX -0176;AL # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX -0177;AL # LATIN SMALL LETTER Y WITH CIRCUMFLEX -0178;AL # LATIN CAPITAL LETTER Y WITH DIAERESIS -0179;AL # LATIN CAPITAL LETTER Z WITH ACUTE -017A;AL # LATIN SMALL LETTER Z WITH ACUTE -017B;AL # LATIN CAPITAL LETTER Z WITH DOT ABOVE -017C;AL # LATIN SMALL LETTER Z WITH DOT ABOVE -017D;AL # LATIN CAPITAL LETTER Z WITH CARON -017E;AL # LATIN SMALL LETTER Z WITH CARON -017F;AL # LATIN SMALL LETTER LONG S -0180;AL # LATIN SMALL LETTER B WITH STROKE -0181;AL # LATIN CAPITAL LETTER B WITH HOOK -0182;AL # LATIN CAPITAL LETTER B WITH TOPBAR -0183;AL # LATIN SMALL LETTER B WITH TOPBAR -0184;AL # LATIN CAPITAL LETTER TONE SIX -0185;AL # LATIN SMALL LETTER TONE SIX -0186;AL # LATIN CAPITAL LETTER OPEN O -0187;AL # LATIN CAPITAL LETTER C WITH HOOK -0188;AL # LATIN SMALL LETTER C WITH HOOK -0189;AL # LATIN CAPITAL LETTER AFRICAN D -018A;AL # LATIN CAPITAL LETTER D WITH HOOK -018B;AL # LATIN CAPITAL LETTER D WITH TOPBAR -018C;AL # LATIN SMALL LETTER D WITH TOPBAR -018D;AL # LATIN SMALL LETTER TURNED DELTA -018E;AL # LATIN CAPITAL LETTER REVERSED E -018F;AL # LATIN CAPITAL LETTER SCHWA -0190;AL # LATIN CAPITAL LETTER OPEN E -0191;AL # LATIN CAPITAL LETTER F WITH HOOK -0192;AL # LATIN SMALL LETTER F WITH HOOK -0193;AL # LATIN CAPITAL LETTER G WITH HOOK -0194;AL # LATIN CAPITAL LETTER GAMMA -0195;AL # LATIN SMALL LETTER HV -0196;AL # LATIN CAPITAL LETTER IOTA -0197;AL # LATIN CAPITAL LETTER I WITH STROKE -0198;AL # LATIN CAPITAL LETTER K WITH HOOK -0199;AL # LATIN SMALL LETTER K WITH HOOK -019A;AL # LATIN SMALL LETTER L WITH BAR -019B;AL # LATIN SMALL LETTER LAMBDA WITH STROKE -019C;AL # LATIN CAPITAL LETTER TURNED M -019D;AL # LATIN CAPITAL LETTER N WITH LEFT HOOK -019E;AL # LATIN SMALL LETTER N WITH LONG RIGHT LEG -019F;AL # LATIN CAPITAL LETTER O WITH MIDDLE TILDE -01A0;AL # LATIN CAPITAL LETTER O WITH HORN -01A1;AL # LATIN SMALL LETTER O WITH HORN -01A2;AL # LATIN CAPITAL LETTER OI -01A3;AL # LATIN SMALL LETTER OI -01A4;AL # LATIN CAPITAL LETTER P WITH HOOK -01A5;AL # LATIN SMALL LETTER P WITH HOOK -01A6;AL # LATIN LETTER YR -01A7;AL # LATIN CAPITAL LETTER TONE TWO -01A8;AL # LATIN SMALL LETTER TONE TWO -01A9;AL # LATIN CAPITAL LETTER ESH -01AA;AL # LATIN LETTER REVERSED ESH LOOP -01AB;AL # LATIN SMALL LETTER T WITH PALATAL HOOK -01AC;AL # LATIN CAPITAL LETTER T WITH HOOK -01AD;AL # LATIN SMALL LETTER T WITH HOOK -01AE;AL # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK -01AF;AL # LATIN CAPITAL LETTER U WITH HORN -01B0;AL # LATIN SMALL LETTER U WITH HORN -01B1;AL # LATIN CAPITAL LETTER UPSILON -01B2;AL # LATIN CAPITAL LETTER V WITH HOOK -01B3;AL # LATIN CAPITAL LETTER Y WITH HOOK -01B4;AL # LATIN SMALL LETTER Y WITH HOOK -01B5;AL # LATIN CAPITAL LETTER Z WITH STROKE -01B6;AL # LATIN SMALL LETTER Z WITH STROKE -01B7;AL # LATIN CAPITAL LETTER EZH -01B8;AL # LATIN CAPITAL LETTER EZH REVERSED -01B9;AL # LATIN SMALL LETTER EZH REVERSED -01BA;AL # LATIN SMALL LETTER EZH WITH TAIL -01BB;AL # LATIN LETTER TWO WITH STROKE -01BC;AL # LATIN CAPITAL LETTER TONE FIVE -01BD;AL # LATIN SMALL LETTER TONE FIVE -01BE;AL # LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE -01BF;AL # LATIN LETTER WYNN -01C0;AL # LATIN LETTER DENTAL CLICK -01C1;AL # LATIN LETTER LATERAL CLICK -01C2;AL # LATIN LETTER ALVEOLAR CLICK -01C3;AL # LATIN LETTER RETROFLEX CLICK -01C4;AL # LATIN CAPITAL LETTER DZ WITH CARON -01C5;AL # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON -01C6;AL # LATIN SMALL LETTER DZ WITH CARON -01C7;AL # LATIN CAPITAL LETTER LJ -01C8;AL # LATIN CAPITAL LETTER L WITH SMALL LETTER J -01C9;AL # LATIN SMALL LETTER LJ -01CA;AL # LATIN CAPITAL LETTER NJ -01CB;AL # LATIN CAPITAL LETTER N WITH SMALL LETTER J -01CC;AL # LATIN SMALL LETTER NJ -01CD;AL # LATIN CAPITAL LETTER A WITH CARON -01CE;AL # LATIN SMALL LETTER A WITH CARON -01CF;AL # LATIN CAPITAL LETTER I WITH CARON -01D0;AL # LATIN SMALL LETTER I WITH CARON -01D1;AL # LATIN CAPITAL LETTER O WITH CARON -01D2;AL # LATIN SMALL LETTER O WITH CARON -01D3;AL # LATIN CAPITAL LETTER U WITH CARON -01D4;AL # LATIN SMALL LETTER U WITH CARON -01D5;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01D6;AL # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON -01D7;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D8;AL # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE -01D9;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -01DA;AL # LATIN SMALL LETTER U WITH DIAERESIS AND CARON -01DB;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01DC;AL # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE -01DD;AL # LATIN SMALL LETTER TURNED E -01DE;AL # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -01DF;AL # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON -01E0;AL # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON -01E1;AL # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON -01E2;AL # LATIN CAPITAL LETTER AE WITH MACRON -01E3;AL # LATIN SMALL LETTER AE WITH MACRON -01E4;AL # LATIN CAPITAL LETTER G WITH STROKE -01E5;AL # LATIN SMALL LETTER G WITH STROKE -01E6;AL # LATIN CAPITAL LETTER G WITH CARON -01E7;AL # LATIN SMALL LETTER G WITH CARON -01E8;AL # LATIN CAPITAL LETTER K WITH CARON -01E9;AL # LATIN SMALL LETTER K WITH CARON -01EA;AL # LATIN CAPITAL LETTER O WITH OGONEK -01EB;AL # LATIN SMALL LETTER O WITH OGONEK -01EC;AL # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON -01ED;AL # LATIN SMALL LETTER O WITH OGONEK AND MACRON -01EE;AL # LATIN CAPITAL LETTER EZH WITH CARON -01EF;AL # LATIN SMALL LETTER EZH WITH CARON -01F0;AL # LATIN SMALL LETTER J WITH CARON -01F1;AL # LATIN CAPITAL LETTER DZ -01F2;AL # LATIN CAPITAL LETTER D WITH SMALL LETTER Z -01F3;AL # LATIN SMALL LETTER DZ -01F4;AL # LATIN CAPITAL LETTER G WITH ACUTE -01F5;AL # LATIN SMALL LETTER G WITH ACUTE -01F6;AL # LATIN CAPITAL LETTER HWAIR -01F7;AL # LATIN CAPITAL LETTER WYNN -01F8;AL # LATIN CAPITAL LETTER N WITH GRAVE -01F9;AL # LATIN SMALL LETTER N WITH GRAVE -01FA;AL # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -01FB;AL # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE -01FC;AL # LATIN CAPITAL LETTER AE WITH ACUTE -01FD;AL # LATIN SMALL LETTER AE WITH ACUTE -01FE;AL # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -01FF;AL # LATIN SMALL LETTER O WITH STROKE AND ACUTE -0200;AL # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE -0201;AL # LATIN SMALL LETTER A WITH DOUBLE GRAVE -0202;AL # LATIN CAPITAL LETTER A WITH INVERTED BREVE -0203;AL # LATIN SMALL LETTER A WITH INVERTED BREVE -0204;AL # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE -0205;AL # LATIN SMALL LETTER E WITH DOUBLE GRAVE -0206;AL # LATIN CAPITAL LETTER E WITH INVERTED BREVE -0207;AL # LATIN SMALL LETTER E WITH INVERTED BREVE -0208;AL # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE -0209;AL # LATIN SMALL LETTER I WITH DOUBLE GRAVE -020A;AL # LATIN CAPITAL LETTER I WITH INVERTED BREVE -020B;AL # LATIN SMALL LETTER I WITH INVERTED BREVE -020C;AL # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE -020D;AL # LATIN SMALL LETTER O WITH DOUBLE GRAVE -020E;AL # LATIN CAPITAL LETTER O WITH INVERTED BREVE -020F;AL # LATIN SMALL LETTER O WITH INVERTED BREVE -0210;AL # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE -0211;AL # LATIN SMALL LETTER R WITH DOUBLE GRAVE -0212;AL # LATIN CAPITAL LETTER R WITH INVERTED BREVE -0213;AL # LATIN SMALL LETTER R WITH INVERTED BREVE -0214;AL # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE -0215;AL # LATIN SMALL LETTER U WITH DOUBLE GRAVE -0216;AL # LATIN CAPITAL LETTER U WITH INVERTED BREVE -0217;AL # LATIN SMALL LETTER U WITH INVERTED BREVE -0218;AL # LATIN CAPITAL LETTER S WITH COMMA BELOW -0219;AL # LATIN SMALL LETTER S WITH COMMA BELOW -021A;AL # LATIN CAPITAL LETTER T WITH COMMA BELOW -021B;AL # LATIN SMALL LETTER T WITH COMMA BELOW -021C;AL # LATIN CAPITAL LETTER YOGH -021D;AL # LATIN SMALL LETTER YOGH -021E;AL # LATIN CAPITAL LETTER H WITH CARON -021F;AL # LATIN SMALL LETTER H WITH CARON -0220;AL # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG -0221;AL # LATIN SMALL LETTER D WITH CURL -0222;AL # LATIN CAPITAL LETTER OU -0223;AL # LATIN SMALL LETTER OU -0224;AL # LATIN CAPITAL LETTER Z WITH HOOK -0225;AL # LATIN SMALL LETTER Z WITH HOOK -0226;AL # LATIN CAPITAL LETTER A WITH DOT ABOVE -0227;AL # LATIN SMALL LETTER A WITH DOT ABOVE -0228;AL # LATIN CAPITAL LETTER E WITH CEDILLA -0229;AL # LATIN SMALL LETTER E WITH CEDILLA -022A;AL # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -022B;AL # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON -022C;AL # LATIN CAPITAL LETTER O WITH TILDE AND MACRON -022D;AL # LATIN SMALL LETTER O WITH TILDE AND MACRON -022E;AL # LATIN CAPITAL LETTER O WITH DOT ABOVE -022F;AL # LATIN SMALL LETTER O WITH DOT ABOVE -0230;AL # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON -0231;AL # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON -0232;AL # LATIN CAPITAL LETTER Y WITH MACRON -0233;AL # LATIN SMALL LETTER Y WITH MACRON -0234;AL # LATIN SMALL LETTER L WITH CURL -0235;AL # LATIN SMALL LETTER N WITH CURL -0236;AL # LATIN SMALL LETTER T WITH CURL -0237;AL # LATIN SMALL LETTER DOTLESS J -0238;AL # LATIN SMALL LETTER DB DIGRAPH -0239;AL # LATIN SMALL LETTER QP DIGRAPH -023A;AL # LATIN CAPITAL LETTER A WITH STROKE -023B;AL # LATIN CAPITAL LETTER C WITH STROKE -023C;AL # LATIN SMALL LETTER C WITH STROKE -023D;AL # LATIN CAPITAL LETTER L WITH BAR -023E;AL # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE -023F;AL # LATIN SMALL LETTER S WITH SWASH TAIL -0240;AL # LATIN SMALL LETTER Z WITH SWASH TAIL -0241;AL # LATIN CAPITAL LETTER GLOTTAL STOP -0250;AL # LATIN SMALL LETTER TURNED A -0251;AL # LATIN SMALL LETTER ALPHA -0252;AL # LATIN SMALL LETTER TURNED ALPHA -0253;AL # LATIN SMALL LETTER B WITH HOOK -0254;AL # LATIN SMALL LETTER OPEN O -0255;AL # LATIN SMALL LETTER C WITH CURL -0256;AL # LATIN SMALL LETTER D WITH TAIL -0257;AL # LATIN SMALL LETTER D WITH HOOK -0258;AL # LATIN SMALL LETTER REVERSED E -0259;AL # LATIN SMALL LETTER SCHWA -025A;AL # LATIN SMALL LETTER SCHWA WITH HOOK -025B;AL # LATIN SMALL LETTER OPEN E -025C;AL # LATIN SMALL LETTER REVERSED OPEN E -025D;AL # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK -025E;AL # LATIN SMALL LETTER CLOSED REVERSED OPEN E -025F;AL # LATIN SMALL LETTER DOTLESS J WITH STROKE -0260;AL # LATIN SMALL LETTER G WITH HOOK -0261;AL # LATIN SMALL LETTER SCRIPT G -0262;AL # LATIN LETTER SMALL CAPITAL G -0263;AL # LATIN SMALL LETTER GAMMA -0264;AL # LATIN SMALL LETTER RAMS HORN -0265;AL # LATIN SMALL LETTER TURNED H -0266;AL # LATIN SMALL LETTER H WITH HOOK -0267;AL # LATIN SMALL LETTER HENG WITH HOOK -0268;AL # LATIN SMALL LETTER I WITH STROKE -0269;AL # LATIN SMALL LETTER IOTA -026A;AL # LATIN LETTER SMALL CAPITAL I -026B;AL # LATIN SMALL LETTER L WITH MIDDLE TILDE -026C;AL # LATIN SMALL LETTER L WITH BELT -026D;AL # LATIN SMALL LETTER L WITH RETROFLEX HOOK -026E;AL # LATIN SMALL LETTER LEZH -026F;AL # LATIN SMALL LETTER TURNED M -0270;AL # LATIN SMALL LETTER TURNED M WITH LONG LEG -0271;AL # LATIN SMALL LETTER M WITH HOOK -0272;AL # LATIN SMALL LETTER N WITH LEFT HOOK -0273;AL # LATIN SMALL LETTER N WITH RETROFLEX HOOK -0274;AL # LATIN LETTER SMALL CAPITAL N -0275;AL # LATIN SMALL LETTER BARRED O -0276;AL # LATIN LETTER SMALL CAPITAL OE -0277;AL # LATIN SMALL LETTER CLOSED OMEGA -0278;AL # LATIN SMALL LETTER PHI -0279;AL # LATIN SMALL LETTER TURNED R -027A;AL # LATIN SMALL LETTER TURNED R WITH LONG LEG -027B;AL # LATIN SMALL LETTER TURNED R WITH HOOK -027C;AL # LATIN SMALL LETTER R WITH LONG LEG -027D;AL # LATIN SMALL LETTER R WITH TAIL -027E;AL # LATIN SMALL LETTER R WITH FISHHOOK -027F;AL # LATIN SMALL LETTER REVERSED R WITH FISHHOOK -0280;AL # LATIN LETTER SMALL CAPITAL R -0281;AL # LATIN LETTER SMALL CAPITAL INVERTED R -0282;AL # LATIN SMALL LETTER S WITH HOOK -0283;AL # LATIN SMALL LETTER ESH -0284;AL # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK -0285;AL # LATIN SMALL LETTER SQUAT REVERSED ESH -0286;AL # LATIN SMALL LETTER ESH WITH CURL -0287;AL # LATIN SMALL LETTER TURNED T -0288;AL # LATIN SMALL LETTER T WITH RETROFLEX HOOK -0289;AL # LATIN SMALL LETTER U BAR -028A;AL # LATIN SMALL LETTER UPSILON -028B;AL # LATIN SMALL LETTER V WITH HOOK -028C;AL # LATIN SMALL LETTER TURNED V -028D;AL # LATIN SMALL LETTER TURNED W -028E;AL # LATIN SMALL LETTER TURNED Y -028F;AL # LATIN LETTER SMALL CAPITAL Y -0290;AL # LATIN SMALL LETTER Z WITH RETROFLEX HOOK -0291;AL # LATIN SMALL LETTER Z WITH CURL -0292;AL # LATIN SMALL LETTER EZH -0293;AL # LATIN SMALL LETTER EZH WITH CURL -0294;AL # LATIN LETTER GLOTTAL STOP -0295;AL # LATIN LETTER PHARYNGEAL VOICED FRICATIVE -0296;AL # LATIN LETTER INVERTED GLOTTAL STOP -0297;AL # LATIN LETTER STRETCHED C -0298;AL # LATIN LETTER BILABIAL CLICK -0299;AL # LATIN LETTER SMALL CAPITAL B -029A;AL # LATIN SMALL LETTER CLOSED OPEN E -029B;AL # LATIN LETTER SMALL CAPITAL G WITH HOOK -029C;AL # LATIN LETTER SMALL CAPITAL H -029D;AL # LATIN SMALL LETTER J WITH CROSSED-TAIL -029E;AL # LATIN SMALL LETTER TURNED K -029F;AL # LATIN LETTER SMALL CAPITAL L -02A0;AL # LATIN SMALL LETTER Q WITH HOOK -02A1;AL # LATIN LETTER GLOTTAL STOP WITH STROKE -02A2;AL # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE -02A3;AL # LATIN SMALL LETTER DZ DIGRAPH -02A4;AL # LATIN SMALL LETTER DEZH DIGRAPH -02A5;AL # LATIN SMALL LETTER DZ DIGRAPH WITH CURL -02A6;AL # LATIN SMALL LETTER TS DIGRAPH -02A7;AL # LATIN SMALL LETTER TESH DIGRAPH -02A8;AL # LATIN SMALL LETTER TC DIGRAPH WITH CURL -02A9;AL # LATIN SMALL LETTER FENG DIGRAPH -02AA;AL # LATIN SMALL LETTER LS DIGRAPH -02AB;AL # LATIN SMALL LETTER LZ DIGRAPH -02AC;AL # LATIN LETTER BILABIAL PERCUSSIVE -02AD;AL # LATIN LETTER BIDENTAL PERCUSSIVE -02AE;AL # LATIN SMALL LETTER TURNED H WITH FISHHOOK -02AF;AL # LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL -02B0;AL # MODIFIER LETTER SMALL H -02B1;AL # MODIFIER LETTER SMALL H WITH HOOK -02B2;AL # MODIFIER LETTER SMALL J -02B3;AL # MODIFIER LETTER SMALL R -02B4;AL # MODIFIER LETTER SMALL TURNED R -02B5;AL # MODIFIER LETTER SMALL TURNED R WITH HOOK -02B6;AL # MODIFIER LETTER SMALL CAPITAL INVERTED R -02B7;AL # MODIFIER LETTER SMALL W -02B8;AL # MODIFIER LETTER SMALL Y -02B9;AL # MODIFIER LETTER PRIME -02BA;AL # MODIFIER LETTER DOUBLE PRIME -02BB;AL # MODIFIER LETTER TURNED COMMA -02BC;AL # MODIFIER LETTER APOSTROPHE -02BD;AL # MODIFIER LETTER REVERSED COMMA -02BE;AL # MODIFIER LETTER RIGHT HALF RING -02BF;AL # MODIFIER LETTER LEFT HALF RING -02C0;AL # MODIFIER LETTER GLOTTAL STOP -02C1;AL # MODIFIER LETTER REVERSED GLOTTAL STOP -02C2;AL # MODIFIER LETTER LEFT ARROWHEAD -02C3;AL # MODIFIER LETTER RIGHT ARROWHEAD -02C4;AL # MODIFIER LETTER UP ARROWHEAD -02C5;AL # MODIFIER LETTER DOWN ARROWHEAD -02C6;AL # MODIFIER LETTER CIRCUMFLEX ACCENT -02C7;AI # CARON -02C8;BB # MODIFIER LETTER VERTICAL LINE -02C9;AI # MODIFIER LETTER MACRON -02CA;AI # MODIFIER LETTER ACUTE ACCENT -02CB;AI # MODIFIER LETTER GRAVE ACCENT -02CC;BB # MODIFIER LETTER LOW VERTICAL LINE -02CD;AI # MODIFIER LETTER LOW MACRON -02CE;AL # MODIFIER LETTER LOW GRAVE ACCENT -02CF;AL # MODIFIER LETTER LOW ACUTE ACCENT -02D0;AI # MODIFIER LETTER TRIANGULAR COLON -02D1;AL # MODIFIER LETTER HALF TRIANGULAR COLON -02D2;AL # MODIFIER LETTER CENTRED RIGHT HALF RING -02D3;AL # MODIFIER LETTER CENTRED LEFT HALF RING -02D4;AL # MODIFIER LETTER UP TACK -02D5;AL # MODIFIER LETTER DOWN TACK -02D6;AL # MODIFIER LETTER PLUS SIGN -02D7;AL # MODIFIER LETTER MINUS SIGN -02D8;AI # BREVE -02D9;AI # DOT ABOVE -02DA;AI # RING ABOVE -02DB;AI # OGONEK -02DC;AL # SMALL TILDE -02DD;AI # DOUBLE ACUTE ACCENT -02DE;AL # MODIFIER LETTER RHOTIC HOOK -02DF;AL # MODIFIER LETTER CROSS ACCENT -02E0;AL # MODIFIER LETTER SMALL GAMMA -02E1;AL # MODIFIER LETTER SMALL L -02E2;AL # MODIFIER LETTER SMALL S -02E3;AL # MODIFIER LETTER SMALL X -02E4;AL # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP -02E5;AL # MODIFIER LETTER EXTRA-HIGH TONE BAR -02E6;AL # MODIFIER LETTER HIGH TONE BAR -02E7;AL # MODIFIER LETTER MID TONE BAR -02E8;AL # MODIFIER LETTER LOW TONE BAR -02E9;AL # MODIFIER LETTER EXTRA-LOW TONE BAR -02EA;AL # MODIFIER LETTER YIN DEPARTING TONE MARK -02EB;AL # MODIFIER LETTER YANG DEPARTING TONE MARK -02EC;AL # MODIFIER LETTER VOICING -02ED;AL # MODIFIER LETTER UNASPIRATED -02EE;AL # MODIFIER LETTER DOUBLE APOSTROPHE -02EF;AL # MODIFIER LETTER LOW DOWN ARROWHEAD -02F0;AL # MODIFIER LETTER LOW UP ARROWHEAD -02F1;AL # MODIFIER LETTER LOW LEFT ARROWHEAD -02F2;AL # MODIFIER LETTER LOW RIGHT ARROWHEAD -02F3;AL # MODIFIER LETTER LOW RING -02F4;AL # MODIFIER LETTER MIDDLE GRAVE ACCENT -02F5;AL # MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT -02F6;AL # MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT -02F7;AL # MODIFIER LETTER LOW TILDE -02F8;AL # MODIFIER LETTER RAISED COLON -02F9;AL # MODIFIER LETTER BEGIN HIGH TONE -02FA;AL # MODIFIER LETTER END HIGH TONE -02FB;AL # MODIFIER LETTER BEGIN LOW TONE -02FC;AL # MODIFIER LETTER END LOW TONE -02FD;AL # MODIFIER LETTER SHELF -02FE;AL # MODIFIER LETTER OPEN SHELF -02FF;AL # MODIFIER LETTER LOW LEFT ARROW -0300;CM # COMBINING GRAVE ACCENT -0301;CM # COMBINING ACUTE ACCENT -0302;CM # COMBINING CIRCUMFLEX ACCENT -0303;CM # COMBINING TILDE -0304;CM # COMBINING MACRON -0305;CM # COMBINING OVERLINE -0306;CM # COMBINING BREVE -0307;CM # COMBINING DOT ABOVE -0308;CM # COMBINING DIAERESIS -0309;CM # COMBINING HOOK ABOVE -030A;CM # COMBINING RING ABOVE -030B;CM # COMBINING DOUBLE ACUTE ACCENT -030C;CM # COMBINING CARON -030D;CM # COMBINING VERTICAL LINE ABOVE -030E;CM # COMBINING DOUBLE VERTICAL LINE ABOVE -030F;CM # COMBINING DOUBLE GRAVE ACCENT -0310;CM # COMBINING CANDRABINDU -0311;CM # COMBINING INVERTED BREVE -0312;CM # COMBINING TURNED COMMA ABOVE -0313;CM # COMBINING COMMA ABOVE -0314;CM # COMBINING REVERSED COMMA ABOVE -0315;CM # COMBINING COMMA ABOVE RIGHT -0316;CM # COMBINING GRAVE ACCENT BELOW -0317;CM # COMBINING ACUTE ACCENT BELOW -0318;CM # COMBINING LEFT TACK BELOW -0319;CM # COMBINING RIGHT TACK BELOW -031A;CM # COMBINING LEFT ANGLE ABOVE -031B;CM # COMBINING HORN -031C;CM # COMBINING LEFT HALF RING BELOW -031D;CM # COMBINING UP TACK BELOW -031E;CM # COMBINING DOWN TACK BELOW -031F;CM # COMBINING PLUS SIGN BELOW -0320;CM # COMBINING MINUS SIGN BELOW -0321;CM # COMBINING PALATALIZED HOOK BELOW -0322;CM # COMBINING RETROFLEX HOOK BELOW -0323;CM # COMBINING DOT BELOW -0324;CM # COMBINING DIAERESIS BELOW -0325;CM # COMBINING RING BELOW -0326;CM # COMBINING COMMA BELOW -0327;CM # COMBINING CEDILLA -0328;CM # COMBINING OGONEK -0329;CM # COMBINING VERTICAL LINE BELOW -032A;CM # COMBINING BRIDGE BELOW -032B;CM # COMBINING INVERTED DOUBLE ARCH BELOW -032C;CM # COMBINING CARON BELOW -032D;CM # COMBINING CIRCUMFLEX ACCENT BELOW -032E;CM # COMBINING BREVE BELOW -032F;CM # COMBINING INVERTED BREVE BELOW -0330;CM # COMBINING TILDE BELOW -0331;CM # COMBINING MACRON BELOW -0332;CM # COMBINING LOW LINE -0333;CM # COMBINING DOUBLE LOW LINE -0334;CM # COMBINING TILDE OVERLAY -0335;CM # COMBINING SHORT STROKE OVERLAY -0336;CM # COMBINING LONG STROKE OVERLAY -0337;CM # COMBINING SHORT SOLIDUS OVERLAY -0338;CM # COMBINING LONG SOLIDUS OVERLAY -0339;CM # COMBINING RIGHT HALF RING BELOW -033A;CM # COMBINING INVERTED BRIDGE BELOW -033B;CM # COMBINING SQUARE BELOW -033C;CM # COMBINING SEAGULL BELOW -033D;CM # COMBINING X ABOVE -033E;CM # COMBINING VERTICAL TILDE -033F;CM # COMBINING DOUBLE OVERLINE -0340;CM # COMBINING GRAVE TONE MARK -0341;CM # COMBINING ACUTE TONE MARK -0342;CM # COMBINING GREEK PERISPOMENI -0343;CM # COMBINING GREEK KORONIS -0344;CM # COMBINING GREEK DIALYTIKA TONOS -0345;CM # COMBINING GREEK YPOGEGRAMMENI -0346;CM # COMBINING BRIDGE ABOVE -0347;CM # COMBINING EQUALS SIGN BELOW -0348;CM # COMBINING DOUBLE VERTICAL LINE BELOW -0349;CM # COMBINING LEFT ANGLE BELOW -034A;CM # COMBINING NOT TILDE ABOVE -034B;CM # COMBINING HOMOTHETIC ABOVE -034C;CM # COMBINING ALMOST EQUAL TO ABOVE -034D;CM # COMBINING LEFT RIGHT ARROW BELOW -034E;CM # COMBINING UPWARDS ARROW BELOW -034F;GL # COMBINING GRAPHEME JOINER -0350;CM # COMBINING RIGHT ARROWHEAD ABOVE -0351;CM # COMBINING LEFT HALF RING ABOVE -0352;CM # COMBINING FERMATA -0353;CM # COMBINING X BELOW -0354;CM # COMBINING LEFT ARROWHEAD BELOW -0355;CM # COMBINING RIGHT ARROWHEAD BELOW -0356;CM # COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW -0357;CM # COMBINING RIGHT HALF RING ABOVE -0358;CM # COMBINING DOT ABOVE RIGHT -0359;CM # COMBINING ASTERISK BELOW -035A;CM # COMBINING DOUBLE RING BELOW -035B;CM # COMBINING ZIGZAG ABOVE -035C;CM # COMBINING DOUBLE BREVE BELOW -035D;GL # COMBINING DOUBLE BREVE -035E;GL # COMBINING DOUBLE MACRON -035F;GL # COMBINING DOUBLE MACRON BELOW -0360;GL # COMBINING DOUBLE TILDE -0361;GL # COMBINING DOUBLE INVERTED BREVE -0362;GL # COMBINING DOUBLE RIGHTWARDS ARROW BELOW -0363;CM # COMBINING LATIN SMALL LETTER A -0364;CM # COMBINING LATIN SMALL LETTER E -0365;CM # COMBINING LATIN SMALL LETTER I -0366;CM # COMBINING LATIN SMALL LETTER O -0367;CM # COMBINING LATIN SMALL LETTER U -0368;CM # COMBINING LATIN SMALL LETTER C -0369;CM # COMBINING LATIN SMALL LETTER D -036A;CM # COMBINING LATIN SMALL LETTER H -036B;CM # COMBINING LATIN SMALL LETTER M -036C;CM # COMBINING LATIN SMALL LETTER R -036D;CM # COMBINING LATIN SMALL LETTER T -036E;CM # COMBINING LATIN SMALL LETTER V -036F;CM # COMBINING LATIN SMALL LETTER X -0374;AL # GREEK NUMERAL SIGN -0375;AL # GREEK LOWER NUMERAL SIGN -037A;AL # GREEK YPOGEGRAMMENI -037E;IS # GREEK QUESTION MARK -0384;AL # GREEK TONOS -0385;AL # GREEK DIALYTIKA TONOS -0386;AL # GREEK CAPITAL LETTER ALPHA WITH TONOS -0387;AL # GREEK ANO TELEIA -0388;AL # GREEK CAPITAL LETTER EPSILON WITH TONOS -0389;AL # GREEK CAPITAL LETTER ETA WITH TONOS -038A;AL # GREEK CAPITAL LETTER IOTA WITH TONOS -038C;AL # GREEK CAPITAL LETTER OMICRON WITH TONOS -038E;AL # GREEK CAPITAL LETTER UPSILON WITH TONOS -038F;AL # GREEK CAPITAL LETTER OMEGA WITH TONOS -0390;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -0391;AL # GREEK CAPITAL LETTER ALPHA -0392;AL # GREEK CAPITAL LETTER BETA -0393;AL # GREEK CAPITAL LETTER GAMMA -0394;AL # GREEK CAPITAL LETTER DELTA -0395;AL # GREEK CAPITAL LETTER EPSILON -0396;AL # GREEK CAPITAL LETTER ZETA -0397;AL # GREEK CAPITAL LETTER ETA -0398;AL # GREEK CAPITAL LETTER THETA -0399;AL # GREEK CAPITAL LETTER IOTA -039A;AL # GREEK CAPITAL LETTER KAPPA -039B;AL # GREEK CAPITAL LETTER LAMDA -039C;AL # GREEK CAPITAL LETTER MU -039D;AL # GREEK CAPITAL LETTER NU -039E;AL # GREEK CAPITAL LETTER XI -039F;AL # GREEK CAPITAL LETTER OMICRON -03A0;AL # GREEK CAPITAL LETTER PI -03A1;AL # GREEK CAPITAL LETTER RHO -03A3;AL # GREEK CAPITAL LETTER SIGMA -03A4;AL # GREEK CAPITAL LETTER TAU -03A5;AL # GREEK CAPITAL LETTER UPSILON -03A6;AL # GREEK CAPITAL LETTER PHI -03A7;AL # GREEK CAPITAL LETTER CHI -03A8;AL # GREEK CAPITAL LETTER PSI -03A9;AL # GREEK CAPITAL LETTER OMEGA -03AA;AL # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA -03AB;AL # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA -03AC;AL # GREEK SMALL LETTER ALPHA WITH TONOS -03AD;AL # GREEK SMALL LETTER EPSILON WITH TONOS -03AE;AL # GREEK SMALL LETTER ETA WITH TONOS -03AF;AL # GREEK SMALL LETTER IOTA WITH TONOS -03B0;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -03B1;AL # GREEK SMALL LETTER ALPHA -03B2;AL # GREEK SMALL LETTER BETA -03B3;AL # GREEK SMALL LETTER GAMMA -03B4;AL # GREEK SMALL LETTER DELTA -03B5;AL # GREEK SMALL LETTER EPSILON -03B6;AL # GREEK SMALL LETTER ZETA -03B7;AL # GREEK SMALL LETTER ETA -03B8;AL # GREEK SMALL LETTER THETA -03B9;AL # GREEK SMALL LETTER IOTA -03BA;AL # GREEK SMALL LETTER KAPPA -03BB;AL # GREEK SMALL LETTER LAMDA -03BC;AL # GREEK SMALL LETTER MU -03BD;AL # GREEK SMALL LETTER NU -03BE;AL # GREEK SMALL LETTER XI -03BF;AL # GREEK SMALL LETTER OMICRON -03C0;AL # GREEK SMALL LETTER PI -03C1;AL # GREEK SMALL LETTER RHO -03C2;AL # GREEK SMALL LETTER FINAL SIGMA -03C3;AL # GREEK SMALL LETTER SIGMA -03C4;AL # GREEK SMALL LETTER TAU -03C5;AL # GREEK SMALL LETTER UPSILON -03C6;AL # GREEK SMALL LETTER PHI -03C7;AL # GREEK SMALL LETTER CHI -03C8;AL # GREEK SMALL LETTER PSI -03C9;AL # GREEK SMALL LETTER OMEGA -03CA;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA -03CB;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA -03CC;AL # GREEK SMALL LETTER OMICRON WITH TONOS -03CD;AL # GREEK SMALL LETTER UPSILON WITH TONOS -03CE;AL # GREEK SMALL LETTER OMEGA WITH TONOS -03D0;AL # GREEK BETA SYMBOL -03D1;AL # GREEK THETA SYMBOL -03D2;AL # GREEK UPSILON WITH HOOK SYMBOL -03D3;AL # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL -03D4;AL # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL -03D5;AL # GREEK PHI SYMBOL -03D6;AL # GREEK PI SYMBOL -03D7;AL # GREEK KAI SYMBOL -03D8;AL # GREEK LETTER ARCHAIC KOPPA -03D9;AL # GREEK SMALL LETTER ARCHAIC KOPPA -03DA;AL # GREEK LETTER STIGMA -03DB;AL # GREEK SMALL LETTER STIGMA -03DC;AL # GREEK LETTER DIGAMMA -03DD;AL # GREEK SMALL LETTER DIGAMMA -03DE;AL # GREEK LETTER KOPPA -03DF;AL # GREEK SMALL LETTER KOPPA -03E0;AL # GREEK LETTER SAMPI -03E1;AL # GREEK SMALL LETTER SAMPI -03E2;AL # COPTIC CAPITAL LETTER SHEI -03E3;AL # COPTIC SMALL LETTER SHEI -03E4;AL # COPTIC CAPITAL LETTER FEI -03E5;AL # COPTIC SMALL LETTER FEI -03E6;AL # COPTIC CAPITAL LETTER KHEI -03E7;AL # COPTIC SMALL LETTER KHEI -03E8;AL # COPTIC CAPITAL LETTER HORI -03E9;AL # COPTIC SMALL LETTER HORI -03EA;AL # COPTIC CAPITAL LETTER GANGIA -03EB;AL # COPTIC SMALL LETTER GANGIA -03EC;AL # COPTIC CAPITAL LETTER SHIMA -03ED;AL # COPTIC SMALL LETTER SHIMA -03EE;AL # COPTIC CAPITAL LETTER DEI -03EF;AL # COPTIC SMALL LETTER DEI -03F0;AL # GREEK KAPPA SYMBOL -03F1;AL # GREEK RHO SYMBOL -03F2;AL # GREEK LUNATE SIGMA SYMBOL -03F3;AL # GREEK LETTER YOT -03F4;AL # GREEK CAPITAL THETA SYMBOL -03F5;AL # GREEK LUNATE EPSILON SYMBOL -03F6;AL # GREEK REVERSED LUNATE EPSILON SYMBOL -03F7;AL # GREEK CAPITAL LETTER SHO -03F8;AL # GREEK SMALL LETTER SHO -03F9;AL # GREEK CAPITAL LUNATE SIGMA SYMBOL -03FA;AL # GREEK CAPITAL LETTER SAN -03FB;AL # GREEK SMALL LETTER SAN -03FC;AL # GREEK RHO WITH STROKE SYMBOL -03FD;AL # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL -03FE;AL # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL -03FF;AL # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL -0400;AL # CYRILLIC CAPITAL LETTER IE WITH GRAVE -0401;AL # CYRILLIC CAPITAL LETTER IO -0402;AL # CYRILLIC CAPITAL LETTER DJE -0403;AL # CYRILLIC CAPITAL LETTER GJE -0404;AL # CYRILLIC CAPITAL LETTER UKRAINIAN IE -0405;AL # CYRILLIC CAPITAL LETTER DZE -0406;AL # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I -0407;AL # CYRILLIC CAPITAL LETTER YI -0408;AL # CYRILLIC CAPITAL LETTER JE -0409;AL # CYRILLIC CAPITAL LETTER LJE -040A;AL # CYRILLIC CAPITAL LETTER NJE -040B;AL # CYRILLIC CAPITAL LETTER TSHE -040C;AL # CYRILLIC CAPITAL LETTER KJE -040D;AL # CYRILLIC CAPITAL LETTER I WITH GRAVE -040E;AL # CYRILLIC CAPITAL LETTER SHORT U -040F;AL # CYRILLIC CAPITAL LETTER DZHE -0410;AL # CYRILLIC CAPITAL LETTER A -0411;AL # CYRILLIC CAPITAL LETTER BE -0412;AL # CYRILLIC CAPITAL LETTER VE -0413;AL # CYRILLIC CAPITAL LETTER GHE -0414;AL # CYRILLIC CAPITAL LETTER DE -0415;AL # CYRILLIC CAPITAL LETTER IE -0416;AL # CYRILLIC CAPITAL LETTER ZHE -0417;AL # CYRILLIC CAPITAL LETTER ZE -0418;AL # CYRILLIC CAPITAL LETTER I -0419;AL # CYRILLIC CAPITAL LETTER SHORT I -041A;AL # CYRILLIC CAPITAL LETTER KA -041B;AL # CYRILLIC CAPITAL LETTER EL -041C;AL # CYRILLIC CAPITAL LETTER EM -041D;AL # CYRILLIC CAPITAL LETTER EN -041E;AL # CYRILLIC CAPITAL LETTER O -041F;AL # CYRILLIC CAPITAL LETTER PE -0420;AL # CYRILLIC CAPITAL LETTER ER -0421;AL # CYRILLIC CAPITAL LETTER ES -0422;AL # CYRILLIC CAPITAL LETTER TE -0423;AL # CYRILLIC CAPITAL LETTER U -0424;AL # CYRILLIC CAPITAL LETTER EF -0425;AL # CYRILLIC CAPITAL LETTER HA -0426;AL # CYRILLIC CAPITAL LETTER TSE -0427;AL # CYRILLIC CAPITAL LETTER CHE -0428;AL # CYRILLIC CAPITAL LETTER SHA -0429;AL # CYRILLIC CAPITAL LETTER SHCHA -042A;AL # CYRILLIC CAPITAL LETTER HARD SIGN -042B;AL # CYRILLIC CAPITAL LETTER YERU -042C;AL # CYRILLIC CAPITAL LETTER SOFT SIGN -042D;AL # CYRILLIC CAPITAL LETTER E -042E;AL # CYRILLIC CAPITAL LETTER YU -042F;AL # CYRILLIC CAPITAL LETTER YA -0430;AL # CYRILLIC SMALL LETTER A -0431;AL # CYRILLIC SMALL LETTER BE -0432;AL # CYRILLIC SMALL LETTER VE -0433;AL # CYRILLIC SMALL LETTER GHE -0434;AL # CYRILLIC SMALL LETTER DE -0435;AL # CYRILLIC SMALL LETTER IE -0436;AL # CYRILLIC SMALL LETTER ZHE -0437;AL # CYRILLIC SMALL LETTER ZE -0438;AL # CYRILLIC SMALL LETTER I -0439;AL # CYRILLIC SMALL LETTER SHORT I -043A;AL # CYRILLIC SMALL LETTER KA -043B;AL # CYRILLIC SMALL LETTER EL -043C;AL # CYRILLIC SMALL LETTER EM -043D;AL # CYRILLIC SMALL LETTER EN -043E;AL # CYRILLIC SMALL LETTER O -043F;AL # CYRILLIC SMALL LETTER PE -0440;AL # CYRILLIC SMALL LETTER ER -0441;AL # CYRILLIC SMALL LETTER ES -0442;AL # CYRILLIC SMALL LETTER TE -0443;AL # CYRILLIC SMALL LETTER U -0444;AL # CYRILLIC SMALL LETTER EF -0445;AL # CYRILLIC SMALL LETTER HA -0446;AL # CYRILLIC SMALL LETTER TSE -0447;AL # CYRILLIC SMALL LETTER CHE -0448;AL # CYRILLIC SMALL LETTER SHA -0449;AL # CYRILLIC SMALL LETTER SHCHA -044A;AL # CYRILLIC SMALL LETTER HARD SIGN -044B;AL # CYRILLIC SMALL LETTER YERU -044C;AL # CYRILLIC SMALL LETTER SOFT SIGN -044D;AL # CYRILLIC SMALL LETTER E -044E;AL # CYRILLIC SMALL LETTER YU -044F;AL # CYRILLIC SMALL LETTER YA -0450;AL # CYRILLIC SMALL LETTER IE WITH GRAVE -0451;AL # CYRILLIC SMALL LETTER IO -0452;AL # CYRILLIC SMALL LETTER DJE -0453;AL # CYRILLIC SMALL LETTER GJE -0454;AL # CYRILLIC SMALL LETTER UKRAINIAN IE -0455;AL # CYRILLIC SMALL LETTER DZE -0456;AL # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -0457;AL # CYRILLIC SMALL LETTER YI -0458;AL # CYRILLIC SMALL LETTER JE -0459;AL # CYRILLIC SMALL LETTER LJE -045A;AL # CYRILLIC SMALL LETTER NJE -045B;AL # CYRILLIC SMALL LETTER TSHE -045C;AL # CYRILLIC SMALL LETTER KJE -045D;AL # CYRILLIC SMALL LETTER I WITH GRAVE -045E;AL # CYRILLIC SMALL LETTER SHORT U -045F;AL # CYRILLIC SMALL LETTER DZHE -0460;AL # CYRILLIC CAPITAL LETTER OMEGA -0461;AL # CYRILLIC SMALL LETTER OMEGA -0462;AL # CYRILLIC CAPITAL LETTER YAT -0463;AL # CYRILLIC SMALL LETTER YAT -0464;AL # CYRILLIC CAPITAL LETTER IOTIFIED E -0465;AL # CYRILLIC SMALL LETTER IOTIFIED E -0466;AL # CYRILLIC CAPITAL LETTER LITTLE YUS -0467;AL # CYRILLIC SMALL LETTER LITTLE YUS -0468;AL # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS -0469;AL # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS -046A;AL # CYRILLIC CAPITAL LETTER BIG YUS -046B;AL # CYRILLIC SMALL LETTER BIG YUS -046C;AL # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS -046D;AL # CYRILLIC SMALL LETTER IOTIFIED BIG YUS -046E;AL # CYRILLIC CAPITAL LETTER KSI -046F;AL # CYRILLIC SMALL LETTER KSI -0470;AL # CYRILLIC CAPITAL LETTER PSI -0471;AL # CYRILLIC SMALL LETTER PSI -0472;AL # CYRILLIC CAPITAL LETTER FITA -0473;AL # CYRILLIC SMALL LETTER FITA -0474;AL # CYRILLIC CAPITAL LETTER IZHITSA -0475;AL # CYRILLIC SMALL LETTER IZHITSA -0476;AL # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT -0477;AL # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT -0478;AL # CYRILLIC CAPITAL LETTER UK -0479;AL # CYRILLIC SMALL LETTER UK -047A;AL # CYRILLIC CAPITAL LETTER ROUND OMEGA -047B;AL # CYRILLIC SMALL LETTER ROUND OMEGA -047C;AL # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO -047D;AL # CYRILLIC SMALL LETTER OMEGA WITH TITLO -047E;AL # CYRILLIC CAPITAL LETTER OT -047F;AL # CYRILLIC SMALL LETTER OT -0480;AL # CYRILLIC CAPITAL LETTER KOPPA -0481;AL # CYRILLIC SMALL LETTER KOPPA -0482;AL # CYRILLIC THOUSANDS SIGN -0483;CM # COMBINING CYRILLIC TITLO -0484;CM # COMBINING CYRILLIC PALATALIZATION -0485;CM # COMBINING CYRILLIC DASIA PNEUMATA -0486;CM # COMBINING CYRILLIC PSILI PNEUMATA -0488;CM # COMBINING CYRILLIC HUNDRED THOUSANDS SIGN -0489;CM # COMBINING CYRILLIC MILLIONS SIGN -048A;AL # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL -048B;AL # CYRILLIC SMALL LETTER SHORT I WITH TAIL -048C;AL # CYRILLIC CAPITAL LETTER SEMISOFT SIGN -048D;AL # CYRILLIC SMALL LETTER SEMISOFT SIGN -048E;AL # CYRILLIC CAPITAL LETTER ER WITH TICK -048F;AL # CYRILLIC SMALL LETTER ER WITH TICK -0490;AL # CYRILLIC CAPITAL LETTER GHE WITH UPTURN -0491;AL # CYRILLIC SMALL LETTER GHE WITH UPTURN -0492;AL # CYRILLIC CAPITAL LETTER GHE WITH STROKE -0493;AL # CYRILLIC SMALL LETTER GHE WITH STROKE -0494;AL # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK -0495;AL # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK -0496;AL # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER -0497;AL # CYRILLIC SMALL LETTER ZHE WITH DESCENDER -0498;AL # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER -0499;AL # CYRILLIC SMALL LETTER ZE WITH DESCENDER -049A;AL # CYRILLIC CAPITAL LETTER KA WITH DESCENDER -049B;AL # CYRILLIC SMALL LETTER KA WITH DESCENDER -049C;AL # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE -049D;AL # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE -049E;AL # CYRILLIC CAPITAL LETTER KA WITH STROKE -049F;AL # CYRILLIC SMALL LETTER KA WITH STROKE -04A0;AL # CYRILLIC CAPITAL LETTER BASHKIR KA -04A1;AL # CYRILLIC SMALL LETTER BASHKIR KA -04A2;AL # CYRILLIC CAPITAL LETTER EN WITH DESCENDER -04A3;AL # CYRILLIC SMALL LETTER EN WITH DESCENDER -04A4;AL # CYRILLIC CAPITAL LIGATURE EN GHE -04A5;AL # CYRILLIC SMALL LIGATURE EN GHE -04A6;AL # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK -04A7;AL # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK -04A8;AL # CYRILLIC CAPITAL LETTER ABKHASIAN HA -04A9;AL # CYRILLIC SMALL LETTER ABKHASIAN HA -04AA;AL # CYRILLIC CAPITAL LETTER ES WITH DESCENDER -04AB;AL # CYRILLIC SMALL LETTER ES WITH DESCENDER -04AC;AL # CYRILLIC CAPITAL LETTER TE WITH DESCENDER -04AD;AL # CYRILLIC SMALL LETTER TE WITH DESCENDER -04AE;AL # CYRILLIC CAPITAL LETTER STRAIGHT U -04AF;AL # CYRILLIC SMALL LETTER STRAIGHT U -04B0;AL # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE -04B1;AL # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE -04B2;AL # CYRILLIC CAPITAL LETTER HA WITH DESCENDER -04B3;AL # CYRILLIC SMALL LETTER HA WITH DESCENDER -04B4;AL # CYRILLIC CAPITAL LIGATURE TE TSE -04B5;AL # CYRILLIC SMALL LIGATURE TE TSE -04B6;AL # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER -04B7;AL # CYRILLIC SMALL LETTER CHE WITH DESCENDER -04B8;AL # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE -04B9;AL # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE -04BA;AL # CYRILLIC CAPITAL LETTER SHHA -04BB;AL # CYRILLIC SMALL LETTER SHHA -04BC;AL # CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04BD;AL # CYRILLIC SMALL LETTER ABKHASIAN CHE -04BE;AL # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER -04BF;AL # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER -04C0;AL # CYRILLIC LETTER PALOCHKA -04C1;AL # CYRILLIC CAPITAL LETTER ZHE WITH BREVE -04C2;AL # CYRILLIC SMALL LETTER ZHE WITH BREVE -04C3;AL # CYRILLIC CAPITAL LETTER KA WITH HOOK -04C4;AL # CYRILLIC SMALL LETTER KA WITH HOOK -04C5;AL # CYRILLIC CAPITAL LETTER EL WITH TAIL -04C6;AL # CYRILLIC SMALL LETTER EL WITH TAIL -04C7;AL # CYRILLIC CAPITAL LETTER EN WITH HOOK -04C8;AL # CYRILLIC SMALL LETTER EN WITH HOOK -04C9;AL # CYRILLIC CAPITAL LETTER EN WITH TAIL -04CA;AL # CYRILLIC SMALL LETTER EN WITH TAIL -04CB;AL # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE -04CC;AL # CYRILLIC SMALL LETTER KHAKASSIAN CHE -04CD;AL # CYRILLIC CAPITAL LETTER EM WITH TAIL -04CE;AL # CYRILLIC SMALL LETTER EM WITH TAIL -04D0;AL # CYRILLIC CAPITAL LETTER A WITH BREVE -04D1;AL # CYRILLIC SMALL LETTER A WITH BREVE -04D2;AL # CYRILLIC CAPITAL LETTER A WITH DIAERESIS -04D3;AL # CYRILLIC SMALL LETTER A WITH DIAERESIS -04D4;AL # CYRILLIC CAPITAL LIGATURE A IE -04D5;AL # CYRILLIC SMALL LIGATURE A IE -04D6;AL # CYRILLIC CAPITAL LETTER IE WITH BREVE -04D7;AL # CYRILLIC SMALL LETTER IE WITH BREVE -04D8;AL # CYRILLIC CAPITAL LETTER SCHWA -04D9;AL # CYRILLIC SMALL LETTER SCHWA -04DA;AL # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS -04DB;AL # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS -04DC;AL # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS -04DD;AL # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS -04DE;AL # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS -04DF;AL # CYRILLIC SMALL LETTER ZE WITH DIAERESIS -04E0;AL # CYRILLIC CAPITAL LETTER ABKHASIAN DZE -04E1;AL # CYRILLIC SMALL LETTER ABKHASIAN DZE -04E2;AL # CYRILLIC CAPITAL LETTER I WITH MACRON -04E3;AL # CYRILLIC SMALL LETTER I WITH MACRON -04E4;AL # CYRILLIC CAPITAL LETTER I WITH DIAERESIS -04E5;AL # CYRILLIC SMALL LETTER I WITH DIAERESIS -04E6;AL # CYRILLIC CAPITAL LETTER O WITH DIAERESIS -04E7;AL # CYRILLIC SMALL LETTER O WITH DIAERESIS -04E8;AL # CYRILLIC CAPITAL LETTER BARRED O -04E9;AL # CYRILLIC SMALL LETTER BARRED O -04EA;AL # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS -04EB;AL # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS -04EC;AL # CYRILLIC CAPITAL LETTER E WITH DIAERESIS -04ED;AL # CYRILLIC SMALL LETTER E WITH DIAERESIS -04EE;AL # CYRILLIC CAPITAL LETTER U WITH MACRON -04EF;AL # CYRILLIC SMALL LETTER U WITH MACRON -04F0;AL # CYRILLIC CAPITAL LETTER U WITH DIAERESIS -04F1;AL # CYRILLIC SMALL LETTER U WITH DIAERESIS -04F2;AL # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE -04F3;AL # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE -04F4;AL # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS -04F5;AL # CYRILLIC SMALL LETTER CHE WITH DIAERESIS -04F6;AL # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER -04F7;AL # CYRILLIC SMALL LETTER GHE WITH DESCENDER -04F8;AL # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS -04F9;AL # CYRILLIC SMALL LETTER YERU WITH DIAERESIS -0500;AL # CYRILLIC CAPITAL LETTER KOMI DE -0501;AL # CYRILLIC SMALL LETTER KOMI DE -0502;AL # CYRILLIC CAPITAL LETTER KOMI DJE -0503;AL # CYRILLIC SMALL LETTER KOMI DJE -0504;AL # CYRILLIC CAPITAL LETTER KOMI ZJE -0505;AL # CYRILLIC SMALL LETTER KOMI ZJE -0506;AL # CYRILLIC CAPITAL LETTER KOMI DZJE -0507;AL # CYRILLIC SMALL LETTER KOMI DZJE -0508;AL # CYRILLIC CAPITAL LETTER KOMI LJE -0509;AL # CYRILLIC SMALL LETTER KOMI LJE -050A;AL # CYRILLIC CAPITAL LETTER KOMI NJE -050B;AL # CYRILLIC SMALL LETTER KOMI NJE -050C;AL # CYRILLIC CAPITAL LETTER KOMI SJE -050D;AL # CYRILLIC SMALL LETTER KOMI SJE -050E;AL # CYRILLIC CAPITAL LETTER KOMI TJE -050F;AL # CYRILLIC SMALL LETTER KOMI TJE -0531;AL # ARMENIAN CAPITAL LETTER AYB -0532;AL # ARMENIAN CAPITAL LETTER BEN -0533;AL # ARMENIAN CAPITAL LETTER GIM -0534;AL # ARMENIAN CAPITAL LETTER DA -0535;AL # ARMENIAN CAPITAL LETTER ECH -0536;AL # ARMENIAN CAPITAL LETTER ZA -0537;AL # ARMENIAN CAPITAL LETTER EH -0538;AL # ARMENIAN CAPITAL LETTER ET -0539;AL # ARMENIAN CAPITAL LETTER TO -053A;AL # ARMENIAN CAPITAL LETTER ZHE -053B;AL # ARMENIAN CAPITAL LETTER INI -053C;AL # ARMENIAN CAPITAL LETTER LIWN -053D;AL # ARMENIAN CAPITAL LETTER XEH -053E;AL # ARMENIAN CAPITAL LETTER CA -053F;AL # ARMENIAN CAPITAL LETTER KEN -0540;AL # ARMENIAN CAPITAL LETTER HO -0541;AL # ARMENIAN CAPITAL LETTER JA -0542;AL # ARMENIAN CAPITAL LETTER GHAD -0543;AL # ARMENIAN CAPITAL LETTER CHEH -0544;AL # ARMENIAN CAPITAL LETTER MEN -0545;AL # ARMENIAN CAPITAL LETTER YI -0546;AL # ARMENIAN CAPITAL LETTER NOW -0547;AL # ARMENIAN CAPITAL LETTER SHA -0548;AL # ARMENIAN CAPITAL LETTER VO -0549;AL # ARMENIAN CAPITAL LETTER CHA -054A;AL # ARMENIAN CAPITAL LETTER PEH -054B;AL # ARMENIAN CAPITAL LETTER JHEH -054C;AL # ARMENIAN CAPITAL LETTER RA -054D;AL # ARMENIAN CAPITAL LETTER SEH -054E;AL # ARMENIAN CAPITAL LETTER VEW -054F;AL # ARMENIAN CAPITAL LETTER TIWN -0550;AL # ARMENIAN CAPITAL LETTER REH -0551;AL # ARMENIAN CAPITAL LETTER CO -0552;AL # ARMENIAN CAPITAL LETTER YIWN -0553;AL # ARMENIAN CAPITAL LETTER PIWR -0554;AL # ARMENIAN CAPITAL LETTER KEH -0555;AL # ARMENIAN CAPITAL LETTER OH -0556;AL # ARMENIAN CAPITAL LETTER FEH -0559;AL # ARMENIAN MODIFIER LETTER LEFT HALF RING -055A;AL # ARMENIAN APOSTROPHE -055B;AL # ARMENIAN EMPHASIS MARK -055C;AL # ARMENIAN EXCLAMATION MARK -055D;AL # ARMENIAN COMMA -055E;AL # ARMENIAN QUESTION MARK -055F;AL # ARMENIAN ABBREVIATION MARK -0561;AL # ARMENIAN SMALL LETTER AYB -0562;AL # ARMENIAN SMALL LETTER BEN -0563;AL # ARMENIAN SMALL LETTER GIM -0564;AL # ARMENIAN SMALL LETTER DA -0565;AL # ARMENIAN SMALL LETTER ECH -0566;AL # ARMENIAN SMALL LETTER ZA -0567;AL # ARMENIAN SMALL LETTER EH -0568;AL # ARMENIAN SMALL LETTER ET -0569;AL # ARMENIAN SMALL LETTER TO -056A;AL # ARMENIAN SMALL LETTER ZHE -056B;AL # ARMENIAN SMALL LETTER INI -056C;AL # ARMENIAN SMALL LETTER LIWN -056D;AL # ARMENIAN SMALL LETTER XEH -056E;AL # ARMENIAN SMALL LETTER CA -056F;AL # ARMENIAN SMALL LETTER KEN -0570;AL # ARMENIAN SMALL LETTER HO -0571;AL # ARMENIAN SMALL LETTER JA -0572;AL # ARMENIAN SMALL LETTER GHAD -0573;AL # ARMENIAN SMALL LETTER CHEH -0574;AL # ARMENIAN SMALL LETTER MEN -0575;AL # ARMENIAN SMALL LETTER YI -0576;AL # ARMENIAN SMALL LETTER NOW -0577;AL # ARMENIAN SMALL LETTER SHA -0578;AL # ARMENIAN SMALL LETTER VO -0579;AL # ARMENIAN SMALL LETTER CHA -057A;AL # ARMENIAN SMALL LETTER PEH -057B;AL # ARMENIAN SMALL LETTER JHEH -057C;AL # ARMENIAN SMALL LETTER RA -057D;AL # ARMENIAN SMALL LETTER SEH -057E;AL # ARMENIAN SMALL LETTER VEW -057F;AL # ARMENIAN SMALL LETTER TIWN -0580;AL # ARMENIAN SMALL LETTER REH -0581;AL # ARMENIAN SMALL LETTER CO -0582;AL # ARMENIAN SMALL LETTER YIWN -0583;AL # ARMENIAN SMALL LETTER PIWR -0584;AL # ARMENIAN SMALL LETTER KEH -0585;AL # ARMENIAN SMALL LETTER OH -0586;AL # ARMENIAN SMALL LETTER FEH -0587;AL # ARMENIAN SMALL LIGATURE ECH YIWN -0589;IS # ARMENIAN FULL STOP -058A;BA # ARMENIAN HYPHEN -0591;CM # HEBREW ACCENT ETNAHTA -0592;CM # HEBREW ACCENT SEGOL -0593;CM # HEBREW ACCENT SHALSHELET -0594;CM # HEBREW ACCENT ZAQEF QATAN -0595;CM # HEBREW ACCENT ZAQEF GADOL -0596;CM # HEBREW ACCENT TIPEHA -0597;CM # HEBREW ACCENT REVIA -0598;CM # HEBREW ACCENT ZARQA -0599;CM # HEBREW ACCENT PASHTA -059A;CM # HEBREW ACCENT YETIV -059B;CM # HEBREW ACCENT TEVIR -059C;CM # HEBREW ACCENT GERESH -059D;CM # HEBREW ACCENT GERESH MUQDAM -059E;CM # HEBREW ACCENT GERSHAYIM -059F;CM # HEBREW ACCENT QARNEY PARA -05A0;CM # HEBREW ACCENT TELISHA GEDOLA -05A1;CM # HEBREW ACCENT PAZER -05A2;CM # HEBREW ACCENT ATNAH HAFUKH -05A3;CM # HEBREW ACCENT MUNAH -05A4;CM # HEBREW ACCENT MAHAPAKH -05A5;CM # HEBREW ACCENT MERKHA -05A6;CM # HEBREW ACCENT MERKHA KEFULA -05A7;CM # HEBREW ACCENT DARGA -05A8;CM # HEBREW ACCENT QADMA -05A9;CM # HEBREW ACCENT TELISHA QETANA -05AA;CM # HEBREW ACCENT YERAH BEN YOMO -05AB;CM # HEBREW ACCENT OLE -05AC;CM # HEBREW ACCENT ILUY -05AD;CM # HEBREW ACCENT DEHI -05AE;CM # HEBREW ACCENT ZINOR -05AF;CM # HEBREW MARK MASORA CIRCLE -05B0;CM # HEBREW POINT SHEVA -05B1;CM # HEBREW POINT HATAF SEGOL -05B2;CM # HEBREW POINT HATAF PATAH -05B3;CM # HEBREW POINT HATAF QAMATS -05B4;CM # HEBREW POINT HIRIQ -05B5;CM # HEBREW POINT TSERE -05B6;CM # HEBREW POINT SEGOL -05B7;CM # HEBREW POINT PATAH -05B8;CM # HEBREW POINT QAMATS -05B9;CM # HEBREW POINT HOLAM -05BB;CM # HEBREW POINT QUBUTS -05BC;CM # HEBREW POINT DAGESH OR MAPIQ -05BD;CM # HEBREW POINT METEG -05BE;AL # HEBREW PUNCTUATION MAQAF -05BF;CM # HEBREW POINT RAFE -05C0;AL # HEBREW PUNCTUATION PASEQ -05C1;CM # HEBREW POINT SHIN DOT -05C2;CM # HEBREW POINT SIN DOT -05C3;AL # HEBREW PUNCTUATION SOF PASUQ -05C4;CM # HEBREW MARK UPPER DOT -05C5;CM # HEBREW MARK LOWER DOT -05C6;EX # HEBREW PUNCTUATION NUN HAFUKHA -05C7;CM # HEBREW POINT QAMATS QATAN -05D0;AL # HEBREW LETTER ALEF -05D1;AL # HEBREW LETTER BET -05D2;AL # HEBREW LETTER GIMEL -05D3;AL # HEBREW LETTER DALET -05D4;AL # HEBREW LETTER HE -05D5;AL # HEBREW LETTER VAV -05D6;AL # HEBREW LETTER ZAYIN -05D7;AL # HEBREW LETTER HET -05D8;AL # HEBREW LETTER TET -05D9;AL # HEBREW LETTER YOD -05DA;AL # HEBREW LETTER FINAL KAF -05DB;AL # HEBREW LETTER KAF -05DC;AL # HEBREW LETTER LAMED -05DD;AL # HEBREW LETTER FINAL MEM -05DE;AL # HEBREW LETTER MEM -05DF;AL # HEBREW LETTER FINAL NUN -05E0;AL # HEBREW LETTER NUN -05E1;AL # HEBREW LETTER SAMEKH -05E2;AL # HEBREW LETTER AYIN -05E3;AL # HEBREW LETTER FINAL PE -05E4;AL # HEBREW LETTER PE -05E5;AL # HEBREW LETTER FINAL TSADI -05E6;AL # HEBREW LETTER TSADI -05E7;AL # HEBREW LETTER QOF -05E8;AL # HEBREW LETTER RESH -05E9;AL # HEBREW LETTER SHIN -05EA;AL # HEBREW LETTER TAV -05F0;AL # HEBREW LIGATURE YIDDISH DOUBLE VAV -05F1;AL # HEBREW LIGATURE YIDDISH VAV YOD -05F2;AL # HEBREW LIGATURE YIDDISH DOUBLE YOD -05F3;AL # HEBREW PUNCTUATION GERESH -05F4;AL # HEBREW PUNCTUATION GERSHAYIM -0600;AL # ARABIC NUMBER SIGN -0601;AL # ARABIC SIGN SANAH -0602;AL # ARABIC FOOTNOTE MARKER -0603;AL # ARABIC SIGN SAFHA -060B;PO # AFGHANI SIGN -060C;EX # ARABIC COMMA -060D;IS # ARABIC DATE SEPARATOR -060E;AL # ARABIC POETIC VERSE SIGN -060F;AL # ARABIC SIGN MISRA -0610;CM # ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM -0611;CM # ARABIC SIGN ALAYHE ASSALLAM -0612;CM # ARABIC SIGN RAHMATULLAH ALAYHE -0613;CM # ARABIC SIGN RADI ALLAHOU ANHU -0614;CM # ARABIC SIGN TAKHALLUS -0615;CM # ARABIC SMALL HIGH TAH -061B;EX # ARABIC SEMICOLON -061E;EX # ARABIC TRIPLE DOT PUNCTUATION MARK -061F;EX # ARABIC QUESTION MARK -0621;AL # ARABIC LETTER HAMZA -0622;AL # ARABIC LETTER ALEF WITH MADDA ABOVE -0623;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE -0624;AL # ARABIC LETTER WAW WITH HAMZA ABOVE -0625;AL # ARABIC LETTER ALEF WITH HAMZA BELOW -0626;AL # ARABIC LETTER YEH WITH HAMZA ABOVE -0627;AL # ARABIC LETTER ALEF -0628;AL # ARABIC LETTER BEH -0629;AL # ARABIC LETTER TEH MARBUTA -062A;AL # ARABIC LETTER TEH -062B;AL # ARABIC LETTER THEH -062C;AL # ARABIC LETTER JEEM -062D;AL # ARABIC LETTER HAH -062E;AL # ARABIC LETTER KHAH -062F;AL # ARABIC LETTER DAL -0630;AL # ARABIC LETTER THAL -0631;AL # ARABIC LETTER REH -0632;AL # ARABIC LETTER ZAIN -0633;AL # ARABIC LETTER SEEN -0634;AL # ARABIC LETTER SHEEN -0635;AL # ARABIC LETTER SAD -0636;AL # ARABIC LETTER DAD -0637;AL # ARABIC LETTER TAH -0638;AL # ARABIC LETTER ZAH -0639;AL # ARABIC LETTER AIN -063A;AL # ARABIC LETTER GHAIN -0640;AL # ARABIC TATWEEL -0641;AL # ARABIC LETTER FEH -0642;AL # ARABIC LETTER QAF -0643;AL # ARABIC LETTER KAF -0644;AL # ARABIC LETTER LAM -0645;AL # ARABIC LETTER MEEM -0646;AL # ARABIC LETTER NOON -0647;AL # ARABIC LETTER HEH -0648;AL # ARABIC LETTER WAW -0649;AL # ARABIC LETTER ALEF MAKSURA -064A;AL # ARABIC LETTER YEH -064B;CM # ARABIC FATHATAN -064C;CM # ARABIC DAMMATAN -064D;CM # ARABIC KASRATAN -064E;CM # ARABIC FATHA -064F;CM # ARABIC DAMMA -0650;CM # ARABIC KASRA -0651;CM # ARABIC SHADDA -0652;CM # ARABIC SUKUN -0653;CM # ARABIC MADDAH ABOVE -0654;CM # ARABIC HAMZA ABOVE -0655;CM # ARABIC HAMZA BELOW -0656;CM # ARABIC SUBSCRIPT ALEF -0657;CM # ARABIC INVERTED DAMMA -0658;CM # ARABIC MARK NOON GHUNNA -0659;CM # ARABIC ZWARAKAY -065A;CM # ARABIC VOWEL SIGN SMALL V ABOVE -065B;CM # ARABIC VOWEL SIGN INVERTED SMALL V ABOVE -065C;CM # ARABIC VOWEL SIGN DOT BELOW -065D;CM # ARABIC REVERSED DAMMA -065E;CM # ARABIC FATHA WITH TWO DOTS -0660;NU # ARABIC-INDIC DIGIT ZERO -0661;NU # ARABIC-INDIC DIGIT ONE -0662;NU # ARABIC-INDIC DIGIT TWO -0663;NU # ARABIC-INDIC DIGIT THREE -0664;NU # ARABIC-INDIC DIGIT FOUR -0665;NU # ARABIC-INDIC DIGIT FIVE -0666;NU # ARABIC-INDIC DIGIT SIX -0667;NU # ARABIC-INDIC DIGIT SEVEN -0668;NU # ARABIC-INDIC DIGIT EIGHT -0669;NU # ARABIC-INDIC DIGIT NINE -066A;EX # ARABIC PERCENT SIGN -066B;NU # ARABIC DECIMAL SEPARATOR -066C;NU # ARABIC THOUSANDS SEPARATOR -066D;AL # ARABIC FIVE POINTED STAR -066E;AL # ARABIC LETTER DOTLESS BEH -066F;AL # ARABIC LETTER DOTLESS QAF -0670;CM # ARABIC LETTER SUPERSCRIPT ALEF -0671;AL # ARABIC LETTER ALEF WASLA -0672;AL # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE -0673;AL # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW -0674;AL # ARABIC LETTER HIGH HAMZA -0675;AL # ARABIC LETTER HIGH HAMZA ALEF -0676;AL # ARABIC LETTER HIGH HAMZA WAW -0677;AL # ARABIC LETTER U WITH HAMZA ABOVE -0678;AL # ARABIC LETTER HIGH HAMZA YEH -0679;AL # ARABIC LETTER TTEH -067A;AL # ARABIC LETTER TTEHEH -067B;AL # ARABIC LETTER BEEH -067C;AL # ARABIC LETTER TEH WITH RING -067D;AL # ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS -067E;AL # ARABIC LETTER PEH -067F;AL # ARABIC LETTER TEHEH -0680;AL # ARABIC LETTER BEHEH -0681;AL # ARABIC LETTER HAH WITH HAMZA ABOVE -0682;AL # ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE -0683;AL # ARABIC LETTER NYEH -0684;AL # ARABIC LETTER DYEH -0685;AL # ARABIC LETTER HAH WITH THREE DOTS ABOVE -0686;AL # ARABIC LETTER TCHEH -0687;AL # ARABIC LETTER TCHEHEH -0688;AL # ARABIC LETTER DDAL -0689;AL # ARABIC LETTER DAL WITH RING -068A;AL # ARABIC LETTER DAL WITH DOT BELOW -068B;AL # ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH -068C;AL # ARABIC LETTER DAHAL -068D;AL # ARABIC LETTER DDAHAL -068E;AL # ARABIC LETTER DUL -068F;AL # ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS -0690;AL # ARABIC LETTER DAL WITH FOUR DOTS ABOVE -0691;AL # ARABIC LETTER RREH -0692;AL # ARABIC LETTER REH WITH SMALL V -0693;AL # ARABIC LETTER REH WITH RING -0694;AL # ARABIC LETTER REH WITH DOT BELOW -0695;AL # ARABIC LETTER REH WITH SMALL V BELOW -0696;AL # ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE -0697;AL # ARABIC LETTER REH WITH TWO DOTS ABOVE -0698;AL # ARABIC LETTER JEH -0699;AL # ARABIC LETTER REH WITH FOUR DOTS ABOVE -069A;AL # ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE -069B;AL # ARABIC LETTER SEEN WITH THREE DOTS BELOW -069C;AL # ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE -069D;AL # ARABIC LETTER SAD WITH TWO DOTS BELOW -069E;AL # ARABIC LETTER SAD WITH THREE DOTS ABOVE -069F;AL # ARABIC LETTER TAH WITH THREE DOTS ABOVE -06A0;AL # ARABIC LETTER AIN WITH THREE DOTS ABOVE -06A1;AL # ARABIC LETTER DOTLESS FEH -06A2;AL # ARABIC LETTER FEH WITH DOT MOVED BELOW -06A3;AL # ARABIC LETTER FEH WITH DOT BELOW -06A4;AL # ARABIC LETTER VEH -06A5;AL # ARABIC LETTER FEH WITH THREE DOTS BELOW -06A6;AL # ARABIC LETTER PEHEH -06A7;AL # ARABIC LETTER QAF WITH DOT ABOVE -06A8;AL # ARABIC LETTER QAF WITH THREE DOTS ABOVE -06A9;AL # ARABIC LETTER KEHEH -06AA;AL # ARABIC LETTER SWASH KAF -06AB;AL # ARABIC LETTER KAF WITH RING -06AC;AL # ARABIC LETTER KAF WITH DOT ABOVE -06AD;AL # ARABIC LETTER NG -06AE;AL # ARABIC LETTER KAF WITH THREE DOTS BELOW -06AF;AL # ARABIC LETTER GAF -06B0;AL # ARABIC LETTER GAF WITH RING -06B1;AL # ARABIC LETTER NGOEH -06B2;AL # ARABIC LETTER GAF WITH TWO DOTS BELOW -06B3;AL # ARABIC LETTER GUEH -06B4;AL # ARABIC LETTER GAF WITH THREE DOTS ABOVE -06B5;AL # ARABIC LETTER LAM WITH SMALL V -06B6;AL # ARABIC LETTER LAM WITH DOT ABOVE -06B7;AL # ARABIC LETTER LAM WITH THREE DOTS ABOVE -06B8;AL # ARABIC LETTER LAM WITH THREE DOTS BELOW -06B9;AL # ARABIC LETTER NOON WITH DOT BELOW -06BA;AL # ARABIC LETTER NOON GHUNNA -06BB;AL # ARABIC LETTER RNOON -06BC;AL # ARABIC LETTER NOON WITH RING -06BD;AL # ARABIC LETTER NOON WITH THREE DOTS ABOVE -06BE;AL # ARABIC LETTER HEH DOACHASHMEE -06BF;AL # ARABIC LETTER TCHEH WITH DOT ABOVE -06C0;AL # ARABIC LETTER HEH WITH YEH ABOVE -06C1;AL # ARABIC LETTER HEH GOAL -06C2;AL # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE -06C3;AL # ARABIC LETTER TEH MARBUTA GOAL -06C4;AL # ARABIC LETTER WAW WITH RING -06C5;AL # ARABIC LETTER KIRGHIZ OE -06C6;AL # ARABIC LETTER OE -06C7;AL # ARABIC LETTER U -06C8;AL # ARABIC LETTER YU -06C9;AL # ARABIC LETTER KIRGHIZ YU -06CA;AL # ARABIC LETTER WAW WITH TWO DOTS ABOVE -06CB;AL # ARABIC LETTER VE -06CC;AL # ARABIC LETTER FARSI YEH -06CD;AL # ARABIC LETTER YEH WITH TAIL -06CE;AL # ARABIC LETTER YEH WITH SMALL V -06CF;AL # ARABIC LETTER WAW WITH DOT ABOVE -06D0;AL # ARABIC LETTER E -06D1;AL # ARABIC LETTER YEH WITH THREE DOTS BELOW -06D2;AL # ARABIC LETTER YEH BARREE -06D3;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -06D4;EX # ARABIC FULL STOP -06D5;AL # ARABIC LETTER AE -06D6;CM # ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA -06D7;CM # ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA -06D8;CM # ARABIC SMALL HIGH MEEM INITIAL FORM -06D9;CM # ARABIC SMALL HIGH LAM ALEF -06DA;CM # ARABIC SMALL HIGH JEEM -06DB;CM # ARABIC SMALL HIGH THREE DOTS -06DC;CM # ARABIC SMALL HIGH SEEN -06DD;AL # ARABIC END OF AYAH -06DE;CM # ARABIC START OF RUB EL HIZB -06DF;CM # ARABIC SMALL HIGH ROUNDED ZERO -06E0;CM # ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO -06E1;CM # ARABIC SMALL HIGH DOTLESS HEAD OF KHAH -06E2;CM # ARABIC SMALL HIGH MEEM ISOLATED FORM -06E3;CM # ARABIC SMALL LOW SEEN -06E4;CM # ARABIC SMALL HIGH MADDA -06E5;AL # ARABIC SMALL WAW -06E6;AL # ARABIC SMALL YEH -06E7;CM # ARABIC SMALL HIGH YEH -06E8;CM # ARABIC SMALL HIGH NOON -06E9;AL # ARABIC PLACE OF SAJDAH -06EA;CM # ARABIC EMPTY CENTRE LOW STOP -06EB;CM # ARABIC EMPTY CENTRE HIGH STOP -06EC;CM # ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE -06ED;CM # ARABIC SMALL LOW MEEM -06EE;AL # ARABIC LETTER DAL WITH INVERTED V -06EF;AL # ARABIC LETTER REH WITH INVERTED V -06F0;NU # EXTENDED ARABIC-INDIC DIGIT ZERO -06F1;NU # EXTENDED ARABIC-INDIC DIGIT ONE -06F2;NU # EXTENDED ARABIC-INDIC DIGIT TWO -06F3;NU # EXTENDED ARABIC-INDIC DIGIT THREE -06F4;NU # EXTENDED ARABIC-INDIC DIGIT FOUR -06F5;NU # EXTENDED ARABIC-INDIC DIGIT FIVE -06F6;NU # EXTENDED ARABIC-INDIC DIGIT SIX -06F7;NU # EXTENDED ARABIC-INDIC DIGIT SEVEN -06F8;NU # EXTENDED ARABIC-INDIC DIGIT EIGHT -06F9;NU # EXTENDED ARABIC-INDIC DIGIT NINE -06FA;AL # ARABIC LETTER SHEEN WITH DOT BELOW -06FB;AL # ARABIC LETTER DAD WITH DOT BELOW -06FC;AL # ARABIC LETTER GHAIN WITH DOT BELOW -06FD;AL # ARABIC SIGN SINDHI AMPERSAND -06FE;AL # ARABIC SIGN SINDHI POSTPOSITION MEN -06FF;AL # ARABIC LETTER HEH WITH INVERTED V -0700;AL # SYRIAC END OF PARAGRAPH -0701;AL # SYRIAC SUPRALINEAR FULL STOP -0702;AL # SYRIAC SUBLINEAR FULL STOP -0703;AL # SYRIAC SUPRALINEAR COLON -0704;AL # SYRIAC SUBLINEAR COLON -0705;AL # SYRIAC HORIZONTAL COLON -0706;AL # SYRIAC COLON SKEWED LEFT -0707;AL # SYRIAC COLON SKEWED RIGHT -0708;AL # SYRIAC SUPRALINEAR COLON SKEWED LEFT -0709;AL # SYRIAC SUBLINEAR COLON SKEWED RIGHT -070A;AL # SYRIAC CONTRACTION -070B;AL # SYRIAC HARKLEAN OBELUS -070C;AL # SYRIAC HARKLEAN METOBELUS -070D;AL # SYRIAC HARKLEAN ASTERISCUS -070F;AL # SYRIAC ABBREVIATION MARK -0710;AL # SYRIAC LETTER ALAPH -0711;CM # SYRIAC LETTER SUPERSCRIPT ALAPH -0712;AL # SYRIAC LETTER BETH -0713;AL # SYRIAC LETTER GAMAL -0714;AL # SYRIAC LETTER GAMAL GARSHUNI -0715;AL # SYRIAC LETTER DALATH -0716;AL # SYRIAC LETTER DOTLESS DALATH RISH -0717;AL # SYRIAC LETTER HE -0718;AL # SYRIAC LETTER WAW -0719;AL # SYRIAC LETTER ZAIN -071A;AL # SYRIAC LETTER HETH -071B;AL # SYRIAC LETTER TETH -071C;AL # SYRIAC LETTER TETH GARSHUNI -071D;AL # SYRIAC LETTER YUDH -071E;AL # SYRIAC LETTER YUDH HE -071F;AL # SYRIAC LETTER KAPH -0720;AL # SYRIAC LETTER LAMADH -0721;AL # SYRIAC LETTER MIM -0722;AL # SYRIAC LETTER NUN -0723;AL # SYRIAC LETTER SEMKATH -0724;AL # SYRIAC LETTER FINAL SEMKATH -0725;AL # SYRIAC LETTER E -0726;AL # SYRIAC LETTER PE -0727;AL # SYRIAC LETTER REVERSED PE -0728;AL # SYRIAC LETTER SADHE -0729;AL # SYRIAC LETTER QAPH -072A;AL # SYRIAC LETTER RISH -072B;AL # SYRIAC LETTER SHIN -072C;AL # SYRIAC LETTER TAW -072D;AL # SYRIAC LETTER PERSIAN BHETH -072E;AL # SYRIAC LETTER PERSIAN GHAMAL -072F;AL # SYRIAC LETTER PERSIAN DHALATH -0730;CM # SYRIAC PTHAHA ABOVE -0731;CM # SYRIAC PTHAHA BELOW -0732;CM # SYRIAC PTHAHA DOTTED -0733;CM # SYRIAC ZQAPHA ABOVE -0734;CM # SYRIAC ZQAPHA BELOW -0735;CM # SYRIAC ZQAPHA DOTTED -0736;CM # SYRIAC RBASA ABOVE -0737;CM # SYRIAC RBASA BELOW -0738;CM # SYRIAC DOTTED ZLAMA HORIZONTAL -0739;CM # SYRIAC DOTTED ZLAMA ANGULAR -073A;CM # SYRIAC HBASA ABOVE -073B;CM # SYRIAC HBASA BELOW -073C;CM # SYRIAC HBASA-ESASA DOTTED -073D;CM # SYRIAC ESASA ABOVE -073E;CM # SYRIAC ESASA BELOW -073F;CM # SYRIAC RWAHA -0740;CM # SYRIAC FEMININE DOT -0741;CM # SYRIAC QUSHSHAYA -0742;CM # SYRIAC RUKKAKHA -0743;CM # SYRIAC TWO VERTICAL DOTS ABOVE -0744;CM # SYRIAC TWO VERTICAL DOTS BELOW -0745;CM # SYRIAC THREE DOTS ABOVE -0746;CM # SYRIAC THREE DOTS BELOW -0747;CM # SYRIAC OBLIQUE LINE ABOVE -0748;CM # SYRIAC OBLIQUE LINE BELOW -0749;CM # SYRIAC MUSIC -074A;CM # SYRIAC BARREKH -074D;AL # SYRIAC LETTER SOGDIAN ZHAIN -074E;AL # SYRIAC LETTER SOGDIAN KHAPH -074F;AL # SYRIAC LETTER SOGDIAN FE -0750;AL # ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW -0751;AL # ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE -0752;AL # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW -0753;AL # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE -0754;AL # ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE -0755;AL # ARABIC LETTER BEH WITH INVERTED SMALL V BELOW -0756;AL # ARABIC LETTER BEH WITH SMALL V -0757;AL # ARABIC LETTER HAH WITH TWO DOTS ABOVE -0758;AL # ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW -0759;AL # ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH -075A;AL # ARABIC LETTER DAL WITH INVERTED SMALL V BELOW -075B;AL # ARABIC LETTER REH WITH STROKE -075C;AL # ARABIC LETTER SEEN WITH FOUR DOTS ABOVE -075D;AL # ARABIC LETTER AIN WITH TWO DOTS ABOVE -075E;AL # ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE -075F;AL # ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE -0760;AL # ARABIC LETTER FEH WITH TWO DOTS BELOW -0761;AL # ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW -0762;AL # ARABIC LETTER KEHEH WITH DOT ABOVE -0763;AL # ARABIC LETTER KEHEH WITH THREE DOTS ABOVE -0764;AL # ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW -0765;AL # ARABIC LETTER MEEM WITH DOT ABOVE -0766;AL # ARABIC LETTER MEEM WITH DOT BELOW -0767;AL # ARABIC LETTER NOON WITH TWO DOTS BELOW -0768;AL # ARABIC LETTER NOON WITH SMALL TAH -0769;AL # ARABIC LETTER NOON WITH SMALL V -076A;AL # ARABIC LETTER LAM WITH BAR -076B;AL # ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE -076C;AL # ARABIC LETTER REH WITH HAMZA ABOVE -076D;AL # ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE -0780;AL # THAANA LETTER HAA -0781;AL # THAANA LETTER SHAVIYANI -0782;AL # THAANA LETTER NOONU -0783;AL # THAANA LETTER RAA -0784;AL # THAANA LETTER BAA -0785;AL # THAANA LETTER LHAVIYANI -0786;AL # THAANA LETTER KAAFU -0787;AL # THAANA LETTER ALIFU -0788;AL # THAANA LETTER VAAVU -0789;AL # THAANA LETTER MEEMU -078A;AL # THAANA LETTER FAAFU -078B;AL # THAANA LETTER DHAALU -078C;AL # THAANA LETTER THAA -078D;AL # THAANA LETTER LAAMU -078E;AL # THAANA LETTER GAAFU -078F;AL # THAANA LETTER GNAVIYANI -0790;AL # THAANA LETTER SEENU -0791;AL # THAANA LETTER DAVIYANI -0792;AL # THAANA LETTER ZAVIYANI -0793;AL # THAANA LETTER TAVIYANI -0794;AL # THAANA LETTER YAA -0795;AL # THAANA LETTER PAVIYANI -0796;AL # THAANA LETTER JAVIYANI -0797;AL # THAANA LETTER CHAVIYANI -0798;AL # THAANA LETTER TTAA -0799;AL # THAANA LETTER HHAA -079A;AL # THAANA LETTER KHAA -079B;AL # THAANA LETTER THAALU -079C;AL # THAANA LETTER ZAA -079D;AL # THAANA LETTER SHEENU -079E;AL # THAANA LETTER SAADHU -079F;AL # THAANA LETTER DAADHU -07A0;AL # THAANA LETTER TO -07A1;AL # THAANA LETTER ZO -07A2;AL # THAANA LETTER AINU -07A3;AL # THAANA LETTER GHAINU -07A4;AL # THAANA LETTER QAAFU -07A5;AL # THAANA LETTER WAAVU -07A6;CM # THAANA ABAFILI -07A7;CM # THAANA AABAAFILI -07A8;CM # THAANA IBIFILI -07A9;CM # THAANA EEBEEFILI -07AA;CM # THAANA UBUFILI -07AB;CM # THAANA OOBOOFILI -07AC;CM # THAANA EBEFILI -07AD;CM # THAANA EYBEYFILI -07AE;CM # THAANA OBOFILI -07AF;CM # THAANA OABOAFILI -07B0;CM # THAANA SUKUN -07B1;AL # THAANA LETTER NAA -0901;CM # DEVANAGARI SIGN CANDRABINDU -0902;CM # DEVANAGARI SIGN ANUSVARA -0903;CM # DEVANAGARI SIGN VISARGA -0904;AL # DEVANAGARI LETTER SHORT A -0905;AL # DEVANAGARI LETTER A -0906;AL # DEVANAGARI LETTER AA -0907;AL # DEVANAGARI LETTER I -0908;AL # DEVANAGARI LETTER II -0909;AL # DEVANAGARI LETTER U -090A;AL # DEVANAGARI LETTER UU -090B;AL # DEVANAGARI LETTER VOCALIC R -090C;AL # DEVANAGARI LETTER VOCALIC L -090D;AL # DEVANAGARI LETTER CANDRA E -090E;AL # DEVANAGARI LETTER SHORT E -090F;AL # DEVANAGARI LETTER E -0910;AL # DEVANAGARI LETTER AI -0911;AL # DEVANAGARI LETTER CANDRA O -0912;AL # DEVANAGARI LETTER SHORT O -0913;AL # DEVANAGARI LETTER O -0914;AL # DEVANAGARI LETTER AU -0915;AL # DEVANAGARI LETTER KA -0916;AL # DEVANAGARI LETTER KHA -0917;AL # DEVANAGARI LETTER GA -0918;AL # DEVANAGARI LETTER GHA -0919;AL # DEVANAGARI LETTER NGA -091A;AL # DEVANAGARI LETTER CA -091B;AL # DEVANAGARI LETTER CHA -091C;AL # DEVANAGARI LETTER JA -091D;AL # DEVANAGARI LETTER JHA -091E;AL # DEVANAGARI LETTER NYA -091F;AL # DEVANAGARI LETTER TTA -0920;AL # DEVANAGARI LETTER TTHA -0921;AL # DEVANAGARI LETTER DDA -0922;AL # DEVANAGARI LETTER DDHA -0923;AL # DEVANAGARI LETTER NNA -0924;AL # DEVANAGARI LETTER TA -0925;AL # DEVANAGARI LETTER THA -0926;AL # DEVANAGARI LETTER DA -0927;AL # DEVANAGARI LETTER DHA -0928;AL # DEVANAGARI LETTER NA -0929;AL # DEVANAGARI LETTER NNNA -092A;AL # DEVANAGARI LETTER PA -092B;AL # DEVANAGARI LETTER PHA -092C;AL # DEVANAGARI LETTER BA -092D;AL # DEVANAGARI LETTER BHA -092E;AL # DEVANAGARI LETTER MA -092F;AL # DEVANAGARI LETTER YA -0930;AL # DEVANAGARI LETTER RA -0931;AL # DEVANAGARI LETTER RRA -0932;AL # DEVANAGARI LETTER LA -0933;AL # DEVANAGARI LETTER LLA -0934;AL # DEVANAGARI LETTER LLLA -0935;AL # DEVANAGARI LETTER VA -0936;AL # DEVANAGARI LETTER SHA -0937;AL # DEVANAGARI LETTER SSA -0938;AL # DEVANAGARI LETTER SA -0939;AL # DEVANAGARI LETTER HA -093C;CM # DEVANAGARI SIGN NUKTA -093D;AL # DEVANAGARI SIGN AVAGRAHA -093E;CM # DEVANAGARI VOWEL SIGN AA -093F;CM # DEVANAGARI VOWEL SIGN I -0940;CM # DEVANAGARI VOWEL SIGN II -0941;CM # DEVANAGARI VOWEL SIGN U -0942;CM # DEVANAGARI VOWEL SIGN UU -0943;CM # DEVANAGARI VOWEL SIGN VOCALIC R -0944;CM # DEVANAGARI VOWEL SIGN VOCALIC RR -0945;CM # DEVANAGARI VOWEL SIGN CANDRA E -0946;CM # DEVANAGARI VOWEL SIGN SHORT E -0947;CM # DEVANAGARI VOWEL SIGN E -0948;CM # DEVANAGARI VOWEL SIGN AI -0949;CM # DEVANAGARI VOWEL SIGN CANDRA O -094A;CM # DEVANAGARI VOWEL SIGN SHORT O -094B;CM # DEVANAGARI VOWEL SIGN O -094C;CM # DEVANAGARI VOWEL SIGN AU -094D;CM # DEVANAGARI SIGN VIRAMA -0950;AL # DEVANAGARI OM -0951;CM # DEVANAGARI STRESS SIGN UDATTA -0952;CM # DEVANAGARI STRESS SIGN ANUDATTA -0953;CM # DEVANAGARI GRAVE ACCENT -0954;CM # DEVANAGARI ACUTE ACCENT -0958;AL # DEVANAGARI LETTER QA -0959;AL # DEVANAGARI LETTER KHHA -095A;AL # DEVANAGARI LETTER GHHA -095B;AL # DEVANAGARI LETTER ZA -095C;AL # DEVANAGARI LETTER DDDHA -095D;AL # DEVANAGARI LETTER RHA -095E;AL # DEVANAGARI LETTER FA -095F;AL # DEVANAGARI LETTER YYA -0960;AL # DEVANAGARI LETTER VOCALIC RR -0961;AL # DEVANAGARI LETTER VOCALIC LL -0962;CM # DEVANAGARI VOWEL SIGN VOCALIC L -0963;CM # DEVANAGARI VOWEL SIGN VOCALIC LL -0964;BA # DEVANAGARI DANDA -0965;BA # DEVANAGARI DOUBLE DANDA -0966;NU # DEVANAGARI DIGIT ZERO -0967;NU # DEVANAGARI DIGIT ONE -0968;NU # DEVANAGARI DIGIT TWO -0969;NU # DEVANAGARI DIGIT THREE -096A;NU # DEVANAGARI DIGIT FOUR -096B;NU # DEVANAGARI DIGIT FIVE -096C;NU # DEVANAGARI DIGIT SIX -096D;NU # DEVANAGARI DIGIT SEVEN -096E;NU # DEVANAGARI DIGIT EIGHT -096F;NU # DEVANAGARI DIGIT NINE -0970;AL # DEVANAGARI ABBREVIATION SIGN -097D;AL # DEVANAGARI LETTER GLOTTAL STOP -0981;CM # BENGALI SIGN CANDRABINDU -0982;CM # BENGALI SIGN ANUSVARA -0983;CM # BENGALI SIGN VISARGA -0985;AL # BENGALI LETTER A -0986;AL # BENGALI LETTER AA -0987;AL # BENGALI LETTER I -0988;AL # BENGALI LETTER II -0989;AL # BENGALI LETTER U -098A;AL # BENGALI LETTER UU -098B;AL # BENGALI LETTER VOCALIC R -098C;AL # BENGALI LETTER VOCALIC L -098F;AL # BENGALI LETTER E -0990;AL # BENGALI LETTER AI -0993;AL # BENGALI LETTER O -0994;AL # BENGALI LETTER AU -0995;AL # BENGALI LETTER KA -0996;AL # BENGALI LETTER KHA -0997;AL # BENGALI LETTER GA -0998;AL # BENGALI LETTER GHA -0999;AL # BENGALI LETTER NGA -099A;AL # BENGALI LETTER CA -099B;AL # BENGALI LETTER CHA -099C;AL # BENGALI LETTER JA -099D;AL # BENGALI LETTER JHA -099E;AL # BENGALI LETTER NYA -099F;AL # BENGALI LETTER TTA -09A0;AL # BENGALI LETTER TTHA -09A1;AL # BENGALI LETTER DDA -09A2;AL # BENGALI LETTER DDHA -09A3;AL # BENGALI LETTER NNA -09A4;AL # BENGALI LETTER TA -09A5;AL # BENGALI LETTER THA -09A6;AL # BENGALI LETTER DA -09A7;AL # BENGALI LETTER DHA -09A8;AL # BENGALI LETTER NA -09AA;AL # BENGALI LETTER PA -09AB;AL # BENGALI LETTER PHA -09AC;AL # BENGALI LETTER BA -09AD;AL # BENGALI LETTER BHA -09AE;AL # BENGALI LETTER MA -09AF;AL # BENGALI LETTER YA -09B0;AL # BENGALI LETTER RA -09B2;AL # BENGALI LETTER LA -09B6;AL # BENGALI LETTER SHA -09B7;AL # BENGALI LETTER SSA -09B8;AL # BENGALI LETTER SA -09B9;AL # BENGALI LETTER HA -09BC;CM # BENGALI SIGN NUKTA -09BD;AL # BENGALI SIGN AVAGRAHA -09BE;CM # BENGALI VOWEL SIGN AA -09BF;CM # BENGALI VOWEL SIGN I -09C0;CM # BENGALI VOWEL SIGN II -09C1;CM # BENGALI VOWEL SIGN U -09C2;CM # BENGALI VOWEL SIGN UU -09C3;CM # BENGALI VOWEL SIGN VOCALIC R -09C4;CM # BENGALI VOWEL SIGN VOCALIC RR -09C7;CM # BENGALI VOWEL SIGN E -09C8;CM # BENGALI VOWEL SIGN AI -09CB;CM # BENGALI VOWEL SIGN O -09CC;CM # BENGALI VOWEL SIGN AU -09CD;CM # BENGALI SIGN VIRAMA -09CE;AL # BENGALI LETTER KHANDA TA -09D7;CM # BENGALI AU LENGTH MARK -09DC;AL # BENGALI LETTER RRA -09DD;AL # BENGALI LETTER RHA -09DF;AL # BENGALI LETTER YYA -09E0;AL # BENGALI LETTER VOCALIC RR -09E1;AL # BENGALI LETTER VOCALIC LL -09E2;CM # BENGALI VOWEL SIGN VOCALIC L -09E3;CM # BENGALI VOWEL SIGN VOCALIC LL -09E6;NU # BENGALI DIGIT ZERO -09E7;NU # BENGALI DIGIT ONE -09E8;NU # BENGALI DIGIT TWO -09E9;NU # BENGALI DIGIT THREE -09EA;NU # BENGALI DIGIT FOUR -09EB;NU # BENGALI DIGIT FIVE -09EC;NU # BENGALI DIGIT SIX -09ED;NU # BENGALI DIGIT SEVEN -09EE;NU # BENGALI DIGIT EIGHT -09EF;NU # BENGALI DIGIT NINE -09F0;AL # BENGALI LETTER RA WITH MIDDLE DIAGONAL -09F1;AL # BENGALI LETTER RA WITH LOWER DIAGONAL -09F2;PR # BENGALI RUPEE MARK -09F3;PR # BENGALI RUPEE SIGN -09F4;AL # BENGALI CURRENCY NUMERATOR ONE -09F5;AL # BENGALI CURRENCY NUMERATOR TWO -09F6;AL # BENGALI CURRENCY NUMERATOR THREE -09F7;AL # BENGALI CURRENCY NUMERATOR FOUR -09F8;AL # BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR -09F9;AL # BENGALI CURRENCY DENOMINATOR SIXTEEN -09FA;AL # BENGALI ISSHAR -0A01;CM # GURMUKHI SIGN ADAK BINDI -0A02;CM # GURMUKHI SIGN BINDI -0A03;CM # GURMUKHI SIGN VISARGA -0A05;AL # GURMUKHI LETTER A -0A06;AL # GURMUKHI LETTER AA -0A07;AL # GURMUKHI LETTER I -0A08;AL # GURMUKHI LETTER II -0A09;AL # GURMUKHI LETTER U -0A0A;AL # GURMUKHI LETTER UU -0A0F;AL # GURMUKHI LETTER EE -0A10;AL # GURMUKHI LETTER AI -0A13;AL # GURMUKHI LETTER OO -0A14;AL # GURMUKHI LETTER AU -0A15;AL # GURMUKHI LETTER KA -0A16;AL # GURMUKHI LETTER KHA -0A17;AL # GURMUKHI LETTER GA -0A18;AL # GURMUKHI LETTER GHA -0A19;AL # GURMUKHI LETTER NGA -0A1A;AL # GURMUKHI LETTER CA -0A1B;AL # GURMUKHI LETTER CHA -0A1C;AL # GURMUKHI LETTER JA -0A1D;AL # GURMUKHI LETTER JHA -0A1E;AL # GURMUKHI LETTER NYA -0A1F;AL # GURMUKHI LETTER TTA -0A20;AL # GURMUKHI LETTER TTHA -0A21;AL # GURMUKHI LETTER DDA -0A22;AL # GURMUKHI LETTER DDHA -0A23;AL # GURMUKHI LETTER NNA -0A24;AL # GURMUKHI LETTER TA -0A25;AL # GURMUKHI LETTER THA -0A26;AL # GURMUKHI LETTER DA -0A27;AL # GURMUKHI LETTER DHA -0A28;AL # GURMUKHI LETTER NA -0A2A;AL # GURMUKHI LETTER PA -0A2B;AL # GURMUKHI LETTER PHA -0A2C;AL # GURMUKHI LETTER BA -0A2D;AL # GURMUKHI LETTER BHA -0A2E;AL # GURMUKHI LETTER MA -0A2F;AL # GURMUKHI LETTER YA -0A30;AL # GURMUKHI LETTER RA -0A32;AL # GURMUKHI LETTER LA -0A33;AL # GURMUKHI LETTER LLA -0A35;AL # GURMUKHI LETTER VA -0A36;AL # GURMUKHI LETTER SHA -0A38;AL # GURMUKHI LETTER SA -0A39;AL # GURMUKHI LETTER HA -0A3C;CM # GURMUKHI SIGN NUKTA -0A3E;CM # GURMUKHI VOWEL SIGN AA -0A3F;CM # GURMUKHI VOWEL SIGN I -0A40;CM # GURMUKHI VOWEL SIGN II -0A41;CM # GURMUKHI VOWEL SIGN U -0A42;CM # GURMUKHI VOWEL SIGN UU -0A47;CM # GURMUKHI VOWEL SIGN EE -0A48;CM # GURMUKHI VOWEL SIGN AI -0A4B;CM # GURMUKHI VOWEL SIGN OO -0A4C;CM # GURMUKHI VOWEL SIGN AU -0A4D;CM # GURMUKHI SIGN VIRAMA -0A59;AL # GURMUKHI LETTER KHHA -0A5A;AL # GURMUKHI LETTER GHHA -0A5B;AL # GURMUKHI LETTER ZA -0A5C;AL # GURMUKHI LETTER RRA -0A5E;AL # GURMUKHI LETTER FA -0A66;NU # GURMUKHI DIGIT ZERO -0A67;NU # GURMUKHI DIGIT ONE -0A68;NU # GURMUKHI DIGIT TWO -0A69;NU # GURMUKHI DIGIT THREE -0A6A;NU # GURMUKHI DIGIT FOUR -0A6B;NU # GURMUKHI DIGIT FIVE -0A6C;NU # GURMUKHI DIGIT SIX -0A6D;NU # GURMUKHI DIGIT SEVEN -0A6E;NU # GURMUKHI DIGIT EIGHT -0A6F;NU # GURMUKHI DIGIT NINE -0A70;CM # GURMUKHI TIPPI -0A71;CM # GURMUKHI ADDAK -0A72;AL # GURMUKHI IRI -0A73;AL # GURMUKHI URA -0A74;AL # GURMUKHI EK ONKAR -0A81;CM # GUJARATI SIGN CANDRABINDU -0A82;CM # GUJARATI SIGN ANUSVARA -0A83;CM # GUJARATI SIGN VISARGA -0A85;AL # GUJARATI LETTER A -0A86;AL # GUJARATI LETTER AA -0A87;AL # GUJARATI LETTER I -0A88;AL # GUJARATI LETTER II -0A89;AL # GUJARATI LETTER U -0A8A;AL # GUJARATI LETTER UU -0A8B;AL # GUJARATI LETTER VOCALIC R -0A8C;AL # GUJARATI LETTER VOCALIC L -0A8D;AL # GUJARATI VOWEL CANDRA E -0A8F;AL # GUJARATI LETTER E -0A90;AL # GUJARATI LETTER AI -0A91;AL # GUJARATI VOWEL CANDRA O -0A93;AL # GUJARATI LETTER O -0A94;AL # GUJARATI LETTER AU -0A95;AL # GUJARATI LETTER KA -0A96;AL # GUJARATI LETTER KHA -0A97;AL # GUJARATI LETTER GA -0A98;AL # GUJARATI LETTER GHA -0A99;AL # GUJARATI LETTER NGA -0A9A;AL # GUJARATI LETTER CA -0A9B;AL # GUJARATI LETTER CHA -0A9C;AL # GUJARATI LETTER JA -0A9D;AL # GUJARATI LETTER JHA -0A9E;AL # GUJARATI LETTER NYA -0A9F;AL # GUJARATI LETTER TTA -0AA0;AL # GUJARATI LETTER TTHA -0AA1;AL # GUJARATI LETTER DDA -0AA2;AL # GUJARATI LETTER DDHA -0AA3;AL # GUJARATI LETTER NNA -0AA4;AL # GUJARATI LETTER TA -0AA5;AL # GUJARATI LETTER THA -0AA6;AL # GUJARATI LETTER DA -0AA7;AL # GUJARATI LETTER DHA -0AA8;AL # GUJARATI LETTER NA -0AAA;AL # GUJARATI LETTER PA -0AAB;AL # GUJARATI LETTER PHA -0AAC;AL # GUJARATI LETTER BA -0AAD;AL # GUJARATI LETTER BHA -0AAE;AL # GUJARATI LETTER MA -0AAF;AL # GUJARATI LETTER YA -0AB0;AL # GUJARATI LETTER RA -0AB2;AL # GUJARATI LETTER LA -0AB3;AL # GUJARATI LETTER LLA -0AB5;AL # GUJARATI LETTER VA -0AB6;AL # GUJARATI LETTER SHA -0AB7;AL # GUJARATI LETTER SSA -0AB8;AL # GUJARATI LETTER SA -0AB9;AL # GUJARATI LETTER HA -0ABC;CM # GUJARATI SIGN NUKTA -0ABD;AL # GUJARATI SIGN AVAGRAHA -0ABE;CM # GUJARATI VOWEL SIGN AA -0ABF;CM # GUJARATI VOWEL SIGN I -0AC0;CM # GUJARATI VOWEL SIGN II -0AC1;CM # GUJARATI VOWEL SIGN U -0AC2;CM # GUJARATI VOWEL SIGN UU -0AC3;CM # GUJARATI VOWEL SIGN VOCALIC R -0AC4;CM # GUJARATI VOWEL SIGN VOCALIC RR -0AC5;CM # GUJARATI VOWEL SIGN CANDRA E -0AC7;CM # GUJARATI VOWEL SIGN E -0AC8;CM # GUJARATI VOWEL SIGN AI -0AC9;CM # GUJARATI VOWEL SIGN CANDRA O -0ACB;CM # GUJARATI VOWEL SIGN O -0ACC;CM # GUJARATI VOWEL SIGN AU -0ACD;CM # GUJARATI SIGN VIRAMA -0AD0;AL # GUJARATI OM -0AE0;AL # GUJARATI LETTER VOCALIC RR -0AE1;AL # GUJARATI LETTER VOCALIC LL -0AE2;CM # GUJARATI VOWEL SIGN VOCALIC L -0AE3;CM # GUJARATI VOWEL SIGN VOCALIC LL -0AE6;NU # GUJARATI DIGIT ZERO -0AE7;NU # GUJARATI DIGIT ONE -0AE8;NU # GUJARATI DIGIT TWO -0AE9;NU # GUJARATI DIGIT THREE -0AEA;NU # GUJARATI DIGIT FOUR -0AEB;NU # GUJARATI DIGIT FIVE -0AEC;NU # GUJARATI DIGIT SIX -0AED;NU # GUJARATI DIGIT SEVEN -0AEE;NU # GUJARATI DIGIT EIGHT -0AEF;NU # GUJARATI DIGIT NINE -0AF1;PR # GUJARATI RUPEE SIGN -0B01;CM # ORIYA SIGN CANDRABINDU -0B02;CM # ORIYA SIGN ANUSVARA -0B03;CM # ORIYA SIGN VISARGA -0B05;AL # ORIYA LETTER A -0B06;AL # ORIYA LETTER AA -0B07;AL # ORIYA LETTER I -0B08;AL # ORIYA LETTER II -0B09;AL # ORIYA LETTER U -0B0A;AL # ORIYA LETTER UU -0B0B;AL # ORIYA LETTER VOCALIC R -0B0C;AL # ORIYA LETTER VOCALIC L -0B0F;AL # ORIYA LETTER E -0B10;AL # ORIYA LETTER AI -0B13;AL # ORIYA LETTER O -0B14;AL # ORIYA LETTER AU -0B15;AL # ORIYA LETTER KA -0B16;AL # ORIYA LETTER KHA -0B17;AL # ORIYA LETTER GA -0B18;AL # ORIYA LETTER GHA -0B19;AL # ORIYA LETTER NGA -0B1A;AL # ORIYA LETTER CA -0B1B;AL # ORIYA LETTER CHA -0B1C;AL # ORIYA LETTER JA -0B1D;AL # ORIYA LETTER JHA -0B1E;AL # ORIYA LETTER NYA -0B1F;AL # ORIYA LETTER TTA -0B20;AL # ORIYA LETTER TTHA -0B21;AL # ORIYA LETTER DDA -0B22;AL # ORIYA LETTER DDHA -0B23;AL # ORIYA LETTER NNA -0B24;AL # ORIYA LETTER TA -0B25;AL # ORIYA LETTER THA -0B26;AL # ORIYA LETTER DA -0B27;AL # ORIYA LETTER DHA -0B28;AL # ORIYA LETTER NA -0B2A;AL # ORIYA LETTER PA -0B2B;AL # ORIYA LETTER PHA -0B2C;AL # ORIYA LETTER BA -0B2D;AL # ORIYA LETTER BHA -0B2E;AL # ORIYA LETTER MA -0B2F;AL # ORIYA LETTER YA -0B30;AL # ORIYA LETTER RA -0B32;AL # ORIYA LETTER LA -0B33;AL # ORIYA LETTER LLA -0B35;AL # ORIYA LETTER VA -0B36;AL # ORIYA LETTER SHA -0B37;AL # ORIYA LETTER SSA -0B38;AL # ORIYA LETTER SA -0B39;AL # ORIYA LETTER HA -0B3C;CM # ORIYA SIGN NUKTA -0B3D;AL # ORIYA SIGN AVAGRAHA -0B3E;CM # ORIYA VOWEL SIGN AA -0B3F;CM # ORIYA VOWEL SIGN I -0B40;CM # ORIYA VOWEL SIGN II -0B41;CM # ORIYA VOWEL SIGN U -0B42;CM # ORIYA VOWEL SIGN UU -0B43;CM # ORIYA VOWEL SIGN VOCALIC R -0B47;CM # ORIYA VOWEL SIGN E -0B48;CM # ORIYA VOWEL SIGN AI -0B4B;CM # ORIYA VOWEL SIGN O -0B4C;CM # ORIYA VOWEL SIGN AU -0B4D;CM # ORIYA SIGN VIRAMA -0B56;CM # ORIYA AI LENGTH MARK -0B57;CM # ORIYA AU LENGTH MARK -0B5C;AL # ORIYA LETTER RRA -0B5D;AL # ORIYA LETTER RHA -0B5F;AL # ORIYA LETTER YYA -0B60;AL # ORIYA LETTER VOCALIC RR -0B61;AL # ORIYA LETTER VOCALIC LL -0B66;NU # ORIYA DIGIT ZERO -0B67;NU # ORIYA DIGIT ONE -0B68;NU # ORIYA DIGIT TWO -0B69;NU # ORIYA DIGIT THREE -0B6A;NU # ORIYA DIGIT FOUR -0B6B;NU # ORIYA DIGIT FIVE -0B6C;NU # ORIYA DIGIT SIX -0B6D;NU # ORIYA DIGIT SEVEN -0B6E;NU # ORIYA DIGIT EIGHT -0B6F;NU # ORIYA DIGIT NINE -0B70;AL # ORIYA ISSHAR -0B71;AL # ORIYA LETTER WA -0B82;CM # TAMIL SIGN ANUSVARA -0B83;AL # TAMIL SIGN VISARGA -0B85;AL # TAMIL LETTER A -0B86;AL # TAMIL LETTER AA -0B87;AL # TAMIL LETTER I -0B88;AL # TAMIL LETTER II -0B89;AL # TAMIL LETTER U -0B8A;AL # TAMIL LETTER UU -0B8E;AL # TAMIL LETTER E -0B8F;AL # TAMIL LETTER EE -0B90;AL # TAMIL LETTER AI -0B92;AL # TAMIL LETTER O -0B93;AL # TAMIL LETTER OO -0B94;AL # TAMIL LETTER AU -0B95;AL # TAMIL LETTER KA -0B99;AL # TAMIL LETTER NGA -0B9A;AL # TAMIL LETTER CA -0B9C;AL # TAMIL LETTER JA -0B9E;AL # TAMIL LETTER NYA -0B9F;AL # TAMIL LETTER TTA -0BA3;AL # TAMIL LETTER NNA -0BA4;AL # TAMIL LETTER TA -0BA8;AL # TAMIL LETTER NA -0BA9;AL # TAMIL LETTER NNNA -0BAA;AL # TAMIL LETTER PA -0BAE;AL # TAMIL LETTER MA -0BAF;AL # TAMIL LETTER YA -0BB0;AL # TAMIL LETTER RA -0BB1;AL # TAMIL LETTER RRA -0BB2;AL # TAMIL LETTER LA -0BB3;AL # TAMIL LETTER LLA -0BB4;AL # TAMIL LETTER LLLA -0BB5;AL # TAMIL LETTER VA -0BB6;AL # TAMIL LETTER SHA -0BB7;AL # TAMIL LETTER SSA -0BB8;AL # TAMIL LETTER SA -0BB9;AL # TAMIL LETTER HA -0BBE;CM # TAMIL VOWEL SIGN AA -0BBF;CM # TAMIL VOWEL SIGN I -0BC0;CM # TAMIL VOWEL SIGN II -0BC1;CM # TAMIL VOWEL SIGN U -0BC2;CM # TAMIL VOWEL SIGN UU -0BC6;CM # TAMIL VOWEL SIGN E -0BC7;CM # TAMIL VOWEL SIGN EE -0BC8;CM # TAMIL VOWEL SIGN AI -0BCA;CM # TAMIL VOWEL SIGN O -0BCB;CM # TAMIL VOWEL SIGN OO -0BCC;CM # TAMIL VOWEL SIGN AU -0BCD;CM # TAMIL SIGN VIRAMA -0BD7;CM # TAMIL AU LENGTH MARK -0BE6;NU # TAMIL DIGIT ZERO -0BE7;NU # TAMIL DIGIT ONE -0BE8;NU # TAMIL DIGIT TWO -0BE9;NU # TAMIL DIGIT THREE -0BEA;NU # TAMIL DIGIT FOUR -0BEB;NU # TAMIL DIGIT FIVE -0BEC;NU # TAMIL DIGIT SIX -0BED;NU # TAMIL DIGIT SEVEN -0BEE;NU # TAMIL DIGIT EIGHT -0BEF;NU # TAMIL DIGIT NINE -0BF0;AL # TAMIL NUMBER TEN -0BF1;AL # TAMIL NUMBER ONE HUNDRED -0BF2;AL # TAMIL NUMBER ONE THOUSAND -0BF3;AL # TAMIL DAY SIGN -0BF4;AL # TAMIL MONTH SIGN -0BF5;AL # TAMIL YEAR SIGN -0BF6;AL # TAMIL DEBIT SIGN -0BF7;AL # TAMIL CREDIT SIGN -0BF8;AL # TAMIL AS ABOVE SIGN -0BF9;PR # TAMIL RUPEE SIGN -0BFA;AL # TAMIL NUMBER SIGN -0C01;CM # TELUGU SIGN CANDRABINDU -0C02;CM # TELUGU SIGN ANUSVARA -0C03;CM # TELUGU SIGN VISARGA -0C05;AL # TELUGU LETTER A -0C06;AL # TELUGU LETTER AA -0C07;AL # TELUGU LETTER I -0C08;AL # TELUGU LETTER II -0C09;AL # TELUGU LETTER U -0C0A;AL # TELUGU LETTER UU -0C0B;AL # TELUGU LETTER VOCALIC R -0C0C;AL # TELUGU LETTER VOCALIC L -0C0E;AL # TELUGU LETTER E -0C0F;AL # TELUGU LETTER EE -0C10;AL # TELUGU LETTER AI -0C12;AL # TELUGU LETTER O -0C13;AL # TELUGU LETTER OO -0C14;AL # TELUGU LETTER AU -0C15;AL # TELUGU LETTER KA -0C16;AL # TELUGU LETTER KHA -0C17;AL # TELUGU LETTER GA -0C18;AL # TELUGU LETTER GHA -0C19;AL # TELUGU LETTER NGA -0C1A;AL # TELUGU LETTER CA -0C1B;AL # TELUGU LETTER CHA -0C1C;AL # TELUGU LETTER JA -0C1D;AL # TELUGU LETTER JHA -0C1E;AL # TELUGU LETTER NYA -0C1F;AL # TELUGU LETTER TTA -0C20;AL # TELUGU LETTER TTHA -0C21;AL # TELUGU LETTER DDA -0C22;AL # TELUGU LETTER DDHA -0C23;AL # TELUGU LETTER NNA -0C24;AL # TELUGU LETTER TA -0C25;AL # TELUGU LETTER THA -0C26;AL # TELUGU LETTER DA -0C27;AL # TELUGU LETTER DHA -0C28;AL # TELUGU LETTER NA -0C2A;AL # TELUGU LETTER PA -0C2B;AL # TELUGU LETTER PHA -0C2C;AL # TELUGU LETTER BA -0C2D;AL # TELUGU LETTER BHA -0C2E;AL # TELUGU LETTER MA -0C2F;AL # TELUGU LETTER YA -0C30;AL # TELUGU LETTER RA -0C31;AL # TELUGU LETTER RRA -0C32;AL # TELUGU LETTER LA -0C33;AL # TELUGU LETTER LLA -0C35;AL # TELUGU LETTER VA -0C36;AL # TELUGU LETTER SHA -0C37;AL # TELUGU LETTER SSA -0C38;AL # TELUGU LETTER SA -0C39;AL # TELUGU LETTER HA -0C3E;CM # TELUGU VOWEL SIGN AA -0C3F;CM # TELUGU VOWEL SIGN I -0C40;CM # TELUGU VOWEL SIGN II -0C41;CM # TELUGU VOWEL SIGN U -0C42;CM # TELUGU VOWEL SIGN UU -0C43;CM # TELUGU VOWEL SIGN VOCALIC R -0C44;CM # TELUGU VOWEL SIGN VOCALIC RR -0C46;CM # TELUGU VOWEL SIGN E -0C47;CM # TELUGU VOWEL SIGN EE -0C48;CM # TELUGU VOWEL SIGN AI -0C4A;CM # TELUGU VOWEL SIGN O -0C4B;CM # TELUGU VOWEL SIGN OO -0C4C;CM # TELUGU VOWEL SIGN AU -0C4D;CM # TELUGU SIGN VIRAMA -0C55;CM # TELUGU LENGTH MARK -0C56;CM # TELUGU AI LENGTH MARK -0C60;AL # TELUGU LETTER VOCALIC RR -0C61;AL # TELUGU LETTER VOCALIC LL -0C66;NU # TELUGU DIGIT ZERO -0C67;NU # TELUGU DIGIT ONE -0C68;NU # TELUGU DIGIT TWO -0C69;NU # TELUGU DIGIT THREE -0C6A;NU # TELUGU DIGIT FOUR -0C6B;NU # TELUGU DIGIT FIVE -0C6C;NU # TELUGU DIGIT SIX -0C6D;NU # TELUGU DIGIT SEVEN -0C6E;NU # TELUGU DIGIT EIGHT -0C6F;NU # TELUGU DIGIT NINE -0C82;CM # KANNADA SIGN ANUSVARA -0C83;CM # KANNADA SIGN VISARGA -0C85;AL # KANNADA LETTER A -0C86;AL # KANNADA LETTER AA -0C87;AL # KANNADA LETTER I -0C88;AL # KANNADA LETTER II -0C89;AL # KANNADA LETTER U -0C8A;AL # KANNADA LETTER UU -0C8B;AL # KANNADA LETTER VOCALIC R -0C8C;AL # KANNADA LETTER VOCALIC L -0C8E;AL # KANNADA LETTER E -0C8F;AL # KANNADA LETTER EE -0C90;AL # KANNADA LETTER AI -0C92;AL # KANNADA LETTER O -0C93;AL # KANNADA LETTER OO -0C94;AL # KANNADA LETTER AU -0C95;AL # KANNADA LETTER KA -0C96;AL # KANNADA LETTER KHA -0C97;AL # KANNADA LETTER GA -0C98;AL # KANNADA LETTER GHA -0C99;AL # KANNADA LETTER NGA -0C9A;AL # KANNADA LETTER CA -0C9B;AL # KANNADA LETTER CHA -0C9C;AL # KANNADA LETTER JA -0C9D;AL # KANNADA LETTER JHA -0C9E;AL # KANNADA LETTER NYA -0C9F;AL # KANNADA LETTER TTA -0CA0;AL # KANNADA LETTER TTHA -0CA1;AL # KANNADA LETTER DDA -0CA2;AL # KANNADA LETTER DDHA -0CA3;AL # KANNADA LETTER NNA -0CA4;AL # KANNADA LETTER TA -0CA5;AL # KANNADA LETTER THA -0CA6;AL # KANNADA LETTER DA -0CA7;AL # KANNADA LETTER DHA -0CA8;AL # KANNADA LETTER NA -0CAA;AL # KANNADA LETTER PA -0CAB;AL # KANNADA LETTER PHA -0CAC;AL # KANNADA LETTER BA -0CAD;AL # KANNADA LETTER BHA -0CAE;AL # KANNADA LETTER MA -0CAF;AL # KANNADA LETTER YA -0CB0;AL # KANNADA LETTER RA -0CB1;AL # KANNADA LETTER RRA -0CB2;AL # KANNADA LETTER LA -0CB3;AL # KANNADA LETTER LLA -0CB5;AL # KANNADA LETTER VA -0CB6;AL # KANNADA LETTER SHA -0CB7;AL # KANNADA LETTER SSA -0CB8;AL # KANNADA LETTER SA -0CB9;AL # KANNADA LETTER HA -0CBC;CM # KANNADA SIGN NUKTA -0CBD;AL # KANNADA SIGN AVAGRAHA -0CBE;CM # KANNADA VOWEL SIGN AA -0CBF;CM # KANNADA VOWEL SIGN I -0CC0;CM # KANNADA VOWEL SIGN II -0CC1;CM # KANNADA VOWEL SIGN U -0CC2;CM # KANNADA VOWEL SIGN UU -0CC3;CM # KANNADA VOWEL SIGN VOCALIC R -0CC4;CM # KANNADA VOWEL SIGN VOCALIC RR -0CC6;CM # KANNADA VOWEL SIGN E -0CC7;CM # KANNADA VOWEL SIGN EE -0CC8;CM # KANNADA VOWEL SIGN AI -0CCA;CM # KANNADA VOWEL SIGN O -0CCB;CM # KANNADA VOWEL SIGN OO -0CCC;CM # KANNADA VOWEL SIGN AU -0CCD;CM # KANNADA SIGN VIRAMA -0CD5;CM # KANNADA LENGTH MARK -0CD6;CM # KANNADA AI LENGTH MARK -0CDE;AL # KANNADA LETTER FA -0CE0;AL # KANNADA LETTER VOCALIC RR -0CE1;AL # KANNADA LETTER VOCALIC LL -0CE6;NU # KANNADA DIGIT ZERO -0CE7;NU # KANNADA DIGIT ONE -0CE8;NU # KANNADA DIGIT TWO -0CE9;NU # KANNADA DIGIT THREE -0CEA;NU # KANNADA DIGIT FOUR -0CEB;NU # KANNADA DIGIT FIVE -0CEC;NU # KANNADA DIGIT SIX -0CED;NU # KANNADA DIGIT SEVEN -0CEE;NU # KANNADA DIGIT EIGHT -0CEF;NU # KANNADA DIGIT NINE -0D02;CM # MALAYALAM SIGN ANUSVARA -0D03;CM # MALAYALAM SIGN VISARGA -0D05;AL # MALAYALAM LETTER A -0D06;AL # MALAYALAM LETTER AA -0D07;AL # MALAYALAM LETTER I -0D08;AL # MALAYALAM LETTER II -0D09;AL # MALAYALAM LETTER U -0D0A;AL # MALAYALAM LETTER UU -0D0B;AL # MALAYALAM LETTER VOCALIC R -0D0C;AL # MALAYALAM LETTER VOCALIC L -0D0E;AL # MALAYALAM LETTER E -0D0F;AL # MALAYALAM LETTER EE -0D10;AL # MALAYALAM LETTER AI -0D12;AL # MALAYALAM LETTER O -0D13;AL # MALAYALAM LETTER OO -0D14;AL # MALAYALAM LETTER AU -0D15;AL # MALAYALAM LETTER KA -0D16;AL # MALAYALAM LETTER KHA -0D17;AL # MALAYALAM LETTER GA -0D18;AL # MALAYALAM LETTER GHA -0D19;AL # MALAYALAM LETTER NGA -0D1A;AL # MALAYALAM LETTER CA -0D1B;AL # MALAYALAM LETTER CHA -0D1C;AL # MALAYALAM LETTER JA -0D1D;AL # MALAYALAM LETTER JHA -0D1E;AL # MALAYALAM LETTER NYA -0D1F;AL # MALAYALAM LETTER TTA -0D20;AL # MALAYALAM LETTER TTHA -0D21;AL # MALAYALAM LETTER DDA -0D22;AL # MALAYALAM LETTER DDHA -0D23;AL # MALAYALAM LETTER NNA -0D24;AL # MALAYALAM LETTER TA -0D25;AL # MALAYALAM LETTER THA -0D26;AL # MALAYALAM LETTER DA -0D27;AL # MALAYALAM LETTER DHA -0D28;AL # MALAYALAM LETTER NA -0D2A;AL # MALAYALAM LETTER PA -0D2B;AL # MALAYALAM LETTER PHA -0D2C;AL # MALAYALAM LETTER BA -0D2D;AL # MALAYALAM LETTER BHA -0D2E;AL # MALAYALAM LETTER MA -0D2F;AL # MALAYALAM LETTER YA -0D30;AL # MALAYALAM LETTER RA -0D31;AL # MALAYALAM LETTER RRA -0D32;AL # MALAYALAM LETTER LA -0D33;AL # MALAYALAM LETTER LLA -0D34;AL # MALAYALAM LETTER LLLA -0D35;AL # MALAYALAM LETTER VA -0D36;AL # MALAYALAM LETTER SHA -0D37;AL # MALAYALAM LETTER SSA -0D38;AL # MALAYALAM LETTER SA -0D39;AL # MALAYALAM LETTER HA -0D3E;CM # MALAYALAM VOWEL SIGN AA -0D3F;CM # MALAYALAM VOWEL SIGN I -0D40;CM # MALAYALAM VOWEL SIGN II -0D41;CM # MALAYALAM VOWEL SIGN U -0D42;CM # MALAYALAM VOWEL SIGN UU -0D43;CM # MALAYALAM VOWEL SIGN VOCALIC R -0D46;CM # MALAYALAM VOWEL SIGN E -0D47;CM # MALAYALAM VOWEL SIGN EE -0D48;CM # MALAYALAM VOWEL SIGN AI -0D4A;CM # MALAYALAM VOWEL SIGN O -0D4B;CM # MALAYALAM VOWEL SIGN OO -0D4C;CM # MALAYALAM VOWEL SIGN AU -0D4D;CM # MALAYALAM SIGN VIRAMA -0D57;CM # MALAYALAM AU LENGTH MARK -0D60;AL # MALAYALAM LETTER VOCALIC RR -0D61;AL # MALAYALAM LETTER VOCALIC LL -0D66;NU # MALAYALAM DIGIT ZERO -0D67;NU # MALAYALAM DIGIT ONE -0D68;NU # MALAYALAM DIGIT TWO -0D69;NU # MALAYALAM DIGIT THREE -0D6A;NU # MALAYALAM DIGIT FOUR -0D6B;NU # MALAYALAM DIGIT FIVE -0D6C;NU # MALAYALAM DIGIT SIX -0D6D;NU # MALAYALAM DIGIT SEVEN -0D6E;NU # MALAYALAM DIGIT EIGHT -0D6F;NU # MALAYALAM DIGIT NINE -0D82;CM # SINHALA SIGN ANUSVARAYA -0D83;CM # SINHALA SIGN VISARGAYA -0D85;AL # SINHALA LETTER AYANNA -0D86;AL # SINHALA LETTER AAYANNA -0D87;AL # SINHALA LETTER AEYANNA -0D88;AL # SINHALA LETTER AEEYANNA -0D89;AL # SINHALA LETTER IYANNA -0D8A;AL # SINHALA LETTER IIYANNA -0D8B;AL # SINHALA LETTER UYANNA -0D8C;AL # SINHALA LETTER UUYANNA -0D8D;AL # SINHALA LETTER IRUYANNA -0D8E;AL # SINHALA LETTER IRUUYANNA -0D8F;AL # SINHALA LETTER ILUYANNA -0D90;AL # SINHALA LETTER ILUUYANNA -0D91;AL # SINHALA LETTER EYANNA -0D92;AL # SINHALA LETTER EEYANNA -0D93;AL # SINHALA LETTER AIYANNA -0D94;AL # SINHALA LETTER OYANNA -0D95;AL # SINHALA LETTER OOYANNA -0D96;AL # SINHALA LETTER AUYANNA -0D9A;AL # SINHALA LETTER ALPAPRAANA KAYANNA -0D9B;AL # SINHALA LETTER MAHAAPRAANA KAYANNA -0D9C;AL # SINHALA LETTER ALPAPRAANA GAYANNA -0D9D;AL # SINHALA LETTER MAHAAPRAANA GAYANNA -0D9E;AL # SINHALA LETTER KANTAJA NAASIKYAYA -0D9F;AL # SINHALA LETTER SANYAKA GAYANNA -0DA0;AL # SINHALA LETTER ALPAPRAANA CAYANNA -0DA1;AL # SINHALA LETTER MAHAAPRAANA CAYANNA -0DA2;AL # SINHALA LETTER ALPAPRAANA JAYANNA -0DA3;AL # SINHALA LETTER MAHAAPRAANA JAYANNA -0DA4;AL # SINHALA LETTER TAALUJA NAASIKYAYA -0DA5;AL # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA -0DA6;AL # SINHALA LETTER SANYAKA JAYANNA -0DA7;AL # SINHALA LETTER ALPAPRAANA TTAYANNA -0DA8;AL # SINHALA LETTER MAHAAPRAANA TTAYANNA -0DA9;AL # SINHALA LETTER ALPAPRAANA DDAYANNA -0DAA;AL # SINHALA LETTER MAHAAPRAANA DDAYANNA -0DAB;AL # SINHALA LETTER MUURDHAJA NAYANNA -0DAC;AL # SINHALA LETTER SANYAKA DDAYANNA -0DAD;AL # SINHALA LETTER ALPAPRAANA TAYANNA -0DAE;AL # SINHALA LETTER MAHAAPRAANA TAYANNA -0DAF;AL # SINHALA LETTER ALPAPRAANA DAYANNA -0DB0;AL # SINHALA LETTER MAHAAPRAANA DAYANNA -0DB1;AL # SINHALA LETTER DANTAJA NAYANNA -0DB3;AL # SINHALA LETTER SANYAKA DAYANNA -0DB4;AL # SINHALA LETTER ALPAPRAANA PAYANNA -0DB5;AL # SINHALA LETTER MAHAAPRAANA PAYANNA -0DB6;AL # SINHALA LETTER ALPAPRAANA BAYANNA -0DB7;AL # SINHALA LETTER MAHAAPRAANA BAYANNA -0DB8;AL # SINHALA LETTER MAYANNA -0DB9;AL # SINHALA LETTER AMBA BAYANNA -0DBA;AL # SINHALA LETTER YAYANNA -0DBB;AL # SINHALA LETTER RAYANNA -0DBD;AL # SINHALA LETTER DANTAJA LAYANNA -0DC0;AL # SINHALA LETTER VAYANNA -0DC1;AL # SINHALA LETTER TAALUJA SAYANNA -0DC2;AL # SINHALA LETTER MUURDHAJA SAYANNA -0DC3;AL # SINHALA LETTER DANTAJA SAYANNA -0DC4;AL # SINHALA LETTER HAYANNA -0DC5;AL # SINHALA LETTER MUURDHAJA LAYANNA -0DC6;AL # SINHALA LETTER FAYANNA -0DCA;CM # SINHALA SIGN AL-LAKUNA -0DCF;CM # SINHALA VOWEL SIGN AELA-PILLA -0DD0;CM # SINHALA VOWEL SIGN KETTI AEDA-PILLA -0DD1;CM # SINHALA VOWEL SIGN DIGA AEDA-PILLA -0DD2;CM # SINHALA VOWEL SIGN KETTI IS-PILLA -0DD3;CM # SINHALA VOWEL SIGN DIGA IS-PILLA -0DD4;CM # SINHALA VOWEL SIGN KETTI PAA-PILLA -0DD6;CM # SINHALA VOWEL SIGN DIGA PAA-PILLA -0DD8;CM # SINHALA VOWEL SIGN GAETTA-PILLA -0DD9;CM # SINHALA VOWEL SIGN KOMBUVA -0DDA;CM # SINHALA VOWEL SIGN DIGA KOMBUVA -0DDB;CM # SINHALA VOWEL SIGN KOMBU DEKA -0DDC;CM # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA -0DDD;CM # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA -0DDE;CM # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA -0DDF;CM # SINHALA VOWEL SIGN GAYANUKITTA -0DF2;CM # SINHALA VOWEL SIGN DIGA GAETTA-PILLA -0DF3;CM # SINHALA VOWEL SIGN DIGA GAYANUKITTA -0DF4;AL # SINHALA PUNCTUATION KUNDDALIYA -0E01;SA # THAI CHARACTER KO KAI -0E02;SA # THAI CHARACTER KHO KHAI -0E03;SA # THAI CHARACTER KHO KHUAT -0E04;SA # THAI CHARACTER KHO KHWAI -0E05;SA # THAI CHARACTER KHO KHON -0E06;SA # THAI CHARACTER KHO RAKHANG -0E07;SA # THAI CHARACTER NGO NGU -0E08;SA # THAI CHARACTER CHO CHAN -0E09;SA # THAI CHARACTER CHO CHING -0E0A;SA # THAI CHARACTER CHO CHANG -0E0B;SA # THAI CHARACTER SO SO -0E0C;SA # THAI CHARACTER CHO CHOE -0E0D;SA # THAI CHARACTER YO YING -0E0E;SA # THAI CHARACTER DO CHADA -0E0F;SA # THAI CHARACTER TO PATAK -0E10;SA # THAI CHARACTER THO THAN -0E11;SA # THAI CHARACTER THO NANGMONTHO -0E12;SA # THAI CHARACTER THO PHUTHAO -0E13;SA # THAI CHARACTER NO NEN -0E14;SA # THAI CHARACTER DO DEK -0E15;SA # THAI CHARACTER TO TAO -0E16;SA # THAI CHARACTER THO THUNG -0E17;SA # THAI CHARACTER THO THAHAN -0E18;SA # THAI CHARACTER THO THONG -0E19;SA # THAI CHARACTER NO NU -0E1A;SA # THAI CHARACTER BO BAIMAI -0E1B;SA # THAI CHARACTER PO PLA -0E1C;SA # THAI CHARACTER PHO PHUNG -0E1D;SA # THAI CHARACTER FO FA -0E1E;SA # THAI CHARACTER PHO PHAN -0E1F;SA # THAI CHARACTER FO FAN -0E20;SA # THAI CHARACTER PHO SAMPHAO -0E21;SA # THAI CHARACTER MO MA -0E22;SA # THAI CHARACTER YO YAK -0E23;SA # THAI CHARACTER RO RUA -0E24;SA # THAI CHARACTER RU -0E25;SA # THAI CHARACTER LO LING -0E26;SA # THAI CHARACTER LU -0E27;SA # THAI CHARACTER WO WAEN -0E28;SA # THAI CHARACTER SO SALA -0E29;SA # THAI CHARACTER SO RUSI -0E2A;SA # THAI CHARACTER SO SUA -0E2B;SA # THAI CHARACTER HO HIP -0E2C;SA # THAI CHARACTER LO CHULA -0E2D;SA # THAI CHARACTER O ANG -0E2E;SA # THAI CHARACTER HO NOKHUK -0E2F;SA # THAI CHARACTER PAIYANNOI -0E30;SA # THAI CHARACTER SARA A -0E31;CM # THAI CHARACTER MAI HAN-AKAT -0E32;SA # THAI CHARACTER SARA AA -0E33;SA # THAI CHARACTER SARA AM -0E34;CM # THAI CHARACTER SARA I -0E35;CM # THAI CHARACTER SARA II -0E36;CM # THAI CHARACTER SARA UE -0E37;CM # THAI CHARACTER SARA UEE -0E38;CM # THAI CHARACTER SARA U -0E39;CM # THAI CHARACTER SARA UU -0E3A;CM # THAI CHARACTER PHINTHU -0E3F;PR # THAI CURRENCY SYMBOL BAHT -0E40;SA # THAI CHARACTER SARA E -0E41;SA # THAI CHARACTER SARA AE -0E42;SA # THAI CHARACTER SARA O -0E43;SA # THAI CHARACTER SARA AI MAIMUAN -0E44;SA # THAI CHARACTER SARA AI MAIMALAI -0E45;SA # THAI CHARACTER LAKKHANGYAO -0E46;SA # THAI CHARACTER MAIYAMOK -0E47;CM # THAI CHARACTER MAITAIKHU -0E48;CM # THAI CHARACTER MAI EK -0E49;CM # THAI CHARACTER MAI THO -0E4A;CM # THAI CHARACTER MAI TRI -0E4B;CM # THAI CHARACTER MAI CHATTAWA -0E4C;CM # THAI CHARACTER THANTHAKHAT -0E4D;CM # THAI CHARACTER NIKHAHIT -0E4E;CM # THAI CHARACTER YAMAKKAN -0E4F;AL # THAI CHARACTER FONGMAN -0E50;NU # THAI DIGIT ZERO -0E51;NU # THAI DIGIT ONE -0E52;NU # THAI DIGIT TWO -0E53;NU # THAI DIGIT THREE -0E54;NU # THAI DIGIT FOUR -0E55;NU # THAI DIGIT FIVE -0E56;NU # THAI DIGIT SIX -0E57;NU # THAI DIGIT SEVEN -0E58;NU # THAI DIGIT EIGHT -0E59;NU # THAI DIGIT NINE -0E5A;BA # THAI CHARACTER ANGKHANKHU -0E5B;BA # THAI CHARACTER KHOMUT -0E81;SA # LAO LETTER KO -0E82;SA # LAO LETTER KHO SUNG -0E84;SA # LAO LETTER KHO TAM -0E87;SA # LAO LETTER NGO -0E88;SA # LAO LETTER CO -0E8A;SA # LAO LETTER SO TAM -0E8D;SA # LAO LETTER NYO -0E94;SA # LAO LETTER DO -0E95;SA # LAO LETTER TO -0E96;SA # LAO LETTER THO SUNG -0E97;SA # LAO LETTER THO TAM -0E99;SA # LAO LETTER NO -0E9A;SA # LAO LETTER BO -0E9B;SA # LAO LETTER PO -0E9C;SA # LAO LETTER PHO SUNG -0E9D;SA # LAO LETTER FO TAM -0E9E;SA # LAO LETTER PHO TAM -0E9F;SA # LAO LETTER FO SUNG -0EA1;SA # LAO LETTER MO -0EA2;SA # LAO LETTER YO -0EA3;SA # LAO LETTER LO LING -0EA5;SA # LAO LETTER LO LOOT -0EA7;SA # LAO LETTER WO -0EAA;SA # LAO LETTER SO SUNG -0EAB;SA # LAO LETTER HO SUNG -0EAD;SA # LAO LETTER O -0EAE;SA # LAO LETTER HO TAM -0EAF;SA # LAO ELLIPSIS -0EB0;SA # LAO VOWEL SIGN A -0EB1;CM # LAO VOWEL SIGN MAI KAN -0EB2;SA # LAO VOWEL SIGN AA -0EB3;SA # LAO VOWEL SIGN AM -0EB4;CM # LAO VOWEL SIGN I -0EB5;CM # LAO VOWEL SIGN II -0EB6;CM # LAO VOWEL SIGN Y -0EB7;CM # LAO VOWEL SIGN YY -0EB8;CM # LAO VOWEL SIGN U -0EB9;CM # LAO VOWEL SIGN UU -0EBB;CM # LAO VOWEL SIGN MAI KON -0EBC;CM # LAO SEMIVOWEL SIGN LO -0EBD;SA # LAO SEMIVOWEL SIGN NYO -0EC0;SA # LAO VOWEL SIGN E -0EC1;SA # LAO VOWEL SIGN EI -0EC2;SA # LAO VOWEL SIGN O -0EC3;SA # LAO VOWEL SIGN AY -0EC4;SA # LAO VOWEL SIGN AI -0EC6;SA # LAO KO LA -0EC8;CM # LAO TONE MAI EK -0EC9;CM # LAO TONE MAI THO -0ECA;CM # LAO TONE MAI TI -0ECB;CM # LAO TONE MAI CATAWA -0ECC;CM # LAO CANCELLATION MARK -0ECD;CM # LAO NIGGAHITA -0ED0;NU # LAO DIGIT ZERO -0ED1;NU # LAO DIGIT ONE -0ED2;NU # LAO DIGIT TWO -0ED3;NU # LAO DIGIT THREE -0ED4;NU # LAO DIGIT FOUR -0ED5;NU # LAO DIGIT FIVE -0ED6;NU # LAO DIGIT SIX -0ED7;NU # LAO DIGIT SEVEN -0ED8;NU # LAO DIGIT EIGHT -0ED9;NU # LAO DIGIT NINE -0EDC;SA # LAO HO NO -0EDD;SA # LAO HO MO -0F00;AL # TIBETAN SYLLABLE OM -0F01;BB # TIBETAN MARK GTER YIG MGO TRUNCATED A -0F02;BB # TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA -0F03;BB # TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA -0F04;BB # TIBETAN MARK INITIAL YIG MGO MDUN MA -0F05;AL # TIBETAN MARK CLOSING YIG MGO SGAB MA -0F06;BB # TIBETAN MARK CARET YIG MGO PHUR SHAD MA -0F07;BB # TIBETAN MARK YIG MGO TSHEG SHAD MA -0F08;GL # TIBETAN MARK SBRUL SHAD -0F09;BB # TIBETAN MARK BSKUR YIG MGO -0F0A;BB # TIBETAN MARK BKA- SHOG YIG MGO -0F0B;BA # TIBETAN MARK INTERSYLLABIC TSHEG -0F0C;GL # TIBETAN MARK DELIMITER TSHEG BSTAR -0F0D;EX # TIBETAN MARK SHAD -0F0E;EX # TIBETAN MARK NYIS SHAD -0F0F;EX # TIBETAN MARK TSHEG SHAD -0F10;EX # TIBETAN MARK NYIS TSHEG SHAD -0F11;EX # TIBETAN MARK RIN CHEN SPUNGS SHAD -0F12;GL # TIBETAN MARK RGYA GRAM SHAD -0F13;AL # TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN -0F14;EX # TIBETAN MARK GTER TSHEG -0F15;AL # TIBETAN LOGOTYPE SIGN CHAD RTAGS -0F16;AL # TIBETAN LOGOTYPE SIGN LHAG RTAGS -0F17;AL # TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS -0F18;CM # TIBETAN ASTROLOGICAL SIGN -KHYUD PA -0F19;CM # TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS -0F1A;AL # TIBETAN SIGN RDEL DKAR GCIG -0F1B;AL # TIBETAN SIGN RDEL DKAR GNYIS -0F1C;AL # TIBETAN SIGN RDEL DKAR GSUM -0F1D;AL # TIBETAN SIGN RDEL NAG GCIG -0F1E;AL # TIBETAN SIGN RDEL NAG GNYIS -0F1F;AL # TIBETAN SIGN RDEL DKAR RDEL NAG -0F20;NU # TIBETAN DIGIT ZERO -0F21;NU # TIBETAN DIGIT ONE -0F22;NU # TIBETAN DIGIT TWO -0F23;NU # TIBETAN DIGIT THREE -0F24;NU # TIBETAN DIGIT FOUR -0F25;NU # TIBETAN DIGIT FIVE -0F26;NU # TIBETAN DIGIT SIX -0F27;NU # TIBETAN DIGIT SEVEN -0F28;NU # TIBETAN DIGIT EIGHT -0F29;NU # TIBETAN DIGIT NINE -0F2A;AL # TIBETAN DIGIT HALF ONE -0F2B;AL # TIBETAN DIGIT HALF TWO -0F2C;AL # TIBETAN DIGIT HALF THREE -0F2D;AL # TIBETAN DIGIT HALF FOUR -0F2E;AL # TIBETAN DIGIT HALF FIVE -0F2F;AL # TIBETAN DIGIT HALF SIX -0F30;AL # TIBETAN DIGIT HALF SEVEN -0F31;AL # TIBETAN DIGIT HALF EIGHT -0F32;AL # TIBETAN DIGIT HALF NINE -0F33;AL # TIBETAN DIGIT HALF ZERO -0F34;BA # TIBETAN MARK BSDUS RTAGS -0F35;CM # TIBETAN MARK NGAS BZUNG NYI ZLA -0F36;AL # TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN -0F37;CM # TIBETAN MARK NGAS BZUNG SGOR RTAGS -0F38;AL # TIBETAN MARK CHE MGO -0F39;CM # TIBETAN MARK TSA -PHRU -0F3A;OP # TIBETAN MARK GUG RTAGS GYON -0F3B;CL # TIBETAN MARK GUG RTAGS GYAS -0F3C;OP # TIBETAN MARK ANG KHANG GYON -0F3D;CL # TIBETAN MARK ANG KHANG GYAS -0F3E;CM # TIBETAN SIGN YAR TSHES -0F3F;CM # TIBETAN SIGN MAR TSHES -0F40;AL # TIBETAN LETTER KA -0F41;AL # TIBETAN LETTER KHA -0F42;AL # TIBETAN LETTER GA -0F43;AL # TIBETAN LETTER GHA -0F44;AL # TIBETAN LETTER NGA -0F45;AL # TIBETAN LETTER CA -0F46;AL # TIBETAN LETTER CHA -0F47;AL # TIBETAN LETTER JA -0F49;AL # TIBETAN LETTER NYA -0F4A;AL # TIBETAN LETTER TTA -0F4B;AL # TIBETAN LETTER TTHA -0F4C;AL # TIBETAN LETTER DDA -0F4D;AL # TIBETAN LETTER DDHA -0F4E;AL # TIBETAN LETTER NNA -0F4F;AL # TIBETAN LETTER TA -0F50;AL # TIBETAN LETTER THA -0F51;AL # TIBETAN LETTER DA -0F52;AL # TIBETAN LETTER DHA -0F53;AL # TIBETAN LETTER NA -0F54;AL # TIBETAN LETTER PA -0F55;AL # TIBETAN LETTER PHA -0F56;AL # TIBETAN LETTER BA -0F57;AL # TIBETAN LETTER BHA -0F58;AL # TIBETAN LETTER MA -0F59;AL # TIBETAN LETTER TSA -0F5A;AL # TIBETAN LETTER TSHA -0F5B;AL # TIBETAN LETTER DZA -0F5C;AL # TIBETAN LETTER DZHA -0F5D;AL # TIBETAN LETTER WA -0F5E;AL # TIBETAN LETTER ZHA -0F5F;AL # TIBETAN LETTER ZA -0F60;AL # TIBETAN LETTER -A -0F61;AL # TIBETAN LETTER YA -0F62;AL # TIBETAN LETTER RA -0F63;AL # TIBETAN LETTER LA -0F64;AL # TIBETAN LETTER SHA -0F65;AL # TIBETAN LETTER SSA -0F66;AL # TIBETAN LETTER SA -0F67;AL # TIBETAN LETTER HA -0F68;AL # TIBETAN LETTER A -0F69;AL # TIBETAN LETTER KSSA -0F6A;AL # TIBETAN LETTER FIXED-FORM RA -0F71;CM # TIBETAN VOWEL SIGN AA -0F72;CM # TIBETAN VOWEL SIGN I -0F73;CM # TIBETAN VOWEL SIGN II -0F74;CM # TIBETAN VOWEL SIGN U -0F75;CM # TIBETAN VOWEL SIGN UU -0F76;CM # TIBETAN VOWEL SIGN VOCALIC R -0F77;CM # TIBETAN VOWEL SIGN VOCALIC RR -0F78;CM # TIBETAN VOWEL SIGN VOCALIC L -0F79;CM # TIBETAN VOWEL SIGN VOCALIC LL -0F7A;CM # TIBETAN VOWEL SIGN E -0F7B;CM # TIBETAN VOWEL SIGN EE -0F7C;CM # TIBETAN VOWEL SIGN O -0F7D;CM # TIBETAN VOWEL SIGN OO -0F7E;CM # TIBETAN SIGN RJES SU NGA RO -0F7F;BA # TIBETAN SIGN RNAM BCAD -0F80;CM # TIBETAN VOWEL SIGN REVERSED I -0F81;CM # TIBETAN VOWEL SIGN REVERSED II -0F82;CM # TIBETAN SIGN NYI ZLA NAA DA -0F83;CM # TIBETAN SIGN SNA LDAN -0F84;CM # TIBETAN MARK HALANTA -0F85;BA # TIBETAN MARK PALUTA -0F86;CM # TIBETAN SIGN LCI RTAGS -0F87;CM # TIBETAN SIGN YANG RTAGS -0F88;AL # TIBETAN SIGN LCE TSA CAN -0F89;AL # TIBETAN SIGN MCHU CAN -0F8A;AL # TIBETAN SIGN GRU CAN RGYINGS -0F8B;AL # TIBETAN SIGN GRU MED RGYINGS -0F90;CM # TIBETAN SUBJOINED LETTER KA -0F91;CM # TIBETAN SUBJOINED LETTER KHA -0F92;CM # TIBETAN SUBJOINED LETTER GA -0F93;CM # TIBETAN SUBJOINED LETTER GHA -0F94;CM # TIBETAN SUBJOINED LETTER NGA -0F95;CM # TIBETAN SUBJOINED LETTER CA -0F96;CM # TIBETAN SUBJOINED LETTER CHA -0F97;CM # TIBETAN SUBJOINED LETTER JA -0F99;CM # TIBETAN SUBJOINED LETTER NYA -0F9A;CM # TIBETAN SUBJOINED LETTER TTA -0F9B;CM # TIBETAN SUBJOINED LETTER TTHA -0F9C;CM # TIBETAN SUBJOINED LETTER DDA -0F9D;CM # TIBETAN SUBJOINED LETTER DDHA -0F9E;CM # TIBETAN SUBJOINED LETTER NNA -0F9F;CM # TIBETAN SUBJOINED LETTER TA -0FA0;CM # TIBETAN SUBJOINED LETTER THA -0FA1;CM # TIBETAN SUBJOINED LETTER DA -0FA2;CM # TIBETAN SUBJOINED LETTER DHA -0FA3;CM # TIBETAN SUBJOINED LETTER NA -0FA4;CM # TIBETAN SUBJOINED LETTER PA -0FA5;CM # TIBETAN SUBJOINED LETTER PHA -0FA6;CM # TIBETAN SUBJOINED LETTER BA -0FA7;CM # TIBETAN SUBJOINED LETTER BHA -0FA8;CM # TIBETAN SUBJOINED LETTER MA -0FA9;CM # TIBETAN SUBJOINED LETTER TSA -0FAA;CM # TIBETAN SUBJOINED LETTER TSHA -0FAB;CM # TIBETAN SUBJOINED LETTER DZA -0FAC;CM # TIBETAN SUBJOINED LETTER DZHA -0FAD;CM # TIBETAN SUBJOINED LETTER WA -0FAE;CM # TIBETAN SUBJOINED LETTER ZHA -0FAF;CM # TIBETAN SUBJOINED LETTER ZA -0FB0;CM # TIBETAN SUBJOINED LETTER -A -0FB1;CM # TIBETAN SUBJOINED LETTER YA -0FB2;CM # TIBETAN SUBJOINED LETTER RA -0FB3;CM # TIBETAN SUBJOINED LETTER LA -0FB4;CM # TIBETAN SUBJOINED LETTER SHA -0FB5;CM # TIBETAN SUBJOINED LETTER SSA -0FB6;CM # TIBETAN SUBJOINED LETTER SA -0FB7;CM # TIBETAN SUBJOINED LETTER HA -0FB8;CM # TIBETAN SUBJOINED LETTER A -0FB9;CM # TIBETAN SUBJOINED LETTER KSSA -0FBA;CM # TIBETAN SUBJOINED LETTER FIXED-FORM WA -0FBB;CM # TIBETAN SUBJOINED LETTER FIXED-FORM YA -0FBC;CM # TIBETAN SUBJOINED LETTER FIXED-FORM RA -0FBE;BA # TIBETAN KU RU KHA -0FBF;BA # TIBETAN KU RU KHA BZHI MIG CAN -0FC0;AL # TIBETAN CANTILLATION SIGN HEAVY BEAT -0FC1;AL # TIBETAN CANTILLATION SIGN LIGHT BEAT -0FC2;AL # TIBETAN CANTILLATION SIGN CANG TE-U -0FC3;AL # TIBETAN CANTILLATION SIGN SBUB -CHAL -0FC4;AL # TIBETAN SYMBOL DRIL BU -0FC5;AL # TIBETAN SYMBOL RDO RJE -0FC6;CM # TIBETAN SYMBOL PADMA GDAN -0FC7;AL # TIBETAN SYMBOL RDO RJE RGYA GRAM -0FC8;AL # TIBETAN SYMBOL PHUR PA -0FC9;AL # TIBETAN SYMBOL NOR BU -0FCA;AL # TIBETAN SYMBOL NOR BU NYIS -KHYIL -0FCB;AL # TIBETAN SYMBOL NOR BU GSUM -KHYIL -0FCC;AL # TIBETAN SYMBOL NOR BU BZHI -KHYIL -0FCF;AL # TIBETAN SIGN RDEL NAG GSUM -0FD0;BB # TIBETAN MARK BSKA- SHOG GI MGO RGYAN -0FD1;BB # TIBETAN MARK MNYAM YIG GI MGO RGYAN -1000;SA # MYANMAR LETTER KA -1001;SA # MYANMAR LETTER KHA -1002;SA # MYANMAR LETTER GA -1003;SA # MYANMAR LETTER GHA -1004;SA # MYANMAR LETTER NGA -1005;SA # MYANMAR LETTER CA -1006;SA # MYANMAR LETTER CHA -1007;SA # MYANMAR LETTER JA -1008;SA # MYANMAR LETTER JHA -1009;SA # MYANMAR LETTER NYA -100A;SA # MYANMAR LETTER NNYA -100B;SA # MYANMAR LETTER TTA -100C;SA # MYANMAR LETTER TTHA -100D;SA # MYANMAR LETTER DDA -100E;SA # MYANMAR LETTER DDHA -100F;SA # MYANMAR LETTER NNA -1010;SA # MYANMAR LETTER TA -1011;SA # MYANMAR LETTER THA -1012;SA # MYANMAR LETTER DA -1013;SA # MYANMAR LETTER DHA -1014;SA # MYANMAR LETTER NA -1015;SA # MYANMAR LETTER PA -1016;SA # MYANMAR LETTER PHA -1017;SA # MYANMAR LETTER BA -1018;SA # MYANMAR LETTER BHA -1019;SA # MYANMAR LETTER MA -101A;SA # MYANMAR LETTER YA -101B;SA # MYANMAR LETTER RA -101C;SA # MYANMAR LETTER LA -101D;SA # MYANMAR LETTER WA -101E;SA # MYANMAR LETTER SA -101F;SA # MYANMAR LETTER HA -1020;SA # MYANMAR LETTER LLA -1021;SA # MYANMAR LETTER A -1023;SA # MYANMAR LETTER I -1024;SA # MYANMAR LETTER II -1025;SA # MYANMAR LETTER U -1026;SA # MYANMAR LETTER UU -1027;SA # MYANMAR LETTER E -1029;SA # MYANMAR LETTER O -102A;SA # MYANMAR LETTER AU -102C;CM # MYANMAR VOWEL SIGN AA -102D;CM # MYANMAR VOWEL SIGN I -102E;CM # MYANMAR VOWEL SIGN II -102F;CM # MYANMAR VOWEL SIGN U -1030;CM # MYANMAR VOWEL SIGN UU -1031;CM # MYANMAR VOWEL SIGN E -1032;CM # MYANMAR VOWEL SIGN AI -1036;CM # MYANMAR SIGN ANUSVARA -1037;CM # MYANMAR SIGN DOT BELOW -1038;CM # MYANMAR SIGN VISARGA -1039;CM # MYANMAR SIGN VIRAMA -1040;NU # MYANMAR DIGIT ZERO -1041;NU # MYANMAR DIGIT ONE -1042;NU # MYANMAR DIGIT TWO -1043;NU # MYANMAR DIGIT THREE -1044;NU # MYANMAR DIGIT FOUR -1045;NU # MYANMAR DIGIT FIVE -1046;NU # MYANMAR DIGIT SIX -1047;NU # MYANMAR DIGIT SEVEN -1048;NU # MYANMAR DIGIT EIGHT -1049;NU # MYANMAR DIGIT NINE -104A;BA # MYANMAR SIGN LITTLE SECTION -104B;BA # MYANMAR SIGN SECTION -104C;AL # MYANMAR SYMBOL LOCATIVE -104D;AL # MYANMAR SYMBOL COMPLETED -104E;AL # MYANMAR SYMBOL AFOREMENTIONED -104F;AL # MYANMAR SYMBOL GENITIVE -1050;SA # MYANMAR LETTER SHA -1051;SA # MYANMAR LETTER SSA -1052;SA # MYANMAR LETTER VOCALIC R -1053;SA # MYANMAR LETTER VOCALIC RR -1054;SA # MYANMAR LETTER VOCALIC L -1055;SA # MYANMAR LETTER VOCALIC LL -1056;CM # MYANMAR VOWEL SIGN VOCALIC R -1057;CM # MYANMAR VOWEL SIGN VOCALIC RR -1058;CM # MYANMAR VOWEL SIGN VOCALIC L -1059;CM # MYANMAR VOWEL SIGN VOCALIC LL -10A0;AL # GEORGIAN CAPITAL LETTER AN -10A1;AL # GEORGIAN CAPITAL LETTER BAN -10A2;AL # GEORGIAN CAPITAL LETTER GAN -10A3;AL # GEORGIAN CAPITAL LETTER DON -10A4;AL # GEORGIAN CAPITAL LETTER EN -10A5;AL # GEORGIAN CAPITAL LETTER VIN -10A6;AL # GEORGIAN CAPITAL LETTER ZEN -10A7;AL # GEORGIAN CAPITAL LETTER TAN -10A8;AL # GEORGIAN CAPITAL LETTER IN -10A9;AL # GEORGIAN CAPITAL LETTER KAN -10AA;AL # GEORGIAN CAPITAL LETTER LAS -10AB;AL # GEORGIAN CAPITAL LETTER MAN -10AC;AL # GEORGIAN CAPITAL LETTER NAR -10AD;AL # GEORGIAN CAPITAL LETTER ON -10AE;AL # GEORGIAN CAPITAL LETTER PAR -10AF;AL # GEORGIAN CAPITAL LETTER ZHAR -10B0;AL # GEORGIAN CAPITAL LETTER RAE -10B1;AL # GEORGIAN CAPITAL LETTER SAN -10B2;AL # GEORGIAN CAPITAL LETTER TAR -10B3;AL # GEORGIAN CAPITAL LETTER UN -10B4;AL # GEORGIAN CAPITAL LETTER PHAR -10B5;AL # GEORGIAN CAPITAL LETTER KHAR -10B6;AL # GEORGIAN CAPITAL LETTER GHAN -10B7;AL # GEORGIAN CAPITAL LETTER QAR -10B8;AL # GEORGIAN CAPITAL LETTER SHIN -10B9;AL # GEORGIAN CAPITAL LETTER CHIN -10BA;AL # GEORGIAN CAPITAL LETTER CAN -10BB;AL # GEORGIAN CAPITAL LETTER JIL -10BC;AL # GEORGIAN CAPITAL LETTER CIL -10BD;AL # GEORGIAN CAPITAL LETTER CHAR -10BE;AL # GEORGIAN CAPITAL LETTER XAN -10BF;AL # GEORGIAN CAPITAL LETTER JHAN -10C0;AL # GEORGIAN CAPITAL LETTER HAE -10C1;AL # GEORGIAN CAPITAL LETTER HE -10C2;AL # GEORGIAN CAPITAL LETTER HIE -10C3;AL # GEORGIAN CAPITAL LETTER WE -10C4;AL # GEORGIAN CAPITAL LETTER HAR -10C5;AL # GEORGIAN CAPITAL LETTER HOE -10D0;AL # GEORGIAN LETTER AN -10D1;AL # GEORGIAN LETTER BAN -10D2;AL # GEORGIAN LETTER GAN -10D3;AL # GEORGIAN LETTER DON -10D4;AL # GEORGIAN LETTER EN -10D5;AL # GEORGIAN LETTER VIN -10D6;AL # GEORGIAN LETTER ZEN -10D7;AL # GEORGIAN LETTER TAN -10D8;AL # GEORGIAN LETTER IN -10D9;AL # GEORGIAN LETTER KAN -10DA;AL # GEORGIAN LETTER LAS -10DB;AL # GEORGIAN LETTER MAN -10DC;AL # GEORGIAN LETTER NAR -10DD;AL # GEORGIAN LETTER ON -10DE;AL # GEORGIAN LETTER PAR -10DF;AL # GEORGIAN LETTER ZHAR -10E0;AL # GEORGIAN LETTER RAE -10E1;AL # GEORGIAN LETTER SAN -10E2;AL # GEORGIAN LETTER TAR -10E3;AL # GEORGIAN LETTER UN -10E4;AL # GEORGIAN LETTER PHAR -10E5;AL # GEORGIAN LETTER KHAR -10E6;AL # GEORGIAN LETTER GHAN -10E7;AL # GEORGIAN LETTER QAR -10E8;AL # GEORGIAN LETTER SHIN -10E9;AL # GEORGIAN LETTER CHIN -10EA;AL # GEORGIAN LETTER CAN -10EB;AL # GEORGIAN LETTER JIL -10EC;AL # GEORGIAN LETTER CIL -10ED;AL # GEORGIAN LETTER CHAR -10EE;AL # GEORGIAN LETTER XAN -10EF;AL # GEORGIAN LETTER JHAN -10F0;AL # GEORGIAN LETTER HAE -10F1;AL # GEORGIAN LETTER HE -10F2;AL # GEORGIAN LETTER HIE -10F3;AL # GEORGIAN LETTER WE -10F4;AL # GEORGIAN LETTER HAR -10F5;AL # GEORGIAN LETTER HOE -10F6;AL # GEORGIAN LETTER FI -10F7;AL # GEORGIAN LETTER YN -10F8;AL # GEORGIAN LETTER ELIFI -10F9;AL # GEORGIAN LETTER TURNED GAN -10FA;AL # GEORGIAN LETTER AIN -10FB;AL # GEORGIAN PARAGRAPH SEPARATOR -10FC;AL # MODIFIER LETTER GEORGIAN NAR -1100;JL # HANGUL CHOSEONG KIYEOK -1101;JL # HANGUL CHOSEONG SSANGKIYEOK -1102;JL # HANGUL CHOSEONG NIEUN -1103;JL # HANGUL CHOSEONG TIKEUT -1104;JL # HANGUL CHOSEONG SSANGTIKEUT -1105;JL # HANGUL CHOSEONG RIEUL -1106;JL # HANGUL CHOSEONG MIEUM -1107;JL # HANGUL CHOSEONG PIEUP -1108;JL # HANGUL CHOSEONG SSANGPIEUP -1109;JL # HANGUL CHOSEONG SIOS -110A;JL # HANGUL CHOSEONG SSANGSIOS -110B;JL # HANGUL CHOSEONG IEUNG -110C;JL # HANGUL CHOSEONG CIEUC -110D;JL # HANGUL CHOSEONG SSANGCIEUC -110E;JL # HANGUL CHOSEONG CHIEUCH -110F;JL # HANGUL CHOSEONG KHIEUKH -1110;JL # HANGUL CHOSEONG THIEUTH -1111;JL # HANGUL CHOSEONG PHIEUPH -1112;JL # HANGUL CHOSEONG HIEUH -1113;JL # HANGUL CHOSEONG NIEUN-KIYEOK -1114;JL # HANGUL CHOSEONG SSANGNIEUN -1115;JL # HANGUL CHOSEONG NIEUN-TIKEUT -1116;JL # HANGUL CHOSEONG NIEUN-PIEUP -1117;JL # HANGUL CHOSEONG TIKEUT-KIYEOK -1118;JL # HANGUL CHOSEONG RIEUL-NIEUN -1119;JL # HANGUL CHOSEONG SSANGRIEUL -111A;JL # HANGUL CHOSEONG RIEUL-HIEUH -111B;JL # HANGUL CHOSEONG KAPYEOUNRIEUL -111C;JL # HANGUL CHOSEONG MIEUM-PIEUP -111D;JL # HANGUL CHOSEONG KAPYEOUNMIEUM -111E;JL # HANGUL CHOSEONG PIEUP-KIYEOK -111F;JL # HANGUL CHOSEONG PIEUP-NIEUN -1120;JL # HANGUL CHOSEONG PIEUP-TIKEUT -1121;JL # HANGUL CHOSEONG PIEUP-SIOS -1122;JL # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK -1123;JL # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT -1124;JL # HANGUL CHOSEONG PIEUP-SIOS-PIEUP -1125;JL # HANGUL CHOSEONG PIEUP-SSANGSIOS -1126;JL # HANGUL CHOSEONG PIEUP-SIOS-CIEUC -1127;JL # HANGUL CHOSEONG PIEUP-CIEUC -1128;JL # HANGUL CHOSEONG PIEUP-CHIEUCH -1129;JL # HANGUL CHOSEONG PIEUP-THIEUTH -112A;JL # HANGUL CHOSEONG PIEUP-PHIEUPH -112B;JL # HANGUL CHOSEONG KAPYEOUNPIEUP -112C;JL # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP -112D;JL # HANGUL CHOSEONG SIOS-KIYEOK -112E;JL # HANGUL CHOSEONG SIOS-NIEUN -112F;JL # HANGUL CHOSEONG SIOS-TIKEUT -1130;JL # HANGUL CHOSEONG SIOS-RIEUL -1131;JL # HANGUL CHOSEONG SIOS-MIEUM -1132;JL # HANGUL CHOSEONG SIOS-PIEUP -1133;JL # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK -1134;JL # HANGUL CHOSEONG SIOS-SSANGSIOS -1135;JL # HANGUL CHOSEONG SIOS-IEUNG -1136;JL # HANGUL CHOSEONG SIOS-CIEUC -1137;JL # HANGUL CHOSEONG SIOS-CHIEUCH -1138;JL # HANGUL CHOSEONG SIOS-KHIEUKH -1139;JL # HANGUL CHOSEONG SIOS-THIEUTH -113A;JL # HANGUL CHOSEONG SIOS-PHIEUPH -113B;JL # HANGUL CHOSEONG SIOS-HIEUH -113C;JL # HANGUL CHOSEONG CHITUEUMSIOS -113D;JL # HANGUL CHOSEONG CHITUEUMSSANGSIOS -113E;JL # HANGUL CHOSEONG CEONGCHIEUMSIOS -113F;JL # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS -1140;JL # HANGUL CHOSEONG PANSIOS -1141;JL # HANGUL CHOSEONG IEUNG-KIYEOK -1142;JL # HANGUL CHOSEONG IEUNG-TIKEUT -1143;JL # HANGUL CHOSEONG IEUNG-MIEUM -1144;JL # HANGUL CHOSEONG IEUNG-PIEUP -1145;JL # HANGUL CHOSEONG IEUNG-SIOS -1146;JL # HANGUL CHOSEONG IEUNG-PANSIOS -1147;JL # HANGUL CHOSEONG SSANGIEUNG -1148;JL # HANGUL CHOSEONG IEUNG-CIEUC -1149;JL # HANGUL CHOSEONG IEUNG-CHIEUCH -114A;JL # HANGUL CHOSEONG IEUNG-THIEUTH -114B;JL # HANGUL CHOSEONG IEUNG-PHIEUPH -114C;JL # HANGUL CHOSEONG YESIEUNG -114D;JL # HANGUL CHOSEONG CIEUC-IEUNG -114E;JL # HANGUL CHOSEONG CHITUEUMCIEUC -114F;JL # HANGUL CHOSEONG CHITUEUMSSANGCIEUC -1150;JL # HANGUL CHOSEONG CEONGCHIEUMCIEUC -1151;JL # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC -1152;JL # HANGUL CHOSEONG CHIEUCH-KHIEUKH -1153;JL # HANGUL CHOSEONG CHIEUCH-HIEUH -1154;JL # HANGUL CHOSEONG CHITUEUMCHIEUCH -1155;JL # HANGUL CHOSEONG CEONGCHIEUMCHIEUCH -1156;JL # HANGUL CHOSEONG PHIEUPH-PIEUP -1157;JL # HANGUL CHOSEONG KAPYEOUNPHIEUPH -1158;JL # HANGUL CHOSEONG SSANGHIEUH -1159;JL # HANGUL CHOSEONG YEORINHIEUH -115F;JL # HANGUL CHOSEONG FILLER -1160;JV # HANGUL JUNGSEONG FILLER -1161;JV # HANGUL JUNGSEONG A -1162;JV # HANGUL JUNGSEONG AE -1163;JV # HANGUL JUNGSEONG YA -1164;JV # HANGUL JUNGSEONG YAE -1165;JV # HANGUL JUNGSEONG EO -1166;JV # HANGUL JUNGSEONG E -1167;JV # HANGUL JUNGSEONG YEO -1168;JV # HANGUL JUNGSEONG YE -1169;JV # HANGUL JUNGSEONG O -116A;JV # HANGUL JUNGSEONG WA -116B;JV # HANGUL JUNGSEONG WAE -116C;JV # HANGUL JUNGSEONG OE -116D;JV # HANGUL JUNGSEONG YO -116E;JV # HANGUL JUNGSEONG U -116F;JV # HANGUL JUNGSEONG WEO -1170;JV # HANGUL JUNGSEONG WE -1171;JV # HANGUL JUNGSEONG WI -1172;JV # HANGUL JUNGSEONG YU -1173;JV # HANGUL JUNGSEONG EU -1174;JV # HANGUL JUNGSEONG YI -1175;JV # HANGUL JUNGSEONG I -1176;JV # HANGUL JUNGSEONG A-O -1177;JV # HANGUL JUNGSEONG A-U -1178;JV # HANGUL JUNGSEONG YA-O -1179;JV # HANGUL JUNGSEONG YA-YO -117A;JV # HANGUL JUNGSEONG EO-O -117B;JV # HANGUL JUNGSEONG EO-U -117C;JV # HANGUL JUNGSEONG EO-EU -117D;JV # HANGUL JUNGSEONG YEO-O -117E;JV # HANGUL JUNGSEONG YEO-U -117F;JV # HANGUL JUNGSEONG O-EO -1180;JV # HANGUL JUNGSEONG O-E -1181;JV # HANGUL JUNGSEONG O-YE -1182;JV # HANGUL JUNGSEONG O-O -1183;JV # HANGUL JUNGSEONG O-U -1184;JV # HANGUL JUNGSEONG YO-YA -1185;JV # HANGUL JUNGSEONG YO-YAE -1186;JV # HANGUL JUNGSEONG YO-YEO -1187;JV # HANGUL JUNGSEONG YO-O -1188;JV # HANGUL JUNGSEONG YO-I -1189;JV # HANGUL JUNGSEONG U-A -118A;JV # HANGUL JUNGSEONG U-AE -118B;JV # HANGUL JUNGSEONG U-EO-EU -118C;JV # HANGUL JUNGSEONG U-YE -118D;JV # HANGUL JUNGSEONG U-U -118E;JV # HANGUL JUNGSEONG YU-A -118F;JV # HANGUL JUNGSEONG YU-EO -1190;JV # HANGUL JUNGSEONG YU-E -1191;JV # HANGUL JUNGSEONG YU-YEO -1192;JV # HANGUL JUNGSEONG YU-YE -1193;JV # HANGUL JUNGSEONG YU-U -1194;JV # HANGUL JUNGSEONG YU-I -1195;JV # HANGUL JUNGSEONG EU-U -1196;JV # HANGUL JUNGSEONG EU-EU -1197;JV # HANGUL JUNGSEONG YI-U -1198;JV # HANGUL JUNGSEONG I-A -1199;JV # HANGUL JUNGSEONG I-YA -119A;JV # HANGUL JUNGSEONG I-O -119B;JV # HANGUL JUNGSEONG I-U -119C;JV # HANGUL JUNGSEONG I-EU -119D;JV # HANGUL JUNGSEONG I-ARAEA -119E;JV # HANGUL JUNGSEONG ARAEA -119F;JV # HANGUL JUNGSEONG ARAEA-EO -11A0;JV # HANGUL JUNGSEONG ARAEA-U -11A1;JV # HANGUL JUNGSEONG ARAEA-I -11A2;JV # HANGUL JUNGSEONG SSANGARAEA -11A8;JT # HANGUL JONGSEONG KIYEOK -11A9;JT # HANGUL JONGSEONG SSANGKIYEOK -11AA;JT # HANGUL JONGSEONG KIYEOK-SIOS -11AB;JT # HANGUL JONGSEONG NIEUN -11AC;JT # HANGUL JONGSEONG NIEUN-CIEUC -11AD;JT # HANGUL JONGSEONG NIEUN-HIEUH -11AE;JT # HANGUL JONGSEONG TIKEUT -11AF;JT # HANGUL JONGSEONG RIEUL -11B0;JT # HANGUL JONGSEONG RIEUL-KIYEOK -11B1;JT # HANGUL JONGSEONG RIEUL-MIEUM -11B2;JT # HANGUL JONGSEONG RIEUL-PIEUP -11B3;JT # HANGUL JONGSEONG RIEUL-SIOS -11B4;JT # HANGUL JONGSEONG RIEUL-THIEUTH -11B5;JT # HANGUL JONGSEONG RIEUL-PHIEUPH -11B6;JT # HANGUL JONGSEONG RIEUL-HIEUH -11B7;JT # HANGUL JONGSEONG MIEUM -11B8;JT # HANGUL JONGSEONG PIEUP -11B9;JT # HANGUL JONGSEONG PIEUP-SIOS -11BA;JT # HANGUL JONGSEONG SIOS -11BB;JT # HANGUL JONGSEONG SSANGSIOS -11BC;JT # HANGUL JONGSEONG IEUNG -11BD;JT # HANGUL JONGSEONG CIEUC -11BE;JT # HANGUL JONGSEONG CHIEUCH -11BF;JT # HANGUL JONGSEONG KHIEUKH -11C0;JT # HANGUL JONGSEONG THIEUTH -11C1;JT # HANGUL JONGSEONG PHIEUPH -11C2;JT # HANGUL JONGSEONG HIEUH -11C3;JT # HANGUL JONGSEONG KIYEOK-RIEUL -11C4;JT # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK -11C5;JT # HANGUL JONGSEONG NIEUN-KIYEOK -11C6;JT # HANGUL JONGSEONG NIEUN-TIKEUT -11C7;JT # HANGUL JONGSEONG NIEUN-SIOS -11C8;JT # HANGUL JONGSEONG NIEUN-PANSIOS -11C9;JT # HANGUL JONGSEONG NIEUN-THIEUTH -11CA;JT # HANGUL JONGSEONG TIKEUT-KIYEOK -11CB;JT # HANGUL JONGSEONG TIKEUT-RIEUL -11CC;JT # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS -11CD;JT # HANGUL JONGSEONG RIEUL-NIEUN -11CE;JT # HANGUL JONGSEONG RIEUL-TIKEUT -11CF;JT # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH -11D0;JT # HANGUL JONGSEONG SSANGRIEUL -11D1;JT # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK -11D2;JT # HANGUL JONGSEONG RIEUL-MIEUM-SIOS -11D3;JT # HANGUL JONGSEONG RIEUL-PIEUP-SIOS -11D4;JT # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH -11D5;JT # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP -11D6;JT # HANGUL JONGSEONG RIEUL-SSANGSIOS -11D7;JT # HANGUL JONGSEONG RIEUL-PANSIOS -11D8;JT # HANGUL JONGSEONG RIEUL-KHIEUKH -11D9;JT # HANGUL JONGSEONG RIEUL-YEORINHIEUH -11DA;JT # HANGUL JONGSEONG MIEUM-KIYEOK -11DB;JT # HANGUL JONGSEONG MIEUM-RIEUL -11DC;JT # HANGUL JONGSEONG MIEUM-PIEUP -11DD;JT # HANGUL JONGSEONG MIEUM-SIOS -11DE;JT # HANGUL JONGSEONG MIEUM-SSANGSIOS -11DF;JT # HANGUL JONGSEONG MIEUM-PANSIOS -11E0;JT # HANGUL JONGSEONG MIEUM-CHIEUCH -11E1;JT # HANGUL JONGSEONG MIEUM-HIEUH -11E2;JT # HANGUL JONGSEONG KAPYEOUNMIEUM -11E3;JT # HANGUL JONGSEONG PIEUP-RIEUL -11E4;JT # HANGUL JONGSEONG PIEUP-PHIEUPH -11E5;JT # HANGUL JONGSEONG PIEUP-HIEUH -11E6;JT # HANGUL JONGSEONG KAPYEOUNPIEUP -11E7;JT # HANGUL JONGSEONG SIOS-KIYEOK -11E8;JT # HANGUL JONGSEONG SIOS-TIKEUT -11E9;JT # HANGUL JONGSEONG SIOS-RIEUL -11EA;JT # HANGUL JONGSEONG SIOS-PIEUP -11EB;JT # HANGUL JONGSEONG PANSIOS -11EC;JT # HANGUL JONGSEONG IEUNG-KIYEOK -11ED;JT # HANGUL JONGSEONG IEUNG-SSANGKIYEOK -11EE;JT # HANGUL JONGSEONG SSANGIEUNG -11EF;JT # HANGUL JONGSEONG IEUNG-KHIEUKH -11F0;JT # HANGUL JONGSEONG YESIEUNG -11F1;JT # HANGUL JONGSEONG YESIEUNG-SIOS -11F2;JT # HANGUL JONGSEONG YESIEUNG-PANSIOS -11F3;JT # HANGUL JONGSEONG PHIEUPH-PIEUP -11F4;JT # HANGUL JONGSEONG KAPYEOUNPHIEUPH -11F5;JT # HANGUL JONGSEONG HIEUH-NIEUN -11F6;JT # HANGUL JONGSEONG HIEUH-RIEUL -11F7;JT # HANGUL JONGSEONG HIEUH-MIEUM -11F8;JT # HANGUL JONGSEONG HIEUH-PIEUP -11F9;JT # HANGUL JONGSEONG YEORINHIEUH -1200;AL # ETHIOPIC SYLLABLE HA -1201;AL # ETHIOPIC SYLLABLE HU -1202;AL # ETHIOPIC SYLLABLE HI -1203;AL # ETHIOPIC SYLLABLE HAA -1204;AL # ETHIOPIC SYLLABLE HEE -1205;AL # ETHIOPIC SYLLABLE HE -1206;AL # ETHIOPIC SYLLABLE HO -1207;AL # ETHIOPIC SYLLABLE HOA -1208;AL # ETHIOPIC SYLLABLE LA -1209;AL # ETHIOPIC SYLLABLE LU -120A;AL # ETHIOPIC SYLLABLE LI -120B;AL # ETHIOPIC SYLLABLE LAA -120C;AL # ETHIOPIC SYLLABLE LEE -120D;AL # ETHIOPIC SYLLABLE LE -120E;AL # ETHIOPIC SYLLABLE LO -120F;AL # ETHIOPIC SYLLABLE LWA -1210;AL # ETHIOPIC SYLLABLE HHA -1211;AL # ETHIOPIC SYLLABLE HHU -1212;AL # ETHIOPIC SYLLABLE HHI -1213;AL # ETHIOPIC SYLLABLE HHAA -1214;AL # ETHIOPIC SYLLABLE HHEE -1215;AL # ETHIOPIC SYLLABLE HHE -1216;AL # ETHIOPIC SYLLABLE HHO -1217;AL # ETHIOPIC SYLLABLE HHWA -1218;AL # ETHIOPIC SYLLABLE MA -1219;AL # ETHIOPIC SYLLABLE MU -121A;AL # ETHIOPIC SYLLABLE MI -121B;AL # ETHIOPIC SYLLABLE MAA -121C;AL # ETHIOPIC SYLLABLE MEE -121D;AL # ETHIOPIC SYLLABLE ME -121E;AL # ETHIOPIC SYLLABLE MO -121F;AL # ETHIOPIC SYLLABLE MWA -1220;AL # ETHIOPIC SYLLABLE SZA -1221;AL # ETHIOPIC SYLLABLE SZU -1222;AL # ETHIOPIC SYLLABLE SZI -1223;AL # ETHIOPIC SYLLABLE SZAA -1224;AL # ETHIOPIC SYLLABLE SZEE -1225;AL # ETHIOPIC SYLLABLE SZE -1226;AL # ETHIOPIC SYLLABLE SZO -1227;AL # ETHIOPIC SYLLABLE SZWA -1228;AL # ETHIOPIC SYLLABLE RA -1229;AL # ETHIOPIC SYLLABLE RU -122A;AL # ETHIOPIC SYLLABLE RI -122B;AL # ETHIOPIC SYLLABLE RAA -122C;AL # ETHIOPIC SYLLABLE REE -122D;AL # ETHIOPIC SYLLABLE RE -122E;AL # ETHIOPIC SYLLABLE RO -122F;AL # ETHIOPIC SYLLABLE RWA -1230;AL # ETHIOPIC SYLLABLE SA -1231;AL # ETHIOPIC SYLLABLE SU -1232;AL # ETHIOPIC SYLLABLE SI -1233;AL # ETHIOPIC SYLLABLE SAA -1234;AL # ETHIOPIC SYLLABLE SEE -1235;AL # ETHIOPIC SYLLABLE SE -1236;AL # ETHIOPIC SYLLABLE SO -1237;AL # ETHIOPIC SYLLABLE SWA -1238;AL # ETHIOPIC SYLLABLE SHA -1239;AL # ETHIOPIC SYLLABLE SHU -123A;AL # ETHIOPIC SYLLABLE SHI -123B;AL # ETHIOPIC SYLLABLE SHAA -123C;AL # ETHIOPIC SYLLABLE SHEE -123D;AL # ETHIOPIC SYLLABLE SHE -123E;AL # ETHIOPIC SYLLABLE SHO -123F;AL # ETHIOPIC SYLLABLE SHWA -1240;AL # ETHIOPIC SYLLABLE QA -1241;AL # ETHIOPIC SYLLABLE QU -1242;AL # ETHIOPIC SYLLABLE QI -1243;AL # ETHIOPIC SYLLABLE QAA -1244;AL # ETHIOPIC SYLLABLE QEE -1245;AL # ETHIOPIC SYLLABLE QE -1246;AL # ETHIOPIC SYLLABLE QO -1247;AL # ETHIOPIC SYLLABLE QOA -1248;AL # ETHIOPIC SYLLABLE QWA -124A;AL # ETHIOPIC SYLLABLE QWI -124B;AL # ETHIOPIC SYLLABLE QWAA -124C;AL # ETHIOPIC SYLLABLE QWEE -124D;AL # ETHIOPIC SYLLABLE QWE -1250;AL # ETHIOPIC SYLLABLE QHA -1251;AL # ETHIOPIC SYLLABLE QHU -1252;AL # ETHIOPIC SYLLABLE QHI -1253;AL # ETHIOPIC SYLLABLE QHAA -1254;AL # ETHIOPIC SYLLABLE QHEE -1255;AL # ETHIOPIC SYLLABLE QHE -1256;AL # ETHIOPIC SYLLABLE QHO -1258;AL # ETHIOPIC SYLLABLE QHWA -125A;AL # ETHIOPIC SYLLABLE QHWI -125B;AL # ETHIOPIC SYLLABLE QHWAA -125C;AL # ETHIOPIC SYLLABLE QHWEE -125D;AL # ETHIOPIC SYLLABLE QHWE -1260;AL # ETHIOPIC SYLLABLE BA -1261;AL # ETHIOPIC SYLLABLE BU -1262;AL # ETHIOPIC SYLLABLE BI -1263;AL # ETHIOPIC SYLLABLE BAA -1264;AL # ETHIOPIC SYLLABLE BEE -1265;AL # ETHIOPIC SYLLABLE BE -1266;AL # ETHIOPIC SYLLABLE BO -1267;AL # ETHIOPIC SYLLABLE BWA -1268;AL # ETHIOPIC SYLLABLE VA -1269;AL # ETHIOPIC SYLLABLE VU -126A;AL # ETHIOPIC SYLLABLE VI -126B;AL # ETHIOPIC SYLLABLE VAA -126C;AL # ETHIOPIC SYLLABLE VEE -126D;AL # ETHIOPIC SYLLABLE VE -126E;AL # ETHIOPIC SYLLABLE VO -126F;AL # ETHIOPIC SYLLABLE VWA -1270;AL # ETHIOPIC SYLLABLE TA -1271;AL # ETHIOPIC SYLLABLE TU -1272;AL # ETHIOPIC SYLLABLE TI -1273;AL # ETHIOPIC SYLLABLE TAA -1274;AL # ETHIOPIC SYLLABLE TEE -1275;AL # ETHIOPIC SYLLABLE TE -1276;AL # ETHIOPIC SYLLABLE TO -1277;AL # ETHIOPIC SYLLABLE TWA -1278;AL # ETHIOPIC SYLLABLE CA -1279;AL # ETHIOPIC SYLLABLE CU -127A;AL # ETHIOPIC SYLLABLE CI -127B;AL # ETHIOPIC SYLLABLE CAA -127C;AL # ETHIOPIC SYLLABLE CEE -127D;AL # ETHIOPIC SYLLABLE CE -127E;AL # ETHIOPIC SYLLABLE CO -127F;AL # ETHIOPIC SYLLABLE CWA -1280;AL # ETHIOPIC SYLLABLE XA -1281;AL # ETHIOPIC SYLLABLE XU -1282;AL # ETHIOPIC SYLLABLE XI -1283;AL # ETHIOPIC SYLLABLE XAA -1284;AL # ETHIOPIC SYLLABLE XEE -1285;AL # ETHIOPIC SYLLABLE XE -1286;AL # ETHIOPIC SYLLABLE XO -1287;AL # ETHIOPIC SYLLABLE XOA -1288;AL # ETHIOPIC SYLLABLE XWA -128A;AL # ETHIOPIC SYLLABLE XWI -128B;AL # ETHIOPIC SYLLABLE XWAA -128C;AL # ETHIOPIC SYLLABLE XWEE -128D;AL # ETHIOPIC SYLLABLE XWE -1290;AL # ETHIOPIC SYLLABLE NA -1291;AL # ETHIOPIC SYLLABLE NU -1292;AL # ETHIOPIC SYLLABLE NI -1293;AL # ETHIOPIC SYLLABLE NAA -1294;AL # ETHIOPIC SYLLABLE NEE -1295;AL # ETHIOPIC SYLLABLE NE -1296;AL # ETHIOPIC SYLLABLE NO -1297;AL # ETHIOPIC SYLLABLE NWA -1298;AL # ETHIOPIC SYLLABLE NYA -1299;AL # ETHIOPIC SYLLABLE NYU -129A;AL # ETHIOPIC SYLLABLE NYI -129B;AL # ETHIOPIC SYLLABLE NYAA -129C;AL # ETHIOPIC SYLLABLE NYEE -129D;AL # ETHIOPIC SYLLABLE NYE -129E;AL # ETHIOPIC SYLLABLE NYO -129F;AL # ETHIOPIC SYLLABLE NYWA -12A0;AL # ETHIOPIC SYLLABLE GLOTTAL A -12A1;AL # ETHIOPIC SYLLABLE GLOTTAL U -12A2;AL # ETHIOPIC SYLLABLE GLOTTAL I -12A3;AL # ETHIOPIC SYLLABLE GLOTTAL AA -12A4;AL # ETHIOPIC SYLLABLE GLOTTAL EE -12A5;AL # ETHIOPIC SYLLABLE GLOTTAL E -12A6;AL # ETHIOPIC SYLLABLE GLOTTAL O -12A7;AL # ETHIOPIC SYLLABLE GLOTTAL WA -12A8;AL # ETHIOPIC SYLLABLE KA -12A9;AL # ETHIOPIC SYLLABLE KU -12AA;AL # ETHIOPIC SYLLABLE KI -12AB;AL # ETHIOPIC SYLLABLE KAA -12AC;AL # ETHIOPIC SYLLABLE KEE -12AD;AL # ETHIOPIC SYLLABLE KE -12AE;AL # ETHIOPIC SYLLABLE KO -12AF;AL # ETHIOPIC SYLLABLE KOA -12B0;AL # ETHIOPIC SYLLABLE KWA -12B2;AL # ETHIOPIC SYLLABLE KWI -12B3;AL # ETHIOPIC SYLLABLE KWAA -12B4;AL # ETHIOPIC SYLLABLE KWEE -12B5;AL # ETHIOPIC SYLLABLE KWE -12B8;AL # ETHIOPIC SYLLABLE KXA -12B9;AL # ETHIOPIC SYLLABLE KXU -12BA;AL # ETHIOPIC SYLLABLE KXI -12BB;AL # ETHIOPIC SYLLABLE KXAA -12BC;AL # ETHIOPIC SYLLABLE KXEE -12BD;AL # ETHIOPIC SYLLABLE KXE -12BE;AL # ETHIOPIC SYLLABLE KXO -12C0;AL # ETHIOPIC SYLLABLE KXWA -12C2;AL # ETHIOPIC SYLLABLE KXWI -12C3;AL # ETHIOPIC SYLLABLE KXWAA -12C4;AL # ETHIOPIC SYLLABLE KXWEE -12C5;AL # ETHIOPIC SYLLABLE KXWE -12C8;AL # ETHIOPIC SYLLABLE WA -12C9;AL # ETHIOPIC SYLLABLE WU -12CA;AL # ETHIOPIC SYLLABLE WI -12CB;AL # ETHIOPIC SYLLABLE WAA -12CC;AL # ETHIOPIC SYLLABLE WEE -12CD;AL # ETHIOPIC SYLLABLE WE -12CE;AL # ETHIOPIC SYLLABLE WO -12CF;AL # ETHIOPIC SYLLABLE WOA -12D0;AL # ETHIOPIC SYLLABLE PHARYNGEAL A -12D1;AL # ETHIOPIC SYLLABLE PHARYNGEAL U -12D2;AL # ETHIOPIC SYLLABLE PHARYNGEAL I -12D3;AL # ETHIOPIC SYLLABLE PHARYNGEAL AA -12D4;AL # ETHIOPIC SYLLABLE PHARYNGEAL EE -12D5;AL # ETHIOPIC SYLLABLE PHARYNGEAL E -12D6;AL # ETHIOPIC SYLLABLE PHARYNGEAL O -12D8;AL # ETHIOPIC SYLLABLE ZA -12D9;AL # ETHIOPIC SYLLABLE ZU -12DA;AL # ETHIOPIC SYLLABLE ZI -12DB;AL # ETHIOPIC SYLLABLE ZAA -12DC;AL # ETHIOPIC SYLLABLE ZEE -12DD;AL # ETHIOPIC SYLLABLE ZE -12DE;AL # ETHIOPIC SYLLABLE ZO -12DF;AL # ETHIOPIC SYLLABLE ZWA -12E0;AL # ETHIOPIC SYLLABLE ZHA -12E1;AL # ETHIOPIC SYLLABLE ZHU -12E2;AL # ETHIOPIC SYLLABLE ZHI -12E3;AL # ETHIOPIC SYLLABLE ZHAA -12E4;AL # ETHIOPIC SYLLABLE ZHEE -12E5;AL # ETHIOPIC SYLLABLE ZHE -12E6;AL # ETHIOPIC SYLLABLE ZHO -12E7;AL # ETHIOPIC SYLLABLE ZHWA -12E8;AL # ETHIOPIC SYLLABLE YA -12E9;AL # ETHIOPIC SYLLABLE YU -12EA;AL # ETHIOPIC SYLLABLE YI -12EB;AL # ETHIOPIC SYLLABLE YAA -12EC;AL # ETHIOPIC SYLLABLE YEE -12ED;AL # ETHIOPIC SYLLABLE YE -12EE;AL # ETHIOPIC SYLLABLE YO -12EF;AL # ETHIOPIC SYLLABLE YOA -12F0;AL # ETHIOPIC SYLLABLE DA -12F1;AL # ETHIOPIC SYLLABLE DU -12F2;AL # ETHIOPIC SYLLABLE DI -12F3;AL # ETHIOPIC SYLLABLE DAA -12F4;AL # ETHIOPIC SYLLABLE DEE -12F5;AL # ETHIOPIC SYLLABLE DE -12F6;AL # ETHIOPIC SYLLABLE DO -12F7;AL # ETHIOPIC SYLLABLE DWA -12F8;AL # ETHIOPIC SYLLABLE DDA -12F9;AL # ETHIOPIC SYLLABLE DDU -12FA;AL # ETHIOPIC SYLLABLE DDI -12FB;AL # ETHIOPIC SYLLABLE DDAA -12FC;AL # ETHIOPIC SYLLABLE DDEE -12FD;AL # ETHIOPIC SYLLABLE DDE -12FE;AL # ETHIOPIC SYLLABLE DDO -12FF;AL # ETHIOPIC SYLLABLE DDWA -1300;AL # ETHIOPIC SYLLABLE JA -1301;AL # ETHIOPIC SYLLABLE JU -1302;AL # ETHIOPIC SYLLABLE JI -1303;AL # ETHIOPIC SYLLABLE JAA -1304;AL # ETHIOPIC SYLLABLE JEE -1305;AL # ETHIOPIC SYLLABLE JE -1306;AL # ETHIOPIC SYLLABLE JO -1307;AL # ETHIOPIC SYLLABLE JWA -1308;AL # ETHIOPIC SYLLABLE GA -1309;AL # ETHIOPIC SYLLABLE GU -130A;AL # ETHIOPIC SYLLABLE GI -130B;AL # ETHIOPIC SYLLABLE GAA -130C;AL # ETHIOPIC SYLLABLE GEE -130D;AL # ETHIOPIC SYLLABLE GE -130E;AL # ETHIOPIC SYLLABLE GO -130F;AL # ETHIOPIC SYLLABLE GOA -1310;AL # ETHIOPIC SYLLABLE GWA -1312;AL # ETHIOPIC SYLLABLE GWI -1313;AL # ETHIOPIC SYLLABLE GWAA -1314;AL # ETHIOPIC SYLLABLE GWEE -1315;AL # ETHIOPIC SYLLABLE GWE -1318;AL # ETHIOPIC SYLLABLE GGA -1319;AL # ETHIOPIC SYLLABLE GGU -131A;AL # ETHIOPIC SYLLABLE GGI -131B;AL # ETHIOPIC SYLLABLE GGAA -131C;AL # ETHIOPIC SYLLABLE GGEE -131D;AL # ETHIOPIC SYLLABLE GGE -131E;AL # ETHIOPIC SYLLABLE GGO -131F;AL # ETHIOPIC SYLLABLE GGWAA -1320;AL # ETHIOPIC SYLLABLE THA -1321;AL # ETHIOPIC SYLLABLE THU -1322;AL # ETHIOPIC SYLLABLE THI -1323;AL # ETHIOPIC SYLLABLE THAA -1324;AL # ETHIOPIC SYLLABLE THEE -1325;AL # ETHIOPIC SYLLABLE THE -1326;AL # ETHIOPIC SYLLABLE THO -1327;AL # ETHIOPIC SYLLABLE THWA -1328;AL # ETHIOPIC SYLLABLE CHA -1329;AL # ETHIOPIC SYLLABLE CHU -132A;AL # ETHIOPIC SYLLABLE CHI -132B;AL # ETHIOPIC SYLLABLE CHAA -132C;AL # ETHIOPIC SYLLABLE CHEE -132D;AL # ETHIOPIC SYLLABLE CHE -132E;AL # ETHIOPIC SYLLABLE CHO -132F;AL # ETHIOPIC SYLLABLE CHWA -1330;AL # ETHIOPIC SYLLABLE PHA -1331;AL # ETHIOPIC SYLLABLE PHU -1332;AL # ETHIOPIC SYLLABLE PHI -1333;AL # ETHIOPIC SYLLABLE PHAA -1334;AL # ETHIOPIC SYLLABLE PHEE -1335;AL # ETHIOPIC SYLLABLE PHE -1336;AL # ETHIOPIC SYLLABLE PHO -1337;AL # ETHIOPIC SYLLABLE PHWA -1338;AL # ETHIOPIC SYLLABLE TSA -1339;AL # ETHIOPIC SYLLABLE TSU -133A;AL # ETHIOPIC SYLLABLE TSI -133B;AL # ETHIOPIC SYLLABLE TSAA -133C;AL # ETHIOPIC SYLLABLE TSEE -133D;AL # ETHIOPIC SYLLABLE TSE -133E;AL # ETHIOPIC SYLLABLE TSO -133F;AL # ETHIOPIC SYLLABLE TSWA -1340;AL # ETHIOPIC SYLLABLE TZA -1341;AL # ETHIOPIC SYLLABLE TZU -1342;AL # ETHIOPIC SYLLABLE TZI -1343;AL # ETHIOPIC SYLLABLE TZAA -1344;AL # ETHIOPIC SYLLABLE TZEE -1345;AL # ETHIOPIC SYLLABLE TZE -1346;AL # ETHIOPIC SYLLABLE TZO -1347;AL # ETHIOPIC SYLLABLE TZOA -1348;AL # ETHIOPIC SYLLABLE FA -1349;AL # ETHIOPIC SYLLABLE FU -134A;AL # ETHIOPIC SYLLABLE FI -134B;AL # ETHIOPIC SYLLABLE FAA -134C;AL # ETHIOPIC SYLLABLE FEE -134D;AL # ETHIOPIC SYLLABLE FE -134E;AL # ETHIOPIC SYLLABLE FO -134F;AL # ETHIOPIC SYLLABLE FWA -1350;AL # ETHIOPIC SYLLABLE PA -1351;AL # ETHIOPIC SYLLABLE PU -1352;AL # ETHIOPIC SYLLABLE PI -1353;AL # ETHIOPIC SYLLABLE PAA -1354;AL # ETHIOPIC SYLLABLE PEE -1355;AL # ETHIOPIC SYLLABLE PE -1356;AL # ETHIOPIC SYLLABLE PO -1357;AL # ETHIOPIC SYLLABLE PWA -1358;AL # ETHIOPIC SYLLABLE RYA -1359;AL # ETHIOPIC SYLLABLE MYA -135A;AL # ETHIOPIC SYLLABLE FYA -135F;CM # ETHIOPIC COMBINING GEMINATION MARK -1360;AL # ETHIOPIC SECTION MARK -1361;BA # ETHIOPIC WORDSPACE -1362;AL # ETHIOPIC FULL STOP -1363;AL # ETHIOPIC COMMA -1364;AL # ETHIOPIC SEMICOLON -1365;AL # ETHIOPIC COLON -1366;AL # ETHIOPIC PREFACE COLON -1367;AL # ETHIOPIC QUESTION MARK -1368;AL # ETHIOPIC PARAGRAPH SEPARATOR -1369;AL # ETHIOPIC DIGIT ONE -136A;AL # ETHIOPIC DIGIT TWO -136B;AL # ETHIOPIC DIGIT THREE -136C;AL # ETHIOPIC DIGIT FOUR -136D;AL # ETHIOPIC DIGIT FIVE -136E;AL # ETHIOPIC DIGIT SIX -136F;AL # ETHIOPIC DIGIT SEVEN -1370;AL # ETHIOPIC DIGIT EIGHT -1371;AL # ETHIOPIC DIGIT NINE -1372;AL # ETHIOPIC NUMBER TEN -1373;AL # ETHIOPIC NUMBER TWENTY -1374;AL # ETHIOPIC NUMBER THIRTY -1375;AL # ETHIOPIC NUMBER FORTY -1376;AL # ETHIOPIC NUMBER FIFTY -1377;AL # ETHIOPIC NUMBER SIXTY -1378;AL # ETHIOPIC NUMBER SEVENTY -1379;AL # ETHIOPIC NUMBER EIGHTY -137A;AL # ETHIOPIC NUMBER NINETY -137B;AL # ETHIOPIC NUMBER HUNDRED -137C;AL # ETHIOPIC NUMBER TEN THOUSAND -1380;AL # ETHIOPIC SYLLABLE SEBATBEIT MWA -1381;AL # ETHIOPIC SYLLABLE MWI -1382;AL # ETHIOPIC SYLLABLE MWEE -1383;AL # ETHIOPIC SYLLABLE MWE -1384;AL # ETHIOPIC SYLLABLE SEBATBEIT BWA -1385;AL # ETHIOPIC SYLLABLE BWI -1386;AL # ETHIOPIC SYLLABLE BWEE -1387;AL # ETHIOPIC SYLLABLE BWE -1388;AL # ETHIOPIC SYLLABLE SEBATBEIT FWA -1389;AL # ETHIOPIC SYLLABLE FWI -138A;AL # ETHIOPIC SYLLABLE FWEE -138B;AL # ETHIOPIC SYLLABLE FWE -138C;AL # ETHIOPIC SYLLABLE SEBATBEIT PWA -138D;AL # ETHIOPIC SYLLABLE PWI -138E;AL # ETHIOPIC SYLLABLE PWEE -138F;AL # ETHIOPIC SYLLABLE PWE -1390;AL # ETHIOPIC TONAL MARK YIZET -1391;AL # ETHIOPIC TONAL MARK DERET -1392;AL # ETHIOPIC TONAL MARK RIKRIK -1393;AL # ETHIOPIC TONAL MARK SHORT RIKRIK -1394;AL # ETHIOPIC TONAL MARK DIFAT -1395;AL # ETHIOPIC TONAL MARK KENAT -1396;AL # ETHIOPIC TONAL MARK CHIRET -1397;AL # ETHIOPIC TONAL MARK HIDET -1398;AL # ETHIOPIC TONAL MARK DERET-HIDET -1399;AL # ETHIOPIC TONAL MARK KURT -13A0;AL # CHEROKEE LETTER A -13A1;AL # CHEROKEE LETTER E -13A2;AL # CHEROKEE LETTER I -13A3;AL # CHEROKEE LETTER O -13A4;AL # CHEROKEE LETTER U -13A5;AL # CHEROKEE LETTER V -13A6;AL # CHEROKEE LETTER GA -13A7;AL # CHEROKEE LETTER KA -13A8;AL # CHEROKEE LETTER GE -13A9;AL # CHEROKEE LETTER GI -13AA;AL # CHEROKEE LETTER GO -13AB;AL # CHEROKEE LETTER GU -13AC;AL # CHEROKEE LETTER GV -13AD;AL # CHEROKEE LETTER HA -13AE;AL # CHEROKEE LETTER HE -13AF;AL # CHEROKEE LETTER HI -13B0;AL # CHEROKEE LETTER HO -13B1;AL # CHEROKEE LETTER HU -13B2;AL # CHEROKEE LETTER HV -13B3;AL # CHEROKEE LETTER LA -13B4;AL # CHEROKEE LETTER LE -13B5;AL # CHEROKEE LETTER LI -13B6;AL # CHEROKEE LETTER LO -13B7;AL # CHEROKEE LETTER LU -13B8;AL # CHEROKEE LETTER LV -13B9;AL # CHEROKEE LETTER MA -13BA;AL # CHEROKEE LETTER ME -13BB;AL # CHEROKEE LETTER MI -13BC;AL # CHEROKEE LETTER MO -13BD;AL # CHEROKEE LETTER MU -13BE;AL # CHEROKEE LETTER NA -13BF;AL # CHEROKEE LETTER HNA -13C0;AL # CHEROKEE LETTER NAH -13C1;AL # CHEROKEE LETTER NE -13C2;AL # CHEROKEE LETTER NI -13C3;AL # CHEROKEE LETTER NO -13C4;AL # CHEROKEE LETTER NU -13C5;AL # CHEROKEE LETTER NV -13C6;AL # CHEROKEE LETTER QUA -13C7;AL # CHEROKEE LETTER QUE -13C8;AL # CHEROKEE LETTER QUI -13C9;AL # CHEROKEE LETTER QUO -13CA;AL # CHEROKEE LETTER QUU -13CB;AL # CHEROKEE LETTER QUV -13CC;AL # CHEROKEE LETTER SA -13CD;AL # CHEROKEE LETTER S -13CE;AL # CHEROKEE LETTER SE -13CF;AL # CHEROKEE LETTER SI -13D0;AL # CHEROKEE LETTER SO -13D1;AL # CHEROKEE LETTER SU -13D2;AL # CHEROKEE LETTER SV -13D3;AL # CHEROKEE LETTER DA -13D4;AL # CHEROKEE LETTER TA -13D5;AL # CHEROKEE LETTER DE -13D6;AL # CHEROKEE LETTER TE -13D7;AL # CHEROKEE LETTER DI -13D8;AL # CHEROKEE LETTER TI -13D9;AL # CHEROKEE LETTER DO -13DA;AL # CHEROKEE LETTER DU -13DB;AL # CHEROKEE LETTER DV -13DC;AL # CHEROKEE LETTER DLA -13DD;AL # CHEROKEE LETTER TLA -13DE;AL # CHEROKEE LETTER TLE -13DF;AL # CHEROKEE LETTER TLI -13E0;AL # CHEROKEE LETTER TLO -13E1;AL # CHEROKEE LETTER TLU -13E2;AL # CHEROKEE LETTER TLV -13E3;AL # CHEROKEE LETTER TSA -13E4;AL # CHEROKEE LETTER TSE -13E5;AL # CHEROKEE LETTER TSI -13E6;AL # CHEROKEE LETTER TSO -13E7;AL # CHEROKEE LETTER TSU -13E8;AL # CHEROKEE LETTER TSV -13E9;AL # CHEROKEE LETTER WA -13EA;AL # CHEROKEE LETTER WE -13EB;AL # CHEROKEE LETTER WI -13EC;AL # CHEROKEE LETTER WO -13ED;AL # CHEROKEE LETTER WU -13EE;AL # CHEROKEE LETTER WV -13EF;AL # CHEROKEE LETTER YA -13F0;AL # CHEROKEE LETTER YE -13F1;AL # CHEROKEE LETTER YI -13F2;AL # CHEROKEE LETTER YO -13F3;AL # CHEROKEE LETTER YU -13F4;AL # CHEROKEE LETTER YV -1401;AL # CANADIAN SYLLABICS E -1402;AL # CANADIAN SYLLABICS AAI -1403;AL # CANADIAN SYLLABICS I -1404;AL # CANADIAN SYLLABICS II -1405;AL # CANADIAN SYLLABICS O -1406;AL # CANADIAN SYLLABICS OO -1407;AL # CANADIAN SYLLABICS Y-CREE OO -1408;AL # CANADIAN SYLLABICS CARRIER EE -1409;AL # CANADIAN SYLLABICS CARRIER I -140A;AL # CANADIAN SYLLABICS A -140B;AL # CANADIAN SYLLABICS AA -140C;AL # CANADIAN SYLLABICS WE -140D;AL # CANADIAN SYLLABICS WEST-CREE WE -140E;AL # CANADIAN SYLLABICS WI -140F;AL # CANADIAN SYLLABICS WEST-CREE WI -1410;AL # CANADIAN SYLLABICS WII -1411;AL # CANADIAN SYLLABICS WEST-CREE WII -1412;AL # CANADIAN SYLLABICS WO -1413;AL # CANADIAN SYLLABICS WEST-CREE WO -1414;AL # CANADIAN SYLLABICS WOO -1415;AL # CANADIAN SYLLABICS WEST-CREE WOO -1416;AL # CANADIAN SYLLABICS NASKAPI WOO -1417;AL # CANADIAN SYLLABICS WA -1418;AL # CANADIAN SYLLABICS WEST-CREE WA -1419;AL # CANADIAN SYLLABICS WAA -141A;AL # CANADIAN SYLLABICS WEST-CREE WAA -141B;AL # CANADIAN SYLLABICS NASKAPI WAA -141C;AL # CANADIAN SYLLABICS AI -141D;AL # CANADIAN SYLLABICS Y-CREE W -141E;AL # CANADIAN SYLLABICS GLOTTAL STOP -141F;AL # CANADIAN SYLLABICS FINAL ACUTE -1420;AL # CANADIAN SYLLABICS FINAL GRAVE -1421;AL # CANADIAN SYLLABICS FINAL BOTTOM HALF RING -1422;AL # CANADIAN SYLLABICS FINAL TOP HALF RING -1423;AL # CANADIAN SYLLABICS FINAL RIGHT HALF RING -1424;AL # CANADIAN SYLLABICS FINAL RING -1425;AL # CANADIAN SYLLABICS FINAL DOUBLE ACUTE -1426;AL # CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES -1427;AL # CANADIAN SYLLABICS FINAL MIDDLE DOT -1428;AL # CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE -1429;AL # CANADIAN SYLLABICS FINAL PLUS -142A;AL # CANADIAN SYLLABICS FINAL DOWN TACK -142B;AL # CANADIAN SYLLABICS EN -142C;AL # CANADIAN SYLLABICS IN -142D;AL # CANADIAN SYLLABICS ON -142E;AL # CANADIAN SYLLABICS AN -142F;AL # CANADIAN SYLLABICS PE -1430;AL # CANADIAN SYLLABICS PAAI -1431;AL # CANADIAN SYLLABICS PI -1432;AL # CANADIAN SYLLABICS PII -1433;AL # CANADIAN SYLLABICS PO -1434;AL # CANADIAN SYLLABICS POO -1435;AL # CANADIAN SYLLABICS Y-CREE POO -1436;AL # CANADIAN SYLLABICS CARRIER HEE -1437;AL # CANADIAN SYLLABICS CARRIER HI -1438;AL # CANADIAN SYLLABICS PA -1439;AL # CANADIAN SYLLABICS PAA -143A;AL # CANADIAN SYLLABICS PWE -143B;AL # CANADIAN SYLLABICS WEST-CREE PWE -143C;AL # CANADIAN SYLLABICS PWI -143D;AL # CANADIAN SYLLABICS WEST-CREE PWI -143E;AL # CANADIAN SYLLABICS PWII -143F;AL # CANADIAN SYLLABICS WEST-CREE PWII -1440;AL # CANADIAN SYLLABICS PWO -1441;AL # CANADIAN SYLLABICS WEST-CREE PWO -1442;AL # CANADIAN SYLLABICS PWOO -1443;AL # CANADIAN SYLLABICS WEST-CREE PWOO -1444;AL # CANADIAN SYLLABICS PWA -1445;AL # CANADIAN SYLLABICS WEST-CREE PWA -1446;AL # CANADIAN SYLLABICS PWAA -1447;AL # CANADIAN SYLLABICS WEST-CREE PWAA -1448;AL # CANADIAN SYLLABICS Y-CREE PWAA -1449;AL # CANADIAN SYLLABICS P -144A;AL # CANADIAN SYLLABICS WEST-CREE P -144B;AL # CANADIAN SYLLABICS CARRIER H -144C;AL # CANADIAN SYLLABICS TE -144D;AL # CANADIAN SYLLABICS TAAI -144E;AL # CANADIAN SYLLABICS TI -144F;AL # CANADIAN SYLLABICS TII -1450;AL # CANADIAN SYLLABICS TO -1451;AL # CANADIAN SYLLABICS TOO -1452;AL # CANADIAN SYLLABICS Y-CREE TOO -1453;AL # CANADIAN SYLLABICS CARRIER DEE -1454;AL # CANADIAN SYLLABICS CARRIER DI -1455;AL # CANADIAN SYLLABICS TA -1456;AL # CANADIAN SYLLABICS TAA -1457;AL # CANADIAN SYLLABICS TWE -1458;AL # CANADIAN SYLLABICS WEST-CREE TWE -1459;AL # CANADIAN SYLLABICS TWI -145A;AL # CANADIAN SYLLABICS WEST-CREE TWI -145B;AL # CANADIAN SYLLABICS TWII -145C;AL # CANADIAN SYLLABICS WEST-CREE TWII -145D;AL # CANADIAN SYLLABICS TWO -145E;AL # CANADIAN SYLLABICS WEST-CREE TWO -145F;AL # CANADIAN SYLLABICS TWOO -1460;AL # CANADIAN SYLLABICS WEST-CREE TWOO -1461;AL # CANADIAN SYLLABICS TWA -1462;AL # CANADIAN SYLLABICS WEST-CREE TWA -1463;AL # CANADIAN SYLLABICS TWAA -1464;AL # CANADIAN SYLLABICS WEST-CREE TWAA -1465;AL # CANADIAN SYLLABICS NASKAPI TWAA -1466;AL # CANADIAN SYLLABICS T -1467;AL # CANADIAN SYLLABICS TTE -1468;AL # CANADIAN SYLLABICS TTI -1469;AL # CANADIAN SYLLABICS TTO -146A;AL # CANADIAN SYLLABICS TTA -146B;AL # CANADIAN SYLLABICS KE -146C;AL # CANADIAN SYLLABICS KAAI -146D;AL # CANADIAN SYLLABICS KI -146E;AL # CANADIAN SYLLABICS KII -146F;AL # CANADIAN SYLLABICS KO -1470;AL # CANADIAN SYLLABICS KOO -1471;AL # CANADIAN SYLLABICS Y-CREE KOO -1472;AL # CANADIAN SYLLABICS KA -1473;AL # CANADIAN SYLLABICS KAA -1474;AL # CANADIAN SYLLABICS KWE -1475;AL # CANADIAN SYLLABICS WEST-CREE KWE -1476;AL # CANADIAN SYLLABICS KWI -1477;AL # CANADIAN SYLLABICS WEST-CREE KWI -1478;AL # CANADIAN SYLLABICS KWII -1479;AL # CANADIAN SYLLABICS WEST-CREE KWII -147A;AL # CANADIAN SYLLABICS KWO -147B;AL # CANADIAN SYLLABICS WEST-CREE KWO -147C;AL # CANADIAN SYLLABICS KWOO -147D;AL # CANADIAN SYLLABICS WEST-CREE KWOO -147E;AL # CANADIAN SYLLABICS KWA -147F;AL # CANADIAN SYLLABICS WEST-CREE KWA -1480;AL # CANADIAN SYLLABICS KWAA -1481;AL # CANADIAN SYLLABICS WEST-CREE KWAA -1482;AL # CANADIAN SYLLABICS NASKAPI KWAA -1483;AL # CANADIAN SYLLABICS K -1484;AL # CANADIAN SYLLABICS KW -1485;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KEH -1486;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KIH -1487;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KOH -1488;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KAH -1489;AL # CANADIAN SYLLABICS CE -148A;AL # CANADIAN SYLLABICS CAAI -148B;AL # CANADIAN SYLLABICS CI -148C;AL # CANADIAN SYLLABICS CII -148D;AL # CANADIAN SYLLABICS CO -148E;AL # CANADIAN SYLLABICS COO -148F;AL # CANADIAN SYLLABICS Y-CREE COO -1490;AL # CANADIAN SYLLABICS CA -1491;AL # CANADIAN SYLLABICS CAA -1492;AL # CANADIAN SYLLABICS CWE -1493;AL # CANADIAN SYLLABICS WEST-CREE CWE -1494;AL # CANADIAN SYLLABICS CWI -1495;AL # CANADIAN SYLLABICS WEST-CREE CWI -1496;AL # CANADIAN SYLLABICS CWII -1497;AL # CANADIAN SYLLABICS WEST-CREE CWII -1498;AL # CANADIAN SYLLABICS CWO -1499;AL # CANADIAN SYLLABICS WEST-CREE CWO -149A;AL # CANADIAN SYLLABICS CWOO -149B;AL # CANADIAN SYLLABICS WEST-CREE CWOO -149C;AL # CANADIAN SYLLABICS CWA -149D;AL # CANADIAN SYLLABICS WEST-CREE CWA -149E;AL # CANADIAN SYLLABICS CWAA -149F;AL # CANADIAN SYLLABICS WEST-CREE CWAA -14A0;AL # CANADIAN SYLLABICS NASKAPI CWAA -14A1;AL # CANADIAN SYLLABICS C -14A2;AL # CANADIAN SYLLABICS SAYISI TH -14A3;AL # CANADIAN SYLLABICS ME -14A4;AL # CANADIAN SYLLABICS MAAI -14A5;AL # CANADIAN SYLLABICS MI -14A6;AL # CANADIAN SYLLABICS MII -14A7;AL # CANADIAN SYLLABICS MO -14A8;AL # CANADIAN SYLLABICS MOO -14A9;AL # CANADIAN SYLLABICS Y-CREE MOO -14AA;AL # CANADIAN SYLLABICS MA -14AB;AL # CANADIAN SYLLABICS MAA -14AC;AL # CANADIAN SYLLABICS MWE -14AD;AL # CANADIAN SYLLABICS WEST-CREE MWE -14AE;AL # CANADIAN SYLLABICS MWI -14AF;AL # CANADIAN SYLLABICS WEST-CREE MWI -14B0;AL # CANADIAN SYLLABICS MWII -14B1;AL # CANADIAN SYLLABICS WEST-CREE MWII -14B2;AL # CANADIAN SYLLABICS MWO -14B3;AL # CANADIAN SYLLABICS WEST-CREE MWO -14B4;AL # CANADIAN SYLLABICS MWOO -14B5;AL # CANADIAN SYLLABICS WEST-CREE MWOO -14B6;AL # CANADIAN SYLLABICS MWA -14B7;AL # CANADIAN SYLLABICS WEST-CREE MWA -14B8;AL # CANADIAN SYLLABICS MWAA -14B9;AL # CANADIAN SYLLABICS WEST-CREE MWAA -14BA;AL # CANADIAN SYLLABICS NASKAPI MWAA -14BB;AL # CANADIAN SYLLABICS M -14BC;AL # CANADIAN SYLLABICS WEST-CREE M -14BD;AL # CANADIAN SYLLABICS MH -14BE;AL # CANADIAN SYLLABICS ATHAPASCAN M -14BF;AL # CANADIAN SYLLABICS SAYISI M -14C0;AL # CANADIAN SYLLABICS NE -14C1;AL # CANADIAN SYLLABICS NAAI -14C2;AL # CANADIAN SYLLABICS NI -14C3;AL # CANADIAN SYLLABICS NII -14C4;AL # CANADIAN SYLLABICS NO -14C5;AL # CANADIAN SYLLABICS NOO -14C6;AL # CANADIAN SYLLABICS Y-CREE NOO -14C7;AL # CANADIAN SYLLABICS NA -14C8;AL # CANADIAN SYLLABICS NAA -14C9;AL # CANADIAN SYLLABICS NWE -14CA;AL # CANADIAN SYLLABICS WEST-CREE NWE -14CB;AL # CANADIAN SYLLABICS NWA -14CC;AL # CANADIAN SYLLABICS WEST-CREE NWA -14CD;AL # CANADIAN SYLLABICS NWAA -14CE;AL # CANADIAN SYLLABICS WEST-CREE NWAA -14CF;AL # CANADIAN SYLLABICS NASKAPI NWAA -14D0;AL # CANADIAN SYLLABICS N -14D1;AL # CANADIAN SYLLABICS CARRIER NG -14D2;AL # CANADIAN SYLLABICS NH -14D3;AL # CANADIAN SYLLABICS LE -14D4;AL # CANADIAN SYLLABICS LAAI -14D5;AL # CANADIAN SYLLABICS LI -14D6;AL # CANADIAN SYLLABICS LII -14D7;AL # CANADIAN SYLLABICS LO -14D8;AL # CANADIAN SYLLABICS LOO -14D9;AL # CANADIAN SYLLABICS Y-CREE LOO -14DA;AL # CANADIAN SYLLABICS LA -14DB;AL # CANADIAN SYLLABICS LAA -14DC;AL # CANADIAN SYLLABICS LWE -14DD;AL # CANADIAN SYLLABICS WEST-CREE LWE -14DE;AL # CANADIAN SYLLABICS LWI -14DF;AL # CANADIAN SYLLABICS WEST-CREE LWI -14E0;AL # CANADIAN SYLLABICS LWII -14E1;AL # CANADIAN SYLLABICS WEST-CREE LWII -14E2;AL # CANADIAN SYLLABICS LWO -14E3;AL # CANADIAN SYLLABICS WEST-CREE LWO -14E4;AL # CANADIAN SYLLABICS LWOO -14E5;AL # CANADIAN SYLLABICS WEST-CREE LWOO -14E6;AL # CANADIAN SYLLABICS LWA -14E7;AL # CANADIAN SYLLABICS WEST-CREE LWA -14E8;AL # CANADIAN SYLLABICS LWAA -14E9;AL # CANADIAN SYLLABICS WEST-CREE LWAA -14EA;AL # CANADIAN SYLLABICS L -14EB;AL # CANADIAN SYLLABICS WEST-CREE L -14EC;AL # CANADIAN SYLLABICS MEDIAL L -14ED;AL # CANADIAN SYLLABICS SE -14EE;AL # CANADIAN SYLLABICS SAAI -14EF;AL # CANADIAN SYLLABICS SI -14F0;AL # CANADIAN SYLLABICS SII -14F1;AL # CANADIAN SYLLABICS SO -14F2;AL # CANADIAN SYLLABICS SOO -14F3;AL # CANADIAN SYLLABICS Y-CREE SOO -14F4;AL # CANADIAN SYLLABICS SA -14F5;AL # CANADIAN SYLLABICS SAA -14F6;AL # CANADIAN SYLLABICS SWE -14F7;AL # CANADIAN SYLLABICS WEST-CREE SWE -14F8;AL # CANADIAN SYLLABICS SWI -14F9;AL # CANADIAN SYLLABICS WEST-CREE SWI -14FA;AL # CANADIAN SYLLABICS SWII -14FB;AL # CANADIAN SYLLABICS WEST-CREE SWII -14FC;AL # CANADIAN SYLLABICS SWO -14FD;AL # CANADIAN SYLLABICS WEST-CREE SWO -14FE;AL # CANADIAN SYLLABICS SWOO -14FF;AL # CANADIAN SYLLABICS WEST-CREE SWOO -1500;AL # CANADIAN SYLLABICS SWA -1501;AL # CANADIAN SYLLABICS WEST-CREE SWA -1502;AL # CANADIAN SYLLABICS SWAA -1503;AL # CANADIAN SYLLABICS WEST-CREE SWAA -1504;AL # CANADIAN SYLLABICS NASKAPI SWAA -1505;AL # CANADIAN SYLLABICS S -1506;AL # CANADIAN SYLLABICS ATHAPASCAN S -1507;AL # CANADIAN SYLLABICS SW -1508;AL # CANADIAN SYLLABICS BLACKFOOT S -1509;AL # CANADIAN SYLLABICS MOOSE-CREE SK -150A;AL # CANADIAN SYLLABICS NASKAPI SKW -150B;AL # CANADIAN SYLLABICS NASKAPI S-W -150C;AL # CANADIAN SYLLABICS NASKAPI SPWA -150D;AL # CANADIAN SYLLABICS NASKAPI STWA -150E;AL # CANADIAN SYLLABICS NASKAPI SKWA -150F;AL # CANADIAN SYLLABICS NASKAPI SCWA -1510;AL # CANADIAN SYLLABICS SHE -1511;AL # CANADIAN SYLLABICS SHI -1512;AL # CANADIAN SYLLABICS SHII -1513;AL # CANADIAN SYLLABICS SHO -1514;AL # CANADIAN SYLLABICS SHOO -1515;AL # CANADIAN SYLLABICS SHA -1516;AL # CANADIAN SYLLABICS SHAA -1517;AL # CANADIAN SYLLABICS SHWE -1518;AL # CANADIAN SYLLABICS WEST-CREE SHWE -1519;AL # CANADIAN SYLLABICS SHWI -151A;AL # CANADIAN SYLLABICS WEST-CREE SHWI -151B;AL # CANADIAN SYLLABICS SHWII -151C;AL # CANADIAN SYLLABICS WEST-CREE SHWII -151D;AL # CANADIAN SYLLABICS SHWO -151E;AL # CANADIAN SYLLABICS WEST-CREE SHWO -151F;AL # CANADIAN SYLLABICS SHWOO -1520;AL # CANADIAN SYLLABICS WEST-CREE SHWOO -1521;AL # CANADIAN SYLLABICS SHWA -1522;AL # CANADIAN SYLLABICS WEST-CREE SHWA -1523;AL # CANADIAN SYLLABICS SHWAA -1524;AL # CANADIAN SYLLABICS WEST-CREE SHWAA -1525;AL # CANADIAN SYLLABICS SH -1526;AL # CANADIAN SYLLABICS YE -1527;AL # CANADIAN SYLLABICS YAAI -1528;AL # CANADIAN SYLLABICS YI -1529;AL # CANADIAN SYLLABICS YII -152A;AL # CANADIAN SYLLABICS YO -152B;AL # CANADIAN SYLLABICS YOO -152C;AL # CANADIAN SYLLABICS Y-CREE YOO -152D;AL # CANADIAN SYLLABICS YA -152E;AL # CANADIAN SYLLABICS YAA -152F;AL # CANADIAN SYLLABICS YWE -1530;AL # CANADIAN SYLLABICS WEST-CREE YWE -1531;AL # CANADIAN SYLLABICS YWI -1532;AL # CANADIAN SYLLABICS WEST-CREE YWI -1533;AL # CANADIAN SYLLABICS YWII -1534;AL # CANADIAN SYLLABICS WEST-CREE YWII -1535;AL # CANADIAN SYLLABICS YWO -1536;AL # CANADIAN SYLLABICS WEST-CREE YWO -1537;AL # CANADIAN SYLLABICS YWOO -1538;AL # CANADIAN SYLLABICS WEST-CREE YWOO -1539;AL # CANADIAN SYLLABICS YWA -153A;AL # CANADIAN SYLLABICS WEST-CREE YWA -153B;AL # CANADIAN SYLLABICS YWAA -153C;AL # CANADIAN SYLLABICS WEST-CREE YWAA -153D;AL # CANADIAN SYLLABICS NASKAPI YWAA -153E;AL # CANADIAN SYLLABICS Y -153F;AL # CANADIAN SYLLABICS BIBLE-CREE Y -1540;AL # CANADIAN SYLLABICS WEST-CREE Y -1541;AL # CANADIAN SYLLABICS SAYISI YI -1542;AL # CANADIAN SYLLABICS RE -1543;AL # CANADIAN SYLLABICS R-CREE RE -1544;AL # CANADIAN SYLLABICS WEST-CREE LE -1545;AL # CANADIAN SYLLABICS RAAI -1546;AL # CANADIAN SYLLABICS RI -1547;AL # CANADIAN SYLLABICS RII -1548;AL # CANADIAN SYLLABICS RO -1549;AL # CANADIAN SYLLABICS ROO -154A;AL # CANADIAN SYLLABICS WEST-CREE LO -154B;AL # CANADIAN SYLLABICS RA -154C;AL # CANADIAN SYLLABICS RAA -154D;AL # CANADIAN SYLLABICS WEST-CREE LA -154E;AL # CANADIAN SYLLABICS RWAA -154F;AL # CANADIAN SYLLABICS WEST-CREE RWAA -1550;AL # CANADIAN SYLLABICS R -1551;AL # CANADIAN SYLLABICS WEST-CREE R -1552;AL # CANADIAN SYLLABICS MEDIAL R -1553;AL # CANADIAN SYLLABICS FE -1554;AL # CANADIAN SYLLABICS FAAI -1555;AL # CANADIAN SYLLABICS FI -1556;AL # CANADIAN SYLLABICS FII -1557;AL # CANADIAN SYLLABICS FO -1558;AL # CANADIAN SYLLABICS FOO -1559;AL # CANADIAN SYLLABICS FA -155A;AL # CANADIAN SYLLABICS FAA -155B;AL # CANADIAN SYLLABICS FWAA -155C;AL # CANADIAN SYLLABICS WEST-CREE FWAA -155D;AL # CANADIAN SYLLABICS F -155E;AL # CANADIAN SYLLABICS THE -155F;AL # CANADIAN SYLLABICS N-CREE THE -1560;AL # CANADIAN SYLLABICS THI -1561;AL # CANADIAN SYLLABICS N-CREE THI -1562;AL # CANADIAN SYLLABICS THII -1563;AL # CANADIAN SYLLABICS N-CREE THII -1564;AL # CANADIAN SYLLABICS THO -1565;AL # CANADIAN SYLLABICS THOO -1566;AL # CANADIAN SYLLABICS THA -1567;AL # CANADIAN SYLLABICS THAA -1568;AL # CANADIAN SYLLABICS THWAA -1569;AL # CANADIAN SYLLABICS WEST-CREE THWAA -156A;AL # CANADIAN SYLLABICS TH -156B;AL # CANADIAN SYLLABICS TTHE -156C;AL # CANADIAN SYLLABICS TTHI -156D;AL # CANADIAN SYLLABICS TTHO -156E;AL # CANADIAN SYLLABICS TTHA -156F;AL # CANADIAN SYLLABICS TTH -1570;AL # CANADIAN SYLLABICS TYE -1571;AL # CANADIAN SYLLABICS TYI -1572;AL # CANADIAN SYLLABICS TYO -1573;AL # CANADIAN SYLLABICS TYA -1574;AL # CANADIAN SYLLABICS NUNAVIK HE -1575;AL # CANADIAN SYLLABICS NUNAVIK HI -1576;AL # CANADIAN SYLLABICS NUNAVIK HII -1577;AL # CANADIAN SYLLABICS NUNAVIK HO -1578;AL # CANADIAN SYLLABICS NUNAVIK HOO -1579;AL # CANADIAN SYLLABICS NUNAVIK HA -157A;AL # CANADIAN SYLLABICS NUNAVIK HAA -157B;AL # CANADIAN SYLLABICS NUNAVIK H -157C;AL # CANADIAN SYLLABICS NUNAVUT H -157D;AL # CANADIAN SYLLABICS HK -157E;AL # CANADIAN SYLLABICS QAAI -157F;AL # CANADIAN SYLLABICS QI -1580;AL # CANADIAN SYLLABICS QII -1581;AL # CANADIAN SYLLABICS QO -1582;AL # CANADIAN SYLLABICS QOO -1583;AL # CANADIAN SYLLABICS QA -1584;AL # CANADIAN SYLLABICS QAA -1585;AL # CANADIAN SYLLABICS Q -1586;AL # CANADIAN SYLLABICS TLHE -1587;AL # CANADIAN SYLLABICS TLHI -1588;AL # CANADIAN SYLLABICS TLHO -1589;AL # CANADIAN SYLLABICS TLHA -158A;AL # CANADIAN SYLLABICS WEST-CREE RE -158B;AL # CANADIAN SYLLABICS WEST-CREE RI -158C;AL # CANADIAN SYLLABICS WEST-CREE RO -158D;AL # CANADIAN SYLLABICS WEST-CREE RA -158E;AL # CANADIAN SYLLABICS NGAAI -158F;AL # CANADIAN SYLLABICS NGI -1590;AL # CANADIAN SYLLABICS NGII -1591;AL # CANADIAN SYLLABICS NGO -1592;AL # CANADIAN SYLLABICS NGOO -1593;AL # CANADIAN SYLLABICS NGA -1594;AL # CANADIAN SYLLABICS NGAA -1595;AL # CANADIAN SYLLABICS NG -1596;AL # CANADIAN SYLLABICS NNG -1597;AL # CANADIAN SYLLABICS SAYISI SHE -1598;AL # CANADIAN SYLLABICS SAYISI SHI -1599;AL # CANADIAN SYLLABICS SAYISI SHO -159A;AL # CANADIAN SYLLABICS SAYISI SHA -159B;AL # CANADIAN SYLLABICS WOODS-CREE THE -159C;AL # CANADIAN SYLLABICS WOODS-CREE THI -159D;AL # CANADIAN SYLLABICS WOODS-CREE THO -159E;AL # CANADIAN SYLLABICS WOODS-CREE THA -159F;AL # CANADIAN SYLLABICS WOODS-CREE TH -15A0;AL # CANADIAN SYLLABICS LHI -15A1;AL # CANADIAN SYLLABICS LHII -15A2;AL # CANADIAN SYLLABICS LHO -15A3;AL # CANADIAN SYLLABICS LHOO -15A4;AL # CANADIAN SYLLABICS LHA -15A5;AL # CANADIAN SYLLABICS LHAA -15A6;AL # CANADIAN SYLLABICS LH -15A7;AL # CANADIAN SYLLABICS TH-CREE THE -15A8;AL # CANADIAN SYLLABICS TH-CREE THI -15A9;AL # CANADIAN SYLLABICS TH-CREE THII -15AA;AL # CANADIAN SYLLABICS TH-CREE THO -15AB;AL # CANADIAN SYLLABICS TH-CREE THOO -15AC;AL # CANADIAN SYLLABICS TH-CREE THA -15AD;AL # CANADIAN SYLLABICS TH-CREE THAA -15AE;AL # CANADIAN SYLLABICS TH-CREE TH -15AF;AL # CANADIAN SYLLABICS AIVILIK B -15B0;AL # CANADIAN SYLLABICS BLACKFOOT E -15B1;AL # CANADIAN SYLLABICS BLACKFOOT I -15B2;AL # CANADIAN SYLLABICS BLACKFOOT O -15B3;AL # CANADIAN SYLLABICS BLACKFOOT A -15B4;AL # CANADIAN SYLLABICS BLACKFOOT WE -15B5;AL # CANADIAN SYLLABICS BLACKFOOT WI -15B6;AL # CANADIAN SYLLABICS BLACKFOOT WO -15B7;AL # CANADIAN SYLLABICS BLACKFOOT WA -15B8;AL # CANADIAN SYLLABICS BLACKFOOT NE -15B9;AL # CANADIAN SYLLABICS BLACKFOOT NI -15BA;AL # CANADIAN SYLLABICS BLACKFOOT NO -15BB;AL # CANADIAN SYLLABICS BLACKFOOT NA -15BC;AL # CANADIAN SYLLABICS BLACKFOOT KE -15BD;AL # CANADIAN SYLLABICS BLACKFOOT KI -15BE;AL # CANADIAN SYLLABICS BLACKFOOT KO -15BF;AL # CANADIAN SYLLABICS BLACKFOOT KA -15C0;AL # CANADIAN SYLLABICS SAYISI HE -15C1;AL # CANADIAN SYLLABICS SAYISI HI -15C2;AL # CANADIAN SYLLABICS SAYISI HO -15C3;AL # CANADIAN SYLLABICS SAYISI HA -15C4;AL # CANADIAN SYLLABICS CARRIER GHU -15C5;AL # CANADIAN SYLLABICS CARRIER GHO -15C6;AL # CANADIAN SYLLABICS CARRIER GHE -15C7;AL # CANADIAN SYLLABICS CARRIER GHEE -15C8;AL # CANADIAN SYLLABICS CARRIER GHI -15C9;AL # CANADIAN SYLLABICS CARRIER GHA -15CA;AL # CANADIAN SYLLABICS CARRIER RU -15CB;AL # CANADIAN SYLLABICS CARRIER RO -15CC;AL # CANADIAN SYLLABICS CARRIER RE -15CD;AL # CANADIAN SYLLABICS CARRIER REE -15CE;AL # CANADIAN SYLLABICS CARRIER RI -15CF;AL # CANADIAN SYLLABICS CARRIER RA -15D0;AL # CANADIAN SYLLABICS CARRIER WU -15D1;AL # CANADIAN SYLLABICS CARRIER WO -15D2;AL # CANADIAN SYLLABICS CARRIER WE -15D3;AL # CANADIAN SYLLABICS CARRIER WEE -15D4;AL # CANADIAN SYLLABICS CARRIER WI -15D5;AL # CANADIAN SYLLABICS CARRIER WA -15D6;AL # CANADIAN SYLLABICS CARRIER HWU -15D7;AL # CANADIAN SYLLABICS CARRIER HWO -15D8;AL # CANADIAN SYLLABICS CARRIER HWE -15D9;AL # CANADIAN SYLLABICS CARRIER HWEE -15DA;AL # CANADIAN SYLLABICS CARRIER HWI -15DB;AL # CANADIAN SYLLABICS CARRIER HWA -15DC;AL # CANADIAN SYLLABICS CARRIER THU -15DD;AL # CANADIAN SYLLABICS CARRIER THO -15DE;AL # CANADIAN SYLLABICS CARRIER THE -15DF;AL # CANADIAN SYLLABICS CARRIER THEE -15E0;AL # CANADIAN SYLLABICS CARRIER THI -15E1;AL # CANADIAN SYLLABICS CARRIER THA -15E2;AL # CANADIAN SYLLABICS CARRIER TTU -15E3;AL # CANADIAN SYLLABICS CARRIER TTO -15E4;AL # CANADIAN SYLLABICS CARRIER TTE -15E5;AL # CANADIAN SYLLABICS CARRIER TTEE -15E6;AL # CANADIAN SYLLABICS CARRIER TTI -15E7;AL # CANADIAN SYLLABICS CARRIER TTA -15E8;AL # CANADIAN SYLLABICS CARRIER PU -15E9;AL # CANADIAN SYLLABICS CARRIER PO -15EA;AL # CANADIAN SYLLABICS CARRIER PE -15EB;AL # CANADIAN SYLLABICS CARRIER PEE -15EC;AL # CANADIAN SYLLABICS CARRIER PI -15ED;AL # CANADIAN SYLLABICS CARRIER PA -15EE;AL # CANADIAN SYLLABICS CARRIER P -15EF;AL # CANADIAN SYLLABICS CARRIER GU -15F0;AL # CANADIAN SYLLABICS CARRIER GO -15F1;AL # CANADIAN SYLLABICS CARRIER GE -15F2;AL # CANADIAN SYLLABICS CARRIER GEE -15F3;AL # CANADIAN SYLLABICS CARRIER GI -15F4;AL # CANADIAN SYLLABICS CARRIER GA -15F5;AL # CANADIAN SYLLABICS CARRIER KHU -15F6;AL # CANADIAN SYLLABICS CARRIER KHO -15F7;AL # CANADIAN SYLLABICS CARRIER KHE -15F8;AL # CANADIAN SYLLABICS CARRIER KHEE -15F9;AL # CANADIAN SYLLABICS CARRIER KHI -15FA;AL # CANADIAN SYLLABICS CARRIER KHA -15FB;AL # CANADIAN SYLLABICS CARRIER KKU -15FC;AL # CANADIAN SYLLABICS CARRIER KKO -15FD;AL # CANADIAN SYLLABICS CARRIER KKE -15FE;AL # CANADIAN SYLLABICS CARRIER KKEE -15FF;AL # CANADIAN SYLLABICS CARRIER KKI -1600;AL # CANADIAN SYLLABICS CARRIER KKA -1601;AL # CANADIAN SYLLABICS CARRIER KK -1602;AL # CANADIAN SYLLABICS CARRIER NU -1603;AL # CANADIAN SYLLABICS CARRIER NO -1604;AL # CANADIAN SYLLABICS CARRIER NE -1605;AL # CANADIAN SYLLABICS CARRIER NEE -1606;AL # CANADIAN SYLLABICS CARRIER NI -1607;AL # CANADIAN SYLLABICS CARRIER NA -1608;AL # CANADIAN SYLLABICS CARRIER MU -1609;AL # CANADIAN SYLLABICS CARRIER MO -160A;AL # CANADIAN SYLLABICS CARRIER ME -160B;AL # CANADIAN SYLLABICS CARRIER MEE -160C;AL # CANADIAN SYLLABICS CARRIER MI -160D;AL # CANADIAN SYLLABICS CARRIER MA -160E;AL # CANADIAN SYLLABICS CARRIER YU -160F;AL # CANADIAN SYLLABICS CARRIER YO -1610;AL # CANADIAN SYLLABICS CARRIER YE -1611;AL # CANADIAN SYLLABICS CARRIER YEE -1612;AL # CANADIAN SYLLABICS CARRIER YI -1613;AL # CANADIAN SYLLABICS CARRIER YA -1614;AL # CANADIAN SYLLABICS CARRIER JU -1615;AL # CANADIAN SYLLABICS SAYISI JU -1616;AL # CANADIAN SYLLABICS CARRIER JO -1617;AL # CANADIAN SYLLABICS CARRIER JE -1618;AL # CANADIAN SYLLABICS CARRIER JEE -1619;AL # CANADIAN SYLLABICS CARRIER JI -161A;AL # CANADIAN SYLLABICS SAYISI JI -161B;AL # CANADIAN SYLLABICS CARRIER JA -161C;AL # CANADIAN SYLLABICS CARRIER JJU -161D;AL # CANADIAN SYLLABICS CARRIER JJO -161E;AL # CANADIAN SYLLABICS CARRIER JJE -161F;AL # CANADIAN SYLLABICS CARRIER JJEE -1620;AL # CANADIAN SYLLABICS CARRIER JJI -1621;AL # CANADIAN SYLLABICS CARRIER JJA -1622;AL # CANADIAN SYLLABICS CARRIER LU -1623;AL # CANADIAN SYLLABICS CARRIER LO -1624;AL # CANADIAN SYLLABICS CARRIER LE -1625;AL # CANADIAN SYLLABICS CARRIER LEE -1626;AL # CANADIAN SYLLABICS CARRIER LI -1627;AL # CANADIAN SYLLABICS CARRIER LA -1628;AL # CANADIAN SYLLABICS CARRIER DLU -1629;AL # CANADIAN SYLLABICS CARRIER DLO -162A;AL # CANADIAN SYLLABICS CARRIER DLE -162B;AL # CANADIAN SYLLABICS CARRIER DLEE -162C;AL # CANADIAN SYLLABICS CARRIER DLI -162D;AL # CANADIAN SYLLABICS CARRIER DLA -162E;AL # CANADIAN SYLLABICS CARRIER LHU -162F;AL # CANADIAN SYLLABICS CARRIER LHO -1630;AL # CANADIAN SYLLABICS CARRIER LHE -1631;AL # CANADIAN SYLLABICS CARRIER LHEE -1632;AL # CANADIAN SYLLABICS CARRIER LHI -1633;AL # CANADIAN SYLLABICS CARRIER LHA -1634;AL # CANADIAN SYLLABICS CARRIER TLHU -1635;AL # CANADIAN SYLLABICS CARRIER TLHO -1636;AL # CANADIAN SYLLABICS CARRIER TLHE -1637;AL # CANADIAN SYLLABICS CARRIER TLHEE -1638;AL # CANADIAN SYLLABICS CARRIER TLHI -1639;AL # CANADIAN SYLLABICS CARRIER TLHA -163A;AL # CANADIAN SYLLABICS CARRIER TLU -163B;AL # CANADIAN SYLLABICS CARRIER TLO -163C;AL # CANADIAN SYLLABICS CARRIER TLE -163D;AL # CANADIAN SYLLABICS CARRIER TLEE -163E;AL # CANADIAN SYLLABICS CARRIER TLI -163F;AL # CANADIAN SYLLABICS CARRIER TLA -1640;AL # CANADIAN SYLLABICS CARRIER ZU -1641;AL # CANADIAN SYLLABICS CARRIER ZO -1642;AL # CANADIAN SYLLABICS CARRIER ZE -1643;AL # CANADIAN SYLLABICS CARRIER ZEE -1644;AL # CANADIAN SYLLABICS CARRIER ZI -1645;AL # CANADIAN SYLLABICS CARRIER ZA -1646;AL # CANADIAN SYLLABICS CARRIER Z -1647;AL # CANADIAN SYLLABICS CARRIER INITIAL Z -1648;AL # CANADIAN SYLLABICS CARRIER DZU -1649;AL # CANADIAN SYLLABICS CARRIER DZO -164A;AL # CANADIAN SYLLABICS CARRIER DZE -164B;AL # CANADIAN SYLLABICS CARRIER DZEE -164C;AL # CANADIAN SYLLABICS CARRIER DZI -164D;AL # CANADIAN SYLLABICS CARRIER DZA -164E;AL # CANADIAN SYLLABICS CARRIER SU -164F;AL # CANADIAN SYLLABICS CARRIER SO -1650;AL # CANADIAN SYLLABICS CARRIER SE -1651;AL # CANADIAN SYLLABICS CARRIER SEE -1652;AL # CANADIAN SYLLABICS CARRIER SI -1653;AL # CANADIAN SYLLABICS CARRIER SA -1654;AL # CANADIAN SYLLABICS CARRIER SHU -1655;AL # CANADIAN SYLLABICS CARRIER SHO -1656;AL # CANADIAN SYLLABICS CARRIER SHE -1657;AL # CANADIAN SYLLABICS CARRIER SHEE -1658;AL # CANADIAN SYLLABICS CARRIER SHI -1659;AL # CANADIAN SYLLABICS CARRIER SHA -165A;AL # CANADIAN SYLLABICS CARRIER SH -165B;AL # CANADIAN SYLLABICS CARRIER TSU -165C;AL # CANADIAN SYLLABICS CARRIER TSO -165D;AL # CANADIAN SYLLABICS CARRIER TSE -165E;AL # CANADIAN SYLLABICS CARRIER TSEE -165F;AL # CANADIAN SYLLABICS CARRIER TSI -1660;AL # CANADIAN SYLLABICS CARRIER TSA -1661;AL # CANADIAN SYLLABICS CARRIER CHU -1662;AL # CANADIAN SYLLABICS CARRIER CHO -1663;AL # CANADIAN SYLLABICS CARRIER CHE -1664;AL # CANADIAN SYLLABICS CARRIER CHEE -1665;AL # CANADIAN SYLLABICS CARRIER CHI -1666;AL # CANADIAN SYLLABICS CARRIER CHA -1667;AL # CANADIAN SYLLABICS CARRIER TTSU -1668;AL # CANADIAN SYLLABICS CARRIER TTSO -1669;AL # CANADIAN SYLLABICS CARRIER TTSE -166A;AL # CANADIAN SYLLABICS CARRIER TTSEE -166B;AL # CANADIAN SYLLABICS CARRIER TTSI -166C;AL # CANADIAN SYLLABICS CARRIER TTSA -166D;AL # CANADIAN SYLLABICS CHI SIGN -166E;AL # CANADIAN SYLLABICS FULL STOP -166F;AL # CANADIAN SYLLABICS QAI -1670;AL # CANADIAN SYLLABICS NGAI -1671;AL # CANADIAN SYLLABICS NNGI -1672;AL # CANADIAN SYLLABICS NNGII -1673;AL # CANADIAN SYLLABICS NNGO -1674;AL # CANADIAN SYLLABICS NNGOO -1675;AL # CANADIAN SYLLABICS NNGA -1676;AL # CANADIAN SYLLABICS NNGAA -1680;BA # OGHAM SPACE MARK -1681;AL # OGHAM LETTER BEITH -1682;AL # OGHAM LETTER LUIS -1683;AL # OGHAM LETTER FEARN -1684;AL # OGHAM LETTER SAIL -1685;AL # OGHAM LETTER NION -1686;AL # OGHAM LETTER UATH -1687;AL # OGHAM LETTER DAIR -1688;AL # OGHAM LETTER TINNE -1689;AL # OGHAM LETTER COLL -168A;AL # OGHAM LETTER CEIRT -168B;AL # OGHAM LETTER MUIN -168C;AL # OGHAM LETTER GORT -168D;AL # OGHAM LETTER NGEADAL -168E;AL # OGHAM LETTER STRAIF -168F;AL # OGHAM LETTER RUIS -1690;AL # OGHAM LETTER AILM -1691;AL # OGHAM LETTER ONN -1692;AL # OGHAM LETTER UR -1693;AL # OGHAM LETTER EADHADH -1694;AL # OGHAM LETTER IODHADH -1695;AL # OGHAM LETTER EABHADH -1696;AL # OGHAM LETTER OR -1697;AL # OGHAM LETTER UILLEANN -1698;AL # OGHAM LETTER IFIN -1699;AL # OGHAM LETTER EAMHANCHOLL -169A;AL # OGHAM LETTER PEITH -169B;OP # OGHAM FEATHER MARK -169C;CL # OGHAM REVERSED FEATHER MARK -16A0;AL # RUNIC LETTER FEHU FEOH FE F -16A1;AL # RUNIC LETTER V -16A2;AL # RUNIC LETTER URUZ UR U -16A3;AL # RUNIC LETTER YR -16A4;AL # RUNIC LETTER Y -16A5;AL # RUNIC LETTER W -16A6;AL # RUNIC LETTER THURISAZ THURS THORN -16A7;AL # RUNIC LETTER ETH -16A8;AL # RUNIC LETTER ANSUZ A -16A9;AL # RUNIC LETTER OS O -16AA;AL # RUNIC LETTER AC A -16AB;AL # RUNIC LETTER AESC -16AC;AL # RUNIC LETTER LONG-BRANCH-OSS O -16AD;AL # RUNIC LETTER SHORT-TWIG-OSS O -16AE;AL # RUNIC LETTER O -16AF;AL # RUNIC LETTER OE -16B0;AL # RUNIC LETTER ON -16B1;AL # RUNIC LETTER RAIDO RAD REID R -16B2;AL # RUNIC LETTER KAUNA -16B3;AL # RUNIC LETTER CEN -16B4;AL # RUNIC LETTER KAUN K -16B5;AL # RUNIC LETTER G -16B6;AL # RUNIC LETTER ENG -16B7;AL # RUNIC LETTER GEBO GYFU G -16B8;AL # RUNIC LETTER GAR -16B9;AL # RUNIC LETTER WUNJO WYNN W -16BA;AL # RUNIC LETTER HAGLAZ H -16BB;AL # RUNIC LETTER HAEGL H -16BC;AL # RUNIC LETTER LONG-BRANCH-HAGALL H -16BD;AL # RUNIC LETTER SHORT-TWIG-HAGALL H -16BE;AL # RUNIC LETTER NAUDIZ NYD NAUD N -16BF;AL # RUNIC LETTER SHORT-TWIG-NAUD N -16C0;AL # RUNIC LETTER DOTTED-N -16C1;AL # RUNIC LETTER ISAZ IS ISS I -16C2;AL # RUNIC LETTER E -16C3;AL # RUNIC LETTER JERAN J -16C4;AL # RUNIC LETTER GER -16C5;AL # RUNIC LETTER LONG-BRANCH-AR AE -16C6;AL # RUNIC LETTER SHORT-TWIG-AR A -16C7;AL # RUNIC LETTER IWAZ EOH -16C8;AL # RUNIC LETTER PERTHO PEORTH P -16C9;AL # RUNIC LETTER ALGIZ EOLHX -16CA;AL # RUNIC LETTER SOWILO S -16CB;AL # RUNIC LETTER SIGEL LONG-BRANCH-SOL S -16CC;AL # RUNIC LETTER SHORT-TWIG-SOL S -16CD;AL # RUNIC LETTER C -16CE;AL # RUNIC LETTER Z -16CF;AL # RUNIC LETTER TIWAZ TIR TYR T -16D0;AL # RUNIC LETTER SHORT-TWIG-TYR T -16D1;AL # RUNIC LETTER D -16D2;AL # RUNIC LETTER BERKANAN BEORC BJARKAN B -16D3;AL # RUNIC LETTER SHORT-TWIG-BJARKAN B -16D4;AL # RUNIC LETTER DOTTED-P -16D5;AL # RUNIC LETTER OPEN-P -16D6;AL # RUNIC LETTER EHWAZ EH E -16D7;AL # RUNIC LETTER MANNAZ MAN M -16D8;AL # RUNIC LETTER LONG-BRANCH-MADR M -16D9;AL # RUNIC LETTER SHORT-TWIG-MADR M -16DA;AL # RUNIC LETTER LAUKAZ LAGU LOGR L -16DB;AL # RUNIC LETTER DOTTED-L -16DC;AL # RUNIC LETTER INGWAZ -16DD;AL # RUNIC LETTER ING -16DE;AL # RUNIC LETTER DAGAZ DAEG D -16DF;AL # RUNIC LETTER OTHALAN ETHEL O -16E0;AL # RUNIC LETTER EAR -16E1;AL # RUNIC LETTER IOR -16E2;AL # RUNIC LETTER CWEORTH -16E3;AL # RUNIC LETTER CALC -16E4;AL # RUNIC LETTER CEALC -16E5;AL # RUNIC LETTER STAN -16E6;AL # RUNIC LETTER LONG-BRANCH-YR -16E7;AL # RUNIC LETTER SHORT-TWIG-YR -16E8;AL # RUNIC LETTER ICELANDIC-YR -16E9;AL # RUNIC LETTER Q -16EA;AL # RUNIC LETTER X -16EB;BA # RUNIC SINGLE PUNCTUATION -16EC;BA # RUNIC MULTIPLE PUNCTUATION -16ED;BA # RUNIC CROSS PUNCTUATION -16EE;AL # RUNIC ARLAUG SYMBOL -16EF;AL # RUNIC TVIMADUR SYMBOL -16F0;AL # RUNIC BELGTHOR SYMBOL -1700;AL # TAGALOG LETTER A -1701;AL # TAGALOG LETTER I -1702;AL # TAGALOG LETTER U -1703;AL # TAGALOG LETTER KA -1704;AL # TAGALOG LETTER GA -1705;AL # TAGALOG LETTER NGA -1706;AL # TAGALOG LETTER TA -1707;AL # TAGALOG LETTER DA -1708;AL # TAGALOG LETTER NA -1709;AL # TAGALOG LETTER PA -170A;AL # TAGALOG LETTER BA -170B;AL # TAGALOG LETTER MA -170C;AL # TAGALOG LETTER YA -170E;AL # TAGALOG LETTER LA -170F;AL # TAGALOG LETTER WA -1710;AL # TAGALOG LETTER SA -1711;AL # TAGALOG LETTER HA -1712;CM # TAGALOG VOWEL SIGN I -1713;CM # TAGALOG VOWEL SIGN U -1714;CM # TAGALOG SIGN VIRAMA -1720;AL # HANUNOO LETTER A -1721;AL # HANUNOO LETTER I -1722;AL # HANUNOO LETTER U -1723;AL # HANUNOO LETTER KA -1724;AL # HANUNOO LETTER GA -1725;AL # HANUNOO LETTER NGA -1726;AL # HANUNOO LETTER TA -1727;AL # HANUNOO LETTER DA -1728;AL # HANUNOO LETTER NA -1729;AL # HANUNOO LETTER PA -172A;AL # HANUNOO LETTER BA -172B;AL # HANUNOO LETTER MA -172C;AL # HANUNOO LETTER YA -172D;AL # HANUNOO LETTER RA -172E;AL # HANUNOO LETTER LA -172F;AL # HANUNOO LETTER WA -1730;AL # HANUNOO LETTER SA -1731;AL # HANUNOO LETTER HA -1732;CM # HANUNOO VOWEL SIGN I -1733;CM # HANUNOO VOWEL SIGN U -1734;CM # HANUNOO SIGN PAMUDPOD -1735;AL # PHILIPPINE SINGLE PUNCTUATION -1736;AL # PHILIPPINE DOUBLE PUNCTUATION -1740;AL # BUHID LETTER A -1741;AL # BUHID LETTER I -1742;AL # BUHID LETTER U -1743;AL # BUHID LETTER KA -1744;AL # BUHID LETTER GA -1745;AL # BUHID LETTER NGA -1746;AL # BUHID LETTER TA -1747;AL # BUHID LETTER DA -1748;AL # BUHID LETTER NA -1749;AL # BUHID LETTER PA -174A;AL # BUHID LETTER BA -174B;AL # BUHID LETTER MA -174C;AL # BUHID LETTER YA -174D;AL # BUHID LETTER RA -174E;AL # BUHID LETTER LA -174F;AL # BUHID LETTER WA -1750;AL # BUHID LETTER SA -1751;AL # BUHID LETTER HA -1752;CM # BUHID VOWEL SIGN I -1753;CM # BUHID VOWEL SIGN U -1760;AL # TAGBANWA LETTER A -1761;AL # TAGBANWA LETTER I -1762;AL # TAGBANWA LETTER U -1763;AL # TAGBANWA LETTER KA -1764;AL # TAGBANWA LETTER GA -1765;AL # TAGBANWA LETTER NGA -1766;AL # TAGBANWA LETTER TA -1767;AL # TAGBANWA LETTER DA -1768;AL # TAGBANWA LETTER NA -1769;AL # TAGBANWA LETTER PA -176A;AL # TAGBANWA LETTER BA -176B;AL # TAGBANWA LETTER MA -176C;AL # TAGBANWA LETTER YA -176E;AL # TAGBANWA LETTER LA -176F;AL # TAGBANWA LETTER WA -1770;AL # TAGBANWA LETTER SA -1772;CM # TAGBANWA VOWEL SIGN I -1773;CM # TAGBANWA VOWEL SIGN U -1780;SA # KHMER LETTER KA -1781;SA # KHMER LETTER KHA -1782;SA # KHMER LETTER KO -1783;SA # KHMER LETTER KHO -1784;SA # KHMER LETTER NGO -1785;SA # KHMER LETTER CA -1786;SA # KHMER LETTER CHA -1787;SA # KHMER LETTER CO -1788;SA # KHMER LETTER CHO -1789;SA # KHMER LETTER NYO -178A;SA # KHMER LETTER DA -178B;SA # KHMER LETTER TTHA -178C;SA # KHMER LETTER DO -178D;SA # KHMER LETTER TTHO -178E;SA # KHMER LETTER NNO -178F;SA # KHMER LETTER TA -1790;SA # KHMER LETTER THA -1791;SA # KHMER LETTER TO -1792;SA # KHMER LETTER THO -1793;SA # KHMER LETTER NO -1794;SA # KHMER LETTER BA -1795;SA # KHMER LETTER PHA -1796;SA # KHMER LETTER PO -1797;SA # KHMER LETTER PHO -1798;SA # KHMER LETTER MO -1799;SA # KHMER LETTER YO -179A;SA # KHMER LETTER RO -179B;SA # KHMER LETTER LO -179C;SA # KHMER LETTER VO -179D;SA # KHMER LETTER SHA -179E;SA # KHMER LETTER SSO -179F;SA # KHMER LETTER SA -17A0;SA # KHMER LETTER HA -17A1;SA # KHMER LETTER LA -17A2;SA # KHMER LETTER QA -17A3;SA # KHMER INDEPENDENT VOWEL QAQ -17A4;SA # KHMER INDEPENDENT VOWEL QAA -17A5;SA # KHMER INDEPENDENT VOWEL QI -17A6;SA # KHMER INDEPENDENT VOWEL QII -17A7;SA # KHMER INDEPENDENT VOWEL QU -17A8;SA # KHMER INDEPENDENT VOWEL QUK -17A9;SA # KHMER INDEPENDENT VOWEL QUU -17AA;SA # KHMER INDEPENDENT VOWEL QUUV -17AB;SA # KHMER INDEPENDENT VOWEL RY -17AC;SA # KHMER INDEPENDENT VOWEL RYY -17AD;SA # KHMER INDEPENDENT VOWEL LY -17AE;SA # KHMER INDEPENDENT VOWEL LYY -17AF;SA # KHMER INDEPENDENT VOWEL QE -17B0;SA # KHMER INDEPENDENT VOWEL QAI -17B1;SA # KHMER INDEPENDENT VOWEL QOO TYPE ONE -17B2;SA # KHMER INDEPENDENT VOWEL QOO TYPE TWO -17B3;SA # KHMER INDEPENDENT VOWEL QAU -17B4;SA # KHMER VOWEL INHERENT AQ -17B5;SA # KHMER VOWEL INHERENT AA -17B6;CM # KHMER VOWEL SIGN AA -17B7;CM # KHMER VOWEL SIGN I -17B8;CM # KHMER VOWEL SIGN II -17B9;CM # KHMER VOWEL SIGN Y -17BA;CM # KHMER VOWEL SIGN YY -17BB;CM # KHMER VOWEL SIGN U -17BC;CM # KHMER VOWEL SIGN UU -17BD;CM # KHMER VOWEL SIGN UA -17BE;CM # KHMER VOWEL SIGN OE -17BF;CM # KHMER VOWEL SIGN YA -17C0;CM # KHMER VOWEL SIGN IE -17C1;CM # KHMER VOWEL SIGN E -17C2;CM # KHMER VOWEL SIGN AE -17C3;CM # KHMER VOWEL SIGN AI -17C4;CM # KHMER VOWEL SIGN OO -17C5;CM # KHMER VOWEL SIGN AU -17C6;CM # KHMER SIGN NIKAHIT -17C7;CM # KHMER SIGN REAHMUK -17C8;CM # KHMER SIGN YUUKALEAPINTU -17C9;CM # KHMER SIGN MUUSIKATOAN -17CA;CM # KHMER SIGN TRIISAP -17CB;CM # KHMER SIGN BANTOC -17CC;CM # KHMER SIGN ROBAT -17CD;CM # KHMER SIGN TOANDAKHIAT -17CE;CM # KHMER SIGN KAKABAT -17CF;CM # KHMER SIGN AHSDA -17D0;CM # KHMER SIGN SAMYOK SANNYA -17D1;CM # KHMER SIGN VIRIAM -17D2;CM # KHMER SIGN COENG -17D3;CM # KHMER SIGN BATHAMASAT -17D4;BA # KHMER SIGN KHAN -17D5;BA # KHMER SIGN BARIYOOSAN -17D6;NS # KHMER SIGN CAMNUC PII KUUH -17D7;NS # KHMER SIGN LEK TOO -17D8;BA # KHMER SIGN BEYYAL -17D9;NS # KHMER SIGN PHNAEK MUAN -17DA;BA # KHMER SIGN KOOMUUT -17DB;PR # KHMER CURRENCY SYMBOL RIEL -17DC;AL # KHMER SIGN AVAKRAHASANYA -17DD;CM # KHMER SIGN ATTHACAN -17E0;NU # KHMER DIGIT ZERO -17E1;NU # KHMER DIGIT ONE -17E2;NU # KHMER DIGIT TWO -17E3;NU # KHMER DIGIT THREE -17E4;NU # KHMER DIGIT FOUR -17E5;NU # KHMER DIGIT FIVE -17E6;NU # KHMER DIGIT SIX -17E7;NU # KHMER DIGIT SEVEN -17E8;NU # KHMER DIGIT EIGHT -17E9;NU # KHMER DIGIT NINE -17F0;AL # KHMER SYMBOL LEK ATTAK SON -17F1;AL # KHMER SYMBOL LEK ATTAK MUOY -17F2;AL # KHMER SYMBOL LEK ATTAK PII -17F3;AL # KHMER SYMBOL LEK ATTAK BEI -17F4;AL # KHMER SYMBOL LEK ATTAK BUON -17F5;AL # KHMER SYMBOL LEK ATTAK PRAM -17F6;AL # KHMER SYMBOL LEK ATTAK PRAM-MUOY -17F7;AL # KHMER SYMBOL LEK ATTAK PRAM-PII -17F8;AL # KHMER SYMBOL LEK ATTAK PRAM-BEI -17F9;AL # KHMER SYMBOL LEK ATTAK PRAM-BUON -1800;AL # MONGOLIAN BIRGA -1801;AL # MONGOLIAN ELLIPSIS -1802;BA # MONGOLIAN COMMA -1803;BA # MONGOLIAN FULL STOP -1804;BA # MONGOLIAN COLON -1805;BA # MONGOLIAN FOUR DOTS -1806;BB # MONGOLIAN TODO SOFT HYPHEN -1807;AL # MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER -1808;BA # MONGOLIAN MANCHU COMMA -1809;BA # MONGOLIAN MANCHU FULL STOP -180A;AL # MONGOLIAN NIRUGU -180B;CM # MONGOLIAN FREE VARIATION SELECTOR ONE -180C;CM # MONGOLIAN FREE VARIATION SELECTOR TWO -180D;CM # MONGOLIAN FREE VARIATION SELECTOR THREE -180E;GL # MONGOLIAN VOWEL SEPARATOR -1810;NU # MONGOLIAN DIGIT ZERO -1811;NU # MONGOLIAN DIGIT ONE -1812;NU # MONGOLIAN DIGIT TWO -1813;NU # MONGOLIAN DIGIT THREE -1814;NU # MONGOLIAN DIGIT FOUR -1815;NU # MONGOLIAN DIGIT FIVE -1816;NU # MONGOLIAN DIGIT SIX -1817;NU # MONGOLIAN DIGIT SEVEN -1818;NU # MONGOLIAN DIGIT EIGHT -1819;NU # MONGOLIAN DIGIT NINE -1820;AL # MONGOLIAN LETTER A -1821;AL # MONGOLIAN LETTER E -1822;AL # MONGOLIAN LETTER I -1823;AL # MONGOLIAN LETTER O -1824;AL # MONGOLIAN LETTER U -1825;AL # MONGOLIAN LETTER OE -1826;AL # MONGOLIAN LETTER UE -1827;AL # MONGOLIAN LETTER EE -1828;AL # MONGOLIAN LETTER NA -1829;AL # MONGOLIAN LETTER ANG -182A;AL # MONGOLIAN LETTER BA -182B;AL # MONGOLIAN LETTER PA -182C;AL # MONGOLIAN LETTER QA -182D;AL # MONGOLIAN LETTER GA -182E;AL # MONGOLIAN LETTER MA -182F;AL # MONGOLIAN LETTER LA -1830;AL # MONGOLIAN LETTER SA -1831;AL # MONGOLIAN LETTER SHA -1832;AL # MONGOLIAN LETTER TA -1833;AL # MONGOLIAN LETTER DA -1834;AL # MONGOLIAN LETTER CHA -1835;AL # MONGOLIAN LETTER JA -1836;AL # MONGOLIAN LETTER YA -1837;AL # MONGOLIAN LETTER RA -1838;AL # MONGOLIAN LETTER WA -1839;AL # MONGOLIAN LETTER FA -183A;AL # MONGOLIAN LETTER KA -183B;AL # MONGOLIAN LETTER KHA -183C;AL # MONGOLIAN LETTER TSA -183D;AL # MONGOLIAN LETTER ZA -183E;AL # MONGOLIAN LETTER HAA -183F;AL # MONGOLIAN LETTER ZRA -1840;AL # MONGOLIAN LETTER LHA -1841;AL # MONGOLIAN LETTER ZHI -1842;AL # MONGOLIAN LETTER CHI -1843;AL # MONGOLIAN LETTER TODO LONG VOWEL SIGN -1844;AL # MONGOLIAN LETTER TODO E -1845;AL # MONGOLIAN LETTER TODO I -1846;AL # MONGOLIAN LETTER TODO O -1847;AL # MONGOLIAN LETTER TODO U -1848;AL # MONGOLIAN LETTER TODO OE -1849;AL # MONGOLIAN LETTER TODO UE -184A;AL # MONGOLIAN LETTER TODO ANG -184B;AL # MONGOLIAN LETTER TODO BA -184C;AL # MONGOLIAN LETTER TODO PA -184D;AL # MONGOLIAN LETTER TODO QA -184E;AL # MONGOLIAN LETTER TODO GA -184F;AL # MONGOLIAN LETTER TODO MA -1850;AL # MONGOLIAN LETTER TODO TA -1851;AL # MONGOLIAN LETTER TODO DA -1852;AL # MONGOLIAN LETTER TODO CHA -1853;AL # MONGOLIAN LETTER TODO JA -1854;AL # MONGOLIAN LETTER TODO TSA -1855;AL # MONGOLIAN LETTER TODO YA -1856;AL # MONGOLIAN LETTER TODO WA -1857;AL # MONGOLIAN LETTER TODO KA -1858;AL # MONGOLIAN LETTER TODO GAA -1859;AL # MONGOLIAN LETTER TODO HAA -185A;AL # MONGOLIAN LETTER TODO JIA -185B;AL # MONGOLIAN LETTER TODO NIA -185C;AL # MONGOLIAN LETTER TODO DZA -185D;AL # MONGOLIAN LETTER SIBE E -185E;AL # MONGOLIAN LETTER SIBE I -185F;AL # MONGOLIAN LETTER SIBE IY -1860;AL # MONGOLIAN LETTER SIBE UE -1861;AL # MONGOLIAN LETTER SIBE U -1862;AL # MONGOLIAN LETTER SIBE ANG -1863;AL # MONGOLIAN LETTER SIBE KA -1864;AL # MONGOLIAN LETTER SIBE GA -1865;AL # MONGOLIAN LETTER SIBE HA -1866;AL # MONGOLIAN LETTER SIBE PA -1867;AL # MONGOLIAN LETTER SIBE SHA -1868;AL # MONGOLIAN LETTER SIBE TA -1869;AL # MONGOLIAN LETTER SIBE DA -186A;AL # MONGOLIAN LETTER SIBE JA -186B;AL # MONGOLIAN LETTER SIBE FA -186C;AL # MONGOLIAN LETTER SIBE GAA -186D;AL # MONGOLIAN LETTER SIBE HAA -186E;AL # MONGOLIAN LETTER SIBE TSA -186F;AL # MONGOLIAN LETTER SIBE ZA -1870;AL # MONGOLIAN LETTER SIBE RAA -1871;AL # MONGOLIAN LETTER SIBE CHA -1872;AL # MONGOLIAN LETTER SIBE ZHA -1873;AL # MONGOLIAN LETTER MANCHU I -1874;AL # MONGOLIAN LETTER MANCHU KA -1875;AL # MONGOLIAN LETTER MANCHU RA -1876;AL # MONGOLIAN LETTER MANCHU FA -1877;AL # MONGOLIAN LETTER MANCHU ZHA -1880;AL # MONGOLIAN LETTER ALI GALI ANUSVARA ONE -1881;AL # MONGOLIAN LETTER ALI GALI VISARGA ONE -1882;AL # MONGOLIAN LETTER ALI GALI DAMARU -1883;AL # MONGOLIAN LETTER ALI GALI UBADAMA -1884;AL # MONGOLIAN LETTER ALI GALI INVERTED UBADAMA -1885;AL # MONGOLIAN LETTER ALI GALI BALUDA -1886;AL # MONGOLIAN LETTER ALI GALI THREE BALUDA -1887;AL # MONGOLIAN LETTER ALI GALI A -1888;AL # MONGOLIAN LETTER ALI GALI I -1889;AL # MONGOLIAN LETTER ALI GALI KA -188A;AL # MONGOLIAN LETTER ALI GALI NGA -188B;AL # MONGOLIAN LETTER ALI GALI CA -188C;AL # MONGOLIAN LETTER ALI GALI TTA -188D;AL # MONGOLIAN LETTER ALI GALI TTHA -188E;AL # MONGOLIAN LETTER ALI GALI DDA -188F;AL # MONGOLIAN LETTER ALI GALI NNA -1890;AL # MONGOLIAN LETTER ALI GALI TA -1891;AL # MONGOLIAN LETTER ALI GALI DA -1892;AL # MONGOLIAN LETTER ALI GALI PA -1893;AL # MONGOLIAN LETTER ALI GALI PHA -1894;AL # MONGOLIAN LETTER ALI GALI SSA -1895;AL # MONGOLIAN LETTER ALI GALI ZHA -1896;AL # MONGOLIAN LETTER ALI GALI ZA -1897;AL # MONGOLIAN LETTER ALI GALI AH -1898;AL # MONGOLIAN LETTER TODO ALI GALI TA -1899;AL # MONGOLIAN LETTER TODO ALI GALI ZHA -189A;AL # MONGOLIAN LETTER MANCHU ALI GALI GHA -189B;AL # MONGOLIAN LETTER MANCHU ALI GALI NGA -189C;AL # MONGOLIAN LETTER MANCHU ALI GALI CA -189D;AL # MONGOLIAN LETTER MANCHU ALI GALI JHA -189E;AL # MONGOLIAN LETTER MANCHU ALI GALI TTA -189F;AL # MONGOLIAN LETTER MANCHU ALI GALI DDHA -18A0;AL # MONGOLIAN LETTER MANCHU ALI GALI TA -18A1;AL # MONGOLIAN LETTER MANCHU ALI GALI DHA -18A2;AL # MONGOLIAN LETTER MANCHU ALI GALI SSA -18A3;AL # MONGOLIAN LETTER MANCHU ALI GALI CYA -18A4;AL # MONGOLIAN LETTER MANCHU ALI GALI ZHA -18A5;AL # MONGOLIAN LETTER MANCHU ALI GALI ZA -18A6;AL # MONGOLIAN LETTER ALI GALI HALF U -18A7;AL # MONGOLIAN LETTER ALI GALI HALF YA -18A8;AL # MONGOLIAN LETTER MANCHU ALI GALI BHA -18A9;CM # MONGOLIAN LETTER ALI GALI DAGALGA -1900;AL # LIMBU VOWEL-CARRIER LETTER -1901;AL # LIMBU LETTER KA -1902;AL # LIMBU LETTER KHA -1903;AL # LIMBU LETTER GA -1904;AL # LIMBU LETTER GHA -1905;AL # LIMBU LETTER NGA -1906;AL # LIMBU LETTER CA -1907;AL # LIMBU LETTER CHA -1908;AL # LIMBU LETTER JA -1909;AL # LIMBU LETTER JHA -190A;AL # LIMBU LETTER YAN -190B;AL # LIMBU LETTER TA -190C;AL # LIMBU LETTER THA -190D;AL # LIMBU LETTER DA -190E;AL # LIMBU LETTER DHA -190F;AL # LIMBU LETTER NA -1910;AL # LIMBU LETTER PA -1911;AL # LIMBU LETTER PHA -1912;AL # LIMBU LETTER BA -1913;AL # LIMBU LETTER BHA -1914;AL # LIMBU LETTER MA -1915;AL # LIMBU LETTER YA -1916;AL # LIMBU LETTER RA -1917;AL # LIMBU LETTER LA -1918;AL # LIMBU LETTER WA -1919;AL # LIMBU LETTER SHA -191A;AL # LIMBU LETTER SSA -191B;AL # LIMBU LETTER SA -191C;AL # LIMBU LETTER HA -1920;CM # LIMBU VOWEL SIGN A -1921;CM # LIMBU VOWEL SIGN I -1922;CM # LIMBU VOWEL SIGN U -1923;CM # LIMBU VOWEL SIGN EE -1924;CM # LIMBU VOWEL SIGN AI -1925;CM # LIMBU VOWEL SIGN OO -1926;CM # LIMBU VOWEL SIGN AU -1927;CM # LIMBU VOWEL SIGN E -1928;CM # LIMBU VOWEL SIGN O -1929;CM # LIMBU SUBJOINED LETTER YA -192A;CM # LIMBU SUBJOINED LETTER RA -192B;CM # LIMBU SUBJOINED LETTER WA -1930;CM # LIMBU SMALL LETTER KA -1931;CM # LIMBU SMALL LETTER NGA -1932;CM # LIMBU SMALL LETTER ANUSVARA -1933;CM # LIMBU SMALL LETTER TA -1934;CM # LIMBU SMALL LETTER NA -1935;CM # LIMBU SMALL LETTER PA -1936;CM # LIMBU SMALL LETTER MA -1937;CM # LIMBU SMALL LETTER RA -1938;CM # LIMBU SMALL LETTER LA -1939;CM # LIMBU SIGN MUKPHRENG -193A;CM # LIMBU SIGN KEMPHRENG -193B;CM # LIMBU SIGN SA-I -1940;AL # LIMBU SIGN LOO -1944;EX # LIMBU EXCLAMATION MARK -1945;EX # LIMBU QUESTION MARK -1946;NU # LIMBU DIGIT ZERO -1947;NU # LIMBU DIGIT ONE -1948;NU # LIMBU DIGIT TWO -1949;NU # LIMBU DIGIT THREE -194A;NU # LIMBU DIGIT FOUR -194B;NU # LIMBU DIGIT FIVE -194C;NU # LIMBU DIGIT SIX -194D;NU # LIMBU DIGIT SEVEN -194E;NU # LIMBU DIGIT EIGHT -194F;NU # LIMBU DIGIT NINE -1950;AL # TAI LE LETTER KA -1951;AL # TAI LE LETTER XA -1952;AL # TAI LE LETTER NGA -1953;AL # TAI LE LETTER TSA -1954;AL # TAI LE LETTER SA -1955;AL # TAI LE LETTER YA -1956;AL # TAI LE LETTER TA -1957;AL # TAI LE LETTER THA -1958;AL # TAI LE LETTER LA -1959;AL # TAI LE LETTER PA -195A;AL # TAI LE LETTER PHA -195B;AL # TAI LE LETTER MA -195C;AL # TAI LE LETTER FA -195D;AL # TAI LE LETTER VA -195E;AL # TAI LE LETTER HA -195F;AL # TAI LE LETTER QA -1960;AL # TAI LE LETTER KHA -1961;AL # TAI LE LETTER TSHA -1962;AL # TAI LE LETTER NA -1963;AL # TAI LE LETTER A -1964;AL # TAI LE LETTER I -1965;AL # TAI LE LETTER EE -1966;AL # TAI LE LETTER EH -1967;AL # TAI LE LETTER U -1968;AL # TAI LE LETTER OO -1969;AL # TAI LE LETTER O -196A;AL # TAI LE LETTER UE -196B;AL # TAI LE LETTER E -196C;AL # TAI LE LETTER AUE -196D;AL # TAI LE LETTER AI -1970;AL # TAI LE LETTER TONE-2 -1971;AL # TAI LE LETTER TONE-3 -1972;AL # TAI LE LETTER TONE-4 -1973;AL # TAI LE LETTER TONE-5 -1974;AL # TAI LE LETTER TONE-6 -1980;AL # NEW TAI LUE LETTER HIGH QA -1981;AL # NEW TAI LUE LETTER LOW QA -1982;AL # NEW TAI LUE LETTER HIGH KA -1983;AL # NEW TAI LUE LETTER HIGH XA -1984;AL # NEW TAI LUE LETTER HIGH NGA -1985;AL # NEW TAI LUE LETTER LOW KA -1986;AL # NEW TAI LUE LETTER LOW XA -1987;AL # NEW TAI LUE LETTER LOW NGA -1988;AL # NEW TAI LUE LETTER HIGH TSA -1989;AL # NEW TAI LUE LETTER HIGH SA -198A;AL # NEW TAI LUE LETTER HIGH YA -198B;AL # NEW TAI LUE LETTER LOW TSA -198C;AL # NEW TAI LUE LETTER LOW SA -198D;AL # NEW TAI LUE LETTER LOW YA -198E;AL # NEW TAI LUE LETTER HIGH TA -198F;AL # NEW TAI LUE LETTER HIGH THA -1990;AL # NEW TAI LUE LETTER HIGH NA -1991;AL # NEW TAI LUE LETTER LOW TA -1992;AL # NEW TAI LUE LETTER LOW THA -1993;AL # NEW TAI LUE LETTER LOW NA -1994;AL # NEW TAI LUE LETTER HIGH PA -1995;AL # NEW TAI LUE LETTER HIGH PHA -1996;AL # NEW TAI LUE LETTER HIGH MA -1997;AL # NEW TAI LUE LETTER LOW PA -1998;AL # NEW TAI LUE LETTER LOW PHA -1999;AL # NEW TAI LUE LETTER LOW MA -199A;AL # NEW TAI LUE LETTER HIGH FA -199B;AL # NEW TAI LUE LETTER HIGH VA -199C;AL # NEW TAI LUE LETTER HIGH LA -199D;AL # NEW TAI LUE LETTER LOW FA -199E;AL # NEW TAI LUE LETTER LOW VA -199F;AL # NEW TAI LUE LETTER LOW LA -19A0;AL # NEW TAI LUE LETTER HIGH HA -19A1;AL # NEW TAI LUE LETTER HIGH DA -19A2;AL # NEW TAI LUE LETTER HIGH BA -19A3;AL # NEW TAI LUE LETTER LOW HA -19A4;AL # NEW TAI LUE LETTER LOW DA -19A5;AL # NEW TAI LUE LETTER LOW BA -19A6;AL # NEW TAI LUE LETTER HIGH KVA -19A7;AL # NEW TAI LUE LETTER HIGH XVA -19A8;AL # NEW TAI LUE LETTER LOW KVA -19A9;AL # NEW TAI LUE LETTER LOW XVA -19B0;CM # NEW TAI LUE VOWEL SIGN VOWEL SHORTENER -19B1;CM # NEW TAI LUE VOWEL SIGN AA -19B2;CM # NEW TAI LUE VOWEL SIGN II -19B3;CM # NEW TAI LUE VOWEL SIGN U -19B4;CM # NEW TAI LUE VOWEL SIGN UU -19B5;CM # NEW TAI LUE VOWEL SIGN E -19B6;CM # NEW TAI LUE VOWEL SIGN AE -19B7;CM # NEW TAI LUE VOWEL SIGN O -19B8;CM # NEW TAI LUE VOWEL SIGN OA -19B9;CM # NEW TAI LUE VOWEL SIGN UE -19BA;CM # NEW TAI LUE VOWEL SIGN AY -19BB;CM # NEW TAI LUE VOWEL SIGN AAY -19BC;CM # NEW TAI LUE VOWEL SIGN UY -19BD;CM # NEW TAI LUE VOWEL SIGN OY -19BE;CM # NEW TAI LUE VOWEL SIGN OAY -19BF;CM # NEW TAI LUE VOWEL SIGN UEY -19C0;CM # NEW TAI LUE VOWEL SIGN IY -19C1;AL # NEW TAI LUE LETTER FINAL V -19C2;AL # NEW TAI LUE LETTER FINAL NG -19C3;AL # NEW TAI LUE LETTER FINAL N -19C4;AL # NEW TAI LUE LETTER FINAL M -19C5;AL # NEW TAI LUE LETTER FINAL K -19C6;AL # NEW TAI LUE LETTER FINAL D -19C7;AL # NEW TAI LUE LETTER FINAL B -19C8;CM # NEW TAI LUE TONE MARK-1 -19C9;CM # NEW TAI LUE TONE MARK-2 -19D0;NU # NEW TAI LUE DIGIT ZERO -19D1;NU # NEW TAI LUE DIGIT ONE -19D2;NU # NEW TAI LUE DIGIT TWO -19D3;NU # NEW TAI LUE DIGIT THREE -19D4;NU # NEW TAI LUE DIGIT FOUR -19D5;NU # NEW TAI LUE DIGIT FIVE -19D6;NU # NEW TAI LUE DIGIT SIX -19D7;NU # NEW TAI LUE DIGIT SEVEN -19D8;NU # NEW TAI LUE DIGIT EIGHT -19D9;NU # NEW TAI LUE DIGIT NINE -19DE;AL # NEW TAI LUE SIGN LAE -19DF;AL # NEW TAI LUE SIGN LAEV -19E0;AL # KHMER SYMBOL PATHAMASAT -19E1;AL # KHMER SYMBOL MUOY KOET -19E2;AL # KHMER SYMBOL PII KOET -19E3;AL # KHMER SYMBOL BEI KOET -19E4;AL # KHMER SYMBOL BUON KOET -19E5;AL # KHMER SYMBOL PRAM KOET -19E6;AL # KHMER SYMBOL PRAM-MUOY KOET -19E7;AL # KHMER SYMBOL PRAM-PII KOET -19E8;AL # KHMER SYMBOL PRAM-BEI KOET -19E9;AL # KHMER SYMBOL PRAM-BUON KOET -19EA;AL # KHMER SYMBOL DAP KOET -19EB;AL # KHMER SYMBOL DAP-MUOY KOET -19EC;AL # KHMER SYMBOL DAP-PII KOET -19ED;AL # KHMER SYMBOL DAP-BEI KOET -19EE;AL # KHMER SYMBOL DAP-BUON KOET -19EF;AL # KHMER SYMBOL DAP-PRAM KOET -19F0;AL # KHMER SYMBOL TUTEYASAT -19F1;AL # KHMER SYMBOL MUOY ROC -19F2;AL # KHMER SYMBOL PII ROC -19F3;AL # KHMER SYMBOL BEI ROC -19F4;AL # KHMER SYMBOL BUON ROC -19F5;AL # KHMER SYMBOL PRAM ROC -19F6;AL # KHMER SYMBOL PRAM-MUOY ROC -19F7;AL # KHMER SYMBOL PRAM-PII ROC -19F8;AL # KHMER SYMBOL PRAM-BEI ROC -19F9;AL # KHMER SYMBOL PRAM-BUON ROC -19FA;AL # KHMER SYMBOL DAP ROC -19FB;AL # KHMER SYMBOL DAP-MUOY ROC -19FC;AL # KHMER SYMBOL DAP-PII ROC -19FD;AL # KHMER SYMBOL DAP-BEI ROC -19FE;AL # KHMER SYMBOL DAP-BUON ROC -19FF;AL # KHMER SYMBOL DAP-PRAM ROC -1A00;AL # BUGINESE LETTER KA -1A01;AL # BUGINESE LETTER GA -1A02;AL # BUGINESE LETTER NGA -1A03;AL # BUGINESE LETTER NGKA -1A04;AL # BUGINESE LETTER PA -1A05;AL # BUGINESE LETTER BA -1A06;AL # BUGINESE LETTER MA -1A07;AL # BUGINESE LETTER MPA -1A08;AL # BUGINESE LETTER TA -1A09;AL # BUGINESE LETTER DA -1A0A;AL # BUGINESE LETTER NA -1A0B;AL # BUGINESE LETTER NRA -1A0C;AL # BUGINESE LETTER CA -1A0D;AL # BUGINESE LETTER JA -1A0E;AL # BUGINESE LETTER NYA -1A0F;AL # BUGINESE LETTER NYCA -1A10;AL # BUGINESE LETTER YA -1A11;AL # BUGINESE LETTER RA -1A12;AL # BUGINESE LETTER LA -1A13;AL # BUGINESE LETTER VA -1A14;AL # BUGINESE LETTER SA -1A15;AL # BUGINESE LETTER A -1A16;AL # BUGINESE LETTER HA -1A17;CM # BUGINESE VOWEL SIGN I -1A18;CM # BUGINESE VOWEL SIGN U -1A19;CM # BUGINESE VOWEL SIGN E -1A1A;CM # BUGINESE VOWEL SIGN O -1A1B;CM # BUGINESE VOWEL SIGN AE -1A1E;BA # BUGINESE PALLAWA -1A1F;AL # BUGINESE END OF SECTION -1D00;AL # LATIN LETTER SMALL CAPITAL A -1D01;AL # LATIN LETTER SMALL CAPITAL AE -1D02;AL # LATIN SMALL LETTER TURNED AE -1D03;AL # LATIN LETTER SMALL CAPITAL BARRED B -1D04;AL # LATIN LETTER SMALL CAPITAL C -1D05;AL # LATIN LETTER SMALL CAPITAL D -1D06;AL # LATIN LETTER SMALL CAPITAL ETH -1D07;AL # LATIN LETTER SMALL CAPITAL E -1D08;AL # LATIN SMALL LETTER TURNED OPEN E -1D09;AL # LATIN SMALL LETTER TURNED I -1D0A;AL # LATIN LETTER SMALL CAPITAL J -1D0B;AL # LATIN LETTER SMALL CAPITAL K -1D0C;AL # LATIN LETTER SMALL CAPITAL L WITH STROKE -1D0D;AL # LATIN LETTER SMALL CAPITAL M -1D0E;AL # LATIN LETTER SMALL CAPITAL REVERSED N -1D0F;AL # LATIN LETTER SMALL CAPITAL O -1D10;AL # LATIN LETTER SMALL CAPITAL OPEN O -1D11;AL # LATIN SMALL LETTER SIDEWAYS O -1D12;AL # LATIN SMALL LETTER SIDEWAYS OPEN O -1D13;AL # LATIN SMALL LETTER SIDEWAYS O WITH STROKE -1D14;AL # LATIN SMALL LETTER TURNED OE -1D15;AL # LATIN LETTER SMALL CAPITAL OU -1D16;AL # LATIN SMALL LETTER TOP HALF O -1D17;AL # LATIN SMALL LETTER BOTTOM HALF O -1D18;AL # LATIN LETTER SMALL CAPITAL P -1D19;AL # LATIN LETTER SMALL CAPITAL REVERSED R -1D1A;AL # LATIN LETTER SMALL CAPITAL TURNED R -1D1B;AL # LATIN LETTER SMALL CAPITAL T -1D1C;AL # LATIN LETTER SMALL CAPITAL U -1D1D;AL # LATIN SMALL LETTER SIDEWAYS U -1D1E;AL # LATIN SMALL LETTER SIDEWAYS DIAERESIZED U -1D1F;AL # LATIN SMALL LETTER SIDEWAYS TURNED M -1D20;AL # LATIN LETTER SMALL CAPITAL V -1D21;AL # LATIN LETTER SMALL CAPITAL W -1D22;AL # LATIN LETTER SMALL CAPITAL Z -1D23;AL # LATIN LETTER SMALL CAPITAL EZH -1D24;AL # LATIN LETTER VOICED LARYNGEAL SPIRANT -1D25;AL # LATIN LETTER AIN -1D26;AL # GREEK LETTER SMALL CAPITAL GAMMA -1D27;AL # GREEK LETTER SMALL CAPITAL LAMDA -1D28;AL # GREEK LETTER SMALL CAPITAL PI -1D29;AL # GREEK LETTER SMALL CAPITAL RHO -1D2A;AL # GREEK LETTER SMALL CAPITAL PSI -1D2B;AL # CYRILLIC LETTER SMALL CAPITAL EL -1D2C;AL # MODIFIER LETTER CAPITAL A -1D2D;AL # MODIFIER LETTER CAPITAL AE -1D2E;AL # MODIFIER LETTER CAPITAL B -1D2F;AL # MODIFIER LETTER CAPITAL BARRED B -1D30;AL # MODIFIER LETTER CAPITAL D -1D31;AL # MODIFIER LETTER CAPITAL E -1D32;AL # MODIFIER LETTER CAPITAL REVERSED E -1D33;AL # MODIFIER LETTER CAPITAL G -1D34;AL # MODIFIER LETTER CAPITAL H -1D35;AL # MODIFIER LETTER CAPITAL I -1D36;AL # MODIFIER LETTER CAPITAL J -1D37;AL # MODIFIER LETTER CAPITAL K -1D38;AL # MODIFIER LETTER CAPITAL L -1D39;AL # MODIFIER LETTER CAPITAL M -1D3A;AL # MODIFIER LETTER CAPITAL N -1D3B;AL # MODIFIER LETTER CAPITAL REVERSED N -1D3C;AL # MODIFIER LETTER CAPITAL O -1D3D;AL # MODIFIER LETTER CAPITAL OU -1D3E;AL # MODIFIER LETTER CAPITAL P -1D3F;AL # MODIFIER LETTER CAPITAL R -1D40;AL # MODIFIER LETTER CAPITAL T -1D41;AL # MODIFIER LETTER CAPITAL U -1D42;AL # MODIFIER LETTER CAPITAL W -1D43;AL # MODIFIER LETTER SMALL A -1D44;AL # MODIFIER LETTER SMALL TURNED A -1D45;AL # MODIFIER LETTER SMALL ALPHA -1D46;AL # MODIFIER LETTER SMALL TURNED AE -1D47;AL # MODIFIER LETTER SMALL B -1D48;AL # MODIFIER LETTER SMALL D -1D49;AL # MODIFIER LETTER SMALL E -1D4A;AL # MODIFIER LETTER SMALL SCHWA -1D4B;AL # MODIFIER LETTER SMALL OPEN E -1D4C;AL # MODIFIER LETTER SMALL TURNED OPEN E -1D4D;AL # MODIFIER LETTER SMALL G -1D4E;AL # MODIFIER LETTER SMALL TURNED I -1D4F;AL # MODIFIER LETTER SMALL K -1D50;AL # MODIFIER LETTER SMALL M -1D51;AL # MODIFIER LETTER SMALL ENG -1D52;AL # MODIFIER LETTER SMALL O -1D53;AL # MODIFIER LETTER SMALL OPEN O -1D54;AL # MODIFIER LETTER SMALL TOP HALF O -1D55;AL # MODIFIER LETTER SMALL BOTTOM HALF O -1D56;AL # MODIFIER LETTER SMALL P -1D57;AL # MODIFIER LETTER SMALL T -1D58;AL # MODIFIER LETTER SMALL U -1D59;AL # MODIFIER LETTER SMALL SIDEWAYS U -1D5A;AL # MODIFIER LETTER SMALL TURNED M -1D5B;AL # MODIFIER LETTER SMALL V -1D5C;AL # MODIFIER LETTER SMALL AIN -1D5D;AL # MODIFIER LETTER SMALL BETA -1D5E;AL # MODIFIER LETTER SMALL GREEK GAMMA -1D5F;AL # MODIFIER LETTER SMALL DELTA -1D60;AL # MODIFIER LETTER SMALL GREEK PHI -1D61;AL # MODIFIER LETTER SMALL CHI -1D62;AL # LATIN SUBSCRIPT SMALL LETTER I -1D63;AL # LATIN SUBSCRIPT SMALL LETTER R -1D64;AL # LATIN SUBSCRIPT SMALL LETTER U -1D65;AL # LATIN SUBSCRIPT SMALL LETTER V -1D66;AL # GREEK SUBSCRIPT SMALL LETTER BETA -1D67;AL # GREEK SUBSCRIPT SMALL LETTER GAMMA -1D68;AL # GREEK SUBSCRIPT SMALL LETTER RHO -1D69;AL # GREEK SUBSCRIPT SMALL LETTER PHI -1D6A;AL # GREEK SUBSCRIPT SMALL LETTER CHI -1D6B;AL # LATIN SMALL LETTER UE -1D6C;AL # LATIN SMALL LETTER B WITH MIDDLE TILDE -1D6D;AL # LATIN SMALL LETTER D WITH MIDDLE TILDE -1D6E;AL # LATIN SMALL LETTER F WITH MIDDLE TILDE -1D6F;AL # LATIN SMALL LETTER M WITH MIDDLE TILDE -1D70;AL # LATIN SMALL LETTER N WITH MIDDLE TILDE -1D71;AL # LATIN SMALL LETTER P WITH MIDDLE TILDE -1D72;AL # LATIN SMALL LETTER R WITH MIDDLE TILDE -1D73;AL # LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE -1D74;AL # LATIN SMALL LETTER S WITH MIDDLE TILDE -1D75;AL # LATIN SMALL LETTER T WITH MIDDLE TILDE -1D76;AL # LATIN SMALL LETTER Z WITH MIDDLE TILDE -1D77;AL # LATIN SMALL LETTER TURNED G -1D78;AL # MODIFIER LETTER CYRILLIC EN -1D79;AL # LATIN SMALL LETTER INSULAR G -1D7A;AL # LATIN SMALL LETTER TH WITH STRIKETHROUGH -1D7B;AL # LATIN SMALL CAPITAL LETTER I WITH STROKE -1D7C;AL # LATIN SMALL LETTER IOTA WITH STROKE -1D7D;AL # LATIN SMALL LETTER P WITH STROKE -1D7E;AL # LATIN SMALL CAPITAL LETTER U WITH STROKE -1D7F;AL # LATIN SMALL LETTER UPSILON WITH STROKE -1D80;AL # LATIN SMALL LETTER B WITH PALATAL HOOK -1D81;AL # LATIN SMALL LETTER D WITH PALATAL HOOK -1D82;AL # LATIN SMALL LETTER F WITH PALATAL HOOK -1D83;AL # LATIN SMALL LETTER G WITH PALATAL HOOK -1D84;AL # LATIN SMALL LETTER K WITH PALATAL HOOK -1D85;AL # LATIN SMALL LETTER L WITH PALATAL HOOK -1D86;AL # LATIN SMALL LETTER M WITH PALATAL HOOK -1D87;AL # LATIN SMALL LETTER N WITH PALATAL HOOK -1D88;AL # LATIN SMALL LETTER P WITH PALATAL HOOK -1D89;AL # LATIN SMALL LETTER R WITH PALATAL HOOK -1D8A;AL # LATIN SMALL LETTER S WITH PALATAL HOOK -1D8B;AL # LATIN SMALL LETTER ESH WITH PALATAL HOOK -1D8C;AL # LATIN SMALL LETTER V WITH PALATAL HOOK -1D8D;AL # LATIN SMALL LETTER X WITH PALATAL HOOK -1D8E;AL # LATIN SMALL LETTER Z WITH PALATAL HOOK -1D8F;AL # LATIN SMALL LETTER A WITH RETROFLEX HOOK -1D90;AL # LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK -1D91;AL # LATIN SMALL LETTER D WITH HOOK AND TAIL -1D92;AL # LATIN SMALL LETTER E WITH RETROFLEX HOOK -1D93;AL # LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK -1D94;AL # LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK -1D95;AL # LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK -1D96;AL # LATIN SMALL LETTER I WITH RETROFLEX HOOK -1D97;AL # LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK -1D98;AL # LATIN SMALL LETTER ESH WITH RETROFLEX HOOK -1D99;AL # LATIN SMALL LETTER U WITH RETROFLEX HOOK -1D9A;AL # LATIN SMALL LETTER EZH WITH RETROFLEX HOOK -1D9B;AL # MODIFIER LETTER SMALL TURNED ALPHA -1D9C;AL # MODIFIER LETTER SMALL C -1D9D;AL # MODIFIER LETTER SMALL C WITH CURL -1D9E;AL # MODIFIER LETTER SMALL ETH -1D9F;AL # MODIFIER LETTER SMALL REVERSED OPEN E -1DA0;AL # MODIFIER LETTER SMALL F -1DA1;AL # MODIFIER LETTER SMALL DOTLESS J WITH STROKE -1DA2;AL # MODIFIER LETTER SMALL SCRIPT G -1DA3;AL # MODIFIER LETTER SMALL TURNED H -1DA4;AL # MODIFIER LETTER SMALL I WITH STROKE -1DA5;AL # MODIFIER LETTER SMALL IOTA -1DA6;AL # MODIFIER LETTER SMALL CAPITAL I -1DA7;AL # MODIFIER LETTER SMALL CAPITAL I WITH STROKE -1DA8;AL # MODIFIER LETTER SMALL J WITH CROSSED-TAIL -1DA9;AL # MODIFIER LETTER SMALL L WITH RETROFLEX HOOK -1DAA;AL # MODIFIER LETTER SMALL L WITH PALATAL HOOK -1DAB;AL # MODIFIER LETTER SMALL CAPITAL L -1DAC;AL # MODIFIER LETTER SMALL M WITH HOOK -1DAD;AL # MODIFIER LETTER SMALL TURNED M WITH LONG LEG -1DAE;AL # MODIFIER LETTER SMALL N WITH LEFT HOOK -1DAF;AL # MODIFIER LETTER SMALL N WITH RETROFLEX HOOK -1DB0;AL # MODIFIER LETTER SMALL CAPITAL N -1DB1;AL # MODIFIER LETTER SMALL BARRED O -1DB2;AL # MODIFIER LETTER SMALL PHI -1DB3;AL # MODIFIER LETTER SMALL S WITH HOOK -1DB4;AL # MODIFIER LETTER SMALL ESH -1DB5;AL # MODIFIER LETTER SMALL T WITH PALATAL HOOK -1DB6;AL # MODIFIER LETTER SMALL U BAR -1DB7;AL # MODIFIER LETTER SMALL UPSILON -1DB8;AL # MODIFIER LETTER SMALL CAPITAL U -1DB9;AL # MODIFIER LETTER SMALL V WITH HOOK -1DBA;AL # MODIFIER LETTER SMALL TURNED V -1DBB;AL # MODIFIER LETTER SMALL Z -1DBC;AL # MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK -1DBD;AL # MODIFIER LETTER SMALL Z WITH CURL -1DBE;AL # MODIFIER LETTER SMALL EZH -1DBF;AL # MODIFIER LETTER SMALL THETA -1DC0;CM # COMBINING DOTTED GRAVE ACCENT -1DC1;CM # COMBINING DOTTED ACUTE ACCENT -1DC2;CM # COMBINING SNAKE BELOW -1DC3;CM # COMBINING SUSPENSION MARK -1E00;AL # LATIN CAPITAL LETTER A WITH RING BELOW -1E01;AL # LATIN SMALL LETTER A WITH RING BELOW -1E02;AL # LATIN CAPITAL LETTER B WITH DOT ABOVE -1E03;AL # LATIN SMALL LETTER B WITH DOT ABOVE -1E04;AL # LATIN CAPITAL LETTER B WITH DOT BELOW -1E05;AL # LATIN SMALL LETTER B WITH DOT BELOW -1E06;AL # LATIN CAPITAL LETTER B WITH LINE BELOW -1E07;AL # LATIN SMALL LETTER B WITH LINE BELOW -1E08;AL # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE -1E09;AL # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE -1E0A;AL # LATIN CAPITAL LETTER D WITH DOT ABOVE -1E0B;AL # LATIN SMALL LETTER D WITH DOT ABOVE -1E0C;AL # LATIN CAPITAL LETTER D WITH DOT BELOW -1E0D;AL # LATIN SMALL LETTER D WITH DOT BELOW -1E0E;AL # LATIN CAPITAL LETTER D WITH LINE BELOW -1E0F;AL # LATIN SMALL LETTER D WITH LINE BELOW -1E10;AL # LATIN CAPITAL LETTER D WITH CEDILLA -1E11;AL # LATIN SMALL LETTER D WITH CEDILLA -1E12;AL # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW -1E13;AL # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW -1E14;AL # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE -1E15;AL # LATIN SMALL LETTER E WITH MACRON AND GRAVE -1E16;AL # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE -1E17;AL # LATIN SMALL LETTER E WITH MACRON AND ACUTE -1E18;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW -1E19;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW -1E1A;AL # LATIN CAPITAL LETTER E WITH TILDE BELOW -1E1B;AL # LATIN SMALL LETTER E WITH TILDE BELOW -1E1C;AL # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE -1E1D;AL # LATIN SMALL LETTER E WITH CEDILLA AND BREVE -1E1E;AL # LATIN CAPITAL LETTER F WITH DOT ABOVE -1E1F;AL # LATIN SMALL LETTER F WITH DOT ABOVE -1E20;AL # LATIN CAPITAL LETTER G WITH MACRON -1E21;AL # LATIN SMALL LETTER G WITH MACRON -1E22;AL # LATIN CAPITAL LETTER H WITH DOT ABOVE -1E23;AL # LATIN SMALL LETTER H WITH DOT ABOVE -1E24;AL # LATIN CAPITAL LETTER H WITH DOT BELOW -1E25;AL # LATIN SMALL LETTER H WITH DOT BELOW -1E26;AL # LATIN CAPITAL LETTER H WITH DIAERESIS -1E27;AL # LATIN SMALL LETTER H WITH DIAERESIS -1E28;AL # LATIN CAPITAL LETTER H WITH CEDILLA -1E29;AL # LATIN SMALL LETTER H WITH CEDILLA -1E2A;AL # LATIN CAPITAL LETTER H WITH BREVE BELOW -1E2B;AL # LATIN SMALL LETTER H WITH BREVE BELOW -1E2C;AL # LATIN CAPITAL LETTER I WITH TILDE BELOW -1E2D;AL # LATIN SMALL LETTER I WITH TILDE BELOW -1E2E;AL # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE -1E2F;AL # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE -1E30;AL # LATIN CAPITAL LETTER K WITH ACUTE -1E31;AL # LATIN SMALL LETTER K WITH ACUTE -1E32;AL # LATIN CAPITAL LETTER K WITH DOT BELOW -1E33;AL # LATIN SMALL LETTER K WITH DOT BELOW -1E34;AL # LATIN CAPITAL LETTER K WITH LINE BELOW -1E35;AL # LATIN SMALL LETTER K WITH LINE BELOW -1E36;AL # LATIN CAPITAL LETTER L WITH DOT BELOW -1E37;AL # LATIN SMALL LETTER L WITH DOT BELOW -1E38;AL # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON -1E39;AL # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON -1E3A;AL # LATIN CAPITAL LETTER L WITH LINE BELOW -1E3B;AL # LATIN SMALL LETTER L WITH LINE BELOW -1E3C;AL # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW -1E3D;AL # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW -1E3E;AL # LATIN CAPITAL LETTER M WITH ACUTE -1E3F;AL # LATIN SMALL LETTER M WITH ACUTE -1E40;AL # LATIN CAPITAL LETTER M WITH DOT ABOVE -1E41;AL # LATIN SMALL LETTER M WITH DOT ABOVE -1E42;AL # LATIN CAPITAL LETTER M WITH DOT BELOW -1E43;AL # LATIN SMALL LETTER M WITH DOT BELOW -1E44;AL # LATIN CAPITAL LETTER N WITH DOT ABOVE -1E45;AL # LATIN SMALL LETTER N WITH DOT ABOVE -1E46;AL # LATIN CAPITAL LETTER N WITH DOT BELOW -1E47;AL # LATIN SMALL LETTER N WITH DOT BELOW -1E48;AL # LATIN CAPITAL LETTER N WITH LINE BELOW -1E49;AL # LATIN SMALL LETTER N WITH LINE BELOW -1E4A;AL # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW -1E4B;AL # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW -1E4C;AL # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE -1E4D;AL # LATIN SMALL LETTER O WITH TILDE AND ACUTE -1E4E;AL # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS -1E4F;AL # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS -1E50;AL # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE -1E51;AL # LATIN SMALL LETTER O WITH MACRON AND GRAVE -1E52;AL # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE -1E53;AL # LATIN SMALL LETTER O WITH MACRON AND ACUTE -1E54;AL # LATIN CAPITAL LETTER P WITH ACUTE -1E55;AL # LATIN SMALL LETTER P WITH ACUTE -1E56;AL # LATIN CAPITAL LETTER P WITH DOT ABOVE -1E57;AL # LATIN SMALL LETTER P WITH DOT ABOVE -1E58;AL # LATIN CAPITAL LETTER R WITH DOT ABOVE -1E59;AL # LATIN SMALL LETTER R WITH DOT ABOVE -1E5A;AL # LATIN CAPITAL LETTER R WITH DOT BELOW -1E5B;AL # LATIN SMALL LETTER R WITH DOT BELOW -1E5C;AL # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON -1E5D;AL # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON -1E5E;AL # LATIN CAPITAL LETTER R WITH LINE BELOW -1E5F;AL # LATIN SMALL LETTER R WITH LINE BELOW -1E60;AL # LATIN CAPITAL LETTER S WITH DOT ABOVE -1E61;AL # LATIN SMALL LETTER S WITH DOT ABOVE -1E62;AL # LATIN CAPITAL LETTER S WITH DOT BELOW -1E63;AL # LATIN SMALL LETTER S WITH DOT BELOW -1E64;AL # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE -1E65;AL # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE -1E66;AL # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE -1E67;AL # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE -1E68;AL # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE -1E69;AL # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE -1E6A;AL # LATIN CAPITAL LETTER T WITH DOT ABOVE -1E6B;AL # LATIN SMALL LETTER T WITH DOT ABOVE -1E6C;AL # LATIN CAPITAL LETTER T WITH DOT BELOW -1E6D;AL # LATIN SMALL LETTER T WITH DOT BELOW -1E6E;AL # LATIN CAPITAL LETTER T WITH LINE BELOW -1E6F;AL # LATIN SMALL LETTER T WITH LINE BELOW -1E70;AL # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW -1E71;AL # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW -1E72;AL # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW -1E73;AL # LATIN SMALL LETTER U WITH DIAERESIS BELOW -1E74;AL # LATIN CAPITAL LETTER U WITH TILDE BELOW -1E75;AL # LATIN SMALL LETTER U WITH TILDE BELOW -1E76;AL # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW -1E77;AL # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW -1E78;AL # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE -1E79;AL # LATIN SMALL LETTER U WITH TILDE AND ACUTE -1E7A;AL # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS -1E7B;AL # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS -1E7C;AL # LATIN CAPITAL LETTER V WITH TILDE -1E7D;AL # LATIN SMALL LETTER V WITH TILDE -1E7E;AL # LATIN CAPITAL LETTER V WITH DOT BELOW -1E7F;AL # LATIN SMALL LETTER V WITH DOT BELOW -1E80;AL # LATIN CAPITAL LETTER W WITH GRAVE -1E81;AL # LATIN SMALL LETTER W WITH GRAVE -1E82;AL # LATIN CAPITAL LETTER W WITH ACUTE -1E83;AL # LATIN SMALL LETTER W WITH ACUTE -1E84;AL # LATIN CAPITAL LETTER W WITH DIAERESIS -1E85;AL # LATIN SMALL LETTER W WITH DIAERESIS -1E86;AL # LATIN CAPITAL LETTER W WITH DOT ABOVE -1E87;AL # LATIN SMALL LETTER W WITH DOT ABOVE -1E88;AL # LATIN CAPITAL LETTER W WITH DOT BELOW -1E89;AL # LATIN SMALL LETTER W WITH DOT BELOW -1E8A;AL # LATIN CAPITAL LETTER X WITH DOT ABOVE -1E8B;AL # LATIN SMALL LETTER X WITH DOT ABOVE -1E8C;AL # LATIN CAPITAL LETTER X WITH DIAERESIS -1E8D;AL # LATIN SMALL LETTER X WITH DIAERESIS -1E8E;AL # LATIN CAPITAL LETTER Y WITH DOT ABOVE -1E8F;AL # LATIN SMALL LETTER Y WITH DOT ABOVE -1E90;AL # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX -1E91;AL # LATIN SMALL LETTER Z WITH CIRCUMFLEX -1E92;AL # LATIN CAPITAL LETTER Z WITH DOT BELOW -1E93;AL # LATIN SMALL LETTER Z WITH DOT BELOW -1E94;AL # LATIN CAPITAL LETTER Z WITH LINE BELOW -1E95;AL # LATIN SMALL LETTER Z WITH LINE BELOW -1E96;AL # LATIN SMALL LETTER H WITH LINE BELOW -1E97;AL # LATIN SMALL LETTER T WITH DIAERESIS -1E98;AL # LATIN SMALL LETTER W WITH RING ABOVE -1E99;AL # LATIN SMALL LETTER Y WITH RING ABOVE -1E9A;AL # LATIN SMALL LETTER A WITH RIGHT HALF RING -1E9B;AL # LATIN SMALL LETTER LONG S WITH DOT ABOVE -1EA0;AL # LATIN CAPITAL LETTER A WITH DOT BELOW -1EA1;AL # LATIN SMALL LETTER A WITH DOT BELOW -1EA2;AL # LATIN CAPITAL LETTER A WITH HOOK ABOVE -1EA3;AL # LATIN SMALL LETTER A WITH HOOK ABOVE -1EA4;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE -1EA5;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE -1EA6;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE -1EA7;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE -1EA8;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -1EA9;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -1EAA;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE -1EAB;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE -1EAC;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW -1EAD;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW -1EAE;AL # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE -1EAF;AL # LATIN SMALL LETTER A WITH BREVE AND ACUTE -1EB0;AL # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE -1EB1;AL # LATIN SMALL LETTER A WITH BREVE AND GRAVE -1EB2;AL # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE -1EB3;AL # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE -1EB4;AL # LATIN CAPITAL LETTER A WITH BREVE AND TILDE -1EB5;AL # LATIN SMALL LETTER A WITH BREVE AND TILDE -1EB6;AL # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW -1EB7;AL # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW -1EB8;AL # LATIN CAPITAL LETTER E WITH DOT BELOW -1EB9;AL # LATIN SMALL LETTER E WITH DOT BELOW -1EBA;AL # LATIN CAPITAL LETTER E WITH HOOK ABOVE -1EBB;AL # LATIN SMALL LETTER E WITH HOOK ABOVE -1EBC;AL # LATIN CAPITAL LETTER E WITH TILDE -1EBD;AL # LATIN SMALL LETTER E WITH TILDE -1EBE;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -1EBF;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE -1EC0;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC1;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC2;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC3;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC4;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC5;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE -1EC6;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC7;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC8;AL # LATIN CAPITAL LETTER I WITH HOOK ABOVE -1EC9;AL # LATIN SMALL LETTER I WITH HOOK ABOVE -1ECA;AL # LATIN CAPITAL LETTER I WITH DOT BELOW -1ECB;AL # LATIN SMALL LETTER I WITH DOT BELOW -1ECC;AL # LATIN CAPITAL LETTER O WITH DOT BELOW -1ECD;AL # LATIN SMALL LETTER O WITH DOT BELOW -1ECE;AL # LATIN CAPITAL LETTER O WITH HOOK ABOVE -1ECF;AL # LATIN SMALL LETTER O WITH HOOK ABOVE -1ED0;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED1;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED2;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED3;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED4;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED5;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED6;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -1ED7;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE -1ED8;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1ED9;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1EDA;AL # LATIN CAPITAL LETTER O WITH HORN AND ACUTE -1EDB;AL # LATIN SMALL LETTER O WITH HORN AND ACUTE -1EDC;AL # LATIN CAPITAL LETTER O WITH HORN AND GRAVE -1EDD;AL # LATIN SMALL LETTER O WITH HORN AND GRAVE -1EDE;AL # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE -1EDF;AL # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE -1EE0;AL # LATIN CAPITAL LETTER O WITH HORN AND TILDE -1EE1;AL # LATIN SMALL LETTER O WITH HORN AND TILDE -1EE2;AL # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW -1EE3;AL # LATIN SMALL LETTER O WITH HORN AND DOT BELOW -1EE4;AL # LATIN CAPITAL LETTER U WITH DOT BELOW -1EE5;AL # LATIN SMALL LETTER U WITH DOT BELOW -1EE6;AL # LATIN CAPITAL LETTER U WITH HOOK ABOVE -1EE7;AL # LATIN SMALL LETTER U WITH HOOK ABOVE -1EE8;AL # LATIN CAPITAL LETTER U WITH HORN AND ACUTE -1EE9;AL # LATIN SMALL LETTER U WITH HORN AND ACUTE -1EEA;AL # LATIN CAPITAL LETTER U WITH HORN AND GRAVE -1EEB;AL # LATIN SMALL LETTER U WITH HORN AND GRAVE -1EEC;AL # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE -1EED;AL # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE -1EEE;AL # LATIN CAPITAL LETTER U WITH HORN AND TILDE -1EEF;AL # LATIN SMALL LETTER U WITH HORN AND TILDE -1EF0;AL # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW -1EF1;AL # LATIN SMALL LETTER U WITH HORN AND DOT BELOW -1EF2;AL # LATIN CAPITAL LETTER Y WITH GRAVE -1EF3;AL # LATIN SMALL LETTER Y WITH GRAVE -1EF4;AL # LATIN CAPITAL LETTER Y WITH DOT BELOW -1EF5;AL # LATIN SMALL LETTER Y WITH DOT BELOW -1EF6;AL # LATIN CAPITAL LETTER Y WITH HOOK ABOVE -1EF7;AL # LATIN SMALL LETTER Y WITH HOOK ABOVE -1EF8;AL # LATIN CAPITAL LETTER Y WITH TILDE -1EF9;AL # LATIN SMALL LETTER Y WITH TILDE -1F00;AL # GREEK SMALL LETTER ALPHA WITH PSILI -1F01;AL # GREEK SMALL LETTER ALPHA WITH DASIA -1F02;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA -1F03;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA -1F04;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA -1F05;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA -1F06;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI -1F07;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI -1F08;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI -1F09;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA -1F0A;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA -1F0B;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA -1F0C;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA -1F0D;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA -1F0E;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI -1F0F;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI -1F10;AL # GREEK SMALL LETTER EPSILON WITH PSILI -1F11;AL # GREEK SMALL LETTER EPSILON WITH DASIA -1F12;AL # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA -1F13;AL # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA -1F14;AL # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA -1F15;AL # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA -1F18;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI -1F19;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA -1F1A;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA -1F1B;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA -1F1C;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA -1F1D;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA -1F20;AL # GREEK SMALL LETTER ETA WITH PSILI -1F21;AL # GREEK SMALL LETTER ETA WITH DASIA -1F22;AL # GREEK SMALL LETTER ETA WITH PSILI AND VARIA -1F23;AL # GREEK SMALL LETTER ETA WITH DASIA AND VARIA -1F24;AL # GREEK SMALL LETTER ETA WITH PSILI AND OXIA -1F25;AL # GREEK SMALL LETTER ETA WITH DASIA AND OXIA -1F26;AL # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI -1F27;AL # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI -1F28;AL # GREEK CAPITAL LETTER ETA WITH PSILI -1F29;AL # GREEK CAPITAL LETTER ETA WITH DASIA -1F2A;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA -1F2B;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA -1F2C;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA -1F2D;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA -1F2E;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI -1F2F;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI -1F30;AL # GREEK SMALL LETTER IOTA WITH PSILI -1F31;AL # GREEK SMALL LETTER IOTA WITH DASIA -1F32;AL # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA -1F33;AL # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA -1F34;AL # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA -1F35;AL # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA -1F36;AL # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI -1F37;AL # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI -1F38;AL # GREEK CAPITAL LETTER IOTA WITH PSILI -1F39;AL # GREEK CAPITAL LETTER IOTA WITH DASIA -1F3A;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA -1F3B;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA -1F3C;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA -1F3D;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA -1F3E;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI -1F3F;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI -1F40;AL # GREEK SMALL LETTER OMICRON WITH PSILI -1F41;AL # GREEK SMALL LETTER OMICRON WITH DASIA -1F42;AL # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA -1F43;AL # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA -1F44;AL # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA -1F45;AL # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA -1F48;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI -1F49;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA -1F4A;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA -1F4B;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA -1F4C;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA -1F4D;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA -1F50;AL # GREEK SMALL LETTER UPSILON WITH PSILI -1F51;AL # GREEK SMALL LETTER UPSILON WITH DASIA -1F52;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA -1F53;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA -1F54;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA -1F55;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA -1F56;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI -1F57;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI -1F59;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA -1F5B;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA -1F5D;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA -1F5F;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI -1F60;AL # GREEK SMALL LETTER OMEGA WITH PSILI -1F61;AL # GREEK SMALL LETTER OMEGA WITH DASIA -1F62;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA -1F63;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA -1F64;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA -1F65;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA -1F66;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI -1F67;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI -1F68;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI -1F69;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA -1F6A;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA -1F6B;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA -1F6C;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA -1F6D;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA -1F6E;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI -1F6F;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI -1F70;AL # GREEK SMALL LETTER ALPHA WITH VARIA -1F71;AL # GREEK SMALL LETTER ALPHA WITH OXIA -1F72;AL # GREEK SMALL LETTER EPSILON WITH VARIA -1F73;AL # GREEK SMALL LETTER EPSILON WITH OXIA -1F74;AL # GREEK SMALL LETTER ETA WITH VARIA -1F75;AL # GREEK SMALL LETTER ETA WITH OXIA -1F76;AL # GREEK SMALL LETTER IOTA WITH VARIA -1F77;AL # GREEK SMALL LETTER IOTA WITH OXIA -1F78;AL # GREEK SMALL LETTER OMICRON WITH VARIA -1F79;AL # GREEK SMALL LETTER OMICRON WITH OXIA -1F7A;AL # GREEK SMALL LETTER UPSILON WITH VARIA -1F7B;AL # GREEK SMALL LETTER UPSILON WITH OXIA -1F7C;AL # GREEK SMALL LETTER OMEGA WITH VARIA -1F7D;AL # GREEK SMALL LETTER OMEGA WITH OXIA -1F80;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI -1F81;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI -1F82;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F83;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F84;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F85;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F86;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F87;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F88;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI -1F89;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI -1F8A;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F8B;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F8C;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F8D;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F8E;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F8F;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1F90;AL # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI -1F91;AL # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI -1F92;AL # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F93;AL # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F94;AL # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F95;AL # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F96;AL # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F97;AL # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F98;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI -1F99;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI -1F9A;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F9B;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F9C;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F9D;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F9E;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F9F;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FA0;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI -1FA1;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI -1FA2;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1FA3;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1FA4;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1FA5;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1FA6;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1FA7;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1FA8;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI -1FA9;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI -1FAA;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1FAB;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1FAC;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1FAD;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1FAE;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1FAF;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FB0;AL # GREEK SMALL LETTER ALPHA WITH VRACHY -1FB1;AL # GREEK SMALL LETTER ALPHA WITH MACRON -1FB2;AL # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI -1FB3;AL # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI -1FB4;AL # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -1FB6;AL # GREEK SMALL LETTER ALPHA WITH PERISPOMENI -1FB7;AL # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI -1FB8;AL # GREEK CAPITAL LETTER ALPHA WITH VRACHY -1FB9;AL # GREEK CAPITAL LETTER ALPHA WITH MACRON -1FBA;AL # GREEK CAPITAL LETTER ALPHA WITH VARIA -1FBB;AL # GREEK CAPITAL LETTER ALPHA WITH OXIA -1FBC;AL # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -1FBD;AL # GREEK KORONIS -1FBE;AL # GREEK PROSGEGRAMMENI -1FBF;AL # GREEK PSILI -1FC0;AL # GREEK PERISPOMENI -1FC1;AL # GREEK DIALYTIKA AND PERISPOMENI -1FC2;AL # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI -1FC3;AL # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI -1FC4;AL # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -1FC6;AL # GREEK SMALL LETTER ETA WITH PERISPOMENI -1FC7;AL # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI -1FC8;AL # GREEK CAPITAL LETTER EPSILON WITH VARIA -1FC9;AL # GREEK CAPITAL LETTER EPSILON WITH OXIA -1FCA;AL # GREEK CAPITAL LETTER ETA WITH VARIA -1FCB;AL # GREEK CAPITAL LETTER ETA WITH OXIA -1FCC;AL # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -1FCD;AL # GREEK PSILI AND VARIA -1FCE;AL # GREEK PSILI AND OXIA -1FCF;AL # GREEK PSILI AND PERISPOMENI -1FD0;AL # GREEK SMALL LETTER IOTA WITH VRACHY -1FD1;AL # GREEK SMALL LETTER IOTA WITH MACRON -1FD2;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA -1FD3;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -1FD6;AL # GREEK SMALL LETTER IOTA WITH PERISPOMENI -1FD7;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI -1FD8;AL # GREEK CAPITAL LETTER IOTA WITH VRACHY -1FD9;AL # GREEK CAPITAL LETTER IOTA WITH MACRON -1FDA;AL # GREEK CAPITAL LETTER IOTA WITH VARIA -1FDB;AL # GREEK CAPITAL LETTER IOTA WITH OXIA -1FDD;AL # GREEK DASIA AND VARIA -1FDE;AL # GREEK DASIA AND OXIA -1FDF;AL # GREEK DASIA AND PERISPOMENI -1FE0;AL # GREEK SMALL LETTER UPSILON WITH VRACHY -1FE1;AL # GREEK SMALL LETTER UPSILON WITH MACRON -1FE2;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA -1FE3;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA -1FE4;AL # GREEK SMALL LETTER RHO WITH PSILI -1FE5;AL # GREEK SMALL LETTER RHO WITH DASIA -1FE6;AL # GREEK SMALL LETTER UPSILON WITH PERISPOMENI -1FE7;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI -1FE8;AL # GREEK CAPITAL LETTER UPSILON WITH VRACHY -1FE9;AL # GREEK CAPITAL LETTER UPSILON WITH MACRON -1FEA;AL # GREEK CAPITAL LETTER UPSILON WITH VARIA -1FEB;AL # GREEK CAPITAL LETTER UPSILON WITH OXIA -1FEC;AL # GREEK CAPITAL LETTER RHO WITH DASIA -1FED;AL # GREEK DIALYTIKA AND VARIA -1FEE;AL # GREEK DIALYTIKA AND OXIA -1FEF;AL # GREEK VARIA -1FF2;AL # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI -1FF3;AL # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI -1FF4;AL # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI -1FF6;AL # GREEK SMALL LETTER OMEGA WITH PERISPOMENI -1FF7;AL # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI -1FF8;AL # GREEK CAPITAL LETTER OMICRON WITH VARIA -1FF9;AL # GREEK CAPITAL LETTER OMICRON WITH OXIA -1FFA;AL # GREEK CAPITAL LETTER OMEGA WITH VARIA -1FFB;AL # GREEK CAPITAL LETTER OMEGA WITH OXIA -1FFC;AL # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -1FFD;AL # GREEK OXIA -1FFE;AL # GREEK DASIA -2000;BA # EN QUAD -2001;BA # EM QUAD -2002;BA # EN SPACE -2003;BA # EM SPACE -2004;BA # THREE-PER-EM SPACE -2005;BA # FOUR-PER-EM SPACE -2006;BA # SIX-PER-EM SPACE -2007;GL # FIGURE SPACE -2008;BA # PUNCTUATION SPACE -2009;BA # THIN SPACE -200A;BA # HAIR SPACE -200B;ZW # ZERO WIDTH SPACE -200C;CM # ZERO WIDTH NON-JOINER -200D;CM # ZERO WIDTH JOINER -200E;CM # LEFT-TO-RIGHT MARK -200F;CM # RIGHT-TO-LEFT MARK -2010;BA # HYPHEN -2011;GL # NON-BREAKING HYPHEN -2012;BA # FIGURE DASH -2013;BA # EN DASH -2014;B2 # EM DASH -2015;AI # HORIZONTAL BAR -2016;AI # DOUBLE VERTICAL LINE -2017;AL # DOUBLE LOW LINE -2018;QU # LEFT SINGLE QUOTATION MARK -2019;QU # RIGHT SINGLE QUOTATION MARK -201A;OP # SINGLE LOW-9 QUOTATION MARK -201B;QU # SINGLE HIGH-REVERSED-9 QUOTATION MARK -201C;QU # LEFT DOUBLE QUOTATION MARK -201D;QU # RIGHT DOUBLE QUOTATION MARK -201E;OP # DOUBLE LOW-9 QUOTATION MARK -201F;QU # DOUBLE HIGH-REVERSED-9 QUOTATION MARK -2020;AI # DAGGER -2021;AI # DOUBLE DAGGER -2022;AL # BULLET -2023;AL # TRIANGULAR BULLET -2024;IN # ONE DOT LEADER -2025;IN # TWO DOT LEADER -2026;IN # HORIZONTAL ELLIPSIS -2027;BA # HYPHENATION POINT -2028;BK # LINE SEPARATOR -2029;BK # PARAGRAPH SEPARATOR -202A;CM # LEFT-TO-RIGHT EMBEDDING -202B;CM # RIGHT-TO-LEFT EMBEDDING -202C;CM # POP DIRECTIONAL FORMATTING -202D;CM # LEFT-TO-RIGHT OVERRIDE -202E;CM # RIGHT-TO-LEFT OVERRIDE -202F;GL # NARROW NO-BREAK SPACE -2030;PO # PER MILLE SIGN -2031;PO # PER TEN THOUSAND SIGN -2032;PO # PRIME -2033;PO # DOUBLE PRIME -2034;PO # TRIPLE PRIME -2035;PO # REVERSED PRIME -2036;PO # REVERSED DOUBLE PRIME -2037;PO # REVERSED TRIPLE PRIME -2038;AL # CARET -2039;QU # SINGLE LEFT-POINTING ANGLE QUOTATION MARK -203A;QU # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -203B;AI # REFERENCE MARK -203C;NS # DOUBLE EXCLAMATION MARK -203D;AL # INTERROBANG -203E;AL # OVERLINE -203F;AL # UNDERTIE -2040;AL # CHARACTER TIE -2041;AL # CARET INSERTION POINT -2042;AL # ASTERISM -2043;AL # HYPHEN BULLET -2044;IS # FRACTION SLASH -2045;OP # LEFT SQUARE BRACKET WITH QUILL -2046;CL # RIGHT SQUARE BRACKET WITH QUILL -2047;AL # DOUBLE QUESTION MARK -2048;AL # QUESTION EXCLAMATION MARK -2049;AL # EXCLAMATION QUESTION MARK -204A;AL # TIRONIAN SIGN ET -204B;AL # REVERSED PILCROW SIGN -204C;AL # BLACK LEFTWARDS BULLET -204D;AL # BLACK RIGHTWARDS BULLET -204E;AL # LOW ASTERISK -204F;AL # REVERSED SEMICOLON -2050;AL # CLOSE UP -2051;AL # TWO ASTERISKS ALIGNED VERTICALLY -2052;AL # COMMERCIAL MINUS SIGN -2053;AL # SWUNG DASH -2054;AL # INVERTED UNDERTIE -2055;AL # FLOWER PUNCTUATION MARK -2056;BA # THREE DOT PUNCTUATION -2057;AL # QUADRUPLE PRIME -2058;BA # FOUR DOT PUNCTUATION -2059;BA # FIVE DOT PUNCTUATION -205A;BA # TWO DOT PUNCTUATION -205B;BA # FOUR DOT MARK -205C;AL # DOTTED CROSS -205D;BA # TRICOLON -205E;BA # VERTICAL FOUR DOTS -205F;BA # MEDIUM MATHEMATICAL SPACE -2060;WJ # WORD JOINER -2061;AL # FUNCTION APPLICATION -2062;AL # INVISIBLE TIMES -2063;AL # INVISIBLE SEPARATOR -206A;CM # INHIBIT SYMMETRIC SWAPPING -206B;CM # ACTIVATE SYMMETRIC SWAPPING -206C;CM # INHIBIT ARABIC FORM SHAPING -206D;CM # ACTIVATE ARABIC FORM SHAPING -206E;CM # NATIONAL DIGIT SHAPES -206F;CM # NOMINAL DIGIT SHAPES -2070;AL # SUPERSCRIPT ZERO -2071;AL # SUPERSCRIPT LATIN SMALL LETTER I -2074;AI # SUPERSCRIPT FOUR -2075;AL # SUPERSCRIPT FIVE -2076;AL # SUPERSCRIPT SIX -2077;AL # SUPERSCRIPT SEVEN -2078;AL # SUPERSCRIPT EIGHT -2079;AL # SUPERSCRIPT NINE -207A;AL # SUPERSCRIPT PLUS SIGN -207B;AL # SUPERSCRIPT MINUS -207C;AL # SUPERSCRIPT EQUALS SIGN -207D;OP # SUPERSCRIPT LEFT PARENTHESIS -207E;CL # SUPERSCRIPT RIGHT PARENTHESIS -207F;AI # SUPERSCRIPT LATIN SMALL LETTER N -2080;AL # SUBSCRIPT ZERO -2081;AI # SUBSCRIPT ONE -2082;AI # SUBSCRIPT TWO -2083;AI # SUBSCRIPT THREE -2084;AI # SUBSCRIPT FOUR -2085;AL # SUBSCRIPT FIVE -2086;AL # SUBSCRIPT SIX -2087;AL # SUBSCRIPT SEVEN -2088;AL # SUBSCRIPT EIGHT -2089;AL # SUBSCRIPT NINE -208A;AL # SUBSCRIPT PLUS SIGN -208B;AL # SUBSCRIPT MINUS -208C;AL # SUBSCRIPT EQUALS SIGN -208D;OP # SUBSCRIPT LEFT PARENTHESIS -208E;CL # SUBSCRIPT RIGHT PARENTHESIS -2090;AL # LATIN SUBSCRIPT SMALL LETTER A -2091;AL # LATIN SUBSCRIPT SMALL LETTER E -2092;AL # LATIN SUBSCRIPT SMALL LETTER O -2093;AL # LATIN SUBSCRIPT SMALL LETTER X -2094;AL # LATIN SUBSCRIPT SMALL LETTER SCHWA -20A0;PR # EURO-CURRENCY SIGN -20A1;PR # COLON SIGN -20A2;PR # CRUZEIRO SIGN -20A3;PR # FRENCH FRANC SIGN -20A4;PR # LIRA SIGN -20A5;PR # MILL SIGN -20A6;PR # NAIRA SIGN -20A7;PO # PESETA SIGN -20A8;PR # RUPEE SIGN -20A9;PR # WON SIGN -20AA;PR # NEW SHEQEL SIGN -20AB;PR # DONG SIGN -20AC;PR # EURO SIGN -20AD;PR # KIP SIGN -20AE;PR # TUGRIK SIGN -20AF;PR # DRACHMA SIGN -20B0;PR # GERMAN PENNY SIGN -20B1;PR # PESO SIGN -20B2;PR # GUARANI SIGN -20B3;PR # AUSTRAL SIGN -20B4;PR # HRYVNIA SIGN -20B5;PR # CEDI SIGN -20D0;CM # COMBINING LEFT HARPOON ABOVE -20D1;CM # COMBINING RIGHT HARPOON ABOVE -20D2;CM # COMBINING LONG VERTICAL LINE OVERLAY -20D3;CM # COMBINING SHORT VERTICAL LINE OVERLAY -20D4;CM # COMBINING ANTICLOCKWISE ARROW ABOVE -20D5;CM # COMBINING CLOCKWISE ARROW ABOVE -20D6;CM # COMBINING LEFT ARROW ABOVE -20D7;CM # COMBINING RIGHT ARROW ABOVE -20D8;CM # COMBINING RING OVERLAY -20D9;CM # COMBINING CLOCKWISE RING OVERLAY -20DA;CM # COMBINING ANTICLOCKWISE RING OVERLAY -20DB;CM # COMBINING THREE DOTS ABOVE -20DC;CM # COMBINING FOUR DOTS ABOVE -20DD;CM # COMBINING ENCLOSING CIRCLE -20DE;CM # COMBINING ENCLOSING SQUARE -20DF;CM # COMBINING ENCLOSING DIAMOND -20E0;CM # COMBINING ENCLOSING CIRCLE BACKSLASH -20E1;CM # COMBINING LEFT RIGHT ARROW ABOVE -20E2;CM # COMBINING ENCLOSING SCREEN -20E3;CM # COMBINING ENCLOSING KEYCAP -20E4;CM # COMBINING ENCLOSING UPWARD POINTING TRIANGLE -20E5;CM # COMBINING REVERSE SOLIDUS OVERLAY -20E6;CM # COMBINING DOUBLE VERTICAL STROKE OVERLAY -20E7;CM # COMBINING ANNUITY SYMBOL -20E8;CM # COMBINING TRIPLE UNDERDOT -20E9;CM # COMBINING WIDE BRIDGE ABOVE -20EA;CM # COMBINING LEFTWARDS ARROW OVERLAY -20EB;CM # COMBINING LONG DOUBLE SOLIDUS OVERLAY -2100;AL # ACCOUNT OF -2101;AL # ADDRESSED TO THE SUBJECT -2102;AL # DOUBLE-STRUCK CAPITAL C -2103;PO # DEGREE CELSIUS -2104;AL # CENTRE LINE SYMBOL -2105;AI # CARE OF -2106;AL # CADA UNA -2107;AL # EULER CONSTANT -2108;AL # SCRUPLE -2109;PO # DEGREE FAHRENHEIT -210A;AL # SCRIPT SMALL G -210B;AL # SCRIPT CAPITAL H -210C;AL # BLACK-LETTER CAPITAL H -210D;AL # DOUBLE-STRUCK CAPITAL H -210E;AL # PLANCK CONSTANT -210F;AL # PLANCK CONSTANT OVER TWO PI -2110;AL # SCRIPT CAPITAL I -2111;AL # BLACK-LETTER CAPITAL I -2112;AL # SCRIPT CAPITAL L -2113;AI # SCRIPT SMALL L -2114;AL # L B BAR SYMBOL -2115;AL # DOUBLE-STRUCK CAPITAL N -2116;PR # NUMERO SIGN -2117;AL # SOUND RECORDING COPYRIGHT -2118;AL # SCRIPT CAPITAL P -2119;AL # DOUBLE-STRUCK CAPITAL P -211A;AL # DOUBLE-STRUCK CAPITAL Q -211B;AL # SCRIPT CAPITAL R -211C;AL # BLACK-LETTER CAPITAL R -211D;AL # DOUBLE-STRUCK CAPITAL R -211E;AL # PRESCRIPTION TAKE -211F;AL # RESPONSE -2120;AL # SERVICE MARK -2121;AI # TELEPHONE SIGN -2122;AI # TRADE MARK SIGN -2123;AL # VERSICLE -2124;AL # DOUBLE-STRUCK CAPITAL Z -2125;AL # OUNCE SIGN -2126;AL # OHM SIGN -2127;AL # INVERTED OHM SIGN -2128;AL # BLACK-LETTER CAPITAL Z -2129;AL # TURNED GREEK SMALL LETTER IOTA -212A;AL # KELVIN SIGN -212B;AI # ANGSTROM SIGN -212C;AL # SCRIPT CAPITAL B -212D;AL # BLACK-LETTER CAPITAL C -212E;AL # ESTIMATED SYMBOL -212F;AL # SCRIPT SMALL E -2130;AL # SCRIPT CAPITAL E -2131;AL # SCRIPT CAPITAL F -2132;AL # TURNED CAPITAL F -2133;AL # SCRIPT CAPITAL M -2134;AL # SCRIPT SMALL O -2135;AL # ALEF SYMBOL -2136;AL # BET SYMBOL -2137;AL # GIMEL SYMBOL -2138;AL # DALET SYMBOL -2139;AL # INFORMATION SOURCE -213A;AL # ROTATED CAPITAL Q -213B;AL # FACSIMILE SIGN -213C;AL # DOUBLE-STRUCK SMALL PI -213D;AL # DOUBLE-STRUCK SMALL GAMMA -213E;AL # DOUBLE-STRUCK CAPITAL GAMMA -213F;AL # DOUBLE-STRUCK CAPITAL PI -2140;AL # DOUBLE-STRUCK N-ARY SUMMATION -2141;AL # TURNED SANS-SERIF CAPITAL G -2142;AL # TURNED SANS-SERIF CAPITAL L -2143;AL # REVERSED SANS-SERIF CAPITAL L -2144;AL # TURNED SANS-SERIF CAPITAL Y -2145;AL # DOUBLE-STRUCK ITALIC CAPITAL D -2146;AL # DOUBLE-STRUCK ITALIC SMALL D -2147;AL # DOUBLE-STRUCK ITALIC SMALL E -2148;AL # DOUBLE-STRUCK ITALIC SMALL I -2149;AL # DOUBLE-STRUCK ITALIC SMALL J -214A;AL # PROPERTY LINE -214B;AL # TURNED AMPERSAND -214C;AL # PER SIGN -2153;AL # VULGAR FRACTION ONE THIRD -2154;AI # VULGAR FRACTION TWO THIRDS -2155;AI # VULGAR FRACTION ONE FIFTH -2156;AL # VULGAR FRACTION TWO FIFTHS -2157;AL # VULGAR FRACTION THREE FIFTHS -2158;AL # VULGAR FRACTION FOUR FIFTHS -2159;AL # VULGAR FRACTION ONE SIXTH -215A;AL # VULGAR FRACTION FIVE SIXTHS -215B;AI # VULGAR FRACTION ONE EIGHTH -215C;AL # VULGAR FRACTION THREE EIGHTHS -215D;AL # VULGAR FRACTION FIVE EIGHTHS -215E;AI # VULGAR FRACTION SEVEN EIGHTHS -215F;AL # FRACTION NUMERATOR ONE -2160;AI # ROMAN NUMERAL ONE -2161;AI # ROMAN NUMERAL TWO -2162;AI # ROMAN NUMERAL THREE -2163;AI # ROMAN NUMERAL FOUR -2164;AI # ROMAN NUMERAL FIVE -2165;AI # ROMAN NUMERAL SIX -2166;AI # ROMAN NUMERAL SEVEN -2167;AI # ROMAN NUMERAL EIGHT -2168;AI # ROMAN NUMERAL NINE -2169;AI # ROMAN NUMERAL TEN -216A;AI # ROMAN NUMERAL ELEVEN -216B;AI # ROMAN NUMERAL TWELVE -216C;AL # ROMAN NUMERAL FIFTY -216D;AL # ROMAN NUMERAL ONE HUNDRED -216E;AL # ROMAN NUMERAL FIVE HUNDRED -216F;AL # ROMAN NUMERAL ONE THOUSAND -2170;AI # SMALL ROMAN NUMERAL ONE -2171;AI # SMALL ROMAN NUMERAL TWO -2172;AI # SMALL ROMAN NUMERAL THREE -2173;AI # SMALL ROMAN NUMERAL FOUR -2174;AI # SMALL ROMAN NUMERAL FIVE -2175;AI # SMALL ROMAN NUMERAL SIX -2176;AI # SMALL ROMAN NUMERAL SEVEN -2177;AI # SMALL ROMAN NUMERAL EIGHT -2178;AI # SMALL ROMAN NUMERAL NINE -2179;AI # SMALL ROMAN NUMERAL TEN -217A;AL # SMALL ROMAN NUMERAL ELEVEN -217B;AL # SMALL ROMAN NUMERAL TWELVE -217C;AL # SMALL ROMAN NUMERAL FIFTY -217D;AL # SMALL ROMAN NUMERAL ONE HUNDRED -217E;AL # SMALL ROMAN NUMERAL FIVE HUNDRED -217F;AL # SMALL ROMAN NUMERAL ONE THOUSAND -2180;AL # ROMAN NUMERAL ONE THOUSAND C D -2181;AL # ROMAN NUMERAL FIVE THOUSAND -2182;AL # ROMAN NUMERAL TEN THOUSAND -2183;AL # ROMAN NUMERAL REVERSED ONE HUNDRED -2190;AI # LEFTWARDS ARROW -2191;AI # UPWARDS ARROW -2192;AI # RIGHTWARDS ARROW -2193;AI # DOWNWARDS ARROW -2194;AI # LEFT RIGHT ARROW -2195;AI # UP DOWN ARROW -2196;AI # NORTH WEST ARROW -2197;AI # NORTH EAST ARROW -2198;AI # SOUTH EAST ARROW -2199;AI # SOUTH WEST ARROW -219A;AL # LEFTWARDS ARROW WITH STROKE -219B;AL # RIGHTWARDS ARROW WITH STROKE -219C;AL # LEFTWARDS WAVE ARROW -219D;AL # RIGHTWARDS WAVE ARROW -219E;AL # LEFTWARDS TWO HEADED ARROW -219F;AL # UPWARDS TWO HEADED ARROW -21A0;AL # RIGHTWARDS TWO HEADED ARROW -21A1;AL # DOWNWARDS TWO HEADED ARROW -21A2;AL # LEFTWARDS ARROW WITH TAIL -21A3;AL # RIGHTWARDS ARROW WITH TAIL -21A4;AL # LEFTWARDS ARROW FROM BAR -21A5;AL # UPWARDS ARROW FROM BAR -21A6;AL # RIGHTWARDS ARROW FROM BAR -21A7;AL # DOWNWARDS ARROW FROM BAR -21A8;AL # UP DOWN ARROW WITH BASE -21A9;AL # LEFTWARDS ARROW WITH HOOK -21AA;AL # RIGHTWARDS ARROW WITH HOOK -21AB;AL # LEFTWARDS ARROW WITH LOOP -21AC;AL # RIGHTWARDS ARROW WITH LOOP -21AD;AL # LEFT RIGHT WAVE ARROW -21AE;AL # LEFT RIGHT ARROW WITH STROKE -21AF;AL # DOWNWARDS ZIGZAG ARROW -21B0;AL # UPWARDS ARROW WITH TIP LEFTWARDS -21B1;AL # UPWARDS ARROW WITH TIP RIGHTWARDS -21B2;AL # DOWNWARDS ARROW WITH TIP LEFTWARDS -21B3;AL # DOWNWARDS ARROW WITH TIP RIGHTWARDS -21B4;AL # RIGHTWARDS ARROW WITH CORNER DOWNWARDS -21B5;AL # DOWNWARDS ARROW WITH CORNER LEFTWARDS -21B6;AL # ANTICLOCKWISE TOP SEMICIRCLE ARROW -21B7;AL # CLOCKWISE TOP SEMICIRCLE ARROW -21B8;AL # NORTH WEST ARROW TO LONG BAR -21B9;AL # LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR -21BA;AL # ANTICLOCKWISE OPEN CIRCLE ARROW -21BB;AL # CLOCKWISE OPEN CIRCLE ARROW -21BC;AL # LEFTWARDS HARPOON WITH BARB UPWARDS -21BD;AL # LEFTWARDS HARPOON WITH BARB DOWNWARDS -21BE;AL # UPWARDS HARPOON WITH BARB RIGHTWARDS -21BF;AL # UPWARDS HARPOON WITH BARB LEFTWARDS -21C0;AL # RIGHTWARDS HARPOON WITH BARB UPWARDS -21C1;AL # RIGHTWARDS HARPOON WITH BARB DOWNWARDS -21C2;AL # DOWNWARDS HARPOON WITH BARB RIGHTWARDS -21C3;AL # DOWNWARDS HARPOON WITH BARB LEFTWARDS -21C4;AL # RIGHTWARDS ARROW OVER LEFTWARDS ARROW -21C5;AL # UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW -21C6;AL # LEFTWARDS ARROW OVER RIGHTWARDS ARROW -21C7;AL # LEFTWARDS PAIRED ARROWS -21C8;AL # UPWARDS PAIRED ARROWS -21C9;AL # RIGHTWARDS PAIRED ARROWS -21CA;AL # DOWNWARDS PAIRED ARROWS -21CB;AL # LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON -21CC;AL # RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON -21CD;AL # LEFTWARDS DOUBLE ARROW WITH STROKE -21CE;AL # LEFT RIGHT DOUBLE ARROW WITH STROKE -21CF;AL # RIGHTWARDS DOUBLE ARROW WITH STROKE -21D0;AL # LEFTWARDS DOUBLE ARROW -21D1;AL # UPWARDS DOUBLE ARROW -21D2;AI # RIGHTWARDS DOUBLE ARROW -21D3;AL # DOWNWARDS DOUBLE ARROW -21D4;AI # LEFT RIGHT DOUBLE ARROW -21D5;AL # UP DOWN DOUBLE ARROW -21D6;AL # NORTH WEST DOUBLE ARROW -21D7;AL # NORTH EAST DOUBLE ARROW -21D8;AL # SOUTH EAST DOUBLE ARROW -21D9;AL # SOUTH WEST DOUBLE ARROW -21DA;AL # LEFTWARDS TRIPLE ARROW -21DB;AL # RIGHTWARDS TRIPLE ARROW -21DC;AL # LEFTWARDS SQUIGGLE ARROW -21DD;AL # RIGHTWARDS SQUIGGLE ARROW -21DE;AL # UPWARDS ARROW WITH DOUBLE STROKE -21DF;AL # DOWNWARDS ARROW WITH DOUBLE STROKE -21E0;AL # LEFTWARDS DASHED ARROW -21E1;AL # UPWARDS DASHED ARROW -21E2;AL # RIGHTWARDS DASHED ARROW -21E3;AL # DOWNWARDS DASHED ARROW -21E4;AL # LEFTWARDS ARROW TO BAR -21E5;AL # RIGHTWARDS ARROW TO BAR -21E6;AL # LEFTWARDS WHITE ARROW -21E7;AL # UPWARDS WHITE ARROW -21E8;AL # RIGHTWARDS WHITE ARROW -21E9;AL # DOWNWARDS WHITE ARROW -21EA;AL # UPWARDS WHITE ARROW FROM BAR -21EB;AL # UPWARDS WHITE ARROW ON PEDESTAL -21EC;AL # UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR -21ED;AL # UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR -21EE;AL # UPWARDS WHITE DOUBLE ARROW -21EF;AL # UPWARDS WHITE DOUBLE ARROW ON PEDESTAL -21F0;AL # RIGHTWARDS WHITE ARROW FROM WALL -21F1;AL # NORTH WEST ARROW TO CORNER -21F2;AL # SOUTH EAST ARROW TO CORNER -21F3;AL # UP DOWN WHITE ARROW -21F4;AL # RIGHT ARROW WITH SMALL CIRCLE -21F5;AL # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW -21F6;AL # THREE RIGHTWARDS ARROWS -21F7;AL # LEFTWARDS ARROW WITH VERTICAL STROKE -21F8;AL # RIGHTWARDS ARROW WITH VERTICAL STROKE -21F9;AL # LEFT RIGHT ARROW WITH VERTICAL STROKE -21FA;AL # LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE -21FB;AL # RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE -21FC;AL # LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE -21FD;AL # LEFTWARDS OPEN-HEADED ARROW -21FE;AL # RIGHTWARDS OPEN-HEADED ARROW -21FF;AL # LEFT RIGHT OPEN-HEADED ARROW -2200;AI # FOR ALL -2201;AL # COMPLEMENT -2202;AI # PARTIAL DIFFERENTIAL -2203;AI # THERE EXISTS -2204;AL # THERE DOES NOT EXIST -2205;AL # EMPTY SET -2206;AL # INCREMENT -2207;AI # NABLA -2208;AI # ELEMENT OF -2209;AL # NOT AN ELEMENT OF -220A;AL # SMALL ELEMENT OF -220B;AI # CONTAINS AS MEMBER -220C;AL # DOES NOT CONTAIN AS MEMBER -220D;AL # SMALL CONTAINS AS MEMBER -220E;AL # END OF PROOF -220F;AI # N-ARY PRODUCT -2210;AL # N-ARY COPRODUCT -2211;AI # N-ARY SUMMATION -2212;PR # MINUS SIGN -2213;PR # MINUS-OR-PLUS SIGN -2214;AL # DOT PLUS -2215;AI # DIVISION SLASH -2216;AL # SET MINUS -2217;AL # ASTERISK OPERATOR -2218;AL # RING OPERATOR -2219;AL # BULLET OPERATOR -221A;AI # SQUARE ROOT -221B;AL # CUBE ROOT -221C;AL # FOURTH ROOT -221D;AI # PROPORTIONAL TO -221E;AI # INFINITY -221F;AI # RIGHT ANGLE -2220;AI # ANGLE -2221;AL # MEASURED ANGLE -2222;AL # SPHERICAL ANGLE -2223;AI # DIVIDES -2224;AL # DOES NOT DIVIDE -2225;AI # PARALLEL TO -2226;AL # NOT PARALLEL TO -2227;AI # LOGICAL AND -2228;AI # LOGICAL OR -2229;AI # INTERSECTION -222A;AI # UNION -222B;AI # INTEGRAL -222C;AI # DOUBLE INTEGRAL -222D;AL # TRIPLE INTEGRAL -222E;AI # CONTOUR INTEGRAL -222F;AL # SURFACE INTEGRAL -2230;AL # VOLUME INTEGRAL -2231;AL # CLOCKWISE INTEGRAL -2232;AL # CLOCKWISE CONTOUR INTEGRAL -2233;AL # ANTICLOCKWISE CONTOUR INTEGRAL -2234;AI # THEREFORE -2235;AI # BECAUSE -2236;AI # RATIO -2237;AI # PROPORTION -2238;AL # DOT MINUS -2239;AL # EXCESS -223A;AL # GEOMETRIC PROPORTION -223B;AL # HOMOTHETIC -223C;AI # TILDE OPERATOR -223D;AI # REVERSED TILDE -223E;AL # INVERTED LAZY S -223F;AL # SINE WAVE -2240;AL # WREATH PRODUCT -2241;AL # NOT TILDE -2242;AL # MINUS TILDE -2243;AL # ASYMPTOTICALLY EQUAL TO -2244;AL # NOT ASYMPTOTICALLY EQUAL TO -2245;AL # APPROXIMATELY EQUAL TO -2246;AL # APPROXIMATELY BUT NOT ACTUALLY EQUAL TO -2247;AL # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO -2248;AI # ALMOST EQUAL TO -2249;AL # NOT ALMOST EQUAL TO -224A;AL # ALMOST EQUAL OR EQUAL TO -224B;AL # TRIPLE TILDE -224C;AI # ALL EQUAL TO -224D;AL # EQUIVALENT TO -224E;AL # GEOMETRICALLY EQUIVALENT TO -224F;AL # DIFFERENCE BETWEEN -2250;AL # APPROACHES THE LIMIT -2251;AL # GEOMETRICALLY EQUAL TO -2252;AI # APPROXIMATELY EQUAL TO OR THE IMAGE OF -2253;AL # IMAGE OF OR APPROXIMATELY EQUAL TO -2254;AL # COLON EQUALS -2255;AL # EQUALS COLON -2256;AL # RING IN EQUAL TO -2257;AL # RING EQUAL TO -2258;AL # CORRESPONDS TO -2259;AL # ESTIMATES -225A;AL # EQUIANGULAR TO -225B;AL # STAR EQUALS -225C;AL # DELTA EQUAL TO -225D;AL # EQUAL TO BY DEFINITION -225E;AL # MEASURED BY -225F;AL # QUESTIONED EQUAL TO -2260;AI # NOT EQUAL TO -2261;AI # IDENTICAL TO -2262;AL # NOT IDENTICAL TO -2263;AL # STRICTLY EQUIVALENT TO -2264;AI # LESS-THAN OR EQUAL TO -2265;AI # GREATER-THAN OR EQUAL TO -2266;AI # LESS-THAN OVER EQUAL TO -2267;AI # GREATER-THAN OVER EQUAL TO -2268;AL # LESS-THAN BUT NOT EQUAL TO -2269;AL # GREATER-THAN BUT NOT EQUAL TO -226A;AI # MUCH LESS-THAN -226B;AI # MUCH GREATER-THAN -226C;AL # BETWEEN -226D;AL # NOT EQUIVALENT TO -226E;AI # NOT LESS-THAN -226F;AI # NOT GREATER-THAN -2270;AL # NEITHER LESS-THAN NOR EQUAL TO -2271;AL # NEITHER GREATER-THAN NOR EQUAL TO -2272;AL # LESS-THAN OR EQUIVALENT TO -2273;AL # GREATER-THAN OR EQUIVALENT TO -2274;AL # NEITHER LESS-THAN NOR EQUIVALENT TO -2275;AL # NEITHER GREATER-THAN NOR EQUIVALENT TO -2276;AL # LESS-THAN OR GREATER-THAN -2277;AL # GREATER-THAN OR LESS-THAN -2278;AL # NEITHER LESS-THAN NOR GREATER-THAN -2279;AL # NEITHER GREATER-THAN NOR LESS-THAN -227A;AL # PRECEDES -227B;AL # SUCCEEDS -227C;AL # PRECEDES OR EQUAL TO -227D;AL # SUCCEEDS OR EQUAL TO -227E;AL # PRECEDES OR EQUIVALENT TO -227F;AL # SUCCEEDS OR EQUIVALENT TO -2280;AL # DOES NOT PRECEDE -2281;AL # DOES NOT SUCCEED -2282;AI # SUBSET OF -2283;AI # SUPERSET OF -2284;AL # NOT A SUBSET OF -2285;AL # NOT A SUPERSET OF -2286;AI # SUBSET OF OR EQUAL TO -2287;AI # SUPERSET OF OR EQUAL TO -2288;AL # NEITHER A SUBSET OF NOR EQUAL TO -2289;AL # NEITHER A SUPERSET OF NOR EQUAL TO -228A;AL # SUBSET OF WITH NOT EQUAL TO -228B;AL # SUPERSET OF WITH NOT EQUAL TO -228C;AL # MULTISET -228D;AL # MULTISET MULTIPLICATION -228E;AL # MULTISET UNION -228F;AL # SQUARE IMAGE OF -2290;AL # SQUARE ORIGINAL OF -2291;AL # SQUARE IMAGE OF OR EQUAL TO -2292;AL # SQUARE ORIGINAL OF OR EQUAL TO -2293;AL # SQUARE CAP -2294;AL # SQUARE CUP -2295;AI # CIRCLED PLUS -2296;AL # CIRCLED MINUS -2297;AL # CIRCLED TIMES -2298;AL # CIRCLED DIVISION SLASH -2299;AI # CIRCLED DOT OPERATOR -229A;AL # CIRCLED RING OPERATOR -229B;AL # CIRCLED ASTERISK OPERATOR -229C;AL # CIRCLED EQUALS -229D;AL # CIRCLED DASH -229E;AL # SQUARED PLUS -229F;AL # SQUARED MINUS -22A0;AL # SQUARED TIMES -22A1;AL # SQUARED DOT OPERATOR -22A2;AL # RIGHT TACK -22A3;AL # LEFT TACK -22A4;AL # DOWN TACK -22A5;AI # UP TACK -22A6;AL # ASSERTION -22A7;AL # MODELS -22A8;AL # TRUE -22A9;AL # FORCES -22AA;AL # TRIPLE VERTICAL BAR RIGHT TURNSTILE -22AB;AL # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE -22AC;AL # DOES NOT PROVE -22AD;AL # NOT TRUE -22AE;AL # DOES NOT FORCE -22AF;AL # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE -22B0;AL # PRECEDES UNDER RELATION -22B1;AL # SUCCEEDS UNDER RELATION -22B2;AL # NORMAL SUBGROUP OF -22B3;AL # CONTAINS AS NORMAL SUBGROUP -22B4;AL # NORMAL SUBGROUP OF OR EQUAL TO -22B5;AL # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO -22B6;AL # ORIGINAL OF -22B7;AL # IMAGE OF -22B8;AL # MULTIMAP -22B9;AL # HERMITIAN CONJUGATE MATRIX -22BA;AL # INTERCALATE -22BB;AL # XOR -22BC;AL # NAND -22BD;AL # NOR -22BE;AL # RIGHT ANGLE WITH ARC -22BF;AI # RIGHT TRIANGLE -22C0;AL # N-ARY LOGICAL AND -22C1;AL # N-ARY LOGICAL OR -22C2;AL # N-ARY INTERSECTION -22C3;AL # N-ARY UNION -22C4;AL # DIAMOND OPERATOR -22C5;AL # DOT OPERATOR -22C6;AL # STAR OPERATOR -22C7;AL # DIVISION TIMES -22C8;AL # BOWTIE -22C9;AL # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT -22CA;AL # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT -22CB;AL # LEFT SEMIDIRECT PRODUCT -22CC;AL # RIGHT SEMIDIRECT PRODUCT -22CD;AL # REVERSED TILDE EQUALS -22CE;AL # CURLY LOGICAL OR -22CF;AL # CURLY LOGICAL AND -22D0;AL # DOUBLE SUBSET -22D1;AL # DOUBLE SUPERSET -22D2;AL # DOUBLE INTERSECTION -22D3;AL # DOUBLE UNION -22D4;AL # PITCHFORK -22D5;AL # EQUAL AND PARALLEL TO -22D6;AL # LESS-THAN WITH DOT -22D7;AL # GREATER-THAN WITH DOT -22D8;AL # VERY MUCH LESS-THAN -22D9;AL # VERY MUCH GREATER-THAN -22DA;AL # LESS-THAN EQUAL TO OR GREATER-THAN -22DB;AL # GREATER-THAN EQUAL TO OR LESS-THAN -22DC;AL # EQUAL TO OR LESS-THAN -22DD;AL # EQUAL TO OR GREATER-THAN -22DE;AL # EQUAL TO OR PRECEDES -22DF;AL # EQUAL TO OR SUCCEEDS -22E0;AL # DOES NOT PRECEDE OR EQUAL -22E1;AL # DOES NOT SUCCEED OR EQUAL -22E2;AL # NOT SQUARE IMAGE OF OR EQUAL TO -22E3;AL # NOT SQUARE ORIGINAL OF OR EQUAL TO -22E4;AL # SQUARE IMAGE OF OR NOT EQUAL TO -22E5;AL # SQUARE ORIGINAL OF OR NOT EQUAL TO -22E6;AL # LESS-THAN BUT NOT EQUIVALENT TO -22E7;AL # GREATER-THAN BUT NOT EQUIVALENT TO -22E8;AL # PRECEDES BUT NOT EQUIVALENT TO -22E9;AL # SUCCEEDS BUT NOT EQUIVALENT TO -22EA;AL # NOT NORMAL SUBGROUP OF -22EB;AL # DOES NOT CONTAIN AS NORMAL SUBGROUP -22EC;AL # NOT NORMAL SUBGROUP OF OR EQUAL TO -22ED;AL # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL -22EE;AL # VERTICAL ELLIPSIS -22EF;AL # MIDLINE HORIZONTAL ELLIPSIS -22F0;AL # UP RIGHT DIAGONAL ELLIPSIS -22F1;AL # DOWN RIGHT DIAGONAL ELLIPSIS -22F2;AL # ELEMENT OF WITH LONG HORIZONTAL STROKE -22F3;AL # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22F4;AL # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22F5;AL # ELEMENT OF WITH DOT ABOVE -22F6;AL # ELEMENT OF WITH OVERBAR -22F7;AL # SMALL ELEMENT OF WITH OVERBAR -22F8;AL # ELEMENT OF WITH UNDERBAR -22F9;AL # ELEMENT OF WITH TWO HORIZONTAL STROKES -22FA;AL # CONTAINS WITH LONG HORIZONTAL STROKE -22FB;AL # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22FC;AL # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE -22FD;AL # CONTAINS WITH OVERBAR -22FE;AL # SMALL CONTAINS WITH OVERBAR -22FF;AL # Z NOTATION BAG MEMBERSHIP -2300;AL # DIAMETER SIGN -2301;AL # ELECTRIC ARROW -2302;AL # HOUSE -2303;AL # UP ARROWHEAD -2304;AL # DOWN ARROWHEAD -2305;AL # PROJECTIVE -2306;AL # PERSPECTIVE -2307;AL # WAVY LINE -2308;AL # LEFT CEILING -2309;AL # RIGHT CEILING -230A;AL # LEFT FLOOR -230B;AL # RIGHT FLOOR -230C;AL # BOTTOM RIGHT CROP -230D;AL # BOTTOM LEFT CROP -230E;AL # TOP RIGHT CROP -230F;AL # TOP LEFT CROP -2310;AL # REVERSED NOT SIGN -2311;AL # SQUARE LOZENGE -2312;AI # ARC -2313;AL # SEGMENT -2314;AL # SECTOR -2315;AL # TELEPHONE RECORDER -2316;AL # POSITION INDICATOR -2317;AL # VIEWDATA SQUARE -2318;AL # PLACE OF INTEREST SIGN -2319;AL # TURNED NOT SIGN -231A;AL # WATCH -231B;AL # HOURGLASS -231C;AL # TOP LEFT CORNER -231D;AL # TOP RIGHT CORNER -231E;AL # BOTTOM LEFT CORNER -231F;AL # BOTTOM RIGHT CORNER -2320;AL # TOP HALF INTEGRAL -2321;AL # BOTTOM HALF INTEGRAL -2322;AL # FROWN -2323;AL # SMILE -2324;AL # UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS -2325;AL # OPTION KEY -2326;AL # ERASE TO THE RIGHT -2327;AL # X IN A RECTANGLE BOX -2328;AL # KEYBOARD -2329;OP # LEFT-POINTING ANGLE BRACKET -232A;CL # RIGHT-POINTING ANGLE BRACKET -232B;AL # ERASE TO THE LEFT -232C;AL # BENZENE RING -232D;AL # CYLINDRICITY -232E;AL # ALL AROUND-PROFILE -232F;AL # SYMMETRY -2330;AL # TOTAL RUNOUT -2331;AL # DIMENSION ORIGIN -2332;AL # CONICAL TAPER -2333;AL # SLOPE -2334;AL # COUNTERBORE -2335;AL # COUNTERSINK -2336;AL # APL FUNCTIONAL SYMBOL I-BEAM -2337;AL # APL FUNCTIONAL SYMBOL SQUISH QUAD -2338;AL # APL FUNCTIONAL SYMBOL QUAD EQUAL -2339;AL # APL FUNCTIONAL SYMBOL QUAD DIVIDE -233A;AL # APL FUNCTIONAL SYMBOL QUAD DIAMOND -233B;AL # APL FUNCTIONAL SYMBOL QUAD JOT -233C;AL # APL FUNCTIONAL SYMBOL QUAD CIRCLE -233D;AL # APL FUNCTIONAL SYMBOL CIRCLE STILE -233E;AL # APL FUNCTIONAL SYMBOL CIRCLE JOT -233F;AL # APL FUNCTIONAL SYMBOL SLASH BAR -2340;AL # APL FUNCTIONAL SYMBOL BACKSLASH BAR -2341;AL # APL FUNCTIONAL SYMBOL QUAD SLASH -2342;AL # APL FUNCTIONAL SYMBOL QUAD BACKSLASH -2343;AL # APL FUNCTIONAL SYMBOL QUAD LESS-THAN -2344;AL # APL FUNCTIONAL SYMBOL QUAD GREATER-THAN -2345;AL # APL FUNCTIONAL SYMBOL LEFTWARDS VANE -2346;AL # APL FUNCTIONAL SYMBOL RIGHTWARDS VANE -2347;AL # APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW -2348;AL # APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW -2349;AL # APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH -234A;AL # APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR -234B;AL # APL FUNCTIONAL SYMBOL DELTA STILE -234C;AL # APL FUNCTIONAL SYMBOL QUAD DOWN CARET -234D;AL # APL FUNCTIONAL SYMBOL QUAD DELTA -234E;AL # APL FUNCTIONAL SYMBOL DOWN TACK JOT -234F;AL # APL FUNCTIONAL SYMBOL UPWARDS VANE -2350;AL # APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW -2351;AL # APL FUNCTIONAL SYMBOL UP TACK OVERBAR -2352;AL # APL FUNCTIONAL SYMBOL DEL STILE -2353;AL # APL FUNCTIONAL SYMBOL QUAD UP CARET -2354;AL # APL FUNCTIONAL SYMBOL QUAD DEL -2355;AL # APL FUNCTIONAL SYMBOL UP TACK JOT -2356;AL # APL FUNCTIONAL SYMBOL DOWNWARDS VANE -2357;AL # APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW -2358;AL # APL FUNCTIONAL SYMBOL QUOTE UNDERBAR -2359;AL # APL FUNCTIONAL SYMBOL DELTA UNDERBAR -235A;AL # APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR -235B;AL # APL FUNCTIONAL SYMBOL JOT UNDERBAR -235C;AL # APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR -235D;AL # APL FUNCTIONAL SYMBOL UP SHOE JOT -235E;AL # APL FUNCTIONAL SYMBOL QUOTE QUAD -235F;AL # APL FUNCTIONAL SYMBOL CIRCLE STAR -2360;AL # APL FUNCTIONAL SYMBOL QUAD COLON -2361;AL # APL FUNCTIONAL SYMBOL UP TACK DIAERESIS -2362;AL # APL FUNCTIONAL SYMBOL DEL DIAERESIS -2363;AL # APL FUNCTIONAL SYMBOL STAR DIAERESIS -2364;AL # APL FUNCTIONAL SYMBOL JOT DIAERESIS -2365;AL # APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS -2366;AL # APL FUNCTIONAL SYMBOL DOWN SHOE STILE -2367;AL # APL FUNCTIONAL SYMBOL LEFT SHOE STILE -2368;AL # APL FUNCTIONAL SYMBOL TILDE DIAERESIS -2369;AL # APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS -236A;AL # APL FUNCTIONAL SYMBOL COMMA BAR -236B;AL # APL FUNCTIONAL SYMBOL DEL TILDE -236C;AL # APL FUNCTIONAL SYMBOL ZILDE -236D;AL # APL FUNCTIONAL SYMBOL STILE TILDE -236E;AL # APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR -236F;AL # APL FUNCTIONAL SYMBOL QUAD NOT EQUAL -2370;AL # APL FUNCTIONAL SYMBOL QUAD QUESTION -2371;AL # APL FUNCTIONAL SYMBOL DOWN CARET TILDE -2372;AL # APL FUNCTIONAL SYMBOL UP CARET TILDE -2373;AL # APL FUNCTIONAL SYMBOL IOTA -2374;AL # APL FUNCTIONAL SYMBOL RHO -2375;AL # APL FUNCTIONAL SYMBOL OMEGA -2376;AL # APL FUNCTIONAL SYMBOL ALPHA UNDERBAR -2377;AL # APL FUNCTIONAL SYMBOL EPSILON UNDERBAR -2378;AL # APL FUNCTIONAL SYMBOL IOTA UNDERBAR -2379;AL # APL FUNCTIONAL SYMBOL OMEGA UNDERBAR -237A;AL # APL FUNCTIONAL SYMBOL ALPHA -237B;AL # NOT CHECK MARK -237C;AL # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW -237D;AL # SHOULDERED OPEN BOX -237E;AL # BELL SYMBOL -237F;AL # VERTICAL LINE WITH MIDDLE DOT -2380;AL # INSERTION SYMBOL -2381;AL # CONTINUOUS UNDERLINE SYMBOL -2382;AL # DISCONTINUOUS UNDERLINE SYMBOL -2383;AL # EMPHASIS SYMBOL -2384;AL # COMPOSITION SYMBOL -2385;AL # WHITE SQUARE WITH CENTRE VERTICAL LINE -2386;AL # ENTER SYMBOL -2387;AL # ALTERNATIVE KEY SYMBOL -2388;AL # HELM SYMBOL -2389;AL # CIRCLED HORIZONTAL BAR WITH NOTCH -238A;AL # CIRCLED TRIANGLE DOWN -238B;AL # BROKEN CIRCLE WITH NORTHWEST ARROW -238C;AL # UNDO SYMBOL -238D;AL # MONOSTABLE SYMBOL -238E;AL # HYSTERESIS SYMBOL -238F;AL # OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL -2390;AL # OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL -2391;AL # PASSIVE-PULL-DOWN-OUTPUT SYMBOL -2392;AL # PASSIVE-PULL-UP-OUTPUT SYMBOL -2393;AL # DIRECT CURRENT SYMBOL FORM TWO -2394;AL # SOFTWARE-FUNCTION SYMBOL -2395;AL # APL FUNCTIONAL SYMBOL QUAD -2396;AL # DECIMAL SEPARATOR KEY SYMBOL -2397;AL # PREVIOUS PAGE -2398;AL # NEXT PAGE -2399;AL # PRINT SCREEN SYMBOL -239A;AL # CLEAR SCREEN SYMBOL -239B;AL # LEFT PARENTHESIS UPPER HOOK -239C;AL # LEFT PARENTHESIS EXTENSION -239D;AL # LEFT PARENTHESIS LOWER HOOK -239E;AL # RIGHT PARENTHESIS UPPER HOOK -239F;AL # RIGHT PARENTHESIS EXTENSION -23A0;AL # RIGHT PARENTHESIS LOWER HOOK -23A1;AL # LEFT SQUARE BRACKET UPPER CORNER -23A2;AL # LEFT SQUARE BRACKET EXTENSION -23A3;AL # LEFT SQUARE BRACKET LOWER CORNER -23A4;AL # RIGHT SQUARE BRACKET UPPER CORNER -23A5;AL # RIGHT SQUARE BRACKET EXTENSION -23A6;AL # RIGHT SQUARE BRACKET LOWER CORNER -23A7;AL # LEFT CURLY BRACKET UPPER HOOK -23A8;AL # LEFT CURLY BRACKET MIDDLE PIECE -23A9;AL # LEFT CURLY BRACKET LOWER HOOK -23AA;AL # CURLY BRACKET EXTENSION -23AB;AL # RIGHT CURLY BRACKET UPPER HOOK -23AC;AL # RIGHT CURLY BRACKET MIDDLE PIECE -23AD;AL # RIGHT CURLY BRACKET LOWER HOOK -23AE;AL # INTEGRAL EXTENSION -23AF;AL # HORIZONTAL LINE EXTENSION -23B0;AL # UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION -23B1;AL # UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION -23B2;AL # SUMMATION TOP -23B3;AL # SUMMATION BOTTOM -23B4;OP # TOP SQUARE BRACKET -23B5;CL # BOTTOM SQUARE BRACKET -23B6;QU # BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET -23B7;AL # RADICAL SYMBOL BOTTOM -23B8;AL # LEFT VERTICAL BOX LINE -23B9;AL # RIGHT VERTICAL BOX LINE -23BA;AL # HORIZONTAL SCAN LINE-1 -23BB;AL # HORIZONTAL SCAN LINE-3 -23BC;AL # HORIZONTAL SCAN LINE-7 -23BD;AL # HORIZONTAL SCAN LINE-9 -23BE;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT -23BF;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT -23C0;AL # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE -23C1;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE -23C2;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE -23C3;AL # DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE -23C4;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE -23C5;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE -23C6;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE -23C7;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE -23C8;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE -23C9;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL -23CA;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL -23CB;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT -23CC;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT -23CD;AL # SQUARE FOOT -23CE;AL # RETURN SYMBOL -23CF;AL # EJECT SYMBOL -23D0;AL # VERTICAL LINE EXTENSION -23D1;AL # METRICAL BREVE -23D2;AL # METRICAL LONG OVER SHORT -23D3;AL # METRICAL SHORT OVER LONG -23D4;AL # METRICAL LONG OVER TWO SHORTS -23D5;AL # METRICAL TWO SHORTS OVER LONG -23D6;AL # METRICAL TWO SHORTS JOINED -23D7;AL # METRICAL TRISEME -23D8;AL # METRICAL TETRASEME -23D9;AL # METRICAL PENTASEME -23DA;AL # EARTH GROUND -23DB;AL # FUSE -2400;AL # SYMBOL FOR NULL -2401;AL # SYMBOL FOR START OF HEADING -2402;AL # SYMBOL FOR START OF TEXT -2403;AL # SYMBOL FOR END OF TEXT -2404;AL # SYMBOL FOR END OF TRANSMISSION -2405;AL # SYMBOL FOR ENQUIRY -2406;AL # SYMBOL FOR ACKNOWLEDGE -2407;AL # SYMBOL FOR BELL -2408;AL # SYMBOL FOR BACKSPACE -2409;AL # SYMBOL FOR HORIZONTAL TABULATION -240A;AL # SYMBOL FOR LINE FEED -240B;AL # SYMBOL FOR VERTICAL TABULATION -240C;AL # SYMBOL FOR FORM FEED -240D;AL # SYMBOL FOR CARRIAGE RETURN -240E;AL # SYMBOL FOR SHIFT OUT -240F;AL # SYMBOL FOR SHIFT IN -2410;AL # SYMBOL FOR DATA LINK ESCAPE -2411;AL # SYMBOL FOR DEVICE CONTROL ONE -2412;AL # SYMBOL FOR DEVICE CONTROL TWO -2413;AL # SYMBOL FOR DEVICE CONTROL THREE -2414;AL # SYMBOL FOR DEVICE CONTROL FOUR -2415;AL # SYMBOL FOR NEGATIVE ACKNOWLEDGE -2416;AL # SYMBOL FOR SYNCHRONOUS IDLE -2417;AL # SYMBOL FOR END OF TRANSMISSION BLOCK -2418;AL # SYMBOL FOR CANCEL -2419;AL # SYMBOL FOR END OF MEDIUM -241A;AL # SYMBOL FOR SUBSTITUTE -241B;AL # SYMBOL FOR ESCAPE -241C;AL # SYMBOL FOR FILE SEPARATOR -241D;AL # SYMBOL FOR GROUP SEPARATOR -241E;AL # SYMBOL FOR RECORD SEPARATOR -241F;AL # SYMBOL FOR UNIT SEPARATOR -2420;AL # SYMBOL FOR SPACE -2421;AL # SYMBOL FOR DELETE -2422;AL # BLANK SYMBOL -2423;AL # OPEN BOX -2424;AL # SYMBOL FOR NEWLINE -2425;AL # SYMBOL FOR DELETE FORM TWO -2426;AL # SYMBOL FOR SUBSTITUTE FORM TWO -2440;AL # OCR HOOK -2441;AL # OCR CHAIR -2442;AL # OCR FORK -2443;AL # OCR INVERTED FORK -2444;AL # OCR BELT BUCKLE -2445;AL # OCR BOW TIE -2446;AL # OCR BRANCH BANK IDENTIFICATION -2447;AL # OCR AMOUNT OF CHECK -2448;AL # OCR DASH -2449;AL # OCR CUSTOMER ACCOUNT NUMBER -244A;AL # OCR DOUBLE BACKSLASH -2460;AI # CIRCLED DIGIT ONE -2461;AI # CIRCLED DIGIT TWO -2462;AI # CIRCLED DIGIT THREE -2463;AI # CIRCLED DIGIT FOUR -2464;AI # CIRCLED DIGIT FIVE -2465;AI # CIRCLED DIGIT SIX -2466;AI # CIRCLED DIGIT SEVEN -2467;AI # CIRCLED DIGIT EIGHT -2468;AI # CIRCLED DIGIT NINE -2469;AI # CIRCLED NUMBER TEN -246A;AI # CIRCLED NUMBER ELEVEN -246B;AI # CIRCLED NUMBER TWELVE -246C;AI # CIRCLED NUMBER THIRTEEN -246D;AI # CIRCLED NUMBER FOURTEEN -246E;AI # CIRCLED NUMBER FIFTEEN -246F;AI # CIRCLED NUMBER SIXTEEN -2470;AI # CIRCLED NUMBER SEVENTEEN -2471;AI # CIRCLED NUMBER EIGHTEEN -2472;AI # CIRCLED NUMBER NINETEEN -2473;AI # CIRCLED NUMBER TWENTY -2474;AI # PARENTHESIZED DIGIT ONE -2475;AI # PARENTHESIZED DIGIT TWO -2476;AI # PARENTHESIZED DIGIT THREE -2477;AI # PARENTHESIZED DIGIT FOUR -2478;AI # PARENTHESIZED DIGIT FIVE -2479;AI # PARENTHESIZED DIGIT SIX -247A;AI # PARENTHESIZED DIGIT SEVEN -247B;AI # PARENTHESIZED DIGIT EIGHT -247C;AI # PARENTHESIZED DIGIT NINE -247D;AI # PARENTHESIZED NUMBER TEN -247E;AI # PARENTHESIZED NUMBER ELEVEN -247F;AI # PARENTHESIZED NUMBER TWELVE -2480;AI # PARENTHESIZED NUMBER THIRTEEN -2481;AI # PARENTHESIZED NUMBER FOURTEEN -2482;AI # PARENTHESIZED NUMBER FIFTEEN -2483;AI # PARENTHESIZED NUMBER SIXTEEN -2484;AI # PARENTHESIZED NUMBER SEVENTEEN -2485;AI # PARENTHESIZED NUMBER EIGHTEEN -2486;AI # PARENTHESIZED NUMBER NINETEEN -2487;AI # PARENTHESIZED NUMBER TWENTY -2488;AI # DIGIT ONE FULL STOP -2489;AI # DIGIT TWO FULL STOP -248A;AI # DIGIT THREE FULL STOP -248B;AI # DIGIT FOUR FULL STOP -248C;AI # DIGIT FIVE FULL STOP -248D;AI # DIGIT SIX FULL STOP -248E;AI # DIGIT SEVEN FULL STOP -248F;AI # DIGIT EIGHT FULL STOP -2490;AI # DIGIT NINE FULL STOP -2491;AI # NUMBER TEN FULL STOP -2492;AI # NUMBER ELEVEN FULL STOP -2493;AI # NUMBER TWELVE FULL STOP -2494;AI # NUMBER THIRTEEN FULL STOP -2495;AI # NUMBER FOURTEEN FULL STOP -2496;AI # NUMBER FIFTEEN FULL STOP -2497;AI # NUMBER SIXTEEN FULL STOP -2498;AI # NUMBER SEVENTEEN FULL STOP -2499;AI # NUMBER EIGHTEEN FULL STOP -249A;AI # NUMBER NINETEEN FULL STOP -249B;AI # NUMBER TWENTY FULL STOP -249C;AI # PARENTHESIZED LATIN SMALL LETTER A -249D;AI # PARENTHESIZED LATIN SMALL LETTER B -249E;AI # PARENTHESIZED LATIN SMALL LETTER C -249F;AI # PARENTHESIZED LATIN SMALL LETTER D -24A0;AI # PARENTHESIZED LATIN SMALL LETTER E -24A1;AI # PARENTHESIZED LATIN SMALL LETTER F -24A2;AI # PARENTHESIZED LATIN SMALL LETTER G -24A3;AI # PARENTHESIZED LATIN SMALL LETTER H -24A4;AI # PARENTHESIZED LATIN SMALL LETTER I -24A5;AI # PARENTHESIZED LATIN SMALL LETTER J -24A6;AI # PARENTHESIZED LATIN SMALL LETTER K -24A7;AI # PARENTHESIZED LATIN SMALL LETTER L -24A8;AI # PARENTHESIZED LATIN SMALL LETTER M -24A9;AI # PARENTHESIZED LATIN SMALL LETTER N -24AA;AI # PARENTHESIZED LATIN SMALL LETTER O -24AB;AI # PARENTHESIZED LATIN SMALL LETTER P -24AC;AI # PARENTHESIZED LATIN SMALL LETTER Q -24AD;AI # PARENTHESIZED LATIN SMALL LETTER R -24AE;AI # PARENTHESIZED LATIN SMALL LETTER S -24AF;AI # PARENTHESIZED LATIN SMALL LETTER T -24B0;AI # PARENTHESIZED LATIN SMALL LETTER U -24B1;AI # PARENTHESIZED LATIN SMALL LETTER V -24B2;AI # PARENTHESIZED LATIN SMALL LETTER W -24B3;AI # PARENTHESIZED LATIN SMALL LETTER X -24B4;AI # PARENTHESIZED LATIN SMALL LETTER Y -24B5;AI # PARENTHESIZED LATIN SMALL LETTER Z -24B6;AI # CIRCLED LATIN CAPITAL LETTER A -24B7;AI # CIRCLED LATIN CAPITAL LETTER B -24B8;AI # CIRCLED LATIN CAPITAL LETTER C -24B9;AI # CIRCLED LATIN CAPITAL LETTER D -24BA;AI # CIRCLED LATIN CAPITAL LETTER E -24BB;AI # CIRCLED LATIN CAPITAL LETTER F -24BC;AI # CIRCLED LATIN CAPITAL LETTER G -24BD;AI # CIRCLED LATIN CAPITAL LETTER H -24BE;AI # CIRCLED LATIN CAPITAL LETTER I -24BF;AI # CIRCLED LATIN CAPITAL LETTER J -24C0;AI # CIRCLED LATIN CAPITAL LETTER K -24C1;AI # CIRCLED LATIN CAPITAL LETTER L -24C2;AI # CIRCLED LATIN CAPITAL LETTER M -24C3;AI # CIRCLED LATIN CAPITAL LETTER N -24C4;AI # CIRCLED LATIN CAPITAL LETTER O -24C5;AI # CIRCLED LATIN CAPITAL LETTER P -24C6;AI # CIRCLED LATIN CAPITAL LETTER Q -24C7;AI # CIRCLED LATIN CAPITAL LETTER R -24C8;AI # CIRCLED LATIN CAPITAL LETTER S -24C9;AI # CIRCLED LATIN CAPITAL LETTER T -24CA;AI # CIRCLED LATIN CAPITAL LETTER U -24CB;AI # CIRCLED LATIN CAPITAL LETTER V -24CC;AI # CIRCLED LATIN CAPITAL LETTER W -24CD;AI # CIRCLED LATIN CAPITAL LETTER X -24CE;AI # CIRCLED LATIN CAPITAL LETTER Y -24CF;AI # CIRCLED LATIN CAPITAL LETTER Z -24D0;AI # CIRCLED LATIN SMALL LETTER A -24D1;AI # CIRCLED LATIN SMALL LETTER B -24D2;AI # CIRCLED LATIN SMALL LETTER C -24D3;AI # CIRCLED LATIN SMALL LETTER D -24D4;AI # CIRCLED LATIN SMALL LETTER E -24D5;AI # CIRCLED LATIN SMALL LETTER F -24D6;AI # CIRCLED LATIN SMALL LETTER G -24D7;AI # CIRCLED LATIN SMALL LETTER H -24D8;AI # CIRCLED LATIN SMALL LETTER I -24D9;AI # CIRCLED LATIN SMALL LETTER J -24DA;AI # CIRCLED LATIN SMALL LETTER K -24DB;AI # CIRCLED LATIN SMALL LETTER L -24DC;AI # CIRCLED LATIN SMALL LETTER M -24DD;AI # CIRCLED LATIN SMALL LETTER N -24DE;AI # CIRCLED LATIN SMALL LETTER O -24DF;AI # CIRCLED LATIN SMALL LETTER P -24E0;AI # CIRCLED LATIN SMALL LETTER Q -24E1;AI # CIRCLED LATIN SMALL LETTER R -24E2;AI # CIRCLED LATIN SMALL LETTER S -24E3;AI # CIRCLED LATIN SMALL LETTER T -24E4;AI # CIRCLED LATIN SMALL LETTER U -24E5;AI # CIRCLED LATIN SMALL LETTER V -24E6;AI # CIRCLED LATIN SMALL LETTER W -24E7;AI # CIRCLED LATIN SMALL LETTER X -24E8;AI # CIRCLED LATIN SMALL LETTER Y -24E9;AI # CIRCLED LATIN SMALL LETTER Z -24EA;AI # CIRCLED DIGIT ZERO -24EB;AI # NEGATIVE CIRCLED NUMBER ELEVEN -24EC;AI # NEGATIVE CIRCLED NUMBER TWELVE -24ED;AI # NEGATIVE CIRCLED NUMBER THIRTEEN -24EE;AI # NEGATIVE CIRCLED NUMBER FOURTEEN -24EF;AI # NEGATIVE CIRCLED NUMBER FIFTEEN -24F0;AI # NEGATIVE CIRCLED NUMBER SIXTEEN -24F1;AI # NEGATIVE CIRCLED NUMBER SEVENTEEN -24F2;AI # NEGATIVE CIRCLED NUMBER EIGHTEEN -24F3;AI # NEGATIVE CIRCLED NUMBER NINETEEN -24F4;AI # NEGATIVE CIRCLED NUMBER TWENTY -24F5;AI # DOUBLE CIRCLED DIGIT ONE -24F6;AI # DOUBLE CIRCLED DIGIT TWO -24F7;AI # DOUBLE CIRCLED DIGIT THREE -24F8;AI # DOUBLE CIRCLED DIGIT FOUR -24F9;AI # DOUBLE CIRCLED DIGIT FIVE -24FA;AI # DOUBLE CIRCLED DIGIT SIX -24FB;AI # DOUBLE CIRCLED DIGIT SEVEN -24FC;AI # DOUBLE CIRCLED DIGIT EIGHT -24FD;AI # DOUBLE CIRCLED DIGIT NINE -24FE;AI # DOUBLE CIRCLED NUMBER TEN -24FF;AL # NEGATIVE CIRCLED DIGIT ZERO -2500;AI # BOX DRAWINGS LIGHT HORIZONTAL -2501;AI # BOX DRAWINGS HEAVY HORIZONTAL -2502;AI # BOX DRAWINGS LIGHT VERTICAL -2503;AI # BOX DRAWINGS HEAVY VERTICAL -2504;AI # BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL -2505;AI # BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL -2506;AI # BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL -2507;AI # BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL -2508;AI # BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL -2509;AI # BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL -250A;AI # BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL -250B;AI # BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL -250C;AI # BOX DRAWINGS LIGHT DOWN AND RIGHT -250D;AI # BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY -250E;AI # BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT -250F;AI # BOX DRAWINGS HEAVY DOWN AND RIGHT -2510;AI # BOX DRAWINGS LIGHT DOWN AND LEFT -2511;AI # BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY -2512;AI # BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT -2513;AI # BOX DRAWINGS HEAVY DOWN AND LEFT -2514;AI # BOX DRAWINGS LIGHT UP AND RIGHT -2515;AI # BOX DRAWINGS UP LIGHT AND RIGHT HEAVY -2516;AI # BOX DRAWINGS UP HEAVY AND RIGHT LIGHT -2517;AI # BOX DRAWINGS HEAVY UP AND RIGHT -2518;AI # BOX DRAWINGS LIGHT UP AND LEFT -2519;AI # BOX DRAWINGS UP LIGHT AND LEFT HEAVY -251A;AI # BOX DRAWINGS UP HEAVY AND LEFT LIGHT -251B;AI # BOX DRAWINGS HEAVY UP AND LEFT -251C;AI # BOX DRAWINGS LIGHT VERTICAL AND RIGHT -251D;AI # BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY -251E;AI # BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT -251F;AI # BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT -2520;AI # BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT -2521;AI # BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY -2522;AI # BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY -2523;AI # BOX DRAWINGS HEAVY VERTICAL AND RIGHT -2524;AI # BOX DRAWINGS LIGHT VERTICAL AND LEFT -2525;AI # BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY -2526;AI # BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT -2527;AI # BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT -2528;AI # BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT -2529;AI # BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY -252A;AI # BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY -252B;AI # BOX DRAWINGS HEAVY VERTICAL AND LEFT -252C;AI # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL -252D;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT -252E;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT -252F;AI # BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY -2530;AI # BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT -2531;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY -2532;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY -2533;AI # BOX DRAWINGS HEAVY DOWN AND HORIZONTAL -2534;AI # BOX DRAWINGS LIGHT UP AND HORIZONTAL -2535;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT -2536;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT -2537;AI # BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY -2538;AI # BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT -2539;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY -253A;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY -253B;AI # BOX DRAWINGS HEAVY UP AND HORIZONTAL -253C;AI # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL -253D;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT -253E;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT -253F;AI # BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY -2540;AI # BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT -2541;AI # BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT -2542;AI # BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT -2543;AI # BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT -2544;AI # BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT -2545;AI # BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT -2546;AI # BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT -2547;AI # BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY -2548;AI # BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY -2549;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY -254A;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY -254B;AI # BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL -254C;AL # BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL -254D;AL # BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL -254E;AL # BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL -254F;AL # BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL -2550;AI # BOX DRAWINGS DOUBLE HORIZONTAL -2551;AI # BOX DRAWINGS DOUBLE VERTICAL -2552;AI # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE -2553;AI # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE -2554;AI # BOX DRAWINGS DOUBLE DOWN AND RIGHT -2555;AI # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE -2556;AI # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE -2557;AI # BOX DRAWINGS DOUBLE DOWN AND LEFT -2558;AI # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE -2559;AI # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE -255A;AI # BOX DRAWINGS DOUBLE UP AND RIGHT -255B;AI # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE -255C;AI # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE -255D;AI # BOX DRAWINGS DOUBLE UP AND LEFT -255E;AI # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE -255F;AI # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE -2560;AI # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT -2561;AI # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE -2562;AI # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE -2563;AI # BOX DRAWINGS DOUBLE VERTICAL AND LEFT -2564;AI # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE -2565;AI # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE -2566;AI # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL -2567;AI # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE -2568;AI # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE -2569;AI # BOX DRAWINGS DOUBLE UP AND HORIZONTAL -256A;AI # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE -256B;AI # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE -256C;AI # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL -256D;AI # BOX DRAWINGS LIGHT ARC DOWN AND RIGHT -256E;AI # BOX DRAWINGS LIGHT ARC DOWN AND LEFT -256F;AI # BOX DRAWINGS LIGHT ARC UP AND LEFT -2570;AI # BOX DRAWINGS LIGHT ARC UP AND RIGHT -2571;AI # BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT -2572;AI # BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT -2573;AI # BOX DRAWINGS LIGHT DIAGONAL CROSS -2574;AI # BOX DRAWINGS LIGHT LEFT -2575;AL # BOX DRAWINGS LIGHT UP -2576;AL # BOX DRAWINGS LIGHT RIGHT -2577;AL # BOX DRAWINGS LIGHT DOWN -2578;AL # BOX DRAWINGS HEAVY LEFT -2579;AL # BOX DRAWINGS HEAVY UP -257A;AL # BOX DRAWINGS HEAVY RIGHT -257B;AL # BOX DRAWINGS HEAVY DOWN -257C;AL # BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT -257D;AL # BOX DRAWINGS LIGHT UP AND HEAVY DOWN -257E;AL # BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT -257F;AL # BOX DRAWINGS HEAVY UP AND LIGHT DOWN -2580;AI # UPPER HALF BLOCK -2581;AI # LOWER ONE EIGHTH BLOCK -2582;AI # LOWER ONE QUARTER BLOCK -2583;AI # LOWER THREE EIGHTHS BLOCK -2584;AI # LOWER HALF BLOCK -2585;AI # LOWER FIVE EIGHTHS BLOCK -2586;AI # LOWER THREE QUARTERS BLOCK -2587;AI # LOWER SEVEN EIGHTHS BLOCK -2588;AI # FULL BLOCK -2589;AI # LEFT SEVEN EIGHTHS BLOCK -258A;AI # LEFT THREE QUARTERS BLOCK -258B;AI # LEFT FIVE EIGHTHS BLOCK -258C;AI # LEFT HALF BLOCK -258D;AI # LEFT THREE EIGHTHS BLOCK -258E;AI # LEFT ONE QUARTER BLOCK -258F;AI # LEFT ONE EIGHTH BLOCK -2590;AL # RIGHT HALF BLOCK -2591;AL # LIGHT SHADE -2592;AI # MEDIUM SHADE -2593;AI # DARK SHADE -2594;AI # UPPER ONE EIGHTH BLOCK -2595;AI # RIGHT ONE EIGHTH BLOCK -2596;AL # QUADRANT LOWER LEFT -2597;AL # QUADRANT LOWER RIGHT -2598;AL # QUADRANT UPPER LEFT -2599;AL # QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT -259A;AL # QUADRANT UPPER LEFT AND LOWER RIGHT -259B;AL # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT -259C;AL # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT -259D;AL # QUADRANT UPPER RIGHT -259E;AL # QUADRANT UPPER RIGHT AND LOWER LEFT -259F;AL # QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT -25A0;AI # BLACK SQUARE -25A1;AI # WHITE SQUARE -25A2;AL # WHITE SQUARE WITH ROUNDED CORNERS -25A3;AI # WHITE SQUARE CONTAINING BLACK SMALL SQUARE -25A4;AI # SQUARE WITH HORIZONTAL FILL -25A5;AI # SQUARE WITH VERTICAL FILL -25A6;AI # SQUARE WITH ORTHOGONAL CROSSHATCH FILL -25A7;AI # SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL -25A8;AI # SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL -25A9;AI # SQUARE WITH DIAGONAL CROSSHATCH FILL -25AA;AL # BLACK SMALL SQUARE -25AB;AL # WHITE SMALL SQUARE -25AC;AL # BLACK RECTANGLE -25AD;AL # WHITE RECTANGLE -25AE;AL # BLACK VERTICAL RECTANGLE -25AF;AL # WHITE VERTICAL RECTANGLE -25B0;AL # BLACK PARALLELOGRAM -25B1;AL # WHITE PARALLELOGRAM -25B2;AI # BLACK UP-POINTING TRIANGLE -25B3;AI # WHITE UP-POINTING TRIANGLE -25B4;AL # BLACK UP-POINTING SMALL TRIANGLE -25B5;AL # WHITE UP-POINTING SMALL TRIANGLE -25B6;AI # BLACK RIGHT-POINTING TRIANGLE -25B7;AI # WHITE RIGHT-POINTING TRIANGLE -25B8;AL # BLACK RIGHT-POINTING SMALL TRIANGLE -25B9;AL # WHITE RIGHT-POINTING SMALL TRIANGLE -25BA;AL # BLACK RIGHT-POINTING POINTER -25BB;AL # WHITE RIGHT-POINTING POINTER -25BC;AI # BLACK DOWN-POINTING TRIANGLE -25BD;AI # WHITE DOWN-POINTING TRIANGLE -25BE;AL # BLACK DOWN-POINTING SMALL TRIANGLE -25BF;AL # WHITE DOWN-POINTING SMALL TRIANGLE -25C0;AI # BLACK LEFT-POINTING TRIANGLE -25C1;AI # WHITE LEFT-POINTING TRIANGLE -25C2;AL # BLACK LEFT-POINTING SMALL TRIANGLE -25C3;AL # WHITE LEFT-POINTING SMALL TRIANGLE -25C4;AL # BLACK LEFT-POINTING POINTER -25C5;AL # WHITE LEFT-POINTING POINTER -25C6;AI # BLACK DIAMOND -25C7;AI # WHITE DIAMOND -25C8;AI # WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND -25C9;AL # FISHEYE -25CA;AL # LOZENGE -25CB;AI # WHITE CIRCLE -25CC;AL # DOTTED CIRCLE -25CD;AL # CIRCLE WITH VERTICAL FILL -25CE;AI # BULLSEYE -25CF;AI # BLACK CIRCLE -25D0;AI # CIRCLE WITH LEFT HALF BLACK -25D1;AI # CIRCLE WITH RIGHT HALF BLACK -25D2;AL # CIRCLE WITH LOWER HALF BLACK -25D3;AL # CIRCLE WITH UPPER HALF BLACK -25D4;AL # CIRCLE WITH UPPER RIGHT QUADRANT BLACK -25D5;AL # CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK -25D6;AL # LEFT HALF BLACK CIRCLE -25D7;AL # RIGHT HALF BLACK CIRCLE -25D8;AL # INVERSE BULLET -25D9;AL # INVERSE WHITE CIRCLE -25DA;AL # UPPER HALF INVERSE WHITE CIRCLE -25DB;AL # LOWER HALF INVERSE WHITE CIRCLE -25DC;AL # UPPER LEFT QUADRANT CIRCULAR ARC -25DD;AL # UPPER RIGHT QUADRANT CIRCULAR ARC -25DE;AL # LOWER RIGHT QUADRANT CIRCULAR ARC -25DF;AL # LOWER LEFT QUADRANT CIRCULAR ARC -25E0;AL # UPPER HALF CIRCLE -25E1;AL # LOWER HALF CIRCLE -25E2;AI # BLACK LOWER RIGHT TRIANGLE -25E3;AI # BLACK LOWER LEFT TRIANGLE -25E4;AI # BLACK UPPER LEFT TRIANGLE -25E5;AI # BLACK UPPER RIGHT TRIANGLE -25E6;AL # WHITE BULLET -25E7;AL # SQUARE WITH LEFT HALF BLACK -25E8;AL # SQUARE WITH RIGHT HALF BLACK -25E9;AL # SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK -25EA;AL # SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK -25EB;AL # WHITE SQUARE WITH VERTICAL BISECTING LINE -25EC;AL # WHITE UP-POINTING TRIANGLE WITH DOT -25ED;AL # UP-POINTING TRIANGLE WITH LEFT HALF BLACK -25EE;AL # UP-POINTING TRIANGLE WITH RIGHT HALF BLACK -25EF;AI # LARGE CIRCLE -25F0;AL # WHITE SQUARE WITH UPPER LEFT QUADRANT -25F1;AL # WHITE SQUARE WITH LOWER LEFT QUADRANT -25F2;AL # WHITE SQUARE WITH LOWER RIGHT QUADRANT -25F3;AL # WHITE SQUARE WITH UPPER RIGHT QUADRANT -25F4;AL # WHITE CIRCLE WITH UPPER LEFT QUADRANT -25F5;AL # WHITE CIRCLE WITH LOWER LEFT QUADRANT -25F6;AL # WHITE CIRCLE WITH LOWER RIGHT QUADRANT -25F7;AL # WHITE CIRCLE WITH UPPER RIGHT QUADRANT -25F8;AL # UPPER LEFT TRIANGLE -25F9;AL # UPPER RIGHT TRIANGLE -25FA;AL # LOWER LEFT TRIANGLE -25FB;AL # WHITE MEDIUM SQUARE -25FC;AL # BLACK MEDIUM SQUARE -25FD;AL # WHITE MEDIUM SMALL SQUARE -25FE;AL # BLACK MEDIUM SMALL SQUARE -25FF;AL # LOWER RIGHT TRIANGLE -2600;AL # BLACK SUN WITH RAYS -2601;AL # CLOUD -2602;AL # UMBRELLA -2603;AL # SNOWMAN -2604;AL # COMET -2605;AI # BLACK STAR -2606;AI # WHITE STAR -2607;AL # LIGHTNING -2608;AL # THUNDERSTORM -2609;AI # SUN -260A;AL # ASCENDING NODE -260B;AL # DESCENDING NODE -260C;AL # CONJUNCTION -260D;AL # OPPOSITION -260E;AI # BLACK TELEPHONE -260F;AI # WHITE TELEPHONE -2610;AL # BALLOT BOX -2611;AL # BALLOT BOX WITH CHECK -2612;AL # BALLOT BOX WITH X -2613;AL # SALTIRE -2614;AI # UMBRELLA WITH RAIN DROPS -2615;AI # HOT BEVERAGE -2616;AI # WHITE SHOGI PIECE -2617;AI # BLACK SHOGI PIECE -2618;AL # SHAMROCK -2619;AL # REVERSED ROTATED FLORAL HEART BULLET -261A;AL # BLACK LEFT POINTING INDEX -261B;AL # BLACK RIGHT POINTING INDEX -261C;AI # WHITE LEFT POINTING INDEX -261D;AL # WHITE UP POINTING INDEX -261E;AI # WHITE RIGHT POINTING INDEX -261F;AL # WHITE DOWN POINTING INDEX -2620;AL # SKULL AND CROSSBONES -2621;AL # CAUTION SIGN -2622;AL # RADIOACTIVE SIGN -2623;AL # BIOHAZARD SIGN -2624;AL # CADUCEUS -2625;AL # ANKH -2626;AL # ORTHODOX CROSS -2627;AL # CHI RHO -2628;AL # CROSS OF LORRAINE -2629;AL # CROSS OF JERUSALEM -262A;AL # STAR AND CRESCENT -262B;AL # FARSI SYMBOL -262C;AL # ADI SHAKTI -262D;AL # HAMMER AND SICKLE -262E;AL # PEACE SYMBOL -262F;AL # YIN YANG -2630;AL # TRIGRAM FOR HEAVEN -2631;AL # TRIGRAM FOR LAKE -2632;AL # TRIGRAM FOR FIRE -2633;AL # TRIGRAM FOR THUNDER -2634;AL # TRIGRAM FOR WIND -2635;AL # TRIGRAM FOR WATER -2636;AL # TRIGRAM FOR MOUNTAIN -2637;AL # TRIGRAM FOR EARTH -2638;AL # WHEEL OF DHARMA -2639;AL # WHITE FROWNING FACE -263A;AL # WHITE SMILING FACE -263B;AL # BLACK SMILING FACE -263C;AL # WHITE SUN WITH RAYS -263D;AL # FIRST QUARTER MOON -263E;AL # LAST QUARTER MOON -263F;AL # MERCURY -2640;AI # FEMALE SIGN -2641;AL # EARTH -2642;AI # MALE SIGN -2643;AL # JUPITER -2644;AL # SATURN -2645;AL # URANUS -2646;AL # NEPTUNE -2647;AL # PLUTO -2648;AL # ARIES -2649;AL # TAURUS -264A;AL # GEMINI -264B;AL # CANCER -264C;AL # LEO -264D;AL # VIRGO -264E;AL # LIBRA -264F;AL # SCORPIUS -2650;AL # SAGITTARIUS -2651;AL # CAPRICORN -2652;AL # AQUARIUS -2653;AL # PISCES -2654;AL # WHITE CHESS KING -2655;AL # WHITE CHESS QUEEN -2656;AL # WHITE CHESS ROOK -2657;AL # WHITE CHESS BISHOP -2658;AL # WHITE CHESS KNIGHT -2659;AL # WHITE CHESS PAWN -265A;AL # BLACK CHESS KING -265B;AL # BLACK CHESS QUEEN -265C;AL # BLACK CHESS ROOK -265D;AL # BLACK CHESS BISHOP -265E;AL # BLACK CHESS KNIGHT -265F;AL # BLACK CHESS PAWN -2660;AI # BLACK SPADE SUIT -2661;AI # WHITE HEART SUIT -2662;AL # WHITE DIAMOND SUIT -2663;AI # BLACK CLUB SUIT -2664;AI # WHITE SPADE SUIT -2665;AI # BLACK HEART SUIT -2666;AL # BLACK DIAMOND SUIT -2667;AI # WHITE CLUB SUIT -2668;AI # HOT SPRINGS -2669;AI # QUARTER NOTE -266A;AI # EIGHTH NOTE -266B;AL # BEAMED EIGHTH NOTES -266C;AI # BEAMED SIXTEENTH NOTES -266D;AI # MUSIC FLAT SIGN -266E;AL # MUSIC NATURAL SIGN -266F;AI # MUSIC SHARP SIGN -2670;AL # WEST SYRIAC CROSS -2671;AL # EAST SYRIAC CROSS -2672;AL # UNIVERSAL RECYCLING SYMBOL -2673;AL # RECYCLING SYMBOL FOR TYPE-1 PLASTICS -2674;AL # RECYCLING SYMBOL FOR TYPE-2 PLASTICS -2675;AL # RECYCLING SYMBOL FOR TYPE-3 PLASTICS -2676;AL # RECYCLING SYMBOL FOR TYPE-4 PLASTICS -2677;AL # RECYCLING SYMBOL FOR TYPE-5 PLASTICS -2678;AL # RECYCLING SYMBOL FOR TYPE-6 PLASTICS -2679;AL # RECYCLING SYMBOL FOR TYPE-7 PLASTICS -267A;AL # RECYCLING SYMBOL FOR GENERIC MATERIALS -267B;AL # BLACK UNIVERSAL RECYCLING SYMBOL -267C;AL # RECYCLED PAPER SYMBOL -267D;AL # PARTIALLY-RECYCLED PAPER SYMBOL -267E;AL # PERMANENT PAPER SIGN -267F;AL # WHEELCHAIR SYMBOL -2680;AL # DIE FACE-1 -2681;AL # DIE FACE-2 -2682;AL # DIE FACE-3 -2683;AL # DIE FACE-4 -2684;AL # DIE FACE-5 -2685;AL # DIE FACE-6 -2686;AL # WHITE CIRCLE WITH DOT RIGHT -2687;AL # WHITE CIRCLE WITH TWO DOTS -2688;AL # BLACK CIRCLE WITH WHITE DOT RIGHT -2689;AL # BLACK CIRCLE WITH TWO WHITE DOTS -268A;AL # MONOGRAM FOR YANG -268B;AL # MONOGRAM FOR YIN -268C;AL # DIGRAM FOR GREATER YANG -268D;AL # DIGRAM FOR LESSER YIN -268E;AL # DIGRAM FOR LESSER YANG -268F;AL # DIGRAM FOR GREATER YIN -2690;AL # WHITE FLAG -2691;AL # BLACK FLAG -2692;AL # HAMMER AND PICK -2693;AL # ANCHOR -2694;AL # CROSSED SWORDS -2695;AL # STAFF OF AESCULAPIUS -2696;AL # SCALES -2697;AL # ALEMBIC -2698;AL # FLOWER -2699;AL # GEAR -269A;AL # STAFF OF HERMES -269B;AL # ATOM SYMBOL -269C;AL # FLEUR-DE-LIS -26A0;AL # WARNING SIGN -26A1;AL # HIGH VOLTAGE SIGN -26A2;AL # DOUBLED FEMALE SIGN -26A3;AL # DOUBLED MALE SIGN -26A4;AL # INTERLOCKED FEMALE AND MALE SIGN -26A5;AL # MALE AND FEMALE SIGN -26A6;AL # MALE WITH STROKE SIGN -26A7;AL # MALE WITH STROKE AND MALE AND FEMALE SIGN -26A8;AL # VERTICAL MALE WITH STROKE SIGN -26A9;AL # HORIZONTAL MALE WITH STROKE SIGN -26AA;AL # MEDIUM WHITE CIRCLE -26AB;AL # MEDIUM BLACK CIRCLE -26AC;AL # MEDIUM SMALL WHITE CIRCLE -26AD;AL # MARRIAGE SYMBOL -26AE;AL # DIVORCE SYMBOL -26AF;AL # UNMARRIED PARTNERSHIP SYMBOL -26B0;AL # COFFIN -26B1;AL # FUNERAL URN -2701;AL # UPPER BLADE SCISSORS -2702;AL # BLACK SCISSORS -2703;AL # LOWER BLADE SCISSORS -2704;AL # WHITE SCISSORS -2706;AL # TELEPHONE LOCATION SIGN -2707;AL # TAPE DRIVE -2708;AL # AIRPLANE -2709;AL # ENVELOPE -270C;AL # VICTORY HAND -270D;AL # WRITING HAND -270E;AL # LOWER RIGHT PENCIL -270F;AL # PENCIL -2710;AL # UPPER RIGHT PENCIL -2711;AL # WHITE NIB -2712;AL # BLACK NIB -2713;AL # CHECK MARK -2714;AL # HEAVY CHECK MARK -2715;AL # MULTIPLICATION X -2716;AL # HEAVY MULTIPLICATION X -2717;AL # BALLOT X -2718;AL # HEAVY BALLOT X -2719;AL # OUTLINED GREEK CROSS -271A;AL # HEAVY GREEK CROSS -271B;AL # OPEN CENTRE CROSS -271C;AL # HEAVY OPEN CENTRE CROSS -271D;AL # LATIN CROSS -271E;AL # SHADOWED WHITE LATIN CROSS -271F;AL # OUTLINED LATIN CROSS -2720;AL # MALTESE CROSS -2721;AL # STAR OF DAVID -2722;AL # FOUR TEARDROP-SPOKED ASTERISK -2723;AL # FOUR BALLOON-SPOKED ASTERISK -2724;AL # HEAVY FOUR BALLOON-SPOKED ASTERISK -2725;AL # FOUR CLUB-SPOKED ASTERISK -2726;AL # BLACK FOUR POINTED STAR -2727;AL # WHITE FOUR POINTED STAR -2729;AL # STRESS OUTLINED WHITE STAR -272A;AL # CIRCLED WHITE STAR -272B;AL # OPEN CENTRE BLACK STAR -272C;AL # BLACK CENTRE WHITE STAR -272D;AL # OUTLINED BLACK STAR -272E;AL # HEAVY OUTLINED BLACK STAR -272F;AL # PINWHEEL STAR -2730;AL # SHADOWED WHITE STAR -2731;AL # HEAVY ASTERISK -2732;AL # OPEN CENTRE ASTERISK -2733;AL # EIGHT SPOKED ASTERISK -2734;AL # EIGHT POINTED BLACK STAR -2735;AL # EIGHT POINTED PINWHEEL STAR -2736;AL # SIX POINTED BLACK STAR -2737;AL # EIGHT POINTED RECTILINEAR BLACK STAR -2738;AL # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR -2739;AL # TWELVE POINTED BLACK STAR -273A;AL # SIXTEEN POINTED ASTERISK -273B;AL # TEARDROP-SPOKED ASTERISK -273C;AL # OPEN CENTRE TEARDROP-SPOKED ASTERISK -273D;AL # HEAVY TEARDROP-SPOKED ASTERISK -273E;AL # SIX PETALLED BLACK AND WHITE FLORETTE -273F;AL # BLACK FLORETTE -2740;AL # WHITE FLORETTE -2741;AL # EIGHT PETALLED OUTLINED BLACK FLORETTE -2742;AL # CIRCLED OPEN CENTRE EIGHT POINTED STAR -2743;AL # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK -2744;AL # SNOWFLAKE -2745;AL # TIGHT TRIFOLIATE SNOWFLAKE -2746;AL # HEAVY CHEVRON SNOWFLAKE -2747;AL # SPARKLE -2748;AL # HEAVY SPARKLE -2749;AL # BALLOON-SPOKED ASTERISK -274A;AL # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -274B;AL # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -274D;AL # SHADOWED WHITE CIRCLE -274F;AL # LOWER RIGHT DROP-SHADOWED WHITE SQUARE -2750;AL # UPPER RIGHT DROP-SHADOWED WHITE SQUARE -2751;AL # LOWER RIGHT SHADOWED WHITE SQUARE -2752;AL # UPPER RIGHT SHADOWED WHITE SQUARE -2756;AL # BLACK DIAMOND MINUS WHITE X -2758;AL # LIGHT VERTICAL BAR -2759;AL # MEDIUM VERTICAL BAR -275A;AL # HEAVY VERTICAL BAR -275B;QU # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT -275C;QU # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT -275D;QU # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT -275E;QU # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT -2761;AL # CURVED STEM PARAGRAPH SIGN ORNAMENT -2762;EX # HEAVY EXCLAMATION MARK ORNAMENT -2763;EX # HEAVY HEART EXCLAMATION MARK ORNAMENT -2764;AL # HEAVY BLACK HEART -2765;AL # ROTATED HEAVY BLACK HEART BULLET -2766;AL # FLORAL HEART -2767;AL # ROTATED FLORAL HEART BULLET -2768;OP # MEDIUM LEFT PARENTHESIS ORNAMENT -2769;CL # MEDIUM RIGHT PARENTHESIS ORNAMENT -276A;OP # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT -276B;CL # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT -276C;OP # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT -276D;CL # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT -276E;OP # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT -276F;CL # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT -2770;OP # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT -2771;CL # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT -2772;OP # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT -2773;CL # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT -2774;OP # MEDIUM LEFT CURLY BRACKET ORNAMENT -2775;CL # MEDIUM RIGHT CURLY BRACKET ORNAMENT -2776;AI # DINGBAT NEGATIVE CIRCLED DIGIT ONE -2777;AI # DINGBAT NEGATIVE CIRCLED DIGIT TWO -2778;AI # DINGBAT NEGATIVE CIRCLED DIGIT THREE -2779;AI # DINGBAT NEGATIVE CIRCLED DIGIT FOUR -277A;AI # DINGBAT NEGATIVE CIRCLED DIGIT FIVE -277B;AI # DINGBAT NEGATIVE CIRCLED DIGIT SIX -277C;AI # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN -277D;AI # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT -277E;AI # DINGBAT NEGATIVE CIRCLED DIGIT NINE -277F;AI # DINGBAT NEGATIVE CIRCLED NUMBER TEN -2780;AI # DINGBAT CIRCLED SANS-SERIF DIGIT ONE -2781;AI # DINGBAT CIRCLED SANS-SERIF DIGIT TWO -2782;AI # DINGBAT CIRCLED SANS-SERIF DIGIT THREE -2783;AI # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR -2784;AI # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE -2785;AI # DINGBAT CIRCLED SANS-SERIF DIGIT SIX -2786;AI # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN -2787;AI # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT -2788;AI # DINGBAT CIRCLED SANS-SERIF DIGIT NINE -2789;AI # DINGBAT CIRCLED SANS-SERIF NUMBER TEN -278A;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE -278B;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO -278C;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE -278D;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR -278E;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE -278F;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX -2790;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN -2791;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT -2792;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE -2793;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN -2794;AL # HEAVY WIDE-HEADED RIGHTWARDS ARROW -2798;AL # HEAVY SOUTH EAST ARROW -2799;AL # HEAVY RIGHTWARDS ARROW -279A;AL # HEAVY NORTH EAST ARROW -279B;AL # DRAFTING POINT RIGHTWARDS ARROW -279C;AL # HEAVY ROUND-TIPPED RIGHTWARDS ARROW -279D;AL # TRIANGLE-HEADED RIGHTWARDS ARROW -279E;AL # HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW -279F;AL # DASHED TRIANGLE-HEADED RIGHTWARDS ARROW -27A0;AL # HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW -27A1;AL # BLACK RIGHTWARDS ARROW -27A2;AL # THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD -27A3;AL # THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD -27A4;AL # BLACK RIGHTWARDS ARROWHEAD -27A5;AL # HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW -27A6;AL # HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW -27A7;AL # SQUAT BLACK RIGHTWARDS ARROW -27A8;AL # HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW -27A9;AL # RIGHT-SHADED WHITE RIGHTWARDS ARROW -27AA;AL # LEFT-SHADED WHITE RIGHTWARDS ARROW -27AB;AL # BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW -27AC;AL # FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW -27AD;AL # HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27AE;AL # HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27AF;AL # NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27B1;AL # NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27B2;AL # CIRCLED HEAVY WHITE RIGHTWARDS ARROW -27B3;AL # WHITE-FEATHERED RIGHTWARDS ARROW -27B4;AL # BLACK-FEATHERED SOUTH EAST ARROW -27B5;AL # BLACK-FEATHERED RIGHTWARDS ARROW -27B6;AL # BLACK-FEATHERED NORTH EAST ARROW -27B7;AL # HEAVY BLACK-FEATHERED SOUTH EAST ARROW -27B8;AL # HEAVY BLACK-FEATHERED RIGHTWARDS ARROW -27B9;AL # HEAVY BLACK-FEATHERED NORTH EAST ARROW -27BA;AL # TEARDROP-BARBED RIGHTWARDS ARROW -27BB;AL # HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW -27BC;AL # WEDGE-TAILED RIGHTWARDS ARROW -27BD;AL # HEAVY WEDGE-TAILED RIGHTWARDS ARROW -27BE;AL # OPEN-OUTLINED RIGHTWARDS ARROW -27C0;AL # THREE DIMENSIONAL ANGLE -27C1;AL # WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE -27C2;AL # PERPENDICULAR -27C3;AL # OPEN SUBSET -27C4;AL # OPEN SUPERSET -27C5;OP # LEFT S-SHAPED BAG DELIMITER -27C6;CL # RIGHT S-SHAPED BAG DELIMITER -27D0;AL # WHITE DIAMOND WITH CENTRED DOT -27D1;AL # AND WITH DOT -27D2;AL # ELEMENT OF OPENING UPWARDS -27D3;AL # LOWER RIGHT CORNER WITH DOT -27D4;AL # UPPER LEFT CORNER WITH DOT -27D5;AL # LEFT OUTER JOIN -27D6;AL # RIGHT OUTER JOIN -27D7;AL # FULL OUTER JOIN -27D8;AL # LARGE UP TACK -27D9;AL # LARGE DOWN TACK -27DA;AL # LEFT AND RIGHT DOUBLE TURNSTILE -27DB;AL # LEFT AND RIGHT TACK -27DC;AL # LEFT MULTIMAP -27DD;AL # LONG RIGHT TACK -27DE;AL # LONG LEFT TACK -27DF;AL # UP TACK WITH CIRCLE ABOVE -27E0;AL # LOZENGE DIVIDED BY HORIZONTAL RULE -27E1;AL # WHITE CONCAVE-SIDED DIAMOND -27E2;AL # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK -27E3;AL # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK -27E4;AL # WHITE SQUARE WITH LEFTWARDS TICK -27E5;AL # WHITE SQUARE WITH RIGHTWARDS TICK -27E6;OP # MATHEMATICAL LEFT WHITE SQUARE BRACKET -27E7;CL # MATHEMATICAL RIGHT WHITE SQUARE BRACKET -27E8;OP # MATHEMATICAL LEFT ANGLE BRACKET -27E9;CL # MATHEMATICAL RIGHT ANGLE BRACKET -27EA;OP # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET -27EB;CL # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET -27F0;AL # UPWARDS QUADRUPLE ARROW -27F1;AL # DOWNWARDS QUADRUPLE ARROW -27F2;AL # ANTICLOCKWISE GAPPED CIRCLE ARROW -27F3;AL # CLOCKWISE GAPPED CIRCLE ARROW -27F4;AL # RIGHT ARROW WITH CIRCLED PLUS -27F5;AL # LONG LEFTWARDS ARROW -27F6;AL # LONG RIGHTWARDS ARROW -27F7;AL # LONG LEFT RIGHT ARROW -27F8;AL # LONG LEFTWARDS DOUBLE ARROW -27F9;AL # LONG RIGHTWARDS DOUBLE ARROW -27FA;AL # LONG LEFT RIGHT DOUBLE ARROW -27FB;AL # LONG LEFTWARDS ARROW FROM BAR -27FC;AL # LONG RIGHTWARDS ARROW FROM BAR -27FD;AL # LONG LEFTWARDS DOUBLE ARROW FROM BAR -27FE;AL # LONG RIGHTWARDS DOUBLE ARROW FROM BAR -27FF;AL # LONG RIGHTWARDS SQUIGGLE ARROW -2800;AL # BRAILLE PATTERN BLANK -2801;AL # BRAILLE PATTERN DOTS-1 -2802;AL # BRAILLE PATTERN DOTS-2 -2803;AL # BRAILLE PATTERN DOTS-12 -2804;AL # BRAILLE PATTERN DOTS-3 -2805;AL # BRAILLE PATTERN DOTS-13 -2806;AL # BRAILLE PATTERN DOTS-23 -2807;AL # BRAILLE PATTERN DOTS-123 -2808;AL # BRAILLE PATTERN DOTS-4 -2809;AL # BRAILLE PATTERN DOTS-14 -280A;AL # BRAILLE PATTERN DOTS-24 -280B;AL # BRAILLE PATTERN DOTS-124 -280C;AL # BRAILLE PATTERN DOTS-34 -280D;AL # BRAILLE PATTERN DOTS-134 -280E;AL # BRAILLE PATTERN DOTS-234 -280F;AL # BRAILLE PATTERN DOTS-1234 -2810;AL # BRAILLE PATTERN DOTS-5 -2811;AL # BRAILLE PATTERN DOTS-15 -2812;AL # BRAILLE PATTERN DOTS-25 -2813;AL # BRAILLE PATTERN DOTS-125 -2814;AL # BRAILLE PATTERN DOTS-35 -2815;AL # BRAILLE PATTERN DOTS-135 -2816;AL # BRAILLE PATTERN DOTS-235 -2817;AL # BRAILLE PATTERN DOTS-1235 -2818;AL # BRAILLE PATTERN DOTS-45 -2819;AL # BRAILLE PATTERN DOTS-145 -281A;AL # BRAILLE PATTERN DOTS-245 -281B;AL # BRAILLE PATTERN DOTS-1245 -281C;AL # BRAILLE PATTERN DOTS-345 -281D;AL # BRAILLE PATTERN DOTS-1345 -281E;AL # BRAILLE PATTERN DOTS-2345 -281F;AL # BRAILLE PATTERN DOTS-12345 -2820;AL # BRAILLE PATTERN DOTS-6 -2821;AL # BRAILLE PATTERN DOTS-16 -2822;AL # BRAILLE PATTERN DOTS-26 -2823;AL # BRAILLE PATTERN DOTS-126 -2824;AL # BRAILLE PATTERN DOTS-36 -2825;AL # BRAILLE PATTERN DOTS-136 -2826;AL # BRAILLE PATTERN DOTS-236 -2827;AL # BRAILLE PATTERN DOTS-1236 -2828;AL # BRAILLE PATTERN DOTS-46 -2829;AL # BRAILLE PATTERN DOTS-146 -282A;AL # BRAILLE PATTERN DOTS-246 -282B;AL # BRAILLE PATTERN DOTS-1246 -282C;AL # BRAILLE PATTERN DOTS-346 -282D;AL # BRAILLE PATTERN DOTS-1346 -282E;AL # BRAILLE PATTERN DOTS-2346 -282F;AL # BRAILLE PATTERN DOTS-12346 -2830;AL # BRAILLE PATTERN DOTS-56 -2831;AL # BRAILLE PATTERN DOTS-156 -2832;AL # BRAILLE PATTERN DOTS-256 -2833;AL # BRAILLE PATTERN DOTS-1256 -2834;AL # BRAILLE PATTERN DOTS-356 -2835;AL # BRAILLE PATTERN DOTS-1356 -2836;AL # BRAILLE PATTERN DOTS-2356 -2837;AL # BRAILLE PATTERN DOTS-12356 -2838;AL # BRAILLE PATTERN DOTS-456 -2839;AL # BRAILLE PATTERN DOTS-1456 -283A;AL # BRAILLE PATTERN DOTS-2456 -283B;AL # BRAILLE PATTERN DOTS-12456 -283C;AL # BRAILLE PATTERN DOTS-3456 -283D;AL # BRAILLE PATTERN DOTS-13456 -283E;AL # BRAILLE PATTERN DOTS-23456 -283F;AL # BRAILLE PATTERN DOTS-123456 -2840;AL # BRAILLE PATTERN DOTS-7 -2841;AL # BRAILLE PATTERN DOTS-17 -2842;AL # BRAILLE PATTERN DOTS-27 -2843;AL # BRAILLE PATTERN DOTS-127 -2844;AL # BRAILLE PATTERN DOTS-37 -2845;AL # BRAILLE PATTERN DOTS-137 -2846;AL # BRAILLE PATTERN DOTS-237 -2847;AL # BRAILLE PATTERN DOTS-1237 -2848;AL # BRAILLE PATTERN DOTS-47 -2849;AL # BRAILLE PATTERN DOTS-147 -284A;AL # BRAILLE PATTERN DOTS-247 -284B;AL # BRAILLE PATTERN DOTS-1247 -284C;AL # BRAILLE PATTERN DOTS-347 -284D;AL # BRAILLE PATTERN DOTS-1347 -284E;AL # BRAILLE PATTERN DOTS-2347 -284F;AL # BRAILLE PATTERN DOTS-12347 -2850;AL # BRAILLE PATTERN DOTS-57 -2851;AL # BRAILLE PATTERN DOTS-157 -2852;AL # BRAILLE PATTERN DOTS-257 -2853;AL # BRAILLE PATTERN DOTS-1257 -2854;AL # BRAILLE PATTERN DOTS-357 -2855;AL # BRAILLE PATTERN DOTS-1357 -2856;AL # BRAILLE PATTERN DOTS-2357 -2857;AL # BRAILLE PATTERN DOTS-12357 -2858;AL # BRAILLE PATTERN DOTS-457 -2859;AL # BRAILLE PATTERN DOTS-1457 -285A;AL # BRAILLE PATTERN DOTS-2457 -285B;AL # BRAILLE PATTERN DOTS-12457 -285C;AL # BRAILLE PATTERN DOTS-3457 -285D;AL # BRAILLE PATTERN DOTS-13457 -285E;AL # BRAILLE PATTERN DOTS-23457 -285F;AL # BRAILLE PATTERN DOTS-123457 -2860;AL # BRAILLE PATTERN DOTS-67 -2861;AL # BRAILLE PATTERN DOTS-167 -2862;AL # BRAILLE PATTERN DOTS-267 -2863;AL # BRAILLE PATTERN DOTS-1267 -2864;AL # BRAILLE PATTERN DOTS-367 -2865;AL # BRAILLE PATTERN DOTS-1367 -2866;AL # BRAILLE PATTERN DOTS-2367 -2867;AL # BRAILLE PATTERN DOTS-12367 -2868;AL # BRAILLE PATTERN DOTS-467 -2869;AL # BRAILLE PATTERN DOTS-1467 -286A;AL # BRAILLE PATTERN DOTS-2467 -286B;AL # BRAILLE PATTERN DOTS-12467 -286C;AL # BRAILLE PATTERN DOTS-3467 -286D;AL # BRAILLE PATTERN DOTS-13467 -286E;AL # BRAILLE PATTERN DOTS-23467 -286F;AL # BRAILLE PATTERN DOTS-123467 -2870;AL # BRAILLE PATTERN DOTS-567 -2871;AL # BRAILLE PATTERN DOTS-1567 -2872;AL # BRAILLE PATTERN DOTS-2567 -2873;AL # BRAILLE PATTERN DOTS-12567 -2874;AL # BRAILLE PATTERN DOTS-3567 -2875;AL # BRAILLE PATTERN DOTS-13567 -2876;AL # BRAILLE PATTERN DOTS-23567 -2877;AL # BRAILLE PATTERN DOTS-123567 -2878;AL # BRAILLE PATTERN DOTS-4567 -2879;AL # BRAILLE PATTERN DOTS-14567 -287A;AL # BRAILLE PATTERN DOTS-24567 -287B;AL # BRAILLE PATTERN DOTS-124567 -287C;AL # BRAILLE PATTERN DOTS-34567 -287D;AL # BRAILLE PATTERN DOTS-134567 -287E;AL # BRAILLE PATTERN DOTS-234567 -287F;AL # BRAILLE PATTERN DOTS-1234567 -2880;AL # BRAILLE PATTERN DOTS-8 -2881;AL # BRAILLE PATTERN DOTS-18 -2882;AL # BRAILLE PATTERN DOTS-28 -2883;AL # BRAILLE PATTERN DOTS-128 -2884;AL # BRAILLE PATTERN DOTS-38 -2885;AL # BRAILLE PATTERN DOTS-138 -2886;AL # BRAILLE PATTERN DOTS-238 -2887;AL # BRAILLE PATTERN DOTS-1238 -2888;AL # BRAILLE PATTERN DOTS-48 -2889;AL # BRAILLE PATTERN DOTS-148 -288A;AL # BRAILLE PATTERN DOTS-248 -288B;AL # BRAILLE PATTERN DOTS-1248 -288C;AL # BRAILLE PATTERN DOTS-348 -288D;AL # BRAILLE PATTERN DOTS-1348 -288E;AL # BRAILLE PATTERN DOTS-2348 -288F;AL # BRAILLE PATTERN DOTS-12348 -2890;AL # BRAILLE PATTERN DOTS-58 -2891;AL # BRAILLE PATTERN DOTS-158 -2892;AL # BRAILLE PATTERN DOTS-258 -2893;AL # BRAILLE PATTERN DOTS-1258 -2894;AL # BRAILLE PATTERN DOTS-358 -2895;AL # BRAILLE PATTERN DOTS-1358 -2896;AL # BRAILLE PATTERN DOTS-2358 -2897;AL # BRAILLE PATTERN DOTS-12358 -2898;AL # BRAILLE PATTERN DOTS-458 -2899;AL # BRAILLE PATTERN DOTS-1458 -289A;AL # BRAILLE PATTERN DOTS-2458 -289B;AL # BRAILLE PATTERN DOTS-12458 -289C;AL # BRAILLE PATTERN DOTS-3458 -289D;AL # BRAILLE PATTERN DOTS-13458 -289E;AL # BRAILLE PATTERN DOTS-23458 -289F;AL # BRAILLE PATTERN DOTS-123458 -28A0;AL # BRAILLE PATTERN DOTS-68 -28A1;AL # BRAILLE PATTERN DOTS-168 -28A2;AL # BRAILLE PATTERN DOTS-268 -28A3;AL # BRAILLE PATTERN DOTS-1268 -28A4;AL # BRAILLE PATTERN DOTS-368 -28A5;AL # BRAILLE PATTERN DOTS-1368 -28A6;AL # BRAILLE PATTERN DOTS-2368 -28A7;AL # BRAILLE PATTERN DOTS-12368 -28A8;AL # BRAILLE PATTERN DOTS-468 -28A9;AL # BRAILLE PATTERN DOTS-1468 -28AA;AL # BRAILLE PATTERN DOTS-2468 -28AB;AL # BRAILLE PATTERN DOTS-12468 -28AC;AL # BRAILLE PATTERN DOTS-3468 -28AD;AL # BRAILLE PATTERN DOTS-13468 -28AE;AL # BRAILLE PATTERN DOTS-23468 -28AF;AL # BRAILLE PATTERN DOTS-123468 -28B0;AL # BRAILLE PATTERN DOTS-568 -28B1;AL # BRAILLE PATTERN DOTS-1568 -28B2;AL # BRAILLE PATTERN DOTS-2568 -28B3;AL # BRAILLE PATTERN DOTS-12568 -28B4;AL # BRAILLE PATTERN DOTS-3568 -28B5;AL # BRAILLE PATTERN DOTS-13568 -28B6;AL # BRAILLE PATTERN DOTS-23568 -28B7;AL # BRAILLE PATTERN DOTS-123568 -28B8;AL # BRAILLE PATTERN DOTS-4568 -28B9;AL # BRAILLE PATTERN DOTS-14568 -28BA;AL # BRAILLE PATTERN DOTS-24568 -28BB;AL # BRAILLE PATTERN DOTS-124568 -28BC;AL # BRAILLE PATTERN DOTS-34568 -28BD;AL # BRAILLE PATTERN DOTS-134568 -28BE;AL # BRAILLE PATTERN DOTS-234568 -28BF;AL # BRAILLE PATTERN DOTS-1234568 -28C0;AL # BRAILLE PATTERN DOTS-78 -28C1;AL # BRAILLE PATTERN DOTS-178 -28C2;AL # BRAILLE PATTERN DOTS-278 -28C3;AL # BRAILLE PATTERN DOTS-1278 -28C4;AL # BRAILLE PATTERN DOTS-378 -28C5;AL # BRAILLE PATTERN DOTS-1378 -28C6;AL # BRAILLE PATTERN DOTS-2378 -28C7;AL # BRAILLE PATTERN DOTS-12378 -28C8;AL # BRAILLE PATTERN DOTS-478 -28C9;AL # BRAILLE PATTERN DOTS-1478 -28CA;AL # BRAILLE PATTERN DOTS-2478 -28CB;AL # BRAILLE PATTERN DOTS-12478 -28CC;AL # BRAILLE PATTERN DOTS-3478 -28CD;AL # BRAILLE PATTERN DOTS-13478 -28CE;AL # BRAILLE PATTERN DOTS-23478 -28CF;AL # BRAILLE PATTERN DOTS-123478 -28D0;AL # BRAILLE PATTERN DOTS-578 -28D1;AL # BRAILLE PATTERN DOTS-1578 -28D2;AL # BRAILLE PATTERN DOTS-2578 -28D3;AL # BRAILLE PATTERN DOTS-12578 -28D4;AL # BRAILLE PATTERN DOTS-3578 -28D5;AL # BRAILLE PATTERN DOTS-13578 -28D6;AL # BRAILLE PATTERN DOTS-23578 -28D7;AL # BRAILLE PATTERN DOTS-123578 -28D8;AL # BRAILLE PATTERN DOTS-4578 -28D9;AL # BRAILLE PATTERN DOTS-14578 -28DA;AL # BRAILLE PATTERN DOTS-24578 -28DB;AL # BRAILLE PATTERN DOTS-124578 -28DC;AL # BRAILLE PATTERN DOTS-34578 -28DD;AL # BRAILLE PATTERN DOTS-134578 -28DE;AL # BRAILLE PATTERN DOTS-234578 -28DF;AL # BRAILLE PATTERN DOTS-1234578 -28E0;AL # BRAILLE PATTERN DOTS-678 -28E1;AL # BRAILLE PATTERN DOTS-1678 -28E2;AL # BRAILLE PATTERN DOTS-2678 -28E3;AL # BRAILLE PATTERN DOTS-12678 -28E4;AL # BRAILLE PATTERN DOTS-3678 -28E5;AL # BRAILLE PATTERN DOTS-13678 -28E6;AL # BRAILLE PATTERN DOTS-23678 -28E7;AL # BRAILLE PATTERN DOTS-123678 -28E8;AL # BRAILLE PATTERN DOTS-4678 -28E9;AL # BRAILLE PATTERN DOTS-14678 -28EA;AL # BRAILLE PATTERN DOTS-24678 -28EB;AL # BRAILLE PATTERN DOTS-124678 -28EC;AL # BRAILLE PATTERN DOTS-34678 -28ED;AL # BRAILLE PATTERN DOTS-134678 -28EE;AL # BRAILLE PATTERN DOTS-234678 -28EF;AL # BRAILLE PATTERN DOTS-1234678 -28F0;AL # BRAILLE PATTERN DOTS-5678 -28F1;AL # BRAILLE PATTERN DOTS-15678 -28F2;AL # BRAILLE PATTERN DOTS-25678 -28F3;AL # BRAILLE PATTERN DOTS-125678 -28F4;AL # BRAILLE PATTERN DOTS-35678 -28F5;AL # BRAILLE PATTERN DOTS-135678 -28F6;AL # BRAILLE PATTERN DOTS-235678 -28F7;AL # BRAILLE PATTERN DOTS-1235678 -28F8;AL # BRAILLE PATTERN DOTS-45678 -28F9;AL # BRAILLE PATTERN DOTS-145678 -28FA;AL # BRAILLE PATTERN DOTS-245678 -28FB;AL # BRAILLE PATTERN DOTS-1245678 -28FC;AL # BRAILLE PATTERN DOTS-345678 -28FD;AL # BRAILLE PATTERN DOTS-1345678 -28FE;AL # BRAILLE PATTERN DOTS-2345678 -28FF;AL # BRAILLE PATTERN DOTS-12345678 -2900;AL # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE -2901;AL # RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE -2902;AL # LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE -2903;AL # RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE -2904;AL # LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE -2905;AL # RIGHTWARDS TWO-HEADED ARROW FROM BAR -2906;AL # LEFTWARDS DOUBLE ARROW FROM BAR -2907;AL # RIGHTWARDS DOUBLE ARROW FROM BAR -2908;AL # DOWNWARDS ARROW WITH HORIZONTAL STROKE -2909;AL # UPWARDS ARROW WITH HORIZONTAL STROKE -290A;AL # UPWARDS TRIPLE ARROW -290B;AL # DOWNWARDS TRIPLE ARROW -290C;AL # LEFTWARDS DOUBLE DASH ARROW -290D;AL # RIGHTWARDS DOUBLE DASH ARROW -290E;AL # LEFTWARDS TRIPLE DASH ARROW -290F;AL # RIGHTWARDS TRIPLE DASH ARROW -2910;AL # RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW -2911;AL # RIGHTWARDS ARROW WITH DOTTED STEM -2912;AL # UPWARDS ARROW TO BAR -2913;AL # DOWNWARDS ARROW TO BAR -2914;AL # RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE -2915;AL # RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE -2916;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL -2917;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE -2918;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE -2919;AL # LEFTWARDS ARROW-TAIL -291A;AL # RIGHTWARDS ARROW-TAIL -291B;AL # LEFTWARDS DOUBLE ARROW-TAIL -291C;AL # RIGHTWARDS DOUBLE ARROW-TAIL -291D;AL # LEFTWARDS ARROW TO BLACK DIAMOND -291E;AL # RIGHTWARDS ARROW TO BLACK DIAMOND -291F;AL # LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND -2920;AL # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND -2921;AL # NORTH WEST AND SOUTH EAST ARROW -2922;AL # NORTH EAST AND SOUTH WEST ARROW -2923;AL # NORTH WEST ARROW WITH HOOK -2924;AL # NORTH EAST ARROW WITH HOOK -2925;AL # SOUTH EAST ARROW WITH HOOK -2926;AL # SOUTH WEST ARROW WITH HOOK -2927;AL # NORTH WEST ARROW AND NORTH EAST ARROW -2928;AL # NORTH EAST ARROW AND SOUTH EAST ARROW -2929;AL # SOUTH EAST ARROW AND SOUTH WEST ARROW -292A;AL # SOUTH WEST ARROW AND NORTH WEST ARROW -292B;AL # RISING DIAGONAL CROSSING FALLING DIAGONAL -292C;AL # FALLING DIAGONAL CROSSING RISING DIAGONAL -292D;AL # SOUTH EAST ARROW CROSSING NORTH EAST ARROW -292E;AL # NORTH EAST ARROW CROSSING SOUTH EAST ARROW -292F;AL # FALLING DIAGONAL CROSSING NORTH EAST ARROW -2930;AL # RISING DIAGONAL CROSSING SOUTH EAST ARROW -2931;AL # NORTH EAST ARROW CROSSING NORTH WEST ARROW -2932;AL # NORTH WEST ARROW CROSSING NORTH EAST ARROW -2933;AL # WAVE ARROW POINTING DIRECTLY RIGHT -2934;AL # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS -2935;AL # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS -2936;AL # ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS -2937;AL # ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS -2938;AL # RIGHT-SIDE ARC CLOCKWISE ARROW -2939;AL # LEFT-SIDE ARC ANTICLOCKWISE ARROW -293A;AL # TOP ARC ANTICLOCKWISE ARROW -293B;AL # BOTTOM ARC ANTICLOCKWISE ARROW -293C;AL # TOP ARC CLOCKWISE ARROW WITH MINUS -293D;AL # TOP ARC ANTICLOCKWISE ARROW WITH PLUS -293E;AL # LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW -293F;AL # LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW -2940;AL # ANTICLOCKWISE CLOSED CIRCLE ARROW -2941;AL # CLOCKWISE CLOSED CIRCLE ARROW -2942;AL # RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW -2943;AL # LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW -2944;AL # SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW -2945;AL # RIGHTWARDS ARROW WITH PLUS BELOW -2946;AL # LEFTWARDS ARROW WITH PLUS BELOW -2947;AL # RIGHTWARDS ARROW THROUGH X -2948;AL # LEFT RIGHT ARROW THROUGH SMALL CIRCLE -2949;AL # UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE -294A;AL # LEFT BARB UP RIGHT BARB DOWN HARPOON -294B;AL # LEFT BARB DOWN RIGHT BARB UP HARPOON -294C;AL # UP BARB RIGHT DOWN BARB LEFT HARPOON -294D;AL # UP BARB LEFT DOWN BARB RIGHT HARPOON -294E;AL # LEFT BARB UP RIGHT BARB UP HARPOON -294F;AL # UP BARB RIGHT DOWN BARB RIGHT HARPOON -2950;AL # LEFT BARB DOWN RIGHT BARB DOWN HARPOON -2951;AL # UP BARB LEFT DOWN BARB LEFT HARPOON -2952;AL # LEFTWARDS HARPOON WITH BARB UP TO BAR -2953;AL # RIGHTWARDS HARPOON WITH BARB UP TO BAR -2954;AL # UPWARDS HARPOON WITH BARB RIGHT TO BAR -2955;AL # DOWNWARDS HARPOON WITH BARB RIGHT TO BAR -2956;AL # LEFTWARDS HARPOON WITH BARB DOWN TO BAR -2957;AL # RIGHTWARDS HARPOON WITH BARB DOWN TO BAR -2958;AL # UPWARDS HARPOON WITH BARB LEFT TO BAR -2959;AL # DOWNWARDS HARPOON WITH BARB LEFT TO BAR -295A;AL # LEFTWARDS HARPOON WITH BARB UP FROM BAR -295B;AL # RIGHTWARDS HARPOON WITH BARB UP FROM BAR -295C;AL # UPWARDS HARPOON WITH BARB RIGHT FROM BAR -295D;AL # DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR -295E;AL # LEFTWARDS HARPOON WITH BARB DOWN FROM BAR -295F;AL # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR -2960;AL # UPWARDS HARPOON WITH BARB LEFT FROM BAR -2961;AL # DOWNWARDS HARPOON WITH BARB LEFT FROM BAR -2962;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN -2963;AL # UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT -2964;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN -2965;AL # DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT -2966;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP -2967;AL # LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN -2968;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP -2969;AL # RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN -296A;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH -296B;AL # LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH -296C;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH -296D;AL # RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH -296E;AL # UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT -296F;AL # DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT -2970;AL # RIGHT DOUBLE ARROW WITH ROUNDED HEAD -2971;AL # EQUALS SIGN ABOVE RIGHTWARDS ARROW -2972;AL # TILDE OPERATOR ABOVE RIGHTWARDS ARROW -2973;AL # LEFTWARDS ARROW ABOVE TILDE OPERATOR -2974;AL # RIGHTWARDS ARROW ABOVE TILDE OPERATOR -2975;AL # RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO -2976;AL # LESS-THAN ABOVE LEFTWARDS ARROW -2977;AL # LEFTWARDS ARROW THROUGH LESS-THAN -2978;AL # GREATER-THAN ABOVE RIGHTWARDS ARROW -2979;AL # SUBSET ABOVE RIGHTWARDS ARROW -297A;AL # LEFTWARDS ARROW THROUGH SUBSET -297B;AL # SUPERSET ABOVE LEFTWARDS ARROW -297C;AL # LEFT FISH TAIL -297D;AL # RIGHT FISH TAIL -297E;AL # UP FISH TAIL -297F;AL # DOWN FISH TAIL -2980;AL # TRIPLE VERTICAL BAR DELIMITER -2981;AL # Z NOTATION SPOT -2982;AL # Z NOTATION TYPE COLON -2983;OP # LEFT WHITE CURLY BRACKET -2984;CL # RIGHT WHITE CURLY BRACKET -2985;OP # LEFT WHITE PARENTHESIS -2986;CL # RIGHT WHITE PARENTHESIS -2987;OP # Z NOTATION LEFT IMAGE BRACKET -2988;CL # Z NOTATION RIGHT IMAGE BRACKET -2989;OP # Z NOTATION LEFT BINDING BRACKET -298A;CL # Z NOTATION RIGHT BINDING BRACKET -298B;OP # LEFT SQUARE BRACKET WITH UNDERBAR -298C;CL # RIGHT SQUARE BRACKET WITH UNDERBAR -298D;OP # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER -298E;CL # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -298F;OP # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -2990;CL # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER -2991;OP # LEFT ANGLE BRACKET WITH DOT -2992;CL # RIGHT ANGLE BRACKET WITH DOT -2993;OP # LEFT ARC LESS-THAN BRACKET -2994;CL # RIGHT ARC GREATER-THAN BRACKET -2995;OP # DOUBLE LEFT ARC GREATER-THAN BRACKET -2996;CL # DOUBLE RIGHT ARC LESS-THAN BRACKET -2997;OP # LEFT BLACK TORTOISE SHELL BRACKET -2998;CL # RIGHT BLACK TORTOISE SHELL BRACKET -2999;AL # DOTTED FENCE -299A;AL # VERTICAL ZIGZAG LINE -299B;AL # MEASURED ANGLE OPENING LEFT -299C;AL # RIGHT ANGLE VARIANT WITH SQUARE -299D;AL # MEASURED RIGHT ANGLE WITH DOT -299E;AL # ANGLE WITH S INSIDE -299F;AL # ACUTE ANGLE -29A0;AL # SPHERICAL ANGLE OPENING LEFT -29A1;AL # SPHERICAL ANGLE OPENING UP -29A2;AL # TURNED ANGLE -29A3;AL # REVERSED ANGLE -29A4;AL # ANGLE WITH UNDERBAR -29A5;AL # REVERSED ANGLE WITH UNDERBAR -29A6;AL # OBLIQUE ANGLE OPENING UP -29A7;AL # OBLIQUE ANGLE OPENING DOWN -29A8;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT -29A9;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT -29AA;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT -29AB;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT -29AC;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP -29AD;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP -29AE;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN -29AF;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN -29B0;AL # REVERSED EMPTY SET -29B1;AL # EMPTY SET WITH OVERBAR -29B2;AL # EMPTY SET WITH SMALL CIRCLE ABOVE -29B3;AL # EMPTY SET WITH RIGHT ARROW ABOVE -29B4;AL # EMPTY SET WITH LEFT ARROW ABOVE -29B5;AL # CIRCLE WITH HORIZONTAL BAR -29B6;AL # CIRCLED VERTICAL BAR -29B7;AL # CIRCLED PARALLEL -29B8;AL # CIRCLED REVERSE SOLIDUS -29B9;AL # CIRCLED PERPENDICULAR -29BA;AL # CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR -29BB;AL # CIRCLE WITH SUPERIMPOSED X -29BC;AL # CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN -29BD;AL # UP ARROW THROUGH CIRCLE -29BE;AL # CIRCLED WHITE BULLET -29BF;AL # CIRCLED BULLET -29C0;AL # CIRCLED LESS-THAN -29C1;AL # CIRCLED GREATER-THAN -29C2;AL # CIRCLE WITH SMALL CIRCLE TO THE RIGHT -29C3;AL # CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT -29C4;AL # SQUARED RISING DIAGONAL SLASH -29C5;AL # SQUARED FALLING DIAGONAL SLASH -29C6;AL # SQUARED ASTERISK -29C7;AL # SQUARED SMALL CIRCLE -29C8;AL # SQUARED SQUARE -29C9;AL # TWO JOINED SQUARES -29CA;AL # TRIANGLE WITH DOT ABOVE -29CB;AL # TRIANGLE WITH UNDERBAR -29CC;AL # S IN TRIANGLE -29CD;AL # TRIANGLE WITH SERIFS AT BOTTOM -29CE;AL # RIGHT TRIANGLE ABOVE LEFT TRIANGLE -29CF;AL # LEFT TRIANGLE BESIDE VERTICAL BAR -29D0;AL # VERTICAL BAR BESIDE RIGHT TRIANGLE -29D1;AL # BOWTIE WITH LEFT HALF BLACK -29D2;AL # BOWTIE WITH RIGHT HALF BLACK -29D3;AL # BLACK BOWTIE -29D4;AL # TIMES WITH LEFT HALF BLACK -29D5;AL # TIMES WITH RIGHT HALF BLACK -29D6;AL # WHITE HOURGLASS -29D7;AL # BLACK HOURGLASS -29D8;OP # LEFT WIGGLY FENCE -29D9;CL # RIGHT WIGGLY FENCE -29DA;OP # LEFT DOUBLE WIGGLY FENCE -29DB;CL # RIGHT DOUBLE WIGGLY FENCE -29DC;AL # INCOMPLETE INFINITY -29DD;AL # TIE OVER INFINITY -29DE;AL # INFINITY NEGATED WITH VERTICAL BAR -29DF;AL # DOUBLE-ENDED MULTIMAP -29E0;AL # SQUARE WITH CONTOURED OUTLINE -29E1;AL # INCREASES AS -29E2;AL # SHUFFLE PRODUCT -29E3;AL # EQUALS SIGN AND SLANTED PARALLEL -29E4;AL # EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE -29E5;AL # IDENTICAL TO AND SLANTED PARALLEL -29E6;AL # GLEICH STARK -29E7;AL # THERMODYNAMIC -29E8;AL # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK -29E9;AL # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK -29EA;AL # BLACK DIAMOND WITH DOWN ARROW -29EB;AL # BLACK LOZENGE -29EC;AL # WHITE CIRCLE WITH DOWN ARROW -29ED;AL # BLACK CIRCLE WITH DOWN ARROW -29EE;AL # ERROR-BARRED WHITE SQUARE -29EF;AL # ERROR-BARRED BLACK SQUARE -29F0;AL # ERROR-BARRED WHITE DIAMOND -29F1;AL # ERROR-BARRED BLACK DIAMOND -29F2;AL # ERROR-BARRED WHITE CIRCLE -29F3;AL # ERROR-BARRED BLACK CIRCLE -29F4;AL # RULE-DELAYED -29F5;AL # REVERSE SOLIDUS OPERATOR -29F6;AL # SOLIDUS WITH OVERBAR -29F7;AL # REVERSE SOLIDUS WITH HORIZONTAL STROKE -29F8;AL # BIG SOLIDUS -29F9;AL # BIG REVERSE SOLIDUS -29FA;AL # DOUBLE PLUS -29FB;AL # TRIPLE PLUS -29FC;OP # LEFT-POINTING CURVED ANGLE BRACKET -29FD;CL # RIGHT-POINTING CURVED ANGLE BRACKET -29FE;AL # TINY -29FF;AL # MINY -2A00;AL # N-ARY CIRCLED DOT OPERATOR -2A01;AL # N-ARY CIRCLED PLUS OPERATOR -2A02;AL # N-ARY CIRCLED TIMES OPERATOR -2A03;AL # N-ARY UNION OPERATOR WITH DOT -2A04;AL # N-ARY UNION OPERATOR WITH PLUS -2A05;AL # N-ARY SQUARE INTERSECTION OPERATOR -2A06;AL # N-ARY SQUARE UNION OPERATOR -2A07;AL # TWO LOGICAL AND OPERATOR -2A08;AL # TWO LOGICAL OR OPERATOR -2A09;AL # N-ARY TIMES OPERATOR -2A0A;AL # MODULO TWO SUM -2A0B;AL # SUMMATION WITH INTEGRAL -2A0C;AL # QUADRUPLE INTEGRAL OPERATOR -2A0D;AL # FINITE PART INTEGRAL -2A0E;AL # INTEGRAL WITH DOUBLE STROKE -2A0F;AL # INTEGRAL AVERAGE WITH SLASH -2A10;AL # CIRCULATION FUNCTION -2A11;AL # ANTICLOCKWISE INTEGRATION -2A12;AL # LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE -2A13;AL # LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE -2A14;AL # LINE INTEGRATION NOT INCLUDING THE POLE -2A15;AL # INTEGRAL AROUND A POINT OPERATOR -2A16;AL # QUATERNION INTEGRAL OPERATOR -2A17;AL # INTEGRAL WITH LEFTWARDS ARROW WITH HOOK -2A18;AL # INTEGRAL WITH TIMES SIGN -2A19;AL # INTEGRAL WITH INTERSECTION -2A1A;AL # INTEGRAL WITH UNION -2A1B;AL # INTEGRAL WITH OVERBAR -2A1C;AL # INTEGRAL WITH UNDERBAR -2A1D;AL # JOIN -2A1E;AL # LARGE LEFT TRIANGLE OPERATOR -2A1F;AL # Z NOTATION SCHEMA COMPOSITION -2A20;AL # Z NOTATION SCHEMA PIPING -2A21;AL # Z NOTATION SCHEMA PROJECTION -2A22;AL # PLUS SIGN WITH SMALL CIRCLE ABOVE -2A23;AL # PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE -2A24;AL # PLUS SIGN WITH TILDE ABOVE -2A25;AL # PLUS SIGN WITH DOT BELOW -2A26;AL # PLUS SIGN WITH TILDE BELOW -2A27;AL # PLUS SIGN WITH SUBSCRIPT TWO -2A28;AL # PLUS SIGN WITH BLACK TRIANGLE -2A29;AL # MINUS SIGN WITH COMMA ABOVE -2A2A;AL # MINUS SIGN WITH DOT BELOW -2A2B;AL # MINUS SIGN WITH FALLING DOTS -2A2C;AL # MINUS SIGN WITH RISING DOTS -2A2D;AL # PLUS SIGN IN LEFT HALF CIRCLE -2A2E;AL # PLUS SIGN IN RIGHT HALF CIRCLE -2A2F;AL # VECTOR OR CROSS PRODUCT -2A30;AL # MULTIPLICATION SIGN WITH DOT ABOVE -2A31;AL # MULTIPLICATION SIGN WITH UNDERBAR -2A32;AL # SEMIDIRECT PRODUCT WITH BOTTOM CLOSED -2A33;AL # SMASH PRODUCT -2A34;AL # MULTIPLICATION SIGN IN LEFT HALF CIRCLE -2A35;AL # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE -2A36;AL # CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT -2A37;AL # MULTIPLICATION SIGN IN DOUBLE CIRCLE -2A38;AL # CIRCLED DIVISION SIGN -2A39;AL # PLUS SIGN IN TRIANGLE -2A3A;AL # MINUS SIGN IN TRIANGLE -2A3B;AL # MULTIPLICATION SIGN IN TRIANGLE -2A3C;AL # INTERIOR PRODUCT -2A3D;AL # RIGHTHAND INTERIOR PRODUCT -2A3E;AL # Z NOTATION RELATIONAL COMPOSITION -2A3F;AL # AMALGAMATION OR COPRODUCT -2A40;AL # INTERSECTION WITH DOT -2A41;AL # UNION WITH MINUS SIGN -2A42;AL # UNION WITH OVERBAR -2A43;AL # INTERSECTION WITH OVERBAR -2A44;AL # INTERSECTION WITH LOGICAL AND -2A45;AL # UNION WITH LOGICAL OR -2A46;AL # UNION ABOVE INTERSECTION -2A47;AL # INTERSECTION ABOVE UNION -2A48;AL # UNION ABOVE BAR ABOVE INTERSECTION -2A49;AL # INTERSECTION ABOVE BAR ABOVE UNION -2A4A;AL # UNION BESIDE AND JOINED WITH UNION -2A4B;AL # INTERSECTION BESIDE AND JOINED WITH INTERSECTION -2A4C;AL # CLOSED UNION WITH SERIFS -2A4D;AL # CLOSED INTERSECTION WITH SERIFS -2A4E;AL # DOUBLE SQUARE INTERSECTION -2A4F;AL # DOUBLE SQUARE UNION -2A50;AL # CLOSED UNION WITH SERIFS AND SMASH PRODUCT -2A51;AL # LOGICAL AND WITH DOT ABOVE -2A52;AL # LOGICAL OR WITH DOT ABOVE -2A53;AL # DOUBLE LOGICAL AND -2A54;AL # DOUBLE LOGICAL OR -2A55;AL # TWO INTERSECTING LOGICAL AND -2A56;AL # TWO INTERSECTING LOGICAL OR -2A57;AL # SLOPING LARGE OR -2A58;AL # SLOPING LARGE AND -2A59;AL # LOGICAL OR OVERLAPPING LOGICAL AND -2A5A;AL # LOGICAL AND WITH MIDDLE STEM -2A5B;AL # LOGICAL OR WITH MIDDLE STEM -2A5C;AL # LOGICAL AND WITH HORIZONTAL DASH -2A5D;AL # LOGICAL OR WITH HORIZONTAL DASH -2A5E;AL # LOGICAL AND WITH DOUBLE OVERBAR -2A5F;AL # LOGICAL AND WITH UNDERBAR -2A60;AL # LOGICAL AND WITH DOUBLE UNDERBAR -2A61;AL # SMALL VEE WITH UNDERBAR -2A62;AL # LOGICAL OR WITH DOUBLE OVERBAR -2A63;AL # LOGICAL OR WITH DOUBLE UNDERBAR -2A64;AL # Z NOTATION DOMAIN ANTIRESTRICTION -2A65;AL # Z NOTATION RANGE ANTIRESTRICTION -2A66;AL # EQUALS SIGN WITH DOT BELOW -2A67;AL # IDENTICAL WITH DOT ABOVE -2A68;AL # TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE -2A69;AL # TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE -2A6A;AL # TILDE OPERATOR WITH DOT ABOVE -2A6B;AL # TILDE OPERATOR WITH RISING DOTS -2A6C;AL # SIMILAR MINUS SIMILAR -2A6D;AL # CONGRUENT WITH DOT ABOVE -2A6E;AL # EQUALS WITH ASTERISK -2A6F;AL # ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT -2A70;AL # APPROXIMATELY EQUAL OR EQUAL TO -2A71;AL # EQUALS SIGN ABOVE PLUS SIGN -2A72;AL # PLUS SIGN ABOVE EQUALS SIGN -2A73;AL # EQUALS SIGN ABOVE TILDE OPERATOR -2A74;AL # DOUBLE COLON EQUAL -2A75;AL # TWO CONSECUTIVE EQUALS SIGNS -2A76;AL # THREE CONSECUTIVE EQUALS SIGNS -2A77;AL # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW -2A78;AL # EQUIVALENT WITH FOUR DOTS ABOVE -2A79;AL # LESS-THAN WITH CIRCLE INSIDE -2A7A;AL # GREATER-THAN WITH CIRCLE INSIDE -2A7B;AL # LESS-THAN WITH QUESTION MARK ABOVE -2A7C;AL # GREATER-THAN WITH QUESTION MARK ABOVE -2A7D;AL # LESS-THAN OR SLANTED EQUAL TO -2A7E;AL # GREATER-THAN OR SLANTED EQUAL TO -2A7F;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE -2A80;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE -2A81;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE -2A82;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE -2A83;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT -2A84;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT -2A85;AL # LESS-THAN OR APPROXIMATE -2A86;AL # GREATER-THAN OR APPROXIMATE -2A87;AL # LESS-THAN AND SINGLE-LINE NOT EQUAL TO -2A88;AL # GREATER-THAN AND SINGLE-LINE NOT EQUAL TO -2A89;AL # LESS-THAN AND NOT APPROXIMATE -2A8A;AL # GREATER-THAN AND NOT APPROXIMATE -2A8B;AL # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN -2A8C;AL # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN -2A8D;AL # LESS-THAN ABOVE SIMILAR OR EQUAL -2A8E;AL # GREATER-THAN ABOVE SIMILAR OR EQUAL -2A8F;AL # LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN -2A90;AL # GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN -2A91;AL # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL -2A92;AL # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL -2A93;AL # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL -2A94;AL # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL -2A95;AL # SLANTED EQUAL TO OR LESS-THAN -2A96;AL # SLANTED EQUAL TO OR GREATER-THAN -2A97;AL # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE -2A98;AL # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE -2A99;AL # DOUBLE-LINE EQUAL TO OR LESS-THAN -2A9A;AL # DOUBLE-LINE EQUAL TO OR GREATER-THAN -2A9B;AL # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN -2A9C;AL # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN -2A9D;AL # SIMILAR OR LESS-THAN -2A9E;AL # SIMILAR OR GREATER-THAN -2A9F;AL # SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN -2AA0;AL # SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN -2AA1;AL # DOUBLE NESTED LESS-THAN -2AA2;AL # DOUBLE NESTED GREATER-THAN -2AA3;AL # DOUBLE NESTED LESS-THAN WITH UNDERBAR -2AA4;AL # GREATER-THAN OVERLAPPING LESS-THAN -2AA5;AL # GREATER-THAN BESIDE LESS-THAN -2AA6;AL # LESS-THAN CLOSED BY CURVE -2AA7;AL # GREATER-THAN CLOSED BY CURVE -2AA8;AL # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL -2AA9;AL # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL -2AAA;AL # SMALLER THAN -2AAB;AL # LARGER THAN -2AAC;AL # SMALLER THAN OR EQUAL TO -2AAD;AL # LARGER THAN OR EQUAL TO -2AAE;AL # EQUALS SIGN WITH BUMPY ABOVE -2AAF;AL # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN -2AB0;AL # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN -2AB1;AL # PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO -2AB2;AL # SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO -2AB3;AL # PRECEDES ABOVE EQUALS SIGN -2AB4;AL # SUCCEEDS ABOVE EQUALS SIGN -2AB5;AL # PRECEDES ABOVE NOT EQUAL TO -2AB6;AL # SUCCEEDS ABOVE NOT EQUAL TO -2AB7;AL # PRECEDES ABOVE ALMOST EQUAL TO -2AB8;AL # SUCCEEDS ABOVE ALMOST EQUAL TO -2AB9;AL # PRECEDES ABOVE NOT ALMOST EQUAL TO -2ABA;AL # SUCCEEDS ABOVE NOT ALMOST EQUAL TO -2ABB;AL # DOUBLE PRECEDES -2ABC;AL # DOUBLE SUCCEEDS -2ABD;AL # SUBSET WITH DOT -2ABE;AL # SUPERSET WITH DOT -2ABF;AL # SUBSET WITH PLUS SIGN BELOW -2AC0;AL # SUPERSET WITH PLUS SIGN BELOW -2AC1;AL # SUBSET WITH MULTIPLICATION SIGN BELOW -2AC2;AL # SUPERSET WITH MULTIPLICATION SIGN BELOW -2AC3;AL # SUBSET OF OR EQUAL TO WITH DOT ABOVE -2AC4;AL # SUPERSET OF OR EQUAL TO WITH DOT ABOVE -2AC5;AL # SUBSET OF ABOVE EQUALS SIGN -2AC6;AL # SUPERSET OF ABOVE EQUALS SIGN -2AC7;AL # SUBSET OF ABOVE TILDE OPERATOR -2AC8;AL # SUPERSET OF ABOVE TILDE OPERATOR -2AC9;AL # SUBSET OF ABOVE ALMOST EQUAL TO -2ACA;AL # SUPERSET OF ABOVE ALMOST EQUAL TO -2ACB;AL # SUBSET OF ABOVE NOT EQUAL TO -2ACC;AL # SUPERSET OF ABOVE NOT EQUAL TO -2ACD;AL # SQUARE LEFT OPEN BOX OPERATOR -2ACE;AL # SQUARE RIGHT OPEN BOX OPERATOR -2ACF;AL # CLOSED SUBSET -2AD0;AL # CLOSED SUPERSET -2AD1;AL # CLOSED SUBSET OR EQUAL TO -2AD2;AL # CLOSED SUPERSET OR EQUAL TO -2AD3;AL # SUBSET ABOVE SUPERSET -2AD4;AL # SUPERSET ABOVE SUBSET -2AD5;AL # SUBSET ABOVE SUBSET -2AD6;AL # SUPERSET ABOVE SUPERSET -2AD7;AL # SUPERSET BESIDE SUBSET -2AD8;AL # SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET -2AD9;AL # ELEMENT OF OPENING DOWNWARDS -2ADA;AL # PITCHFORK WITH TEE TOP -2ADB;AL # TRANSVERSAL INTERSECTION -2ADC;AL # FORKING -2ADD;AL # NONFORKING -2ADE;AL # SHORT LEFT TACK -2ADF;AL # SHORT DOWN TACK -2AE0;AL # SHORT UP TACK -2AE1;AL # PERPENDICULAR WITH S -2AE2;AL # VERTICAL BAR TRIPLE RIGHT TURNSTILE -2AE3;AL # DOUBLE VERTICAL BAR LEFT TURNSTILE -2AE4;AL # VERTICAL BAR DOUBLE LEFT TURNSTILE -2AE5;AL # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE -2AE6;AL # LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL -2AE7;AL # SHORT DOWN TACK WITH OVERBAR -2AE8;AL # SHORT UP TACK WITH UNDERBAR -2AE9;AL # SHORT UP TACK ABOVE SHORT DOWN TACK -2AEA;AL # DOUBLE DOWN TACK -2AEB;AL # DOUBLE UP TACK -2AEC;AL # DOUBLE STROKE NOT SIGN -2AED;AL # REVERSED DOUBLE STROKE NOT SIGN -2AEE;AL # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH -2AEF;AL # VERTICAL LINE WITH CIRCLE ABOVE -2AF0;AL # VERTICAL LINE WITH CIRCLE BELOW -2AF1;AL # DOWN TACK WITH CIRCLE BELOW -2AF2;AL # PARALLEL WITH HORIZONTAL STROKE -2AF3;AL # PARALLEL WITH TILDE OPERATOR -2AF4;AL # TRIPLE VERTICAL BAR BINARY RELATION -2AF5;AL # TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE -2AF6;AL # TRIPLE COLON OPERATOR -2AF7;AL # TRIPLE NESTED LESS-THAN -2AF8;AL # TRIPLE NESTED GREATER-THAN -2AF9;AL # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO -2AFA;AL # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO -2AFB;AL # TRIPLE SOLIDUS BINARY RELATION -2AFC;AL # LARGE TRIPLE VERTICAL BAR OPERATOR -2AFD;AL # DOUBLE SOLIDUS OPERATOR -2AFE;AL # WHITE VERTICAL BAR -2AFF;AL # N-ARY WHITE VERTICAL BAR -2B00;AL # NORTH EAST WHITE ARROW -2B01;AL # NORTH WEST WHITE ARROW -2B02;AL # SOUTH EAST WHITE ARROW -2B03;AL # SOUTH WEST WHITE ARROW -2B04;AL # LEFT RIGHT WHITE ARROW -2B05;AL # LEFTWARDS BLACK ARROW -2B06;AL # UPWARDS BLACK ARROW -2B07;AL # DOWNWARDS BLACK ARROW -2B08;AL # NORTH EAST BLACK ARROW -2B09;AL # NORTH WEST BLACK ARROW -2B0A;AL # SOUTH EAST BLACK ARROW -2B0B;AL # SOUTH WEST BLACK ARROW -2B0C;AL # LEFT RIGHT BLACK ARROW -2B0D;AL # UP DOWN BLACK ARROW -2B0E;AL # RIGHTWARDS ARROW WITH TIP DOWNWARDS -2B0F;AL # RIGHTWARDS ARROW WITH TIP UPWARDS -2B10;AL # LEFTWARDS ARROW WITH TIP DOWNWARDS -2B11;AL # LEFTWARDS ARROW WITH TIP UPWARDS -2B12;AL # SQUARE WITH TOP HALF BLACK -2B13;AL # SQUARE WITH BOTTOM HALF BLACK -2C00;AL # GLAGOLITIC CAPITAL LETTER AZU -2C01;AL # GLAGOLITIC CAPITAL LETTER BUKY -2C02;AL # GLAGOLITIC CAPITAL LETTER VEDE -2C03;AL # GLAGOLITIC CAPITAL LETTER GLAGOLI -2C04;AL # GLAGOLITIC CAPITAL LETTER DOBRO -2C05;AL # GLAGOLITIC CAPITAL LETTER YESTU -2C06;AL # GLAGOLITIC CAPITAL LETTER ZHIVETE -2C07;AL # GLAGOLITIC CAPITAL LETTER DZELO -2C08;AL # GLAGOLITIC CAPITAL LETTER ZEMLJA -2C09;AL # GLAGOLITIC CAPITAL LETTER IZHE -2C0A;AL # GLAGOLITIC CAPITAL LETTER INITIAL IZHE -2C0B;AL # GLAGOLITIC CAPITAL LETTER I -2C0C;AL # GLAGOLITIC CAPITAL LETTER DJERVI -2C0D;AL # GLAGOLITIC CAPITAL LETTER KAKO -2C0E;AL # GLAGOLITIC CAPITAL LETTER LJUDIJE -2C0F;AL # GLAGOLITIC CAPITAL LETTER MYSLITE -2C10;AL # GLAGOLITIC CAPITAL LETTER NASHI -2C11;AL # GLAGOLITIC CAPITAL LETTER ONU -2C12;AL # GLAGOLITIC CAPITAL LETTER POKOJI -2C13;AL # GLAGOLITIC CAPITAL LETTER RITSI -2C14;AL # GLAGOLITIC CAPITAL LETTER SLOVO -2C15;AL # GLAGOLITIC CAPITAL LETTER TVRIDO -2C16;AL # GLAGOLITIC CAPITAL LETTER UKU -2C17;AL # GLAGOLITIC CAPITAL LETTER FRITU -2C18;AL # GLAGOLITIC CAPITAL LETTER HERU -2C19;AL # GLAGOLITIC CAPITAL LETTER OTU -2C1A;AL # GLAGOLITIC CAPITAL LETTER PE -2C1B;AL # GLAGOLITIC CAPITAL LETTER SHTA -2C1C;AL # GLAGOLITIC CAPITAL LETTER TSI -2C1D;AL # GLAGOLITIC CAPITAL LETTER CHRIVI -2C1E;AL # GLAGOLITIC CAPITAL LETTER SHA -2C1F;AL # GLAGOLITIC CAPITAL LETTER YERU -2C20;AL # GLAGOLITIC CAPITAL LETTER YERI -2C21;AL # GLAGOLITIC CAPITAL LETTER YATI -2C22;AL # GLAGOLITIC CAPITAL LETTER SPIDERY HA -2C23;AL # GLAGOLITIC CAPITAL LETTER YU -2C24;AL # GLAGOLITIC CAPITAL LETTER SMALL YUS -2C25;AL # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL -2C26;AL # GLAGOLITIC CAPITAL LETTER YO -2C27;AL # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS -2C28;AL # GLAGOLITIC CAPITAL LETTER BIG YUS -2C29;AL # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS -2C2A;AL # GLAGOLITIC CAPITAL LETTER FITA -2C2B;AL # GLAGOLITIC CAPITAL LETTER IZHITSA -2C2C;AL # GLAGOLITIC CAPITAL LETTER SHTAPIC -2C2D;AL # GLAGOLITIC CAPITAL LETTER TROKUTASTI A -2C2E;AL # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30;AL # GLAGOLITIC SMALL LETTER AZU -2C31;AL # GLAGOLITIC SMALL LETTER BUKY -2C32;AL # GLAGOLITIC SMALL LETTER VEDE -2C33;AL # GLAGOLITIC SMALL LETTER GLAGOLI -2C34;AL # GLAGOLITIC SMALL LETTER DOBRO -2C35;AL # GLAGOLITIC SMALL LETTER YESTU -2C36;AL # GLAGOLITIC SMALL LETTER ZHIVETE -2C37;AL # GLAGOLITIC SMALL LETTER DZELO -2C38;AL # GLAGOLITIC SMALL LETTER ZEMLJA -2C39;AL # GLAGOLITIC SMALL LETTER IZHE -2C3A;AL # GLAGOLITIC SMALL LETTER INITIAL IZHE -2C3B;AL # GLAGOLITIC SMALL LETTER I -2C3C;AL # GLAGOLITIC SMALL LETTER DJERVI -2C3D;AL # GLAGOLITIC SMALL LETTER KAKO -2C3E;AL # GLAGOLITIC SMALL LETTER LJUDIJE -2C3F;AL # GLAGOLITIC SMALL LETTER MYSLITE -2C40;AL # GLAGOLITIC SMALL LETTER NASHI -2C41;AL # GLAGOLITIC SMALL LETTER ONU -2C42;AL # GLAGOLITIC SMALL LETTER POKOJI -2C43;AL # GLAGOLITIC SMALL LETTER RITSI -2C44;AL # GLAGOLITIC SMALL LETTER SLOVO -2C45;AL # GLAGOLITIC SMALL LETTER TVRIDO -2C46;AL # GLAGOLITIC SMALL LETTER UKU -2C47;AL # GLAGOLITIC SMALL LETTER FRITU -2C48;AL # GLAGOLITIC SMALL LETTER HERU -2C49;AL # GLAGOLITIC SMALL LETTER OTU -2C4A;AL # GLAGOLITIC SMALL LETTER PE -2C4B;AL # GLAGOLITIC SMALL LETTER SHTA -2C4C;AL # GLAGOLITIC SMALL LETTER TSI -2C4D;AL # GLAGOLITIC SMALL LETTER CHRIVI -2C4E;AL # GLAGOLITIC SMALL LETTER SHA -2C4F;AL # GLAGOLITIC SMALL LETTER YERU -2C50;AL # GLAGOLITIC SMALL LETTER YERI -2C51;AL # GLAGOLITIC SMALL LETTER YATI -2C52;AL # GLAGOLITIC SMALL LETTER SPIDERY HA -2C53;AL # GLAGOLITIC SMALL LETTER YU -2C54;AL # GLAGOLITIC SMALL LETTER SMALL YUS -2C55;AL # GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL -2C56;AL # GLAGOLITIC SMALL LETTER YO -2C57;AL # GLAGOLITIC SMALL LETTER IOTATED SMALL YUS -2C58;AL # GLAGOLITIC SMALL LETTER BIG YUS -2C59;AL # GLAGOLITIC SMALL LETTER IOTATED BIG YUS -2C5A;AL # GLAGOLITIC SMALL LETTER FITA -2C5B;AL # GLAGOLITIC SMALL LETTER IZHITSA -2C5C;AL # GLAGOLITIC SMALL LETTER SHTAPIC -2C5D;AL # GLAGOLITIC SMALL LETTER TROKUTASTI A -2C5E;AL # GLAGOLITIC SMALL LETTER LATINATE MYSLITE -2C80;AL # COPTIC CAPITAL LETTER ALFA -2C81;AL # COPTIC SMALL LETTER ALFA -2C82;AL # COPTIC CAPITAL LETTER VIDA -2C83;AL # COPTIC SMALL LETTER VIDA -2C84;AL # COPTIC CAPITAL LETTER GAMMA -2C85;AL # COPTIC SMALL LETTER GAMMA -2C86;AL # COPTIC CAPITAL LETTER DALDA -2C87;AL # COPTIC SMALL LETTER DALDA -2C88;AL # COPTIC CAPITAL LETTER EIE -2C89;AL # COPTIC SMALL LETTER EIE -2C8A;AL # COPTIC CAPITAL LETTER SOU -2C8B;AL # COPTIC SMALL LETTER SOU -2C8C;AL # COPTIC CAPITAL LETTER ZATA -2C8D;AL # COPTIC SMALL LETTER ZATA -2C8E;AL # COPTIC CAPITAL LETTER HATE -2C8F;AL # COPTIC SMALL LETTER HATE -2C90;AL # COPTIC CAPITAL LETTER THETHE -2C91;AL # COPTIC SMALL LETTER THETHE -2C92;AL # COPTIC CAPITAL LETTER IAUDA -2C93;AL # COPTIC SMALL LETTER IAUDA -2C94;AL # COPTIC CAPITAL LETTER KAPA -2C95;AL # COPTIC SMALL LETTER KAPA -2C96;AL # COPTIC CAPITAL LETTER LAULA -2C97;AL # COPTIC SMALL LETTER LAULA -2C98;AL # COPTIC CAPITAL LETTER MI -2C99;AL # COPTIC SMALL LETTER MI -2C9A;AL # COPTIC CAPITAL LETTER NI -2C9B;AL # COPTIC SMALL LETTER NI -2C9C;AL # COPTIC CAPITAL LETTER KSI -2C9D;AL # COPTIC SMALL LETTER KSI -2C9E;AL # COPTIC CAPITAL LETTER O -2C9F;AL # COPTIC SMALL LETTER O -2CA0;AL # COPTIC CAPITAL LETTER PI -2CA1;AL # COPTIC SMALL LETTER PI -2CA2;AL # COPTIC CAPITAL LETTER RO -2CA3;AL # COPTIC SMALL LETTER RO -2CA4;AL # COPTIC CAPITAL LETTER SIMA -2CA5;AL # COPTIC SMALL LETTER SIMA -2CA6;AL # COPTIC CAPITAL LETTER TAU -2CA7;AL # COPTIC SMALL LETTER TAU -2CA8;AL # COPTIC CAPITAL LETTER UA -2CA9;AL # COPTIC SMALL LETTER UA -2CAA;AL # COPTIC CAPITAL LETTER FI -2CAB;AL # COPTIC SMALL LETTER FI -2CAC;AL # COPTIC CAPITAL LETTER KHI -2CAD;AL # COPTIC SMALL LETTER KHI -2CAE;AL # COPTIC CAPITAL LETTER PSI -2CAF;AL # COPTIC SMALL LETTER PSI -2CB0;AL # COPTIC CAPITAL LETTER OOU -2CB1;AL # COPTIC SMALL LETTER OOU -2CB2;AL # COPTIC CAPITAL LETTER DIALECT-P ALEF -2CB3;AL # COPTIC SMALL LETTER DIALECT-P ALEF -2CB4;AL # COPTIC CAPITAL LETTER OLD COPTIC AIN -2CB5;AL # COPTIC SMALL LETTER OLD COPTIC AIN -2CB6;AL # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE -2CB7;AL # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE -2CB8;AL # COPTIC CAPITAL LETTER DIALECT-P KAPA -2CB9;AL # COPTIC SMALL LETTER DIALECT-P KAPA -2CBA;AL # COPTIC CAPITAL LETTER DIALECT-P NI -2CBB;AL # COPTIC SMALL LETTER DIALECT-P NI -2CBC;AL # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI -2CBD;AL # COPTIC SMALL LETTER CRYPTOGRAMMIC NI -2CBE;AL # COPTIC CAPITAL LETTER OLD COPTIC OOU -2CBF;AL # COPTIC SMALL LETTER OLD COPTIC OOU -2CC0;AL # COPTIC CAPITAL LETTER SAMPI -2CC1;AL # COPTIC SMALL LETTER SAMPI -2CC2;AL # COPTIC CAPITAL LETTER CROSSED SHEI -2CC3;AL # COPTIC SMALL LETTER CROSSED SHEI -2CC4;AL # COPTIC CAPITAL LETTER OLD COPTIC SHEI -2CC5;AL # COPTIC SMALL LETTER OLD COPTIC SHEI -2CC6;AL # COPTIC CAPITAL LETTER OLD COPTIC ESH -2CC7;AL # COPTIC SMALL LETTER OLD COPTIC ESH -2CC8;AL # COPTIC CAPITAL LETTER AKHMIMIC KHEI -2CC9;AL # COPTIC SMALL LETTER AKHMIMIC KHEI -2CCA;AL # COPTIC CAPITAL LETTER DIALECT-P HORI -2CCB;AL # COPTIC SMALL LETTER DIALECT-P HORI -2CCC;AL # COPTIC CAPITAL LETTER OLD COPTIC HORI -2CCD;AL # COPTIC SMALL LETTER OLD COPTIC HORI -2CCE;AL # COPTIC CAPITAL LETTER OLD COPTIC HA -2CCF;AL # COPTIC SMALL LETTER OLD COPTIC HA -2CD0;AL # COPTIC CAPITAL LETTER L-SHAPED HA -2CD1;AL # COPTIC SMALL LETTER L-SHAPED HA -2CD2;AL # COPTIC CAPITAL LETTER OLD COPTIC HEI -2CD3;AL # COPTIC SMALL LETTER OLD COPTIC HEI -2CD4;AL # COPTIC CAPITAL LETTER OLD COPTIC HAT -2CD5;AL # COPTIC SMALL LETTER OLD COPTIC HAT -2CD6;AL # COPTIC CAPITAL LETTER OLD COPTIC GANGIA -2CD7;AL # COPTIC SMALL LETTER OLD COPTIC GANGIA -2CD8;AL # COPTIC CAPITAL LETTER OLD COPTIC DJA -2CD9;AL # COPTIC SMALL LETTER OLD COPTIC DJA -2CDA;AL # COPTIC CAPITAL LETTER OLD COPTIC SHIMA -2CDB;AL # COPTIC SMALL LETTER OLD COPTIC SHIMA -2CDC;AL # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA -2CDD;AL # COPTIC SMALL LETTER OLD NUBIAN SHIMA -2CDE;AL # COPTIC CAPITAL LETTER OLD NUBIAN NGI -2CDF;AL # COPTIC SMALL LETTER OLD NUBIAN NGI -2CE0;AL # COPTIC CAPITAL LETTER OLD NUBIAN NYI -2CE1;AL # COPTIC SMALL LETTER OLD NUBIAN NYI -2CE2;AL # COPTIC CAPITAL LETTER OLD NUBIAN WAU -2CE3;AL # COPTIC SMALL LETTER OLD NUBIAN WAU -2CE4;AL # COPTIC SYMBOL KAI -2CE5;AL # COPTIC SYMBOL MI RO -2CE6;AL # COPTIC SYMBOL PI RO -2CE7;AL # COPTIC SYMBOL STAUROS -2CE8;AL # COPTIC SYMBOL TAU RO -2CE9;AL # COPTIC SYMBOL KHI RO -2CEA;AL # COPTIC SYMBOL SHIMA SIMA -2CF9;BA # COPTIC OLD NUBIAN FULL STOP -2CFA;BA # COPTIC OLD NUBIAN DIRECT QUESTION MARK -2CFB;BA # COPTIC OLD NUBIAN INDIRECT QUESTION MARK -2CFC;BA # COPTIC OLD NUBIAN VERSE DIVIDER -2CFD;AL # COPTIC FRACTION ONE HALF -2CFE;BA # COPTIC FULL STOP -2CFF;BA # COPTIC MORPHOLOGICAL DIVIDER -2D00;AL # GEORGIAN SMALL LETTER AN -2D01;AL # GEORGIAN SMALL LETTER BAN -2D02;AL # GEORGIAN SMALL LETTER GAN -2D03;AL # GEORGIAN SMALL LETTER DON -2D04;AL # GEORGIAN SMALL LETTER EN -2D05;AL # GEORGIAN SMALL LETTER VIN -2D06;AL # GEORGIAN SMALL LETTER ZEN -2D07;AL # GEORGIAN SMALL LETTER TAN -2D08;AL # GEORGIAN SMALL LETTER IN -2D09;AL # GEORGIAN SMALL LETTER KAN -2D0A;AL # GEORGIAN SMALL LETTER LAS -2D0B;AL # GEORGIAN SMALL LETTER MAN -2D0C;AL # GEORGIAN SMALL LETTER NAR -2D0D;AL # GEORGIAN SMALL LETTER ON -2D0E;AL # GEORGIAN SMALL LETTER PAR -2D0F;AL # GEORGIAN SMALL LETTER ZHAR -2D10;AL # GEORGIAN SMALL LETTER RAE -2D11;AL # GEORGIAN SMALL LETTER SAN -2D12;AL # GEORGIAN SMALL LETTER TAR -2D13;AL # GEORGIAN SMALL LETTER UN -2D14;AL # GEORGIAN SMALL LETTER PHAR -2D15;AL # GEORGIAN SMALL LETTER KHAR -2D16;AL # GEORGIAN SMALL LETTER GHAN -2D17;AL # GEORGIAN SMALL LETTER QAR -2D18;AL # GEORGIAN SMALL LETTER SHIN -2D19;AL # GEORGIAN SMALL LETTER CHIN -2D1A;AL # GEORGIAN SMALL LETTER CAN -2D1B;AL # GEORGIAN SMALL LETTER JIL -2D1C;AL # GEORGIAN SMALL LETTER CIL -2D1D;AL # GEORGIAN SMALL LETTER CHAR -2D1E;AL # GEORGIAN SMALL LETTER XAN -2D1F;AL # GEORGIAN SMALL LETTER JHAN -2D20;AL # GEORGIAN SMALL LETTER HAE -2D21;AL # GEORGIAN SMALL LETTER HE -2D22;AL # GEORGIAN SMALL LETTER HIE -2D23;AL # GEORGIAN SMALL LETTER WE -2D24;AL # GEORGIAN SMALL LETTER HAR -2D25;AL # GEORGIAN SMALL LETTER HOE -2D30;AL # TIFINAGH LETTER YA -2D31;AL # TIFINAGH LETTER YAB -2D32;AL # TIFINAGH LETTER YABH -2D33;AL # TIFINAGH LETTER YAG -2D34;AL # TIFINAGH LETTER YAGHH -2D35;AL # TIFINAGH LETTER BERBER ACADEMY YAJ -2D36;AL # TIFINAGH LETTER YAJ -2D37;AL # TIFINAGH LETTER YAD -2D38;AL # TIFINAGH LETTER YADH -2D39;AL # TIFINAGH LETTER YADD -2D3A;AL # TIFINAGH LETTER YADDH -2D3B;AL # TIFINAGH LETTER YEY -2D3C;AL # TIFINAGH LETTER YAF -2D3D;AL # TIFINAGH LETTER YAK -2D3E;AL # TIFINAGH LETTER TUAREG YAK -2D3F;AL # TIFINAGH LETTER YAKHH -2D40;AL # TIFINAGH LETTER YAH -2D41;AL # TIFINAGH LETTER BERBER ACADEMY YAH -2D42;AL # TIFINAGH LETTER TUAREG YAH -2D43;AL # TIFINAGH LETTER YAHH -2D44;AL # TIFINAGH LETTER YAA -2D45;AL # TIFINAGH LETTER YAKH -2D46;AL # TIFINAGH LETTER TUAREG YAKH -2D47;AL # TIFINAGH LETTER YAQ -2D48;AL # TIFINAGH LETTER TUAREG YAQ -2D49;AL # TIFINAGH LETTER YI -2D4A;AL # TIFINAGH LETTER YAZH -2D4B;AL # TIFINAGH LETTER AHAGGAR YAZH -2D4C;AL # TIFINAGH LETTER TUAREG YAZH -2D4D;AL # TIFINAGH LETTER YAL -2D4E;AL # TIFINAGH LETTER YAM -2D4F;AL # TIFINAGH LETTER YAN -2D50;AL # TIFINAGH LETTER TUAREG YAGN -2D51;AL # TIFINAGH LETTER TUAREG YANG -2D52;AL # TIFINAGH LETTER YAP -2D53;AL # TIFINAGH LETTER YU -2D54;AL # TIFINAGH LETTER YAR -2D55;AL # TIFINAGH LETTER YARR -2D56;AL # TIFINAGH LETTER YAGH -2D57;AL # TIFINAGH LETTER TUAREG YAGH -2D58;AL # TIFINAGH LETTER AYER YAGH -2D59;AL # TIFINAGH LETTER YAS -2D5A;AL # TIFINAGH LETTER YASS -2D5B;AL # TIFINAGH LETTER YASH -2D5C;AL # TIFINAGH LETTER YAT -2D5D;AL # TIFINAGH LETTER YATH -2D5E;AL # TIFINAGH LETTER YACH -2D5F;AL # TIFINAGH LETTER YATT -2D60;AL # TIFINAGH LETTER YAV -2D61;AL # TIFINAGH LETTER YAW -2D62;AL # TIFINAGH LETTER YAY -2D63;AL # TIFINAGH LETTER YAZ -2D64;AL # TIFINAGH LETTER TAWELLEMET YAZ -2D65;AL # TIFINAGH LETTER YAZZ -2D6F;AL # TIFINAGH MODIFIER LETTER LABIALIZATION MARK -2D80;AL # ETHIOPIC SYLLABLE LOA -2D81;AL # ETHIOPIC SYLLABLE MOA -2D82;AL # ETHIOPIC SYLLABLE ROA -2D83;AL # ETHIOPIC SYLLABLE SOA -2D84;AL # ETHIOPIC SYLLABLE SHOA -2D85;AL # ETHIOPIC SYLLABLE BOA -2D86;AL # ETHIOPIC SYLLABLE TOA -2D87;AL # ETHIOPIC SYLLABLE COA -2D88;AL # ETHIOPIC SYLLABLE NOA -2D89;AL # ETHIOPIC SYLLABLE NYOA -2D8A;AL # ETHIOPIC SYLLABLE GLOTTAL OA -2D8B;AL # ETHIOPIC SYLLABLE ZOA -2D8C;AL # ETHIOPIC SYLLABLE DOA -2D8D;AL # ETHIOPIC SYLLABLE DDOA -2D8E;AL # ETHIOPIC SYLLABLE JOA -2D8F;AL # ETHIOPIC SYLLABLE THOA -2D90;AL # ETHIOPIC SYLLABLE CHOA -2D91;AL # ETHIOPIC SYLLABLE PHOA -2D92;AL # ETHIOPIC SYLLABLE POA -2D93;AL # ETHIOPIC SYLLABLE GGWA -2D94;AL # ETHIOPIC SYLLABLE GGWI -2D95;AL # ETHIOPIC SYLLABLE GGWEE -2D96;AL # ETHIOPIC SYLLABLE GGWE -2DA0;AL # ETHIOPIC SYLLABLE SSA -2DA1;AL # ETHIOPIC SYLLABLE SSU -2DA2;AL # ETHIOPIC SYLLABLE SSI -2DA3;AL # ETHIOPIC SYLLABLE SSAA -2DA4;AL # ETHIOPIC SYLLABLE SSEE -2DA5;AL # ETHIOPIC SYLLABLE SSE -2DA6;AL # ETHIOPIC SYLLABLE SSO -2DA8;AL # ETHIOPIC SYLLABLE CCA -2DA9;AL # ETHIOPIC SYLLABLE CCU -2DAA;AL # ETHIOPIC SYLLABLE CCI -2DAB;AL # ETHIOPIC SYLLABLE CCAA -2DAC;AL # ETHIOPIC SYLLABLE CCEE -2DAD;AL # ETHIOPIC SYLLABLE CCE -2DAE;AL # ETHIOPIC SYLLABLE CCO -2DB0;AL # ETHIOPIC SYLLABLE ZZA -2DB1;AL # ETHIOPIC SYLLABLE ZZU -2DB2;AL # ETHIOPIC SYLLABLE ZZI -2DB3;AL # ETHIOPIC SYLLABLE ZZAA -2DB4;AL # ETHIOPIC SYLLABLE ZZEE -2DB5;AL # ETHIOPIC SYLLABLE ZZE -2DB6;AL # ETHIOPIC SYLLABLE ZZO -2DB8;AL # ETHIOPIC SYLLABLE CCHA -2DB9;AL # ETHIOPIC SYLLABLE CCHU -2DBA;AL # ETHIOPIC SYLLABLE CCHI -2DBB;AL # ETHIOPIC SYLLABLE CCHAA -2DBC;AL # ETHIOPIC SYLLABLE CCHEE -2DBD;AL # ETHIOPIC SYLLABLE CCHE -2DBE;AL # ETHIOPIC SYLLABLE CCHO -2DC0;AL # ETHIOPIC SYLLABLE QYA -2DC1;AL # ETHIOPIC SYLLABLE QYU -2DC2;AL # ETHIOPIC SYLLABLE QYI -2DC3;AL # ETHIOPIC SYLLABLE QYAA -2DC4;AL # ETHIOPIC SYLLABLE QYEE -2DC5;AL # ETHIOPIC SYLLABLE QYE -2DC6;AL # ETHIOPIC SYLLABLE QYO -2DC8;AL # ETHIOPIC SYLLABLE KYA -2DC9;AL # ETHIOPIC SYLLABLE KYU -2DCA;AL # ETHIOPIC SYLLABLE KYI -2DCB;AL # ETHIOPIC SYLLABLE KYAA -2DCC;AL # ETHIOPIC SYLLABLE KYEE -2DCD;AL # ETHIOPIC SYLLABLE KYE -2DCE;AL # ETHIOPIC SYLLABLE KYO -2DD0;AL # ETHIOPIC SYLLABLE XYA -2DD1;AL # ETHIOPIC SYLLABLE XYU -2DD2;AL # ETHIOPIC SYLLABLE XYI -2DD3;AL # ETHIOPIC SYLLABLE XYAA -2DD4;AL # ETHIOPIC SYLLABLE XYEE -2DD5;AL # ETHIOPIC SYLLABLE XYE -2DD6;AL # ETHIOPIC SYLLABLE XYO -2DD8;AL # ETHIOPIC SYLLABLE GYA -2DD9;AL # ETHIOPIC SYLLABLE GYU -2DDA;AL # ETHIOPIC SYLLABLE GYI -2DDB;AL # ETHIOPIC SYLLABLE GYAA -2DDC;AL # ETHIOPIC SYLLABLE GYEE -2DDD;AL # ETHIOPIC SYLLABLE GYE -2DDE;AL # ETHIOPIC SYLLABLE GYO -2E00;QU # RIGHT ANGLE SUBSTITUTION MARKER -2E01;QU # RIGHT ANGLE DOTTED SUBSTITUTION MARKER -2E02;QU # LEFT SUBSTITUTION BRACKET -2E03;QU # RIGHT SUBSTITUTION BRACKET -2E04;QU # LEFT DOTTED SUBSTITUTION BRACKET -2E05;QU # RIGHT DOTTED SUBSTITUTION BRACKET -2E06;QU # RAISED INTERPOLATION MARKER -2E07;QU # RAISED DOTTED INTERPOLATION MARKER -2E08;QU # DOTTED TRANSPOSITION MARKER -2E09;QU # LEFT TRANSPOSITION BRACKET -2E0A;QU # RIGHT TRANSPOSITION BRACKET -2E0B;QU # RAISED SQUARE -2E0C;QU # LEFT RAISED OMISSION BRACKET -2E0D;QU # RIGHT RAISED OMISSION BRACKET -2E0E;BA # EDITORIAL CORONIS -2E0F;BA # PARAGRAPHOS -2E10;BA # FORKED PARAGRAPHOS -2E11;BA # REVERSED FORKED PARAGRAPHOS -2E12;BA # HYPODIASTOLE -2E13;BA # DOTTED OBELOS -2E14;BA # DOWNWARDS ANCORA -2E15;BA # UPWARDS ANCORA -2E16;AL # DOTTED RIGHT-POINTING ANGLE -2E17;BA # DOUBLE OBLIQUE HYPHEN -2E1C;QU # LEFT LOW PARAPHRASE BRACKET -2E1D;QU # RIGHT LOW PARAPHRASE BRACKET -2E80;ID # CJK RADICAL REPEAT -2E81;ID # CJK RADICAL CLIFF -2E82;ID # CJK RADICAL SECOND ONE -2E83;ID # CJK RADICAL SECOND TWO -2E84;ID # CJK RADICAL SECOND THREE -2E85;ID # CJK RADICAL PERSON -2E86;ID # CJK RADICAL BOX -2E87;ID # CJK RADICAL TABLE -2E88;ID # CJK RADICAL KNIFE ONE -2E89;ID # CJK RADICAL KNIFE TWO -2E8A;ID # CJK RADICAL DIVINATION -2E8B;ID # CJK RADICAL SEAL -2E8C;ID # CJK RADICAL SMALL ONE -2E8D;ID # CJK RADICAL SMALL TWO -2E8E;ID # CJK RADICAL LAME ONE -2E8F;ID # CJK RADICAL LAME TWO -2E90;ID # CJK RADICAL LAME THREE -2E91;ID # CJK RADICAL LAME FOUR -2E92;ID # CJK RADICAL SNAKE -2E93;ID # CJK RADICAL THREAD -2E94;ID # CJK RADICAL SNOUT ONE -2E95;ID # CJK RADICAL SNOUT TWO -2E96;ID # CJK RADICAL HEART ONE -2E97;ID # CJK RADICAL HEART TWO -2E98;ID # CJK RADICAL HAND -2E99;ID # CJK RADICAL RAP -2E9B;ID # CJK RADICAL CHOKE -2E9C;ID # CJK RADICAL SUN -2E9D;ID # CJK RADICAL MOON -2E9E;ID # CJK RADICAL DEATH -2E9F;ID # CJK RADICAL MOTHER -2EA0;ID # CJK RADICAL CIVILIAN -2EA1;ID # CJK RADICAL WATER ONE -2EA2;ID # CJK RADICAL WATER TWO -2EA3;ID # CJK RADICAL FIRE -2EA4;ID # CJK RADICAL PAW ONE -2EA5;ID # CJK RADICAL PAW TWO -2EA6;ID # CJK RADICAL SIMPLIFIED HALF TREE TRUNK -2EA7;ID # CJK RADICAL COW -2EA8;ID # CJK RADICAL DOG -2EA9;ID # CJK RADICAL JADE -2EAA;ID # CJK RADICAL BOLT OF CLOTH -2EAB;ID # CJK RADICAL EYE -2EAC;ID # CJK RADICAL SPIRIT ONE -2EAD;ID # CJK RADICAL SPIRIT TWO -2EAE;ID # CJK RADICAL BAMBOO -2EAF;ID # CJK RADICAL SILK -2EB0;ID # CJK RADICAL C-SIMPLIFIED SILK -2EB1;ID # CJK RADICAL NET ONE -2EB2;ID # CJK RADICAL NET TWO -2EB3;ID # CJK RADICAL NET THREE -2EB4;ID # CJK RADICAL NET FOUR -2EB5;ID # CJK RADICAL MESH -2EB6;ID # CJK RADICAL SHEEP -2EB7;ID # CJK RADICAL RAM -2EB8;ID # CJK RADICAL EWE -2EB9;ID # CJK RADICAL OLD -2EBA;ID # CJK RADICAL BRUSH ONE -2EBB;ID # CJK RADICAL BRUSH TWO -2EBC;ID # CJK RADICAL MEAT -2EBD;ID # CJK RADICAL MORTAR -2EBE;ID # CJK RADICAL GRASS ONE -2EBF;ID # CJK RADICAL GRASS TWO -2EC0;ID # CJK RADICAL GRASS THREE -2EC1;ID # CJK RADICAL TIGER -2EC2;ID # CJK RADICAL CLOTHES -2EC3;ID # CJK RADICAL WEST ONE -2EC4;ID # CJK RADICAL WEST TWO -2EC5;ID # CJK RADICAL C-SIMPLIFIED SEE -2EC6;ID # CJK RADICAL SIMPLIFIED HORN -2EC7;ID # CJK RADICAL HORN -2EC8;ID # CJK RADICAL C-SIMPLIFIED SPEECH -2EC9;ID # CJK RADICAL C-SIMPLIFIED SHELL -2ECA;ID # CJK RADICAL FOOT -2ECB;ID # CJK RADICAL C-SIMPLIFIED CART -2ECC;ID # CJK RADICAL SIMPLIFIED WALK -2ECD;ID # CJK RADICAL WALK ONE -2ECE;ID # CJK RADICAL WALK TWO -2ECF;ID # CJK RADICAL CITY -2ED0;ID # CJK RADICAL C-SIMPLIFIED GOLD -2ED1;ID # CJK RADICAL LONG ONE -2ED2;ID # CJK RADICAL LONG TWO -2ED3;ID # CJK RADICAL C-SIMPLIFIED LONG -2ED4;ID # CJK RADICAL C-SIMPLIFIED GATE -2ED5;ID # CJK RADICAL MOUND ONE -2ED6;ID # CJK RADICAL MOUND TWO -2ED7;ID # CJK RADICAL RAIN -2ED8;ID # CJK RADICAL BLUE -2ED9;ID # CJK RADICAL C-SIMPLIFIED TANNED LEATHER -2EDA;ID # CJK RADICAL C-SIMPLIFIED LEAF -2EDB;ID # CJK RADICAL C-SIMPLIFIED WIND -2EDC;ID # CJK RADICAL C-SIMPLIFIED FLY -2EDD;ID # CJK RADICAL EAT ONE -2EDE;ID # CJK RADICAL EAT TWO -2EDF;ID # CJK RADICAL EAT THREE -2EE0;ID # CJK RADICAL C-SIMPLIFIED EAT -2EE1;ID # CJK RADICAL HEAD -2EE2;ID # CJK RADICAL C-SIMPLIFIED HORSE -2EE3;ID # CJK RADICAL BONE -2EE4;ID # CJK RADICAL GHOST -2EE5;ID # CJK RADICAL C-SIMPLIFIED FISH -2EE6;ID # CJK RADICAL C-SIMPLIFIED BIRD -2EE7;ID # CJK RADICAL C-SIMPLIFIED SALT -2EE8;ID # CJK RADICAL SIMPLIFIED WHEAT -2EE9;ID # CJK RADICAL SIMPLIFIED YELLOW -2EEA;ID # CJK RADICAL C-SIMPLIFIED FROG -2EEB;ID # CJK RADICAL J-SIMPLIFIED EVEN -2EEC;ID # CJK RADICAL C-SIMPLIFIED EVEN -2EED;ID # CJK RADICAL J-SIMPLIFIED TOOTH -2EEE;ID # CJK RADICAL C-SIMPLIFIED TOOTH -2EEF;ID # CJK RADICAL J-SIMPLIFIED DRAGON -2EF0;ID # CJK RADICAL C-SIMPLIFIED DRAGON -2EF1;ID # CJK RADICAL TURTLE -2EF2;ID # CJK RADICAL J-SIMPLIFIED TURTLE -2EF3;ID # CJK RADICAL C-SIMPLIFIED TURTLE -2F00;ID # KANGXI RADICAL ONE -2F01;ID # KANGXI RADICAL LINE -2F02;ID # KANGXI RADICAL DOT -2F03;ID # KANGXI RADICAL SLASH -2F04;ID # KANGXI RADICAL SECOND -2F05;ID # KANGXI RADICAL HOOK -2F06;ID # KANGXI RADICAL TWO -2F07;ID # KANGXI RADICAL LID -2F08;ID # KANGXI RADICAL MAN -2F09;ID # KANGXI RADICAL LEGS -2F0A;ID # KANGXI RADICAL ENTER -2F0B;ID # KANGXI RADICAL EIGHT -2F0C;ID # KANGXI RADICAL DOWN BOX -2F0D;ID # KANGXI RADICAL COVER -2F0E;ID # KANGXI RADICAL ICE -2F0F;ID # KANGXI RADICAL TABLE -2F10;ID # KANGXI RADICAL OPEN BOX -2F11;ID # KANGXI RADICAL KNIFE -2F12;ID # KANGXI RADICAL POWER -2F13;ID # KANGXI RADICAL WRAP -2F14;ID # KANGXI RADICAL SPOON -2F15;ID # KANGXI RADICAL RIGHT OPEN BOX -2F16;ID # KANGXI RADICAL HIDING ENCLOSURE -2F17;ID # KANGXI RADICAL TEN -2F18;ID # KANGXI RADICAL DIVINATION -2F19;ID # KANGXI RADICAL SEAL -2F1A;ID # KANGXI RADICAL CLIFF -2F1B;ID # KANGXI RADICAL PRIVATE -2F1C;ID # KANGXI RADICAL AGAIN -2F1D;ID # KANGXI RADICAL MOUTH -2F1E;ID # KANGXI RADICAL ENCLOSURE -2F1F;ID # KANGXI RADICAL EARTH -2F20;ID # KANGXI RADICAL SCHOLAR -2F21;ID # KANGXI RADICAL GO -2F22;ID # KANGXI RADICAL GO SLOWLY -2F23;ID # KANGXI RADICAL EVENING -2F24;ID # KANGXI RADICAL BIG -2F25;ID # KANGXI RADICAL WOMAN -2F26;ID # KANGXI RADICAL CHILD -2F27;ID # KANGXI RADICAL ROOF -2F28;ID # KANGXI RADICAL INCH -2F29;ID # KANGXI RADICAL SMALL -2F2A;ID # KANGXI RADICAL LAME -2F2B;ID # KANGXI RADICAL CORPSE -2F2C;ID # KANGXI RADICAL SPROUT -2F2D;ID # KANGXI RADICAL MOUNTAIN -2F2E;ID # KANGXI RADICAL RIVER -2F2F;ID # KANGXI RADICAL WORK -2F30;ID # KANGXI RADICAL ONESELF -2F31;ID # KANGXI RADICAL TURBAN -2F32;ID # KANGXI RADICAL DRY -2F33;ID # KANGXI RADICAL SHORT THREAD -2F34;ID # KANGXI RADICAL DOTTED CLIFF -2F35;ID # KANGXI RADICAL LONG STRIDE -2F36;ID # KANGXI RADICAL TWO HANDS -2F37;ID # KANGXI RADICAL SHOOT -2F38;ID # KANGXI RADICAL BOW -2F39;ID # KANGXI RADICAL SNOUT -2F3A;ID # KANGXI RADICAL BRISTLE -2F3B;ID # KANGXI RADICAL STEP -2F3C;ID # KANGXI RADICAL HEART -2F3D;ID # KANGXI RADICAL HALBERD -2F3E;ID # KANGXI RADICAL DOOR -2F3F;ID # KANGXI RADICAL HAND -2F40;ID # KANGXI RADICAL BRANCH -2F41;ID # KANGXI RADICAL RAP -2F42;ID # KANGXI RADICAL SCRIPT -2F43;ID # KANGXI RADICAL DIPPER -2F44;ID # KANGXI RADICAL AXE -2F45;ID # KANGXI RADICAL SQUARE -2F46;ID # KANGXI RADICAL NOT -2F47;ID # KANGXI RADICAL SUN -2F48;ID # KANGXI RADICAL SAY -2F49;ID # KANGXI RADICAL MOON -2F4A;ID # KANGXI RADICAL TREE -2F4B;ID # KANGXI RADICAL LACK -2F4C;ID # KANGXI RADICAL STOP -2F4D;ID # KANGXI RADICAL DEATH -2F4E;ID # KANGXI RADICAL WEAPON -2F4F;ID # KANGXI RADICAL DO NOT -2F50;ID # KANGXI RADICAL COMPARE -2F51;ID # KANGXI RADICAL FUR -2F52;ID # KANGXI RADICAL CLAN -2F53;ID # KANGXI RADICAL STEAM -2F54;ID # KANGXI RADICAL WATER -2F55;ID # KANGXI RADICAL FIRE -2F56;ID # KANGXI RADICAL CLAW -2F57;ID # KANGXI RADICAL FATHER -2F58;ID # KANGXI RADICAL DOUBLE X -2F59;ID # KANGXI RADICAL HALF TREE TRUNK -2F5A;ID # KANGXI RADICAL SLICE -2F5B;ID # KANGXI RADICAL FANG -2F5C;ID # KANGXI RADICAL COW -2F5D;ID # KANGXI RADICAL DOG -2F5E;ID # KANGXI RADICAL PROFOUND -2F5F;ID # KANGXI RADICAL JADE -2F60;ID # KANGXI RADICAL MELON -2F61;ID # KANGXI RADICAL TILE -2F62;ID # KANGXI RADICAL SWEET -2F63;ID # KANGXI RADICAL LIFE -2F64;ID # KANGXI RADICAL USE -2F65;ID # KANGXI RADICAL FIELD -2F66;ID # KANGXI RADICAL BOLT OF CLOTH -2F67;ID # KANGXI RADICAL SICKNESS -2F68;ID # KANGXI RADICAL DOTTED TENT -2F69;ID # KANGXI RADICAL WHITE -2F6A;ID # KANGXI RADICAL SKIN -2F6B;ID # KANGXI RADICAL DISH -2F6C;ID # KANGXI RADICAL EYE -2F6D;ID # KANGXI RADICAL SPEAR -2F6E;ID # KANGXI RADICAL ARROW -2F6F;ID # KANGXI RADICAL STONE -2F70;ID # KANGXI RADICAL SPIRIT -2F71;ID # KANGXI RADICAL TRACK -2F72;ID # KANGXI RADICAL GRAIN -2F73;ID # KANGXI RADICAL CAVE -2F74;ID # KANGXI RADICAL STAND -2F75;ID # KANGXI RADICAL BAMBOO -2F76;ID # KANGXI RADICAL RICE -2F77;ID # KANGXI RADICAL SILK -2F78;ID # KANGXI RADICAL JAR -2F79;ID # KANGXI RADICAL NET -2F7A;ID # KANGXI RADICAL SHEEP -2F7B;ID # KANGXI RADICAL FEATHER -2F7C;ID # KANGXI RADICAL OLD -2F7D;ID # KANGXI RADICAL AND -2F7E;ID # KANGXI RADICAL PLOW -2F7F;ID # KANGXI RADICAL EAR -2F80;ID # KANGXI RADICAL BRUSH -2F81;ID # KANGXI RADICAL MEAT -2F82;ID # KANGXI RADICAL MINISTER -2F83;ID # KANGXI RADICAL SELF -2F84;ID # KANGXI RADICAL ARRIVE -2F85;ID # KANGXI RADICAL MORTAR -2F86;ID # KANGXI RADICAL TONGUE -2F87;ID # KANGXI RADICAL OPPOSE -2F88;ID # KANGXI RADICAL BOAT -2F89;ID # KANGXI RADICAL STOPPING -2F8A;ID # KANGXI RADICAL COLOR -2F8B;ID # KANGXI RADICAL GRASS -2F8C;ID # KANGXI RADICAL TIGER -2F8D;ID # KANGXI RADICAL INSECT -2F8E;ID # KANGXI RADICAL BLOOD -2F8F;ID # KANGXI RADICAL WALK ENCLOSURE -2F90;ID # KANGXI RADICAL CLOTHES -2F91;ID # KANGXI RADICAL WEST -2F92;ID # KANGXI RADICAL SEE -2F93;ID # KANGXI RADICAL HORN -2F94;ID # KANGXI RADICAL SPEECH -2F95;ID # KANGXI RADICAL VALLEY -2F96;ID # KANGXI RADICAL BEAN -2F97;ID # KANGXI RADICAL PIG -2F98;ID # KANGXI RADICAL BADGER -2F99;ID # KANGXI RADICAL SHELL -2F9A;ID # KANGXI RADICAL RED -2F9B;ID # KANGXI RADICAL RUN -2F9C;ID # KANGXI RADICAL FOOT -2F9D;ID # KANGXI RADICAL BODY -2F9E;ID # KANGXI RADICAL CART -2F9F;ID # KANGXI RADICAL BITTER -2FA0;ID # KANGXI RADICAL MORNING -2FA1;ID # KANGXI RADICAL WALK -2FA2;ID # KANGXI RADICAL CITY -2FA3;ID # KANGXI RADICAL WINE -2FA4;ID # KANGXI RADICAL DISTINGUISH -2FA5;ID # KANGXI RADICAL VILLAGE -2FA6;ID # KANGXI RADICAL GOLD -2FA7;ID # KANGXI RADICAL LONG -2FA8;ID # KANGXI RADICAL GATE -2FA9;ID # KANGXI RADICAL MOUND -2FAA;ID # KANGXI RADICAL SLAVE -2FAB;ID # KANGXI RADICAL SHORT TAILED BIRD -2FAC;ID # KANGXI RADICAL RAIN -2FAD;ID # KANGXI RADICAL BLUE -2FAE;ID # KANGXI RADICAL WRONG -2FAF;ID # KANGXI RADICAL FACE -2FB0;ID # KANGXI RADICAL LEATHER -2FB1;ID # KANGXI RADICAL TANNED LEATHER -2FB2;ID # KANGXI RADICAL LEEK -2FB3;ID # KANGXI RADICAL SOUND -2FB4;ID # KANGXI RADICAL LEAF -2FB5;ID # KANGXI RADICAL WIND -2FB6;ID # KANGXI RADICAL FLY -2FB7;ID # KANGXI RADICAL EAT -2FB8;ID # KANGXI RADICAL HEAD -2FB9;ID # KANGXI RADICAL FRAGRANT -2FBA;ID # KANGXI RADICAL HORSE -2FBB;ID # KANGXI RADICAL BONE -2FBC;ID # KANGXI RADICAL TALL -2FBD;ID # KANGXI RADICAL HAIR -2FBE;ID # KANGXI RADICAL FIGHT -2FBF;ID # KANGXI RADICAL SACRIFICIAL WINE -2FC0;ID # KANGXI RADICAL CAULDRON -2FC1;ID # KANGXI RADICAL GHOST -2FC2;ID # KANGXI RADICAL FISH -2FC3;ID # KANGXI RADICAL BIRD -2FC4;ID # KANGXI RADICAL SALT -2FC5;ID # KANGXI RADICAL DEER -2FC6;ID # KANGXI RADICAL WHEAT -2FC7;ID # KANGXI RADICAL HEMP -2FC8;ID # KANGXI RADICAL YELLOW -2FC9;ID # KANGXI RADICAL MILLET -2FCA;ID # KANGXI RADICAL BLACK -2FCB;ID # KANGXI RADICAL EMBROIDERY -2FCC;ID # KANGXI RADICAL FROG -2FCD;ID # KANGXI RADICAL TRIPOD -2FCE;ID # KANGXI RADICAL DRUM -2FCF;ID # KANGXI RADICAL RAT -2FD0;ID # KANGXI RADICAL NOSE -2FD1;ID # KANGXI RADICAL EVEN -2FD2;ID # KANGXI RADICAL TOOTH -2FD3;ID # KANGXI RADICAL DRAGON -2FD4;ID # KANGXI RADICAL TURTLE -2FD5;ID # KANGXI RADICAL FLUTE -2FF0;ID # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT -2FF1;ID # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW -2FF2;ID # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT -2FF3;ID # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW -2FF4;ID # IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND -2FF5;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE -2FF6;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW -2FF7;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT -2FF8;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT -2FF9;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT -2FFA;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT -2FFB;ID # IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID -3000;ID # IDEOGRAPHIC SPACE -3001;CL # IDEOGRAPHIC COMMA -3002;CL # IDEOGRAPHIC FULL STOP -3003;ID # DITTO MARK -3004;ID # JAPANESE INDUSTRIAL STANDARD SYMBOL -3005;NS # IDEOGRAPHIC ITERATION MARK -3006;ID # IDEOGRAPHIC CLOSING MARK -3007;ID # IDEOGRAPHIC NUMBER ZERO -3008;OP # LEFT ANGLE BRACKET -3009;CL # RIGHT ANGLE BRACKET -300A;OP # LEFT DOUBLE ANGLE BRACKET -300B;CL # RIGHT DOUBLE ANGLE BRACKET -300C;OP # LEFT CORNER BRACKET -300D;CL # RIGHT CORNER BRACKET -300E;OP # LEFT WHITE CORNER BRACKET -300F;CL # RIGHT WHITE CORNER BRACKET -3010;OP # LEFT BLACK LENTICULAR BRACKET -3011;CL # RIGHT BLACK LENTICULAR BRACKET -3012;ID # POSTAL MARK -3013;ID # GETA MARK -3014;OP # LEFT TORTOISE SHELL BRACKET -3015;CL # RIGHT TORTOISE SHELL BRACKET -3016;OP # LEFT WHITE LENTICULAR BRACKET -3017;CL # RIGHT WHITE LENTICULAR BRACKET -3018;OP # LEFT WHITE TORTOISE SHELL BRACKET -3019;CL # RIGHT WHITE TORTOISE SHELL BRACKET -301A;OP # LEFT WHITE SQUARE BRACKET -301B;CL # RIGHT WHITE SQUARE BRACKET -301C;NS # WAVE DASH -301D;OP # REVERSED DOUBLE PRIME QUOTATION MARK -301E;CL # DOUBLE PRIME QUOTATION MARK -301F;CL # LOW DOUBLE PRIME QUOTATION MARK -3020;ID # POSTAL MARK FACE -3021;ID # HANGZHOU NUMERAL ONE -3022;ID # HANGZHOU NUMERAL TWO -3023;ID # HANGZHOU NUMERAL THREE -3024;ID # HANGZHOU NUMERAL FOUR -3025;ID # HANGZHOU NUMERAL FIVE -3026;ID # HANGZHOU NUMERAL SIX -3027;ID # HANGZHOU NUMERAL SEVEN -3028;ID # HANGZHOU NUMERAL EIGHT -3029;ID # HANGZHOU NUMERAL NINE -302A;CM # IDEOGRAPHIC LEVEL TONE MARK -302B;CM # IDEOGRAPHIC RISING TONE MARK -302C;CM # IDEOGRAPHIC DEPARTING TONE MARK -302D;CM # IDEOGRAPHIC ENTERING TONE MARK -302E;CM # HANGUL SINGLE DOT TONE MARK -302F;CM # HANGUL DOUBLE DOT TONE MARK -3030;ID # WAVY DASH -3031;ID # VERTICAL KANA REPEAT MARK -3032;ID # VERTICAL KANA REPEAT WITH VOICED SOUND MARK -3033;ID # VERTICAL KANA REPEAT MARK UPPER HALF -3034;ID # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF -3035;ID # VERTICAL KANA REPEAT MARK LOWER HALF -3036;ID # CIRCLED POSTAL MARK -3037;ID # IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL -3038;ID # HANGZHOU NUMERAL TEN -3039;ID # HANGZHOU NUMERAL TWENTY -303A;ID # HANGZHOU NUMERAL THIRTY -303B;NS # VERTICAL IDEOGRAPHIC ITERATION MARK -303C;NS # MASU MARK -303D;ID # PART ALTERNATION MARK -303E;ID # IDEOGRAPHIC VARIATION INDICATOR -303F;ID # IDEOGRAPHIC HALF FILL SPACE -3041;NS # HIRAGANA LETTER SMALL A -3042;ID # HIRAGANA LETTER A -3043;NS # HIRAGANA LETTER SMALL I -3044;ID # HIRAGANA LETTER I -3045;NS # HIRAGANA LETTER SMALL U -3046;ID # HIRAGANA LETTER U -3047;NS # HIRAGANA LETTER SMALL E -3048;ID # HIRAGANA LETTER E -3049;NS # HIRAGANA LETTER SMALL O -304A;ID # HIRAGANA LETTER O -304B;ID # HIRAGANA LETTER KA -304C;ID # HIRAGANA LETTER GA -304D;ID # HIRAGANA LETTER KI -304E;ID # HIRAGANA LETTER GI -304F;ID # HIRAGANA LETTER KU -3050;ID # HIRAGANA LETTER GU -3051;ID # HIRAGANA LETTER KE -3052;ID # HIRAGANA LETTER GE -3053;ID # HIRAGANA LETTER KO -3054;ID # HIRAGANA LETTER GO -3055;ID # HIRAGANA LETTER SA -3056;ID # HIRAGANA LETTER ZA -3057;ID # HIRAGANA LETTER SI -3058;ID # HIRAGANA LETTER ZI -3059;ID # HIRAGANA LETTER SU -305A;ID # HIRAGANA LETTER ZU -305B;ID # HIRAGANA LETTER SE -305C;ID # HIRAGANA LETTER ZE -305D;ID # HIRAGANA LETTER SO -305E;ID # HIRAGANA LETTER ZO -305F;ID # HIRAGANA LETTER TA -3060;ID # HIRAGANA LETTER DA -3061;ID # HIRAGANA LETTER TI -3062;ID # HIRAGANA LETTER DI -3063;NS # HIRAGANA LETTER SMALL TU -3064;ID # HIRAGANA LETTER TU -3065;ID # HIRAGANA LETTER DU -3066;ID # HIRAGANA LETTER TE -3067;ID # HIRAGANA LETTER DE -3068;ID # HIRAGANA LETTER TO -3069;ID # HIRAGANA LETTER DO -306A;ID # HIRAGANA LETTER NA -306B;ID # HIRAGANA LETTER NI -306C;ID # HIRAGANA LETTER NU -306D;ID # HIRAGANA LETTER NE -306E;ID # HIRAGANA LETTER NO -306F;ID # HIRAGANA LETTER HA -3070;ID # HIRAGANA LETTER BA -3071;ID # HIRAGANA LETTER PA -3072;ID # HIRAGANA LETTER HI -3073;ID # HIRAGANA LETTER BI -3074;ID # HIRAGANA LETTER PI -3075;ID # HIRAGANA LETTER HU -3076;ID # HIRAGANA LETTER BU -3077;ID # HIRAGANA LETTER PU -3078;ID # HIRAGANA LETTER HE -3079;ID # HIRAGANA LETTER BE -307A;ID # HIRAGANA LETTER PE -307B;ID # HIRAGANA LETTER HO -307C;ID # HIRAGANA LETTER BO -307D;ID # HIRAGANA LETTER PO -307E;ID # HIRAGANA LETTER MA -307F;ID # HIRAGANA LETTER MI -3080;ID # HIRAGANA LETTER MU -3081;ID # HIRAGANA LETTER ME -3082;ID # HIRAGANA LETTER MO -3083;NS # HIRAGANA LETTER SMALL YA -3084;ID # HIRAGANA LETTER YA -3085;NS # HIRAGANA LETTER SMALL YU -3086;ID # HIRAGANA LETTER YU -3087;NS # HIRAGANA LETTER SMALL YO -3088;ID # HIRAGANA LETTER YO -3089;ID # HIRAGANA LETTER RA -308A;ID # HIRAGANA LETTER RI -308B;ID # HIRAGANA LETTER RU -308C;ID # HIRAGANA LETTER RE -308D;ID # HIRAGANA LETTER RO -308E;NS # HIRAGANA LETTER SMALL WA -308F;ID # HIRAGANA LETTER WA -3090;ID # HIRAGANA LETTER WI -3091;ID # HIRAGANA LETTER WE -3092;ID # HIRAGANA LETTER WO -3093;ID # HIRAGANA LETTER N -3094;ID # HIRAGANA LETTER VU -3095;NS # HIRAGANA LETTER SMALL KA -3096;NS # HIRAGANA LETTER SMALL KE -3099;CM # COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK -309A;CM # COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -309B;NS # KATAKANA-HIRAGANA VOICED SOUND MARK -309C;NS # KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -309D;NS # HIRAGANA ITERATION MARK -309E;NS # HIRAGANA VOICED ITERATION MARK -309F;ID # HIRAGANA DIGRAPH YORI -30A0;NS # KATAKANA-HIRAGANA DOUBLE HYPHEN -30A1;NS # KATAKANA LETTER SMALL A -30A2;ID # KATAKANA LETTER A -30A3;NS # KATAKANA LETTER SMALL I -30A4;ID # KATAKANA LETTER I -30A5;NS # KATAKANA LETTER SMALL U -30A6;ID # KATAKANA LETTER U -30A7;NS # KATAKANA LETTER SMALL E -30A8;ID # KATAKANA LETTER E -30A9;NS # KATAKANA LETTER SMALL O -30AA;ID # KATAKANA LETTER O -30AB;ID # KATAKANA LETTER KA -30AC;ID # KATAKANA LETTER GA -30AD;ID # KATAKANA LETTER KI -30AE;ID # KATAKANA LETTER GI -30AF;ID # KATAKANA LETTER KU -30B0;ID # KATAKANA LETTER GU -30B1;ID # KATAKANA LETTER KE -30B2;ID # KATAKANA LETTER GE -30B3;ID # KATAKANA LETTER KO -30B4;ID # KATAKANA LETTER GO -30B5;ID # KATAKANA LETTER SA -30B6;ID # KATAKANA LETTER ZA -30B7;ID # KATAKANA LETTER SI -30B8;ID # KATAKANA LETTER ZI -30B9;ID # KATAKANA LETTER SU -30BA;ID # KATAKANA LETTER ZU -30BB;ID # KATAKANA LETTER SE -30BC;ID # KATAKANA LETTER ZE -30BD;ID # KATAKANA LETTER SO -30BE;ID # KATAKANA LETTER ZO -30BF;ID # KATAKANA LETTER TA -30C0;ID # KATAKANA LETTER DA -30C1;ID # KATAKANA LETTER TI -30C2;ID # KATAKANA LETTER DI -30C3;NS # KATAKANA LETTER SMALL TU -30C4;ID # KATAKANA LETTER TU -30C5;ID # KATAKANA LETTER DU -30C6;ID # KATAKANA LETTER TE -30C7;ID # KATAKANA LETTER DE -30C8;ID # KATAKANA LETTER TO -30C9;ID # KATAKANA LETTER DO -30CA;ID # KATAKANA LETTER NA -30CB;ID # KATAKANA LETTER NI -30CC;ID # KATAKANA LETTER NU -30CD;ID # KATAKANA LETTER NE -30CE;ID # KATAKANA LETTER NO -30CF;ID # KATAKANA LETTER HA -30D0;ID # KATAKANA LETTER BA -30D1;ID # KATAKANA LETTER PA -30D2;ID # KATAKANA LETTER HI -30D3;ID # KATAKANA LETTER BI -30D4;ID # KATAKANA LETTER PI -30D5;ID # KATAKANA LETTER HU -30D6;ID # KATAKANA LETTER BU -30D7;ID # KATAKANA LETTER PU -30D8;ID # KATAKANA LETTER HE -30D9;ID # KATAKANA LETTER BE -30DA;ID # KATAKANA LETTER PE -30DB;ID # KATAKANA LETTER HO -30DC;ID # KATAKANA LETTER BO -30DD;ID # KATAKANA LETTER PO -30DE;ID # KATAKANA LETTER MA -30DF;ID # KATAKANA LETTER MI -30E0;ID # KATAKANA LETTER MU -30E1;ID # KATAKANA LETTER ME -30E2;ID # KATAKANA LETTER MO -30E3;NS # KATAKANA LETTER SMALL YA -30E4;ID # KATAKANA LETTER YA -30E5;NS # KATAKANA LETTER SMALL YU -30E6;ID # KATAKANA LETTER YU -30E7;NS # KATAKANA LETTER SMALL YO -30E8;ID # KATAKANA LETTER YO -30E9;ID # KATAKANA LETTER RA -30EA;ID # KATAKANA LETTER RI -30EB;ID # KATAKANA LETTER RU -30EC;ID # KATAKANA LETTER RE -30ED;ID # KATAKANA LETTER RO -30EE;NS # KATAKANA LETTER SMALL WA -30EF;ID # KATAKANA LETTER WA -30F0;ID # KATAKANA LETTER WI -30F1;ID # KATAKANA LETTER WE -30F2;ID # KATAKANA LETTER WO -30F3;ID # KATAKANA LETTER N -30F4;ID # KATAKANA LETTER VU -30F5;NS # KATAKANA LETTER SMALL KA -30F6;NS # KATAKANA LETTER SMALL KE -30F7;ID # KATAKANA LETTER VA -30F8;ID # KATAKANA LETTER VI -30F9;ID # KATAKANA LETTER VE -30FA;ID # KATAKANA LETTER VO -30FB;NS # KATAKANA MIDDLE DOT -30FC;NS # KATAKANA-HIRAGANA PROLONGED SOUND MARK -30FD;NS # KATAKANA ITERATION MARK -30FE;NS # KATAKANA VOICED ITERATION MARK -30FF;ID # KATAKANA DIGRAPH KOTO -3105;ID # BOPOMOFO LETTER B -3106;ID # BOPOMOFO LETTER P -3107;ID # BOPOMOFO LETTER M -3108;ID # BOPOMOFO LETTER F -3109;ID # BOPOMOFO LETTER D -310A;ID # BOPOMOFO LETTER T -310B;ID # BOPOMOFO LETTER N -310C;ID # BOPOMOFO LETTER L -310D;ID # BOPOMOFO LETTER G -310E;ID # BOPOMOFO LETTER K -310F;ID # BOPOMOFO LETTER H -3110;ID # BOPOMOFO LETTER J -3111;ID # BOPOMOFO LETTER Q -3112;ID # BOPOMOFO LETTER X -3113;ID # BOPOMOFO LETTER ZH -3114;ID # BOPOMOFO LETTER CH -3115;ID # BOPOMOFO LETTER SH -3116;ID # BOPOMOFO LETTER R -3117;ID # BOPOMOFO LETTER Z -3118;ID # BOPOMOFO LETTER C -3119;ID # BOPOMOFO LETTER S -311A;ID # BOPOMOFO LETTER A -311B;ID # BOPOMOFO LETTER O -311C;ID # BOPOMOFO LETTER E -311D;ID # BOPOMOFO LETTER EH -311E;ID # BOPOMOFO LETTER AI -311F;ID # BOPOMOFO LETTER EI -3120;ID # BOPOMOFO LETTER AU -3121;ID # BOPOMOFO LETTER OU -3122;ID # BOPOMOFO LETTER AN -3123;ID # BOPOMOFO LETTER EN -3124;ID # BOPOMOFO LETTER ANG -3125;ID # BOPOMOFO LETTER ENG -3126;ID # BOPOMOFO LETTER ER -3127;ID # BOPOMOFO LETTER I -3128;ID # BOPOMOFO LETTER U -3129;ID # BOPOMOFO LETTER IU -312A;ID # BOPOMOFO LETTER V -312B;ID # BOPOMOFO LETTER NG -312C;ID # BOPOMOFO LETTER GN -3131;ID # HANGUL LETTER KIYEOK -3132;ID # HANGUL LETTER SSANGKIYEOK -3133;ID # HANGUL LETTER KIYEOK-SIOS -3134;ID # HANGUL LETTER NIEUN -3135;ID # HANGUL LETTER NIEUN-CIEUC -3136;ID # HANGUL LETTER NIEUN-HIEUH -3137;ID # HANGUL LETTER TIKEUT -3138;ID # HANGUL LETTER SSANGTIKEUT -3139;ID # HANGUL LETTER RIEUL -313A;ID # HANGUL LETTER RIEUL-KIYEOK -313B;ID # HANGUL LETTER RIEUL-MIEUM -313C;ID # HANGUL LETTER RIEUL-PIEUP -313D;ID # HANGUL LETTER RIEUL-SIOS -313E;ID # HANGUL LETTER RIEUL-THIEUTH -313F;ID # HANGUL LETTER RIEUL-PHIEUPH -3140;ID # HANGUL LETTER RIEUL-HIEUH -3141;ID # HANGUL LETTER MIEUM -3142;ID # HANGUL LETTER PIEUP -3143;ID # HANGUL LETTER SSANGPIEUP -3144;ID # HANGUL LETTER PIEUP-SIOS -3145;ID # HANGUL LETTER SIOS -3146;ID # HANGUL LETTER SSANGSIOS -3147;ID # HANGUL LETTER IEUNG -3148;ID # HANGUL LETTER CIEUC -3149;ID # HANGUL LETTER SSANGCIEUC -314A;ID # HANGUL LETTER CHIEUCH -314B;ID # HANGUL LETTER KHIEUKH -314C;ID # HANGUL LETTER THIEUTH -314D;ID # HANGUL LETTER PHIEUPH -314E;ID # HANGUL LETTER HIEUH -314F;ID # HANGUL LETTER A -3150;ID # HANGUL LETTER AE -3151;ID # HANGUL LETTER YA -3152;ID # HANGUL LETTER YAE -3153;ID # HANGUL LETTER EO -3154;ID # HANGUL LETTER E -3155;ID # HANGUL LETTER YEO -3156;ID # HANGUL LETTER YE -3157;ID # HANGUL LETTER O -3158;ID # HANGUL LETTER WA -3159;ID # HANGUL LETTER WAE -315A;ID # HANGUL LETTER OE -315B;ID # HANGUL LETTER YO -315C;ID # HANGUL LETTER U -315D;ID # HANGUL LETTER WEO -315E;ID # HANGUL LETTER WE -315F;ID # HANGUL LETTER WI -3160;ID # HANGUL LETTER YU -3161;ID # HANGUL LETTER EU -3162;ID # HANGUL LETTER YI -3163;ID # HANGUL LETTER I -3164;ID # HANGUL FILLER -3165;ID # HANGUL LETTER SSANGNIEUN -3166;ID # HANGUL LETTER NIEUN-TIKEUT -3167;ID # HANGUL LETTER NIEUN-SIOS -3168;ID # HANGUL LETTER NIEUN-PANSIOS -3169;ID # HANGUL LETTER RIEUL-KIYEOK-SIOS -316A;ID # HANGUL LETTER RIEUL-TIKEUT -316B;ID # HANGUL LETTER RIEUL-PIEUP-SIOS -316C;ID # HANGUL LETTER RIEUL-PANSIOS -316D;ID # HANGUL LETTER RIEUL-YEORINHIEUH -316E;ID # HANGUL LETTER MIEUM-PIEUP -316F;ID # HANGUL LETTER MIEUM-SIOS -3170;ID # HANGUL LETTER MIEUM-PANSIOS -3171;ID # HANGUL LETTER KAPYEOUNMIEUM -3172;ID # HANGUL LETTER PIEUP-KIYEOK -3173;ID # HANGUL LETTER PIEUP-TIKEUT -3174;ID # HANGUL LETTER PIEUP-SIOS-KIYEOK -3175;ID # HANGUL LETTER PIEUP-SIOS-TIKEUT -3176;ID # HANGUL LETTER PIEUP-CIEUC -3177;ID # HANGUL LETTER PIEUP-THIEUTH -3178;ID # HANGUL LETTER KAPYEOUNPIEUP -3179;ID # HANGUL LETTER KAPYEOUNSSANGPIEUP -317A;ID # HANGUL LETTER SIOS-KIYEOK -317B;ID # HANGUL LETTER SIOS-NIEUN -317C;ID # HANGUL LETTER SIOS-TIKEUT -317D;ID # HANGUL LETTER SIOS-PIEUP -317E;ID # HANGUL LETTER SIOS-CIEUC -317F;ID # HANGUL LETTER PANSIOS -3180;ID # HANGUL LETTER SSANGIEUNG -3181;ID # HANGUL LETTER YESIEUNG -3182;ID # HANGUL LETTER YESIEUNG-SIOS -3183;ID # HANGUL LETTER YESIEUNG-PANSIOS -3184;ID # HANGUL LETTER KAPYEOUNPHIEUPH -3185;ID # HANGUL LETTER SSANGHIEUH -3186;ID # HANGUL LETTER YEORINHIEUH -3187;ID # HANGUL LETTER YO-YA -3188;ID # HANGUL LETTER YO-YAE -3189;ID # HANGUL LETTER YO-I -318A;ID # HANGUL LETTER YU-YEO -318B;ID # HANGUL LETTER YU-YE -318C;ID # HANGUL LETTER YU-I -318D;ID # HANGUL LETTER ARAEA -318E;ID # HANGUL LETTER ARAEAE -3190;ID # IDEOGRAPHIC ANNOTATION LINKING MARK -3191;ID # IDEOGRAPHIC ANNOTATION REVERSE MARK -3192;ID # IDEOGRAPHIC ANNOTATION ONE MARK -3193;ID # IDEOGRAPHIC ANNOTATION TWO MARK -3194;ID # IDEOGRAPHIC ANNOTATION THREE MARK -3195;ID # IDEOGRAPHIC ANNOTATION FOUR MARK -3196;ID # IDEOGRAPHIC ANNOTATION TOP MARK -3197;ID # IDEOGRAPHIC ANNOTATION MIDDLE MARK -3198;ID # IDEOGRAPHIC ANNOTATION BOTTOM MARK -3199;ID # IDEOGRAPHIC ANNOTATION FIRST MARK -319A;ID # IDEOGRAPHIC ANNOTATION SECOND MARK -319B;ID # IDEOGRAPHIC ANNOTATION THIRD MARK -319C;ID # IDEOGRAPHIC ANNOTATION FOURTH MARK -319D;ID # IDEOGRAPHIC ANNOTATION HEAVEN MARK -319E;ID # IDEOGRAPHIC ANNOTATION EARTH MARK -319F;ID # IDEOGRAPHIC ANNOTATION MAN MARK -31A0;ID # BOPOMOFO LETTER BU -31A1;ID # BOPOMOFO LETTER ZI -31A2;ID # BOPOMOFO LETTER JI -31A3;ID # BOPOMOFO LETTER GU -31A4;ID # BOPOMOFO LETTER EE -31A5;ID # BOPOMOFO LETTER ENN -31A6;ID # BOPOMOFO LETTER OO -31A7;ID # BOPOMOFO LETTER ONN -31A8;ID # BOPOMOFO LETTER IR -31A9;ID # BOPOMOFO LETTER ANN -31AA;ID # BOPOMOFO LETTER INN -31AB;ID # BOPOMOFO LETTER UNN -31AC;ID # BOPOMOFO LETTER IM -31AD;ID # BOPOMOFO LETTER NGG -31AE;ID # BOPOMOFO LETTER AINN -31AF;ID # BOPOMOFO LETTER AUNN -31B0;ID # BOPOMOFO LETTER AM -31B1;ID # BOPOMOFO LETTER OM -31B2;ID # BOPOMOFO LETTER ONG -31B3;ID # BOPOMOFO LETTER INNN -31B4;ID # BOPOMOFO FINAL LETTER P -31B5;ID # BOPOMOFO FINAL LETTER T -31B6;ID # BOPOMOFO FINAL LETTER K -31B7;ID # BOPOMOFO FINAL LETTER H -31C0;ID # CJK STROKE T -31C1;ID # CJK STROKE WG -31C2;ID # CJK STROKE XG -31C3;ID # CJK STROKE BXG -31C4;ID # CJK STROKE SW -31C5;ID # CJK STROKE HZZ -31C6;ID # CJK STROKE HZG -31C7;ID # CJK STROKE HP -31C8;ID # CJK STROKE HZWG -31C9;ID # CJK STROKE SZWG -31CA;ID # CJK STROKE HZT -31CB;ID # CJK STROKE HZZP -31CC;ID # CJK STROKE HPWG -31CD;ID # CJK STROKE HZW -31CE;ID # CJK STROKE HZZZ -31CF;ID # CJK STROKE N -31F0;NS # KATAKANA LETTER SMALL KU -31F1;NS # KATAKANA LETTER SMALL SI -31F2;NS # KATAKANA LETTER SMALL SU -31F3;NS # KATAKANA LETTER SMALL TO -31F4;NS # KATAKANA LETTER SMALL NU -31F5;NS # KATAKANA LETTER SMALL HA -31F6;NS # KATAKANA LETTER SMALL HI -31F7;NS # KATAKANA LETTER SMALL HU -31F8;NS # KATAKANA LETTER SMALL HE -31F9;NS # KATAKANA LETTER SMALL HO -31FA;NS # KATAKANA LETTER SMALL MU -31FB;NS # KATAKANA LETTER SMALL RA -31FC;NS # KATAKANA LETTER SMALL RI -31FD;NS # KATAKANA LETTER SMALL RU -31FE;NS # KATAKANA LETTER SMALL RE -31FF;NS # KATAKANA LETTER SMALL RO -3200;ID # PARENTHESIZED HANGUL KIYEOK -3201;ID # PARENTHESIZED HANGUL NIEUN -3202;ID # PARENTHESIZED HANGUL TIKEUT -3203;ID # PARENTHESIZED HANGUL RIEUL -3204;ID # PARENTHESIZED HANGUL MIEUM -3205;ID # PARENTHESIZED HANGUL PIEUP -3206;ID # PARENTHESIZED HANGUL SIOS -3207;ID # PARENTHESIZED HANGUL IEUNG -3208;ID # PARENTHESIZED HANGUL CIEUC -3209;ID # PARENTHESIZED HANGUL CHIEUCH -320A;ID # PARENTHESIZED HANGUL KHIEUKH -320B;ID # PARENTHESIZED HANGUL THIEUTH -320C;ID # PARENTHESIZED HANGUL PHIEUPH -320D;ID # PARENTHESIZED HANGUL HIEUH -320E;ID # PARENTHESIZED HANGUL KIYEOK A -320F;ID # PARENTHESIZED HANGUL NIEUN A -3210;ID # PARENTHESIZED HANGUL TIKEUT A -3211;ID # PARENTHESIZED HANGUL RIEUL A -3212;ID # PARENTHESIZED HANGUL MIEUM A -3213;ID # PARENTHESIZED HANGUL PIEUP A -3214;ID # PARENTHESIZED HANGUL SIOS A -3215;ID # PARENTHESIZED HANGUL IEUNG A -3216;ID # PARENTHESIZED HANGUL CIEUC A -3217;ID # PARENTHESIZED HANGUL CHIEUCH A -3218;ID # PARENTHESIZED HANGUL KHIEUKH A -3219;ID # PARENTHESIZED HANGUL THIEUTH A -321A;ID # PARENTHESIZED HANGUL PHIEUPH A -321B;ID # PARENTHESIZED HANGUL HIEUH A -321C;ID # PARENTHESIZED HANGUL CIEUC U -321D;ID # PARENTHESIZED KOREAN CHARACTER OJEON -321E;ID # PARENTHESIZED KOREAN CHARACTER O HU -3220;ID # PARENTHESIZED IDEOGRAPH ONE -3221;ID # PARENTHESIZED IDEOGRAPH TWO -3222;ID # PARENTHESIZED IDEOGRAPH THREE -3223;ID # PARENTHESIZED IDEOGRAPH FOUR -3224;ID # PARENTHESIZED IDEOGRAPH FIVE -3225;ID # PARENTHESIZED IDEOGRAPH SIX -3226;ID # PARENTHESIZED IDEOGRAPH SEVEN -3227;ID # PARENTHESIZED IDEOGRAPH EIGHT -3228;ID # PARENTHESIZED IDEOGRAPH NINE -3229;ID # PARENTHESIZED IDEOGRAPH TEN -322A;ID # PARENTHESIZED IDEOGRAPH MOON -322B;ID # PARENTHESIZED IDEOGRAPH FIRE -322C;ID # PARENTHESIZED IDEOGRAPH WATER -322D;ID # PARENTHESIZED IDEOGRAPH WOOD -322E;ID # PARENTHESIZED IDEOGRAPH METAL -322F;ID # PARENTHESIZED IDEOGRAPH EARTH -3230;ID # PARENTHESIZED IDEOGRAPH SUN -3231;ID # PARENTHESIZED IDEOGRAPH STOCK -3232;ID # PARENTHESIZED IDEOGRAPH HAVE -3233;ID # PARENTHESIZED IDEOGRAPH SOCIETY -3234;ID # PARENTHESIZED IDEOGRAPH NAME -3235;ID # PARENTHESIZED IDEOGRAPH SPECIAL -3236;ID # PARENTHESIZED IDEOGRAPH FINANCIAL -3237;ID # PARENTHESIZED IDEOGRAPH CONGRATULATION -3238;ID # PARENTHESIZED IDEOGRAPH LABOR -3239;ID # PARENTHESIZED IDEOGRAPH REPRESENT -323A;ID # PARENTHESIZED IDEOGRAPH CALL -323B;ID # PARENTHESIZED IDEOGRAPH STUDY -323C;ID # PARENTHESIZED IDEOGRAPH SUPERVISE -323D;ID # PARENTHESIZED IDEOGRAPH ENTERPRISE -323E;ID # PARENTHESIZED IDEOGRAPH RESOURCE -323F;ID # PARENTHESIZED IDEOGRAPH ALLIANCE -3240;ID # PARENTHESIZED IDEOGRAPH FESTIVAL -3241;ID # PARENTHESIZED IDEOGRAPH REST -3242;ID # PARENTHESIZED IDEOGRAPH SELF -3243;ID # PARENTHESIZED IDEOGRAPH REACH -3250;ID # PARTNERSHIP SIGN -3251;ID # CIRCLED NUMBER TWENTY ONE -3252;ID # CIRCLED NUMBER TWENTY TWO -3253;ID # CIRCLED NUMBER TWENTY THREE -3254;ID # CIRCLED NUMBER TWENTY FOUR -3255;ID # CIRCLED NUMBER TWENTY FIVE -3256;ID # CIRCLED NUMBER TWENTY SIX -3257;ID # CIRCLED NUMBER TWENTY SEVEN -3258;ID # CIRCLED NUMBER TWENTY EIGHT -3259;ID # CIRCLED NUMBER TWENTY NINE -325A;ID # CIRCLED NUMBER THIRTY -325B;ID # CIRCLED NUMBER THIRTY ONE -325C;ID # CIRCLED NUMBER THIRTY TWO -325D;ID # CIRCLED NUMBER THIRTY THREE -325E;ID # CIRCLED NUMBER THIRTY FOUR -325F;ID # CIRCLED NUMBER THIRTY FIVE -3260;ID # CIRCLED HANGUL KIYEOK -3261;ID # CIRCLED HANGUL NIEUN -3262;ID # CIRCLED HANGUL TIKEUT -3263;ID # CIRCLED HANGUL RIEUL -3264;ID # CIRCLED HANGUL MIEUM -3265;ID # CIRCLED HANGUL PIEUP -3266;ID # CIRCLED HANGUL SIOS -3267;ID # CIRCLED HANGUL IEUNG -3268;ID # CIRCLED HANGUL CIEUC -3269;ID # CIRCLED HANGUL CHIEUCH -326A;ID # CIRCLED HANGUL KHIEUKH -326B;ID # CIRCLED HANGUL THIEUTH -326C;ID # CIRCLED HANGUL PHIEUPH -326D;ID # CIRCLED HANGUL HIEUH -326E;ID # CIRCLED HANGUL KIYEOK A -326F;ID # CIRCLED HANGUL NIEUN A -3270;ID # CIRCLED HANGUL TIKEUT A -3271;ID # CIRCLED HANGUL RIEUL A -3272;ID # CIRCLED HANGUL MIEUM A -3273;ID # CIRCLED HANGUL PIEUP A -3274;ID # CIRCLED HANGUL SIOS A -3275;ID # CIRCLED HANGUL IEUNG A -3276;ID # CIRCLED HANGUL CIEUC A -3277;ID # CIRCLED HANGUL CHIEUCH A -3278;ID # CIRCLED HANGUL KHIEUKH A -3279;ID # CIRCLED HANGUL THIEUTH A -327A;ID # CIRCLED HANGUL PHIEUPH A -327B;ID # CIRCLED HANGUL HIEUH A -327C;ID # CIRCLED KOREAN CHARACTER CHAMKO -327D;ID # CIRCLED KOREAN CHARACTER JUEUI -327E;ID # CIRCLED HANGUL IEUNG U -327F;ID # KOREAN STANDARD SYMBOL -3280;ID # CIRCLED IDEOGRAPH ONE -3281;ID # CIRCLED IDEOGRAPH TWO -3282;ID # CIRCLED IDEOGRAPH THREE -3283;ID # CIRCLED IDEOGRAPH FOUR -3284;ID # CIRCLED IDEOGRAPH FIVE -3285;ID # CIRCLED IDEOGRAPH SIX -3286;ID # CIRCLED IDEOGRAPH SEVEN -3287;ID # CIRCLED IDEOGRAPH EIGHT -3288;ID # CIRCLED IDEOGRAPH NINE -3289;ID # CIRCLED IDEOGRAPH TEN -328A;ID # CIRCLED IDEOGRAPH MOON -328B;ID # CIRCLED IDEOGRAPH FIRE -328C;ID # CIRCLED IDEOGRAPH WATER -328D;ID # CIRCLED IDEOGRAPH WOOD -328E;ID # CIRCLED IDEOGRAPH METAL -328F;ID # CIRCLED IDEOGRAPH EARTH -3290;ID # CIRCLED IDEOGRAPH SUN -3291;ID # CIRCLED IDEOGRAPH STOCK -3292;ID # CIRCLED IDEOGRAPH HAVE -3293;ID # CIRCLED IDEOGRAPH SOCIETY -3294;ID # CIRCLED IDEOGRAPH NAME -3295;ID # CIRCLED IDEOGRAPH SPECIAL -3296;ID # CIRCLED IDEOGRAPH FINANCIAL -3297;ID # CIRCLED IDEOGRAPH CONGRATULATION -3298;ID # CIRCLED IDEOGRAPH LABOR -3299;ID # CIRCLED IDEOGRAPH SECRET -329A;ID # CIRCLED IDEOGRAPH MALE -329B;ID # CIRCLED IDEOGRAPH FEMALE -329C;ID # CIRCLED IDEOGRAPH SUITABLE -329D;ID # CIRCLED IDEOGRAPH EXCELLENT -329E;ID # CIRCLED IDEOGRAPH PRINT -329F;ID # CIRCLED IDEOGRAPH ATTENTION -32A0;ID # CIRCLED IDEOGRAPH ITEM -32A1;ID # CIRCLED IDEOGRAPH REST -32A2;ID # CIRCLED IDEOGRAPH COPY -32A3;ID # CIRCLED IDEOGRAPH CORRECT -32A4;ID # CIRCLED IDEOGRAPH HIGH -32A5;ID # CIRCLED IDEOGRAPH CENTRE -32A6;ID # CIRCLED IDEOGRAPH LOW -32A7;ID # CIRCLED IDEOGRAPH LEFT -32A8;ID # CIRCLED IDEOGRAPH RIGHT -32A9;ID # CIRCLED IDEOGRAPH MEDICINE -32AA;ID # CIRCLED IDEOGRAPH RELIGION -32AB;ID # CIRCLED IDEOGRAPH STUDY -32AC;ID # CIRCLED IDEOGRAPH SUPERVISE -32AD;ID # CIRCLED IDEOGRAPH ENTERPRISE -32AE;ID # CIRCLED IDEOGRAPH RESOURCE -32AF;ID # CIRCLED IDEOGRAPH ALLIANCE -32B0;ID # CIRCLED IDEOGRAPH NIGHT -32B1;ID # CIRCLED NUMBER THIRTY SIX -32B2;ID # CIRCLED NUMBER THIRTY SEVEN -32B3;ID # CIRCLED NUMBER THIRTY EIGHT -32B4;ID # CIRCLED NUMBER THIRTY NINE -32B5;ID # CIRCLED NUMBER FORTY -32B6;ID # CIRCLED NUMBER FORTY ONE -32B7;ID # CIRCLED NUMBER FORTY TWO -32B8;ID # CIRCLED NUMBER FORTY THREE -32B9;ID # CIRCLED NUMBER FORTY FOUR -32BA;ID # CIRCLED NUMBER FORTY FIVE -32BB;ID # CIRCLED NUMBER FORTY SIX -32BC;ID # CIRCLED NUMBER FORTY SEVEN -32BD;ID # CIRCLED NUMBER FORTY EIGHT -32BE;ID # CIRCLED NUMBER FORTY NINE -32BF;ID # CIRCLED NUMBER FIFTY -32C0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY -32C1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY -32C2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH -32C3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL -32C4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY -32C5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE -32C6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY -32C7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST -32C8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER -32C9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER -32CA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER -32CB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER -32CC;ID # SQUARE HG -32CD;ID # SQUARE ERG -32CE;ID # SQUARE EV -32CF;ID # LIMITED LIABILITY SIGN -32D0;ID # CIRCLED KATAKANA A -32D1;ID # CIRCLED KATAKANA I -32D2;ID # CIRCLED KATAKANA U -32D3;ID # CIRCLED KATAKANA E -32D4;ID # CIRCLED KATAKANA O -32D5;ID # CIRCLED KATAKANA KA -32D6;ID # CIRCLED KATAKANA KI -32D7;ID # CIRCLED KATAKANA KU -32D8;ID # CIRCLED KATAKANA KE -32D9;ID # CIRCLED KATAKANA KO -32DA;ID # CIRCLED KATAKANA SA -32DB;ID # CIRCLED KATAKANA SI -32DC;ID # CIRCLED KATAKANA SU -32DD;ID # CIRCLED KATAKANA SE -32DE;ID # CIRCLED KATAKANA SO -32DF;ID # CIRCLED KATAKANA TA -32E0;ID # CIRCLED KATAKANA TI -32E1;ID # CIRCLED KATAKANA TU -32E2;ID # CIRCLED KATAKANA TE -32E3;ID # CIRCLED KATAKANA TO -32E4;ID # CIRCLED KATAKANA NA -32E5;ID # CIRCLED KATAKANA NI -32E6;ID # CIRCLED KATAKANA NU -32E7;ID # CIRCLED KATAKANA NE -32E8;ID # CIRCLED KATAKANA NO -32E9;ID # CIRCLED KATAKANA HA -32EA;ID # CIRCLED KATAKANA HI -32EB;ID # CIRCLED KATAKANA HU -32EC;ID # CIRCLED KATAKANA HE -32ED;ID # CIRCLED KATAKANA HO -32EE;ID # CIRCLED KATAKANA MA -32EF;ID # CIRCLED KATAKANA MI -32F0;ID # CIRCLED KATAKANA MU -32F1;ID # CIRCLED KATAKANA ME -32F2;ID # CIRCLED KATAKANA MO -32F3;ID # CIRCLED KATAKANA YA -32F4;ID # CIRCLED KATAKANA YU -32F5;ID # CIRCLED KATAKANA YO -32F6;ID # CIRCLED KATAKANA RA -32F7;ID # CIRCLED KATAKANA RI -32F8;ID # CIRCLED KATAKANA RU -32F9;ID # CIRCLED KATAKANA RE -32FA;ID # CIRCLED KATAKANA RO -32FB;ID # CIRCLED KATAKANA WA -32FC;ID # CIRCLED KATAKANA WI -32FD;ID # CIRCLED KATAKANA WE -32FE;ID # CIRCLED KATAKANA WO -3300;ID # SQUARE APAATO -3301;ID # SQUARE ARUHUA -3302;ID # SQUARE ANPEA -3303;ID # SQUARE AARU -3304;ID # SQUARE ININGU -3305;ID # SQUARE INTI -3306;ID # SQUARE UON -3307;ID # SQUARE ESUKUUDO -3308;ID # SQUARE EEKAA -3309;ID # SQUARE ONSU -330A;ID # SQUARE OOMU -330B;ID # SQUARE KAIRI -330C;ID # SQUARE KARATTO -330D;ID # SQUARE KARORII -330E;ID # SQUARE GARON -330F;ID # SQUARE GANMA -3310;ID # SQUARE GIGA -3311;ID # SQUARE GINII -3312;ID # SQUARE KYURII -3313;ID # SQUARE GIRUDAA -3314;ID # SQUARE KIRO -3315;ID # SQUARE KIROGURAMU -3316;ID # SQUARE KIROMEETORU -3317;ID # SQUARE KIROWATTO -3318;ID # SQUARE GURAMU -3319;ID # SQUARE GURAMUTON -331A;ID # SQUARE KURUZEIRO -331B;ID # SQUARE KUROONE -331C;ID # SQUARE KEESU -331D;ID # SQUARE KORUNA -331E;ID # SQUARE KOOPO -331F;ID # SQUARE SAIKURU -3320;ID # SQUARE SANTIIMU -3321;ID # SQUARE SIRINGU -3322;ID # SQUARE SENTI -3323;ID # SQUARE SENTO -3324;ID # SQUARE DAASU -3325;ID # SQUARE DESI -3326;ID # SQUARE DORU -3327;ID # SQUARE TON -3328;ID # SQUARE NANO -3329;ID # SQUARE NOTTO -332A;ID # SQUARE HAITU -332B;ID # SQUARE PAASENTO -332C;ID # SQUARE PAATU -332D;ID # SQUARE BAARERU -332E;ID # SQUARE PIASUTORU -332F;ID # SQUARE PIKURU -3330;ID # SQUARE PIKO -3331;ID # SQUARE BIRU -3332;ID # SQUARE HUARADDO -3333;ID # SQUARE HUIITO -3334;ID # SQUARE BUSSYERU -3335;ID # SQUARE HURAN -3336;ID # SQUARE HEKUTAARU -3337;ID # SQUARE PESO -3338;ID # SQUARE PENIHI -3339;ID # SQUARE HERUTU -333A;ID # SQUARE PENSU -333B;ID # SQUARE PEEZI -333C;ID # SQUARE BEETA -333D;ID # SQUARE POINTO -333E;ID # SQUARE BORUTO -333F;ID # SQUARE HON -3340;ID # SQUARE PONDO -3341;ID # SQUARE HOORU -3342;ID # SQUARE HOON -3343;ID # SQUARE MAIKURO -3344;ID # SQUARE MAIRU -3345;ID # SQUARE MAHHA -3346;ID # SQUARE MARUKU -3347;ID # SQUARE MANSYON -3348;ID # SQUARE MIKURON -3349;ID # SQUARE MIRI -334A;ID # SQUARE MIRIBAARU -334B;ID # SQUARE MEGA -334C;ID # SQUARE MEGATON -334D;ID # SQUARE MEETORU -334E;ID # SQUARE YAADO -334F;ID # SQUARE YAARU -3350;ID # SQUARE YUAN -3351;ID # SQUARE RITTORU -3352;ID # SQUARE RIRA -3353;ID # SQUARE RUPII -3354;ID # SQUARE RUUBURU -3355;ID # SQUARE REMU -3356;ID # SQUARE RENTOGEN -3357;ID # SQUARE WATTO -3358;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO -3359;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE -335A;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO -335B;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE -335C;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR -335D;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE -335E;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX -335F;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN -3360;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT -3361;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE -3362;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN -3363;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN -3364;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE -3365;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN -3366;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN -3367;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN -3368;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN -3369;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN -336A;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN -336B;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN -336C;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY -336D;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE -336E;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO -336F;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE -3370;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR -3371;ID # SQUARE HPA -3372;ID # SQUARE DA -3373;ID # SQUARE AU -3374;ID # SQUARE BAR -3375;ID # SQUARE OV -3376;ID # SQUARE PC -3377;ID # SQUARE DM -3378;ID # SQUARE DM SQUARED -3379;ID # SQUARE DM CUBED -337A;ID # SQUARE IU -337B;ID # SQUARE ERA NAME HEISEI -337C;ID # SQUARE ERA NAME SYOUWA -337D;ID # SQUARE ERA NAME TAISYOU -337E;ID # SQUARE ERA NAME MEIZI -337F;ID # SQUARE CORPORATION -3380;ID # SQUARE PA AMPS -3381;ID # SQUARE NA -3382;ID # SQUARE MU A -3383;ID # SQUARE MA -3384;ID # SQUARE KA -3385;ID # SQUARE KB -3386;ID # SQUARE MB -3387;ID # SQUARE GB -3388;ID # SQUARE CAL -3389;ID # SQUARE KCAL -338A;ID # SQUARE PF -338B;ID # SQUARE NF -338C;ID # SQUARE MU F -338D;ID # SQUARE MU G -338E;ID # SQUARE MG -338F;ID # SQUARE KG -3390;ID # SQUARE HZ -3391;ID # SQUARE KHZ -3392;ID # SQUARE MHZ -3393;ID # SQUARE GHZ -3394;ID # SQUARE THZ -3395;ID # SQUARE MU L -3396;ID # SQUARE ML -3397;ID # SQUARE DL -3398;ID # SQUARE KL -3399;ID # SQUARE FM -339A;ID # SQUARE NM -339B;ID # SQUARE MU M -339C;ID # SQUARE MM -339D;ID # SQUARE CM -339E;ID # SQUARE KM -339F;ID # SQUARE MM SQUARED -33A0;ID # SQUARE CM SQUARED -33A1;ID # SQUARE M SQUARED -33A2;ID # SQUARE KM SQUARED -33A3;ID # SQUARE MM CUBED -33A4;ID # SQUARE CM CUBED -33A5;ID # SQUARE M CUBED -33A6;ID # SQUARE KM CUBED -33A7;ID # SQUARE M OVER S -33A8;ID # SQUARE M OVER S SQUARED -33A9;ID # SQUARE PA -33AA;ID # SQUARE KPA -33AB;ID # SQUARE MPA -33AC;ID # SQUARE GPA -33AD;ID # SQUARE RAD -33AE;ID # SQUARE RAD OVER S -33AF;ID # SQUARE RAD OVER S SQUARED -33B0;ID # SQUARE PS -33B1;ID # SQUARE NS -33B2;ID # SQUARE MU S -33B3;ID # SQUARE MS -33B4;ID # SQUARE PV -33B5;ID # SQUARE NV -33B6;ID # SQUARE MU V -33B7;ID # SQUARE MV -33B8;ID # SQUARE KV -33B9;ID # SQUARE MV MEGA -33BA;ID # SQUARE PW -33BB;ID # SQUARE NW -33BC;ID # SQUARE MU W -33BD;ID # SQUARE MW -33BE;ID # SQUARE KW -33BF;ID # SQUARE MW MEGA -33C0;ID # SQUARE K OHM -33C1;ID # SQUARE M OHM -33C2;ID # SQUARE AM -33C3;ID # SQUARE BQ -33C4;ID # SQUARE CC -33C5;ID # SQUARE CD -33C6;ID # SQUARE C OVER KG -33C7;ID # SQUARE CO -33C8;ID # SQUARE DB -33C9;ID # SQUARE GY -33CA;ID # SQUARE HA -33CB;ID # SQUARE HP -33CC;ID # SQUARE IN -33CD;ID # SQUARE KK -33CE;ID # SQUARE KM CAPITAL -33CF;ID # SQUARE KT -33D0;ID # SQUARE LM -33D1;ID # SQUARE LN -33D2;ID # SQUARE LOG -33D3;ID # SQUARE LX -33D4;ID # SQUARE MB SMALL -33D5;ID # SQUARE MIL -33D6;ID # SQUARE MOL -33D7;ID # SQUARE PH -33D8;ID # SQUARE PM -33D9;ID # SQUARE PPM -33DA;ID # SQUARE PR -33DB;ID # SQUARE SR -33DC;ID # SQUARE SV -33DD;ID # SQUARE WB -33DE;ID # SQUARE V OVER M -33DF;ID # SQUARE A OVER M -33E0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE -33E1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO -33E2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE -33E3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR -33E4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE -33E5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX -33E6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN -33E7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT -33E8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE -33E9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN -33EA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN -33EB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE -33EC;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN -33ED;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN -33EE;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN -33EF;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN -33F0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN -33F1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN -33F2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN -33F3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY -33F4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE -33F5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO -33F6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE -33F7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR -33F8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE -33F9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX -33FA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN -33FB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT -33FC;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE -33FD;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY -33FE;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE -33FF;ID # SQUARE GAL -3400..4DB5;ID # <CJK Ideograph Extension A, First>..<CJK Ideograph Extension A, Last> -4DC0;AL # HEXAGRAM FOR THE CREATIVE HEAVEN -4DC1;AL # HEXAGRAM FOR THE RECEPTIVE EARTH -4DC2;AL # HEXAGRAM FOR DIFFICULTY AT THE BEGINNING -4DC3;AL # HEXAGRAM FOR YOUTHFUL FOLLY -4DC4;AL # HEXAGRAM FOR WAITING -4DC5;AL # HEXAGRAM FOR CONFLICT -4DC6;AL # HEXAGRAM FOR THE ARMY -4DC7;AL # HEXAGRAM FOR HOLDING TOGETHER -4DC8;AL # HEXAGRAM FOR SMALL TAMING -4DC9;AL # HEXAGRAM FOR TREADING -4DCA;AL # HEXAGRAM FOR PEACE -4DCB;AL # HEXAGRAM FOR STANDSTILL -4DCC;AL # HEXAGRAM FOR FELLOWSHIP -4DCD;AL # HEXAGRAM FOR GREAT POSSESSION -4DCE;AL # HEXAGRAM FOR MODESTY -4DCF;AL # HEXAGRAM FOR ENTHUSIASM -4DD0;AL # HEXAGRAM FOR FOLLOWING -4DD1;AL # HEXAGRAM FOR WORK ON THE DECAYED -4DD2;AL # HEXAGRAM FOR APPROACH -4DD3;AL # HEXAGRAM FOR CONTEMPLATION -4DD4;AL # HEXAGRAM FOR BITING THROUGH -4DD5;AL # HEXAGRAM FOR GRACE -4DD6;AL # HEXAGRAM FOR SPLITTING APART -4DD7;AL # HEXAGRAM FOR RETURN -4DD8;AL # HEXAGRAM FOR INNOCENCE -4DD9;AL # HEXAGRAM FOR GREAT TAMING -4DDA;AL # HEXAGRAM FOR MOUTH CORNERS -4DDB;AL # HEXAGRAM FOR GREAT PREPONDERANCE -4DDC;AL # HEXAGRAM FOR THE ABYSMAL WATER -4DDD;AL # HEXAGRAM FOR THE CLINGING FIRE -4DDE;AL # HEXAGRAM FOR INFLUENCE -4DDF;AL # HEXAGRAM FOR DURATION -4DE0;AL # HEXAGRAM FOR RETREAT -4DE1;AL # HEXAGRAM FOR GREAT POWER -4DE2;AL # HEXAGRAM FOR PROGRESS -4DE3;AL # HEXAGRAM FOR DARKENING OF THE LIGHT -4DE4;AL # HEXAGRAM FOR THE FAMILY -4DE5;AL # HEXAGRAM FOR OPPOSITION -4DE6;AL # HEXAGRAM FOR OBSTRUCTION -4DE7;AL # HEXAGRAM FOR DELIVERANCE -4DE8;AL # HEXAGRAM FOR DECREASE -4DE9;AL # HEXAGRAM FOR INCREASE -4DEA;AL # HEXAGRAM FOR BREAKTHROUGH -4DEB;AL # HEXAGRAM FOR COMING TO MEET -4DEC;AL # HEXAGRAM FOR GATHERING TOGETHER -4DED;AL # HEXAGRAM FOR PUSHING UPWARD -4DEE;AL # HEXAGRAM FOR OPPRESSION -4DEF;AL # HEXAGRAM FOR THE WELL -4DF0;AL # HEXAGRAM FOR REVOLUTION -4DF1;AL # HEXAGRAM FOR THE CAULDRON -4DF2;AL # HEXAGRAM FOR THE AROUSING THUNDER -4DF3;AL # HEXAGRAM FOR THE KEEPING STILL MOUNTAIN -4DF4;AL # HEXAGRAM FOR DEVELOPMENT -4DF5;AL # HEXAGRAM FOR THE MARRYING MAIDEN -4DF6;AL # HEXAGRAM FOR ABUNDANCE -4DF7;AL # HEXAGRAM FOR THE WANDERER -4DF8;AL # HEXAGRAM FOR THE GENTLE WIND -4DF9;AL # HEXAGRAM FOR THE JOYOUS LAKE -4DFA;AL # HEXAGRAM FOR DISPERSION -4DFB;AL # HEXAGRAM FOR LIMITATION -4DFC;AL # HEXAGRAM FOR INNER TRUTH -4DFD;AL # HEXAGRAM FOR SMALL PREPONDERANCE -4DFE;AL # HEXAGRAM FOR AFTER COMPLETION -4DFF;AL # HEXAGRAM FOR BEFORE COMPLETION -4E00..9FBB;ID # <CJK Ideograph, First>..<CJK Ideograph, Last> -A000;ID # YI SYLLABLE IT -A001;ID # YI SYLLABLE IX -A002;ID # YI SYLLABLE I -A003;ID # YI SYLLABLE IP -A004;ID # YI SYLLABLE IET -A005;ID # YI SYLLABLE IEX -A006;ID # YI SYLLABLE IE -A007;ID # YI SYLLABLE IEP -A008;ID # YI SYLLABLE AT -A009;ID # YI SYLLABLE AX -A00A;ID # YI SYLLABLE A -A00B;ID # YI SYLLABLE AP -A00C;ID # YI SYLLABLE UOX -A00D;ID # YI SYLLABLE UO -A00E;ID # YI SYLLABLE UOP -A00F;ID # YI SYLLABLE OT -A010;ID # YI SYLLABLE OX -A011;ID # YI SYLLABLE O -A012;ID # YI SYLLABLE OP -A013;ID # YI SYLLABLE EX -A014;ID # YI SYLLABLE E -A015;NS # YI SYLLABLE WU -A016;ID # YI SYLLABLE BIT -A017;ID # YI SYLLABLE BIX -A018;ID # YI SYLLABLE BI -A019;ID # YI SYLLABLE BIP -A01A;ID # YI SYLLABLE BIET -A01B;ID # YI SYLLABLE BIEX -A01C;ID # YI SYLLABLE BIE -A01D;ID # YI SYLLABLE BIEP -A01E;ID # YI SYLLABLE BAT -A01F;ID # YI SYLLABLE BAX -A020;ID # YI SYLLABLE BA -A021;ID # YI SYLLABLE BAP -A022;ID # YI SYLLABLE BUOX -A023;ID # YI SYLLABLE BUO -A024;ID # YI SYLLABLE BUOP -A025;ID # YI SYLLABLE BOT -A026;ID # YI SYLLABLE BOX -A027;ID # YI SYLLABLE BO -A028;ID # YI SYLLABLE BOP -A029;ID # YI SYLLABLE BEX -A02A;ID # YI SYLLABLE BE -A02B;ID # YI SYLLABLE BEP -A02C;ID # YI SYLLABLE BUT -A02D;ID # YI SYLLABLE BUX -A02E;ID # YI SYLLABLE BU -A02F;ID # YI SYLLABLE BUP -A030;ID # YI SYLLABLE BURX -A031;ID # YI SYLLABLE BUR -A032;ID # YI SYLLABLE BYT -A033;ID # YI SYLLABLE BYX -A034;ID # YI SYLLABLE BY -A035;ID # YI SYLLABLE BYP -A036;ID # YI SYLLABLE BYRX -A037;ID # YI SYLLABLE BYR -A038;ID # YI SYLLABLE PIT -A039;ID # YI SYLLABLE PIX -A03A;ID # YI SYLLABLE PI -A03B;ID # YI SYLLABLE PIP -A03C;ID # YI SYLLABLE PIEX -A03D;ID # YI SYLLABLE PIE -A03E;ID # YI SYLLABLE PIEP -A03F;ID # YI SYLLABLE PAT -A040;ID # YI SYLLABLE PAX -A041;ID # YI SYLLABLE PA -A042;ID # YI SYLLABLE PAP -A043;ID # YI SYLLABLE PUOX -A044;ID # YI SYLLABLE PUO -A045;ID # YI SYLLABLE PUOP -A046;ID # YI SYLLABLE POT -A047;ID # YI SYLLABLE POX -A048;ID # YI SYLLABLE PO -A049;ID # YI SYLLABLE POP -A04A;ID # YI SYLLABLE PUT -A04B;ID # YI SYLLABLE PUX -A04C;ID # YI SYLLABLE PU -A04D;ID # YI SYLLABLE PUP -A04E;ID # YI SYLLABLE PURX -A04F;ID # YI SYLLABLE PUR -A050;ID # YI SYLLABLE PYT -A051;ID # YI SYLLABLE PYX -A052;ID # YI SYLLABLE PY -A053;ID # YI SYLLABLE PYP -A054;ID # YI SYLLABLE PYRX -A055;ID # YI SYLLABLE PYR -A056;ID # YI SYLLABLE BBIT -A057;ID # YI SYLLABLE BBIX -A058;ID # YI SYLLABLE BBI -A059;ID # YI SYLLABLE BBIP -A05A;ID # YI SYLLABLE BBIET -A05B;ID # YI SYLLABLE BBIEX -A05C;ID # YI SYLLABLE BBIE -A05D;ID # YI SYLLABLE BBIEP -A05E;ID # YI SYLLABLE BBAT -A05F;ID # YI SYLLABLE BBAX -A060;ID # YI SYLLABLE BBA -A061;ID # YI SYLLABLE BBAP -A062;ID # YI SYLLABLE BBUOX -A063;ID # YI SYLLABLE BBUO -A064;ID # YI SYLLABLE BBUOP -A065;ID # YI SYLLABLE BBOT -A066;ID # YI SYLLABLE BBOX -A067;ID # YI SYLLABLE BBO -A068;ID # YI SYLLABLE BBOP -A069;ID # YI SYLLABLE BBEX -A06A;ID # YI SYLLABLE BBE -A06B;ID # YI SYLLABLE BBEP -A06C;ID # YI SYLLABLE BBUT -A06D;ID # YI SYLLABLE BBUX -A06E;ID # YI SYLLABLE BBU -A06F;ID # YI SYLLABLE BBUP -A070;ID # YI SYLLABLE BBURX -A071;ID # YI SYLLABLE BBUR -A072;ID # YI SYLLABLE BBYT -A073;ID # YI SYLLABLE BBYX -A074;ID # YI SYLLABLE BBY -A075;ID # YI SYLLABLE BBYP -A076;ID # YI SYLLABLE NBIT -A077;ID # YI SYLLABLE NBIX -A078;ID # YI SYLLABLE NBI -A079;ID # YI SYLLABLE NBIP -A07A;ID # YI SYLLABLE NBIEX -A07B;ID # YI SYLLABLE NBIE -A07C;ID # YI SYLLABLE NBIEP -A07D;ID # YI SYLLABLE NBAT -A07E;ID # YI SYLLABLE NBAX -A07F;ID # YI SYLLABLE NBA -A080;ID # YI SYLLABLE NBAP -A081;ID # YI SYLLABLE NBOT -A082;ID # YI SYLLABLE NBOX -A083;ID # YI SYLLABLE NBO -A084;ID # YI SYLLABLE NBOP -A085;ID # YI SYLLABLE NBUT -A086;ID # YI SYLLABLE NBUX -A087;ID # YI SYLLABLE NBU -A088;ID # YI SYLLABLE NBUP -A089;ID # YI SYLLABLE NBURX -A08A;ID # YI SYLLABLE NBUR -A08B;ID # YI SYLLABLE NBYT -A08C;ID # YI SYLLABLE NBYX -A08D;ID # YI SYLLABLE NBY -A08E;ID # YI SYLLABLE NBYP -A08F;ID # YI SYLLABLE NBYRX -A090;ID # YI SYLLABLE NBYR -A091;ID # YI SYLLABLE HMIT -A092;ID # YI SYLLABLE HMIX -A093;ID # YI SYLLABLE HMI -A094;ID # YI SYLLABLE HMIP -A095;ID # YI SYLLABLE HMIEX -A096;ID # YI SYLLABLE HMIE -A097;ID # YI SYLLABLE HMIEP -A098;ID # YI SYLLABLE HMAT -A099;ID # YI SYLLABLE HMAX -A09A;ID # YI SYLLABLE HMA -A09B;ID # YI SYLLABLE HMAP -A09C;ID # YI SYLLABLE HMUOX -A09D;ID # YI SYLLABLE HMUO -A09E;ID # YI SYLLABLE HMUOP -A09F;ID # YI SYLLABLE HMOT -A0A0;ID # YI SYLLABLE HMOX -A0A1;ID # YI SYLLABLE HMO -A0A2;ID # YI SYLLABLE HMOP -A0A3;ID # YI SYLLABLE HMUT -A0A4;ID # YI SYLLABLE HMUX -A0A5;ID # YI SYLLABLE HMU -A0A6;ID # YI SYLLABLE HMUP -A0A7;ID # YI SYLLABLE HMURX -A0A8;ID # YI SYLLABLE HMUR -A0A9;ID # YI SYLLABLE HMYX -A0AA;ID # YI SYLLABLE HMY -A0AB;ID # YI SYLLABLE HMYP -A0AC;ID # YI SYLLABLE HMYRX -A0AD;ID # YI SYLLABLE HMYR -A0AE;ID # YI SYLLABLE MIT -A0AF;ID # YI SYLLABLE MIX -A0B0;ID # YI SYLLABLE MI -A0B1;ID # YI SYLLABLE MIP -A0B2;ID # YI SYLLABLE MIEX -A0B3;ID # YI SYLLABLE MIE -A0B4;ID # YI SYLLABLE MIEP -A0B5;ID # YI SYLLABLE MAT -A0B6;ID # YI SYLLABLE MAX -A0B7;ID # YI SYLLABLE MA -A0B8;ID # YI SYLLABLE MAP -A0B9;ID # YI SYLLABLE MUOT -A0BA;ID # YI SYLLABLE MUOX -A0BB;ID # YI SYLLABLE MUO -A0BC;ID # YI SYLLABLE MUOP -A0BD;ID # YI SYLLABLE MOT -A0BE;ID # YI SYLLABLE MOX -A0BF;ID # YI SYLLABLE MO -A0C0;ID # YI SYLLABLE MOP -A0C1;ID # YI SYLLABLE MEX -A0C2;ID # YI SYLLABLE ME -A0C3;ID # YI SYLLABLE MUT -A0C4;ID # YI SYLLABLE MUX -A0C5;ID # YI SYLLABLE MU -A0C6;ID # YI SYLLABLE MUP -A0C7;ID # YI SYLLABLE MURX -A0C8;ID # YI SYLLABLE MUR -A0C9;ID # YI SYLLABLE MYT -A0CA;ID # YI SYLLABLE MYX -A0CB;ID # YI SYLLABLE MY -A0CC;ID # YI SYLLABLE MYP -A0CD;ID # YI SYLLABLE FIT -A0CE;ID # YI SYLLABLE FIX -A0CF;ID # YI SYLLABLE FI -A0D0;ID # YI SYLLABLE FIP -A0D1;ID # YI SYLLABLE FAT -A0D2;ID # YI SYLLABLE FAX -A0D3;ID # YI SYLLABLE FA -A0D4;ID # YI SYLLABLE FAP -A0D5;ID # YI SYLLABLE FOX -A0D6;ID # YI SYLLABLE FO -A0D7;ID # YI SYLLABLE FOP -A0D8;ID # YI SYLLABLE FUT -A0D9;ID # YI SYLLABLE FUX -A0DA;ID # YI SYLLABLE FU -A0DB;ID # YI SYLLABLE FUP -A0DC;ID # YI SYLLABLE FURX -A0DD;ID # YI SYLLABLE FUR -A0DE;ID # YI SYLLABLE FYT -A0DF;ID # YI SYLLABLE FYX -A0E0;ID # YI SYLLABLE FY -A0E1;ID # YI SYLLABLE FYP -A0E2;ID # YI SYLLABLE VIT -A0E3;ID # YI SYLLABLE VIX -A0E4;ID # YI SYLLABLE VI -A0E5;ID # YI SYLLABLE VIP -A0E6;ID # YI SYLLABLE VIET -A0E7;ID # YI SYLLABLE VIEX -A0E8;ID # YI SYLLABLE VIE -A0E9;ID # YI SYLLABLE VIEP -A0EA;ID # YI SYLLABLE VAT -A0EB;ID # YI SYLLABLE VAX -A0EC;ID # YI SYLLABLE VA -A0ED;ID # YI SYLLABLE VAP -A0EE;ID # YI SYLLABLE VOT -A0EF;ID # YI SYLLABLE VOX -A0F0;ID # YI SYLLABLE VO -A0F1;ID # YI SYLLABLE VOP -A0F2;ID # YI SYLLABLE VEX -A0F3;ID # YI SYLLABLE VEP -A0F4;ID # YI SYLLABLE VUT -A0F5;ID # YI SYLLABLE VUX -A0F6;ID # YI SYLLABLE VU -A0F7;ID # YI SYLLABLE VUP -A0F8;ID # YI SYLLABLE VURX -A0F9;ID # YI SYLLABLE VUR -A0FA;ID # YI SYLLABLE VYT -A0FB;ID # YI SYLLABLE VYX -A0FC;ID # YI SYLLABLE VY -A0FD;ID # YI SYLLABLE VYP -A0FE;ID # YI SYLLABLE VYRX -A0FF;ID # YI SYLLABLE VYR -A100;ID # YI SYLLABLE DIT -A101;ID # YI SYLLABLE DIX -A102;ID # YI SYLLABLE DI -A103;ID # YI SYLLABLE DIP -A104;ID # YI SYLLABLE DIEX -A105;ID # YI SYLLABLE DIE -A106;ID # YI SYLLABLE DIEP -A107;ID # YI SYLLABLE DAT -A108;ID # YI SYLLABLE DAX -A109;ID # YI SYLLABLE DA -A10A;ID # YI SYLLABLE DAP -A10B;ID # YI SYLLABLE DUOX -A10C;ID # YI SYLLABLE DUO -A10D;ID # YI SYLLABLE DOT -A10E;ID # YI SYLLABLE DOX -A10F;ID # YI SYLLABLE DO -A110;ID # YI SYLLABLE DOP -A111;ID # YI SYLLABLE DEX -A112;ID # YI SYLLABLE DE -A113;ID # YI SYLLABLE DEP -A114;ID # YI SYLLABLE DUT -A115;ID # YI SYLLABLE DUX -A116;ID # YI SYLLABLE DU -A117;ID # YI SYLLABLE DUP -A118;ID # YI SYLLABLE DURX -A119;ID # YI SYLLABLE DUR -A11A;ID # YI SYLLABLE TIT -A11B;ID # YI SYLLABLE TIX -A11C;ID # YI SYLLABLE TI -A11D;ID # YI SYLLABLE TIP -A11E;ID # YI SYLLABLE TIEX -A11F;ID # YI SYLLABLE TIE -A120;ID # YI SYLLABLE TIEP -A121;ID # YI SYLLABLE TAT -A122;ID # YI SYLLABLE TAX -A123;ID # YI SYLLABLE TA -A124;ID # YI SYLLABLE TAP -A125;ID # YI SYLLABLE TUOT -A126;ID # YI SYLLABLE TUOX -A127;ID # YI SYLLABLE TUO -A128;ID # YI SYLLABLE TUOP -A129;ID # YI SYLLABLE TOT -A12A;ID # YI SYLLABLE TOX -A12B;ID # YI SYLLABLE TO -A12C;ID # YI SYLLABLE TOP -A12D;ID # YI SYLLABLE TEX -A12E;ID # YI SYLLABLE TE -A12F;ID # YI SYLLABLE TEP -A130;ID # YI SYLLABLE TUT -A131;ID # YI SYLLABLE TUX -A132;ID # YI SYLLABLE TU -A133;ID # YI SYLLABLE TUP -A134;ID # YI SYLLABLE TURX -A135;ID # YI SYLLABLE TUR -A136;ID # YI SYLLABLE DDIT -A137;ID # YI SYLLABLE DDIX -A138;ID # YI SYLLABLE DDI -A139;ID # YI SYLLABLE DDIP -A13A;ID # YI SYLLABLE DDIEX -A13B;ID # YI SYLLABLE DDIE -A13C;ID # YI SYLLABLE DDIEP -A13D;ID # YI SYLLABLE DDAT -A13E;ID # YI SYLLABLE DDAX -A13F;ID # YI SYLLABLE DDA -A140;ID # YI SYLLABLE DDAP -A141;ID # YI SYLLABLE DDUOX -A142;ID # YI SYLLABLE DDUO -A143;ID # YI SYLLABLE DDUOP -A144;ID # YI SYLLABLE DDOT -A145;ID # YI SYLLABLE DDOX -A146;ID # YI SYLLABLE DDO -A147;ID # YI SYLLABLE DDOP -A148;ID # YI SYLLABLE DDEX -A149;ID # YI SYLLABLE DDE -A14A;ID # YI SYLLABLE DDEP -A14B;ID # YI SYLLABLE DDUT -A14C;ID # YI SYLLABLE DDUX -A14D;ID # YI SYLLABLE DDU -A14E;ID # YI SYLLABLE DDUP -A14F;ID # YI SYLLABLE DDURX -A150;ID # YI SYLLABLE DDUR -A151;ID # YI SYLLABLE NDIT -A152;ID # YI SYLLABLE NDIX -A153;ID # YI SYLLABLE NDI -A154;ID # YI SYLLABLE NDIP -A155;ID # YI SYLLABLE NDIEX -A156;ID # YI SYLLABLE NDIE -A157;ID # YI SYLLABLE NDAT -A158;ID # YI SYLLABLE NDAX -A159;ID # YI SYLLABLE NDA -A15A;ID # YI SYLLABLE NDAP -A15B;ID # YI SYLLABLE NDOT -A15C;ID # YI SYLLABLE NDOX -A15D;ID # YI SYLLABLE NDO -A15E;ID # YI SYLLABLE NDOP -A15F;ID # YI SYLLABLE NDEX -A160;ID # YI SYLLABLE NDE -A161;ID # YI SYLLABLE NDEP -A162;ID # YI SYLLABLE NDUT -A163;ID # YI SYLLABLE NDUX -A164;ID # YI SYLLABLE NDU -A165;ID # YI SYLLABLE NDUP -A166;ID # YI SYLLABLE NDURX -A167;ID # YI SYLLABLE NDUR -A168;ID # YI SYLLABLE HNIT -A169;ID # YI SYLLABLE HNIX -A16A;ID # YI SYLLABLE HNI -A16B;ID # YI SYLLABLE HNIP -A16C;ID # YI SYLLABLE HNIET -A16D;ID # YI SYLLABLE HNIEX -A16E;ID # YI SYLLABLE HNIE -A16F;ID # YI SYLLABLE HNIEP -A170;ID # YI SYLLABLE HNAT -A171;ID # YI SYLLABLE HNAX -A172;ID # YI SYLLABLE HNA -A173;ID # YI SYLLABLE HNAP -A174;ID # YI SYLLABLE HNUOX -A175;ID # YI SYLLABLE HNUO -A176;ID # YI SYLLABLE HNOT -A177;ID # YI SYLLABLE HNOX -A178;ID # YI SYLLABLE HNOP -A179;ID # YI SYLLABLE HNEX -A17A;ID # YI SYLLABLE HNE -A17B;ID # YI SYLLABLE HNEP -A17C;ID # YI SYLLABLE HNUT -A17D;ID # YI SYLLABLE NIT -A17E;ID # YI SYLLABLE NIX -A17F;ID # YI SYLLABLE NI -A180;ID # YI SYLLABLE NIP -A181;ID # YI SYLLABLE NIEX -A182;ID # YI SYLLABLE NIE -A183;ID # YI SYLLABLE NIEP -A184;ID # YI SYLLABLE NAX -A185;ID # YI SYLLABLE NA -A186;ID # YI SYLLABLE NAP -A187;ID # YI SYLLABLE NUOX -A188;ID # YI SYLLABLE NUO -A189;ID # YI SYLLABLE NUOP -A18A;ID # YI SYLLABLE NOT -A18B;ID # YI SYLLABLE NOX -A18C;ID # YI SYLLABLE NO -A18D;ID # YI SYLLABLE NOP -A18E;ID # YI SYLLABLE NEX -A18F;ID # YI SYLLABLE NE -A190;ID # YI SYLLABLE NEP -A191;ID # YI SYLLABLE NUT -A192;ID # YI SYLLABLE NUX -A193;ID # YI SYLLABLE NU -A194;ID # YI SYLLABLE NUP -A195;ID # YI SYLLABLE NURX -A196;ID # YI SYLLABLE NUR -A197;ID # YI SYLLABLE HLIT -A198;ID # YI SYLLABLE HLIX -A199;ID # YI SYLLABLE HLI -A19A;ID # YI SYLLABLE HLIP -A19B;ID # YI SYLLABLE HLIEX -A19C;ID # YI SYLLABLE HLIE -A19D;ID # YI SYLLABLE HLIEP -A19E;ID # YI SYLLABLE HLAT -A19F;ID # YI SYLLABLE HLAX -A1A0;ID # YI SYLLABLE HLA -A1A1;ID # YI SYLLABLE HLAP -A1A2;ID # YI SYLLABLE HLUOX -A1A3;ID # YI SYLLABLE HLUO -A1A4;ID # YI SYLLABLE HLUOP -A1A5;ID # YI SYLLABLE HLOX -A1A6;ID # YI SYLLABLE HLO -A1A7;ID # YI SYLLABLE HLOP -A1A8;ID # YI SYLLABLE HLEX -A1A9;ID # YI SYLLABLE HLE -A1AA;ID # YI SYLLABLE HLEP -A1AB;ID # YI SYLLABLE HLUT -A1AC;ID # YI SYLLABLE HLUX -A1AD;ID # YI SYLLABLE HLU -A1AE;ID # YI SYLLABLE HLUP -A1AF;ID # YI SYLLABLE HLURX -A1B0;ID # YI SYLLABLE HLUR -A1B1;ID # YI SYLLABLE HLYT -A1B2;ID # YI SYLLABLE HLYX -A1B3;ID # YI SYLLABLE HLY -A1B4;ID # YI SYLLABLE HLYP -A1B5;ID # YI SYLLABLE HLYRX -A1B6;ID # YI SYLLABLE HLYR -A1B7;ID # YI SYLLABLE LIT -A1B8;ID # YI SYLLABLE LIX -A1B9;ID # YI SYLLABLE LI -A1BA;ID # YI SYLLABLE LIP -A1BB;ID # YI SYLLABLE LIET -A1BC;ID # YI SYLLABLE LIEX -A1BD;ID # YI SYLLABLE LIE -A1BE;ID # YI SYLLABLE LIEP -A1BF;ID # YI SYLLABLE LAT -A1C0;ID # YI SYLLABLE LAX -A1C1;ID # YI SYLLABLE LA -A1C2;ID # YI SYLLABLE LAP -A1C3;ID # YI SYLLABLE LUOT -A1C4;ID # YI SYLLABLE LUOX -A1C5;ID # YI SYLLABLE LUO -A1C6;ID # YI SYLLABLE LUOP -A1C7;ID # YI SYLLABLE LOT -A1C8;ID # YI SYLLABLE LOX -A1C9;ID # YI SYLLABLE LO -A1CA;ID # YI SYLLABLE LOP -A1CB;ID # YI SYLLABLE LEX -A1CC;ID # YI SYLLABLE LE -A1CD;ID # YI SYLLABLE LEP -A1CE;ID # YI SYLLABLE LUT -A1CF;ID # YI SYLLABLE LUX -A1D0;ID # YI SYLLABLE LU -A1D1;ID # YI SYLLABLE LUP -A1D2;ID # YI SYLLABLE LURX -A1D3;ID # YI SYLLABLE LUR -A1D4;ID # YI SYLLABLE LYT -A1D5;ID # YI SYLLABLE LYX -A1D6;ID # YI SYLLABLE LY -A1D7;ID # YI SYLLABLE LYP -A1D8;ID # YI SYLLABLE LYRX -A1D9;ID # YI SYLLABLE LYR -A1DA;ID # YI SYLLABLE GIT -A1DB;ID # YI SYLLABLE GIX -A1DC;ID # YI SYLLABLE GI -A1DD;ID # YI SYLLABLE GIP -A1DE;ID # YI SYLLABLE GIET -A1DF;ID # YI SYLLABLE GIEX -A1E0;ID # YI SYLLABLE GIE -A1E1;ID # YI SYLLABLE GIEP -A1E2;ID # YI SYLLABLE GAT -A1E3;ID # YI SYLLABLE GAX -A1E4;ID # YI SYLLABLE GA -A1E5;ID # YI SYLLABLE GAP -A1E6;ID # YI SYLLABLE GUOT -A1E7;ID # YI SYLLABLE GUOX -A1E8;ID # YI SYLLABLE GUO -A1E9;ID # YI SYLLABLE GUOP -A1EA;ID # YI SYLLABLE GOT -A1EB;ID # YI SYLLABLE GOX -A1EC;ID # YI SYLLABLE GO -A1ED;ID # YI SYLLABLE GOP -A1EE;ID # YI SYLLABLE GET -A1EF;ID # YI SYLLABLE GEX -A1F0;ID # YI SYLLABLE GE -A1F1;ID # YI SYLLABLE GEP -A1F2;ID # YI SYLLABLE GUT -A1F3;ID # YI SYLLABLE GUX -A1F4;ID # YI SYLLABLE GU -A1F5;ID # YI SYLLABLE GUP -A1F6;ID # YI SYLLABLE GURX -A1F7;ID # YI SYLLABLE GUR -A1F8;ID # YI SYLLABLE KIT -A1F9;ID # YI SYLLABLE KIX -A1FA;ID # YI SYLLABLE KI -A1FB;ID # YI SYLLABLE KIP -A1FC;ID # YI SYLLABLE KIEX -A1FD;ID # YI SYLLABLE KIE -A1FE;ID # YI SYLLABLE KIEP -A1FF;ID # YI SYLLABLE KAT -A200;ID # YI SYLLABLE KAX -A201;ID # YI SYLLABLE KA -A202;ID # YI SYLLABLE KAP -A203;ID # YI SYLLABLE KUOX -A204;ID # YI SYLLABLE KUO -A205;ID # YI SYLLABLE KUOP -A206;ID # YI SYLLABLE KOT -A207;ID # YI SYLLABLE KOX -A208;ID # YI SYLLABLE KO -A209;ID # YI SYLLABLE KOP -A20A;ID # YI SYLLABLE KET -A20B;ID # YI SYLLABLE KEX -A20C;ID # YI SYLLABLE KE -A20D;ID # YI SYLLABLE KEP -A20E;ID # YI SYLLABLE KUT -A20F;ID # YI SYLLABLE KUX -A210;ID # YI SYLLABLE KU -A211;ID # YI SYLLABLE KUP -A212;ID # YI SYLLABLE KURX -A213;ID # YI SYLLABLE KUR -A214;ID # YI SYLLABLE GGIT -A215;ID # YI SYLLABLE GGIX -A216;ID # YI SYLLABLE GGI -A217;ID # YI SYLLABLE GGIEX -A218;ID # YI SYLLABLE GGIE -A219;ID # YI SYLLABLE GGIEP -A21A;ID # YI SYLLABLE GGAT -A21B;ID # YI SYLLABLE GGAX -A21C;ID # YI SYLLABLE GGA -A21D;ID # YI SYLLABLE GGAP -A21E;ID # YI SYLLABLE GGUOT -A21F;ID # YI SYLLABLE GGUOX -A220;ID # YI SYLLABLE GGUO -A221;ID # YI SYLLABLE GGUOP -A222;ID # YI SYLLABLE GGOT -A223;ID # YI SYLLABLE GGOX -A224;ID # YI SYLLABLE GGO -A225;ID # YI SYLLABLE GGOP -A226;ID # YI SYLLABLE GGET -A227;ID # YI SYLLABLE GGEX -A228;ID # YI SYLLABLE GGE -A229;ID # YI SYLLABLE GGEP -A22A;ID # YI SYLLABLE GGUT -A22B;ID # YI SYLLABLE GGUX -A22C;ID # YI SYLLABLE GGU -A22D;ID # YI SYLLABLE GGUP -A22E;ID # YI SYLLABLE GGURX -A22F;ID # YI SYLLABLE GGUR -A230;ID # YI SYLLABLE MGIEX -A231;ID # YI SYLLABLE MGIE -A232;ID # YI SYLLABLE MGAT -A233;ID # YI SYLLABLE MGAX -A234;ID # YI SYLLABLE MGA -A235;ID # YI SYLLABLE MGAP -A236;ID # YI SYLLABLE MGUOX -A237;ID # YI SYLLABLE MGUO -A238;ID # YI SYLLABLE MGUOP -A239;ID # YI SYLLABLE MGOT -A23A;ID # YI SYLLABLE MGOX -A23B;ID # YI SYLLABLE MGO -A23C;ID # YI SYLLABLE MGOP -A23D;ID # YI SYLLABLE MGEX -A23E;ID # YI SYLLABLE MGE -A23F;ID # YI SYLLABLE MGEP -A240;ID # YI SYLLABLE MGUT -A241;ID # YI SYLLABLE MGUX -A242;ID # YI SYLLABLE MGU -A243;ID # YI SYLLABLE MGUP -A244;ID # YI SYLLABLE MGURX -A245;ID # YI SYLLABLE MGUR -A246;ID # YI SYLLABLE HXIT -A247;ID # YI SYLLABLE HXIX -A248;ID # YI SYLLABLE HXI -A249;ID # YI SYLLABLE HXIP -A24A;ID # YI SYLLABLE HXIET -A24B;ID # YI SYLLABLE HXIEX -A24C;ID # YI SYLLABLE HXIE -A24D;ID # YI SYLLABLE HXIEP -A24E;ID # YI SYLLABLE HXAT -A24F;ID # YI SYLLABLE HXAX -A250;ID # YI SYLLABLE HXA -A251;ID # YI SYLLABLE HXAP -A252;ID # YI SYLLABLE HXUOT -A253;ID # YI SYLLABLE HXUOX -A254;ID # YI SYLLABLE HXUO -A255;ID # YI SYLLABLE HXUOP -A256;ID # YI SYLLABLE HXOT -A257;ID # YI SYLLABLE HXOX -A258;ID # YI SYLLABLE HXO -A259;ID # YI SYLLABLE HXOP -A25A;ID # YI SYLLABLE HXEX -A25B;ID # YI SYLLABLE HXE -A25C;ID # YI SYLLABLE HXEP -A25D;ID # YI SYLLABLE NGIEX -A25E;ID # YI SYLLABLE NGIE -A25F;ID # YI SYLLABLE NGIEP -A260;ID # YI SYLLABLE NGAT -A261;ID # YI SYLLABLE NGAX -A262;ID # YI SYLLABLE NGA -A263;ID # YI SYLLABLE NGAP -A264;ID # YI SYLLABLE NGUOT -A265;ID # YI SYLLABLE NGUOX -A266;ID # YI SYLLABLE NGUO -A267;ID # YI SYLLABLE NGOT -A268;ID # YI SYLLABLE NGOX -A269;ID # YI SYLLABLE NGO -A26A;ID # YI SYLLABLE NGOP -A26B;ID # YI SYLLABLE NGEX -A26C;ID # YI SYLLABLE NGE -A26D;ID # YI SYLLABLE NGEP -A26E;ID # YI SYLLABLE HIT -A26F;ID # YI SYLLABLE HIEX -A270;ID # YI SYLLABLE HIE -A271;ID # YI SYLLABLE HAT -A272;ID # YI SYLLABLE HAX -A273;ID # YI SYLLABLE HA -A274;ID # YI SYLLABLE HAP -A275;ID # YI SYLLABLE HUOT -A276;ID # YI SYLLABLE HUOX -A277;ID # YI SYLLABLE HUO -A278;ID # YI SYLLABLE HUOP -A279;ID # YI SYLLABLE HOT -A27A;ID # YI SYLLABLE HOX -A27B;ID # YI SYLLABLE HO -A27C;ID # YI SYLLABLE HOP -A27D;ID # YI SYLLABLE HEX -A27E;ID # YI SYLLABLE HE -A27F;ID # YI SYLLABLE HEP -A280;ID # YI SYLLABLE WAT -A281;ID # YI SYLLABLE WAX -A282;ID # YI SYLLABLE WA -A283;ID # YI SYLLABLE WAP -A284;ID # YI SYLLABLE WUOX -A285;ID # YI SYLLABLE WUO -A286;ID # YI SYLLABLE WUOP -A287;ID # YI SYLLABLE WOX -A288;ID # YI SYLLABLE WO -A289;ID # YI SYLLABLE WOP -A28A;ID # YI SYLLABLE WEX -A28B;ID # YI SYLLABLE WE -A28C;ID # YI SYLLABLE WEP -A28D;ID # YI SYLLABLE ZIT -A28E;ID # YI SYLLABLE ZIX -A28F;ID # YI SYLLABLE ZI -A290;ID # YI SYLLABLE ZIP -A291;ID # YI SYLLABLE ZIEX -A292;ID # YI SYLLABLE ZIE -A293;ID # YI SYLLABLE ZIEP -A294;ID # YI SYLLABLE ZAT -A295;ID # YI SYLLABLE ZAX -A296;ID # YI SYLLABLE ZA -A297;ID # YI SYLLABLE ZAP -A298;ID # YI SYLLABLE ZUOX -A299;ID # YI SYLLABLE ZUO -A29A;ID # YI SYLLABLE ZUOP -A29B;ID # YI SYLLABLE ZOT -A29C;ID # YI SYLLABLE ZOX -A29D;ID # YI SYLLABLE ZO -A29E;ID # YI SYLLABLE ZOP -A29F;ID # YI SYLLABLE ZEX -A2A0;ID # YI SYLLABLE ZE -A2A1;ID # YI SYLLABLE ZEP -A2A2;ID # YI SYLLABLE ZUT -A2A3;ID # YI SYLLABLE ZUX -A2A4;ID # YI SYLLABLE ZU -A2A5;ID # YI SYLLABLE ZUP -A2A6;ID # YI SYLLABLE ZURX -A2A7;ID # YI SYLLABLE ZUR -A2A8;ID # YI SYLLABLE ZYT -A2A9;ID # YI SYLLABLE ZYX -A2AA;ID # YI SYLLABLE ZY -A2AB;ID # YI SYLLABLE ZYP -A2AC;ID # YI SYLLABLE ZYRX -A2AD;ID # YI SYLLABLE ZYR -A2AE;ID # YI SYLLABLE CIT -A2AF;ID # YI SYLLABLE CIX -A2B0;ID # YI SYLLABLE CI -A2B1;ID # YI SYLLABLE CIP -A2B2;ID # YI SYLLABLE CIET -A2B3;ID # YI SYLLABLE CIEX -A2B4;ID # YI SYLLABLE CIE -A2B5;ID # YI SYLLABLE CIEP -A2B6;ID # YI SYLLABLE CAT -A2B7;ID # YI SYLLABLE CAX -A2B8;ID # YI SYLLABLE CA -A2B9;ID # YI SYLLABLE CAP -A2BA;ID # YI SYLLABLE CUOX -A2BB;ID # YI SYLLABLE CUO -A2BC;ID # YI SYLLABLE CUOP -A2BD;ID # YI SYLLABLE COT -A2BE;ID # YI SYLLABLE COX -A2BF;ID # YI SYLLABLE CO -A2C0;ID # YI SYLLABLE COP -A2C1;ID # YI SYLLABLE CEX -A2C2;ID # YI SYLLABLE CE -A2C3;ID # YI SYLLABLE CEP -A2C4;ID # YI SYLLABLE CUT -A2C5;ID # YI SYLLABLE CUX -A2C6;ID # YI SYLLABLE CU -A2C7;ID # YI SYLLABLE CUP -A2C8;ID # YI SYLLABLE CURX -A2C9;ID # YI SYLLABLE CUR -A2CA;ID # YI SYLLABLE CYT -A2CB;ID # YI SYLLABLE CYX -A2CC;ID # YI SYLLABLE CY -A2CD;ID # YI SYLLABLE CYP -A2CE;ID # YI SYLLABLE CYRX -A2CF;ID # YI SYLLABLE CYR -A2D0;ID # YI SYLLABLE ZZIT -A2D1;ID # YI SYLLABLE ZZIX -A2D2;ID # YI SYLLABLE ZZI -A2D3;ID # YI SYLLABLE ZZIP -A2D4;ID # YI SYLLABLE ZZIET -A2D5;ID # YI SYLLABLE ZZIEX -A2D6;ID # YI SYLLABLE ZZIE -A2D7;ID # YI SYLLABLE ZZIEP -A2D8;ID # YI SYLLABLE ZZAT -A2D9;ID # YI SYLLABLE ZZAX -A2DA;ID # YI SYLLABLE ZZA -A2DB;ID # YI SYLLABLE ZZAP -A2DC;ID # YI SYLLABLE ZZOX -A2DD;ID # YI SYLLABLE ZZO -A2DE;ID # YI SYLLABLE ZZOP -A2DF;ID # YI SYLLABLE ZZEX -A2E0;ID # YI SYLLABLE ZZE -A2E1;ID # YI SYLLABLE ZZEP -A2E2;ID # YI SYLLABLE ZZUX -A2E3;ID # YI SYLLABLE ZZU -A2E4;ID # YI SYLLABLE ZZUP -A2E5;ID # YI SYLLABLE ZZURX -A2E6;ID # YI SYLLABLE ZZUR -A2E7;ID # YI SYLLABLE ZZYT -A2E8;ID # YI SYLLABLE ZZYX -A2E9;ID # YI SYLLABLE ZZY -A2EA;ID # YI SYLLABLE ZZYP -A2EB;ID # YI SYLLABLE ZZYRX -A2EC;ID # YI SYLLABLE ZZYR -A2ED;ID # YI SYLLABLE NZIT -A2EE;ID # YI SYLLABLE NZIX -A2EF;ID # YI SYLLABLE NZI -A2F0;ID # YI SYLLABLE NZIP -A2F1;ID # YI SYLLABLE NZIEX -A2F2;ID # YI SYLLABLE NZIE -A2F3;ID # YI SYLLABLE NZIEP -A2F4;ID # YI SYLLABLE NZAT -A2F5;ID # YI SYLLABLE NZAX -A2F6;ID # YI SYLLABLE NZA -A2F7;ID # YI SYLLABLE NZAP -A2F8;ID # YI SYLLABLE NZUOX -A2F9;ID # YI SYLLABLE NZUO -A2FA;ID # YI SYLLABLE NZOX -A2FB;ID # YI SYLLABLE NZOP -A2FC;ID # YI SYLLABLE NZEX -A2FD;ID # YI SYLLABLE NZE -A2FE;ID # YI SYLLABLE NZUX -A2FF;ID # YI SYLLABLE NZU -A300;ID # YI SYLLABLE NZUP -A301;ID # YI SYLLABLE NZURX -A302;ID # YI SYLLABLE NZUR -A303;ID # YI SYLLABLE NZYT -A304;ID # YI SYLLABLE NZYX -A305;ID # YI SYLLABLE NZY -A306;ID # YI SYLLABLE NZYP -A307;ID # YI SYLLABLE NZYRX -A308;ID # YI SYLLABLE NZYR -A309;ID # YI SYLLABLE SIT -A30A;ID # YI SYLLABLE SIX -A30B;ID # YI SYLLABLE SI -A30C;ID # YI SYLLABLE SIP -A30D;ID # YI SYLLABLE SIEX -A30E;ID # YI SYLLABLE SIE -A30F;ID # YI SYLLABLE SIEP -A310;ID # YI SYLLABLE SAT -A311;ID # YI SYLLABLE SAX -A312;ID # YI SYLLABLE SA -A313;ID # YI SYLLABLE SAP -A314;ID # YI SYLLABLE SUOX -A315;ID # YI SYLLABLE SUO -A316;ID # YI SYLLABLE SUOP -A317;ID # YI SYLLABLE SOT -A318;ID # YI SYLLABLE SOX -A319;ID # YI SYLLABLE SO -A31A;ID # YI SYLLABLE SOP -A31B;ID # YI SYLLABLE SEX -A31C;ID # YI SYLLABLE SE -A31D;ID # YI SYLLABLE SEP -A31E;ID # YI SYLLABLE SUT -A31F;ID # YI SYLLABLE SUX -A320;ID # YI SYLLABLE SU -A321;ID # YI SYLLABLE SUP -A322;ID # YI SYLLABLE SURX -A323;ID # YI SYLLABLE SUR -A324;ID # YI SYLLABLE SYT -A325;ID # YI SYLLABLE SYX -A326;ID # YI SYLLABLE SY -A327;ID # YI SYLLABLE SYP -A328;ID # YI SYLLABLE SYRX -A329;ID # YI SYLLABLE SYR -A32A;ID # YI SYLLABLE SSIT -A32B;ID # YI SYLLABLE SSIX -A32C;ID # YI SYLLABLE SSI -A32D;ID # YI SYLLABLE SSIP -A32E;ID # YI SYLLABLE SSIEX -A32F;ID # YI SYLLABLE SSIE -A330;ID # YI SYLLABLE SSIEP -A331;ID # YI SYLLABLE SSAT -A332;ID # YI SYLLABLE SSAX -A333;ID # YI SYLLABLE SSA -A334;ID # YI SYLLABLE SSAP -A335;ID # YI SYLLABLE SSOT -A336;ID # YI SYLLABLE SSOX -A337;ID # YI SYLLABLE SSO -A338;ID # YI SYLLABLE SSOP -A339;ID # YI SYLLABLE SSEX -A33A;ID # YI SYLLABLE SSE -A33B;ID # YI SYLLABLE SSEP -A33C;ID # YI SYLLABLE SSUT -A33D;ID # YI SYLLABLE SSUX -A33E;ID # YI SYLLABLE SSU -A33F;ID # YI SYLLABLE SSUP -A340;ID # YI SYLLABLE SSYT -A341;ID # YI SYLLABLE SSYX -A342;ID # YI SYLLABLE SSY -A343;ID # YI SYLLABLE SSYP -A344;ID # YI SYLLABLE SSYRX -A345;ID # YI SYLLABLE SSYR -A346;ID # YI SYLLABLE ZHAT -A347;ID # YI SYLLABLE ZHAX -A348;ID # YI SYLLABLE ZHA -A349;ID # YI SYLLABLE ZHAP -A34A;ID # YI SYLLABLE ZHUOX -A34B;ID # YI SYLLABLE ZHUO -A34C;ID # YI SYLLABLE ZHUOP -A34D;ID # YI SYLLABLE ZHOT -A34E;ID # YI SYLLABLE ZHOX -A34F;ID # YI SYLLABLE ZHO -A350;ID # YI SYLLABLE ZHOP -A351;ID # YI SYLLABLE ZHET -A352;ID # YI SYLLABLE ZHEX -A353;ID # YI SYLLABLE ZHE -A354;ID # YI SYLLABLE ZHEP -A355;ID # YI SYLLABLE ZHUT -A356;ID # YI SYLLABLE ZHUX -A357;ID # YI SYLLABLE ZHU -A358;ID # YI SYLLABLE ZHUP -A359;ID # YI SYLLABLE ZHURX -A35A;ID # YI SYLLABLE ZHUR -A35B;ID # YI SYLLABLE ZHYT -A35C;ID # YI SYLLABLE ZHYX -A35D;ID # YI SYLLABLE ZHY -A35E;ID # YI SYLLABLE ZHYP -A35F;ID # YI SYLLABLE ZHYRX -A360;ID # YI SYLLABLE ZHYR -A361;ID # YI SYLLABLE CHAT -A362;ID # YI SYLLABLE CHAX -A363;ID # YI SYLLABLE CHA -A364;ID # YI SYLLABLE CHAP -A365;ID # YI SYLLABLE CHUOT -A366;ID # YI SYLLABLE CHUOX -A367;ID # YI SYLLABLE CHUO -A368;ID # YI SYLLABLE CHUOP -A369;ID # YI SYLLABLE CHOT -A36A;ID # YI SYLLABLE CHOX -A36B;ID # YI SYLLABLE CHO -A36C;ID # YI SYLLABLE CHOP -A36D;ID # YI SYLLABLE CHET -A36E;ID # YI SYLLABLE CHEX -A36F;ID # YI SYLLABLE CHE -A370;ID # YI SYLLABLE CHEP -A371;ID # YI SYLLABLE CHUX -A372;ID # YI SYLLABLE CHU -A373;ID # YI SYLLABLE CHUP -A374;ID # YI SYLLABLE CHURX -A375;ID # YI SYLLABLE CHUR -A376;ID # YI SYLLABLE CHYT -A377;ID # YI SYLLABLE CHYX -A378;ID # YI SYLLABLE CHY -A379;ID # YI SYLLABLE CHYP -A37A;ID # YI SYLLABLE CHYRX -A37B;ID # YI SYLLABLE CHYR -A37C;ID # YI SYLLABLE RRAX -A37D;ID # YI SYLLABLE RRA -A37E;ID # YI SYLLABLE RRUOX -A37F;ID # YI SYLLABLE RRUO -A380;ID # YI SYLLABLE RROT -A381;ID # YI SYLLABLE RROX -A382;ID # YI SYLLABLE RRO -A383;ID # YI SYLLABLE RROP -A384;ID # YI SYLLABLE RRET -A385;ID # YI SYLLABLE RREX -A386;ID # YI SYLLABLE RRE -A387;ID # YI SYLLABLE RREP -A388;ID # YI SYLLABLE RRUT -A389;ID # YI SYLLABLE RRUX -A38A;ID # YI SYLLABLE RRU -A38B;ID # YI SYLLABLE RRUP -A38C;ID # YI SYLLABLE RRURX -A38D;ID # YI SYLLABLE RRUR -A38E;ID # YI SYLLABLE RRYT -A38F;ID # YI SYLLABLE RRYX -A390;ID # YI SYLLABLE RRY -A391;ID # YI SYLLABLE RRYP -A392;ID # YI SYLLABLE RRYRX -A393;ID # YI SYLLABLE RRYR -A394;ID # YI SYLLABLE NRAT -A395;ID # YI SYLLABLE NRAX -A396;ID # YI SYLLABLE NRA -A397;ID # YI SYLLABLE NRAP -A398;ID # YI SYLLABLE NROX -A399;ID # YI SYLLABLE NRO -A39A;ID # YI SYLLABLE NROP -A39B;ID # YI SYLLABLE NRET -A39C;ID # YI SYLLABLE NREX -A39D;ID # YI SYLLABLE NRE -A39E;ID # YI SYLLABLE NREP -A39F;ID # YI SYLLABLE NRUT -A3A0;ID # YI SYLLABLE NRUX -A3A1;ID # YI SYLLABLE NRU -A3A2;ID # YI SYLLABLE NRUP -A3A3;ID # YI SYLLABLE NRURX -A3A4;ID # YI SYLLABLE NRUR -A3A5;ID # YI SYLLABLE NRYT -A3A6;ID # YI SYLLABLE NRYX -A3A7;ID # YI SYLLABLE NRY -A3A8;ID # YI SYLLABLE NRYP -A3A9;ID # YI SYLLABLE NRYRX -A3AA;ID # YI SYLLABLE NRYR -A3AB;ID # YI SYLLABLE SHAT -A3AC;ID # YI SYLLABLE SHAX -A3AD;ID # YI SYLLABLE SHA -A3AE;ID # YI SYLLABLE SHAP -A3AF;ID # YI SYLLABLE SHUOX -A3B0;ID # YI SYLLABLE SHUO -A3B1;ID # YI SYLLABLE SHUOP -A3B2;ID # YI SYLLABLE SHOT -A3B3;ID # YI SYLLABLE SHOX -A3B4;ID # YI SYLLABLE SHO -A3B5;ID # YI SYLLABLE SHOP -A3B6;ID # YI SYLLABLE SHET -A3B7;ID # YI SYLLABLE SHEX -A3B8;ID # YI SYLLABLE SHE -A3B9;ID # YI SYLLABLE SHEP -A3BA;ID # YI SYLLABLE SHUT -A3BB;ID # YI SYLLABLE SHUX -A3BC;ID # YI SYLLABLE SHU -A3BD;ID # YI SYLLABLE SHUP -A3BE;ID # YI SYLLABLE SHURX -A3BF;ID # YI SYLLABLE SHUR -A3C0;ID # YI SYLLABLE SHYT -A3C1;ID # YI SYLLABLE SHYX -A3C2;ID # YI SYLLABLE SHY -A3C3;ID # YI SYLLABLE SHYP -A3C4;ID # YI SYLLABLE SHYRX -A3C5;ID # YI SYLLABLE SHYR -A3C6;ID # YI SYLLABLE RAT -A3C7;ID # YI SYLLABLE RAX -A3C8;ID # YI SYLLABLE RA -A3C9;ID # YI SYLLABLE RAP -A3CA;ID # YI SYLLABLE RUOX -A3CB;ID # YI SYLLABLE RUO -A3CC;ID # YI SYLLABLE RUOP -A3CD;ID # YI SYLLABLE ROT -A3CE;ID # YI SYLLABLE ROX -A3CF;ID # YI SYLLABLE RO -A3D0;ID # YI SYLLABLE ROP -A3D1;ID # YI SYLLABLE REX -A3D2;ID # YI SYLLABLE RE -A3D3;ID # YI SYLLABLE REP -A3D4;ID # YI SYLLABLE RUT -A3D5;ID # YI SYLLABLE RUX -A3D6;ID # YI SYLLABLE RU -A3D7;ID # YI SYLLABLE RUP -A3D8;ID # YI SYLLABLE RURX -A3D9;ID # YI SYLLABLE RUR -A3DA;ID # YI SYLLABLE RYT -A3DB;ID # YI SYLLABLE RYX -A3DC;ID # YI SYLLABLE RY -A3DD;ID # YI SYLLABLE RYP -A3DE;ID # YI SYLLABLE RYRX -A3DF;ID # YI SYLLABLE RYR -A3E0;ID # YI SYLLABLE JIT -A3E1;ID # YI SYLLABLE JIX -A3E2;ID # YI SYLLABLE JI -A3E3;ID # YI SYLLABLE JIP -A3E4;ID # YI SYLLABLE JIET -A3E5;ID # YI SYLLABLE JIEX -A3E6;ID # YI SYLLABLE JIE -A3E7;ID # YI SYLLABLE JIEP -A3E8;ID # YI SYLLABLE JUOT -A3E9;ID # YI SYLLABLE JUOX -A3EA;ID # YI SYLLABLE JUO -A3EB;ID # YI SYLLABLE JUOP -A3EC;ID # YI SYLLABLE JOT -A3ED;ID # YI SYLLABLE JOX -A3EE;ID # YI SYLLABLE JO -A3EF;ID # YI SYLLABLE JOP -A3F0;ID # YI SYLLABLE JUT -A3F1;ID # YI SYLLABLE JUX -A3F2;ID # YI SYLLABLE JU -A3F3;ID # YI SYLLABLE JUP -A3F4;ID # YI SYLLABLE JURX -A3F5;ID # YI SYLLABLE JUR -A3F6;ID # YI SYLLABLE JYT -A3F7;ID # YI SYLLABLE JYX -A3F8;ID # YI SYLLABLE JY -A3F9;ID # YI SYLLABLE JYP -A3FA;ID # YI SYLLABLE JYRX -A3FB;ID # YI SYLLABLE JYR -A3FC;ID # YI SYLLABLE QIT -A3FD;ID # YI SYLLABLE QIX -A3FE;ID # YI SYLLABLE QI -A3FF;ID # YI SYLLABLE QIP -A400;ID # YI SYLLABLE QIET -A401;ID # YI SYLLABLE QIEX -A402;ID # YI SYLLABLE QIE -A403;ID # YI SYLLABLE QIEP -A404;ID # YI SYLLABLE QUOT -A405;ID # YI SYLLABLE QUOX -A406;ID # YI SYLLABLE QUO -A407;ID # YI SYLLABLE QUOP -A408;ID # YI SYLLABLE QOT -A409;ID # YI SYLLABLE QOX -A40A;ID # YI SYLLABLE QO -A40B;ID # YI SYLLABLE QOP -A40C;ID # YI SYLLABLE QUT -A40D;ID # YI SYLLABLE QUX -A40E;ID # YI SYLLABLE QU -A40F;ID # YI SYLLABLE QUP -A410;ID # YI SYLLABLE QURX -A411;ID # YI SYLLABLE QUR -A412;ID # YI SYLLABLE QYT -A413;ID # YI SYLLABLE QYX -A414;ID # YI SYLLABLE QY -A415;ID # YI SYLLABLE QYP -A416;ID # YI SYLLABLE QYRX -A417;ID # YI SYLLABLE QYR -A418;ID # YI SYLLABLE JJIT -A419;ID # YI SYLLABLE JJIX -A41A;ID # YI SYLLABLE JJI -A41B;ID # YI SYLLABLE JJIP -A41C;ID # YI SYLLABLE JJIET -A41D;ID # YI SYLLABLE JJIEX -A41E;ID # YI SYLLABLE JJIE -A41F;ID # YI SYLLABLE JJIEP -A420;ID # YI SYLLABLE JJUOX -A421;ID # YI SYLLABLE JJUO -A422;ID # YI SYLLABLE JJUOP -A423;ID # YI SYLLABLE JJOT -A424;ID # YI SYLLABLE JJOX -A425;ID # YI SYLLABLE JJO -A426;ID # YI SYLLABLE JJOP -A427;ID # YI SYLLABLE JJUT -A428;ID # YI SYLLABLE JJUX -A429;ID # YI SYLLABLE JJU -A42A;ID # YI SYLLABLE JJUP -A42B;ID # YI SYLLABLE JJURX -A42C;ID # YI SYLLABLE JJUR -A42D;ID # YI SYLLABLE JJYT -A42E;ID # YI SYLLABLE JJYX -A42F;ID # YI SYLLABLE JJY -A430;ID # YI SYLLABLE JJYP -A431;ID # YI SYLLABLE NJIT -A432;ID # YI SYLLABLE NJIX -A433;ID # YI SYLLABLE NJI -A434;ID # YI SYLLABLE NJIP -A435;ID # YI SYLLABLE NJIET -A436;ID # YI SYLLABLE NJIEX -A437;ID # YI SYLLABLE NJIE -A438;ID # YI SYLLABLE NJIEP -A439;ID # YI SYLLABLE NJUOX -A43A;ID # YI SYLLABLE NJUO -A43B;ID # YI SYLLABLE NJOT -A43C;ID # YI SYLLABLE NJOX -A43D;ID # YI SYLLABLE NJO -A43E;ID # YI SYLLABLE NJOP -A43F;ID # YI SYLLABLE NJUX -A440;ID # YI SYLLABLE NJU -A441;ID # YI SYLLABLE NJUP -A442;ID # YI SYLLABLE NJURX -A443;ID # YI SYLLABLE NJUR -A444;ID # YI SYLLABLE NJYT -A445;ID # YI SYLLABLE NJYX -A446;ID # YI SYLLABLE NJY -A447;ID # YI SYLLABLE NJYP -A448;ID # YI SYLLABLE NJYRX -A449;ID # YI SYLLABLE NJYR -A44A;ID # YI SYLLABLE NYIT -A44B;ID # YI SYLLABLE NYIX -A44C;ID # YI SYLLABLE NYI -A44D;ID # YI SYLLABLE NYIP -A44E;ID # YI SYLLABLE NYIET -A44F;ID # YI SYLLABLE NYIEX -A450;ID # YI SYLLABLE NYIE -A451;ID # YI SYLLABLE NYIEP -A452;ID # YI SYLLABLE NYUOX -A453;ID # YI SYLLABLE NYUO -A454;ID # YI SYLLABLE NYUOP -A455;ID # YI SYLLABLE NYOT -A456;ID # YI SYLLABLE NYOX -A457;ID # YI SYLLABLE NYO -A458;ID # YI SYLLABLE NYOP -A459;ID # YI SYLLABLE NYUT -A45A;ID # YI SYLLABLE NYUX -A45B;ID # YI SYLLABLE NYU -A45C;ID # YI SYLLABLE NYUP -A45D;ID # YI SYLLABLE XIT -A45E;ID # YI SYLLABLE XIX -A45F;ID # YI SYLLABLE XI -A460;ID # YI SYLLABLE XIP -A461;ID # YI SYLLABLE XIET -A462;ID # YI SYLLABLE XIEX -A463;ID # YI SYLLABLE XIE -A464;ID # YI SYLLABLE XIEP -A465;ID # YI SYLLABLE XUOX -A466;ID # YI SYLLABLE XUO -A467;ID # YI SYLLABLE XOT -A468;ID # YI SYLLABLE XOX -A469;ID # YI SYLLABLE XO -A46A;ID # YI SYLLABLE XOP -A46B;ID # YI SYLLABLE XYT -A46C;ID # YI SYLLABLE XYX -A46D;ID # YI SYLLABLE XY -A46E;ID # YI SYLLABLE XYP -A46F;ID # YI SYLLABLE XYRX -A470;ID # YI SYLLABLE XYR -A471;ID # YI SYLLABLE YIT -A472;ID # YI SYLLABLE YIX -A473;ID # YI SYLLABLE YI -A474;ID # YI SYLLABLE YIP -A475;ID # YI SYLLABLE YIET -A476;ID # YI SYLLABLE YIEX -A477;ID # YI SYLLABLE YIE -A478;ID # YI SYLLABLE YIEP -A479;ID # YI SYLLABLE YUOT -A47A;ID # YI SYLLABLE YUOX -A47B;ID # YI SYLLABLE YUO -A47C;ID # YI SYLLABLE YUOP -A47D;ID # YI SYLLABLE YOT -A47E;ID # YI SYLLABLE YOX -A47F;ID # YI SYLLABLE YO -A480;ID # YI SYLLABLE YOP -A481;ID # YI SYLLABLE YUT -A482;ID # YI SYLLABLE YUX -A483;ID # YI SYLLABLE YU -A484;ID # YI SYLLABLE YUP -A485;ID # YI SYLLABLE YURX -A486;ID # YI SYLLABLE YUR -A487;ID # YI SYLLABLE YYT -A488;ID # YI SYLLABLE YYX -A489;ID # YI SYLLABLE YY -A48A;ID # YI SYLLABLE YYP -A48B;ID # YI SYLLABLE YYRX -A48C;ID # YI SYLLABLE YYR -A490;ID # YI RADICAL QOT -A491;ID # YI RADICAL LI -A492;ID # YI RADICAL KIT -A493;ID # YI RADICAL NYIP -A494;ID # YI RADICAL CYP -A495;ID # YI RADICAL SSI -A496;ID # YI RADICAL GGOP -A497;ID # YI RADICAL GEP -A498;ID # YI RADICAL MI -A499;ID # YI RADICAL HXIT -A49A;ID # YI RADICAL LYR -A49B;ID # YI RADICAL BBUT -A49C;ID # YI RADICAL MOP -A49D;ID # YI RADICAL YO -A49E;ID # YI RADICAL PUT -A49F;ID # YI RADICAL HXUO -A4A0;ID # YI RADICAL TAT -A4A1;ID # YI RADICAL GA -A4A2;ID # YI RADICAL ZUP -A4A3;ID # YI RADICAL CYT -A4A4;ID # YI RADICAL DDUR -A4A5;ID # YI RADICAL BUR -A4A6;ID # YI RADICAL GGUO -A4A7;ID # YI RADICAL NYOP -A4A8;ID # YI RADICAL TU -A4A9;ID # YI RADICAL OP -A4AA;ID # YI RADICAL JJUT -A4AB;ID # YI RADICAL ZOT -A4AC;ID # YI RADICAL PYT -A4AD;ID # YI RADICAL HMO -A4AE;ID # YI RADICAL YIT -A4AF;ID # YI RADICAL VUR -A4B0;ID # YI RADICAL SHY -A4B1;ID # YI RADICAL VEP -A4B2;ID # YI RADICAL ZA -A4B3;ID # YI RADICAL JO -A4B4;ID # YI RADICAL NZUP -A4B5;ID # YI RADICAL JJY -A4B6;ID # YI RADICAL GOT -A4B7;ID # YI RADICAL JJIE -A4B8;ID # YI RADICAL WO -A4B9;ID # YI RADICAL DU -A4BA;ID # YI RADICAL SHUR -A4BB;ID # YI RADICAL LIE -A4BC;ID # YI RADICAL CY -A4BD;ID # YI RADICAL CUOP -A4BE;ID # YI RADICAL CIP -A4BF;ID # YI RADICAL HXOP -A4C0;ID # YI RADICAL SHAT -A4C1;ID # YI RADICAL ZUR -A4C2;ID # YI RADICAL SHOP -A4C3;ID # YI RADICAL CHE -A4C4;ID # YI RADICAL ZZIET -A4C5;ID # YI RADICAL NBIE -A4C6;ID # YI RADICAL KE -A700;AL # MODIFIER LETTER CHINESE TONE YIN PING -A701;AL # MODIFIER LETTER CHINESE TONE YANG PING -A702;AL # MODIFIER LETTER CHINESE TONE YIN SHANG -A703;AL # MODIFIER LETTER CHINESE TONE YANG SHANG -A704;AL # MODIFIER LETTER CHINESE TONE YIN QU -A705;AL # MODIFIER LETTER CHINESE TONE YANG QU -A706;AL # MODIFIER LETTER CHINESE TONE YIN RU -A707;AL # MODIFIER LETTER CHINESE TONE YANG RU -A708;AL # MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR -A709;AL # MODIFIER LETTER HIGH DOTTED TONE BAR -A70A;AL # MODIFIER LETTER MID DOTTED TONE BAR -A70B;AL # MODIFIER LETTER LOW DOTTED TONE BAR -A70C;AL # MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR -A70D;AL # MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR -A70E;AL # MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR -A70F;AL # MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR -A710;AL # MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR -A711;AL # MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR -A712;AL # MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR -A713;AL # MODIFIER LETTER HIGH LEFT-STEM TONE BAR -A714;AL # MODIFIER LETTER MID LEFT-STEM TONE BAR -A715;AL # MODIFIER LETTER LOW LEFT-STEM TONE BAR -A716;AL # MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR -A800;AL # SYLOTI NAGRI LETTER A -A801;AL # SYLOTI NAGRI LETTER I -A802;CM # SYLOTI NAGRI SIGN DVISVARA -A803;AL # SYLOTI NAGRI LETTER U -A804;AL # SYLOTI NAGRI LETTER E -A805;AL # SYLOTI NAGRI LETTER O -A806;CM # SYLOTI NAGRI SIGN HASANTA -A807;AL # SYLOTI NAGRI LETTER KO -A808;AL # SYLOTI NAGRI LETTER KHO -A809;AL # SYLOTI NAGRI LETTER GO -A80A;AL # SYLOTI NAGRI LETTER GHO -A80B;CM # SYLOTI NAGRI SIGN ANUSVARA -A80C;AL # SYLOTI NAGRI LETTER CO -A80D;AL # SYLOTI NAGRI LETTER CHO -A80E;AL # SYLOTI NAGRI LETTER JO -A80F;AL # SYLOTI NAGRI LETTER JHO -A810;AL # SYLOTI NAGRI LETTER TTO -A811;AL # SYLOTI NAGRI LETTER TTHO -A812;AL # SYLOTI NAGRI LETTER DDO -A813;AL # SYLOTI NAGRI LETTER DDHO -A814;AL # SYLOTI NAGRI LETTER TO -A815;AL # SYLOTI NAGRI LETTER THO -A816;AL # SYLOTI NAGRI LETTER DO -A817;AL # SYLOTI NAGRI LETTER DHO -A818;AL # SYLOTI NAGRI LETTER NO -A819;AL # SYLOTI NAGRI LETTER PO -A81A;AL # SYLOTI NAGRI LETTER PHO -A81B;AL # SYLOTI NAGRI LETTER BO -A81C;AL # SYLOTI NAGRI LETTER BHO -A81D;AL # SYLOTI NAGRI LETTER MO -A81E;AL # SYLOTI NAGRI LETTER RO -A81F;AL # SYLOTI NAGRI LETTER LO -A820;AL # SYLOTI NAGRI LETTER RRO -A821;AL # SYLOTI NAGRI LETTER SO -A822;AL # SYLOTI NAGRI LETTER HO -A823;CM # SYLOTI NAGRI VOWEL SIGN A -A824;CM # SYLOTI NAGRI VOWEL SIGN I -A825;CM # SYLOTI NAGRI VOWEL SIGN U -A826;CM # SYLOTI NAGRI VOWEL SIGN E -A827;CM # SYLOTI NAGRI VOWEL SIGN OO -A828;AL # SYLOTI NAGRI POETRY MARK-1 -A829;AL # SYLOTI NAGRI POETRY MARK-2 -A82A;AL # SYLOTI NAGRI POETRY MARK-3 -A82B;AL # SYLOTI NAGRI POETRY MARK-4 -AC00;H2 # HANGUL SYLLABLE GA -AC01..AC1B;H3 # HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH -AC1C;H2 # HANGUL SYLLABLE GAE -AC1D..AC37;H3 # HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH -AC38;H2 # HANGUL SYLLABLE GYA -AC39..AC53;H3 # HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH -AC54;H2 # HANGUL SYLLABLE GYAE -AC55..AC6F;H3 # HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH -AC70;H2 # HANGUL SYLLABLE GEO -AC71..AC8B;H3 # HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH -AC8C;H2 # HANGUL SYLLABLE GE -AC8D..ACA7;H3 # HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH -ACA8;H2 # HANGUL SYLLABLE GYEO -ACA9..ACC3;H3 # HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH -ACC4;H2 # HANGUL SYLLABLE GYE -ACC5..ACDF;H3 # HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH -ACE0;H2 # HANGUL SYLLABLE GO -ACE1..ACFB;H3 # HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH -ACFC;H2 # HANGUL SYLLABLE GWA -ACFD..AD17;H3 # HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH -AD18;H2 # HANGUL SYLLABLE GWAE -AD19..AD33;H3 # HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH -AD34;H2 # HANGUL SYLLABLE GOE -AD35..AD4F;H3 # HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH -AD50;H2 # HANGUL SYLLABLE GYO -AD51..AD6B;H3 # HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH -AD6C;H2 # HANGUL SYLLABLE GU -AD6D..AD87;H3 # HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH -AD88;H2 # HANGUL SYLLABLE GWEO -AD89..ADA3;H3 # HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH -ADA4;H2 # HANGUL SYLLABLE GWE -ADA5..ADBF;H3 # HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH -ADC0;H2 # HANGUL SYLLABLE GWI -ADC1..ADDB;H3 # HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH -ADDC;H2 # HANGUL SYLLABLE GYU -ADDD..ADF7;H3 # HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH -ADF8;H2 # HANGUL SYLLABLE GEU -ADF9..AE13;H3 # HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH -AE14;H2 # HANGUL SYLLABLE GYI -AE15..AE2F;H3 # HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH -AE30;H2 # HANGUL SYLLABLE GI -AE31..AE4B;H3 # HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH -AE4C;H2 # HANGUL SYLLABLE GGA -AE4D..AE67;H3 # HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH -AE68;H2 # HANGUL SYLLABLE GGAE -AE69..AE83;H3 # HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH -AE84;H2 # HANGUL SYLLABLE GGYA -AE85..AE9F;H3 # HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH -AEA0;H2 # HANGUL SYLLABLE GGYAE -AEA1..AEBB;H3 # HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH -AEBC;H2 # HANGUL SYLLABLE GGEO -AEBD..AED7;H3 # HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH -AED8;H2 # HANGUL SYLLABLE GGE -AED9..AEF3;H3 # HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH -AEF4;H2 # HANGUL SYLLABLE GGYEO -AEF5..AF0F;H3 # HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH -AF10;H2 # HANGUL SYLLABLE GGYE -AF11..AF2B;H3 # HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH -AF2C;H2 # HANGUL SYLLABLE GGO -AF2D..AF47;H3 # HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH -AF48;H2 # HANGUL SYLLABLE GGWA -AF49..AF63;H3 # HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH -AF64;H2 # HANGUL SYLLABLE GGWAE -AF65..AF7F;H3 # HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH -AF80;H2 # HANGUL SYLLABLE GGOE -AF81..AF9B;H3 # HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH -AF9C;H2 # HANGUL SYLLABLE GGYO -AF9D..AFB7;H3 # HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH -AFB8;H2 # HANGUL SYLLABLE GGU -AFB9..AFD3;H3 # HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH -AFD4;H2 # HANGUL SYLLABLE GGWEO -AFD5..AFEF;H3 # HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH -AFF0;H2 # HANGUL SYLLABLE GGWE -AFF1..B00B;H3 # HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH -B00C;H2 # HANGUL SYLLABLE GGWI -B00D..B027;H3 # HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH -B028;H2 # HANGUL SYLLABLE GGYU -B029..B043;H3 # HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH -B044;H2 # HANGUL SYLLABLE GGEU -B045..B05F;H3 # HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH -B060;H2 # HANGUL SYLLABLE GGYI -B061..B07B;H3 # HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH -B07C;H2 # HANGUL SYLLABLE GGI -B07D..B097;H3 # HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH -B098;H2 # HANGUL SYLLABLE NA -B099..B0B3;H3 # HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH -B0B4;H2 # HANGUL SYLLABLE NAE -B0B5..B0CF;H3 # HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH -B0D0;H2 # HANGUL SYLLABLE NYA -B0D1..B0EB;H3 # HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH -B0EC;H2 # HANGUL SYLLABLE NYAE -B0ED..B107;H3 # HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH -B108;H2 # HANGUL SYLLABLE NEO -B109..B123;H3 # HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH -B124;H2 # HANGUL SYLLABLE NE -B125..B13F;H3 # HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH -B140;H2 # HANGUL SYLLABLE NYEO -B141..B15B;H3 # HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH -B15C;H2 # HANGUL SYLLABLE NYE -B15D..B177;H3 # HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH -B178;H2 # HANGUL SYLLABLE NO -B179..B193;H3 # HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH -B194;H2 # HANGUL SYLLABLE NWA -B195..B1AF;H3 # HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH -B1B0;H2 # HANGUL SYLLABLE NWAE -B1B1..B1CB;H3 # HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH -B1CC;H2 # HANGUL SYLLABLE NOE -B1CD..B1E7;H3 # HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH -B1E8;H2 # HANGUL SYLLABLE NYO -B1E9..B203;H3 # HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH -B204;H2 # HANGUL SYLLABLE NU -B205..B21F;H3 # HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH -B220;H2 # HANGUL SYLLABLE NWEO -B221..B23B;H3 # HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH -B23C;H2 # HANGUL SYLLABLE NWE -B23D..B257;H3 # HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH -B258;H2 # HANGUL SYLLABLE NWI -B259..B273;H3 # HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH -B274;H2 # HANGUL SYLLABLE NYU -B275..B28F;H3 # HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH -B290;H2 # HANGUL SYLLABLE NEU -B291..B2AB;H3 # HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH -B2AC;H2 # HANGUL SYLLABLE NYI -B2AD..B2C7;H3 # HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH -B2C8;H2 # HANGUL SYLLABLE NI -B2C9..B2E3;H3 # HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH -B2E4;H2 # HANGUL SYLLABLE DA -B2E5..B2FF;H3 # HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH -B300;H2 # HANGUL SYLLABLE DAE -B301..B31B;H3 # HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH -B31C;H2 # HANGUL SYLLABLE DYA -B31D..B337;H3 # HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH -B338;H2 # HANGUL SYLLABLE DYAE -B339..B353;H3 # HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH -B354;H2 # HANGUL SYLLABLE DEO -B355..B36F;H3 # HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH -B370;H2 # HANGUL SYLLABLE DE -B371..B38B;H3 # HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH -B38C;H2 # HANGUL SYLLABLE DYEO -B38D..B3A7;H3 # HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH -B3A8;H2 # HANGUL SYLLABLE DYE -B3A9..B3C3;H3 # HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH -B3C4;H2 # HANGUL SYLLABLE DO -B3C5..B3DF;H3 # HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH -B3E0;H2 # HANGUL SYLLABLE DWA -B3E1..B3FB;H3 # HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH -B3FC;H2 # HANGUL SYLLABLE DWAE -B3FD..B417;H3 # HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH -B418;H2 # HANGUL SYLLABLE DOE -B419..B433;H3 # HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH -B434;H2 # HANGUL SYLLABLE DYO -B435..B44F;H3 # HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH -B450;H2 # HANGUL SYLLABLE DU -B451..B46B;H3 # HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH -B46C;H2 # HANGUL SYLLABLE DWEO -B46D..B487;H3 # HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH -B488;H2 # HANGUL SYLLABLE DWE -B489..B4A3;H3 # HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH -B4A4;H2 # HANGUL SYLLABLE DWI -B4A5..B4BF;H3 # HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH -B4C0;H2 # HANGUL SYLLABLE DYU -B4C1..B4DB;H3 # HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH -B4DC;H2 # HANGUL SYLLABLE DEU -B4DD..B4F7;H3 # HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH -B4F8;H2 # HANGUL SYLLABLE DYI -B4F9..B513;H3 # HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH -B514;H2 # HANGUL SYLLABLE DI -B515..B52F;H3 # HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH -B530;H2 # HANGUL SYLLABLE DDA -B531..B54B;H3 # HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH -B54C;H2 # HANGUL SYLLABLE DDAE -B54D..B567;H3 # HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH -B568;H2 # HANGUL SYLLABLE DDYA -B569..B583;H3 # HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH -B584;H2 # HANGUL SYLLABLE DDYAE -B585..B59F;H3 # HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH -B5A0;H2 # HANGUL SYLLABLE DDEO -B5A1..B5BB;H3 # HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH -B5BC;H2 # HANGUL SYLLABLE DDE -B5BD..B5D7;H3 # HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH -B5D8;H2 # HANGUL SYLLABLE DDYEO -B5D9..B5F3;H3 # HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH -B5F4;H2 # HANGUL SYLLABLE DDYE -B5F5..B60F;H3 # HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH -B610;H2 # HANGUL SYLLABLE DDO -B611..B62B;H3 # HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH -B62C;H2 # HANGUL SYLLABLE DDWA -B62D..B647;H3 # HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH -B648;H2 # HANGUL SYLLABLE DDWAE -B649..B663;H3 # HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH -B664;H2 # HANGUL SYLLABLE DDOE -B665..B67F;H3 # HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH -B680;H2 # HANGUL SYLLABLE DDYO -B681..B69B;H3 # HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH -B69C;H2 # HANGUL SYLLABLE DDU -B69D..B6B7;H3 # HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH -B6B8;H2 # HANGUL SYLLABLE DDWEO -B6B9..B6D3;H3 # HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH -B6D4;H2 # HANGUL SYLLABLE DDWE -B6D5..B6EF;H3 # HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH -B6F0;H2 # HANGUL SYLLABLE DDWI -B6F1..B70B;H3 # HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH -B70C;H2 # HANGUL SYLLABLE DDYU -B70D..B727;H3 # HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH -B728;H2 # HANGUL SYLLABLE DDEU -B729..B743;H3 # HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH -B744;H2 # HANGUL SYLLABLE DDYI -B745..B75F;H3 # HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH -B760;H2 # HANGUL SYLLABLE DDI -B761..B77B;H3 # HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH -B77C;H2 # HANGUL SYLLABLE RA -B77D..B797;H3 # HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH -B798;H2 # HANGUL SYLLABLE RAE -B799..B7B3;H3 # HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH -B7B4;H2 # HANGUL SYLLABLE RYA -B7B5..B7CF;H3 # HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH -B7D0;H2 # HANGUL SYLLABLE RYAE -B7D1..B7EB;H3 # HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH -B7EC;H2 # HANGUL SYLLABLE REO -B7ED..B807;H3 # HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH -B808;H2 # HANGUL SYLLABLE RE -B809..B823;H3 # HANGUL SYLLABLE REG..HANGUL SYLLABLE REH -B824;H2 # HANGUL SYLLABLE RYEO -B825..B83F;H3 # HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH -B840;H2 # HANGUL SYLLABLE RYE -B841..B85B;H3 # HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH -B85C;H2 # HANGUL SYLLABLE RO -B85D..B877;H3 # HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH -B878;H2 # HANGUL SYLLABLE RWA -B879..B893;H3 # HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH -B894;H2 # HANGUL SYLLABLE RWAE -B895..B8AF;H3 # HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH -B8B0;H2 # HANGUL SYLLABLE ROE -B8B1..B8CB;H3 # HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH -B8CC;H2 # HANGUL SYLLABLE RYO -B8CD..B8E7;H3 # HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH -B8E8;H2 # HANGUL SYLLABLE RU -B8E9..B903;H3 # HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH -B904;H2 # HANGUL SYLLABLE RWEO -B905..B91F;H3 # HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH -B920;H2 # HANGUL SYLLABLE RWE -B921..B93B;H3 # HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH -B93C;H2 # HANGUL SYLLABLE RWI -B93D..B957;H3 # HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH -B958;H2 # HANGUL SYLLABLE RYU -B959..B973;H3 # HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH -B974;H2 # HANGUL SYLLABLE REU -B975..B98F;H3 # HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH -B990;H2 # HANGUL SYLLABLE RYI -B991..B9AB;H3 # HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH -B9AC;H2 # HANGUL SYLLABLE RI -B9AD..B9C7;H3 # HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH -B9C8;H2 # HANGUL SYLLABLE MA -B9C9..B9E3;H3 # HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH -B9E4;H2 # HANGUL SYLLABLE MAE -B9E5..B9FF;H3 # HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH -BA00;H2 # HANGUL SYLLABLE MYA -BA01..BA1B;H3 # HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH -BA1C;H2 # HANGUL SYLLABLE MYAE -BA1D..BA37;H3 # HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH -BA38;H2 # HANGUL SYLLABLE MEO -BA39..BA53;H3 # HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH -BA54;H2 # HANGUL SYLLABLE ME -BA55..BA6F;H3 # HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH -BA70;H2 # HANGUL SYLLABLE MYEO -BA71..BA8B;H3 # HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH -BA8C;H2 # HANGUL SYLLABLE MYE -BA8D..BAA7;H3 # HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH -BAA8;H2 # HANGUL SYLLABLE MO -BAA9..BAC3;H3 # HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH -BAC4;H2 # HANGUL SYLLABLE MWA -BAC5..BADF;H3 # HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH -BAE0;H2 # HANGUL SYLLABLE MWAE -BAE1..BAFB;H3 # HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH -BAFC;H2 # HANGUL SYLLABLE MOE -BAFD..BB17;H3 # HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH -BB18;H2 # HANGUL SYLLABLE MYO -BB19..BB33;H3 # HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH -BB34;H2 # HANGUL SYLLABLE MU -BB35..BB4F;H3 # HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH -BB50;H2 # HANGUL SYLLABLE MWEO -BB51..BB6B;H3 # HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH -BB6C;H2 # HANGUL SYLLABLE MWE -BB6D..BB87;H3 # HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH -BB88;H2 # HANGUL SYLLABLE MWI -BB89..BBA3;H3 # HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH -BBA4;H2 # HANGUL SYLLABLE MYU -BBA5..BBBF;H3 # HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH -BBC0;H2 # HANGUL SYLLABLE MEU -BBC1..BBDB;H3 # HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH -BBDC;H2 # HANGUL SYLLABLE MYI -BBDD..BBF7;H3 # HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH -BBF8;H2 # HANGUL SYLLABLE MI -BBF9..BC13;H3 # HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH -BC14;H2 # HANGUL SYLLABLE BA -BC15..BC2F;H3 # HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH -BC30;H2 # HANGUL SYLLABLE BAE -BC31..BC4B;H3 # HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH -BC4C;H2 # HANGUL SYLLABLE BYA -BC4D..BC67;H3 # HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH -BC68;H2 # HANGUL SYLLABLE BYAE -BC69..BC83;H3 # HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH -BC84;H2 # HANGUL SYLLABLE BEO -BC85..BC9F;H3 # HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH -BCA0;H2 # HANGUL SYLLABLE BE -BCA1..BCBB;H3 # HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH -BCBC;H2 # HANGUL SYLLABLE BYEO -BCBD..BCD7;H3 # HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH -BCD8;H2 # HANGUL SYLLABLE BYE -BCD9..BCF3;H3 # HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH -BCF4;H2 # HANGUL SYLLABLE BO -BCF5..BD0F;H3 # HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH -BD10;H2 # HANGUL SYLLABLE BWA -BD11..BD2B;H3 # HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH -BD2C;H2 # HANGUL SYLLABLE BWAE -BD2D..BD47;H3 # HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH -BD48;H2 # HANGUL SYLLABLE BOE -BD49..BD63;H3 # HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH -BD64;H2 # HANGUL SYLLABLE BYO -BD65..BD7F;H3 # HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH -BD80;H2 # HANGUL SYLLABLE BU -BD81..BD9B;H3 # HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH -BD9C;H2 # HANGUL SYLLABLE BWEO -BD9D..BDB7;H3 # HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH -BDB8;H2 # HANGUL SYLLABLE BWE -BDB9..BDD3;H3 # HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH -BDD4;H2 # HANGUL SYLLABLE BWI -BDD5..BDEF;H3 # HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH -BDF0;H2 # HANGUL SYLLABLE BYU -BDF1..BE0B;H3 # HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH -BE0C;H2 # HANGUL SYLLABLE BEU -BE0D..BE27;H3 # HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH -BE28;H2 # HANGUL SYLLABLE BYI -BE29..BE43;H3 # HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH -BE44;H2 # HANGUL SYLLABLE BI -BE45..BE5F;H3 # HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH -BE60;H2 # HANGUL SYLLABLE BBA -BE61..BE7B;H3 # HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH -BE7C;H2 # HANGUL SYLLABLE BBAE -BE7D..BE97;H3 # HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH -BE98;H2 # HANGUL SYLLABLE BBYA -BE99..BEB3;H3 # HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH -BEB4;H2 # HANGUL SYLLABLE BBYAE -BEB5..BECF;H3 # HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH -BED0;H2 # HANGUL SYLLABLE BBEO -BED1..BEEB;H3 # HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH -BEEC;H2 # HANGUL SYLLABLE BBE -BEED..BF07;H3 # HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH -BF08;H2 # HANGUL SYLLABLE BBYEO -BF09..BF23;H3 # HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH -BF24;H2 # HANGUL SYLLABLE BBYE -BF25..BF3F;H3 # HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH -BF40;H2 # HANGUL SYLLABLE BBO -BF41..BF5B;H3 # HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH -BF5C;H2 # HANGUL SYLLABLE BBWA -BF5D..BF77;H3 # HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH -BF78;H2 # HANGUL SYLLABLE BBWAE -BF79..BF93;H3 # HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH -BF94;H2 # HANGUL SYLLABLE BBOE -BF95..BFAF;H3 # HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH -BFB0;H2 # HANGUL SYLLABLE BBYO -BFB1..BFCB;H3 # HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH -BFCC;H2 # HANGUL SYLLABLE BBU -BFCD..BFE7;H3 # HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH -BFE8;H2 # HANGUL SYLLABLE BBWEO -BFE9..C003;H3 # HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH -C004;H2 # HANGUL SYLLABLE BBWE -C005..C01F;H3 # HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH -C020;H2 # HANGUL SYLLABLE BBWI -C021..C03B;H3 # HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH -C03C;H2 # HANGUL SYLLABLE BBYU -C03D..C057;H3 # HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH -C058;H2 # HANGUL SYLLABLE BBEU -C059..C073;H3 # HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH -C074;H2 # HANGUL SYLLABLE BBYI -C075..C08F;H3 # HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH -C090;H2 # HANGUL SYLLABLE BBI -C091..C0AB;H3 # HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH -C0AC;H2 # HANGUL SYLLABLE SA -C0AD..C0C7;H3 # HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH -C0C8;H2 # HANGUL SYLLABLE SAE -C0C9..C0E3;H3 # HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH -C0E4;H2 # HANGUL SYLLABLE SYA -C0E5..C0FF;H3 # HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH -C100;H2 # HANGUL SYLLABLE SYAE -C101..C11B;H3 # HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH -C11C;H2 # HANGUL SYLLABLE SEO -C11D..C137;H3 # HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH -C138;H2 # HANGUL SYLLABLE SE -C139..C153;H3 # HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH -C154;H2 # HANGUL SYLLABLE SYEO -C155..C16F;H3 # HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH -C170;H2 # HANGUL SYLLABLE SYE -C171..C18B;H3 # HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH -C18C;H2 # HANGUL SYLLABLE SO -C18D..C1A7;H3 # HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH -C1A8;H2 # HANGUL SYLLABLE SWA -C1A9..C1C3;H3 # HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH -C1C4;H2 # HANGUL SYLLABLE SWAE -C1C5..C1DF;H3 # HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH -C1E0;H2 # HANGUL SYLLABLE SOE -C1E1..C1FB;H3 # HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH -C1FC;H2 # HANGUL SYLLABLE SYO -C1FD..C217;H3 # HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH -C218;H2 # HANGUL SYLLABLE SU -C219..C233;H3 # HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH -C234;H2 # HANGUL SYLLABLE SWEO -C235..C24F;H3 # HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH -C250;H2 # HANGUL SYLLABLE SWE -C251..C26B;H3 # HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH -C26C;H2 # HANGUL SYLLABLE SWI -C26D..C287;H3 # HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH -C288;H2 # HANGUL SYLLABLE SYU -C289..C2A3;H3 # HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH -C2A4;H2 # HANGUL SYLLABLE SEU -C2A5..C2BF;H3 # HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH -C2C0;H2 # HANGUL SYLLABLE SYI -C2C1..C2DB;H3 # HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH -C2DC;H2 # HANGUL SYLLABLE SI -C2DD..C2F7;H3 # HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH -C2F8;H2 # HANGUL SYLLABLE SSA -C2F9..C313;H3 # HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH -C314;H2 # HANGUL SYLLABLE SSAE -C315..C32F;H3 # HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH -C330;H2 # HANGUL SYLLABLE SSYA -C331..C34B;H3 # HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH -C34C;H2 # HANGUL SYLLABLE SSYAE -C34D..C367;H3 # HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH -C368;H2 # HANGUL SYLLABLE SSEO -C369..C383;H3 # HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH -C384;H2 # HANGUL SYLLABLE SSE -C385..C39F;H3 # HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH -C3A0;H2 # HANGUL SYLLABLE SSYEO -C3A1..C3BB;H3 # HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH -C3BC;H2 # HANGUL SYLLABLE SSYE -C3BD..C3D7;H3 # HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH -C3D8;H2 # HANGUL SYLLABLE SSO -C3D9..C3F3;H3 # HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH -C3F4;H2 # HANGUL SYLLABLE SSWA -C3F5..C40F;H3 # HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH -C410;H2 # HANGUL SYLLABLE SSWAE -C411..C42B;H3 # HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH -C42C;H2 # HANGUL SYLLABLE SSOE -C42D..C447;H3 # HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH -C448;H2 # HANGUL SYLLABLE SSYO -C449..C463;H3 # HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH -C464;H2 # HANGUL SYLLABLE SSU -C465..C47F;H3 # HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH -C480;H2 # HANGUL SYLLABLE SSWEO -C481..C49B;H3 # HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH -C49C;H2 # HANGUL SYLLABLE SSWE -C49D..C4B7;H3 # HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH -C4B8;H2 # HANGUL SYLLABLE SSWI -C4B9..C4D3;H3 # HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH -C4D4;H2 # HANGUL SYLLABLE SSYU -C4D5..C4EF;H3 # HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH -C4F0;H2 # HANGUL SYLLABLE SSEU -C4F1..C50B;H3 # HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH -C50C;H2 # HANGUL SYLLABLE SSYI -C50D..C527;H3 # HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH -C528;H2 # HANGUL SYLLABLE SSI -C529..C543;H3 # HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH -C544;H2 # HANGUL SYLLABLE A -C545..C55F;H3 # HANGUL SYLLABLE AG..HANGUL SYLLABLE AH -C560;H2 # HANGUL SYLLABLE AE -C561..C57B;H3 # HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH -C57C;H2 # HANGUL SYLLABLE YA -C57D..C597;H3 # HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH -C598;H2 # HANGUL SYLLABLE YAE -C599..C5B3;H3 # HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH -C5B4;H2 # HANGUL SYLLABLE EO -C5B5..C5CF;H3 # HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH -C5D0;H2 # HANGUL SYLLABLE E -C5D1..C5EB;H3 # HANGUL SYLLABLE EG..HANGUL SYLLABLE EH -C5EC;H2 # HANGUL SYLLABLE YEO -C5ED..C607;H3 # HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH -C608;H2 # HANGUL SYLLABLE YE -C609..C623;H3 # HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH -C624;H2 # HANGUL SYLLABLE O -C625..C63F;H3 # HANGUL SYLLABLE OG..HANGUL SYLLABLE OH -C640;H2 # HANGUL SYLLABLE WA -C641..C65B;H3 # HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH -C65C;H2 # HANGUL SYLLABLE WAE -C65D..C677;H3 # HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH -C678;H2 # HANGUL SYLLABLE OE -C679..C693;H3 # HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH -C694;H2 # HANGUL SYLLABLE YO -C695..C6AF;H3 # HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH -C6B0;H2 # HANGUL SYLLABLE U -C6B1..C6CB;H3 # HANGUL SYLLABLE UG..HANGUL SYLLABLE UH -C6CC;H2 # HANGUL SYLLABLE WEO -C6CD..C6E7;H3 # HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH -C6E8;H2 # HANGUL SYLLABLE WE -C6E9..C703;H3 # HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH -C704;H2 # HANGUL SYLLABLE WI -C705..C71F;H3 # HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH -C720;H2 # HANGUL SYLLABLE YU -C721..C73B;H3 # HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH -C73C;H2 # HANGUL SYLLABLE EU -C73D..C757;H3 # HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH -C758;H2 # HANGUL SYLLABLE YI -C759..C773;H3 # HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH -C774;H2 # HANGUL SYLLABLE I -C775..C78F;H3 # HANGUL SYLLABLE IG..HANGUL SYLLABLE IH -C790;H2 # HANGUL SYLLABLE JA -C791..C7AB;H3 # HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH -C7AC;H2 # HANGUL SYLLABLE JAE -C7AD..C7C7;H3 # HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH -C7C8;H2 # HANGUL SYLLABLE JYA -C7C9..C7E3;H3 # HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH -C7E4;H2 # HANGUL SYLLABLE JYAE -C7E5..C7FF;H3 # HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH -C800;H2 # HANGUL SYLLABLE JEO -C801..C81B;H3 # HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH -C81C;H2 # HANGUL SYLLABLE JE -C81D..C837;H3 # HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH -C838;H2 # HANGUL SYLLABLE JYEO -C839..C853;H3 # HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH -C854;H2 # HANGUL SYLLABLE JYE -C855..C86F;H3 # HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH -C870;H2 # HANGUL SYLLABLE JO -C871..C88B;H3 # HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH -C88C;H2 # HANGUL SYLLABLE JWA -C88D..C8A7;H3 # HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH -C8A8;H2 # HANGUL SYLLABLE JWAE -C8A9..C8C3;H3 # HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH -C8C4;H2 # HANGUL SYLLABLE JOE -C8C5..C8DF;H3 # HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH -C8E0;H2 # HANGUL SYLLABLE JYO -C8E1..C8FB;H3 # HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH -C8FC;H2 # HANGUL SYLLABLE JU -C8FD..C917;H3 # HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH -C918;H2 # HANGUL SYLLABLE JWEO -C919..C933;H3 # HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH -C934;H2 # HANGUL SYLLABLE JWE -C935..C94F;H3 # HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH -C950;H2 # HANGUL SYLLABLE JWI -C951..C96B;H3 # HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH -C96C;H2 # HANGUL SYLLABLE JYU -C96D..C987;H3 # HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH -C988;H2 # HANGUL SYLLABLE JEU -C989..C9A3;H3 # HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH -C9A4;H2 # HANGUL SYLLABLE JYI -C9A5..C9BF;H3 # HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH -C9C0;H2 # HANGUL SYLLABLE JI -C9C1..C9DB;H3 # HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH -C9DC;H2 # HANGUL SYLLABLE JJA -C9DD..C9F7;H3 # HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH -C9F8;H2 # HANGUL SYLLABLE JJAE -C9F9..CA13;H3 # HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH -CA14;H2 # HANGUL SYLLABLE JJYA -CA15..CA2F;H3 # HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH -CA30;H2 # HANGUL SYLLABLE JJYAE -CA31..CA4B;H3 # HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH -CA4C;H2 # HANGUL SYLLABLE JJEO -CA4D..CA67;H3 # HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH -CA68;H2 # HANGUL SYLLABLE JJE -CA69..CA83;H3 # HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH -CA84;H2 # HANGUL SYLLABLE JJYEO -CA85..CA9F;H3 # HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH -CAA0;H2 # HANGUL SYLLABLE JJYE -CAA1..CABB;H3 # HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH -CABC;H2 # HANGUL SYLLABLE JJO -CABD..CAD7;H3 # HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH -CAD8;H2 # HANGUL SYLLABLE JJWA -CAD9..CAF3;H3 # HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH -CAF4;H2 # HANGUL SYLLABLE JJWAE -CAF5..CB0F;H3 # HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH -CB10;H2 # HANGUL SYLLABLE JJOE -CB11..CB2B;H3 # HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH -CB2C;H2 # HANGUL SYLLABLE JJYO -CB2D..CB47;H3 # HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH -CB48;H2 # HANGUL SYLLABLE JJU -CB49..CB63;H3 # HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH -CB64;H2 # HANGUL SYLLABLE JJWEO -CB65..CB7F;H3 # HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH -CB80;H2 # HANGUL SYLLABLE JJWE -CB81..CB9B;H3 # HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH -CB9C;H2 # HANGUL SYLLABLE JJWI -CB9D..CBB7;H3 # HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH -CBB8;H2 # HANGUL SYLLABLE JJYU -CBB9..CBD3;H3 # HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH -CBD4;H2 # HANGUL SYLLABLE JJEU -CBD5..CBEF;H3 # HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH -CBF0;H2 # HANGUL SYLLABLE JJYI -CBF1..CC0B;H3 # HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH -CC0C;H2 # HANGUL SYLLABLE JJI -CC0D..CC27;H3 # HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH -CC28;H2 # HANGUL SYLLABLE CA -CC29..CC43;H3 # HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH -CC44;H2 # HANGUL SYLLABLE CAE -CC45..CC5F;H3 # HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH -CC60;H2 # HANGUL SYLLABLE CYA -CC61..CC7B;H3 # HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH -CC7C;H2 # HANGUL SYLLABLE CYAE -CC7D..CC97;H3 # HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH -CC98;H2 # HANGUL SYLLABLE CEO -CC99..CCB3;H3 # HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH -CCB4;H2 # HANGUL SYLLABLE CE -CCB5..CCCF;H3 # HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH -CCD0;H2 # HANGUL SYLLABLE CYEO -CCD1..CCEB;H3 # HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH -CCEC;H2 # HANGUL SYLLABLE CYE -CCED..CD07;H3 # HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH -CD08;H2 # HANGUL SYLLABLE CO -CD09..CD23;H3 # HANGUL SYLLABLE COG..HANGUL SYLLABLE COH -CD24;H2 # HANGUL SYLLABLE CWA -CD25..CD3F;H3 # HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH -CD40;H2 # HANGUL SYLLABLE CWAE -CD41..CD5B;H3 # HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH -CD5C;H2 # HANGUL SYLLABLE COE -CD5D..CD77;H3 # HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH -CD78;H2 # HANGUL SYLLABLE CYO -CD79..CD93;H3 # HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH -CD94;H2 # HANGUL SYLLABLE CU -CD95..CDAF;H3 # HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH -CDB0;H2 # HANGUL SYLLABLE CWEO -CDB1..CDCB;H3 # HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH -CDCC;H2 # HANGUL SYLLABLE CWE -CDCD..CDE7;H3 # HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH -CDE8;H2 # HANGUL SYLLABLE CWI -CDE9..CE03;H3 # HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH -CE04;H2 # HANGUL SYLLABLE CYU -CE05..CE1F;H3 # HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH -CE20;H2 # HANGUL SYLLABLE CEU -CE21..CE3B;H3 # HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH -CE3C;H2 # HANGUL SYLLABLE CYI -CE3D..CE57;H3 # HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH -CE58;H2 # HANGUL SYLLABLE CI -CE59..CE73;H3 # HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH -CE74;H2 # HANGUL SYLLABLE KA -CE75..CE8F;H3 # HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH -CE90;H2 # HANGUL SYLLABLE KAE -CE91..CEAB;H3 # HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH -CEAC;H2 # HANGUL SYLLABLE KYA -CEAD..CEC7;H3 # HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH -CEC8;H2 # HANGUL SYLLABLE KYAE -CEC9..CEE3;H3 # HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH -CEE4;H2 # HANGUL SYLLABLE KEO -CEE5..CEFF;H3 # HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH -CF00;H2 # HANGUL SYLLABLE KE -CF01..CF1B;H3 # HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH -CF1C;H2 # HANGUL SYLLABLE KYEO -CF1D..CF37;H3 # HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH -CF38;H2 # HANGUL SYLLABLE KYE -CF39..CF53;H3 # HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH -CF54;H2 # HANGUL SYLLABLE KO -CF55..CF6F;H3 # HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH -CF70;H2 # HANGUL SYLLABLE KWA -CF71..CF8B;H3 # HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH -CF8C;H2 # HANGUL SYLLABLE KWAE -CF8D..CFA7;H3 # HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH -CFA8;H2 # HANGUL SYLLABLE KOE -CFA9..CFC3;H3 # HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH -CFC4;H2 # HANGUL SYLLABLE KYO -CFC5..CFDF;H3 # HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH -CFE0;H2 # HANGUL SYLLABLE KU -CFE1..CFFB;H3 # HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH -CFFC;H2 # HANGUL SYLLABLE KWEO -CFFD..D017;H3 # HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH -D018;H2 # HANGUL SYLLABLE KWE -D019..D033;H3 # HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH -D034;H2 # HANGUL SYLLABLE KWI -D035..D04F;H3 # HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH -D050;H2 # HANGUL SYLLABLE KYU -D051..D06B;H3 # HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH -D06C;H2 # HANGUL SYLLABLE KEU -D06D..D087;H3 # HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH -D088;H2 # HANGUL SYLLABLE KYI -D089..D0A3;H3 # HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH -D0A4;H2 # HANGUL SYLLABLE KI -D0A5..D0BF;H3 # HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH -D0C0;H2 # HANGUL SYLLABLE TA -D0C1..D0DB;H3 # HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH -D0DC;H2 # HANGUL SYLLABLE TAE -D0DD..D0F7;H3 # HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH -D0F8;H2 # HANGUL SYLLABLE TYA -D0F9..D113;H3 # HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH -D114;H2 # HANGUL SYLLABLE TYAE -D115..D12F;H3 # HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH -D130;H2 # HANGUL SYLLABLE TEO -D131..D14B;H3 # HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH -D14C;H2 # HANGUL SYLLABLE TE -D14D..D167;H3 # HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH -D168;H2 # HANGUL SYLLABLE TYEO -D169..D183;H3 # HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH -D184;H2 # HANGUL SYLLABLE TYE -D185..D19F;H3 # HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH -D1A0;H2 # HANGUL SYLLABLE TO -D1A1..D1BB;H3 # HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH -D1BC;H2 # HANGUL SYLLABLE TWA -D1BD..D1D7;H3 # HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH -D1D8;H2 # HANGUL SYLLABLE TWAE -D1D9..D1F3;H3 # HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH -D1F4;H2 # HANGUL SYLLABLE TOE -D1F5..D20F;H3 # HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH -D210;H2 # HANGUL SYLLABLE TYO -D211..D22B;H3 # HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH -D22C;H2 # HANGUL SYLLABLE TU -D22D..D247;H3 # HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH -D248;H2 # HANGUL SYLLABLE TWEO -D249..D263;H3 # HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH -D264;H2 # HANGUL SYLLABLE TWE -D265..D27F;H3 # HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH -D280;H2 # HANGUL SYLLABLE TWI -D281..D29B;H3 # HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH -D29C;H2 # HANGUL SYLLABLE TYU -D29D..D2B7;H3 # HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH -D2B8;H2 # HANGUL SYLLABLE TEU -D2B9..D2D3;H3 # HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH -D2D4;H2 # HANGUL SYLLABLE TYI -D2D5..D2EF;H3 # HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH -D2F0;H2 # HANGUL SYLLABLE TI -D2F1..D30B;H3 # HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH -D30C;H2 # HANGUL SYLLABLE PA -D30D..D327;H3 # HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH -D328;H2 # HANGUL SYLLABLE PAE -D329..D343;H3 # HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH -D344;H2 # HANGUL SYLLABLE PYA -D345..D35F;H3 # HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH -D360;H2 # HANGUL SYLLABLE PYAE -D361..D37B;H3 # HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH -D37C;H2 # HANGUL SYLLABLE PEO -D37D..D397;H3 # HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH -D398;H2 # HANGUL SYLLABLE PE -D399..D3B3;H3 # HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH -D3B4;H2 # HANGUL SYLLABLE PYEO -D3B5..D3CF;H3 # HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH -D3D0;H2 # HANGUL SYLLABLE PYE -D3D1..D3EB;H3 # HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH -D3EC;H2 # HANGUL SYLLABLE PO -D3ED..D407;H3 # HANGUL SYLLABLE POG..HANGUL SYLLABLE POH -D408;H2 # HANGUL SYLLABLE PWA -D409..D423;H3 # HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH -D424;H2 # HANGUL SYLLABLE PWAE -D425..D43F;H3 # HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH -D440;H2 # HANGUL SYLLABLE POE -D441..D45B;H3 # HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH -D45C;H2 # HANGUL SYLLABLE PYO -D45D..D477;H3 # HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH -D478;H2 # HANGUL SYLLABLE PU -D479..D493;H3 # HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH -D494;H2 # HANGUL SYLLABLE PWEO -D495..D4AF;H3 # HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH -D4B0;H2 # HANGUL SYLLABLE PWE -D4B1..D4CB;H3 # HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH -D4CC;H2 # HANGUL SYLLABLE PWI -D4CD..D4E7;H3 # HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH -D4E8;H2 # HANGUL SYLLABLE PYU -D4E9..D503;H3 # HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH -D504;H2 # HANGUL SYLLABLE PEU -D505..D51F;H3 # HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH -D520;H2 # HANGUL SYLLABLE PYI -D521..D53B;H3 # HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH -D53C;H2 # HANGUL SYLLABLE PI -D53D..D557;H3 # HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH -D558;H2 # HANGUL SYLLABLE HA -D559..D573;H3 # HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH -D574;H2 # HANGUL SYLLABLE HAE -D575..D58F;H3 # HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH -D590;H2 # HANGUL SYLLABLE HYA -D591..D5AB;H3 # HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH -D5AC;H2 # HANGUL SYLLABLE HYAE -D5AD..D5C7;H3 # HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH -D5C8;H2 # HANGUL SYLLABLE HEO -D5C9..D5E3;H3 # HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH -D5E4;H2 # HANGUL SYLLABLE HE -D5E5..D5FF;H3 # HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH -D600;H2 # HANGUL SYLLABLE HYEO -D601..D61B;H3 # HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH -D61C;H2 # HANGUL SYLLABLE HYE -D61D..D637;H3 # HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH -D638;H2 # HANGUL SYLLABLE HO -D639..D653;H3 # HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH -D654;H2 # HANGUL SYLLABLE HWA -D655..D66F;H3 # HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH -D670;H2 # HANGUL SYLLABLE HWAE -D671..D68B;H3 # HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH -D68C;H2 # HANGUL SYLLABLE HOE -D68D..D6A7;H3 # HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH -D6A8;H2 # HANGUL SYLLABLE HYO -D6A9..D6C3;H3 # HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH -D6C4;H2 # HANGUL SYLLABLE HU -D6C5..D6DF;H3 # HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH -D6E0;H2 # HANGUL SYLLABLE HWEO -D6E1..D6FB;H3 # HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH -D6FC;H2 # HANGUL SYLLABLE HWE -D6FD..D717;H3 # HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH -D718;H2 # HANGUL SYLLABLE HWI -D719..D733;H3 # HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH -D734;H2 # HANGUL SYLLABLE HYU -D735..D74F;H3 # HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH -D750;H2 # HANGUL SYLLABLE HEU -D751..D76B;H3 # HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH -D76C;H2 # HANGUL SYLLABLE HYI -D76D..D787;H3 # HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH -D788;H2 # HANGUL SYLLABLE HI -D789..D7A3;H3 # HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH -D800..DB7F;SG # <Non Private Use High Surrogate, First>..<Non Private Use High Surrogate, Last> -DB80..DBFF;SG # <Private Use High Surrogate, First>..<Private Use High Surrogate, Last> -DC00..DFFF;SG # <Low Surrogate, First>..<Low Surrogate, Last> -E000..F8FF;XX # <Private Use, First>..<Private Use, Last> -F900;ID # CJK COMPATIBILITY IDEOGRAPH-F900 -F901;ID # CJK COMPATIBILITY IDEOGRAPH-F901 -F902;ID # CJK COMPATIBILITY IDEOGRAPH-F902 -F903;ID # CJK COMPATIBILITY IDEOGRAPH-F903 -F904;ID # CJK COMPATIBILITY IDEOGRAPH-F904 -F905;ID # CJK COMPATIBILITY IDEOGRAPH-F905 -F906;ID # CJK COMPATIBILITY IDEOGRAPH-F906 -F907;ID # CJK COMPATIBILITY IDEOGRAPH-F907 -F908;ID # CJK COMPATIBILITY IDEOGRAPH-F908 -F909;ID # CJK COMPATIBILITY IDEOGRAPH-F909 -F90A;ID # CJK COMPATIBILITY IDEOGRAPH-F90A -F90B;ID # CJK COMPATIBILITY IDEOGRAPH-F90B -F90C;ID # CJK COMPATIBILITY IDEOGRAPH-F90C -F90D;ID # CJK COMPATIBILITY IDEOGRAPH-F90D -F90E;ID # CJK COMPATIBILITY IDEOGRAPH-F90E -F90F;ID # CJK COMPATIBILITY IDEOGRAPH-F90F -F910;ID # CJK COMPATIBILITY IDEOGRAPH-F910 -F911;ID # CJK COMPATIBILITY IDEOGRAPH-F911 -F912;ID # CJK COMPATIBILITY IDEOGRAPH-F912 -F913;ID # CJK COMPATIBILITY IDEOGRAPH-F913 -F914;ID # CJK COMPATIBILITY IDEOGRAPH-F914 -F915;ID # CJK COMPATIBILITY IDEOGRAPH-F915 -F916;ID # CJK COMPATIBILITY IDEOGRAPH-F916 -F917;ID # CJK COMPATIBILITY IDEOGRAPH-F917 -F918;ID # CJK COMPATIBILITY IDEOGRAPH-F918 -F919;ID # CJK COMPATIBILITY IDEOGRAPH-F919 -F91A;ID # CJK COMPATIBILITY IDEOGRAPH-F91A -F91B;ID # CJK COMPATIBILITY IDEOGRAPH-F91B -F91C;ID # CJK COMPATIBILITY IDEOGRAPH-F91C -F91D;ID # CJK COMPATIBILITY IDEOGRAPH-F91D -F91E;ID # CJK COMPATIBILITY IDEOGRAPH-F91E -F91F;ID # CJK COMPATIBILITY IDEOGRAPH-F91F -F920;ID # CJK COMPATIBILITY IDEOGRAPH-F920 -F921;ID # CJK COMPATIBILITY IDEOGRAPH-F921 -F922;ID # CJK COMPATIBILITY IDEOGRAPH-F922 -F923;ID # CJK COMPATIBILITY IDEOGRAPH-F923 -F924;ID # CJK COMPATIBILITY IDEOGRAPH-F924 -F925;ID # CJK COMPATIBILITY IDEOGRAPH-F925 -F926;ID # CJK COMPATIBILITY IDEOGRAPH-F926 -F927;ID # CJK COMPATIBILITY IDEOGRAPH-F927 -F928;ID # CJK COMPATIBILITY IDEOGRAPH-F928 -F929;ID # CJK COMPATIBILITY IDEOGRAPH-F929 -F92A;ID # CJK COMPATIBILITY IDEOGRAPH-F92A -F92B;ID # CJK COMPATIBILITY IDEOGRAPH-F92B -F92C;ID # CJK COMPATIBILITY IDEOGRAPH-F92C -F92D;ID # CJK COMPATIBILITY IDEOGRAPH-F92D -F92E;ID # CJK COMPATIBILITY IDEOGRAPH-F92E -F92F;ID # CJK COMPATIBILITY IDEOGRAPH-F92F -F930;ID # CJK COMPATIBILITY IDEOGRAPH-F930 -F931;ID # CJK COMPATIBILITY IDEOGRAPH-F931 -F932;ID # CJK COMPATIBILITY IDEOGRAPH-F932 -F933;ID # CJK COMPATIBILITY IDEOGRAPH-F933 -F934;ID # CJK COMPATIBILITY IDEOGRAPH-F934 -F935;ID # CJK COMPATIBILITY IDEOGRAPH-F935 -F936;ID # CJK COMPATIBILITY IDEOGRAPH-F936 -F937;ID # CJK COMPATIBILITY IDEOGRAPH-F937 -F938;ID # CJK COMPATIBILITY IDEOGRAPH-F938 -F939;ID # CJK COMPATIBILITY IDEOGRAPH-F939 -F93A;ID # CJK COMPATIBILITY IDEOGRAPH-F93A -F93B;ID # CJK COMPATIBILITY IDEOGRAPH-F93B -F93C;ID # CJK COMPATIBILITY IDEOGRAPH-F93C -F93D;ID # CJK COMPATIBILITY IDEOGRAPH-F93D -F93E;ID # CJK COMPATIBILITY IDEOGRAPH-F93E -F93F;ID # CJK COMPATIBILITY IDEOGRAPH-F93F -F940;ID # CJK COMPATIBILITY IDEOGRAPH-F940 -F941;ID # CJK COMPATIBILITY IDEOGRAPH-F941 -F942;ID # CJK COMPATIBILITY IDEOGRAPH-F942 -F943;ID # CJK COMPATIBILITY IDEOGRAPH-F943 -F944;ID # CJK COMPATIBILITY IDEOGRAPH-F944 -F945;ID # CJK COMPATIBILITY IDEOGRAPH-F945 -F946;ID # CJK COMPATIBILITY IDEOGRAPH-F946 -F947;ID # CJK COMPATIBILITY IDEOGRAPH-F947 -F948;ID # CJK COMPATIBILITY IDEOGRAPH-F948 -F949;ID # CJK COMPATIBILITY IDEOGRAPH-F949 -F94A;ID # CJK COMPATIBILITY IDEOGRAPH-F94A -F94B;ID # CJK COMPATIBILITY IDEOGRAPH-F94B -F94C;ID # CJK COMPATIBILITY IDEOGRAPH-F94C -F94D;ID # CJK COMPATIBILITY IDEOGRAPH-F94D -F94E;ID # CJK COMPATIBILITY IDEOGRAPH-F94E -F94F;ID # CJK COMPATIBILITY IDEOGRAPH-F94F -F950;ID # CJK COMPATIBILITY IDEOGRAPH-F950 -F951;ID # CJK COMPATIBILITY IDEOGRAPH-F951 -F952;ID # CJK COMPATIBILITY IDEOGRAPH-F952 -F953;ID # CJK COMPATIBILITY IDEOGRAPH-F953 -F954;ID # CJK COMPATIBILITY IDEOGRAPH-F954 -F955;ID # CJK COMPATIBILITY IDEOGRAPH-F955 -F956;ID # CJK COMPATIBILITY IDEOGRAPH-F956 -F957;ID # CJK COMPATIBILITY IDEOGRAPH-F957 -F958;ID # CJK COMPATIBILITY IDEOGRAPH-F958 -F959;ID # CJK COMPATIBILITY IDEOGRAPH-F959 -F95A;ID # CJK COMPATIBILITY IDEOGRAPH-F95A -F95B;ID # CJK COMPATIBILITY IDEOGRAPH-F95B -F95C;ID # CJK COMPATIBILITY IDEOGRAPH-F95C -F95D;ID # CJK COMPATIBILITY IDEOGRAPH-F95D -F95E;ID # CJK COMPATIBILITY IDEOGRAPH-F95E -F95F;ID # CJK COMPATIBILITY IDEOGRAPH-F95F -F960;ID # CJK COMPATIBILITY IDEOGRAPH-F960 -F961;ID # CJK COMPATIBILITY IDEOGRAPH-F961 -F962;ID # CJK COMPATIBILITY IDEOGRAPH-F962 -F963;ID # CJK COMPATIBILITY IDEOGRAPH-F963 -F964;ID # CJK COMPATIBILITY IDEOGRAPH-F964 -F965;ID # CJK COMPATIBILITY IDEOGRAPH-F965 -F966;ID # CJK COMPATIBILITY IDEOGRAPH-F966 -F967;ID # CJK COMPATIBILITY IDEOGRAPH-F967 -F968;ID # CJK COMPATIBILITY IDEOGRAPH-F968 -F969;ID # CJK COMPATIBILITY IDEOGRAPH-F969 -F96A;ID # CJK COMPATIBILITY IDEOGRAPH-F96A -F96B;ID # CJK COMPATIBILITY IDEOGRAPH-F96B -F96C;ID # CJK COMPATIBILITY IDEOGRAPH-F96C -F96D;ID # CJK COMPATIBILITY IDEOGRAPH-F96D -F96E;ID # CJK COMPATIBILITY IDEOGRAPH-F96E -F96F;ID # CJK COMPATIBILITY IDEOGRAPH-F96F -F970;ID # CJK COMPATIBILITY IDEOGRAPH-F970 -F971;ID # CJK COMPATIBILITY IDEOGRAPH-F971 -F972;ID # CJK COMPATIBILITY IDEOGRAPH-F972 -F973;ID # CJK COMPATIBILITY IDEOGRAPH-F973 -F974;ID # CJK COMPATIBILITY IDEOGRAPH-F974 -F975;ID # CJK COMPATIBILITY IDEOGRAPH-F975 -F976;ID # CJK COMPATIBILITY IDEOGRAPH-F976 -F977;ID # CJK COMPATIBILITY IDEOGRAPH-F977 -F978;ID # CJK COMPATIBILITY IDEOGRAPH-F978 -F979;ID # CJK COMPATIBILITY IDEOGRAPH-F979 -F97A;ID # CJK COMPATIBILITY IDEOGRAPH-F97A -F97B;ID # CJK COMPATIBILITY IDEOGRAPH-F97B -F97C;ID # CJK COMPATIBILITY IDEOGRAPH-F97C -F97D;ID # CJK COMPATIBILITY IDEOGRAPH-F97D -F97E;ID # CJK COMPATIBILITY IDEOGRAPH-F97E -F97F;ID # CJK COMPATIBILITY IDEOGRAPH-F97F -F980;ID # CJK COMPATIBILITY IDEOGRAPH-F980 -F981;ID # CJK COMPATIBILITY IDEOGRAPH-F981 -F982;ID # CJK COMPATIBILITY IDEOGRAPH-F982 -F983;ID # CJK COMPATIBILITY IDEOGRAPH-F983 -F984;ID # CJK COMPATIBILITY IDEOGRAPH-F984 -F985;ID # CJK COMPATIBILITY IDEOGRAPH-F985 -F986;ID # CJK COMPATIBILITY IDEOGRAPH-F986 -F987;ID # CJK COMPATIBILITY IDEOGRAPH-F987 -F988;ID # CJK COMPATIBILITY IDEOGRAPH-F988 -F989;ID # CJK COMPATIBILITY IDEOGRAPH-F989 -F98A;ID # CJK COMPATIBILITY IDEOGRAPH-F98A -F98B;ID # CJK COMPATIBILITY IDEOGRAPH-F98B -F98C;ID # CJK COMPATIBILITY IDEOGRAPH-F98C -F98D;ID # CJK COMPATIBILITY IDEOGRAPH-F98D -F98E;ID # CJK COMPATIBILITY IDEOGRAPH-F98E -F98F;ID # CJK COMPATIBILITY IDEOGRAPH-F98F -F990;ID # CJK COMPATIBILITY IDEOGRAPH-F990 -F991;ID # CJK COMPATIBILITY IDEOGRAPH-F991 -F992;ID # CJK COMPATIBILITY IDEOGRAPH-F992 -F993;ID # CJK COMPATIBILITY IDEOGRAPH-F993 -F994;ID # CJK COMPATIBILITY IDEOGRAPH-F994 -F995;ID # CJK COMPATIBILITY IDEOGRAPH-F995 -F996;ID # CJK COMPATIBILITY IDEOGRAPH-F996 -F997;ID # CJK COMPATIBILITY IDEOGRAPH-F997 -F998;ID # CJK COMPATIBILITY IDEOGRAPH-F998 -F999;ID # CJK COMPATIBILITY IDEOGRAPH-F999 -F99A;ID # CJK COMPATIBILITY IDEOGRAPH-F99A -F99B;ID # CJK COMPATIBILITY IDEOGRAPH-F99B -F99C;ID # CJK COMPATIBILITY IDEOGRAPH-F99C -F99D;ID # CJK COMPATIBILITY IDEOGRAPH-F99D -F99E;ID # CJK COMPATIBILITY IDEOGRAPH-F99E -F99F;ID # CJK COMPATIBILITY IDEOGRAPH-F99F -F9A0;ID # CJK COMPATIBILITY IDEOGRAPH-F9A0 -F9A1;ID # CJK COMPATIBILITY IDEOGRAPH-F9A1 -F9A2;ID # CJK COMPATIBILITY IDEOGRAPH-F9A2 -F9A3;ID # CJK COMPATIBILITY IDEOGRAPH-F9A3 -F9A4;ID # CJK COMPATIBILITY IDEOGRAPH-F9A4 -F9A5;ID # CJK COMPATIBILITY IDEOGRAPH-F9A5 -F9A6;ID # CJK COMPATIBILITY IDEOGRAPH-F9A6 -F9A7;ID # CJK COMPATIBILITY IDEOGRAPH-F9A7 -F9A8;ID # CJK COMPATIBILITY IDEOGRAPH-F9A8 -F9A9;ID # CJK COMPATIBILITY IDEOGRAPH-F9A9 -F9AA;ID # CJK COMPATIBILITY IDEOGRAPH-F9AA -F9AB;ID # CJK COMPATIBILITY IDEOGRAPH-F9AB -F9AC;ID # CJK COMPATIBILITY IDEOGRAPH-F9AC -F9AD;ID # CJK COMPATIBILITY IDEOGRAPH-F9AD -F9AE;ID # CJK COMPATIBILITY IDEOGRAPH-F9AE -F9AF;ID # CJK COMPATIBILITY IDEOGRAPH-F9AF -F9B0;ID # CJK COMPATIBILITY IDEOGRAPH-F9B0 -F9B1;ID # CJK COMPATIBILITY IDEOGRAPH-F9B1 -F9B2;ID # CJK COMPATIBILITY IDEOGRAPH-F9B2 -F9B3;ID # CJK COMPATIBILITY IDEOGRAPH-F9B3 -F9B4;ID # CJK COMPATIBILITY IDEOGRAPH-F9B4 -F9B5;ID # CJK COMPATIBILITY IDEOGRAPH-F9B5 -F9B6;ID # CJK COMPATIBILITY IDEOGRAPH-F9B6 -F9B7;ID # CJK COMPATIBILITY IDEOGRAPH-F9B7 -F9B8;ID # CJK COMPATIBILITY IDEOGRAPH-F9B8 -F9B9;ID # CJK COMPATIBILITY IDEOGRAPH-F9B9 -F9BA;ID # CJK COMPATIBILITY IDEOGRAPH-F9BA -F9BB;ID # CJK COMPATIBILITY IDEOGRAPH-F9BB -F9BC;ID # CJK COMPATIBILITY IDEOGRAPH-F9BC -F9BD;ID # CJK COMPATIBILITY IDEOGRAPH-F9BD -F9BE;ID # CJK COMPATIBILITY IDEOGRAPH-F9BE -F9BF;ID # CJK COMPATIBILITY IDEOGRAPH-F9BF -F9C0;ID # CJK COMPATIBILITY IDEOGRAPH-F9C0 -F9C1;ID # CJK COMPATIBILITY IDEOGRAPH-F9C1 -F9C2;ID # CJK COMPATIBILITY IDEOGRAPH-F9C2 -F9C3;ID # CJK COMPATIBILITY IDEOGRAPH-F9C3 -F9C4;ID # CJK COMPATIBILITY IDEOGRAPH-F9C4 -F9C5;ID # CJK COMPATIBILITY IDEOGRAPH-F9C5 -F9C6;ID # CJK COMPATIBILITY IDEOGRAPH-F9C6 -F9C7;ID # CJK COMPATIBILITY IDEOGRAPH-F9C7 -F9C8;ID # CJK COMPATIBILITY IDEOGRAPH-F9C8 -F9C9;ID # CJK COMPATIBILITY IDEOGRAPH-F9C9 -F9CA;ID # CJK COMPATIBILITY IDEOGRAPH-F9CA -F9CB;ID # CJK COMPATIBILITY IDEOGRAPH-F9CB -F9CC;ID # CJK COMPATIBILITY IDEOGRAPH-F9CC -F9CD;ID # CJK COMPATIBILITY IDEOGRAPH-F9CD -F9CE;ID # CJK COMPATIBILITY IDEOGRAPH-F9CE -F9CF;ID # CJK COMPATIBILITY IDEOGRAPH-F9CF -F9D0;ID # CJK COMPATIBILITY IDEOGRAPH-F9D0 -F9D1;ID # CJK COMPATIBILITY IDEOGRAPH-F9D1 -F9D2;ID # CJK COMPATIBILITY IDEOGRAPH-F9D2 -F9D3;ID # CJK COMPATIBILITY IDEOGRAPH-F9D3 -F9D4;ID # CJK COMPATIBILITY IDEOGRAPH-F9D4 -F9D5;ID # CJK COMPATIBILITY IDEOGRAPH-F9D5 -F9D6;ID # CJK COMPATIBILITY IDEOGRAPH-F9D6 -F9D7;ID # CJK COMPATIBILITY IDEOGRAPH-F9D7 -F9D8;ID # CJK COMPATIBILITY IDEOGRAPH-F9D8 -F9D9;ID # CJK COMPATIBILITY IDEOGRAPH-F9D9 -F9DA;ID # CJK COMPATIBILITY IDEOGRAPH-F9DA -F9DB;ID # CJK COMPATIBILITY IDEOGRAPH-F9DB -F9DC;ID # CJK COMPATIBILITY IDEOGRAPH-F9DC -F9DD;ID # CJK COMPATIBILITY IDEOGRAPH-F9DD -F9DE;ID # CJK COMPATIBILITY IDEOGRAPH-F9DE -F9DF;ID # CJK COMPATIBILITY IDEOGRAPH-F9DF -F9E0;ID # CJK COMPATIBILITY IDEOGRAPH-F9E0 -F9E1;ID # CJK COMPATIBILITY IDEOGRAPH-F9E1 -F9E2;ID # CJK COMPATIBILITY IDEOGRAPH-F9E2 -F9E3;ID # CJK COMPATIBILITY IDEOGRAPH-F9E3 -F9E4;ID # CJK COMPATIBILITY IDEOGRAPH-F9E4 -F9E5;ID # CJK COMPATIBILITY IDEOGRAPH-F9E5 -F9E6;ID # CJK COMPATIBILITY IDEOGRAPH-F9E6 -F9E7;ID # CJK COMPATIBILITY IDEOGRAPH-F9E7 -F9E8;ID # CJK COMPATIBILITY IDEOGRAPH-F9E8 -F9E9;ID # CJK COMPATIBILITY IDEOGRAPH-F9E9 -F9EA;ID # CJK COMPATIBILITY IDEOGRAPH-F9EA -F9EB;ID # CJK COMPATIBILITY IDEOGRAPH-F9EB -F9EC;ID # CJK COMPATIBILITY IDEOGRAPH-F9EC -F9ED;ID # CJK COMPATIBILITY IDEOGRAPH-F9ED -F9EE;ID # CJK COMPATIBILITY IDEOGRAPH-F9EE -F9EF;ID # CJK COMPATIBILITY IDEOGRAPH-F9EF -F9F0;ID # CJK COMPATIBILITY IDEOGRAPH-F9F0 -F9F1;ID # CJK COMPATIBILITY IDEOGRAPH-F9F1 -F9F2;ID # CJK COMPATIBILITY IDEOGRAPH-F9F2 -F9F3;ID # CJK COMPATIBILITY IDEOGRAPH-F9F3 -F9F4;ID # CJK COMPATIBILITY IDEOGRAPH-F9F4 -F9F5;ID # CJK COMPATIBILITY IDEOGRAPH-F9F5 -F9F6;ID # CJK COMPATIBILITY IDEOGRAPH-F9F6 -F9F7;ID # CJK COMPATIBILITY IDEOGRAPH-F9F7 -F9F8;ID # CJK COMPATIBILITY IDEOGRAPH-F9F8 -F9F9;ID # CJK COMPATIBILITY IDEOGRAPH-F9F9 -F9FA;ID # CJK COMPATIBILITY IDEOGRAPH-F9FA -F9FB;ID # CJK COMPATIBILITY IDEOGRAPH-F9FB -F9FC;ID # CJK COMPATIBILITY IDEOGRAPH-F9FC -F9FD;ID # CJK COMPATIBILITY IDEOGRAPH-F9FD -F9FE;ID # CJK COMPATIBILITY IDEOGRAPH-F9FE -F9FF;ID # CJK COMPATIBILITY IDEOGRAPH-F9FF -FA00;ID # CJK COMPATIBILITY IDEOGRAPH-FA00 -FA01;ID # CJK COMPATIBILITY IDEOGRAPH-FA01 -FA02;ID # CJK COMPATIBILITY IDEOGRAPH-FA02 -FA03;ID # CJK COMPATIBILITY IDEOGRAPH-FA03 -FA04;ID # CJK COMPATIBILITY IDEOGRAPH-FA04 -FA05;ID # CJK COMPATIBILITY IDEOGRAPH-FA05 -FA06;ID # CJK COMPATIBILITY IDEOGRAPH-FA06 -FA07;ID # CJK COMPATIBILITY IDEOGRAPH-FA07 -FA08;ID # CJK COMPATIBILITY IDEOGRAPH-FA08 -FA09;ID # CJK COMPATIBILITY IDEOGRAPH-FA09 -FA0A;ID # CJK COMPATIBILITY IDEOGRAPH-FA0A -FA0B;ID # CJK COMPATIBILITY IDEOGRAPH-FA0B -FA0C;ID # CJK COMPATIBILITY IDEOGRAPH-FA0C -FA0D;ID # CJK COMPATIBILITY IDEOGRAPH-FA0D -FA0E;ID # CJK COMPATIBILITY IDEOGRAPH-FA0E -FA0F;ID # CJK COMPATIBILITY IDEOGRAPH-FA0F -FA10;ID # CJK COMPATIBILITY IDEOGRAPH-FA10 -FA11;ID # CJK COMPATIBILITY IDEOGRAPH-FA11 -FA12;ID # CJK COMPATIBILITY IDEOGRAPH-FA12 -FA13;ID # CJK COMPATIBILITY IDEOGRAPH-FA13 -FA14;ID # CJK COMPATIBILITY IDEOGRAPH-FA14 -FA15;ID # CJK COMPATIBILITY IDEOGRAPH-FA15 -FA16;ID # CJK COMPATIBILITY IDEOGRAPH-FA16 -FA17;ID # CJK COMPATIBILITY IDEOGRAPH-FA17 -FA18;ID # CJK COMPATIBILITY IDEOGRAPH-FA18 -FA19;ID # CJK COMPATIBILITY IDEOGRAPH-FA19 -FA1A;ID # CJK COMPATIBILITY IDEOGRAPH-FA1A -FA1B;ID # CJK COMPATIBILITY IDEOGRAPH-FA1B -FA1C;ID # CJK COMPATIBILITY IDEOGRAPH-FA1C -FA1D;ID # CJK COMPATIBILITY IDEOGRAPH-FA1D -FA1E;ID # CJK COMPATIBILITY IDEOGRAPH-FA1E -FA1F;ID # CJK COMPATIBILITY IDEOGRAPH-FA1F -FA20;ID # CJK COMPATIBILITY IDEOGRAPH-FA20 -FA21;ID # CJK COMPATIBILITY IDEOGRAPH-FA21 -FA22;ID # CJK COMPATIBILITY IDEOGRAPH-FA22 -FA23;ID # CJK COMPATIBILITY IDEOGRAPH-FA23 -FA24;ID # CJK COMPATIBILITY IDEOGRAPH-FA24 -FA25;ID # CJK COMPATIBILITY IDEOGRAPH-FA25 -FA26;ID # CJK COMPATIBILITY IDEOGRAPH-FA26 -FA27;ID # CJK COMPATIBILITY IDEOGRAPH-FA27 -FA28;ID # CJK COMPATIBILITY IDEOGRAPH-FA28 -FA29;ID # CJK COMPATIBILITY IDEOGRAPH-FA29 -FA2A;ID # CJK COMPATIBILITY IDEOGRAPH-FA2A -FA2B;ID # CJK COMPATIBILITY IDEOGRAPH-FA2B -FA2C;ID # CJK COMPATIBILITY IDEOGRAPH-FA2C -FA2D;ID # CJK COMPATIBILITY IDEOGRAPH-FA2D -FA30;ID # CJK COMPATIBILITY IDEOGRAPH-FA30 -FA31;ID # CJK COMPATIBILITY IDEOGRAPH-FA31 -FA32;ID # CJK COMPATIBILITY IDEOGRAPH-FA32 -FA33;ID # CJK COMPATIBILITY IDEOGRAPH-FA33 -FA34;ID # CJK COMPATIBILITY IDEOGRAPH-FA34 -FA35;ID # CJK COMPATIBILITY IDEOGRAPH-FA35 -FA36;ID # CJK COMPATIBILITY IDEOGRAPH-FA36 -FA37;ID # CJK COMPATIBILITY IDEOGRAPH-FA37 -FA38;ID # CJK COMPATIBILITY IDEOGRAPH-FA38 -FA39;ID # CJK COMPATIBILITY IDEOGRAPH-FA39 -FA3A;ID # CJK COMPATIBILITY IDEOGRAPH-FA3A -FA3B;ID # CJK COMPATIBILITY IDEOGRAPH-FA3B -FA3C;ID # CJK COMPATIBILITY IDEOGRAPH-FA3C -FA3D;ID # CJK COMPATIBILITY IDEOGRAPH-FA3D -FA3E;ID # CJK COMPATIBILITY IDEOGRAPH-FA3E -FA3F;ID # CJK COMPATIBILITY IDEOGRAPH-FA3F -FA40;ID # CJK COMPATIBILITY IDEOGRAPH-FA40 -FA41;ID # CJK COMPATIBILITY IDEOGRAPH-FA41 -FA42;ID # CJK COMPATIBILITY IDEOGRAPH-FA42 -FA43;ID # CJK COMPATIBILITY IDEOGRAPH-FA43 -FA44;ID # CJK COMPATIBILITY IDEOGRAPH-FA44 -FA45;ID # CJK COMPATIBILITY IDEOGRAPH-FA45 -FA46;ID # CJK COMPATIBILITY IDEOGRAPH-FA46 -FA47;ID # CJK COMPATIBILITY IDEOGRAPH-FA47 -FA48;ID # CJK COMPATIBILITY IDEOGRAPH-FA48 -FA49;ID # CJK COMPATIBILITY IDEOGRAPH-FA49 -FA4A;ID # CJK COMPATIBILITY IDEOGRAPH-FA4A -FA4B;ID # CJK COMPATIBILITY IDEOGRAPH-FA4B -FA4C;ID # CJK COMPATIBILITY IDEOGRAPH-FA4C -FA4D;ID # CJK COMPATIBILITY IDEOGRAPH-FA4D -FA4E;ID # CJK COMPATIBILITY IDEOGRAPH-FA4E -FA4F;ID # CJK COMPATIBILITY IDEOGRAPH-FA4F -FA50;ID # CJK COMPATIBILITY IDEOGRAPH-FA50 -FA51;ID # CJK COMPATIBILITY IDEOGRAPH-FA51 -FA52;ID # CJK COMPATIBILITY IDEOGRAPH-FA52 -FA53;ID # CJK COMPATIBILITY IDEOGRAPH-FA53 -FA54;ID # CJK COMPATIBILITY IDEOGRAPH-FA54 -FA55;ID # CJK COMPATIBILITY IDEOGRAPH-FA55 -FA56;ID # CJK COMPATIBILITY IDEOGRAPH-FA56 -FA57;ID # CJK COMPATIBILITY IDEOGRAPH-FA57 -FA58;ID # CJK COMPATIBILITY IDEOGRAPH-FA58 -FA59;ID # CJK COMPATIBILITY IDEOGRAPH-FA59 -FA5A;ID # CJK COMPATIBILITY IDEOGRAPH-FA5A -FA5B;ID # CJK COMPATIBILITY IDEOGRAPH-FA5B -FA5C;ID # CJK COMPATIBILITY IDEOGRAPH-FA5C -FA5D;ID # CJK COMPATIBILITY IDEOGRAPH-FA5D -FA5E;ID # CJK COMPATIBILITY IDEOGRAPH-FA5E -FA5F;ID # CJK COMPATIBILITY IDEOGRAPH-FA5F -FA60;ID # CJK COMPATIBILITY IDEOGRAPH-FA60 -FA61;ID # CJK COMPATIBILITY IDEOGRAPH-FA61 -FA62;ID # CJK COMPATIBILITY IDEOGRAPH-FA62 -FA63;ID # CJK COMPATIBILITY IDEOGRAPH-FA63 -FA64;ID # CJK COMPATIBILITY IDEOGRAPH-FA64 -FA65;ID # CJK COMPATIBILITY IDEOGRAPH-FA65 -FA66;ID # CJK COMPATIBILITY IDEOGRAPH-FA66 -FA67;ID # CJK COMPATIBILITY IDEOGRAPH-FA67 -FA68;ID # CJK COMPATIBILITY IDEOGRAPH-FA68 -FA69;ID # CJK COMPATIBILITY IDEOGRAPH-FA69 -FA6A;ID # CJK COMPATIBILITY IDEOGRAPH-FA6A -FA70;ID # CJK COMPATIBILITY IDEOGRAPH-FA70 -FA71;ID # CJK COMPATIBILITY IDEOGRAPH-FA71 -FA72;ID # CJK COMPATIBILITY IDEOGRAPH-FA72 -FA73;ID # CJK COMPATIBILITY IDEOGRAPH-FA73 -FA74;ID # CJK COMPATIBILITY IDEOGRAPH-FA74 -FA75;ID # CJK COMPATIBILITY IDEOGRAPH-FA75 -FA76;ID # CJK COMPATIBILITY IDEOGRAPH-FA76 -FA77;ID # CJK COMPATIBILITY IDEOGRAPH-FA77 -FA78;ID # CJK COMPATIBILITY IDEOGRAPH-FA78 -FA79;ID # CJK COMPATIBILITY IDEOGRAPH-FA79 -FA7A;ID # CJK COMPATIBILITY IDEOGRAPH-FA7A -FA7B;ID # CJK COMPATIBILITY IDEOGRAPH-FA7B -FA7C;ID # CJK COMPATIBILITY IDEOGRAPH-FA7C -FA7D;ID # CJK COMPATIBILITY IDEOGRAPH-FA7D -FA7E;ID # CJK COMPATIBILITY IDEOGRAPH-FA7E -FA7F;ID # CJK COMPATIBILITY IDEOGRAPH-FA7F -FA80;ID # CJK COMPATIBILITY IDEOGRAPH-FA80 -FA81;ID # CJK COMPATIBILITY IDEOGRAPH-FA81 -FA82;ID # CJK COMPATIBILITY IDEOGRAPH-FA82 -FA83;ID # CJK COMPATIBILITY IDEOGRAPH-FA83 -FA84;ID # CJK COMPATIBILITY IDEOGRAPH-FA84 -FA85;ID # CJK COMPATIBILITY IDEOGRAPH-FA85 -FA86;ID # CJK COMPATIBILITY IDEOGRAPH-FA86 -FA87;ID # CJK COMPATIBILITY IDEOGRAPH-FA87 -FA88;ID # CJK COMPATIBILITY IDEOGRAPH-FA88 -FA89;ID # CJK COMPATIBILITY IDEOGRAPH-FA89 -FA8A;ID # CJK COMPATIBILITY IDEOGRAPH-FA8A -FA8B;ID # CJK COMPATIBILITY IDEOGRAPH-FA8B -FA8C;ID # CJK COMPATIBILITY IDEOGRAPH-FA8C -FA8D;ID # CJK COMPATIBILITY IDEOGRAPH-FA8D -FA8E;ID # CJK COMPATIBILITY IDEOGRAPH-FA8E -FA8F;ID # CJK COMPATIBILITY IDEOGRAPH-FA8F -FA90;ID # CJK COMPATIBILITY IDEOGRAPH-FA90 -FA91;ID # CJK COMPATIBILITY IDEOGRAPH-FA91 -FA92;ID # CJK COMPATIBILITY IDEOGRAPH-FA92 -FA93;ID # CJK COMPATIBILITY IDEOGRAPH-FA93 -FA94;ID # CJK COMPATIBILITY IDEOGRAPH-FA94 -FA95;ID # CJK COMPATIBILITY IDEOGRAPH-FA95 -FA96;ID # CJK COMPATIBILITY IDEOGRAPH-FA96 -FA97;ID # CJK COMPATIBILITY IDEOGRAPH-FA97 -FA98;ID # CJK COMPATIBILITY IDEOGRAPH-FA98 -FA99;ID # CJK COMPATIBILITY IDEOGRAPH-FA99 -FA9A;ID # CJK COMPATIBILITY IDEOGRAPH-FA9A -FA9B;ID # CJK COMPATIBILITY IDEOGRAPH-FA9B -FA9C;ID # CJK COMPATIBILITY IDEOGRAPH-FA9C -FA9D;ID # CJK COMPATIBILITY IDEOGRAPH-FA9D -FA9E;ID # CJK COMPATIBILITY IDEOGRAPH-FA9E -FA9F;ID # CJK COMPATIBILITY IDEOGRAPH-FA9F -FAA0;ID # CJK COMPATIBILITY IDEOGRAPH-FAA0 -FAA1;ID # CJK COMPATIBILITY IDEOGRAPH-FAA1 -FAA2;ID # CJK COMPATIBILITY IDEOGRAPH-FAA2 -FAA3;ID # CJK COMPATIBILITY IDEOGRAPH-FAA3 -FAA4;ID # CJK COMPATIBILITY IDEOGRAPH-FAA4 -FAA5;ID # CJK COMPATIBILITY IDEOGRAPH-FAA5 -FAA6;ID # CJK COMPATIBILITY IDEOGRAPH-FAA6 -FAA7;ID # CJK COMPATIBILITY IDEOGRAPH-FAA7 -FAA8;ID # CJK COMPATIBILITY IDEOGRAPH-FAA8 -FAA9;ID # CJK COMPATIBILITY IDEOGRAPH-FAA9 -FAAA;ID # CJK COMPATIBILITY IDEOGRAPH-FAAA -FAAB;ID # CJK COMPATIBILITY IDEOGRAPH-FAAB -FAAC;ID # CJK COMPATIBILITY IDEOGRAPH-FAAC -FAAD;ID # CJK COMPATIBILITY IDEOGRAPH-FAAD -FAAE;ID # CJK COMPATIBILITY IDEOGRAPH-FAAE -FAAF;ID # CJK COMPATIBILITY IDEOGRAPH-FAAF -FAB0;ID # CJK COMPATIBILITY IDEOGRAPH-FAB0 -FAB1;ID # CJK COMPATIBILITY IDEOGRAPH-FAB1 -FAB2;ID # CJK COMPATIBILITY IDEOGRAPH-FAB2 -FAB3;ID # CJK COMPATIBILITY IDEOGRAPH-FAB3 -FAB4;ID # CJK COMPATIBILITY IDEOGRAPH-FAB4 -FAB5;ID # CJK COMPATIBILITY IDEOGRAPH-FAB5 -FAB6;ID # CJK COMPATIBILITY IDEOGRAPH-FAB6 -FAB7;ID # CJK COMPATIBILITY IDEOGRAPH-FAB7 -FAB8;ID # CJK COMPATIBILITY IDEOGRAPH-FAB8 -FAB9;ID # CJK COMPATIBILITY IDEOGRAPH-FAB9 -FABA;ID # CJK COMPATIBILITY IDEOGRAPH-FABA -FABB;ID # CJK COMPATIBILITY IDEOGRAPH-FABB -FABC;ID # CJK COMPATIBILITY IDEOGRAPH-FABC -FABD;ID # CJK COMPATIBILITY IDEOGRAPH-FABD -FABE;ID # CJK COMPATIBILITY IDEOGRAPH-FABE -FABF;ID # CJK COMPATIBILITY IDEOGRAPH-FABF -FAC0;ID # CJK COMPATIBILITY IDEOGRAPH-FAC0 -FAC1;ID # CJK COMPATIBILITY IDEOGRAPH-FAC1 -FAC2;ID # CJK COMPATIBILITY IDEOGRAPH-FAC2 -FAC3;ID # CJK COMPATIBILITY IDEOGRAPH-FAC3 -FAC4;ID # CJK COMPATIBILITY IDEOGRAPH-FAC4 -FAC5;ID # CJK COMPATIBILITY IDEOGRAPH-FAC5 -FAC6;ID # CJK COMPATIBILITY IDEOGRAPH-FAC6 -FAC7;ID # CJK COMPATIBILITY IDEOGRAPH-FAC7 -FAC8;ID # CJK COMPATIBILITY IDEOGRAPH-FAC8 -FAC9;ID # CJK COMPATIBILITY IDEOGRAPH-FAC9 -FACA;ID # CJK COMPATIBILITY IDEOGRAPH-FACA -FACB;ID # CJK COMPATIBILITY IDEOGRAPH-FACB -FACC;ID # CJK COMPATIBILITY IDEOGRAPH-FACC -FACD;ID # CJK COMPATIBILITY IDEOGRAPH-FACD -FACE;ID # CJK COMPATIBILITY IDEOGRAPH-FACE -FACF;ID # CJK COMPATIBILITY IDEOGRAPH-FACF -FAD0;ID # CJK COMPATIBILITY IDEOGRAPH-FAD0 -FAD1;ID # CJK COMPATIBILITY IDEOGRAPH-FAD1 -FAD2;ID # CJK COMPATIBILITY IDEOGRAPH-FAD2 -FAD3;ID # CJK COMPATIBILITY IDEOGRAPH-FAD3 -FAD4;ID # CJK COMPATIBILITY IDEOGRAPH-FAD4 -FAD5;ID # CJK COMPATIBILITY IDEOGRAPH-FAD5 -FAD6;ID # CJK COMPATIBILITY IDEOGRAPH-FAD6 -FAD7;ID # CJK COMPATIBILITY IDEOGRAPH-FAD7 -FAD8;ID # CJK COMPATIBILITY IDEOGRAPH-FAD8 -FAD9;ID # CJK COMPATIBILITY IDEOGRAPH-FAD9 -FB00;AL # LATIN SMALL LIGATURE FF -FB01;AL # LATIN SMALL LIGATURE FI -FB02;AL # LATIN SMALL LIGATURE FL -FB03;AL # LATIN SMALL LIGATURE FFI -FB04;AL # LATIN SMALL LIGATURE FFL -FB05;AL # LATIN SMALL LIGATURE LONG S T -FB06;AL # LATIN SMALL LIGATURE ST -FB13;AL # ARMENIAN SMALL LIGATURE MEN NOW -FB14;AL # ARMENIAN SMALL LIGATURE MEN ECH -FB15;AL # ARMENIAN SMALL LIGATURE MEN INI -FB16;AL # ARMENIAN SMALL LIGATURE VEW NOW -FB17;AL # ARMENIAN SMALL LIGATURE MEN XEH -FB1D;AL # HEBREW LETTER YOD WITH HIRIQ -FB1E;CM # HEBREW POINT JUDEO-SPANISH VARIKA -FB1F;AL # HEBREW LIGATURE YIDDISH YOD YOD PATAH -FB20;AL # HEBREW LETTER ALTERNATIVE AYIN -FB21;AL # HEBREW LETTER WIDE ALEF -FB22;AL # HEBREW LETTER WIDE DALET -FB23;AL # HEBREW LETTER WIDE HE -FB24;AL # HEBREW LETTER WIDE KAF -FB25;AL # HEBREW LETTER WIDE LAMED -FB26;AL # HEBREW LETTER WIDE FINAL MEM -FB27;AL # HEBREW LETTER WIDE RESH -FB28;AL # HEBREW LETTER WIDE TAV -FB29;AL # HEBREW LETTER ALTERNATIVE PLUS SIGN -FB2A;AL # HEBREW LETTER SHIN WITH SHIN DOT -FB2B;AL # HEBREW LETTER SHIN WITH SIN DOT -FB2C;AL # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT -FB2D;AL # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT -FB2E;AL # HEBREW LETTER ALEF WITH PATAH -FB2F;AL # HEBREW LETTER ALEF WITH QAMATS -FB30;AL # HEBREW LETTER ALEF WITH MAPIQ -FB31;AL # HEBREW LETTER BET WITH DAGESH -FB32;AL # HEBREW LETTER GIMEL WITH DAGESH -FB33;AL # HEBREW LETTER DALET WITH DAGESH -FB34;AL # HEBREW LETTER HE WITH MAPIQ -FB35;AL # HEBREW LETTER VAV WITH DAGESH -FB36;AL # HEBREW LETTER ZAYIN WITH DAGESH -FB38;AL # HEBREW LETTER TET WITH DAGESH -FB39;AL # HEBREW LETTER YOD WITH DAGESH -FB3A;AL # HEBREW LETTER FINAL KAF WITH DAGESH -FB3B;AL # HEBREW LETTER KAF WITH DAGESH -FB3C;AL # HEBREW LETTER LAMED WITH DAGESH -FB3E;AL # HEBREW LETTER MEM WITH DAGESH -FB40;AL # HEBREW LETTER NUN WITH DAGESH -FB41;AL # HEBREW LETTER SAMEKH WITH DAGESH -FB43;AL # HEBREW LETTER FINAL PE WITH DAGESH -FB44;AL # HEBREW LETTER PE WITH DAGESH -FB46;AL # HEBREW LETTER TSADI WITH DAGESH -FB47;AL # HEBREW LETTER QOF WITH DAGESH -FB48;AL # HEBREW LETTER RESH WITH DAGESH -FB49;AL # HEBREW LETTER SHIN WITH DAGESH -FB4A;AL # HEBREW LETTER TAV WITH DAGESH -FB4B;AL # HEBREW LETTER VAV WITH HOLAM -FB4C;AL # HEBREW LETTER BET WITH RAFE -FB4D;AL # HEBREW LETTER KAF WITH RAFE -FB4E;AL # HEBREW LETTER PE WITH RAFE -FB4F;AL # HEBREW LIGATURE ALEF LAMED -FB50;AL # ARABIC LETTER ALEF WASLA ISOLATED FORM -FB51;AL # ARABIC LETTER ALEF WASLA FINAL FORM -FB52;AL # ARABIC LETTER BEEH ISOLATED FORM -FB53;AL # ARABIC LETTER BEEH FINAL FORM -FB54;AL # ARABIC LETTER BEEH INITIAL FORM -FB55;AL # ARABIC LETTER BEEH MEDIAL FORM -FB56;AL # ARABIC LETTER PEH ISOLATED FORM -FB57;AL # ARABIC LETTER PEH FINAL FORM -FB58;AL # ARABIC LETTER PEH INITIAL FORM -FB59;AL # ARABIC LETTER PEH MEDIAL FORM -FB5A;AL # ARABIC LETTER BEHEH ISOLATED FORM -FB5B;AL # ARABIC LETTER BEHEH FINAL FORM -FB5C;AL # ARABIC LETTER BEHEH INITIAL FORM -FB5D;AL # ARABIC LETTER BEHEH MEDIAL FORM -FB5E;AL # ARABIC LETTER TTEHEH ISOLATED FORM -FB5F;AL # ARABIC LETTER TTEHEH FINAL FORM -FB60;AL # ARABIC LETTER TTEHEH INITIAL FORM -FB61;AL # ARABIC LETTER TTEHEH MEDIAL FORM -FB62;AL # ARABIC LETTER TEHEH ISOLATED FORM -FB63;AL # ARABIC LETTER TEHEH FINAL FORM -FB64;AL # ARABIC LETTER TEHEH INITIAL FORM -FB65;AL # ARABIC LETTER TEHEH MEDIAL FORM -FB66;AL # ARABIC LETTER TTEH ISOLATED FORM -FB67;AL # ARABIC LETTER TTEH FINAL FORM -FB68;AL # ARABIC LETTER TTEH INITIAL FORM -FB69;AL # ARABIC LETTER TTEH MEDIAL FORM -FB6A;AL # ARABIC LETTER VEH ISOLATED FORM -FB6B;AL # ARABIC LETTER VEH FINAL FORM -FB6C;AL # ARABIC LETTER VEH INITIAL FORM -FB6D;AL # ARABIC LETTER VEH MEDIAL FORM -FB6E;AL # ARABIC LETTER PEHEH ISOLATED FORM -FB6F;AL # ARABIC LETTER PEHEH FINAL FORM -FB70;AL # ARABIC LETTER PEHEH INITIAL FORM -FB71;AL # ARABIC LETTER PEHEH MEDIAL FORM -FB72;AL # ARABIC LETTER DYEH ISOLATED FORM -FB73;AL # ARABIC LETTER DYEH FINAL FORM -FB74;AL # ARABIC LETTER DYEH INITIAL FORM -FB75;AL # ARABIC LETTER DYEH MEDIAL FORM -FB76;AL # ARABIC LETTER NYEH ISOLATED FORM -FB77;AL # ARABIC LETTER NYEH FINAL FORM -FB78;AL # ARABIC LETTER NYEH INITIAL FORM -FB79;AL # ARABIC LETTER NYEH MEDIAL FORM -FB7A;AL # ARABIC LETTER TCHEH ISOLATED FORM -FB7B;AL # ARABIC LETTER TCHEH FINAL FORM -FB7C;AL # ARABIC LETTER TCHEH INITIAL FORM -FB7D;AL # ARABIC LETTER TCHEH MEDIAL FORM -FB7E;AL # ARABIC LETTER TCHEHEH ISOLATED FORM -FB7F;AL # ARABIC LETTER TCHEHEH FINAL FORM -FB80;AL # ARABIC LETTER TCHEHEH INITIAL FORM -FB81;AL # ARABIC LETTER TCHEHEH MEDIAL FORM -FB82;AL # ARABIC LETTER DDAHAL ISOLATED FORM -FB83;AL # ARABIC LETTER DDAHAL FINAL FORM -FB84;AL # ARABIC LETTER DAHAL ISOLATED FORM -FB85;AL # ARABIC LETTER DAHAL FINAL FORM -FB86;AL # ARABIC LETTER DUL ISOLATED FORM -FB87;AL # ARABIC LETTER DUL FINAL FORM -FB88;AL # ARABIC LETTER DDAL ISOLATED FORM -FB89;AL # ARABIC LETTER DDAL FINAL FORM -FB8A;AL # ARABIC LETTER JEH ISOLATED FORM -FB8B;AL # ARABIC LETTER JEH FINAL FORM -FB8C;AL # ARABIC LETTER RREH ISOLATED FORM -FB8D;AL # ARABIC LETTER RREH FINAL FORM -FB8E;AL # ARABIC LETTER KEHEH ISOLATED FORM -FB8F;AL # ARABIC LETTER KEHEH FINAL FORM -FB90;AL # ARABIC LETTER KEHEH INITIAL FORM -FB91;AL # ARABIC LETTER KEHEH MEDIAL FORM -FB92;AL # ARABIC LETTER GAF ISOLATED FORM -FB93;AL # ARABIC LETTER GAF FINAL FORM -FB94;AL # ARABIC LETTER GAF INITIAL FORM -FB95;AL # ARABIC LETTER GAF MEDIAL FORM -FB96;AL # ARABIC LETTER GUEH ISOLATED FORM -FB97;AL # ARABIC LETTER GUEH FINAL FORM -FB98;AL # ARABIC LETTER GUEH INITIAL FORM -FB99;AL # ARABIC LETTER GUEH MEDIAL FORM -FB9A;AL # ARABIC LETTER NGOEH ISOLATED FORM -FB9B;AL # ARABIC LETTER NGOEH FINAL FORM -FB9C;AL # ARABIC LETTER NGOEH INITIAL FORM -FB9D;AL # ARABIC LETTER NGOEH MEDIAL FORM -FB9E;AL # ARABIC LETTER NOON GHUNNA ISOLATED FORM -FB9F;AL # ARABIC LETTER NOON GHUNNA FINAL FORM -FBA0;AL # ARABIC LETTER RNOON ISOLATED FORM -FBA1;AL # ARABIC LETTER RNOON FINAL FORM -FBA2;AL # ARABIC LETTER RNOON INITIAL FORM -FBA3;AL # ARABIC LETTER RNOON MEDIAL FORM -FBA4;AL # ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM -FBA5;AL # ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM -FBA6;AL # ARABIC LETTER HEH GOAL ISOLATED FORM -FBA7;AL # ARABIC LETTER HEH GOAL FINAL FORM -FBA8;AL # ARABIC LETTER HEH GOAL INITIAL FORM -FBA9;AL # ARABIC LETTER HEH GOAL MEDIAL FORM -FBAA;AL # ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM -FBAB;AL # ARABIC LETTER HEH DOACHASHMEE FINAL FORM -FBAC;AL # ARABIC LETTER HEH DOACHASHMEE INITIAL FORM -FBAD;AL # ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM -FBAE;AL # ARABIC LETTER YEH BARREE ISOLATED FORM -FBAF;AL # ARABIC LETTER YEH BARREE FINAL FORM -FBB0;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM -FBB1;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM -FBD3;AL # ARABIC LETTER NG ISOLATED FORM -FBD4;AL # ARABIC LETTER NG FINAL FORM -FBD5;AL # ARABIC LETTER NG INITIAL FORM -FBD6;AL # ARABIC LETTER NG MEDIAL FORM -FBD7;AL # ARABIC LETTER U ISOLATED FORM -FBD8;AL # ARABIC LETTER U FINAL FORM -FBD9;AL # ARABIC LETTER OE ISOLATED FORM -FBDA;AL # ARABIC LETTER OE FINAL FORM -FBDB;AL # ARABIC LETTER YU ISOLATED FORM -FBDC;AL # ARABIC LETTER YU FINAL FORM -FBDD;AL # ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM -FBDE;AL # ARABIC LETTER VE ISOLATED FORM -FBDF;AL # ARABIC LETTER VE FINAL FORM -FBE0;AL # ARABIC LETTER KIRGHIZ OE ISOLATED FORM -FBE1;AL # ARABIC LETTER KIRGHIZ OE FINAL FORM -FBE2;AL # ARABIC LETTER KIRGHIZ YU ISOLATED FORM -FBE3;AL # ARABIC LETTER KIRGHIZ YU FINAL FORM -FBE4;AL # ARABIC LETTER E ISOLATED FORM -FBE5;AL # ARABIC LETTER E FINAL FORM -FBE6;AL # ARABIC LETTER E INITIAL FORM -FBE7;AL # ARABIC LETTER E MEDIAL FORM -FBE8;AL # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM -FBE9;AL # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM -FBEA;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM -FBEB;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM -FBEC;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM -FBED;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM -FBEE;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM -FBEF;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM -FBF0;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM -FBF1;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM -FBF2;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM -FBF3;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM -FBF4;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM -FBF5;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM -FBF6;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM -FBF7;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM -FBF8;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM -FBF9;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM -FBFA;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM -FBFB;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM -FBFC;AL # ARABIC LETTER FARSI YEH ISOLATED FORM -FBFD;AL # ARABIC LETTER FARSI YEH FINAL FORM -FBFE;AL # ARABIC LETTER FARSI YEH INITIAL FORM -FBFF;AL # ARABIC LETTER FARSI YEH MEDIAL FORM -FC00;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM -FC01;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM -FC02;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM -FC03;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM -FC04;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM -FC05;AL # ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM -FC06;AL # ARABIC LIGATURE BEH WITH HAH ISOLATED FORM -FC07;AL # ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM -FC08;AL # ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM -FC09;AL # ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM -FC0A;AL # ARABIC LIGATURE BEH WITH YEH ISOLATED FORM -FC0B;AL # ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM -FC0C;AL # ARABIC LIGATURE TEH WITH HAH ISOLATED FORM -FC0D;AL # ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM -FC0E;AL # ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM -FC0F;AL # ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM -FC10;AL # ARABIC LIGATURE TEH WITH YEH ISOLATED FORM -FC11;AL # ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM -FC12;AL # ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM -FC13;AL # ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM -FC14;AL # ARABIC LIGATURE THEH WITH YEH ISOLATED FORM -FC15;AL # ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM -FC16;AL # ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM -FC17;AL # ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM -FC18;AL # ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM -FC19;AL # ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM -FC1A;AL # ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM -FC1B;AL # ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM -FC1C;AL # ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM -FC1D;AL # ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM -FC1E;AL # ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM -FC1F;AL # ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM -FC20;AL # ARABIC LIGATURE SAD WITH HAH ISOLATED FORM -FC21;AL # ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM -FC22;AL # ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM -FC23;AL # ARABIC LIGATURE DAD WITH HAH ISOLATED FORM -FC24;AL # ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM -FC25;AL # ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM -FC26;AL # ARABIC LIGATURE TAH WITH HAH ISOLATED FORM -FC27;AL # ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM -FC28;AL # ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM -FC29;AL # ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM -FC2A;AL # ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM -FC2B;AL # ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM -FC2C;AL # ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM -FC2D;AL # ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM -FC2E;AL # ARABIC LIGATURE FEH WITH HAH ISOLATED FORM -FC2F;AL # ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM -FC30;AL # ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM -FC31;AL # ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM -FC32;AL # ARABIC LIGATURE FEH WITH YEH ISOLATED FORM -FC33;AL # ARABIC LIGATURE QAF WITH HAH ISOLATED FORM -FC34;AL # ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM -FC35;AL # ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM -FC36;AL # ARABIC LIGATURE QAF WITH YEH ISOLATED FORM -FC37;AL # ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM -FC38;AL # ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM -FC39;AL # ARABIC LIGATURE KAF WITH HAH ISOLATED FORM -FC3A;AL # ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM -FC3B;AL # ARABIC LIGATURE KAF WITH LAM ISOLATED FORM -FC3C;AL # ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM -FC3D;AL # ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM -FC3E;AL # ARABIC LIGATURE KAF WITH YEH ISOLATED FORM -FC3F;AL # ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM -FC40;AL # ARABIC LIGATURE LAM WITH HAH ISOLATED FORM -FC41;AL # ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM -FC42;AL # ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM -FC43;AL # ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM -FC44;AL # ARABIC LIGATURE LAM WITH YEH ISOLATED FORM -FC45;AL # ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM -FC46;AL # ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM -FC47;AL # ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM -FC48;AL # ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM -FC49;AL # ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM -FC4A;AL # ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM -FC4B;AL # ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM -FC4C;AL # ARABIC LIGATURE NOON WITH HAH ISOLATED FORM -FC4D;AL # ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM -FC4E;AL # ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM -FC4F;AL # ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM -FC50;AL # ARABIC LIGATURE NOON WITH YEH ISOLATED FORM -FC51;AL # ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM -FC52;AL # ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM -FC53;AL # ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM -FC54;AL # ARABIC LIGATURE HEH WITH YEH ISOLATED FORM -FC55;AL # ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM -FC56;AL # ARABIC LIGATURE YEH WITH HAH ISOLATED FORM -FC57;AL # ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM -FC58;AL # ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM -FC59;AL # ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM -FC5A;AL # ARABIC LIGATURE YEH WITH YEH ISOLATED FORM -FC5B;AL # ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM -FC5C;AL # ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM -FC5D;AL # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM -FC5E;AL # ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM -FC5F;AL # ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM -FC60;AL # ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM -FC61;AL # ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM -FC62;AL # ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM -FC63;AL # ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM -FC64;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM -FC65;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM -FC66;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM -FC67;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM -FC68;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM -FC69;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM -FC6A;AL # ARABIC LIGATURE BEH WITH REH FINAL FORM -FC6B;AL # ARABIC LIGATURE BEH WITH ZAIN FINAL FORM -FC6C;AL # ARABIC LIGATURE BEH WITH MEEM FINAL FORM -FC6D;AL # ARABIC LIGATURE BEH WITH NOON FINAL FORM -FC6E;AL # ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM -FC6F;AL # ARABIC LIGATURE BEH WITH YEH FINAL FORM -FC70;AL # ARABIC LIGATURE TEH WITH REH FINAL FORM -FC71;AL # ARABIC LIGATURE TEH WITH ZAIN FINAL FORM -FC72;AL # ARABIC LIGATURE TEH WITH MEEM FINAL FORM -FC73;AL # ARABIC LIGATURE TEH WITH NOON FINAL FORM -FC74;AL # ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM -FC75;AL # ARABIC LIGATURE TEH WITH YEH FINAL FORM -FC76;AL # ARABIC LIGATURE THEH WITH REH FINAL FORM -FC77;AL # ARABIC LIGATURE THEH WITH ZAIN FINAL FORM -FC78;AL # ARABIC LIGATURE THEH WITH MEEM FINAL FORM -FC79;AL # ARABIC LIGATURE THEH WITH NOON FINAL FORM -FC7A;AL # ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM -FC7B;AL # ARABIC LIGATURE THEH WITH YEH FINAL FORM -FC7C;AL # ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM -FC7D;AL # ARABIC LIGATURE FEH WITH YEH FINAL FORM -FC7E;AL # ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM -FC7F;AL # ARABIC LIGATURE QAF WITH YEH FINAL FORM -FC80;AL # ARABIC LIGATURE KAF WITH ALEF FINAL FORM -FC81;AL # ARABIC LIGATURE KAF WITH LAM FINAL FORM -FC82;AL # ARABIC LIGATURE KAF WITH MEEM FINAL FORM -FC83;AL # ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM -FC84;AL # ARABIC LIGATURE KAF WITH YEH FINAL FORM -FC85;AL # ARABIC LIGATURE LAM WITH MEEM FINAL FORM -FC86;AL # ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM -FC87;AL # ARABIC LIGATURE LAM WITH YEH FINAL FORM -FC88;AL # ARABIC LIGATURE MEEM WITH ALEF FINAL FORM -FC89;AL # ARABIC LIGATURE MEEM WITH MEEM FINAL FORM -FC8A;AL # ARABIC LIGATURE NOON WITH REH FINAL FORM -FC8B;AL # ARABIC LIGATURE NOON WITH ZAIN FINAL FORM -FC8C;AL # ARABIC LIGATURE NOON WITH MEEM FINAL FORM -FC8D;AL # ARABIC LIGATURE NOON WITH NOON FINAL FORM -FC8E;AL # ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM -FC8F;AL # ARABIC LIGATURE NOON WITH YEH FINAL FORM -FC90;AL # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM -FC91;AL # ARABIC LIGATURE YEH WITH REH FINAL FORM -FC92;AL # ARABIC LIGATURE YEH WITH ZAIN FINAL FORM -FC93;AL # ARABIC LIGATURE YEH WITH MEEM FINAL FORM -FC94;AL # ARABIC LIGATURE YEH WITH NOON FINAL FORM -FC95;AL # ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM -FC96;AL # ARABIC LIGATURE YEH WITH YEH FINAL FORM -FC97;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM -FC98;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM -FC99;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM -FC9A;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM -FC9B;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM -FC9C;AL # ARABIC LIGATURE BEH WITH JEEM INITIAL FORM -FC9D;AL # ARABIC LIGATURE BEH WITH HAH INITIAL FORM -FC9E;AL # ARABIC LIGATURE BEH WITH KHAH INITIAL FORM -FC9F;AL # ARABIC LIGATURE BEH WITH MEEM INITIAL FORM -FCA0;AL # ARABIC LIGATURE BEH WITH HEH INITIAL FORM -FCA1;AL # ARABIC LIGATURE TEH WITH JEEM INITIAL FORM -FCA2;AL # ARABIC LIGATURE TEH WITH HAH INITIAL FORM -FCA3;AL # ARABIC LIGATURE TEH WITH KHAH INITIAL FORM -FCA4;AL # ARABIC LIGATURE TEH WITH MEEM INITIAL FORM -FCA5;AL # ARABIC LIGATURE TEH WITH HEH INITIAL FORM -FCA6;AL # ARABIC LIGATURE THEH WITH MEEM INITIAL FORM -FCA7;AL # ARABIC LIGATURE JEEM WITH HAH INITIAL FORM -FCA8;AL # ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM -FCA9;AL # ARABIC LIGATURE HAH WITH JEEM INITIAL FORM -FCAA;AL # ARABIC LIGATURE HAH WITH MEEM INITIAL FORM -FCAB;AL # ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM -FCAC;AL # ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM -FCAD;AL # ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM -FCAE;AL # ARABIC LIGATURE SEEN WITH HAH INITIAL FORM -FCAF;AL # ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM -FCB0;AL # ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM -FCB1;AL # ARABIC LIGATURE SAD WITH HAH INITIAL FORM -FCB2;AL # ARABIC LIGATURE SAD WITH KHAH INITIAL FORM -FCB3;AL # ARABIC LIGATURE SAD WITH MEEM INITIAL FORM -FCB4;AL # ARABIC LIGATURE DAD WITH JEEM INITIAL FORM -FCB5;AL # ARABIC LIGATURE DAD WITH HAH INITIAL FORM -FCB6;AL # ARABIC LIGATURE DAD WITH KHAH INITIAL FORM -FCB7;AL # ARABIC LIGATURE DAD WITH MEEM INITIAL FORM -FCB8;AL # ARABIC LIGATURE TAH WITH HAH INITIAL FORM -FCB9;AL # ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM -FCBA;AL # ARABIC LIGATURE AIN WITH JEEM INITIAL FORM -FCBB;AL # ARABIC LIGATURE AIN WITH MEEM INITIAL FORM -FCBC;AL # ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM -FCBD;AL # ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM -FCBE;AL # ARABIC LIGATURE FEH WITH JEEM INITIAL FORM -FCBF;AL # ARABIC LIGATURE FEH WITH HAH INITIAL FORM -FCC0;AL # ARABIC LIGATURE FEH WITH KHAH INITIAL FORM -FCC1;AL # ARABIC LIGATURE FEH WITH MEEM INITIAL FORM -FCC2;AL # ARABIC LIGATURE QAF WITH HAH INITIAL FORM -FCC3;AL # ARABIC LIGATURE QAF WITH MEEM INITIAL FORM -FCC4;AL # ARABIC LIGATURE KAF WITH JEEM INITIAL FORM -FCC5;AL # ARABIC LIGATURE KAF WITH HAH INITIAL FORM -FCC6;AL # ARABIC LIGATURE KAF WITH KHAH INITIAL FORM -FCC7;AL # ARABIC LIGATURE KAF WITH LAM INITIAL FORM -FCC8;AL # ARABIC LIGATURE KAF WITH MEEM INITIAL FORM -FCC9;AL # ARABIC LIGATURE LAM WITH JEEM INITIAL FORM -FCCA;AL # ARABIC LIGATURE LAM WITH HAH INITIAL FORM -FCCB;AL # ARABIC LIGATURE LAM WITH KHAH INITIAL FORM -FCCC;AL # ARABIC LIGATURE LAM WITH MEEM INITIAL FORM -FCCD;AL # ARABIC LIGATURE LAM WITH HEH INITIAL FORM -FCCE;AL # ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM -FCCF;AL # ARABIC LIGATURE MEEM WITH HAH INITIAL FORM -FCD0;AL # ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM -FCD1;AL # ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM -FCD2;AL # ARABIC LIGATURE NOON WITH JEEM INITIAL FORM -FCD3;AL # ARABIC LIGATURE NOON WITH HAH INITIAL FORM -FCD4;AL # ARABIC LIGATURE NOON WITH KHAH INITIAL FORM -FCD5;AL # ARABIC LIGATURE NOON WITH MEEM INITIAL FORM -FCD6;AL # ARABIC LIGATURE NOON WITH HEH INITIAL FORM -FCD7;AL # ARABIC LIGATURE HEH WITH JEEM INITIAL FORM -FCD8;AL # ARABIC LIGATURE HEH WITH MEEM INITIAL FORM -FCD9;AL # ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM -FCDA;AL # ARABIC LIGATURE YEH WITH JEEM INITIAL FORM -FCDB;AL # ARABIC LIGATURE YEH WITH HAH INITIAL FORM -FCDC;AL # ARABIC LIGATURE YEH WITH KHAH INITIAL FORM -FCDD;AL # ARABIC LIGATURE YEH WITH MEEM INITIAL FORM -FCDE;AL # ARABIC LIGATURE YEH WITH HEH INITIAL FORM -FCDF;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM -FCE0;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM -FCE1;AL # ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM -FCE2;AL # ARABIC LIGATURE BEH WITH HEH MEDIAL FORM -FCE3;AL # ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM -FCE4;AL # ARABIC LIGATURE TEH WITH HEH MEDIAL FORM -FCE5;AL # ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM -FCE6;AL # ARABIC LIGATURE THEH WITH HEH MEDIAL FORM -FCE7;AL # ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM -FCE8;AL # ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM -FCE9;AL # ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM -FCEA;AL # ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM -FCEB;AL # ARABIC LIGATURE KAF WITH LAM MEDIAL FORM -FCEC;AL # ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM -FCED;AL # ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM -FCEE;AL # ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM -FCEF;AL # ARABIC LIGATURE NOON WITH HEH MEDIAL FORM -FCF0;AL # ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM -FCF1;AL # ARABIC LIGATURE YEH WITH HEH MEDIAL FORM -FCF2;AL # ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM -FCF3;AL # ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM -FCF4;AL # ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM -FCF5;AL # ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM -FCF6;AL # ARABIC LIGATURE TAH WITH YEH ISOLATED FORM -FCF7;AL # ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM -FCF8;AL # ARABIC LIGATURE AIN WITH YEH ISOLATED FORM -FCF9;AL # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM -FCFA;AL # ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM -FCFB;AL # ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM -FCFC;AL # ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM -FCFD;AL # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM -FCFE;AL # ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM -FCFF;AL # ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM -FD00;AL # ARABIC LIGATURE HAH WITH YEH ISOLATED FORM -FD01;AL # ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM -FD02;AL # ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM -FD03;AL # ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM -FD04;AL # ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM -FD05;AL # ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM -FD06;AL # ARABIC LIGATURE SAD WITH YEH ISOLATED FORM -FD07;AL # ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM -FD08;AL # ARABIC LIGATURE DAD WITH YEH ISOLATED FORM -FD09;AL # ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM -FD0A;AL # ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM -FD0B;AL # ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM -FD0C;AL # ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM -FD0D;AL # ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM -FD0E;AL # ARABIC LIGATURE SEEN WITH REH ISOLATED FORM -FD0F;AL # ARABIC LIGATURE SAD WITH REH ISOLATED FORM -FD10;AL # ARABIC LIGATURE DAD WITH REH ISOLATED FORM -FD11;AL # ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM -FD12;AL # ARABIC LIGATURE TAH WITH YEH FINAL FORM -FD13;AL # ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM -FD14;AL # ARABIC LIGATURE AIN WITH YEH FINAL FORM -FD15;AL # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM -FD16;AL # ARABIC LIGATURE GHAIN WITH YEH FINAL FORM -FD17;AL # ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM -FD18;AL # ARABIC LIGATURE SEEN WITH YEH FINAL FORM -FD19;AL # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM -FD1A;AL # ARABIC LIGATURE SHEEN WITH YEH FINAL FORM -FD1B;AL # ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM -FD1C;AL # ARABIC LIGATURE HAH WITH YEH FINAL FORM -FD1D;AL # ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM -FD1E;AL # ARABIC LIGATURE JEEM WITH YEH FINAL FORM -FD1F;AL # ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM -FD20;AL # ARABIC LIGATURE KHAH WITH YEH FINAL FORM -FD21;AL # ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM -FD22;AL # ARABIC LIGATURE SAD WITH YEH FINAL FORM -FD23;AL # ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM -FD24;AL # ARABIC LIGATURE DAD WITH YEH FINAL FORM -FD25;AL # ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM -FD26;AL # ARABIC LIGATURE SHEEN WITH HAH FINAL FORM -FD27;AL # ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM -FD28;AL # ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM -FD29;AL # ARABIC LIGATURE SHEEN WITH REH FINAL FORM -FD2A;AL # ARABIC LIGATURE SEEN WITH REH FINAL FORM -FD2B;AL # ARABIC LIGATURE SAD WITH REH FINAL FORM -FD2C;AL # ARABIC LIGATURE DAD WITH REH FINAL FORM -FD2D;AL # ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM -FD2E;AL # ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM -FD2F;AL # ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM -FD30;AL # ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM -FD31;AL # ARABIC LIGATURE SEEN WITH HEH INITIAL FORM -FD32;AL # ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM -FD33;AL # ARABIC LIGATURE TAH WITH MEEM INITIAL FORM -FD34;AL # ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM -FD35;AL # ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM -FD36;AL # ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM -FD37;AL # ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM -FD38;AL # ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM -FD39;AL # ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM -FD3A;AL # ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM -FD3B;AL # ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM -FD3C;AL # ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM -FD3D;AL # ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM -FD3E;OP # ORNATE LEFT PARENTHESIS -FD3F;CL # ORNATE RIGHT PARENTHESIS -FD50;AL # ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM -FD51;AL # ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM -FD52;AL # ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM -FD53;AL # ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM -FD54;AL # ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM -FD55;AL # ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM -FD56;AL # ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM -FD57;AL # ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM -FD58;AL # ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM -FD59;AL # ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM -FD5A;AL # ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM -FD5B;AL # ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD5C;AL # ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM -FD5D;AL # ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM -FD5E;AL # ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM -FD5F;AL # ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM -FD60;AL # ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM -FD61;AL # ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM -FD62;AL # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM -FD63;AL # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM -FD64;AL # ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM -FD65;AL # ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM -FD66;AL # ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM -FD67;AL # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM -FD68;AL # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM -FD69;AL # ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM -FD6A;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM -FD6B;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM -FD6C;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM -FD6D;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM -FD6E;AL # ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM -FD6F;AL # ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM -FD70;AL # ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM -FD71;AL # ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM -FD72;AL # ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM -FD73;AL # ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM -FD74;AL # ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM -FD75;AL # ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM -FD76;AL # ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM -FD77;AL # ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM -FD78;AL # ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD79;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM -FD7A;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM -FD7B;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD7C;AL # ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM -FD7D;AL # ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM -FD7E;AL # ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM -FD7F;AL # ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM -FD80;AL # ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM -FD81;AL # ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM -FD82;AL # ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM -FD83;AL # ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM -FD84;AL # ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM -FD85;AL # ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM -FD86;AL # ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM -FD87;AL # ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM -FD88;AL # ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM -FD89;AL # ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM -FD8A;AL # ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM -FD8B;AL # ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM -FD8C;AL # ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM -FD8D;AL # ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM -FD8E;AL # ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM -FD8F;AL # ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM -FD92;AL # ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM -FD93;AL # ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM -FD94;AL # ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM -FD95;AL # ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM -FD96;AL # ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM -FD97;AL # ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM -FD98;AL # ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM -FD99;AL # ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM -FD9A;AL # ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM -FD9B;AL # ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM -FD9C;AL # ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM -FD9D;AL # ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM -FD9E;AL # ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM -FD9F;AL # ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM -FDA0;AL # ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM -FDA1;AL # ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM -FDA2;AL # ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM -FDA3;AL # ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM -FDA4;AL # ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM -FDA5;AL # ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM -FDA6;AL # ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM -FDA7;AL # ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM -FDA8;AL # ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM -FDA9;AL # ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM -FDAA;AL # ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM -FDAB;AL # ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM -FDAC;AL # ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM -FDAD;AL # ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM -FDAE;AL # ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM -FDAF;AL # ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM -FDB0;AL # ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM -FDB1;AL # ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM -FDB2;AL # ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM -FDB3;AL # ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM -FDB4;AL # ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM -FDB5;AL # ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM -FDB6;AL # ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM -FDB7;AL # ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM -FDB8;AL # ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM -FDB9;AL # ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM -FDBA;AL # ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM -FDBB;AL # ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM -FDBC;AL # ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM -FDBD;AL # ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM -FDBE;AL # ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM -FDBF;AL # ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM -FDC0;AL # ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM -FDC1;AL # ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM -FDC2;AL # ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM -FDC3;AL # ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM -FDC4;AL # ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM -FDC5;AL # ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM -FDC6;AL # ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM -FDC7;AL # ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM -FDF0;AL # ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM -FDF1;AL # ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM -FDF2;AL # ARABIC LIGATURE ALLAH ISOLATED FORM -FDF3;AL # ARABIC LIGATURE AKBAR ISOLATED FORM -FDF4;AL # ARABIC LIGATURE MOHAMMAD ISOLATED FORM -FDF5;AL # ARABIC LIGATURE SALAM ISOLATED FORM -FDF6;AL # ARABIC LIGATURE RASOUL ISOLATED FORM -FDF7;AL # ARABIC LIGATURE ALAYHE ISOLATED FORM -FDF8;AL # ARABIC LIGATURE WASALLAM ISOLATED FORM -FDF9;AL # ARABIC LIGATURE SALLA ISOLATED FORM -FDFA;AL # ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM -FDFB;AL # ARABIC LIGATURE JALLAJALALOUHOU -FDFC;PO # RIAL SIGN -FDFD;AL # ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM -FE00;CM # VARIATION SELECTOR-1 -FE01;CM # VARIATION SELECTOR-2 -FE02;CM # VARIATION SELECTOR-3 -FE03;CM # VARIATION SELECTOR-4 -FE04;CM # VARIATION SELECTOR-5 -FE05;CM # VARIATION SELECTOR-6 -FE06;CM # VARIATION SELECTOR-7 -FE07;CM # VARIATION SELECTOR-8 -FE08;CM # VARIATION SELECTOR-9 -FE09;CM # VARIATION SELECTOR-10 -FE0A;CM # VARIATION SELECTOR-11 -FE0B;CM # VARIATION SELECTOR-12 -FE0C;CM # VARIATION SELECTOR-13 -FE0D;CM # VARIATION SELECTOR-14 -FE0E;CM # VARIATION SELECTOR-15 -FE0F;CM # VARIATION SELECTOR-16 -FE10;IS # PRESENTATION FORM FOR VERTICAL COMMA -FE11;CL # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA -FE12;CL # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP -FE13;IS # PRESENTATION FORM FOR VERTICAL COLON -FE14;IS # PRESENTATION FORM FOR VERTICAL SEMICOLON -FE15;EX # PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK -FE16;EX # PRESENTATION FORM FOR VERTICAL QUESTION MARK -FE17;OP # PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET -FE18;CL # PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET -FE19;IN # PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS -FE20;CM # COMBINING LIGATURE LEFT HALF -FE21;CM # COMBINING LIGATURE RIGHT HALF -FE22;CM # COMBINING DOUBLE TILDE LEFT HALF -FE23;CM # COMBINING DOUBLE TILDE RIGHT HALF -FE30;ID # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER -FE31;ID # PRESENTATION FORM FOR VERTICAL EM DASH -FE32;ID # PRESENTATION FORM FOR VERTICAL EN DASH -FE33;ID # PRESENTATION FORM FOR VERTICAL LOW LINE -FE34;ID # PRESENTATION FORM FOR VERTICAL WAVY LOW LINE -FE35;OP # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS -FE36;CL # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS -FE37;OP # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET -FE38;CL # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET -FE39;OP # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET -FE3A;CL # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET -FE3B;OP # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET -FE3C;CL # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET -FE3D;OP # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET -FE3E;CL # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET -FE3F;OP # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET -FE40;CL # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET -FE41;OP # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET -FE42;CL # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET -FE43;OP # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET -FE44;CL # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET -FE45;ID # SESAME DOT -FE46;ID # WHITE SESAME DOT -FE47;OP # PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET -FE48;CL # PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET -FE49;ID # DASHED OVERLINE -FE4A;ID # CENTRELINE OVERLINE -FE4B;ID # WAVY OVERLINE -FE4C;ID # DOUBLE WAVY OVERLINE -FE4D;ID # DASHED LOW LINE -FE4E;ID # CENTRELINE LOW LINE -FE4F;ID # WAVY LOW LINE -FE50;CL # SMALL COMMA -FE51;ID # SMALL IDEOGRAPHIC COMMA -FE52;CL # SMALL FULL STOP -FE54;NS # SMALL SEMICOLON -FE55;NS # SMALL COLON -FE56;EX # SMALL QUESTION MARK -FE57;EX # SMALL EXCLAMATION MARK -FE58;ID # SMALL EM DASH -FE59;OP # SMALL LEFT PARENTHESIS -FE5A;CL # SMALL RIGHT PARENTHESIS -FE5B;OP # SMALL LEFT CURLY BRACKET -FE5C;CL # SMALL RIGHT CURLY BRACKET -FE5D;OP # SMALL LEFT TORTOISE SHELL BRACKET -FE5E;CL # SMALL RIGHT TORTOISE SHELL BRACKET -FE5F;ID # SMALL NUMBER SIGN -FE60;ID # SMALL AMPERSAND -FE61;ID # SMALL ASTERISK -FE62;ID # SMALL PLUS SIGN -FE63;ID # SMALL HYPHEN-MINUS -FE64;ID # SMALL LESS-THAN SIGN -FE65;ID # SMALL GREATER-THAN SIGN -FE66;ID # SMALL EQUALS SIGN -FE68;ID # SMALL REVERSE SOLIDUS -FE69;PR # SMALL DOLLAR SIGN -FE6A;PO # SMALL PERCENT SIGN -FE6B;ID # SMALL COMMERCIAL AT -FE70;AL # ARABIC FATHATAN ISOLATED FORM -FE71;AL # ARABIC TATWEEL WITH FATHATAN ABOVE -FE72;AL # ARABIC DAMMATAN ISOLATED FORM -FE73;AL # ARABIC TAIL FRAGMENT -FE74;AL # ARABIC KASRATAN ISOLATED FORM -FE76;AL # ARABIC FATHA ISOLATED FORM -FE77;AL # ARABIC FATHA MEDIAL FORM -FE78;AL # ARABIC DAMMA ISOLATED FORM -FE79;AL # ARABIC DAMMA MEDIAL FORM -FE7A;AL # ARABIC KASRA ISOLATED FORM -FE7B;AL # ARABIC KASRA MEDIAL FORM -FE7C;AL # ARABIC SHADDA ISOLATED FORM -FE7D;AL # ARABIC SHADDA MEDIAL FORM -FE7E;AL # ARABIC SUKUN ISOLATED FORM -FE7F;AL # ARABIC SUKUN MEDIAL FORM -FE80;AL # ARABIC LETTER HAMZA ISOLATED FORM -FE81;AL # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM -FE82;AL # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM -FE83;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM -FE84;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM -FE85;AL # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM -FE86;AL # ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM -FE87;AL # ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM -FE88;AL # ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM -FE89;AL # ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM -FE8A;AL # ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM -FE8B;AL # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM -FE8C;AL # ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM -FE8D;AL # ARABIC LETTER ALEF ISOLATED FORM -FE8E;AL # ARABIC LETTER ALEF FINAL FORM -FE8F;AL # ARABIC LETTER BEH ISOLATED FORM -FE90;AL # ARABIC LETTER BEH FINAL FORM -FE91;AL # ARABIC LETTER BEH INITIAL FORM -FE92;AL # ARABIC LETTER BEH MEDIAL FORM -FE93;AL # ARABIC LETTER TEH MARBUTA ISOLATED FORM -FE94;AL # ARABIC LETTER TEH MARBUTA FINAL FORM -FE95;AL # ARABIC LETTER TEH ISOLATED FORM -FE96;AL # ARABIC LETTER TEH FINAL FORM -FE97;AL # ARABIC LETTER TEH INITIAL FORM -FE98;AL # ARABIC LETTER TEH MEDIAL FORM -FE99;AL # ARABIC LETTER THEH ISOLATED FORM -FE9A;AL # ARABIC LETTER THEH FINAL FORM -FE9B;AL # ARABIC LETTER THEH INITIAL FORM -FE9C;AL # ARABIC LETTER THEH MEDIAL FORM -FE9D;AL # ARABIC LETTER JEEM ISOLATED FORM -FE9E;AL # ARABIC LETTER JEEM FINAL FORM -FE9F;AL # ARABIC LETTER JEEM INITIAL FORM -FEA0;AL # ARABIC LETTER JEEM MEDIAL FORM -FEA1;AL # ARABIC LETTER HAH ISOLATED FORM -FEA2;AL # ARABIC LETTER HAH FINAL FORM -FEA3;AL # ARABIC LETTER HAH INITIAL FORM -FEA4;AL # ARABIC LETTER HAH MEDIAL FORM -FEA5;AL # ARABIC LETTER KHAH ISOLATED FORM -FEA6;AL # ARABIC LETTER KHAH FINAL FORM -FEA7;AL # ARABIC LETTER KHAH INITIAL FORM -FEA8;AL # ARABIC LETTER KHAH MEDIAL FORM -FEA9;AL # ARABIC LETTER DAL ISOLATED FORM -FEAA;AL # ARABIC LETTER DAL FINAL FORM -FEAB;AL # ARABIC LETTER THAL ISOLATED FORM -FEAC;AL # ARABIC LETTER THAL FINAL FORM -FEAD;AL # ARABIC LETTER REH ISOLATED FORM -FEAE;AL # ARABIC LETTER REH FINAL FORM -FEAF;AL # ARABIC LETTER ZAIN ISOLATED FORM -FEB0;AL # ARABIC LETTER ZAIN FINAL FORM -FEB1;AL # ARABIC LETTER SEEN ISOLATED FORM -FEB2;AL # ARABIC LETTER SEEN FINAL FORM -FEB3;AL # ARABIC LETTER SEEN INITIAL FORM -FEB4;AL # ARABIC LETTER SEEN MEDIAL FORM -FEB5;AL # ARABIC LETTER SHEEN ISOLATED FORM -FEB6;AL # ARABIC LETTER SHEEN FINAL FORM -FEB7;AL # ARABIC LETTER SHEEN INITIAL FORM -FEB8;AL # ARABIC LETTER SHEEN MEDIAL FORM -FEB9;AL # ARABIC LETTER SAD ISOLATED FORM -FEBA;AL # ARABIC LETTER SAD FINAL FORM -FEBB;AL # ARABIC LETTER SAD INITIAL FORM -FEBC;AL # ARABIC LETTER SAD MEDIAL FORM -FEBD;AL # ARABIC LETTER DAD ISOLATED FORM -FEBE;AL # ARABIC LETTER DAD FINAL FORM -FEBF;AL # ARABIC LETTER DAD INITIAL FORM -FEC0;AL # ARABIC LETTER DAD MEDIAL FORM -FEC1;AL # ARABIC LETTER TAH ISOLATED FORM -FEC2;AL # ARABIC LETTER TAH FINAL FORM -FEC3;AL # ARABIC LETTER TAH INITIAL FORM -FEC4;AL # ARABIC LETTER TAH MEDIAL FORM -FEC5;AL # ARABIC LETTER ZAH ISOLATED FORM -FEC6;AL # ARABIC LETTER ZAH FINAL FORM -FEC7;AL # ARABIC LETTER ZAH INITIAL FORM -FEC8;AL # ARABIC LETTER ZAH MEDIAL FORM -FEC9;AL # ARABIC LETTER AIN ISOLATED FORM -FECA;AL # ARABIC LETTER AIN FINAL FORM -FECB;AL # ARABIC LETTER AIN INITIAL FORM -FECC;AL # ARABIC LETTER AIN MEDIAL FORM -FECD;AL # ARABIC LETTER GHAIN ISOLATED FORM -FECE;AL # ARABIC LETTER GHAIN FINAL FORM -FECF;AL # ARABIC LETTER GHAIN INITIAL FORM -FED0;AL # ARABIC LETTER GHAIN MEDIAL FORM -FED1;AL # ARABIC LETTER FEH ISOLATED FORM -FED2;AL # ARABIC LETTER FEH FINAL FORM -FED3;AL # ARABIC LETTER FEH INITIAL FORM -FED4;AL # ARABIC LETTER FEH MEDIAL FORM -FED5;AL # ARABIC LETTER QAF ISOLATED FORM -FED6;AL # ARABIC LETTER QAF FINAL FORM -FED7;AL # ARABIC LETTER QAF INITIAL FORM -FED8;AL # ARABIC LETTER QAF MEDIAL FORM -FED9;AL # ARABIC LETTER KAF ISOLATED FORM -FEDA;AL # ARABIC LETTER KAF FINAL FORM -FEDB;AL # ARABIC LETTER KAF INITIAL FORM -FEDC;AL # ARABIC LETTER KAF MEDIAL FORM -FEDD;AL # ARABIC LETTER LAM ISOLATED FORM -FEDE;AL # ARABIC LETTER LAM FINAL FORM -FEDF;AL # ARABIC LETTER LAM INITIAL FORM -FEE0;AL # ARABIC LETTER LAM MEDIAL FORM -FEE1;AL # ARABIC LETTER MEEM ISOLATED FORM -FEE2;AL # ARABIC LETTER MEEM FINAL FORM -FEE3;AL # ARABIC LETTER MEEM INITIAL FORM -FEE4;AL # ARABIC LETTER MEEM MEDIAL FORM -FEE5;AL # ARABIC LETTER NOON ISOLATED FORM -FEE6;AL # ARABIC LETTER NOON FINAL FORM -FEE7;AL # ARABIC LETTER NOON INITIAL FORM -FEE8;AL # ARABIC LETTER NOON MEDIAL FORM -FEE9;AL # ARABIC LETTER HEH ISOLATED FORM -FEEA;AL # ARABIC LETTER HEH FINAL FORM -FEEB;AL # ARABIC LETTER HEH INITIAL FORM -FEEC;AL # ARABIC LETTER HEH MEDIAL FORM -FEED;AL # ARABIC LETTER WAW ISOLATED FORM -FEEE;AL # ARABIC LETTER WAW FINAL FORM -FEEF;AL # ARABIC LETTER ALEF MAKSURA ISOLATED FORM -FEF0;AL # ARABIC LETTER ALEF MAKSURA FINAL FORM -FEF1;AL # ARABIC LETTER YEH ISOLATED FORM -FEF2;AL # ARABIC LETTER YEH FINAL FORM -FEF3;AL # ARABIC LETTER YEH INITIAL FORM -FEF4;AL # ARABIC LETTER YEH MEDIAL FORM -FEF5;AL # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM -FEF6;AL # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM -FEF7;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM -FEF8;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM -FEF9;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM -FEFA;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM -FEFB;AL # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM -FEFC;AL # ARABIC LIGATURE LAM WITH ALEF FINAL FORM -FEFF;WJ # ZERO WIDTH NO-BREAK SPACE -FF01;EX # FULLWIDTH EXCLAMATION MARK -FF02;ID # FULLWIDTH QUOTATION MARK -FF03;ID # FULLWIDTH NUMBER SIGN -FF04;PR # FULLWIDTH DOLLAR SIGN -FF05;PO # FULLWIDTH PERCENT SIGN -FF06;ID # FULLWIDTH AMPERSAND -FF07;ID # FULLWIDTH APOSTROPHE -FF08;OP # FULLWIDTH LEFT PARENTHESIS -FF09;CL # FULLWIDTH RIGHT PARENTHESIS -FF0A;ID # FULLWIDTH ASTERISK -FF0B;ID # FULLWIDTH PLUS SIGN -FF0C;CL # FULLWIDTH COMMA -FF0D;ID # FULLWIDTH HYPHEN-MINUS -FF0E;CL # FULLWIDTH FULL STOP -FF0F;ID # FULLWIDTH SOLIDUS -FF10;ID # FULLWIDTH DIGIT ZERO -FF11;ID # FULLWIDTH DIGIT ONE -FF12;ID # FULLWIDTH DIGIT TWO -FF13;ID # FULLWIDTH DIGIT THREE -FF14;ID # FULLWIDTH DIGIT FOUR -FF15;ID # FULLWIDTH DIGIT FIVE -FF16;ID # FULLWIDTH DIGIT SIX -FF17;ID # FULLWIDTH DIGIT SEVEN -FF18;ID # FULLWIDTH DIGIT EIGHT -FF19;ID # FULLWIDTH DIGIT NINE -FF1A;NS # FULLWIDTH COLON -FF1B;NS # FULLWIDTH SEMICOLON -FF1C;ID # FULLWIDTH LESS-THAN SIGN -FF1D;ID # FULLWIDTH EQUALS SIGN -FF1E;ID # FULLWIDTH GREATER-THAN SIGN -FF1F;EX # FULLWIDTH QUESTION MARK -FF20;ID # FULLWIDTH COMMERCIAL AT -FF21;ID # FULLWIDTH LATIN CAPITAL LETTER A -FF22;ID # FULLWIDTH LATIN CAPITAL LETTER B -FF23;ID # FULLWIDTH LATIN CAPITAL LETTER C -FF24;ID # FULLWIDTH LATIN CAPITAL LETTER D -FF25;ID # FULLWIDTH LATIN CAPITAL LETTER E -FF26;ID # FULLWIDTH LATIN CAPITAL LETTER F -FF27;ID # FULLWIDTH LATIN CAPITAL LETTER G -FF28;ID # FULLWIDTH LATIN CAPITAL LETTER H -FF29;ID # FULLWIDTH LATIN CAPITAL LETTER I -FF2A;ID # FULLWIDTH LATIN CAPITAL LETTER J -FF2B;ID # FULLWIDTH LATIN CAPITAL LETTER K -FF2C;ID # FULLWIDTH LATIN CAPITAL LETTER L -FF2D;ID # FULLWIDTH LATIN CAPITAL LETTER M -FF2E;ID # FULLWIDTH LATIN CAPITAL LETTER N -FF2F;ID # FULLWIDTH LATIN CAPITAL LETTER O -FF30;ID # FULLWIDTH LATIN CAPITAL LETTER P -FF31;ID # FULLWIDTH LATIN CAPITAL LETTER Q -FF32;ID # FULLWIDTH LATIN CAPITAL LETTER R -FF33;ID # FULLWIDTH LATIN CAPITAL LETTER S -FF34;ID # FULLWIDTH LATIN CAPITAL LETTER T -FF35;ID # FULLWIDTH LATIN CAPITAL LETTER U -FF36;ID # FULLWIDTH LATIN CAPITAL LETTER V -FF37;ID # FULLWIDTH LATIN CAPITAL LETTER W -FF38;ID # FULLWIDTH LATIN CAPITAL LETTER X -FF39;ID # FULLWIDTH LATIN CAPITAL LETTER Y -FF3A;ID # FULLWIDTH LATIN CAPITAL LETTER Z -FF3B;OP # FULLWIDTH LEFT SQUARE BRACKET -FF3C;ID # FULLWIDTH REVERSE SOLIDUS -FF3D;CL # FULLWIDTH RIGHT SQUARE BRACKET -FF3E;ID # FULLWIDTH CIRCUMFLEX ACCENT -FF3F;ID # FULLWIDTH LOW LINE -FF40;ID # FULLWIDTH GRAVE ACCENT -FF41;ID # FULLWIDTH LATIN SMALL LETTER A -FF42;ID # FULLWIDTH LATIN SMALL LETTER B -FF43;ID # FULLWIDTH LATIN SMALL LETTER C -FF44;ID # FULLWIDTH LATIN SMALL LETTER D -FF45;ID # FULLWIDTH LATIN SMALL LETTER E -FF46;ID # FULLWIDTH LATIN SMALL LETTER F -FF47;ID # FULLWIDTH LATIN SMALL LETTER G -FF48;ID # FULLWIDTH LATIN SMALL LETTER H -FF49;ID # FULLWIDTH LATIN SMALL LETTER I -FF4A;ID # FULLWIDTH LATIN SMALL LETTER J -FF4B;ID # FULLWIDTH LATIN SMALL LETTER K -FF4C;ID # FULLWIDTH LATIN SMALL LETTER L -FF4D;ID # FULLWIDTH LATIN SMALL LETTER M -FF4E;ID # FULLWIDTH LATIN SMALL LETTER N -FF4F;ID # FULLWIDTH LATIN SMALL LETTER O -FF50;ID # FULLWIDTH LATIN SMALL LETTER P -FF51;ID # FULLWIDTH LATIN SMALL LETTER Q -FF52;ID # FULLWIDTH LATIN SMALL LETTER R -FF53;ID # FULLWIDTH LATIN SMALL LETTER S -FF54;ID # FULLWIDTH LATIN SMALL LETTER T -FF55;ID # FULLWIDTH LATIN SMALL LETTER U -FF56;ID # FULLWIDTH LATIN SMALL LETTER V -FF57;ID # FULLWIDTH LATIN SMALL LETTER W -FF58;ID # FULLWIDTH LATIN SMALL LETTER X -FF59;ID # FULLWIDTH LATIN SMALL LETTER Y -FF5A;ID # FULLWIDTH LATIN SMALL LETTER Z -FF5B;OP # FULLWIDTH LEFT CURLY BRACKET -FF5C;ID # FULLWIDTH VERTICAL LINE -FF5D;CL # FULLWIDTH RIGHT CURLY BRACKET -FF5E;ID # FULLWIDTH TILDE -FF5F;OP # FULLWIDTH LEFT WHITE PARENTHESIS -FF60;CL # FULLWIDTH RIGHT WHITE PARENTHESIS -FF61;CL # HALFWIDTH IDEOGRAPHIC FULL STOP -FF62;OP # HALFWIDTH LEFT CORNER BRACKET -FF63;CL # HALFWIDTH RIGHT CORNER BRACKET -FF64;CL # HALFWIDTH IDEOGRAPHIC COMMA -FF65;NS # HALFWIDTH KATAKANA MIDDLE DOT -FF66;AL # HALFWIDTH KATAKANA LETTER WO -FF67;NS # HALFWIDTH KATAKANA LETTER SMALL A -FF68;NS # HALFWIDTH KATAKANA LETTER SMALL I -FF69;NS # HALFWIDTH KATAKANA LETTER SMALL U -FF6A;NS # HALFWIDTH KATAKANA LETTER SMALL E -FF6B;NS # HALFWIDTH KATAKANA LETTER SMALL O -FF6C;NS # HALFWIDTH KATAKANA LETTER SMALL YA -FF6D;NS # HALFWIDTH KATAKANA LETTER SMALL YU -FF6E;NS # HALFWIDTH KATAKANA LETTER SMALL YO -FF6F;NS # HALFWIDTH KATAKANA LETTER SMALL TU -FF70;NS # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK -FF71;AL # HALFWIDTH KATAKANA LETTER A -FF72;AL # HALFWIDTH KATAKANA LETTER I -FF73;AL # HALFWIDTH KATAKANA LETTER U -FF74;AL # HALFWIDTH KATAKANA LETTER E -FF75;AL # HALFWIDTH KATAKANA LETTER O -FF76;AL # HALFWIDTH KATAKANA LETTER KA -FF77;AL # HALFWIDTH KATAKANA LETTER KI -FF78;AL # HALFWIDTH KATAKANA LETTER KU -FF79;AL # HALFWIDTH KATAKANA LETTER KE -FF7A;AL # HALFWIDTH KATAKANA LETTER KO -FF7B;AL # HALFWIDTH KATAKANA LETTER SA -FF7C;AL # HALFWIDTH KATAKANA LETTER SI -FF7D;AL # HALFWIDTH KATAKANA LETTER SU -FF7E;AL # HALFWIDTH KATAKANA LETTER SE -FF7F;AL # HALFWIDTH KATAKANA LETTER SO -FF80;AL # HALFWIDTH KATAKANA LETTER TA -FF81;AL # HALFWIDTH KATAKANA LETTER TI -FF82;AL # HALFWIDTH KATAKANA LETTER TU -FF83;AL # HALFWIDTH KATAKANA LETTER TE -FF84;AL # HALFWIDTH KATAKANA LETTER TO -FF85;AL # HALFWIDTH KATAKANA LETTER NA -FF86;AL # HALFWIDTH KATAKANA LETTER NI -FF87;AL # HALFWIDTH KATAKANA LETTER NU -FF88;AL # HALFWIDTH KATAKANA LETTER NE -FF89;AL # HALFWIDTH KATAKANA LETTER NO -FF8A;AL # HALFWIDTH KATAKANA LETTER HA -FF8B;AL # HALFWIDTH KATAKANA LETTER HI -FF8C;AL # HALFWIDTH KATAKANA LETTER HU -FF8D;AL # HALFWIDTH KATAKANA LETTER HE -FF8E;AL # HALFWIDTH KATAKANA LETTER HO -FF8F;AL # HALFWIDTH KATAKANA LETTER MA -FF90;AL # HALFWIDTH KATAKANA LETTER MI -FF91;AL # HALFWIDTH KATAKANA LETTER MU -FF92;AL # HALFWIDTH KATAKANA LETTER ME -FF93;AL # HALFWIDTH KATAKANA LETTER MO -FF94;AL # HALFWIDTH KATAKANA LETTER YA -FF95;AL # HALFWIDTH KATAKANA LETTER YU -FF96;AL # HALFWIDTH KATAKANA LETTER YO -FF97;AL # HALFWIDTH KATAKANA LETTER RA -FF98;AL # HALFWIDTH KATAKANA LETTER RI -FF99;AL # HALFWIDTH KATAKANA LETTER RU -FF9A;AL # HALFWIDTH KATAKANA LETTER RE -FF9B;AL # HALFWIDTH KATAKANA LETTER RO -FF9C;AL # HALFWIDTH KATAKANA LETTER WA -FF9D;AL # HALFWIDTH KATAKANA LETTER N -FF9E;NS # HALFWIDTH KATAKANA VOICED SOUND MARK -FF9F;NS # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK -FFA0;AL # HALFWIDTH HANGUL FILLER -FFA1;AL # HALFWIDTH HANGUL LETTER KIYEOK -FFA2;AL # HALFWIDTH HANGUL LETTER SSANGKIYEOK -FFA3;AL # HALFWIDTH HANGUL LETTER KIYEOK-SIOS -FFA4;AL # HALFWIDTH HANGUL LETTER NIEUN -FFA5;AL # HALFWIDTH HANGUL LETTER NIEUN-CIEUC -FFA6;AL # HALFWIDTH HANGUL LETTER NIEUN-HIEUH -FFA7;AL # HALFWIDTH HANGUL LETTER TIKEUT -FFA8;AL # HALFWIDTH HANGUL LETTER SSANGTIKEUT -FFA9;AL # HALFWIDTH HANGUL LETTER RIEUL -FFAA;AL # HALFWIDTH HANGUL LETTER RIEUL-KIYEOK -FFAB;AL # HALFWIDTH HANGUL LETTER RIEUL-MIEUM -FFAC;AL # HALFWIDTH HANGUL LETTER RIEUL-PIEUP -FFAD;AL # HALFWIDTH HANGUL LETTER RIEUL-SIOS -FFAE;AL # HALFWIDTH HANGUL LETTER RIEUL-THIEUTH -FFAF;AL # HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH -FFB0;AL # HALFWIDTH HANGUL LETTER RIEUL-HIEUH -FFB1;AL # HALFWIDTH HANGUL LETTER MIEUM -FFB2;AL # HALFWIDTH HANGUL LETTER PIEUP -FFB3;AL # HALFWIDTH HANGUL LETTER SSANGPIEUP -FFB4;AL # HALFWIDTH HANGUL LETTER PIEUP-SIOS -FFB5;AL # HALFWIDTH HANGUL LETTER SIOS -FFB6;AL # HALFWIDTH HANGUL LETTER SSANGSIOS -FFB7;AL # HALFWIDTH HANGUL LETTER IEUNG -FFB8;AL # HALFWIDTH HANGUL LETTER CIEUC -FFB9;AL # HALFWIDTH HANGUL LETTER SSANGCIEUC -FFBA;AL # HALFWIDTH HANGUL LETTER CHIEUCH -FFBB;AL # HALFWIDTH HANGUL LETTER KHIEUKH -FFBC;AL # HALFWIDTH HANGUL LETTER THIEUTH -FFBD;AL # HALFWIDTH HANGUL LETTER PHIEUPH -FFBE;AL # HALFWIDTH HANGUL LETTER HIEUH -FFC2;AL # HALFWIDTH HANGUL LETTER A -FFC3;AL # HALFWIDTH HANGUL LETTER AE -FFC4;AL # HALFWIDTH HANGUL LETTER YA -FFC5;AL # HALFWIDTH HANGUL LETTER YAE -FFC6;AL # HALFWIDTH HANGUL LETTER EO -FFC7;AL # HALFWIDTH HANGUL LETTER E -FFCA;AL # HALFWIDTH HANGUL LETTER YEO -FFCB;AL # HALFWIDTH HANGUL LETTER YE -FFCC;AL # HALFWIDTH HANGUL LETTER O -FFCD;AL # HALFWIDTH HANGUL LETTER WA -FFCE;AL # HALFWIDTH HANGUL LETTER WAE -FFCF;AL # HALFWIDTH HANGUL LETTER OE -FFD2;AL # HALFWIDTH HANGUL LETTER YO -FFD3;AL # HALFWIDTH HANGUL LETTER U -FFD4;AL # HALFWIDTH HANGUL LETTER WEO -FFD5;AL # HALFWIDTH HANGUL LETTER WE -FFD6;AL # HALFWIDTH HANGUL LETTER WI -FFD7;AL # HALFWIDTH HANGUL LETTER YU -FFDA;AL # HALFWIDTH HANGUL LETTER EU -FFDB;AL # HALFWIDTH HANGUL LETTER YI -FFDC;AL # HALFWIDTH HANGUL LETTER I -FFE0;PO # FULLWIDTH CENT SIGN -FFE1;PR # FULLWIDTH POUND SIGN -FFE2;ID # FULLWIDTH NOT SIGN -FFE3;ID # FULLWIDTH MACRON -FFE4;ID # FULLWIDTH BROKEN BAR -FFE5;PR # FULLWIDTH YEN SIGN -FFE6;PR # FULLWIDTH WON SIGN -FFE8;AL # HALFWIDTH FORMS LIGHT VERTICAL -FFE9;AL # HALFWIDTH LEFTWARDS ARROW -FFEA;AL # HALFWIDTH UPWARDS ARROW -FFEB;AL # HALFWIDTH RIGHTWARDS ARROW -FFEC;AL # HALFWIDTH DOWNWARDS ARROW -FFED;AL # HALFWIDTH BLACK SQUARE -FFEE;AL # HALFWIDTH WHITE CIRCLE -FFF9;CM # INTERLINEAR ANNOTATION ANCHOR -FFFA;CM # INTERLINEAR ANNOTATION SEPARATOR -FFFB;CM # INTERLINEAR ANNOTATION TERMINATOR -FFFC;CB # OBJECT REPLACEMENT CHARACTER -FFFD;AI # REPLACEMENT CHARACTER -10000;AL # LINEAR B SYLLABLE B008 A -10001;AL # LINEAR B SYLLABLE B038 E -10002;AL # LINEAR B SYLLABLE B028 I -10003;AL # LINEAR B SYLLABLE B061 O -10004;AL # LINEAR B SYLLABLE B010 U -10005;AL # LINEAR B SYLLABLE B001 DA -10006;AL # LINEAR B SYLLABLE B045 DE -10007;AL # LINEAR B SYLLABLE B007 DI -10008;AL # LINEAR B SYLLABLE B014 DO -10009;AL # LINEAR B SYLLABLE B051 DU -1000A;AL # LINEAR B SYLLABLE B057 JA -1000B;AL # LINEAR B SYLLABLE B046 JE -1000D;AL # LINEAR B SYLLABLE B036 JO -1000E;AL # LINEAR B SYLLABLE B065 JU -1000F;AL # LINEAR B SYLLABLE B077 KA -10010;AL # LINEAR B SYLLABLE B044 KE -10011;AL # LINEAR B SYLLABLE B067 KI -10012;AL # LINEAR B SYLLABLE B070 KO -10013;AL # LINEAR B SYLLABLE B081 KU -10014;AL # LINEAR B SYLLABLE B080 MA -10015;AL # LINEAR B SYLLABLE B013 ME -10016;AL # LINEAR B SYLLABLE B073 MI -10017;AL # LINEAR B SYLLABLE B015 MO -10018;AL # LINEAR B SYLLABLE B023 MU -10019;AL # LINEAR B SYLLABLE B006 NA -1001A;AL # LINEAR B SYLLABLE B024 NE -1001B;AL # LINEAR B SYLLABLE B030 NI -1001C;AL # LINEAR B SYLLABLE B052 NO -1001D;AL # LINEAR B SYLLABLE B055 NU -1001E;AL # LINEAR B SYLLABLE B003 PA -1001F;AL # LINEAR B SYLLABLE B072 PE -10020;AL # LINEAR B SYLLABLE B039 PI -10021;AL # LINEAR B SYLLABLE B011 PO -10022;AL # LINEAR B SYLLABLE B050 PU -10023;AL # LINEAR B SYLLABLE B016 QA -10024;AL # LINEAR B SYLLABLE B078 QE -10025;AL # LINEAR B SYLLABLE B021 QI -10026;AL # LINEAR B SYLLABLE B032 QO -10028;AL # LINEAR B SYLLABLE B060 RA -10029;AL # LINEAR B SYLLABLE B027 RE -1002A;AL # LINEAR B SYLLABLE B053 RI -1002B;AL # LINEAR B SYLLABLE B002 RO -1002C;AL # LINEAR B SYLLABLE B026 RU -1002D;AL # LINEAR B SYLLABLE B031 SA -1002E;AL # LINEAR B SYLLABLE B009 SE -1002F;AL # LINEAR B SYLLABLE B041 SI -10030;AL # LINEAR B SYLLABLE B012 SO -10031;AL # LINEAR B SYLLABLE B058 SU -10032;AL # LINEAR B SYLLABLE B059 TA -10033;AL # LINEAR B SYLLABLE B004 TE -10034;AL # LINEAR B SYLLABLE B037 TI -10035;AL # LINEAR B SYLLABLE B005 TO -10036;AL # LINEAR B SYLLABLE B069 TU -10037;AL # LINEAR B SYLLABLE B054 WA -10038;AL # LINEAR B SYLLABLE B075 WE -10039;AL # LINEAR B SYLLABLE B040 WI -1003A;AL # LINEAR B SYLLABLE B042 WO -1003C;AL # LINEAR B SYLLABLE B017 ZA -1003D;AL # LINEAR B SYLLABLE B074 ZE -1003F;AL # LINEAR B SYLLABLE B020 ZO -10040;AL # LINEAR B SYLLABLE B025 A2 -10041;AL # LINEAR B SYLLABLE B043 A3 -10042;AL # LINEAR B SYLLABLE B085 AU -10043;AL # LINEAR B SYLLABLE B071 DWE -10044;AL # LINEAR B SYLLABLE B090 DWO -10045;AL # LINEAR B SYLLABLE B048 NWA -10046;AL # LINEAR B SYLLABLE B029 PU2 -10047;AL # LINEAR B SYLLABLE B062 PTE -10048;AL # LINEAR B SYLLABLE B076 RA2 -10049;AL # LINEAR B SYLLABLE B033 RA3 -1004A;AL # LINEAR B SYLLABLE B068 RO2 -1004B;AL # LINEAR B SYLLABLE B066 TA2 -1004C;AL # LINEAR B SYLLABLE B087 TWE -1004D;AL # LINEAR B SYLLABLE B091 TWO -10050;AL # LINEAR B SYMBOL B018 -10051;AL # LINEAR B SYMBOL B019 -10052;AL # LINEAR B SYMBOL B022 -10053;AL # LINEAR B SYMBOL B034 -10054;AL # LINEAR B SYMBOL B047 -10055;AL # LINEAR B SYMBOL B049 -10056;AL # LINEAR B SYMBOL B056 -10057;AL # LINEAR B SYMBOL B063 -10058;AL # LINEAR B SYMBOL B064 -10059;AL # LINEAR B SYMBOL B079 -1005A;AL # LINEAR B SYMBOL B082 -1005B;AL # LINEAR B SYMBOL B083 -1005C;AL # LINEAR B SYMBOL B086 -1005D;AL # LINEAR B SYMBOL B089 -10080;AL # LINEAR B IDEOGRAM B100 MAN -10081;AL # LINEAR B IDEOGRAM B102 WOMAN -10082;AL # LINEAR B IDEOGRAM B104 DEER -10083;AL # LINEAR B IDEOGRAM B105 EQUID -10084;AL # LINEAR B IDEOGRAM B105F MARE -10085;AL # LINEAR B IDEOGRAM B105M STALLION -10086;AL # LINEAR B IDEOGRAM B106F EWE -10087;AL # LINEAR B IDEOGRAM B106M RAM -10088;AL # LINEAR B IDEOGRAM B107F SHE-GOAT -10089;AL # LINEAR B IDEOGRAM B107M HE-GOAT -1008A;AL # LINEAR B IDEOGRAM B108F SOW -1008B;AL # LINEAR B IDEOGRAM B108M BOAR -1008C;AL # LINEAR B IDEOGRAM B109F COW -1008D;AL # LINEAR B IDEOGRAM B109M BULL -1008E;AL # LINEAR B IDEOGRAM B120 WHEAT -1008F;AL # LINEAR B IDEOGRAM B121 BARLEY -10090;AL # LINEAR B IDEOGRAM B122 OLIVE -10091;AL # LINEAR B IDEOGRAM B123 SPICE -10092;AL # LINEAR B IDEOGRAM B125 CYPERUS -10093;AL # LINEAR B MONOGRAM B127 KAPO -10094;AL # LINEAR B MONOGRAM B128 KANAKO -10095;AL # LINEAR B IDEOGRAM B130 OIL -10096;AL # LINEAR B IDEOGRAM B131 WINE -10097;AL # LINEAR B IDEOGRAM B132 -10098;AL # LINEAR B MONOGRAM B133 AREPA -10099;AL # LINEAR B MONOGRAM B135 MERI -1009A;AL # LINEAR B IDEOGRAM B140 BRONZE -1009B;AL # LINEAR B IDEOGRAM B141 GOLD -1009C;AL # LINEAR B IDEOGRAM B142 -1009D;AL # LINEAR B IDEOGRAM B145 WOOL -1009E;AL # LINEAR B IDEOGRAM B146 -1009F;AL # LINEAR B IDEOGRAM B150 -100A0;AL # LINEAR B IDEOGRAM B151 HORN -100A1;AL # LINEAR B IDEOGRAM B152 -100A2;AL # LINEAR B IDEOGRAM B153 -100A3;AL # LINEAR B IDEOGRAM B154 -100A4;AL # LINEAR B MONOGRAM B156 TURO2 -100A5;AL # LINEAR B IDEOGRAM B157 -100A6;AL # LINEAR B IDEOGRAM B158 -100A7;AL # LINEAR B IDEOGRAM B159 CLOTH -100A8;AL # LINEAR B IDEOGRAM B160 -100A9;AL # LINEAR B IDEOGRAM B161 -100AA;AL # LINEAR B IDEOGRAM B162 GARMENT -100AB;AL # LINEAR B IDEOGRAM B163 ARMOUR -100AC;AL # LINEAR B IDEOGRAM B164 -100AD;AL # LINEAR B IDEOGRAM B165 -100AE;AL # LINEAR B IDEOGRAM B166 -100AF;AL # LINEAR B IDEOGRAM B167 -100B0;AL # LINEAR B IDEOGRAM B168 -100B1;AL # LINEAR B IDEOGRAM B169 -100B2;AL # LINEAR B IDEOGRAM B170 -100B3;AL # LINEAR B IDEOGRAM B171 -100B4;AL # LINEAR B IDEOGRAM B172 -100B5;AL # LINEAR B IDEOGRAM B173 MONTH -100B6;AL # LINEAR B IDEOGRAM B174 -100B7;AL # LINEAR B IDEOGRAM B176 TREE -100B8;AL # LINEAR B IDEOGRAM B177 -100B9;AL # LINEAR B IDEOGRAM B178 -100BA;AL # LINEAR B IDEOGRAM B179 -100BB;AL # LINEAR B IDEOGRAM B180 -100BC;AL # LINEAR B IDEOGRAM B181 -100BD;AL # LINEAR B IDEOGRAM B182 -100BE;AL # LINEAR B IDEOGRAM B183 -100BF;AL # LINEAR B IDEOGRAM B184 -100C0;AL # LINEAR B IDEOGRAM B185 -100C1;AL # LINEAR B IDEOGRAM B189 -100C2;AL # LINEAR B IDEOGRAM B190 -100C3;AL # LINEAR B IDEOGRAM B191 HELMET -100C4;AL # LINEAR B IDEOGRAM B220 FOOTSTOOL -100C5;AL # LINEAR B IDEOGRAM B225 BATHTUB -100C6;AL # LINEAR B IDEOGRAM B230 SPEAR -100C7;AL # LINEAR B IDEOGRAM B231 ARROW -100C8;AL # LINEAR B IDEOGRAM B232 -100C9;AL # LINEAR B IDEOGRAM B233 SWORD -100CA;AL # LINEAR B IDEOGRAM B234 -100CB;AL # LINEAR B IDEOGRAM B236 -100CC;AL # LINEAR B IDEOGRAM B240 WHEELED CHARIOT -100CD;AL # LINEAR B IDEOGRAM B241 CHARIOT -100CE;AL # LINEAR B IDEOGRAM B242 CHARIOT FRAME -100CF;AL # LINEAR B IDEOGRAM B243 WHEEL -100D0;AL # LINEAR B IDEOGRAM B245 -100D1;AL # LINEAR B IDEOGRAM B246 -100D2;AL # LINEAR B MONOGRAM B247 DIPTE -100D3;AL # LINEAR B IDEOGRAM B248 -100D4;AL # LINEAR B IDEOGRAM B249 -100D5;AL # LINEAR B IDEOGRAM B251 -100D6;AL # LINEAR B IDEOGRAM B252 -100D7;AL # LINEAR B IDEOGRAM B253 -100D8;AL # LINEAR B IDEOGRAM B254 DART -100D9;AL # LINEAR B IDEOGRAM B255 -100DA;AL # LINEAR B IDEOGRAM B256 -100DB;AL # LINEAR B IDEOGRAM B257 -100DC;AL # LINEAR B IDEOGRAM B258 -100DD;AL # LINEAR B IDEOGRAM B259 -100DE;AL # LINEAR B IDEOGRAM VESSEL B155 -100DF;AL # LINEAR B IDEOGRAM VESSEL B200 -100E0;AL # LINEAR B IDEOGRAM VESSEL B201 -100E1;AL # LINEAR B IDEOGRAM VESSEL B202 -100E2;AL # LINEAR B IDEOGRAM VESSEL B203 -100E3;AL # LINEAR B IDEOGRAM VESSEL B204 -100E4;AL # LINEAR B IDEOGRAM VESSEL B205 -100E5;AL # LINEAR B IDEOGRAM VESSEL B206 -100E6;AL # LINEAR B IDEOGRAM VESSEL B207 -100E7;AL # LINEAR B IDEOGRAM VESSEL B208 -100E8;AL # LINEAR B IDEOGRAM VESSEL B209 -100E9;AL # LINEAR B IDEOGRAM VESSEL B210 -100EA;AL # LINEAR B IDEOGRAM VESSEL B211 -100EB;AL # LINEAR B IDEOGRAM VESSEL B212 -100EC;AL # LINEAR B IDEOGRAM VESSEL B213 -100ED;AL # LINEAR B IDEOGRAM VESSEL B214 -100EE;AL # LINEAR B IDEOGRAM VESSEL B215 -100EF;AL # LINEAR B IDEOGRAM VESSEL B216 -100F0;AL # LINEAR B IDEOGRAM VESSEL B217 -100F1;AL # LINEAR B IDEOGRAM VESSEL B218 -100F2;AL # LINEAR B IDEOGRAM VESSEL B219 -100F3;AL # LINEAR B IDEOGRAM VESSEL B221 -100F4;AL # LINEAR B IDEOGRAM VESSEL B222 -100F5;AL # LINEAR B IDEOGRAM VESSEL B226 -100F6;AL # LINEAR B IDEOGRAM VESSEL B227 -100F7;AL # LINEAR B IDEOGRAM VESSEL B228 -100F8;AL # LINEAR B IDEOGRAM VESSEL B229 -100F9;AL # LINEAR B IDEOGRAM VESSEL B250 -100FA;AL # LINEAR B IDEOGRAM VESSEL B305 -10100;BA # AEGEAN WORD SEPARATOR LINE -10101;BA # AEGEAN WORD SEPARATOR DOT -10102;BA # AEGEAN CHECK MARK -10107;AL # AEGEAN NUMBER ONE -10108;AL # AEGEAN NUMBER TWO -10109;AL # AEGEAN NUMBER THREE -1010A;AL # AEGEAN NUMBER FOUR -1010B;AL # AEGEAN NUMBER FIVE -1010C;AL # AEGEAN NUMBER SIX -1010D;AL # AEGEAN NUMBER SEVEN -1010E;AL # AEGEAN NUMBER EIGHT -1010F;AL # AEGEAN NUMBER NINE -10110;AL # AEGEAN NUMBER TEN -10111;AL # AEGEAN NUMBER TWENTY -10112;AL # AEGEAN NUMBER THIRTY -10113;AL # AEGEAN NUMBER FORTY -10114;AL # AEGEAN NUMBER FIFTY -10115;AL # AEGEAN NUMBER SIXTY -10116;AL # AEGEAN NUMBER SEVENTY -10117;AL # AEGEAN NUMBER EIGHTY -10118;AL # AEGEAN NUMBER NINETY -10119;AL # AEGEAN NUMBER ONE HUNDRED -1011A;AL # AEGEAN NUMBER TWO HUNDRED -1011B;AL # AEGEAN NUMBER THREE HUNDRED -1011C;AL # AEGEAN NUMBER FOUR HUNDRED -1011D;AL # AEGEAN NUMBER FIVE HUNDRED -1011E;AL # AEGEAN NUMBER SIX HUNDRED -1011F;AL # AEGEAN NUMBER SEVEN HUNDRED -10120;AL # AEGEAN NUMBER EIGHT HUNDRED -10121;AL # AEGEAN NUMBER NINE HUNDRED -10122;AL # AEGEAN NUMBER ONE THOUSAND -10123;AL # AEGEAN NUMBER TWO THOUSAND -10124;AL # AEGEAN NUMBER THREE THOUSAND -10125;AL # AEGEAN NUMBER FOUR THOUSAND -10126;AL # AEGEAN NUMBER FIVE THOUSAND -10127;AL # AEGEAN NUMBER SIX THOUSAND -10128;AL # AEGEAN NUMBER SEVEN THOUSAND -10129;AL # AEGEAN NUMBER EIGHT THOUSAND -1012A;AL # AEGEAN NUMBER NINE THOUSAND -1012B;AL # AEGEAN NUMBER TEN THOUSAND -1012C;AL # AEGEAN NUMBER TWENTY THOUSAND -1012D;AL # AEGEAN NUMBER THIRTY THOUSAND -1012E;AL # AEGEAN NUMBER FORTY THOUSAND -1012F;AL # AEGEAN NUMBER FIFTY THOUSAND -10130;AL # AEGEAN NUMBER SIXTY THOUSAND -10131;AL # AEGEAN NUMBER SEVENTY THOUSAND -10132;AL # AEGEAN NUMBER EIGHTY THOUSAND -10133;AL # AEGEAN NUMBER NINETY THOUSAND -10137;AL # AEGEAN WEIGHT BASE UNIT -10138;AL # AEGEAN WEIGHT FIRST SUBUNIT -10139;AL # AEGEAN WEIGHT SECOND SUBUNIT -1013A;AL # AEGEAN WEIGHT THIRD SUBUNIT -1013B;AL # AEGEAN WEIGHT FOURTH SUBUNIT -1013C;AL # AEGEAN DRY MEASURE FIRST SUBUNIT -1013D;AL # AEGEAN LIQUID MEASURE FIRST SUBUNIT -1013E;AL # AEGEAN MEASURE SECOND SUBUNIT -1013F;AL # AEGEAN MEASURE THIRD SUBUNIT -10140;AL # GREEK ACROPHONIC ATTIC ONE QUARTER -10141;AL # GREEK ACROPHONIC ATTIC ONE HALF -10142;AL # GREEK ACROPHONIC ATTIC ONE DRACHMA -10143;AL # GREEK ACROPHONIC ATTIC FIVE -10144;AL # GREEK ACROPHONIC ATTIC FIFTY -10145;AL # GREEK ACROPHONIC ATTIC FIVE HUNDRED -10146;AL # GREEK ACROPHONIC ATTIC FIVE THOUSAND -10147;AL # GREEK ACROPHONIC ATTIC FIFTY THOUSAND -10148;AL # GREEK ACROPHONIC ATTIC FIVE TALENTS -10149;AL # GREEK ACROPHONIC ATTIC TEN TALENTS -1014A;AL # GREEK ACROPHONIC ATTIC FIFTY TALENTS -1014B;AL # GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS -1014C;AL # GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS -1014D;AL # GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS -1014E;AL # GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS -1014F;AL # GREEK ACROPHONIC ATTIC FIVE STATERS -10150;AL # GREEK ACROPHONIC ATTIC TEN STATERS -10151;AL # GREEK ACROPHONIC ATTIC FIFTY STATERS -10152;AL # GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS -10153;AL # GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS -10154;AL # GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS -10155;AL # GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS -10156;AL # GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS -10157;AL # GREEK ACROPHONIC ATTIC TEN MNAS -10158;AL # GREEK ACROPHONIC HERAEUM ONE PLETHRON -10159;AL # GREEK ACROPHONIC THESPIAN ONE -1015A;AL # GREEK ACROPHONIC HERMIONIAN ONE -1015B;AL # GREEK ACROPHONIC EPIDAUREAN TWO -1015C;AL # GREEK ACROPHONIC THESPIAN TWO -1015D;AL # GREEK ACROPHONIC CYRENAIC TWO DRACHMAS -1015E;AL # GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS -1015F;AL # GREEK ACROPHONIC TROEZENIAN FIVE -10160;AL # GREEK ACROPHONIC TROEZENIAN TEN -10161;AL # GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM -10162;AL # GREEK ACROPHONIC HERMIONIAN TEN -10163;AL # GREEK ACROPHONIC MESSENIAN TEN -10164;AL # GREEK ACROPHONIC THESPIAN TEN -10165;AL # GREEK ACROPHONIC THESPIAN THIRTY -10166;AL # GREEK ACROPHONIC TROEZENIAN FIFTY -10167;AL # GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM -10168;AL # GREEK ACROPHONIC HERMIONIAN FIFTY -10169;AL # GREEK ACROPHONIC THESPIAN FIFTY -1016A;AL # GREEK ACROPHONIC THESPIAN ONE HUNDRED -1016B;AL # GREEK ACROPHONIC THESPIAN THREE HUNDRED -1016C;AL # GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED -1016D;AL # GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED -1016E;AL # GREEK ACROPHONIC THESPIAN FIVE HUNDRED -1016F;AL # GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED -10170;AL # GREEK ACROPHONIC NAXIAN FIVE HUNDRED -10171;AL # GREEK ACROPHONIC THESPIAN ONE THOUSAND -10172;AL # GREEK ACROPHONIC THESPIAN FIVE THOUSAND -10173;AL # GREEK ACROPHONIC DELPHIC FIVE MNAS -10174;AL # GREEK ACROPHONIC STRATIAN FIFTY MNAS -10175;AL # GREEK ONE HALF SIGN -10176;AL # GREEK ONE HALF SIGN ALTERNATE FORM -10177;AL # GREEK TWO THIRDS SIGN -10178;AL # GREEK THREE QUARTERS SIGN -10179;AL # GREEK YEAR SIGN -1017A;AL # GREEK TALENT SIGN -1017B;AL # GREEK DRACHMA SIGN -1017C;AL # GREEK OBOL SIGN -1017D;AL # GREEK TWO OBOLS SIGN -1017E;AL # GREEK THREE OBOLS SIGN -1017F;AL # GREEK FOUR OBOLS SIGN -10180;AL # GREEK FIVE OBOLS SIGN -10181;AL # GREEK METRETES SIGN -10182;AL # GREEK KYATHOS BASE SIGN -10183;AL # GREEK LITRA SIGN -10184;AL # GREEK OUNKIA SIGN -10185;AL # GREEK XESTES SIGN -10186;AL # GREEK ARTABE SIGN -10187;AL # GREEK AROURA SIGN -10188;AL # GREEK GRAMMA SIGN -10189;AL # GREEK TRYBLION BASE SIGN -1018A;AL # GREEK ZERO SIGN -10300;AL # OLD ITALIC LETTER A -10301;AL # OLD ITALIC LETTER BE -10302;AL # OLD ITALIC LETTER KE -10303;AL # OLD ITALIC LETTER DE -10304;AL # OLD ITALIC LETTER E -10305;AL # OLD ITALIC LETTER VE -10306;AL # OLD ITALIC LETTER ZE -10307;AL # OLD ITALIC LETTER HE -10308;AL # OLD ITALIC LETTER THE -10309;AL # OLD ITALIC LETTER I -1030A;AL # OLD ITALIC LETTER KA -1030B;AL # OLD ITALIC LETTER EL -1030C;AL # OLD ITALIC LETTER EM -1030D;AL # OLD ITALIC LETTER EN -1030E;AL # OLD ITALIC LETTER ESH -1030F;AL # OLD ITALIC LETTER O -10310;AL # OLD ITALIC LETTER PE -10311;AL # OLD ITALIC LETTER SHE -10312;AL # OLD ITALIC LETTER KU -10313;AL # OLD ITALIC LETTER ER -10314;AL # OLD ITALIC LETTER ES -10315;AL # OLD ITALIC LETTER TE -10316;AL # OLD ITALIC LETTER U -10317;AL # OLD ITALIC LETTER EKS -10318;AL # OLD ITALIC LETTER PHE -10319;AL # OLD ITALIC LETTER KHE -1031A;AL # OLD ITALIC LETTER EF -1031B;AL # OLD ITALIC LETTER ERS -1031C;AL # OLD ITALIC LETTER CHE -1031D;AL # OLD ITALIC LETTER II -1031E;AL # OLD ITALIC LETTER UU -10320;AL # OLD ITALIC NUMERAL ONE -10321;AL # OLD ITALIC NUMERAL FIVE -10322;AL # OLD ITALIC NUMERAL TEN -10323;AL # OLD ITALIC NUMERAL FIFTY -10330;AL # GOTHIC LETTER AHSA -10331;AL # GOTHIC LETTER BAIRKAN -10332;AL # GOTHIC LETTER GIBA -10333;AL # GOTHIC LETTER DAGS -10334;AL # GOTHIC LETTER AIHVUS -10335;AL # GOTHIC LETTER QAIRTHRA -10336;AL # GOTHIC LETTER IUJA -10337;AL # GOTHIC LETTER HAGL -10338;AL # GOTHIC LETTER THIUTH -10339;AL # GOTHIC LETTER EIS -1033A;AL # GOTHIC LETTER KUSMA -1033B;AL # GOTHIC LETTER LAGUS -1033C;AL # GOTHIC LETTER MANNA -1033D;AL # GOTHIC LETTER NAUTHS -1033E;AL # GOTHIC LETTER JER -1033F;AL # GOTHIC LETTER URUS -10340;AL # GOTHIC LETTER PAIRTHRA -10341;AL # GOTHIC LETTER NINETY -10342;AL # GOTHIC LETTER RAIDA -10343;AL # GOTHIC LETTER SAUIL -10344;AL # GOTHIC LETTER TEIWS -10345;AL # GOTHIC LETTER WINJA -10346;AL # GOTHIC LETTER FAIHU -10347;AL # GOTHIC LETTER IGGWS -10348;AL # GOTHIC LETTER HWAIR -10349;AL # GOTHIC LETTER OTHAL -1034A;AL # GOTHIC LETTER NINE HUNDRED -10380;AL # UGARITIC LETTER ALPA -10381;AL # UGARITIC LETTER BETA -10382;AL # UGARITIC LETTER GAMLA -10383;AL # UGARITIC LETTER KHA -10384;AL # UGARITIC LETTER DELTA -10385;AL # UGARITIC LETTER HO -10386;AL # UGARITIC LETTER WO -10387;AL # UGARITIC LETTER ZETA -10388;AL # UGARITIC LETTER HOTA -10389;AL # UGARITIC LETTER TET -1038A;AL # UGARITIC LETTER YOD -1038B;AL # UGARITIC LETTER KAF -1038C;AL # UGARITIC LETTER SHIN -1038D;AL # UGARITIC LETTER LAMDA -1038E;AL # UGARITIC LETTER MEM -1038F;AL # UGARITIC LETTER DHAL -10390;AL # UGARITIC LETTER NUN -10391;AL # UGARITIC LETTER ZU -10392;AL # UGARITIC LETTER SAMKA -10393;AL # UGARITIC LETTER AIN -10394;AL # UGARITIC LETTER PU -10395;AL # UGARITIC LETTER SADE -10396;AL # UGARITIC LETTER QOPA -10397;AL # UGARITIC LETTER RASHA -10398;AL # UGARITIC LETTER THANNA -10399;AL # UGARITIC LETTER GHAIN -1039A;AL # UGARITIC LETTER TO -1039B;AL # UGARITIC LETTER I -1039C;AL # UGARITIC LETTER U -1039D;AL # UGARITIC LETTER SSU -1039F;BA # UGARITIC WORD DIVIDER -103A0;AL # OLD PERSIAN SIGN A -103A1;AL # OLD PERSIAN SIGN I -103A2;AL # OLD PERSIAN SIGN U -103A3;AL # OLD PERSIAN SIGN KA -103A4;AL # OLD PERSIAN SIGN KU -103A5;AL # OLD PERSIAN SIGN GA -103A6;AL # OLD PERSIAN SIGN GU -103A7;AL # OLD PERSIAN SIGN XA -103A8;AL # OLD PERSIAN SIGN CA -103A9;AL # OLD PERSIAN SIGN JA -103AA;AL # OLD PERSIAN SIGN JI -103AB;AL # OLD PERSIAN SIGN TA -103AC;AL # OLD PERSIAN SIGN TU -103AD;AL # OLD PERSIAN SIGN DA -103AE;AL # OLD PERSIAN SIGN DI -103AF;AL # OLD PERSIAN SIGN DU -103B0;AL # OLD PERSIAN SIGN THA -103B1;AL # OLD PERSIAN SIGN PA -103B2;AL # OLD PERSIAN SIGN BA -103B3;AL # OLD PERSIAN SIGN FA -103B4;AL # OLD PERSIAN SIGN NA -103B5;AL # OLD PERSIAN SIGN NU -103B6;AL # OLD PERSIAN SIGN MA -103B7;AL # OLD PERSIAN SIGN MI -103B8;AL # OLD PERSIAN SIGN MU -103B9;AL # OLD PERSIAN SIGN YA -103BA;AL # OLD PERSIAN SIGN VA -103BB;AL # OLD PERSIAN SIGN VI -103BC;AL # OLD PERSIAN SIGN RA -103BD;AL # OLD PERSIAN SIGN RU -103BE;AL # OLD PERSIAN SIGN LA -103BF;AL # OLD PERSIAN SIGN SA -103C0;AL # OLD PERSIAN SIGN ZA -103C1;AL # OLD PERSIAN SIGN SHA -103C2;AL # OLD PERSIAN SIGN SSA -103C3;AL # OLD PERSIAN SIGN HA -103C8;AL # OLD PERSIAN SIGN AURAMAZDAA -103C9;AL # OLD PERSIAN SIGN AURAMAZDAA-2 -103CA;AL # OLD PERSIAN SIGN AURAMAZDAAHA -103CB;AL # OLD PERSIAN SIGN XSHAAYATHIYA -103CC;AL # OLD PERSIAN SIGN DAHYAAUSH -103CD;AL # OLD PERSIAN SIGN DAHYAAUSH-2 -103CE;AL # OLD PERSIAN SIGN BAGA -103CF;AL # OLD PERSIAN SIGN BUUMISH -103D0;AL # OLD PERSIAN WORD DIVIDER -103D1;AL # OLD PERSIAN NUMBER ONE -103D2;AL # OLD PERSIAN NUMBER TWO -103D3;AL # OLD PERSIAN NUMBER TEN -103D4;AL # OLD PERSIAN NUMBER TWENTY -103D5;AL # OLD PERSIAN NUMBER HUNDRED -10400;AL # DESERET CAPITAL LETTER LONG I -10401;AL # DESERET CAPITAL LETTER LONG E -10402;AL # DESERET CAPITAL LETTER LONG A -10403;AL # DESERET CAPITAL LETTER LONG AH -10404;AL # DESERET CAPITAL LETTER LONG O -10405;AL # DESERET CAPITAL LETTER LONG OO -10406;AL # DESERET CAPITAL LETTER SHORT I -10407;AL # DESERET CAPITAL LETTER SHORT E -10408;AL # DESERET CAPITAL LETTER SHORT A -10409;AL # DESERET CAPITAL LETTER SHORT AH -1040A;AL # DESERET CAPITAL LETTER SHORT O -1040B;AL # DESERET CAPITAL LETTER SHORT OO -1040C;AL # DESERET CAPITAL LETTER AY -1040D;AL # DESERET CAPITAL LETTER OW -1040E;AL # DESERET CAPITAL LETTER WU -1040F;AL # DESERET CAPITAL LETTER YEE -10410;AL # DESERET CAPITAL LETTER H -10411;AL # DESERET CAPITAL LETTER PEE -10412;AL # DESERET CAPITAL LETTER BEE -10413;AL # DESERET CAPITAL LETTER TEE -10414;AL # DESERET CAPITAL LETTER DEE -10415;AL # DESERET CAPITAL LETTER CHEE -10416;AL # DESERET CAPITAL LETTER JEE -10417;AL # DESERET CAPITAL LETTER KAY -10418;AL # DESERET CAPITAL LETTER GAY -10419;AL # DESERET CAPITAL LETTER EF -1041A;AL # DESERET CAPITAL LETTER VEE -1041B;AL # DESERET CAPITAL LETTER ETH -1041C;AL # DESERET CAPITAL LETTER THEE -1041D;AL # DESERET CAPITAL LETTER ES -1041E;AL # DESERET CAPITAL LETTER ZEE -1041F;AL # DESERET CAPITAL LETTER ESH -10420;AL # DESERET CAPITAL LETTER ZHEE -10421;AL # DESERET CAPITAL LETTER ER -10422;AL # DESERET CAPITAL LETTER EL -10423;AL # DESERET CAPITAL LETTER EM -10424;AL # DESERET CAPITAL LETTER EN -10425;AL # DESERET CAPITAL LETTER ENG -10426;AL # DESERET CAPITAL LETTER OI -10427;AL # DESERET CAPITAL LETTER EW -10428;AL # DESERET SMALL LETTER LONG I -10429;AL # DESERET SMALL LETTER LONG E -1042A;AL # DESERET SMALL LETTER LONG A -1042B;AL # DESERET SMALL LETTER LONG AH -1042C;AL # DESERET SMALL LETTER LONG O -1042D;AL # DESERET SMALL LETTER LONG OO -1042E;AL # DESERET SMALL LETTER SHORT I -1042F;AL # DESERET SMALL LETTER SHORT E -10430;AL # DESERET SMALL LETTER SHORT A -10431;AL # DESERET SMALL LETTER SHORT AH -10432;AL # DESERET SMALL LETTER SHORT O -10433;AL # DESERET SMALL LETTER SHORT OO -10434;AL # DESERET SMALL LETTER AY -10435;AL # DESERET SMALL LETTER OW -10436;AL # DESERET SMALL LETTER WU -10437;AL # DESERET SMALL LETTER YEE -10438;AL # DESERET SMALL LETTER H -10439;AL # DESERET SMALL LETTER PEE -1043A;AL # DESERET SMALL LETTER BEE -1043B;AL # DESERET SMALL LETTER TEE -1043C;AL # DESERET SMALL LETTER DEE -1043D;AL # DESERET SMALL LETTER CHEE -1043E;AL # DESERET SMALL LETTER JEE -1043F;AL # DESERET SMALL LETTER KAY -10440;AL # DESERET SMALL LETTER GAY -10441;AL # DESERET SMALL LETTER EF -10442;AL # DESERET SMALL LETTER VEE -10443;AL # DESERET SMALL LETTER ETH -10444;AL # DESERET SMALL LETTER THEE -10445;AL # DESERET SMALL LETTER ES -10446;AL # DESERET SMALL LETTER ZEE -10447;AL # DESERET SMALL LETTER ESH -10448;AL # DESERET SMALL LETTER ZHEE -10449;AL # DESERET SMALL LETTER ER -1044A;AL # DESERET SMALL LETTER EL -1044B;AL # DESERET SMALL LETTER EM -1044C;AL # DESERET SMALL LETTER EN -1044D;AL # DESERET SMALL LETTER ENG -1044E;AL # DESERET SMALL LETTER OI -1044F;AL # DESERET SMALL LETTER EW -10450;AL # SHAVIAN LETTER PEEP -10451;AL # SHAVIAN LETTER TOT -10452;AL # SHAVIAN LETTER KICK -10453;AL # SHAVIAN LETTER FEE -10454;AL # SHAVIAN LETTER THIGH -10455;AL # SHAVIAN LETTER SO -10456;AL # SHAVIAN LETTER SURE -10457;AL # SHAVIAN LETTER CHURCH -10458;AL # SHAVIAN LETTER YEA -10459;AL # SHAVIAN LETTER HUNG -1045A;AL # SHAVIAN LETTER BIB -1045B;AL # SHAVIAN LETTER DEAD -1045C;AL # SHAVIAN LETTER GAG -1045D;AL # SHAVIAN LETTER VOW -1045E;AL # SHAVIAN LETTER THEY -1045F;AL # SHAVIAN LETTER ZOO -10460;AL # SHAVIAN LETTER MEASURE -10461;AL # SHAVIAN LETTER JUDGE -10462;AL # SHAVIAN LETTER WOE -10463;AL # SHAVIAN LETTER HA-HA -10464;AL # SHAVIAN LETTER LOLL -10465;AL # SHAVIAN LETTER MIME -10466;AL # SHAVIAN LETTER IF -10467;AL # SHAVIAN LETTER EGG -10468;AL # SHAVIAN LETTER ASH -10469;AL # SHAVIAN LETTER ADO -1046A;AL # SHAVIAN LETTER ON -1046B;AL # SHAVIAN LETTER WOOL -1046C;AL # SHAVIAN LETTER OUT -1046D;AL # SHAVIAN LETTER AH -1046E;AL # SHAVIAN LETTER ROAR -1046F;AL # SHAVIAN LETTER NUN -10470;AL # SHAVIAN LETTER EAT -10471;AL # SHAVIAN LETTER AGE -10472;AL # SHAVIAN LETTER ICE -10473;AL # SHAVIAN LETTER UP -10474;AL # SHAVIAN LETTER OAK -10475;AL # SHAVIAN LETTER OOZE -10476;AL # SHAVIAN LETTER OIL -10477;AL # SHAVIAN LETTER AWE -10478;AL # SHAVIAN LETTER ARE -10479;AL # SHAVIAN LETTER OR -1047A;AL # SHAVIAN LETTER AIR -1047B;AL # SHAVIAN LETTER ERR -1047C;AL # SHAVIAN LETTER ARRAY -1047D;AL # SHAVIAN LETTER EAR -1047E;AL # SHAVIAN LETTER IAN -1047F;AL # SHAVIAN LETTER YEW -10480;AL # OSMANYA LETTER ALEF -10481;AL # OSMANYA LETTER BA -10482;AL # OSMANYA LETTER TA -10483;AL # OSMANYA LETTER JA -10484;AL # OSMANYA LETTER XA -10485;AL # OSMANYA LETTER KHA -10486;AL # OSMANYA LETTER DEEL -10487;AL # OSMANYA LETTER RA -10488;AL # OSMANYA LETTER SA -10489;AL # OSMANYA LETTER SHIIN -1048A;AL # OSMANYA LETTER DHA -1048B;AL # OSMANYA LETTER CAYN -1048C;AL # OSMANYA LETTER GA -1048D;AL # OSMANYA LETTER FA -1048E;AL # OSMANYA LETTER QAAF -1048F;AL # OSMANYA LETTER KAAF -10490;AL # OSMANYA LETTER LAAN -10491;AL # OSMANYA LETTER MIIN -10492;AL # OSMANYA LETTER NUUN -10493;AL # OSMANYA LETTER WAW -10494;AL # OSMANYA LETTER HA -10495;AL # OSMANYA LETTER YA -10496;AL # OSMANYA LETTER A -10497;AL # OSMANYA LETTER E -10498;AL # OSMANYA LETTER I -10499;AL # OSMANYA LETTER O -1049A;AL # OSMANYA LETTER U -1049B;AL # OSMANYA LETTER AA -1049C;AL # OSMANYA LETTER EE -1049D;AL # OSMANYA LETTER OO -104A0;NU # OSMANYA DIGIT ZERO -104A1;NU # OSMANYA DIGIT ONE -104A2;NU # OSMANYA DIGIT TWO -104A3;NU # OSMANYA DIGIT THREE -104A4;NU # OSMANYA DIGIT FOUR -104A5;NU # OSMANYA DIGIT FIVE -104A6;NU # OSMANYA DIGIT SIX -104A7;NU # OSMANYA DIGIT SEVEN -104A8;NU # OSMANYA DIGIT EIGHT -104A9;NU # OSMANYA DIGIT NINE -10800;AL # CYPRIOT SYLLABLE A -10801;AL # CYPRIOT SYLLABLE E -10802;AL # CYPRIOT SYLLABLE I -10803;AL # CYPRIOT SYLLABLE O -10804;AL # CYPRIOT SYLLABLE U -10805;AL # CYPRIOT SYLLABLE JA -10808;AL # CYPRIOT SYLLABLE JO -1080A;AL # CYPRIOT SYLLABLE KA -1080B;AL # CYPRIOT SYLLABLE KE -1080C;AL # CYPRIOT SYLLABLE KI -1080D;AL # CYPRIOT SYLLABLE KO -1080E;AL # CYPRIOT SYLLABLE KU -1080F;AL # CYPRIOT SYLLABLE LA -10810;AL # CYPRIOT SYLLABLE LE -10811;AL # CYPRIOT SYLLABLE LI -10812;AL # CYPRIOT SYLLABLE LO -10813;AL # CYPRIOT SYLLABLE LU -10814;AL # CYPRIOT SYLLABLE MA -10815;AL # CYPRIOT SYLLABLE ME -10816;AL # CYPRIOT SYLLABLE MI -10817;AL # CYPRIOT SYLLABLE MO -10818;AL # CYPRIOT SYLLABLE MU -10819;AL # CYPRIOT SYLLABLE NA -1081A;AL # CYPRIOT SYLLABLE NE -1081B;AL # CYPRIOT SYLLABLE NI -1081C;AL # CYPRIOT SYLLABLE NO -1081D;AL # CYPRIOT SYLLABLE NU -1081E;AL # CYPRIOT SYLLABLE PA -1081F;AL # CYPRIOT SYLLABLE PE -10820;AL # CYPRIOT SYLLABLE PI -10821;AL # CYPRIOT SYLLABLE PO -10822;AL # CYPRIOT SYLLABLE PU -10823;AL # CYPRIOT SYLLABLE RA -10824;AL # CYPRIOT SYLLABLE RE -10825;AL # CYPRIOT SYLLABLE RI -10826;AL # CYPRIOT SYLLABLE RO -10827;AL # CYPRIOT SYLLABLE RU -10828;AL # CYPRIOT SYLLABLE SA -10829;AL # CYPRIOT SYLLABLE SE -1082A;AL # CYPRIOT SYLLABLE SI -1082B;AL # CYPRIOT SYLLABLE SO -1082C;AL # CYPRIOT SYLLABLE SU -1082D;AL # CYPRIOT SYLLABLE TA -1082E;AL # CYPRIOT SYLLABLE TE -1082F;AL # CYPRIOT SYLLABLE TI -10830;AL # CYPRIOT SYLLABLE TO -10831;AL # CYPRIOT SYLLABLE TU -10832;AL # CYPRIOT SYLLABLE WA -10833;AL # CYPRIOT SYLLABLE WE -10834;AL # CYPRIOT SYLLABLE WI -10835;AL # CYPRIOT SYLLABLE WO -10837;AL # CYPRIOT SYLLABLE XA -10838;AL # CYPRIOT SYLLABLE XE -1083C;AL # CYPRIOT SYLLABLE ZA -1083F;AL # CYPRIOT SYLLABLE ZO -10A00;AL # KHAROSHTHI LETTER A -10A01;CM # KHAROSHTHI VOWEL SIGN I -10A02;CM # KHAROSHTHI VOWEL SIGN U -10A03;CM # KHAROSHTHI VOWEL SIGN VOCALIC R -10A05;CM # KHAROSHTHI VOWEL SIGN E -10A06;CM # KHAROSHTHI VOWEL SIGN O -10A0C;CM # KHAROSHTHI VOWEL LENGTH MARK -10A0D;CM # KHAROSHTHI SIGN DOUBLE RING BELOW -10A0E;CM # KHAROSHTHI SIGN ANUSVARA -10A0F;CM # KHAROSHTHI SIGN VISARGA -10A10;AL # KHAROSHTHI LETTER KA -10A11;AL # KHAROSHTHI LETTER KHA -10A12;AL # KHAROSHTHI LETTER GA -10A13;AL # KHAROSHTHI LETTER GHA -10A15;AL # KHAROSHTHI LETTER CA -10A16;AL # KHAROSHTHI LETTER CHA -10A17;AL # KHAROSHTHI LETTER JA -10A19;AL # KHAROSHTHI LETTER NYA -10A1A;AL # KHAROSHTHI LETTER TTA -10A1B;AL # KHAROSHTHI LETTER TTHA -10A1C;AL # KHAROSHTHI LETTER DDA -10A1D;AL # KHAROSHTHI LETTER DDHA -10A1E;AL # KHAROSHTHI LETTER NNA -10A1F;AL # KHAROSHTHI LETTER TA -10A20;AL # KHAROSHTHI LETTER THA -10A21;AL # KHAROSHTHI LETTER DA -10A22;AL # KHAROSHTHI LETTER DHA -10A23;AL # KHAROSHTHI LETTER NA -10A24;AL # KHAROSHTHI LETTER PA -10A25;AL # KHAROSHTHI LETTER PHA -10A26;AL # KHAROSHTHI LETTER BA -10A27;AL # KHAROSHTHI LETTER BHA -10A28;AL # KHAROSHTHI LETTER MA -10A29;AL # KHAROSHTHI LETTER YA -10A2A;AL # KHAROSHTHI LETTER RA -10A2B;AL # KHAROSHTHI LETTER LA -10A2C;AL # KHAROSHTHI LETTER VA -10A2D;AL # KHAROSHTHI LETTER SHA -10A2E;AL # KHAROSHTHI LETTER SSA -10A2F;AL # KHAROSHTHI LETTER SA -10A30;AL # KHAROSHTHI LETTER ZA -10A31;AL # KHAROSHTHI LETTER HA -10A32;AL # KHAROSHTHI LETTER KKA -10A33;AL # KHAROSHTHI LETTER TTTHA -10A38;CM # KHAROSHTHI SIGN BAR ABOVE -10A39;CM # KHAROSHTHI SIGN CAUDA -10A3A;CM # KHAROSHTHI SIGN DOT BELOW -10A3F;CM # KHAROSHTHI VIRAMA -10A40;AL # KHAROSHTHI DIGIT ONE -10A41;AL # KHAROSHTHI DIGIT TWO -10A42;AL # KHAROSHTHI DIGIT THREE -10A43;AL # KHAROSHTHI DIGIT FOUR -10A44;AL # KHAROSHTHI NUMBER TEN -10A45;AL # KHAROSHTHI NUMBER TWENTY -10A46;AL # KHAROSHTHI NUMBER ONE HUNDRED -10A47;AL # KHAROSHTHI NUMBER ONE THOUSAND -10A50;BA # KHAROSHTHI PUNCTUATION DOT -10A51;BA # KHAROSHTHI PUNCTUATION SMALL CIRCLE -10A52;BA # KHAROSHTHI PUNCTUATION CIRCLE -10A53;BA # KHAROSHTHI PUNCTUATION CRESCENT BAR -10A54;BA # KHAROSHTHI PUNCTUATION MANGALAM -10A55;BA # KHAROSHTHI PUNCTUATION LOTUS -10A56;BA # KHAROSHTHI PUNCTUATION DANDA -10A57;BA # KHAROSHTHI PUNCTUATION DOUBLE DANDA -10A58;AL # KHAROSHTHI PUNCTUATION LINES -1D000;AL # BYZANTINE MUSICAL SYMBOL PSILI -1D001;AL # BYZANTINE MUSICAL SYMBOL DASEIA -1D002;AL # BYZANTINE MUSICAL SYMBOL PERISPOMENI -1D003;AL # BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON -1D004;AL # BYZANTINE MUSICAL SYMBOL OXEIA DIPLI -1D005;AL # BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON -1D006;AL # BYZANTINE MUSICAL SYMBOL VAREIA DIPLI -1D007;AL # BYZANTINE MUSICAL SYMBOL KATHISTI -1D008;AL # BYZANTINE MUSICAL SYMBOL SYRMATIKI -1D009;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI -1D00A;AL # BYZANTINE MUSICAL SYMBOL YPOKRISIS -1D00B;AL # BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI -1D00C;AL # BYZANTINE MUSICAL SYMBOL KREMASTI -1D00D;AL # BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON -1D00E;AL # BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON -1D00F;AL # BYZANTINE MUSICAL SYMBOL TELEIA -1D010;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA -1D011;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS -1D012;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI -1D013;AL # BYZANTINE MUSICAL SYMBOL SYNEVMA -1D014;AL # BYZANTINE MUSICAL SYMBOL THITA -1D015;AL # BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION -1D016;AL # BYZANTINE MUSICAL SYMBOL GORGON ARCHAION -1D017;AL # BYZANTINE MUSICAL SYMBOL PSILON -1D018;AL # BYZANTINE MUSICAL SYMBOL CHAMILON -1D019;AL # BYZANTINE MUSICAL SYMBOL VATHY -1D01A;AL # BYZANTINE MUSICAL SYMBOL ISON ARCHAION -1D01B;AL # BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION -1D01C;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION -1D01D;AL # BYZANTINE MUSICAL SYMBOL SAXIMATA -1D01E;AL # BYZANTINE MUSICAL SYMBOL PARICHON -1D01F;AL # BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA -1D020;AL # BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION -1D021;AL # BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION -1D022;AL # BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION -1D023;AL # BYZANTINE MUSICAL SYMBOL APOTHEMA -1D024;AL # BYZANTINE MUSICAL SYMBOL KLASMA -1D025;AL # BYZANTINE MUSICAL SYMBOL REVMA -1D026;AL # BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION -1D027;AL # BYZANTINE MUSICAL SYMBOL TINAGMA -1D028;AL # BYZANTINE MUSICAL SYMBOL ANATRICHISMA -1D029;AL # BYZANTINE MUSICAL SYMBOL SEISMA -1D02A;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION -1D02B;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU -1D02C;AL # BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION -1D02D;AL # BYZANTINE MUSICAL SYMBOL THEMA -1D02E;AL # BYZANTINE MUSICAL SYMBOL LEMOI -1D02F;AL # BYZANTINE MUSICAL SYMBOL DYO -1D030;AL # BYZANTINE MUSICAL SYMBOL TRIA -1D031;AL # BYZANTINE MUSICAL SYMBOL TESSERA -1D032;AL # BYZANTINE MUSICAL SYMBOL KRATIMATA -1D033;AL # BYZANTINE MUSICAL SYMBOL APESO EXO NEO -1D034;AL # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION -1D035;AL # BYZANTINE MUSICAL SYMBOL IMIFTHORA -1D036;AL # BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION -1D037;AL # BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON -1D038;AL # BYZANTINE MUSICAL SYMBOL PELASTON -1D039;AL # BYZANTINE MUSICAL SYMBOL PSIFISTON -1D03A;AL # BYZANTINE MUSICAL SYMBOL KONTEVMA -1D03B;AL # BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION -1D03C;AL # BYZANTINE MUSICAL SYMBOL RAPISMA -1D03D;AL # BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION -1D03E;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION -1D03F;AL # BYZANTINE MUSICAL SYMBOL ICHADIN -1D040;AL # BYZANTINE MUSICAL SYMBOL NANA -1D041;AL # BYZANTINE MUSICAL SYMBOL PETASMA -1D042;AL # BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO -1D043;AL # BYZANTINE MUSICAL SYMBOL TROMIKON ALLO -1D044;AL # BYZANTINE MUSICAL SYMBOL STRAGGISMATA -1D045;AL # BYZANTINE MUSICAL SYMBOL GRONTHISMATA -1D046;AL # BYZANTINE MUSICAL SYMBOL ISON NEO -1D047;AL # BYZANTINE MUSICAL SYMBOL OLIGON NEO -1D048;AL # BYZANTINE MUSICAL SYMBOL OXEIA NEO -1D049;AL # BYZANTINE MUSICAL SYMBOL PETASTI -1D04A;AL # BYZANTINE MUSICAL SYMBOL KOUFISMA -1D04B;AL # BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA -1D04C;AL # BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA -1D04D;AL # BYZANTINE MUSICAL SYMBOL PELASTON NEO -1D04E;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO -1D04F;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO -1D050;AL # BYZANTINE MUSICAL SYMBOL YPSILI -1D051;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO -1D052;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO -1D053;AL # BYZANTINE MUSICAL SYMBOL YPORROI -1D054;AL # BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON -1D055;AL # BYZANTINE MUSICAL SYMBOL ELAFRON -1D056;AL # BYZANTINE MUSICAL SYMBOL CHAMILI -1D057;AL # BYZANTINE MUSICAL SYMBOL MIKRON ISON -1D058;AL # BYZANTINE MUSICAL SYMBOL VAREIA NEO -1D059;AL # BYZANTINE MUSICAL SYMBOL PIASMA NEO -1D05A;AL # BYZANTINE MUSICAL SYMBOL PSIFISTON NEO -1D05B;AL # BYZANTINE MUSICAL SYMBOL OMALON -1D05C;AL # BYZANTINE MUSICAL SYMBOL ANTIKENOMA -1D05D;AL # BYZANTINE MUSICAL SYMBOL LYGISMA -1D05E;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO -1D05F;AL # BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO -1D060;AL # BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA -1D061;AL # BYZANTINE MUSICAL SYMBOL KYLISMA -1D062;AL # BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA -1D063;AL # BYZANTINE MUSICAL SYMBOL TROMIKON NEO -1D064;AL # BYZANTINE MUSICAL SYMBOL EKSTREPTON -1D065;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA NEO -1D066;AL # BYZANTINE MUSICAL SYMBOL SYRMA -1D067;AL # BYZANTINE MUSICAL SYMBOL CHOREVMA NEO -1D068;AL # BYZANTINE MUSICAL SYMBOL EPEGERMA -1D069;AL # BYZANTINE MUSICAL SYMBOL SEISMA NEO -1D06A;AL # BYZANTINE MUSICAL SYMBOL XIRON KLASMA -1D06B;AL # BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON -1D06C;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA -1D06D;AL # BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA -1D06E;AL # BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA -1D06F;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA -1D070;AL # BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA -1D071;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA -1D072;AL # BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON -1D073;AL # BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON -1D074;AL # BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON -1D075;AL # BYZANTINE MUSICAL SYMBOL OYRANISMA NEO -1D076;AL # BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO -1D077;AL # BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO -1D078;AL # BYZANTINE MUSICAL SYMBOL THEMA APLOUN -1D079;AL # BYZANTINE MUSICAL SYMBOL THES KAI APOTHES -1D07A;AL # BYZANTINE MUSICAL SYMBOL KATAVASMA -1D07B;AL # BYZANTINE MUSICAL SYMBOL ENDOFONON -1D07C;AL # BYZANTINE MUSICAL SYMBOL YFEN KATO -1D07D;AL # BYZANTINE MUSICAL SYMBOL YFEN ANO -1D07E;AL # BYZANTINE MUSICAL SYMBOL STAVROS -1D07F;AL # BYZANTINE MUSICAL SYMBOL KLASMA ANO -1D080;AL # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION -1D081;AL # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION -1D082;AL # BYZANTINE MUSICAL SYMBOL KRATIMA ALLO -1D083;AL # BYZANTINE MUSICAL SYMBOL KRATIMA NEO -1D084;AL # BYZANTINE MUSICAL SYMBOL APODERMA NEO -1D085;AL # BYZANTINE MUSICAL SYMBOL APLI -1D086;AL # BYZANTINE MUSICAL SYMBOL DIPLI -1D087;AL # BYZANTINE MUSICAL SYMBOL TRIPLI -1D088;AL # BYZANTINE MUSICAL SYMBOL TETRAPLI -1D089;AL # BYZANTINE MUSICAL SYMBOL KORONIS -1D08A;AL # BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU -1D08B;AL # BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON -1D08C;AL # BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON -1D08D;AL # BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON -1D08E;AL # BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU -1D08F;AL # BYZANTINE MUSICAL SYMBOL GORGON NEO ANO -1D090;AL # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA -1D091;AL # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA -1D092;AL # BYZANTINE MUSICAL SYMBOL DIGORGON -1D093;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO -1D094;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO -1D095;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA -1D096;AL # BYZANTINE MUSICAL SYMBOL TRIGORGON -1D097;AL # BYZANTINE MUSICAL SYMBOL ARGON -1D098;AL # BYZANTINE MUSICAL SYMBOL IMIDIARGON -1D099;AL # BYZANTINE MUSICAL SYMBOL DIARGON -1D09A;AL # BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI -1D09B;AL # BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI -1D09C;AL # BYZANTINE MUSICAL SYMBOL AGOGI ARGI -1D09D;AL # BYZANTINE MUSICAL SYMBOL AGOGI METRIA -1D09E;AL # BYZANTINE MUSICAL SYMBOL AGOGI MESI -1D09F;AL # BYZANTINE MUSICAL SYMBOL AGOGI GORGI -1D0A0;AL # BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI -1D0A1;AL # BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI -1D0A2;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS -1D0A3;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS -1D0A4;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS -1D0A5;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS -1D0A6;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS -1D0A7;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS -1D0A8;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS -1D0A9;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS -1D0AA;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS -1D0AB;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS -1D0AC;AL # BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS -1D0AD;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS -1D0AE;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS -1D0AF;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS -1D0B0;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS -1D0B1;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS -1D0B2;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS -1D0B3;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS -1D0B4;AL # BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN -1D0B5;AL # BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN -1D0B6;AL # BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU -1D0B7;AL # BYZANTINE MUSICAL SYMBOL IMIFONON -1D0B8;AL # BYZANTINE MUSICAL SYMBOL IMIFTHORON -1D0B9;AL # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU -1D0BA;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA -1D0BB;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA -1D0BC;AL # BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS -1D0BD;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI -1D0BE;AL # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI -1D0BF;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE -1D0C0;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO -1D0C1;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO -1D0C2;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO -1D0C3;AL # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS -1D0C4;AL # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS -1D0C5;AL # BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS -1D0C6;AL # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI -1D0C7;AL # BYZANTINE MUSICAL SYMBOL FTHORA NENANO -1D0C8;AL # BYZANTINE MUSICAL SYMBOL CHROA ZYGOS -1D0C9;AL # BYZANTINE MUSICAL SYMBOL CHROA KLITON -1D0CA;AL # BYZANTINE MUSICAL SYMBOL CHROA SPATHI -1D0CB;AL # BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION -1D0CC;AL # BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA -1D0CD;AL # BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION -1D0CE;AL # BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION -1D0CF;AL # BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION -1D0D0;AL # BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA -1D0D1;AL # BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA -1D0D2;AL # BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA -1D0D3;AL # BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA -1D0D4;AL # BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA -1D0D5;AL # BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA -1D0D6;AL # BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA -1D0D7;AL # BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA -1D0D8;AL # BYZANTINE MUSICAL SYMBOL GENIKI DIESIS -1D0D9;AL # BYZANTINE MUSICAL SYMBOL GENIKI YFESIS -1D0DA;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI -1D0DB;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI -1D0DC;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI -1D0DD;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS -1D0DE;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS -1D0DF;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU -1D0E0;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU -1D0E1;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU -1D0E2;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS -1D0E3;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU -1D0E4;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU -1D0E5;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU -1D0E6;AL # BYZANTINE MUSICAL SYMBOL DIGRAMMA GG -1D0E7;AL # BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU -1D0E8;AL # BYZANTINE MUSICAL SYMBOL STIGMA -1D0E9;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO PA -1D0EA;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO VOU -1D0EB;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO GA -1D0EC;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO DI -1D0ED;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO KE -1D0EE;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO ZO -1D0EF;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO NI -1D0F0;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO -1D0F1;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO -1D0F2;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO -1D0F3;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO -1D0F4;AL # BYZANTINE MUSICAL SYMBOL KLASMA KATO -1D0F5;AL # BYZANTINE MUSICAL SYMBOL GORGON NEO KATO -1D100;AL # MUSICAL SYMBOL SINGLE BARLINE -1D101;AL # MUSICAL SYMBOL DOUBLE BARLINE -1D102;AL # MUSICAL SYMBOL FINAL BARLINE -1D103;AL # MUSICAL SYMBOL REVERSE FINAL BARLINE -1D104;AL # MUSICAL SYMBOL DASHED BARLINE -1D105;AL # MUSICAL SYMBOL SHORT BARLINE -1D106;AL # MUSICAL SYMBOL LEFT REPEAT SIGN -1D107;AL # MUSICAL SYMBOL RIGHT REPEAT SIGN -1D108;AL # MUSICAL SYMBOL REPEAT DOTS -1D109;AL # MUSICAL SYMBOL DAL SEGNO -1D10A;AL # MUSICAL SYMBOL DA CAPO -1D10B;AL # MUSICAL SYMBOL SEGNO -1D10C;AL # MUSICAL SYMBOL CODA -1D10D;AL # MUSICAL SYMBOL REPEATED FIGURE-1 -1D10E;AL # MUSICAL SYMBOL REPEATED FIGURE-2 -1D10F;AL # MUSICAL SYMBOL REPEATED FIGURE-3 -1D110;AL # MUSICAL SYMBOL FERMATA -1D111;AL # MUSICAL SYMBOL FERMATA BELOW -1D112;AL # MUSICAL SYMBOL BREATH MARK -1D113;AL # MUSICAL SYMBOL CAESURA -1D114;AL # MUSICAL SYMBOL BRACE -1D115;AL # MUSICAL SYMBOL BRACKET -1D116;AL # MUSICAL SYMBOL ONE-LINE STAFF -1D117;AL # MUSICAL SYMBOL TWO-LINE STAFF -1D118;AL # MUSICAL SYMBOL THREE-LINE STAFF -1D119;AL # MUSICAL SYMBOL FOUR-LINE STAFF -1D11A;AL # MUSICAL SYMBOL FIVE-LINE STAFF -1D11B;AL # MUSICAL SYMBOL SIX-LINE STAFF -1D11C;AL # MUSICAL SYMBOL SIX-STRING FRETBOARD -1D11D;AL # MUSICAL SYMBOL FOUR-STRING FRETBOARD -1D11E;AL # MUSICAL SYMBOL G CLEF -1D11F;AL # MUSICAL SYMBOL G CLEF OTTAVA ALTA -1D120;AL # MUSICAL SYMBOL G CLEF OTTAVA BASSA -1D121;AL # MUSICAL SYMBOL C CLEF -1D122;AL # MUSICAL SYMBOL F CLEF -1D123;AL # MUSICAL SYMBOL F CLEF OTTAVA ALTA -1D124;AL # MUSICAL SYMBOL F CLEF OTTAVA BASSA -1D125;AL # MUSICAL SYMBOL DRUM CLEF-1 -1D126;AL # MUSICAL SYMBOL DRUM CLEF-2 -1D12A;AL # MUSICAL SYMBOL DOUBLE SHARP -1D12B;AL # MUSICAL SYMBOL DOUBLE FLAT -1D12C;AL # MUSICAL SYMBOL FLAT UP -1D12D;AL # MUSICAL SYMBOL FLAT DOWN -1D12E;AL # MUSICAL SYMBOL NATURAL UP -1D12F;AL # MUSICAL SYMBOL NATURAL DOWN -1D130;AL # MUSICAL SYMBOL SHARP UP -1D131;AL # MUSICAL SYMBOL SHARP DOWN -1D132;AL # MUSICAL SYMBOL QUARTER TONE SHARP -1D133;AL # MUSICAL SYMBOL QUARTER TONE FLAT -1D134;AL # MUSICAL SYMBOL COMMON TIME -1D135;AL # MUSICAL SYMBOL CUT TIME -1D136;AL # MUSICAL SYMBOL OTTAVA ALTA -1D137;AL # MUSICAL SYMBOL OTTAVA BASSA -1D138;AL # MUSICAL SYMBOL QUINDICESIMA ALTA -1D139;AL # MUSICAL SYMBOL QUINDICESIMA BASSA -1D13A;AL # MUSICAL SYMBOL MULTI REST -1D13B;AL # MUSICAL SYMBOL WHOLE REST -1D13C;AL # MUSICAL SYMBOL HALF REST -1D13D;AL # MUSICAL SYMBOL QUARTER REST -1D13E;AL # MUSICAL SYMBOL EIGHTH REST -1D13F;AL # MUSICAL SYMBOL SIXTEENTH REST -1D140;AL # MUSICAL SYMBOL THIRTY-SECOND REST -1D141;AL # MUSICAL SYMBOL SIXTY-FOURTH REST -1D142;AL # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST -1D143;AL # MUSICAL SYMBOL X NOTEHEAD -1D144;AL # MUSICAL SYMBOL PLUS NOTEHEAD -1D145;AL # MUSICAL SYMBOL CIRCLE X NOTEHEAD -1D146;AL # MUSICAL SYMBOL SQUARE NOTEHEAD WHITE -1D147;AL # MUSICAL SYMBOL SQUARE NOTEHEAD BLACK -1D148;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE -1D149;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK -1D14A;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE -1D14B;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK -1D14C;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE -1D14D;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK -1D14E;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE -1D14F;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK -1D150;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE -1D151;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK -1D152;AL # MUSICAL SYMBOL MOON NOTEHEAD WHITE -1D153;AL # MUSICAL SYMBOL MOON NOTEHEAD BLACK -1D154;AL # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE -1D155;AL # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK -1D156;AL # MUSICAL SYMBOL PARENTHESIS NOTEHEAD -1D157;AL # MUSICAL SYMBOL VOID NOTEHEAD -1D158;AL # MUSICAL SYMBOL NOTEHEAD BLACK -1D159;AL # MUSICAL SYMBOL NULL NOTEHEAD -1D15A;AL # MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE -1D15B;AL # MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK -1D15C;AL # MUSICAL SYMBOL BREVE -1D15D;AL # MUSICAL SYMBOL WHOLE NOTE -1D15E;AL # MUSICAL SYMBOL HALF NOTE -1D15F;AL # MUSICAL SYMBOL QUARTER NOTE -1D160;AL # MUSICAL SYMBOL EIGHTH NOTE -1D161;AL # MUSICAL SYMBOL SIXTEENTH NOTE -1D162;AL # MUSICAL SYMBOL THIRTY-SECOND NOTE -1D163;AL # MUSICAL SYMBOL SIXTY-FOURTH NOTE -1D164;AL # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE -1D165;CM # MUSICAL SYMBOL COMBINING STEM -1D166;CM # MUSICAL SYMBOL COMBINING SPRECHGESANG STEM -1D167;CM # MUSICAL SYMBOL COMBINING TREMOLO-1 -1D168;CM # MUSICAL SYMBOL COMBINING TREMOLO-2 -1D169;CM # MUSICAL SYMBOL COMBINING TREMOLO-3 -1D16A;AL # MUSICAL SYMBOL FINGERED TREMOLO-1 -1D16B;AL # MUSICAL SYMBOL FINGERED TREMOLO-2 -1D16C;AL # MUSICAL SYMBOL FINGERED TREMOLO-3 -1D16D;CM # MUSICAL SYMBOL COMBINING AUGMENTATION DOT -1D16E;CM # MUSICAL SYMBOL COMBINING FLAG-1 -1D16F;CM # MUSICAL SYMBOL COMBINING FLAG-2 -1D170;CM # MUSICAL SYMBOL COMBINING FLAG-3 -1D171;CM # MUSICAL SYMBOL COMBINING FLAG-4 -1D172;CM # MUSICAL SYMBOL COMBINING FLAG-5 -1D173;CM # MUSICAL SYMBOL BEGIN BEAM -1D174;CM # MUSICAL SYMBOL END BEAM -1D175;CM # MUSICAL SYMBOL BEGIN TIE -1D176;CM # MUSICAL SYMBOL END TIE -1D177;CM # MUSICAL SYMBOL BEGIN SLUR -1D178;CM # MUSICAL SYMBOL END SLUR -1D179;CM # MUSICAL SYMBOL BEGIN PHRASE -1D17A;CM # MUSICAL SYMBOL END PHRASE -1D17B;CM # MUSICAL SYMBOL COMBINING ACCENT -1D17C;CM # MUSICAL SYMBOL COMBINING STACCATO -1D17D;CM # MUSICAL SYMBOL COMBINING TENUTO -1D17E;CM # MUSICAL SYMBOL COMBINING STACCATISSIMO -1D17F;CM # MUSICAL SYMBOL COMBINING MARCATO -1D180;CM # MUSICAL SYMBOL COMBINING MARCATO-STACCATO -1D181;CM # MUSICAL SYMBOL COMBINING ACCENT-STACCATO -1D182;CM # MUSICAL SYMBOL COMBINING LOURE -1D183;AL # MUSICAL SYMBOL ARPEGGIATO UP -1D184;AL # MUSICAL SYMBOL ARPEGGIATO DOWN -1D185;CM # MUSICAL SYMBOL COMBINING DOIT -1D186;CM # MUSICAL SYMBOL COMBINING RIP -1D187;CM # MUSICAL SYMBOL COMBINING FLIP -1D188;CM # MUSICAL SYMBOL COMBINING SMEAR -1D189;CM # MUSICAL SYMBOL COMBINING BEND -1D18A;CM # MUSICAL SYMBOL COMBINING DOUBLE TONGUE -1D18B;CM # MUSICAL SYMBOL COMBINING TRIPLE TONGUE -1D18C;AL # MUSICAL SYMBOL RINFORZANDO -1D18D;AL # MUSICAL SYMBOL SUBITO -1D18E;AL # MUSICAL SYMBOL Z -1D18F;AL # MUSICAL SYMBOL PIANO -1D190;AL # MUSICAL SYMBOL MEZZO -1D191;AL # MUSICAL SYMBOL FORTE -1D192;AL # MUSICAL SYMBOL CRESCENDO -1D193;AL # MUSICAL SYMBOL DECRESCENDO -1D194;AL # MUSICAL SYMBOL GRACE NOTE SLASH -1D195;AL # MUSICAL SYMBOL GRACE NOTE NO SLASH -1D196;AL # MUSICAL SYMBOL TR -1D197;AL # MUSICAL SYMBOL TURN -1D198;AL # MUSICAL SYMBOL INVERTED TURN -1D199;AL # MUSICAL SYMBOL TURN SLASH -1D19A;AL # MUSICAL SYMBOL TURN UP -1D19B;AL # MUSICAL SYMBOL ORNAMENT STROKE-1 -1D19C;AL # MUSICAL SYMBOL ORNAMENT STROKE-2 -1D19D;AL # MUSICAL SYMBOL ORNAMENT STROKE-3 -1D19E;AL # MUSICAL SYMBOL ORNAMENT STROKE-4 -1D19F;AL # MUSICAL SYMBOL ORNAMENT STROKE-5 -1D1A0;AL # MUSICAL SYMBOL ORNAMENT STROKE-6 -1D1A1;AL # MUSICAL SYMBOL ORNAMENT STROKE-7 -1D1A2;AL # MUSICAL SYMBOL ORNAMENT STROKE-8 -1D1A3;AL # MUSICAL SYMBOL ORNAMENT STROKE-9 -1D1A4;AL # MUSICAL SYMBOL ORNAMENT STROKE-10 -1D1A5;AL # MUSICAL SYMBOL ORNAMENT STROKE-11 -1D1A6;AL # MUSICAL SYMBOL HAUPTSTIMME -1D1A7;AL # MUSICAL SYMBOL NEBENSTIMME -1D1A8;AL # MUSICAL SYMBOL END OF STIMME -1D1A9;AL # MUSICAL SYMBOL DEGREE SLASH -1D1AA;CM # MUSICAL SYMBOL COMBINING DOWN BOW -1D1AB;CM # MUSICAL SYMBOL COMBINING UP BOW -1D1AC;CM # MUSICAL SYMBOL COMBINING HARMONIC -1D1AD;CM # MUSICAL SYMBOL COMBINING SNAP PIZZICATO -1D1AE;AL # MUSICAL SYMBOL PEDAL MARK -1D1AF;AL # MUSICAL SYMBOL PEDAL UP MARK -1D1B0;AL # MUSICAL SYMBOL HALF PEDAL MARK -1D1B1;AL # MUSICAL SYMBOL GLISSANDO UP -1D1B2;AL # MUSICAL SYMBOL GLISSANDO DOWN -1D1B3;AL # MUSICAL SYMBOL WITH FINGERNAILS -1D1B4;AL # MUSICAL SYMBOL DAMP -1D1B5;AL # MUSICAL SYMBOL DAMP ALL -1D1B6;AL # MUSICAL SYMBOL MAXIMA -1D1B7;AL # MUSICAL SYMBOL LONGA -1D1B8;AL # MUSICAL SYMBOL BREVIS -1D1B9;AL # MUSICAL SYMBOL SEMIBREVIS WHITE -1D1BA;AL # MUSICAL SYMBOL SEMIBREVIS BLACK -1D1BB;AL # MUSICAL SYMBOL MINIMA -1D1BC;AL # MUSICAL SYMBOL MINIMA BLACK -1D1BD;AL # MUSICAL SYMBOL SEMIMINIMA WHITE -1D1BE;AL # MUSICAL SYMBOL SEMIMINIMA BLACK -1D1BF;AL # MUSICAL SYMBOL FUSA WHITE -1D1C0;AL # MUSICAL SYMBOL FUSA BLACK -1D1C1;AL # MUSICAL SYMBOL LONGA PERFECTA REST -1D1C2;AL # MUSICAL SYMBOL LONGA IMPERFECTA REST -1D1C3;AL # MUSICAL SYMBOL BREVIS REST -1D1C4;AL # MUSICAL SYMBOL SEMIBREVIS REST -1D1C5;AL # MUSICAL SYMBOL MINIMA REST -1D1C6;AL # MUSICAL SYMBOL SEMIMINIMA REST -1D1C7;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA -1D1C8;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA -1D1C9;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1 -1D1CA;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA -1D1CB;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA -1D1CC;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1 -1D1CD;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2 -1D1CE;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3 -1D1CF;AL # MUSICAL SYMBOL CROIX -1D1D0;AL # MUSICAL SYMBOL GREGORIAN C CLEF -1D1D1;AL # MUSICAL SYMBOL GREGORIAN F CLEF -1D1D2;AL # MUSICAL SYMBOL SQUARE B -1D1D3;AL # MUSICAL SYMBOL VIRGA -1D1D4;AL # MUSICAL SYMBOL PODATUS -1D1D5;AL # MUSICAL SYMBOL CLIVIS -1D1D6;AL # MUSICAL SYMBOL SCANDICUS -1D1D7;AL # MUSICAL SYMBOL CLIMACUS -1D1D8;AL # MUSICAL SYMBOL TORCULUS -1D1D9;AL # MUSICAL SYMBOL PORRECTUS -1D1DA;AL # MUSICAL SYMBOL PORRECTUS FLEXUS -1D1DB;AL # MUSICAL SYMBOL SCANDICUS FLEXUS -1D1DC;AL # MUSICAL SYMBOL TORCULUS RESUPINUS -1D1DD;AL # MUSICAL SYMBOL PES SUBPUNCTIS -1D200;AL # GREEK VOCAL NOTATION SYMBOL-1 -1D201;AL # GREEK VOCAL NOTATION SYMBOL-2 -1D202;AL # GREEK VOCAL NOTATION SYMBOL-3 -1D203;AL # GREEK VOCAL NOTATION SYMBOL-4 -1D204;AL # GREEK VOCAL NOTATION SYMBOL-5 -1D205;AL # GREEK VOCAL NOTATION SYMBOL-6 -1D206;AL # GREEK VOCAL NOTATION SYMBOL-7 -1D207;AL # GREEK VOCAL NOTATION SYMBOL-8 -1D208;AL # GREEK VOCAL NOTATION SYMBOL-9 -1D209;AL # GREEK VOCAL NOTATION SYMBOL-10 -1D20A;AL # GREEK VOCAL NOTATION SYMBOL-11 -1D20B;AL # GREEK VOCAL NOTATION SYMBOL-12 -1D20C;AL # GREEK VOCAL NOTATION SYMBOL-13 -1D20D;AL # GREEK VOCAL NOTATION SYMBOL-14 -1D20E;AL # GREEK VOCAL NOTATION SYMBOL-15 -1D20F;AL # GREEK VOCAL NOTATION SYMBOL-16 -1D210;AL # GREEK VOCAL NOTATION SYMBOL-17 -1D211;AL # GREEK VOCAL NOTATION SYMBOL-18 -1D212;AL # GREEK VOCAL NOTATION SYMBOL-19 -1D213;AL # GREEK VOCAL NOTATION SYMBOL-20 -1D214;AL # GREEK VOCAL NOTATION SYMBOL-21 -1D215;AL # GREEK VOCAL NOTATION SYMBOL-22 -1D216;AL # GREEK VOCAL NOTATION SYMBOL-23 -1D217;AL # GREEK VOCAL NOTATION SYMBOL-24 -1D218;AL # GREEK VOCAL NOTATION SYMBOL-50 -1D219;AL # GREEK VOCAL NOTATION SYMBOL-51 -1D21A;AL # GREEK VOCAL NOTATION SYMBOL-52 -1D21B;AL # GREEK VOCAL NOTATION SYMBOL-53 -1D21C;AL # GREEK VOCAL NOTATION SYMBOL-54 -1D21D;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-1 -1D21E;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-2 -1D21F;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-4 -1D220;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-5 -1D221;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-7 -1D222;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-8 -1D223;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-11 -1D224;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-12 -1D225;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-13 -1D226;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-14 -1D227;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-17 -1D228;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-18 -1D229;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-19 -1D22A;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-23 -1D22B;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-24 -1D22C;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-25 -1D22D;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-26 -1D22E;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-27 -1D22F;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-29 -1D230;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-30 -1D231;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-32 -1D232;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-36 -1D233;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-37 -1D234;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-38 -1D235;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-39 -1D236;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-40 -1D237;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-42 -1D238;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-43 -1D239;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-45 -1D23A;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-47 -1D23B;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-48 -1D23C;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-49 -1D23D;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-50 -1D23E;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-51 -1D23F;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-52 -1D240;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-53 -1D241;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-54 -1D242;CM # COMBINING GREEK MUSICAL TRISEME -1D243;CM # COMBINING GREEK MUSICAL TETRASEME -1D244;CM # COMBINING GREEK MUSICAL PENTASEME -1D245;AL # GREEK MUSICAL LEIMMA -1D300;AL # MONOGRAM FOR EARTH -1D301;AL # DIGRAM FOR HEAVENLY EARTH -1D302;AL # DIGRAM FOR HUMAN EARTH -1D303;AL # DIGRAM FOR EARTHLY HEAVEN -1D304;AL # DIGRAM FOR EARTHLY HUMAN -1D305;AL # DIGRAM FOR EARTH -1D306;AL # TETRAGRAM FOR CENTRE -1D307;AL # TETRAGRAM FOR FULL CIRCLE -1D308;AL # TETRAGRAM FOR MIRED -1D309;AL # TETRAGRAM FOR BARRIER -1D30A;AL # TETRAGRAM FOR KEEPING SMALL -1D30B;AL # TETRAGRAM FOR CONTRARIETY -1D30C;AL # TETRAGRAM FOR ASCENT -1D30D;AL # TETRAGRAM FOR OPPOSITION -1D30E;AL # TETRAGRAM FOR BRANCHING OUT -1D30F;AL # TETRAGRAM FOR DEFECTIVENESS OR DISTORTION -1D310;AL # TETRAGRAM FOR DIVERGENCE -1D311;AL # TETRAGRAM FOR YOUTHFULNESS -1D312;AL # TETRAGRAM FOR INCREASE -1D313;AL # TETRAGRAM FOR PENETRATION -1D314;AL # TETRAGRAM FOR REACH -1D315;AL # TETRAGRAM FOR CONTACT -1D316;AL # TETRAGRAM FOR HOLDING BACK -1D317;AL # TETRAGRAM FOR WAITING -1D318;AL # TETRAGRAM FOR FOLLOWING -1D319;AL # TETRAGRAM FOR ADVANCE -1D31A;AL # TETRAGRAM FOR RELEASE -1D31B;AL # TETRAGRAM FOR RESISTANCE -1D31C;AL # TETRAGRAM FOR EASE -1D31D;AL # TETRAGRAM FOR JOY -1D31E;AL # TETRAGRAM FOR CONTENTION -1D31F;AL # TETRAGRAM FOR ENDEAVOUR -1D320;AL # TETRAGRAM FOR DUTIES -1D321;AL # TETRAGRAM FOR CHANGE -1D322;AL # TETRAGRAM FOR DECISIVENESS -1D323;AL # TETRAGRAM FOR BOLD RESOLUTION -1D324;AL # TETRAGRAM FOR PACKING -1D325;AL # TETRAGRAM FOR LEGION -1D326;AL # TETRAGRAM FOR CLOSENESS -1D327;AL # TETRAGRAM FOR KINSHIP -1D328;AL # TETRAGRAM FOR GATHERING -1D329;AL # TETRAGRAM FOR STRENGTH -1D32A;AL # TETRAGRAM FOR PURITY -1D32B;AL # TETRAGRAM FOR FULLNESS -1D32C;AL # TETRAGRAM FOR RESIDENCE -1D32D;AL # TETRAGRAM FOR LAW OR MODEL -1D32E;AL # TETRAGRAM FOR RESPONSE -1D32F;AL # TETRAGRAM FOR GOING TO MEET -1D330;AL # TETRAGRAM FOR ENCOUNTERS -1D331;AL # TETRAGRAM FOR STOVE -1D332;AL # TETRAGRAM FOR GREATNESS -1D333;AL # TETRAGRAM FOR ENLARGEMENT -1D334;AL # TETRAGRAM FOR PATTERN -1D335;AL # TETRAGRAM FOR RITUAL -1D336;AL # TETRAGRAM FOR FLIGHT -1D337;AL # TETRAGRAM FOR VASTNESS OR WASTING -1D338;AL # TETRAGRAM FOR CONSTANCY -1D339;AL # TETRAGRAM FOR MEASURE -1D33A;AL # TETRAGRAM FOR ETERNITY -1D33B;AL # TETRAGRAM FOR UNITY -1D33C;AL # TETRAGRAM FOR DIMINISHMENT -1D33D;AL # TETRAGRAM FOR CLOSED MOUTH -1D33E;AL # TETRAGRAM FOR GUARDEDNESS -1D33F;AL # TETRAGRAM FOR GATHERING IN -1D340;AL # TETRAGRAM FOR MASSING -1D341;AL # TETRAGRAM FOR ACCUMULATION -1D342;AL # TETRAGRAM FOR EMBELLISHMENT -1D343;AL # TETRAGRAM FOR DOUBT -1D344;AL # TETRAGRAM FOR WATCH -1D345;AL # TETRAGRAM FOR SINKING -1D346;AL # TETRAGRAM FOR INNER -1D347;AL # TETRAGRAM FOR DEPARTURE -1D348;AL # TETRAGRAM FOR DARKENING -1D349;AL # TETRAGRAM FOR DIMMING -1D34A;AL # TETRAGRAM FOR EXHAUSTION -1D34B;AL # TETRAGRAM FOR SEVERANCE -1D34C;AL # TETRAGRAM FOR STOPPAGE -1D34D;AL # TETRAGRAM FOR HARDNESS -1D34E;AL # TETRAGRAM FOR COMPLETION -1D34F;AL # TETRAGRAM FOR CLOSURE -1D350;AL # TETRAGRAM FOR FAILURE -1D351;AL # TETRAGRAM FOR AGGRAVATION -1D352;AL # TETRAGRAM FOR COMPLIANCE -1D353;AL # TETRAGRAM FOR ON THE VERGE -1D354;AL # TETRAGRAM FOR DIFFICULTIES -1D355;AL # TETRAGRAM FOR LABOURING -1D356;AL # TETRAGRAM FOR FOSTERING -1D400;AL # MATHEMATICAL BOLD CAPITAL A -1D401;AL # MATHEMATICAL BOLD CAPITAL B -1D402;AL # MATHEMATICAL BOLD CAPITAL C -1D403;AL # MATHEMATICAL BOLD CAPITAL D -1D404;AL # MATHEMATICAL BOLD CAPITAL E -1D405;AL # MATHEMATICAL BOLD CAPITAL F -1D406;AL # MATHEMATICAL BOLD CAPITAL G -1D407;AL # MATHEMATICAL BOLD CAPITAL H -1D408;AL # MATHEMATICAL BOLD CAPITAL I -1D409;AL # MATHEMATICAL BOLD CAPITAL J -1D40A;AL # MATHEMATICAL BOLD CAPITAL K -1D40B;AL # MATHEMATICAL BOLD CAPITAL L -1D40C;AL # MATHEMATICAL BOLD CAPITAL M -1D40D;AL # MATHEMATICAL BOLD CAPITAL N -1D40E;AL # MATHEMATICAL BOLD CAPITAL O -1D40F;AL # MATHEMATICAL BOLD CAPITAL P -1D410;AL # MATHEMATICAL BOLD CAPITAL Q -1D411;AL # MATHEMATICAL BOLD CAPITAL R -1D412;AL # MATHEMATICAL BOLD CAPITAL S -1D413;AL # MATHEMATICAL BOLD CAPITAL T -1D414;AL # MATHEMATICAL BOLD CAPITAL U -1D415;AL # MATHEMATICAL BOLD CAPITAL V -1D416;AL # MATHEMATICAL BOLD CAPITAL W -1D417;AL # MATHEMATICAL BOLD CAPITAL X -1D418;AL # MATHEMATICAL BOLD CAPITAL Y -1D419;AL # MATHEMATICAL BOLD CAPITAL Z -1D41A;AL # MATHEMATICAL BOLD SMALL A -1D41B;AL # MATHEMATICAL BOLD SMALL B -1D41C;AL # MATHEMATICAL BOLD SMALL C -1D41D;AL # MATHEMATICAL BOLD SMALL D -1D41E;AL # MATHEMATICAL BOLD SMALL E -1D41F;AL # MATHEMATICAL BOLD SMALL F -1D420;AL # MATHEMATICAL BOLD SMALL G -1D421;AL # MATHEMATICAL BOLD SMALL H -1D422;AL # MATHEMATICAL BOLD SMALL I -1D423;AL # MATHEMATICAL BOLD SMALL J -1D424;AL # MATHEMATICAL BOLD SMALL K -1D425;AL # MATHEMATICAL BOLD SMALL L -1D426;AL # MATHEMATICAL BOLD SMALL M -1D427;AL # MATHEMATICAL BOLD SMALL N -1D428;AL # MATHEMATICAL BOLD SMALL O -1D429;AL # MATHEMATICAL BOLD SMALL P -1D42A;AL # MATHEMATICAL BOLD SMALL Q -1D42B;AL # MATHEMATICAL BOLD SMALL R -1D42C;AL # MATHEMATICAL BOLD SMALL S -1D42D;AL # MATHEMATICAL BOLD SMALL T -1D42E;AL # MATHEMATICAL BOLD SMALL U -1D42F;AL # MATHEMATICAL BOLD SMALL V -1D430;AL # MATHEMATICAL BOLD SMALL W -1D431;AL # MATHEMATICAL BOLD SMALL X -1D432;AL # MATHEMATICAL BOLD SMALL Y -1D433;AL # MATHEMATICAL BOLD SMALL Z -1D434;AL # MATHEMATICAL ITALIC CAPITAL A -1D435;AL # MATHEMATICAL ITALIC CAPITAL B -1D436;AL # MATHEMATICAL ITALIC CAPITAL C -1D437;AL # MATHEMATICAL ITALIC CAPITAL D -1D438;AL # MATHEMATICAL ITALIC CAPITAL E -1D439;AL # MATHEMATICAL ITALIC CAPITAL F -1D43A;AL # MATHEMATICAL ITALIC CAPITAL G -1D43B;AL # MATHEMATICAL ITALIC CAPITAL H -1D43C;AL # MATHEMATICAL ITALIC CAPITAL I -1D43D;AL # MATHEMATICAL ITALIC CAPITAL J -1D43E;AL # MATHEMATICAL ITALIC CAPITAL K -1D43F;AL # MATHEMATICAL ITALIC CAPITAL L -1D440;AL # MATHEMATICAL ITALIC CAPITAL M -1D441;AL # MATHEMATICAL ITALIC CAPITAL N -1D442;AL # MATHEMATICAL ITALIC CAPITAL O -1D443;AL # MATHEMATICAL ITALIC CAPITAL P -1D444;AL # MATHEMATICAL ITALIC CAPITAL Q -1D445;AL # MATHEMATICAL ITALIC CAPITAL R -1D446;AL # MATHEMATICAL ITALIC CAPITAL S -1D447;AL # MATHEMATICAL ITALIC CAPITAL T -1D448;AL # MATHEMATICAL ITALIC CAPITAL U -1D449;AL # MATHEMATICAL ITALIC CAPITAL V -1D44A;AL # MATHEMATICAL ITALIC CAPITAL W -1D44B;AL # MATHEMATICAL ITALIC CAPITAL X -1D44C;AL # MATHEMATICAL ITALIC CAPITAL Y -1D44D;AL # MATHEMATICAL ITALIC CAPITAL Z -1D44E;AL # MATHEMATICAL ITALIC SMALL A -1D44F;AL # MATHEMATICAL ITALIC SMALL B -1D450;AL # MATHEMATICAL ITALIC SMALL C -1D451;AL # MATHEMATICAL ITALIC SMALL D -1D452;AL # MATHEMATICAL ITALIC SMALL E -1D453;AL # MATHEMATICAL ITALIC SMALL F -1D454;AL # MATHEMATICAL ITALIC SMALL G -1D456;AL # MATHEMATICAL ITALIC SMALL I -1D457;AL # MATHEMATICAL ITALIC SMALL J -1D458;AL # MATHEMATICAL ITALIC SMALL K -1D459;AL # MATHEMATICAL ITALIC SMALL L -1D45A;AL # MATHEMATICAL ITALIC SMALL M -1D45B;AL # MATHEMATICAL ITALIC SMALL N -1D45C;AL # MATHEMATICAL ITALIC SMALL O -1D45D;AL # MATHEMATICAL ITALIC SMALL P -1D45E;AL # MATHEMATICAL ITALIC SMALL Q -1D45F;AL # MATHEMATICAL ITALIC SMALL R -1D460;AL # MATHEMATICAL ITALIC SMALL S -1D461;AL # MATHEMATICAL ITALIC SMALL T -1D462;AL # MATHEMATICAL ITALIC SMALL U -1D463;AL # MATHEMATICAL ITALIC SMALL V -1D464;AL # MATHEMATICAL ITALIC SMALL W -1D465;AL # MATHEMATICAL ITALIC SMALL X -1D466;AL # MATHEMATICAL ITALIC SMALL Y -1D467;AL # MATHEMATICAL ITALIC SMALL Z -1D468;AL # MATHEMATICAL BOLD ITALIC CAPITAL A -1D469;AL # MATHEMATICAL BOLD ITALIC CAPITAL B -1D46A;AL # MATHEMATICAL BOLD ITALIC CAPITAL C -1D46B;AL # MATHEMATICAL BOLD ITALIC CAPITAL D -1D46C;AL # MATHEMATICAL BOLD ITALIC CAPITAL E -1D46D;AL # MATHEMATICAL BOLD ITALIC CAPITAL F -1D46E;AL # MATHEMATICAL BOLD ITALIC CAPITAL G -1D46F;AL # MATHEMATICAL BOLD ITALIC CAPITAL H -1D470;AL # MATHEMATICAL BOLD ITALIC CAPITAL I -1D471;AL # MATHEMATICAL BOLD ITALIC CAPITAL J -1D472;AL # MATHEMATICAL BOLD ITALIC CAPITAL K -1D473;AL # MATHEMATICAL BOLD ITALIC CAPITAL L -1D474;AL # MATHEMATICAL BOLD ITALIC CAPITAL M -1D475;AL # MATHEMATICAL BOLD ITALIC CAPITAL N -1D476;AL # MATHEMATICAL BOLD ITALIC CAPITAL O -1D477;AL # MATHEMATICAL BOLD ITALIC CAPITAL P -1D478;AL # MATHEMATICAL BOLD ITALIC CAPITAL Q -1D479;AL # MATHEMATICAL BOLD ITALIC CAPITAL R -1D47A;AL # MATHEMATICAL BOLD ITALIC CAPITAL S -1D47B;AL # MATHEMATICAL BOLD ITALIC CAPITAL T -1D47C;AL # MATHEMATICAL BOLD ITALIC CAPITAL U -1D47D;AL # MATHEMATICAL BOLD ITALIC CAPITAL V -1D47E;AL # MATHEMATICAL BOLD ITALIC CAPITAL W -1D47F;AL # MATHEMATICAL BOLD ITALIC CAPITAL X -1D480;AL # MATHEMATICAL BOLD ITALIC CAPITAL Y -1D481;AL # MATHEMATICAL BOLD ITALIC CAPITAL Z -1D482;AL # MATHEMATICAL BOLD ITALIC SMALL A -1D483;AL # MATHEMATICAL BOLD ITALIC SMALL B -1D484;AL # MATHEMATICAL BOLD ITALIC SMALL C -1D485;AL # MATHEMATICAL BOLD ITALIC SMALL D -1D486;AL # MATHEMATICAL BOLD ITALIC SMALL E -1D487;AL # MATHEMATICAL BOLD ITALIC SMALL F -1D488;AL # MATHEMATICAL BOLD ITALIC SMALL G -1D489;AL # MATHEMATICAL BOLD ITALIC SMALL H -1D48A;AL # MATHEMATICAL BOLD ITALIC SMALL I -1D48B;AL # MATHEMATICAL BOLD ITALIC SMALL J -1D48C;AL # MATHEMATICAL BOLD ITALIC SMALL K -1D48D;AL # MATHEMATICAL BOLD ITALIC SMALL L -1D48E;AL # MATHEMATICAL BOLD ITALIC SMALL M -1D48F;AL # MATHEMATICAL BOLD ITALIC SMALL N -1D490;AL # MATHEMATICAL BOLD ITALIC SMALL O -1D491;AL # MATHEMATICAL BOLD ITALIC SMALL P -1D492;AL # MATHEMATICAL BOLD ITALIC SMALL Q -1D493;AL # MATHEMATICAL BOLD ITALIC SMALL R -1D494;AL # MATHEMATICAL BOLD ITALIC SMALL S -1D495;AL # MATHEMATICAL BOLD ITALIC SMALL T -1D496;AL # MATHEMATICAL BOLD ITALIC SMALL U -1D497;AL # MATHEMATICAL BOLD ITALIC SMALL V -1D498;AL # MATHEMATICAL BOLD ITALIC SMALL W -1D499;AL # MATHEMATICAL BOLD ITALIC SMALL X -1D49A;AL # MATHEMATICAL BOLD ITALIC SMALL Y -1D49B;AL # MATHEMATICAL BOLD ITALIC SMALL Z -1D49C;AL # MATHEMATICAL SCRIPT CAPITAL A -1D49E;AL # MATHEMATICAL SCRIPT CAPITAL C -1D49F;AL # MATHEMATICAL SCRIPT CAPITAL D -1D4A2;AL # MATHEMATICAL SCRIPT CAPITAL G -1D4A5;AL # MATHEMATICAL SCRIPT CAPITAL J -1D4A6;AL # MATHEMATICAL SCRIPT CAPITAL K -1D4A9;AL # MATHEMATICAL SCRIPT CAPITAL N -1D4AA;AL # MATHEMATICAL SCRIPT CAPITAL O -1D4AB;AL # MATHEMATICAL SCRIPT CAPITAL P -1D4AC;AL # MATHEMATICAL SCRIPT CAPITAL Q -1D4AE;AL # MATHEMATICAL SCRIPT CAPITAL S -1D4AF;AL # MATHEMATICAL SCRIPT CAPITAL T -1D4B0;AL # MATHEMATICAL SCRIPT CAPITAL U -1D4B1;AL # MATHEMATICAL SCRIPT CAPITAL V -1D4B2;AL # MATHEMATICAL SCRIPT CAPITAL W -1D4B3;AL # MATHEMATICAL SCRIPT CAPITAL X -1D4B4;AL # MATHEMATICAL SCRIPT CAPITAL Y -1D4B5;AL # MATHEMATICAL SCRIPT CAPITAL Z -1D4B6;AL # MATHEMATICAL SCRIPT SMALL A -1D4B7;AL # MATHEMATICAL SCRIPT SMALL B -1D4B8;AL # MATHEMATICAL SCRIPT SMALL C -1D4B9;AL # MATHEMATICAL SCRIPT SMALL D -1D4BB;AL # MATHEMATICAL SCRIPT SMALL F -1D4BD;AL # MATHEMATICAL SCRIPT SMALL H -1D4BE;AL # MATHEMATICAL SCRIPT SMALL I -1D4BF;AL # MATHEMATICAL SCRIPT SMALL J -1D4C0;AL # MATHEMATICAL SCRIPT SMALL K -1D4C1;AL # MATHEMATICAL SCRIPT SMALL L -1D4C2;AL # MATHEMATICAL SCRIPT SMALL M -1D4C3;AL # MATHEMATICAL SCRIPT SMALL N -1D4C5;AL # MATHEMATICAL SCRIPT SMALL P -1D4C6;AL # MATHEMATICAL SCRIPT SMALL Q -1D4C7;AL # MATHEMATICAL SCRIPT SMALL R -1D4C8;AL # MATHEMATICAL SCRIPT SMALL S -1D4C9;AL # MATHEMATICAL SCRIPT SMALL T -1D4CA;AL # MATHEMATICAL SCRIPT SMALL U -1D4CB;AL # MATHEMATICAL SCRIPT SMALL V -1D4CC;AL # MATHEMATICAL SCRIPT SMALL W -1D4CD;AL # MATHEMATICAL SCRIPT SMALL X -1D4CE;AL # MATHEMATICAL SCRIPT SMALL Y -1D4CF;AL # MATHEMATICAL SCRIPT SMALL Z -1D4D0;AL # MATHEMATICAL BOLD SCRIPT CAPITAL A -1D4D1;AL # MATHEMATICAL BOLD SCRIPT CAPITAL B -1D4D2;AL # MATHEMATICAL BOLD SCRIPT CAPITAL C -1D4D3;AL # MATHEMATICAL BOLD SCRIPT CAPITAL D -1D4D4;AL # MATHEMATICAL BOLD SCRIPT CAPITAL E -1D4D5;AL # MATHEMATICAL BOLD SCRIPT CAPITAL F -1D4D6;AL # MATHEMATICAL BOLD SCRIPT CAPITAL G -1D4D7;AL # MATHEMATICAL BOLD SCRIPT CAPITAL H -1D4D8;AL # MATHEMATICAL BOLD SCRIPT CAPITAL I -1D4D9;AL # MATHEMATICAL BOLD SCRIPT CAPITAL J -1D4DA;AL # MATHEMATICAL BOLD SCRIPT CAPITAL K -1D4DB;AL # MATHEMATICAL BOLD SCRIPT CAPITAL L -1D4DC;AL # MATHEMATICAL BOLD SCRIPT CAPITAL M -1D4DD;AL # MATHEMATICAL BOLD SCRIPT CAPITAL N -1D4DE;AL # MATHEMATICAL BOLD SCRIPT CAPITAL O -1D4DF;AL # MATHEMATICAL BOLD SCRIPT CAPITAL P -1D4E0;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Q -1D4E1;AL # MATHEMATICAL BOLD SCRIPT CAPITAL R -1D4E2;AL # MATHEMATICAL BOLD SCRIPT CAPITAL S -1D4E3;AL # MATHEMATICAL BOLD SCRIPT CAPITAL T -1D4E4;AL # MATHEMATICAL BOLD SCRIPT CAPITAL U -1D4E5;AL # MATHEMATICAL BOLD SCRIPT CAPITAL V -1D4E6;AL # MATHEMATICAL BOLD SCRIPT CAPITAL W -1D4E7;AL # MATHEMATICAL BOLD SCRIPT CAPITAL X -1D4E8;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Y -1D4E9;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Z -1D4EA;AL # MATHEMATICAL BOLD SCRIPT SMALL A -1D4EB;AL # MATHEMATICAL BOLD SCRIPT SMALL B -1D4EC;AL # MATHEMATICAL BOLD SCRIPT SMALL C -1D4ED;AL # MATHEMATICAL BOLD SCRIPT SMALL D -1D4EE;AL # MATHEMATICAL BOLD SCRIPT SMALL E -1D4EF;AL # MATHEMATICAL BOLD SCRIPT SMALL F -1D4F0;AL # MATHEMATICAL BOLD SCRIPT SMALL G -1D4F1;AL # MATHEMATICAL BOLD SCRIPT SMALL H -1D4F2;AL # MATHEMATICAL BOLD SCRIPT SMALL I -1D4F3;AL # MATHEMATICAL BOLD SCRIPT SMALL J -1D4F4;AL # MATHEMATICAL BOLD SCRIPT SMALL K -1D4F5;AL # MATHEMATICAL BOLD SCRIPT SMALL L -1D4F6;AL # MATHEMATICAL BOLD SCRIPT SMALL M -1D4F7;AL # MATHEMATICAL BOLD SCRIPT SMALL N -1D4F8;AL # MATHEMATICAL BOLD SCRIPT SMALL O -1D4F9;AL # MATHEMATICAL BOLD SCRIPT SMALL P -1D4FA;AL # MATHEMATICAL BOLD SCRIPT SMALL Q -1D4FB;AL # MATHEMATICAL BOLD SCRIPT SMALL R -1D4FC;AL # MATHEMATICAL BOLD SCRIPT SMALL S -1D4FD;AL # MATHEMATICAL BOLD SCRIPT SMALL T -1D4FE;AL # MATHEMATICAL BOLD SCRIPT SMALL U -1D4FF;AL # MATHEMATICAL BOLD SCRIPT SMALL V -1D500;AL # MATHEMATICAL BOLD SCRIPT SMALL W -1D501;AL # MATHEMATICAL BOLD SCRIPT SMALL X -1D502;AL # MATHEMATICAL BOLD SCRIPT SMALL Y -1D503;AL # MATHEMATICAL BOLD SCRIPT SMALL Z -1D504;AL # MATHEMATICAL FRAKTUR CAPITAL A -1D505;AL # MATHEMATICAL FRAKTUR CAPITAL B -1D507;AL # MATHEMATICAL FRAKTUR CAPITAL D -1D508;AL # MATHEMATICAL FRAKTUR CAPITAL E -1D509;AL # MATHEMATICAL FRAKTUR CAPITAL F -1D50A;AL # MATHEMATICAL FRAKTUR CAPITAL G -1D50D;AL # MATHEMATICAL FRAKTUR CAPITAL J -1D50E;AL # MATHEMATICAL FRAKTUR CAPITAL K -1D50F;AL # MATHEMATICAL FRAKTUR CAPITAL L -1D510;AL # MATHEMATICAL FRAKTUR CAPITAL M -1D511;AL # MATHEMATICAL FRAKTUR CAPITAL N -1D512;AL # MATHEMATICAL FRAKTUR CAPITAL O -1D513;AL # MATHEMATICAL FRAKTUR CAPITAL P -1D514;AL # MATHEMATICAL FRAKTUR CAPITAL Q -1D516;AL # MATHEMATICAL FRAKTUR CAPITAL S -1D517;AL # MATHEMATICAL FRAKTUR CAPITAL T -1D518;AL # MATHEMATICAL FRAKTUR CAPITAL U -1D519;AL # MATHEMATICAL FRAKTUR CAPITAL V -1D51A;AL # MATHEMATICAL FRAKTUR CAPITAL W -1D51B;AL # MATHEMATICAL FRAKTUR CAPITAL X -1D51C;AL # MATHEMATICAL FRAKTUR CAPITAL Y -1D51E;AL # MATHEMATICAL FRAKTUR SMALL A -1D51F;AL # MATHEMATICAL FRAKTUR SMALL B -1D520;AL # MATHEMATICAL FRAKTUR SMALL C -1D521;AL # MATHEMATICAL FRAKTUR SMALL D -1D522;AL # MATHEMATICAL FRAKTUR SMALL E -1D523;AL # MATHEMATICAL FRAKTUR SMALL F -1D524;AL # MATHEMATICAL FRAKTUR SMALL G -1D525;AL # MATHEMATICAL FRAKTUR SMALL H -1D526;AL # MATHEMATICAL FRAKTUR SMALL I -1D527;AL # MATHEMATICAL FRAKTUR SMALL J -1D528;AL # MATHEMATICAL FRAKTUR SMALL K -1D529;AL # MATHEMATICAL FRAKTUR SMALL L -1D52A;AL # MATHEMATICAL FRAKTUR SMALL M -1D52B;AL # MATHEMATICAL FRAKTUR SMALL N -1D52C;AL # MATHEMATICAL FRAKTUR SMALL O -1D52D;AL # MATHEMATICAL FRAKTUR SMALL P -1D52E;AL # MATHEMATICAL FRAKTUR SMALL Q -1D52F;AL # MATHEMATICAL FRAKTUR SMALL R -1D530;AL # MATHEMATICAL FRAKTUR SMALL S -1D531;AL # MATHEMATICAL FRAKTUR SMALL T -1D532;AL # MATHEMATICAL FRAKTUR SMALL U -1D533;AL # MATHEMATICAL FRAKTUR SMALL V -1D534;AL # MATHEMATICAL FRAKTUR SMALL W -1D535;AL # MATHEMATICAL FRAKTUR SMALL X -1D536;AL # MATHEMATICAL FRAKTUR SMALL Y -1D537;AL # MATHEMATICAL FRAKTUR SMALL Z -1D538;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL A -1D539;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL B -1D53B;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL D -1D53C;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL E -1D53D;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL F -1D53E;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL G -1D540;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL I -1D541;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL J -1D542;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL K -1D543;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL L -1D544;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL M -1D546;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL O -1D54A;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL S -1D54B;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL T -1D54C;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL U -1D54D;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL V -1D54E;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL W -1D54F;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL X -1D550;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL Y -1D552;AL # MATHEMATICAL DOUBLE-STRUCK SMALL A -1D553;AL # MATHEMATICAL DOUBLE-STRUCK SMALL B -1D554;AL # MATHEMATICAL DOUBLE-STRUCK SMALL C -1D555;AL # MATHEMATICAL DOUBLE-STRUCK SMALL D -1D556;AL # MATHEMATICAL DOUBLE-STRUCK SMALL E -1D557;AL # MATHEMATICAL DOUBLE-STRUCK SMALL F -1D558;AL # MATHEMATICAL DOUBLE-STRUCK SMALL G -1D559;AL # MATHEMATICAL DOUBLE-STRUCK SMALL H -1D55A;AL # MATHEMATICAL DOUBLE-STRUCK SMALL I -1D55B;AL # MATHEMATICAL DOUBLE-STRUCK SMALL J -1D55C;AL # MATHEMATICAL DOUBLE-STRUCK SMALL K -1D55D;AL # MATHEMATICAL DOUBLE-STRUCK SMALL L -1D55E;AL # MATHEMATICAL DOUBLE-STRUCK SMALL M -1D55F;AL # MATHEMATICAL DOUBLE-STRUCK SMALL N -1D560;AL # MATHEMATICAL DOUBLE-STRUCK SMALL O -1D561;AL # MATHEMATICAL DOUBLE-STRUCK SMALL P -1D562;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Q -1D563;AL # MATHEMATICAL DOUBLE-STRUCK SMALL R -1D564;AL # MATHEMATICAL DOUBLE-STRUCK SMALL S -1D565;AL # MATHEMATICAL DOUBLE-STRUCK SMALL T -1D566;AL # MATHEMATICAL DOUBLE-STRUCK SMALL U -1D567;AL # MATHEMATICAL DOUBLE-STRUCK SMALL V -1D568;AL # MATHEMATICAL DOUBLE-STRUCK SMALL W -1D569;AL # MATHEMATICAL DOUBLE-STRUCK SMALL X -1D56A;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Y -1D56B;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Z -1D56C;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL A -1D56D;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL B -1D56E;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL C -1D56F;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL D -1D570;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL E -1D571;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL F -1D572;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL G -1D573;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL H -1D574;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL I -1D575;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL J -1D576;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL K -1D577;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL L -1D578;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL M -1D579;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL N -1D57A;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL O -1D57B;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL P -1D57C;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Q -1D57D;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL R -1D57E;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL S -1D57F;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL T -1D580;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL U -1D581;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL V -1D582;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL W -1D583;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL X -1D584;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Y -1D585;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Z -1D586;AL # MATHEMATICAL BOLD FRAKTUR SMALL A -1D587;AL # MATHEMATICAL BOLD FRAKTUR SMALL B -1D588;AL # MATHEMATICAL BOLD FRAKTUR SMALL C -1D589;AL # MATHEMATICAL BOLD FRAKTUR SMALL D -1D58A;AL # MATHEMATICAL BOLD FRAKTUR SMALL E -1D58B;AL # MATHEMATICAL BOLD FRAKTUR SMALL F -1D58C;AL # MATHEMATICAL BOLD FRAKTUR SMALL G -1D58D;AL # MATHEMATICAL BOLD FRAKTUR SMALL H -1D58E;AL # MATHEMATICAL BOLD FRAKTUR SMALL I -1D58F;AL # MATHEMATICAL BOLD FRAKTUR SMALL J -1D590;AL # MATHEMATICAL BOLD FRAKTUR SMALL K -1D591;AL # MATHEMATICAL BOLD FRAKTUR SMALL L -1D592;AL # MATHEMATICAL BOLD FRAKTUR SMALL M -1D593;AL # MATHEMATICAL BOLD FRAKTUR SMALL N -1D594;AL # MATHEMATICAL BOLD FRAKTUR SMALL O -1D595;AL # MATHEMATICAL BOLD FRAKTUR SMALL P -1D596;AL # MATHEMATICAL BOLD FRAKTUR SMALL Q -1D597;AL # MATHEMATICAL BOLD FRAKTUR SMALL R -1D598;AL # MATHEMATICAL BOLD FRAKTUR SMALL S -1D599;AL # MATHEMATICAL BOLD FRAKTUR SMALL T -1D59A;AL # MATHEMATICAL BOLD FRAKTUR SMALL U -1D59B;AL # MATHEMATICAL BOLD FRAKTUR SMALL V -1D59C;AL # MATHEMATICAL BOLD FRAKTUR SMALL W -1D59D;AL # MATHEMATICAL BOLD FRAKTUR SMALL X -1D59E;AL # MATHEMATICAL BOLD FRAKTUR SMALL Y -1D59F;AL # MATHEMATICAL BOLD FRAKTUR SMALL Z -1D5A0;AL # MATHEMATICAL SANS-SERIF CAPITAL A -1D5A1;AL # MATHEMATICAL SANS-SERIF CAPITAL B -1D5A2;AL # MATHEMATICAL SANS-SERIF CAPITAL C -1D5A3;AL # MATHEMATICAL SANS-SERIF CAPITAL D -1D5A4;AL # MATHEMATICAL SANS-SERIF CAPITAL E -1D5A5;AL # MATHEMATICAL SANS-SERIF CAPITAL F -1D5A6;AL # MATHEMATICAL SANS-SERIF CAPITAL G -1D5A7;AL # MATHEMATICAL SANS-SERIF CAPITAL H -1D5A8;AL # MATHEMATICAL SANS-SERIF CAPITAL I -1D5A9;AL # MATHEMATICAL SANS-SERIF CAPITAL J -1D5AA;AL # MATHEMATICAL SANS-SERIF CAPITAL K -1D5AB;AL # MATHEMATICAL SANS-SERIF CAPITAL L -1D5AC;AL # MATHEMATICAL SANS-SERIF CAPITAL M -1D5AD;AL # MATHEMATICAL SANS-SERIF CAPITAL N -1D5AE;AL # MATHEMATICAL SANS-SERIF CAPITAL O -1D5AF;AL # MATHEMATICAL SANS-SERIF CAPITAL P -1D5B0;AL # MATHEMATICAL SANS-SERIF CAPITAL Q -1D5B1;AL # MATHEMATICAL SANS-SERIF CAPITAL R -1D5B2;AL # MATHEMATICAL SANS-SERIF CAPITAL S -1D5B3;AL # MATHEMATICAL SANS-SERIF CAPITAL T -1D5B4;AL # MATHEMATICAL SANS-SERIF CAPITAL U -1D5B5;AL # MATHEMATICAL SANS-SERIF CAPITAL V -1D5B6;AL # MATHEMATICAL SANS-SERIF CAPITAL W -1D5B7;AL # MATHEMATICAL SANS-SERIF CAPITAL X -1D5B8;AL # MATHEMATICAL SANS-SERIF CAPITAL Y -1D5B9;AL # MATHEMATICAL SANS-SERIF CAPITAL Z -1D5BA;AL # MATHEMATICAL SANS-SERIF SMALL A -1D5BB;AL # MATHEMATICAL SANS-SERIF SMALL B -1D5BC;AL # MATHEMATICAL SANS-SERIF SMALL C -1D5BD;AL # MATHEMATICAL SANS-SERIF SMALL D -1D5BE;AL # MATHEMATICAL SANS-SERIF SMALL E -1D5BF;AL # MATHEMATICAL SANS-SERIF SMALL F -1D5C0;AL # MATHEMATICAL SANS-SERIF SMALL G -1D5C1;AL # MATHEMATICAL SANS-SERIF SMALL H -1D5C2;AL # MATHEMATICAL SANS-SERIF SMALL I -1D5C3;AL # MATHEMATICAL SANS-SERIF SMALL J -1D5C4;AL # MATHEMATICAL SANS-SERIF SMALL K -1D5C5;AL # MATHEMATICAL SANS-SERIF SMALL L -1D5C6;AL # MATHEMATICAL SANS-SERIF SMALL M -1D5C7;AL # MATHEMATICAL SANS-SERIF SMALL N -1D5C8;AL # MATHEMATICAL SANS-SERIF SMALL O -1D5C9;AL # MATHEMATICAL SANS-SERIF SMALL P -1D5CA;AL # MATHEMATICAL SANS-SERIF SMALL Q -1D5CB;AL # MATHEMATICAL SANS-SERIF SMALL R -1D5CC;AL # MATHEMATICAL SANS-SERIF SMALL S -1D5CD;AL # MATHEMATICAL SANS-SERIF SMALL T -1D5CE;AL # MATHEMATICAL SANS-SERIF SMALL U -1D5CF;AL # MATHEMATICAL SANS-SERIF SMALL V -1D5D0;AL # MATHEMATICAL SANS-SERIF SMALL W -1D5D1;AL # MATHEMATICAL SANS-SERIF SMALL X -1D5D2;AL # MATHEMATICAL SANS-SERIF SMALL Y -1D5D3;AL # MATHEMATICAL SANS-SERIF SMALL Z -1D5D4;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL A -1D5D5;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL B -1D5D6;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL C -1D5D7;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL D -1D5D8;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL E -1D5D9;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL F -1D5DA;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL G -1D5DB;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL H -1D5DC;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL I -1D5DD;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL J -1D5DE;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL K -1D5DF;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL L -1D5E0;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL M -1D5E1;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL N -1D5E2;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL O -1D5E3;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL P -1D5E4;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Q -1D5E5;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL R -1D5E6;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL S -1D5E7;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL T -1D5E8;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL U -1D5E9;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL V -1D5EA;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL W -1D5EB;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL X -1D5EC;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Y -1D5ED;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Z -1D5EE;AL # MATHEMATICAL SANS-SERIF BOLD SMALL A -1D5EF;AL # MATHEMATICAL SANS-SERIF BOLD SMALL B -1D5F0;AL # MATHEMATICAL SANS-SERIF BOLD SMALL C -1D5F1;AL # MATHEMATICAL SANS-SERIF BOLD SMALL D -1D5F2;AL # MATHEMATICAL SANS-SERIF BOLD SMALL E -1D5F3;AL # MATHEMATICAL SANS-SERIF BOLD SMALL F -1D5F4;AL # MATHEMATICAL SANS-SERIF BOLD SMALL G -1D5F5;AL # MATHEMATICAL SANS-SERIF BOLD SMALL H -1D5F6;AL # MATHEMATICAL SANS-SERIF BOLD SMALL I -1D5F7;AL # MATHEMATICAL SANS-SERIF BOLD SMALL J -1D5F8;AL # MATHEMATICAL SANS-SERIF BOLD SMALL K -1D5F9;AL # MATHEMATICAL SANS-SERIF BOLD SMALL L -1D5FA;AL # MATHEMATICAL SANS-SERIF BOLD SMALL M -1D5FB;AL # MATHEMATICAL SANS-SERIF BOLD SMALL N -1D5FC;AL # MATHEMATICAL SANS-SERIF BOLD SMALL O -1D5FD;AL # MATHEMATICAL SANS-SERIF BOLD SMALL P -1D5FE;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Q -1D5FF;AL # MATHEMATICAL SANS-SERIF BOLD SMALL R -1D600;AL # MATHEMATICAL SANS-SERIF BOLD SMALL S -1D601;AL # MATHEMATICAL SANS-SERIF BOLD SMALL T -1D602;AL # MATHEMATICAL SANS-SERIF BOLD SMALL U -1D603;AL # MATHEMATICAL SANS-SERIF BOLD SMALL V -1D604;AL # MATHEMATICAL SANS-SERIF BOLD SMALL W -1D605;AL # MATHEMATICAL SANS-SERIF BOLD SMALL X -1D606;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Y -1D607;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Z -1D608;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL A -1D609;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL B -1D60A;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL C -1D60B;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL D -1D60C;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL E -1D60D;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL F -1D60E;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL G -1D60F;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL H -1D610;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL I -1D611;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL J -1D612;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL K -1D613;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL L -1D614;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL M -1D615;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL N -1D616;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL O -1D617;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL P -1D618;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q -1D619;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL R -1D61A;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL S -1D61B;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL T -1D61C;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL U -1D61D;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL V -1D61E;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL W -1D61F;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL X -1D620;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y -1D621;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z -1D622;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL A -1D623;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL B -1D624;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL C -1D625;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL D -1D626;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL E -1D627;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL F -1D628;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL G -1D629;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL H -1D62A;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL I -1D62B;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL J -1D62C;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL K -1D62D;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL L -1D62E;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL M -1D62F;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL N -1D630;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL O -1D631;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL P -1D632;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Q -1D633;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL R -1D634;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL S -1D635;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL T -1D636;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL U -1D637;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL V -1D638;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL W -1D639;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL X -1D63A;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Y -1D63B;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Z -1D63C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A -1D63D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B -1D63E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C -1D63F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D -1D640;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E -1D641;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F -1D642;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G -1D643;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H -1D644;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I -1D645;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J -1D646;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K -1D647;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L -1D648;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M -1D649;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N -1D64A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O -1D64B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P -1D64C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q -1D64D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R -1D64E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S -1D64F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T -1D650;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U -1D651;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V -1D652;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W -1D653;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X -1D654;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y -1D655;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z -1D656;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A -1D657;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B -1D658;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C -1D659;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D -1D65A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E -1D65B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F -1D65C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G -1D65D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H -1D65E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I -1D65F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J -1D660;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K -1D661;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L -1D662;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M -1D663;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N -1D664;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O -1D665;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P -1D666;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q -1D667;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R -1D668;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S -1D669;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T -1D66A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U -1D66B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V -1D66C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W -1D66D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X -1D66E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y -1D66F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z -1D670;AL # MATHEMATICAL MONOSPACE CAPITAL A -1D671;AL # MATHEMATICAL MONOSPACE CAPITAL B -1D672;AL # MATHEMATICAL MONOSPACE CAPITAL C -1D673;AL # MATHEMATICAL MONOSPACE CAPITAL D -1D674;AL # MATHEMATICAL MONOSPACE CAPITAL E -1D675;AL # MATHEMATICAL MONOSPACE CAPITAL F -1D676;AL # MATHEMATICAL MONOSPACE CAPITAL G -1D677;AL # MATHEMATICAL MONOSPACE CAPITAL H -1D678;AL # MATHEMATICAL MONOSPACE CAPITAL I -1D679;AL # MATHEMATICAL MONOSPACE CAPITAL J -1D67A;AL # MATHEMATICAL MONOSPACE CAPITAL K -1D67B;AL # MATHEMATICAL MONOSPACE CAPITAL L -1D67C;AL # MATHEMATICAL MONOSPACE CAPITAL M -1D67D;AL # MATHEMATICAL MONOSPACE CAPITAL N -1D67E;AL # MATHEMATICAL MONOSPACE CAPITAL O -1D67F;AL # MATHEMATICAL MONOSPACE CAPITAL P -1D680;AL # MATHEMATICAL MONOSPACE CAPITAL Q -1D681;AL # MATHEMATICAL MONOSPACE CAPITAL R -1D682;AL # MATHEMATICAL MONOSPACE CAPITAL S -1D683;AL # MATHEMATICAL MONOSPACE CAPITAL T -1D684;AL # MATHEMATICAL MONOSPACE CAPITAL U -1D685;AL # MATHEMATICAL MONOSPACE CAPITAL V -1D686;AL # MATHEMATICAL MONOSPACE CAPITAL W -1D687;AL # MATHEMATICAL MONOSPACE CAPITAL X -1D688;AL # MATHEMATICAL MONOSPACE CAPITAL Y -1D689;AL # MATHEMATICAL MONOSPACE CAPITAL Z -1D68A;AL # MATHEMATICAL MONOSPACE SMALL A -1D68B;AL # MATHEMATICAL MONOSPACE SMALL B -1D68C;AL # MATHEMATICAL MONOSPACE SMALL C -1D68D;AL # MATHEMATICAL MONOSPACE SMALL D -1D68E;AL # MATHEMATICAL MONOSPACE SMALL E -1D68F;AL # MATHEMATICAL MONOSPACE SMALL F -1D690;AL # MATHEMATICAL MONOSPACE SMALL G -1D691;AL # MATHEMATICAL MONOSPACE SMALL H -1D692;AL # MATHEMATICAL MONOSPACE SMALL I -1D693;AL # MATHEMATICAL MONOSPACE SMALL J -1D694;AL # MATHEMATICAL MONOSPACE SMALL K -1D695;AL # MATHEMATICAL MONOSPACE SMALL L -1D696;AL # MATHEMATICAL MONOSPACE SMALL M -1D697;AL # MATHEMATICAL MONOSPACE SMALL N -1D698;AL # MATHEMATICAL MONOSPACE SMALL O -1D699;AL # MATHEMATICAL MONOSPACE SMALL P -1D69A;AL # MATHEMATICAL MONOSPACE SMALL Q -1D69B;AL # MATHEMATICAL MONOSPACE SMALL R -1D69C;AL # MATHEMATICAL MONOSPACE SMALL S -1D69D;AL # MATHEMATICAL MONOSPACE SMALL T -1D69E;AL # MATHEMATICAL MONOSPACE SMALL U -1D69F;AL # MATHEMATICAL MONOSPACE SMALL V -1D6A0;AL # MATHEMATICAL MONOSPACE SMALL W -1D6A1;AL # MATHEMATICAL MONOSPACE SMALL X -1D6A2;AL # MATHEMATICAL MONOSPACE SMALL Y -1D6A3;AL # MATHEMATICAL MONOSPACE SMALL Z -1D6A4;AL # MATHEMATICAL ITALIC SMALL DOTLESS I -1D6A5;AL # MATHEMATICAL ITALIC SMALL DOTLESS J -1D6A8;AL # MATHEMATICAL BOLD CAPITAL ALPHA -1D6A9;AL # MATHEMATICAL BOLD CAPITAL BETA -1D6AA;AL # MATHEMATICAL BOLD CAPITAL GAMMA -1D6AB;AL # MATHEMATICAL BOLD CAPITAL DELTA -1D6AC;AL # MATHEMATICAL BOLD CAPITAL EPSILON -1D6AD;AL # MATHEMATICAL BOLD CAPITAL ZETA -1D6AE;AL # MATHEMATICAL BOLD CAPITAL ETA -1D6AF;AL # MATHEMATICAL BOLD CAPITAL THETA -1D6B0;AL # MATHEMATICAL BOLD CAPITAL IOTA -1D6B1;AL # MATHEMATICAL BOLD CAPITAL KAPPA -1D6B2;AL # MATHEMATICAL BOLD CAPITAL LAMDA -1D6B3;AL # MATHEMATICAL BOLD CAPITAL MU -1D6B4;AL # MATHEMATICAL BOLD CAPITAL NU -1D6B5;AL # MATHEMATICAL BOLD CAPITAL XI -1D6B6;AL # MATHEMATICAL BOLD CAPITAL OMICRON -1D6B7;AL # MATHEMATICAL BOLD CAPITAL PI -1D6B8;AL # MATHEMATICAL BOLD CAPITAL RHO -1D6B9;AL # MATHEMATICAL BOLD CAPITAL THETA SYMBOL -1D6BA;AL # MATHEMATICAL BOLD CAPITAL SIGMA -1D6BB;AL # MATHEMATICAL BOLD CAPITAL TAU -1D6BC;AL # MATHEMATICAL BOLD CAPITAL UPSILON -1D6BD;AL # MATHEMATICAL BOLD CAPITAL PHI -1D6BE;AL # MATHEMATICAL BOLD CAPITAL CHI -1D6BF;AL # MATHEMATICAL BOLD CAPITAL PSI -1D6C0;AL # MATHEMATICAL BOLD CAPITAL OMEGA -1D6C1;AL # MATHEMATICAL BOLD NABLA -1D6C2;AL # MATHEMATICAL BOLD SMALL ALPHA -1D6C3;AL # MATHEMATICAL BOLD SMALL BETA -1D6C4;AL # MATHEMATICAL BOLD SMALL GAMMA -1D6C5;AL # MATHEMATICAL BOLD SMALL DELTA -1D6C6;AL # MATHEMATICAL BOLD SMALL EPSILON -1D6C7;AL # MATHEMATICAL BOLD SMALL ZETA -1D6C8;AL # MATHEMATICAL BOLD SMALL ETA -1D6C9;AL # MATHEMATICAL BOLD SMALL THETA -1D6CA;AL # MATHEMATICAL BOLD SMALL IOTA -1D6CB;AL # MATHEMATICAL BOLD SMALL KAPPA -1D6CC;AL # MATHEMATICAL BOLD SMALL LAMDA -1D6CD;AL # MATHEMATICAL BOLD SMALL MU -1D6CE;AL # MATHEMATICAL BOLD SMALL NU -1D6CF;AL # MATHEMATICAL BOLD SMALL XI -1D6D0;AL # MATHEMATICAL BOLD SMALL OMICRON -1D6D1;AL # MATHEMATICAL BOLD SMALL PI -1D6D2;AL # MATHEMATICAL BOLD SMALL RHO -1D6D3;AL # MATHEMATICAL BOLD SMALL FINAL SIGMA -1D6D4;AL # MATHEMATICAL BOLD SMALL SIGMA -1D6D5;AL # MATHEMATICAL BOLD SMALL TAU -1D6D6;AL # MATHEMATICAL BOLD SMALL UPSILON -1D6D7;AL # MATHEMATICAL BOLD SMALL PHI -1D6D8;AL # MATHEMATICAL BOLD SMALL CHI -1D6D9;AL # MATHEMATICAL BOLD SMALL PSI -1D6DA;AL # MATHEMATICAL BOLD SMALL OMEGA -1D6DB;AL # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL -1D6DC;AL # MATHEMATICAL BOLD EPSILON SYMBOL -1D6DD;AL # MATHEMATICAL BOLD THETA SYMBOL -1D6DE;AL # MATHEMATICAL BOLD KAPPA SYMBOL -1D6DF;AL # MATHEMATICAL BOLD PHI SYMBOL -1D6E0;AL # MATHEMATICAL BOLD RHO SYMBOL -1D6E1;AL # MATHEMATICAL BOLD PI SYMBOL -1D6E2;AL # MATHEMATICAL ITALIC CAPITAL ALPHA -1D6E3;AL # MATHEMATICAL ITALIC CAPITAL BETA -1D6E4;AL # MATHEMATICAL ITALIC CAPITAL GAMMA -1D6E5;AL # MATHEMATICAL ITALIC CAPITAL DELTA -1D6E6;AL # MATHEMATICAL ITALIC CAPITAL EPSILON -1D6E7;AL # MATHEMATICAL ITALIC CAPITAL ZETA -1D6E8;AL # MATHEMATICAL ITALIC CAPITAL ETA -1D6E9;AL # MATHEMATICAL ITALIC CAPITAL THETA -1D6EA;AL # MATHEMATICAL ITALIC CAPITAL IOTA -1D6EB;AL # MATHEMATICAL ITALIC CAPITAL KAPPA -1D6EC;AL # MATHEMATICAL ITALIC CAPITAL LAMDA -1D6ED;AL # MATHEMATICAL ITALIC CAPITAL MU -1D6EE;AL # MATHEMATICAL ITALIC CAPITAL NU -1D6EF;AL # MATHEMATICAL ITALIC CAPITAL XI -1D6F0;AL # MATHEMATICAL ITALIC CAPITAL OMICRON -1D6F1;AL # MATHEMATICAL ITALIC CAPITAL PI -1D6F2;AL # MATHEMATICAL ITALIC CAPITAL RHO -1D6F3;AL # MATHEMATICAL ITALIC CAPITAL THETA SYMBOL -1D6F4;AL # MATHEMATICAL ITALIC CAPITAL SIGMA -1D6F5;AL # MATHEMATICAL ITALIC CAPITAL TAU -1D6F6;AL # MATHEMATICAL ITALIC CAPITAL UPSILON -1D6F7;AL # MATHEMATICAL ITALIC CAPITAL PHI -1D6F8;AL # MATHEMATICAL ITALIC CAPITAL CHI -1D6F9;AL # MATHEMATICAL ITALIC CAPITAL PSI -1D6FA;AL # MATHEMATICAL ITALIC CAPITAL OMEGA -1D6FB;AL # MATHEMATICAL ITALIC NABLA -1D6FC;AL # MATHEMATICAL ITALIC SMALL ALPHA -1D6FD;AL # MATHEMATICAL ITALIC SMALL BETA -1D6FE;AL # MATHEMATICAL ITALIC SMALL GAMMA -1D6FF;AL # MATHEMATICAL ITALIC SMALL DELTA -1D700;AL # MATHEMATICAL ITALIC SMALL EPSILON -1D701;AL # MATHEMATICAL ITALIC SMALL ZETA -1D702;AL # MATHEMATICAL ITALIC SMALL ETA -1D703;AL # MATHEMATICAL ITALIC SMALL THETA -1D704;AL # MATHEMATICAL ITALIC SMALL IOTA -1D705;AL # MATHEMATICAL ITALIC SMALL KAPPA -1D706;AL # MATHEMATICAL ITALIC SMALL LAMDA -1D707;AL # MATHEMATICAL ITALIC SMALL MU -1D708;AL # MATHEMATICAL ITALIC SMALL NU -1D709;AL # MATHEMATICAL ITALIC SMALL XI -1D70A;AL # MATHEMATICAL ITALIC SMALL OMICRON -1D70B;AL # MATHEMATICAL ITALIC SMALL PI -1D70C;AL # MATHEMATICAL ITALIC SMALL RHO -1D70D;AL # MATHEMATICAL ITALIC SMALL FINAL SIGMA -1D70E;AL # MATHEMATICAL ITALIC SMALL SIGMA -1D70F;AL # MATHEMATICAL ITALIC SMALL TAU -1D710;AL # MATHEMATICAL ITALIC SMALL UPSILON -1D711;AL # MATHEMATICAL ITALIC SMALL PHI -1D712;AL # MATHEMATICAL ITALIC SMALL CHI -1D713;AL # MATHEMATICAL ITALIC SMALL PSI -1D714;AL # MATHEMATICAL ITALIC SMALL OMEGA -1D715;AL # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL -1D716;AL # MATHEMATICAL ITALIC EPSILON SYMBOL -1D717;AL # MATHEMATICAL ITALIC THETA SYMBOL -1D718;AL # MATHEMATICAL ITALIC KAPPA SYMBOL -1D719;AL # MATHEMATICAL ITALIC PHI SYMBOL -1D71A;AL # MATHEMATICAL ITALIC RHO SYMBOL -1D71B;AL # MATHEMATICAL ITALIC PI SYMBOL -1D71C;AL # MATHEMATICAL BOLD ITALIC CAPITAL ALPHA -1D71D;AL # MATHEMATICAL BOLD ITALIC CAPITAL BETA -1D71E;AL # MATHEMATICAL BOLD ITALIC CAPITAL GAMMA -1D71F;AL # MATHEMATICAL BOLD ITALIC CAPITAL DELTA -1D720;AL # MATHEMATICAL BOLD ITALIC CAPITAL EPSILON -1D721;AL # MATHEMATICAL BOLD ITALIC CAPITAL ZETA -1D722;AL # MATHEMATICAL BOLD ITALIC CAPITAL ETA -1D723;AL # MATHEMATICAL BOLD ITALIC CAPITAL THETA -1D724;AL # MATHEMATICAL BOLD ITALIC CAPITAL IOTA -1D725;AL # MATHEMATICAL BOLD ITALIC CAPITAL KAPPA -1D726;AL # MATHEMATICAL BOLD ITALIC CAPITAL LAMDA -1D727;AL # MATHEMATICAL BOLD ITALIC CAPITAL MU -1D728;AL # MATHEMATICAL BOLD ITALIC CAPITAL NU -1D729;AL # MATHEMATICAL BOLD ITALIC CAPITAL XI -1D72A;AL # MATHEMATICAL BOLD ITALIC CAPITAL OMICRON -1D72B;AL # MATHEMATICAL BOLD ITALIC CAPITAL PI -1D72C;AL # MATHEMATICAL BOLD ITALIC CAPITAL RHO -1D72D;AL # MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL -1D72E;AL # MATHEMATICAL BOLD ITALIC CAPITAL SIGMA -1D72F;AL # MATHEMATICAL BOLD ITALIC CAPITAL TAU -1D730;AL # MATHEMATICAL BOLD ITALIC CAPITAL UPSILON -1D731;AL # MATHEMATICAL BOLD ITALIC CAPITAL PHI -1D732;AL # MATHEMATICAL BOLD ITALIC CAPITAL CHI -1D733;AL # MATHEMATICAL BOLD ITALIC CAPITAL PSI -1D734;AL # MATHEMATICAL BOLD ITALIC CAPITAL OMEGA -1D735;AL # MATHEMATICAL BOLD ITALIC NABLA -1D736;AL # MATHEMATICAL BOLD ITALIC SMALL ALPHA -1D737;AL # MATHEMATICAL BOLD ITALIC SMALL BETA -1D738;AL # MATHEMATICAL BOLD ITALIC SMALL GAMMA -1D739;AL # MATHEMATICAL BOLD ITALIC SMALL DELTA -1D73A;AL # MATHEMATICAL BOLD ITALIC SMALL EPSILON -1D73B;AL # MATHEMATICAL BOLD ITALIC SMALL ZETA -1D73C;AL # MATHEMATICAL BOLD ITALIC SMALL ETA -1D73D;AL # MATHEMATICAL BOLD ITALIC SMALL THETA -1D73E;AL # MATHEMATICAL BOLD ITALIC SMALL IOTA -1D73F;AL # MATHEMATICAL BOLD ITALIC SMALL KAPPA -1D740;AL # MATHEMATICAL BOLD ITALIC SMALL LAMDA -1D741;AL # MATHEMATICAL BOLD ITALIC SMALL MU -1D742;AL # MATHEMATICAL BOLD ITALIC SMALL NU -1D743;AL # MATHEMATICAL BOLD ITALIC SMALL XI -1D744;AL # MATHEMATICAL BOLD ITALIC SMALL OMICRON -1D745;AL # MATHEMATICAL BOLD ITALIC SMALL PI -1D746;AL # MATHEMATICAL BOLD ITALIC SMALL RHO -1D747;AL # MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA -1D748;AL # MATHEMATICAL BOLD ITALIC SMALL SIGMA -1D749;AL # MATHEMATICAL BOLD ITALIC SMALL TAU -1D74A;AL # MATHEMATICAL BOLD ITALIC SMALL UPSILON -1D74B;AL # MATHEMATICAL BOLD ITALIC SMALL PHI -1D74C;AL # MATHEMATICAL BOLD ITALIC SMALL CHI -1D74D;AL # MATHEMATICAL BOLD ITALIC SMALL PSI -1D74E;AL # MATHEMATICAL BOLD ITALIC SMALL OMEGA -1D74F;AL # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL -1D750;AL # MATHEMATICAL BOLD ITALIC EPSILON SYMBOL -1D751;AL # MATHEMATICAL BOLD ITALIC THETA SYMBOL -1D752;AL # MATHEMATICAL BOLD ITALIC KAPPA SYMBOL -1D753;AL # MATHEMATICAL BOLD ITALIC PHI SYMBOL -1D754;AL # MATHEMATICAL BOLD ITALIC RHO SYMBOL -1D755;AL # MATHEMATICAL BOLD ITALIC PI SYMBOL -1D756;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA -1D757;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA -1D758;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA -1D759;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA -1D75A;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON -1D75B;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA -1D75C;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA -1D75D;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA -1D75E;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA -1D75F;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA -1D760;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA -1D761;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL MU -1D762;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL NU -1D763;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL XI -1D764;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON -1D765;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PI -1D766;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO -1D767;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL -1D768;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA -1D769;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU -1D76A;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON -1D76B;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI -1D76C;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI -1D76D;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI -1D76E;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA -1D76F;AL # MATHEMATICAL SANS-SERIF BOLD NABLA -1D770;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA -1D771;AL # MATHEMATICAL SANS-SERIF BOLD SMALL BETA -1D772;AL # MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA -1D773;AL # MATHEMATICAL SANS-SERIF BOLD SMALL DELTA -1D774;AL # MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON -1D775;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ZETA -1D776;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ETA -1D777;AL # MATHEMATICAL SANS-SERIF BOLD SMALL THETA -1D778;AL # MATHEMATICAL SANS-SERIF BOLD SMALL IOTA -1D779;AL # MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA -1D77A;AL # MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA -1D77B;AL # MATHEMATICAL SANS-SERIF BOLD SMALL MU -1D77C;AL # MATHEMATICAL SANS-SERIF BOLD SMALL NU -1D77D;AL # MATHEMATICAL SANS-SERIF BOLD SMALL XI -1D77E;AL # MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON -1D77F;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PI -1D780;AL # MATHEMATICAL SANS-SERIF BOLD SMALL RHO -1D781;AL # MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA -1D782;AL # MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA -1D783;AL # MATHEMATICAL SANS-SERIF BOLD SMALL TAU -1D784;AL # MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON -1D785;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PHI -1D786;AL # MATHEMATICAL SANS-SERIF BOLD SMALL CHI -1D787;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PSI -1D788;AL # MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA -1D789;AL # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL -1D78A;AL # MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL -1D78B;AL # MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL -1D78C;AL # MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL -1D78D;AL # MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL -1D78E;AL # MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL -1D78F;AL # MATHEMATICAL SANS-SERIF BOLD PI SYMBOL -1D790;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA -1D791;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA -1D792;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA -1D793;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA -1D794;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON -1D795;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA -1D796;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA -1D797;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA -1D798;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA -1D799;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA -1D79A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA -1D79B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU -1D79C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU -1D79D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI -1D79E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON -1D79F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI -1D7A0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO -1D7A1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL -1D7A2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA -1D7A3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU -1D7A4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON -1D7A5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI -1D7A6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI -1D7A7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI -1D7A8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA -1D7A9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA -1D7AA;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA -1D7AB;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA -1D7AC;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA -1D7AD;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA -1D7AE;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON -1D7AF;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA -1D7B0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA -1D7B1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA -1D7B2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA -1D7B3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA -1D7B4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA -1D7B5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU -1D7B6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU -1D7B7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI -1D7B8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON -1D7B9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI -1D7BA;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO -1D7BB;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA -1D7BC;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA -1D7BD;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU -1D7BE;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON -1D7BF;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI -1D7C0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI -1D7C1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI -1D7C2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA -1D7C3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL -1D7C4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL -1D7C5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL -1D7C6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL -1D7C7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL -1D7C8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL -1D7C9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL -1D7CE;NU # MATHEMATICAL BOLD DIGIT ZERO -1D7CF;NU # MATHEMATICAL BOLD DIGIT ONE -1D7D0;NU # MATHEMATICAL BOLD DIGIT TWO -1D7D1;NU # MATHEMATICAL BOLD DIGIT THREE -1D7D2;NU # MATHEMATICAL BOLD DIGIT FOUR -1D7D3;NU # MATHEMATICAL BOLD DIGIT FIVE -1D7D4;NU # MATHEMATICAL BOLD DIGIT SIX -1D7D5;NU # MATHEMATICAL BOLD DIGIT SEVEN -1D7D6;NU # MATHEMATICAL BOLD DIGIT EIGHT -1D7D7;NU # MATHEMATICAL BOLD DIGIT NINE -1D7D8;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO -1D7D9;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE -1D7DA;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO -1D7DB;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE -1D7DC;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR -1D7DD;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE -1D7DE;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX -1D7DF;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN -1D7E0;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT -1D7E1;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE -1D7E2;NU # MATHEMATICAL SANS-SERIF DIGIT ZERO -1D7E3;NU # MATHEMATICAL SANS-SERIF DIGIT ONE -1D7E4;NU # MATHEMATICAL SANS-SERIF DIGIT TWO -1D7E5;NU # MATHEMATICAL SANS-SERIF DIGIT THREE -1D7E6;NU # MATHEMATICAL SANS-SERIF DIGIT FOUR -1D7E7;NU # MATHEMATICAL SANS-SERIF DIGIT FIVE -1D7E8;NU # MATHEMATICAL SANS-SERIF DIGIT SIX -1D7E9;NU # MATHEMATICAL SANS-SERIF DIGIT SEVEN -1D7EA;NU # MATHEMATICAL SANS-SERIF DIGIT EIGHT -1D7EB;NU # MATHEMATICAL SANS-SERIF DIGIT NINE -1D7EC;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO -1D7ED;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE -1D7EE;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO -1D7EF;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE -1D7F0;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR -1D7F1;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE -1D7F2;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX -1D7F3;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN -1D7F4;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT -1D7F5;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE -1D7F6;NU # MATHEMATICAL MONOSPACE DIGIT ZERO -1D7F7;NU # MATHEMATICAL MONOSPACE DIGIT ONE -1D7F8;NU # MATHEMATICAL MONOSPACE DIGIT TWO -1D7F9;NU # MATHEMATICAL MONOSPACE DIGIT THREE -1D7FA;NU # MATHEMATICAL MONOSPACE DIGIT FOUR -1D7FB;NU # MATHEMATICAL MONOSPACE DIGIT FIVE -1D7FC;NU # MATHEMATICAL MONOSPACE DIGIT SIX -1D7FD;NU # MATHEMATICAL MONOSPACE DIGIT SEVEN -1D7FE;NU # MATHEMATICAL MONOSPACE DIGIT EIGHT -1D7FF;NU # MATHEMATICAL MONOSPACE DIGIT NINE -20000..2A6D6;ID # <CJK Ideograph Extension B, First>..<CJK Ideograph Extension B, Last> -2F800;ID # CJK COMPATIBILITY IDEOGRAPH-2F800 -2F801;ID # CJK COMPATIBILITY IDEOGRAPH-2F801 -2F802;ID # CJK COMPATIBILITY IDEOGRAPH-2F802 -2F803;ID # CJK COMPATIBILITY IDEOGRAPH-2F803 -2F804;ID # CJK COMPATIBILITY IDEOGRAPH-2F804 -2F805;ID # CJK COMPATIBILITY IDEOGRAPH-2F805 -2F806;ID # CJK COMPATIBILITY IDEOGRAPH-2F806 -2F807;ID # CJK COMPATIBILITY IDEOGRAPH-2F807 -2F808;ID # CJK COMPATIBILITY IDEOGRAPH-2F808 -2F809;ID # CJK COMPATIBILITY IDEOGRAPH-2F809 -2F80A;ID # CJK COMPATIBILITY IDEOGRAPH-2F80A -2F80B;ID # CJK COMPATIBILITY IDEOGRAPH-2F80B -2F80C;ID # CJK COMPATIBILITY IDEOGRAPH-2F80C -2F80D;ID # CJK COMPATIBILITY IDEOGRAPH-2F80D -2F80E;ID # CJK COMPATIBILITY IDEOGRAPH-2F80E -2F80F;ID # CJK COMPATIBILITY IDEOGRAPH-2F80F -2F810;ID # CJK COMPATIBILITY IDEOGRAPH-2F810 -2F811;ID # CJK COMPATIBILITY IDEOGRAPH-2F811 -2F812;ID # CJK COMPATIBILITY IDEOGRAPH-2F812 -2F813;ID # CJK COMPATIBILITY IDEOGRAPH-2F813 -2F814;ID # CJK COMPATIBILITY IDEOGRAPH-2F814 -2F815;ID # CJK COMPATIBILITY IDEOGRAPH-2F815 -2F816;ID # CJK COMPATIBILITY IDEOGRAPH-2F816 -2F817;ID # CJK COMPATIBILITY IDEOGRAPH-2F817 -2F818;ID # CJK COMPATIBILITY IDEOGRAPH-2F818 -2F819;ID # CJK COMPATIBILITY IDEOGRAPH-2F819 -2F81A;ID # CJK COMPATIBILITY IDEOGRAPH-2F81A -2F81B;ID # CJK COMPATIBILITY IDEOGRAPH-2F81B -2F81C;ID # CJK COMPATIBILITY IDEOGRAPH-2F81C -2F81D;ID # CJK COMPATIBILITY IDEOGRAPH-2F81D -2F81E;ID # CJK COMPATIBILITY IDEOGRAPH-2F81E -2F81F;ID # CJK COMPATIBILITY IDEOGRAPH-2F81F -2F820;ID # CJK COMPATIBILITY IDEOGRAPH-2F820 -2F821;ID # CJK COMPATIBILITY IDEOGRAPH-2F821 -2F822;ID # CJK COMPATIBILITY IDEOGRAPH-2F822 -2F823;ID # CJK COMPATIBILITY IDEOGRAPH-2F823 -2F824;ID # CJK COMPATIBILITY IDEOGRAPH-2F824 -2F825;ID # CJK COMPATIBILITY IDEOGRAPH-2F825 -2F826;ID # CJK COMPATIBILITY IDEOGRAPH-2F826 -2F827;ID # CJK COMPATIBILITY IDEOGRAPH-2F827 -2F828;ID # CJK COMPATIBILITY IDEOGRAPH-2F828 -2F829;ID # CJK COMPATIBILITY IDEOGRAPH-2F829 -2F82A;ID # CJK COMPATIBILITY IDEOGRAPH-2F82A -2F82B;ID # CJK COMPATIBILITY IDEOGRAPH-2F82B -2F82C;ID # CJK COMPATIBILITY IDEOGRAPH-2F82C -2F82D;ID # CJK COMPATIBILITY IDEOGRAPH-2F82D -2F82E;ID # CJK COMPATIBILITY IDEOGRAPH-2F82E -2F82F;ID # CJK COMPATIBILITY IDEOGRAPH-2F82F -2F830;ID # CJK COMPATIBILITY IDEOGRAPH-2F830 -2F831;ID # CJK COMPATIBILITY IDEOGRAPH-2F831 -2F832;ID # CJK COMPATIBILITY IDEOGRAPH-2F832 -2F833;ID # CJK COMPATIBILITY IDEOGRAPH-2F833 -2F834;ID # CJK COMPATIBILITY IDEOGRAPH-2F834 -2F835;ID # CJK COMPATIBILITY IDEOGRAPH-2F835 -2F836;ID # CJK COMPATIBILITY IDEOGRAPH-2F836 -2F837;ID # CJK COMPATIBILITY IDEOGRAPH-2F837 -2F838;ID # CJK COMPATIBILITY IDEOGRAPH-2F838 -2F839;ID # CJK COMPATIBILITY IDEOGRAPH-2F839 -2F83A;ID # CJK COMPATIBILITY IDEOGRAPH-2F83A -2F83B;ID # CJK COMPATIBILITY IDEOGRAPH-2F83B -2F83C;ID # CJK COMPATIBILITY IDEOGRAPH-2F83C -2F83D;ID # CJK COMPATIBILITY IDEOGRAPH-2F83D -2F83E;ID # CJK COMPATIBILITY IDEOGRAPH-2F83E -2F83F;ID # CJK COMPATIBILITY IDEOGRAPH-2F83F -2F840;ID # CJK COMPATIBILITY IDEOGRAPH-2F840 -2F841;ID # CJK COMPATIBILITY IDEOGRAPH-2F841 -2F842;ID # CJK COMPATIBILITY IDEOGRAPH-2F842 -2F843;ID # CJK COMPATIBILITY IDEOGRAPH-2F843 -2F844;ID # CJK COMPATIBILITY IDEOGRAPH-2F844 -2F845;ID # CJK COMPATIBILITY IDEOGRAPH-2F845 -2F846;ID # CJK COMPATIBILITY IDEOGRAPH-2F846 -2F847;ID # CJK COMPATIBILITY IDEOGRAPH-2F847 -2F848;ID # CJK COMPATIBILITY IDEOGRAPH-2F848 -2F849;ID # CJK COMPATIBILITY IDEOGRAPH-2F849 -2F84A;ID # CJK COMPATIBILITY IDEOGRAPH-2F84A -2F84B;ID # CJK COMPATIBILITY IDEOGRAPH-2F84B -2F84C;ID # CJK COMPATIBILITY IDEOGRAPH-2F84C -2F84D;ID # CJK COMPATIBILITY IDEOGRAPH-2F84D -2F84E;ID # CJK COMPATIBILITY IDEOGRAPH-2F84E -2F84F;ID # CJK COMPATIBILITY IDEOGRAPH-2F84F -2F850;ID # CJK COMPATIBILITY IDEOGRAPH-2F850 -2F851;ID # CJK COMPATIBILITY IDEOGRAPH-2F851 -2F852;ID # CJK COMPATIBILITY IDEOGRAPH-2F852 -2F853;ID # CJK COMPATIBILITY IDEOGRAPH-2F853 -2F854;ID # CJK COMPATIBILITY IDEOGRAPH-2F854 -2F855;ID # CJK COMPATIBILITY IDEOGRAPH-2F855 -2F856;ID # CJK COMPATIBILITY IDEOGRAPH-2F856 -2F857;ID # CJK COMPATIBILITY IDEOGRAPH-2F857 -2F858;ID # CJK COMPATIBILITY IDEOGRAPH-2F858 -2F859;ID # CJK COMPATIBILITY IDEOGRAPH-2F859 -2F85A;ID # CJK COMPATIBILITY IDEOGRAPH-2F85A -2F85B;ID # CJK COMPATIBILITY IDEOGRAPH-2F85B -2F85C;ID # CJK COMPATIBILITY IDEOGRAPH-2F85C -2F85D;ID # CJK COMPATIBILITY IDEOGRAPH-2F85D -2F85E;ID # CJK COMPATIBILITY IDEOGRAPH-2F85E -2F85F;ID # CJK COMPATIBILITY IDEOGRAPH-2F85F -2F860;ID # CJK COMPATIBILITY IDEOGRAPH-2F860 -2F861;ID # CJK COMPATIBILITY IDEOGRAPH-2F861 -2F862;ID # CJK COMPATIBILITY IDEOGRAPH-2F862 -2F863;ID # CJK COMPATIBILITY IDEOGRAPH-2F863 -2F864;ID # CJK COMPATIBILITY IDEOGRAPH-2F864 -2F865;ID # CJK COMPATIBILITY IDEOGRAPH-2F865 -2F866;ID # CJK COMPATIBILITY IDEOGRAPH-2F866 -2F867;ID # CJK COMPATIBILITY IDEOGRAPH-2F867 -2F868;ID # CJK COMPATIBILITY IDEOGRAPH-2F868 -2F869;ID # CJK COMPATIBILITY IDEOGRAPH-2F869 -2F86A;ID # CJK COMPATIBILITY IDEOGRAPH-2F86A -2F86B;ID # CJK COMPATIBILITY IDEOGRAPH-2F86B -2F86C;ID # CJK COMPATIBILITY IDEOGRAPH-2F86C -2F86D;ID # CJK COMPATIBILITY IDEOGRAPH-2F86D -2F86E;ID # CJK COMPATIBILITY IDEOGRAPH-2F86E -2F86F;ID # CJK COMPATIBILITY IDEOGRAPH-2F86F -2F870;ID # CJK COMPATIBILITY IDEOGRAPH-2F870 -2F871;ID # CJK COMPATIBILITY IDEOGRAPH-2F871 -2F872;ID # CJK COMPATIBILITY IDEOGRAPH-2F872 -2F873;ID # CJK COMPATIBILITY IDEOGRAPH-2F873 -2F874;ID # CJK COMPATIBILITY IDEOGRAPH-2F874 -2F875;ID # CJK COMPATIBILITY IDEOGRAPH-2F875 -2F876;ID # CJK COMPATIBILITY IDEOGRAPH-2F876 -2F877;ID # CJK COMPATIBILITY IDEOGRAPH-2F877 -2F878;ID # CJK COMPATIBILITY IDEOGRAPH-2F878 -2F879;ID # CJK COMPATIBILITY IDEOGRAPH-2F879 -2F87A;ID # CJK COMPATIBILITY IDEOGRAPH-2F87A -2F87B;ID # CJK COMPATIBILITY IDEOGRAPH-2F87B -2F87C;ID # CJK COMPATIBILITY IDEOGRAPH-2F87C -2F87D;ID # CJK COMPATIBILITY IDEOGRAPH-2F87D -2F87E;ID # CJK COMPATIBILITY IDEOGRAPH-2F87E -2F87F;ID # CJK COMPATIBILITY IDEOGRAPH-2F87F -2F880;ID # CJK COMPATIBILITY IDEOGRAPH-2F880 -2F881;ID # CJK COMPATIBILITY IDEOGRAPH-2F881 -2F882;ID # CJK COMPATIBILITY IDEOGRAPH-2F882 -2F883;ID # CJK COMPATIBILITY IDEOGRAPH-2F883 -2F884;ID # CJK COMPATIBILITY IDEOGRAPH-2F884 -2F885;ID # CJK COMPATIBILITY IDEOGRAPH-2F885 -2F886;ID # CJK COMPATIBILITY IDEOGRAPH-2F886 -2F887;ID # CJK COMPATIBILITY IDEOGRAPH-2F887 -2F888;ID # CJK COMPATIBILITY IDEOGRAPH-2F888 -2F889;ID # CJK COMPATIBILITY IDEOGRAPH-2F889 -2F88A;ID # CJK COMPATIBILITY IDEOGRAPH-2F88A -2F88B;ID # CJK COMPATIBILITY IDEOGRAPH-2F88B -2F88C;ID # CJK COMPATIBILITY IDEOGRAPH-2F88C -2F88D;ID # CJK COMPATIBILITY IDEOGRAPH-2F88D -2F88E;ID # CJK COMPATIBILITY IDEOGRAPH-2F88E -2F88F;ID # CJK COMPATIBILITY IDEOGRAPH-2F88F -2F890;ID # CJK COMPATIBILITY IDEOGRAPH-2F890 -2F891;ID # CJK COMPATIBILITY IDEOGRAPH-2F891 -2F892;ID # CJK COMPATIBILITY IDEOGRAPH-2F892 -2F893;ID # CJK COMPATIBILITY IDEOGRAPH-2F893 -2F894;ID # CJK COMPATIBILITY IDEOGRAPH-2F894 -2F895;ID # CJK COMPATIBILITY IDEOGRAPH-2F895 -2F896;ID # CJK COMPATIBILITY IDEOGRAPH-2F896 -2F897;ID # CJK COMPATIBILITY IDEOGRAPH-2F897 -2F898;ID # CJK COMPATIBILITY IDEOGRAPH-2F898 -2F899;ID # CJK COMPATIBILITY IDEOGRAPH-2F899 -2F89A;ID # CJK COMPATIBILITY IDEOGRAPH-2F89A -2F89B;ID # CJK COMPATIBILITY IDEOGRAPH-2F89B -2F89C;ID # CJK COMPATIBILITY IDEOGRAPH-2F89C -2F89D;ID # CJK COMPATIBILITY IDEOGRAPH-2F89D -2F89E;ID # CJK COMPATIBILITY IDEOGRAPH-2F89E -2F89F;ID # CJK COMPATIBILITY IDEOGRAPH-2F89F -2F8A0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A0 -2F8A1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A1 -2F8A2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A2 -2F8A3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A3 -2F8A4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A4 -2F8A5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A5 -2F8A6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A6 -2F8A7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A7 -2F8A8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A8 -2F8A9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A9 -2F8AA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AA -2F8AB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AB -2F8AC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AC -2F8AD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AD -2F8AE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AE -2F8AF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AF -2F8B0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B0 -2F8B1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B1 -2F8B2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B2 -2F8B3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B3 -2F8B4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B4 -2F8B5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B5 -2F8B6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B6 -2F8B7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B7 -2F8B8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B8 -2F8B9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B9 -2F8BA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BA -2F8BB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BB -2F8BC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BC -2F8BD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BD -2F8BE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BE -2F8BF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BF -2F8C0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C0 -2F8C1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C1 -2F8C2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C2 -2F8C3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C3 -2F8C4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C4 -2F8C5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C5 -2F8C6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C6 -2F8C7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C7 -2F8C8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C8 -2F8C9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C9 -2F8CA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CA -2F8CB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CB -2F8CC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CC -2F8CD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CD -2F8CE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CE -2F8CF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CF -2F8D0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D0 -2F8D1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D1 -2F8D2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D2 -2F8D3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D3 -2F8D4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D4 -2F8D5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D5 -2F8D6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D6 -2F8D7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D7 -2F8D8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D8 -2F8D9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D9 -2F8DA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DA -2F8DB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DB -2F8DC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DC -2F8DD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DD -2F8DE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DE -2F8DF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DF -2F8E0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E0 -2F8E1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E1 -2F8E2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E2 -2F8E3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E3 -2F8E4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E4 -2F8E5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E5 -2F8E6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E6 -2F8E7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E7 -2F8E8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E8 -2F8E9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E9 -2F8EA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EA -2F8EB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EB -2F8EC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EC -2F8ED;ID # CJK COMPATIBILITY IDEOGRAPH-2F8ED -2F8EE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EE -2F8EF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EF -2F8F0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F0 -2F8F1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F1 -2F8F2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F2 -2F8F3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F3 -2F8F4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F4 -2F8F5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F5 -2F8F6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F6 -2F8F7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F7 -2F8F8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F8 -2F8F9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F9 -2F8FA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FA -2F8FB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FB -2F8FC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FC -2F8FD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FD -2F8FE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FE -2F8FF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FF -2F900;ID # CJK COMPATIBILITY IDEOGRAPH-2F900 -2F901;ID # CJK COMPATIBILITY IDEOGRAPH-2F901 -2F902;ID # CJK COMPATIBILITY IDEOGRAPH-2F902 -2F903;ID # CJK COMPATIBILITY IDEOGRAPH-2F903 -2F904;ID # CJK COMPATIBILITY IDEOGRAPH-2F904 -2F905;ID # CJK COMPATIBILITY IDEOGRAPH-2F905 -2F906;ID # CJK COMPATIBILITY IDEOGRAPH-2F906 -2F907;ID # CJK COMPATIBILITY IDEOGRAPH-2F907 -2F908;ID # CJK COMPATIBILITY IDEOGRAPH-2F908 -2F909;ID # CJK COMPATIBILITY IDEOGRAPH-2F909 -2F90A;ID # CJK COMPATIBILITY IDEOGRAPH-2F90A -2F90B;ID # CJK COMPATIBILITY IDEOGRAPH-2F90B -2F90C;ID # CJK COMPATIBILITY IDEOGRAPH-2F90C -2F90D;ID # CJK COMPATIBILITY IDEOGRAPH-2F90D -2F90E;ID # CJK COMPATIBILITY IDEOGRAPH-2F90E -2F90F;ID # CJK COMPATIBILITY IDEOGRAPH-2F90F -2F910;ID # CJK COMPATIBILITY IDEOGRAPH-2F910 -2F911;ID # CJK COMPATIBILITY IDEOGRAPH-2F911 -2F912;ID # CJK COMPATIBILITY IDEOGRAPH-2F912 -2F913;ID # CJK COMPATIBILITY IDEOGRAPH-2F913 -2F914;ID # CJK COMPATIBILITY IDEOGRAPH-2F914 -2F915;ID # CJK COMPATIBILITY IDEOGRAPH-2F915 -2F916;ID # CJK COMPATIBILITY IDEOGRAPH-2F916 -2F917;ID # CJK COMPATIBILITY IDEOGRAPH-2F917 -2F918;ID # CJK COMPATIBILITY IDEOGRAPH-2F918 -2F919;ID # CJK COMPATIBILITY IDEOGRAPH-2F919 -2F91A;ID # CJK COMPATIBILITY IDEOGRAPH-2F91A -2F91B;ID # CJK COMPATIBILITY IDEOGRAPH-2F91B -2F91C;ID # CJK COMPATIBILITY IDEOGRAPH-2F91C -2F91D;ID # CJK COMPATIBILITY IDEOGRAPH-2F91D -2F91E;ID # CJK COMPATIBILITY IDEOGRAPH-2F91E -2F91F;ID # CJK COMPATIBILITY IDEOGRAPH-2F91F -2F920;ID # CJK COMPATIBILITY IDEOGRAPH-2F920 -2F921;ID # CJK COMPATIBILITY IDEOGRAPH-2F921 -2F922;ID # CJK COMPATIBILITY IDEOGRAPH-2F922 -2F923;ID # CJK COMPATIBILITY IDEOGRAPH-2F923 -2F924;ID # CJK COMPATIBILITY IDEOGRAPH-2F924 -2F925;ID # CJK COMPATIBILITY IDEOGRAPH-2F925 -2F926;ID # CJK COMPATIBILITY IDEOGRAPH-2F926 -2F927;ID # CJK COMPATIBILITY IDEOGRAPH-2F927 -2F928;ID # CJK COMPATIBILITY IDEOGRAPH-2F928 -2F929;ID # CJK COMPATIBILITY IDEOGRAPH-2F929 -2F92A;ID # CJK COMPATIBILITY IDEOGRAPH-2F92A -2F92B;ID # CJK COMPATIBILITY IDEOGRAPH-2F92B -2F92C;ID # CJK COMPATIBILITY IDEOGRAPH-2F92C -2F92D;ID # CJK COMPATIBILITY IDEOGRAPH-2F92D -2F92E;ID # CJK COMPATIBILITY IDEOGRAPH-2F92E -2F92F;ID # CJK COMPATIBILITY IDEOGRAPH-2F92F -2F930;ID # CJK COMPATIBILITY IDEOGRAPH-2F930 -2F931;ID # CJK COMPATIBILITY IDEOGRAPH-2F931 -2F932;ID # CJK COMPATIBILITY IDEOGRAPH-2F932 -2F933;ID # CJK COMPATIBILITY IDEOGRAPH-2F933 -2F934;ID # CJK COMPATIBILITY IDEOGRAPH-2F934 -2F935;ID # CJK COMPATIBILITY IDEOGRAPH-2F935 -2F936;ID # CJK COMPATIBILITY IDEOGRAPH-2F936 -2F937;ID # CJK COMPATIBILITY IDEOGRAPH-2F937 -2F938;ID # CJK COMPATIBILITY IDEOGRAPH-2F938 -2F939;ID # CJK COMPATIBILITY IDEOGRAPH-2F939 -2F93A;ID # CJK COMPATIBILITY IDEOGRAPH-2F93A -2F93B;ID # CJK COMPATIBILITY IDEOGRAPH-2F93B -2F93C;ID # CJK COMPATIBILITY IDEOGRAPH-2F93C -2F93D;ID # CJK COMPATIBILITY IDEOGRAPH-2F93D -2F93E;ID # CJK COMPATIBILITY IDEOGRAPH-2F93E -2F93F;ID # CJK COMPATIBILITY IDEOGRAPH-2F93F -2F940;ID # CJK COMPATIBILITY IDEOGRAPH-2F940 -2F941;ID # CJK COMPATIBILITY IDEOGRAPH-2F941 -2F942;ID # CJK COMPATIBILITY IDEOGRAPH-2F942 -2F943;ID # CJK COMPATIBILITY IDEOGRAPH-2F943 -2F944;ID # CJK COMPATIBILITY IDEOGRAPH-2F944 -2F945;ID # CJK COMPATIBILITY IDEOGRAPH-2F945 -2F946;ID # CJK COMPATIBILITY IDEOGRAPH-2F946 -2F947;ID # CJK COMPATIBILITY IDEOGRAPH-2F947 -2F948;ID # CJK COMPATIBILITY IDEOGRAPH-2F948 -2F949;ID # CJK COMPATIBILITY IDEOGRAPH-2F949 -2F94A;ID # CJK COMPATIBILITY IDEOGRAPH-2F94A -2F94B;ID # CJK COMPATIBILITY IDEOGRAPH-2F94B -2F94C;ID # CJK COMPATIBILITY IDEOGRAPH-2F94C -2F94D;ID # CJK COMPATIBILITY IDEOGRAPH-2F94D -2F94E;ID # CJK COMPATIBILITY IDEOGRAPH-2F94E -2F94F;ID # CJK COMPATIBILITY IDEOGRAPH-2F94F -2F950;ID # CJK COMPATIBILITY IDEOGRAPH-2F950 -2F951;ID # CJK COMPATIBILITY IDEOGRAPH-2F951 -2F952;ID # CJK COMPATIBILITY IDEOGRAPH-2F952 -2F953;ID # CJK COMPATIBILITY IDEOGRAPH-2F953 -2F954;ID # CJK COMPATIBILITY IDEOGRAPH-2F954 -2F955;ID # CJK COMPATIBILITY IDEOGRAPH-2F955 -2F956;ID # CJK COMPATIBILITY IDEOGRAPH-2F956 -2F957;ID # CJK COMPATIBILITY IDEOGRAPH-2F957 -2F958;ID # CJK COMPATIBILITY IDEOGRAPH-2F958 -2F959;ID # CJK COMPATIBILITY IDEOGRAPH-2F959 -2F95A;ID # CJK COMPATIBILITY IDEOGRAPH-2F95A -2F95B;ID # CJK COMPATIBILITY IDEOGRAPH-2F95B -2F95C;ID # CJK COMPATIBILITY IDEOGRAPH-2F95C -2F95D;ID # CJK COMPATIBILITY IDEOGRAPH-2F95D -2F95E;ID # CJK COMPATIBILITY IDEOGRAPH-2F95E -2F95F;ID # CJK COMPATIBILITY IDEOGRAPH-2F95F -2F960;ID # CJK COMPATIBILITY IDEOGRAPH-2F960 -2F961;ID # CJK COMPATIBILITY IDEOGRAPH-2F961 -2F962;ID # CJK COMPATIBILITY IDEOGRAPH-2F962 -2F963;ID # CJK COMPATIBILITY IDEOGRAPH-2F963 -2F964;ID # CJK COMPATIBILITY IDEOGRAPH-2F964 -2F965;ID # CJK COMPATIBILITY IDEOGRAPH-2F965 -2F966;ID # CJK COMPATIBILITY IDEOGRAPH-2F966 -2F967;ID # CJK COMPATIBILITY IDEOGRAPH-2F967 -2F968;ID # CJK COMPATIBILITY IDEOGRAPH-2F968 -2F969;ID # CJK COMPATIBILITY IDEOGRAPH-2F969 -2F96A;ID # CJK COMPATIBILITY IDEOGRAPH-2F96A -2F96B;ID # CJK COMPATIBILITY IDEOGRAPH-2F96B -2F96C;ID # CJK COMPATIBILITY IDEOGRAPH-2F96C -2F96D;ID # CJK COMPATIBILITY IDEOGRAPH-2F96D -2F96E;ID # CJK COMPATIBILITY IDEOGRAPH-2F96E -2F96F;ID # CJK COMPATIBILITY IDEOGRAPH-2F96F -2F970;ID # CJK COMPATIBILITY IDEOGRAPH-2F970 -2F971;ID # CJK COMPATIBILITY IDEOGRAPH-2F971 -2F972;ID # CJK COMPATIBILITY IDEOGRAPH-2F972 -2F973;ID # CJK COMPATIBILITY IDEOGRAPH-2F973 -2F974;ID # CJK COMPATIBILITY IDEOGRAPH-2F974 -2F975;ID # CJK COMPATIBILITY IDEOGRAPH-2F975 -2F976;ID # CJK COMPATIBILITY IDEOGRAPH-2F976 -2F977;ID # CJK COMPATIBILITY IDEOGRAPH-2F977 -2F978;ID # CJK COMPATIBILITY IDEOGRAPH-2F978 -2F979;ID # CJK COMPATIBILITY IDEOGRAPH-2F979 -2F97A;ID # CJK COMPATIBILITY IDEOGRAPH-2F97A -2F97B;ID # CJK COMPATIBILITY IDEOGRAPH-2F97B -2F97C;ID # CJK COMPATIBILITY IDEOGRAPH-2F97C -2F97D;ID # CJK COMPATIBILITY IDEOGRAPH-2F97D -2F97E;ID # CJK COMPATIBILITY IDEOGRAPH-2F97E -2F97F;ID # CJK COMPATIBILITY IDEOGRAPH-2F97F -2F980;ID # CJK COMPATIBILITY IDEOGRAPH-2F980 -2F981;ID # CJK COMPATIBILITY IDEOGRAPH-2F981 -2F982;ID # CJK COMPATIBILITY IDEOGRAPH-2F982 -2F983;ID # CJK COMPATIBILITY IDEOGRAPH-2F983 -2F984;ID # CJK COMPATIBILITY IDEOGRAPH-2F984 -2F985;ID # CJK COMPATIBILITY IDEOGRAPH-2F985 -2F986;ID # CJK COMPATIBILITY IDEOGRAPH-2F986 -2F987;ID # CJK COMPATIBILITY IDEOGRAPH-2F987 -2F988;ID # CJK COMPATIBILITY IDEOGRAPH-2F988 -2F989;ID # CJK COMPATIBILITY IDEOGRAPH-2F989 -2F98A;ID # CJK COMPATIBILITY IDEOGRAPH-2F98A -2F98B;ID # CJK COMPATIBILITY IDEOGRAPH-2F98B -2F98C;ID # CJK COMPATIBILITY IDEOGRAPH-2F98C -2F98D;ID # CJK COMPATIBILITY IDEOGRAPH-2F98D -2F98E;ID # CJK COMPATIBILITY IDEOGRAPH-2F98E -2F98F;ID # CJK COMPATIBILITY IDEOGRAPH-2F98F -2F990;ID # CJK COMPATIBILITY IDEOGRAPH-2F990 -2F991;ID # CJK COMPATIBILITY IDEOGRAPH-2F991 -2F992;ID # CJK COMPATIBILITY IDEOGRAPH-2F992 -2F993;ID # CJK COMPATIBILITY IDEOGRAPH-2F993 -2F994;ID # CJK COMPATIBILITY IDEOGRAPH-2F994 -2F995;ID # CJK COMPATIBILITY IDEOGRAPH-2F995 -2F996;ID # CJK COMPATIBILITY IDEOGRAPH-2F996 -2F997;ID # CJK COMPATIBILITY IDEOGRAPH-2F997 -2F998;ID # CJK COMPATIBILITY IDEOGRAPH-2F998 -2F999;ID # CJK COMPATIBILITY IDEOGRAPH-2F999 -2F99A;ID # CJK COMPATIBILITY IDEOGRAPH-2F99A -2F99B;ID # CJK COMPATIBILITY IDEOGRAPH-2F99B -2F99C;ID # CJK COMPATIBILITY IDEOGRAPH-2F99C -2F99D;ID # CJK COMPATIBILITY IDEOGRAPH-2F99D -2F99E;ID # CJK COMPATIBILITY IDEOGRAPH-2F99E -2F99F;ID # CJK COMPATIBILITY IDEOGRAPH-2F99F -2F9A0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A0 -2F9A1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A1 -2F9A2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A2 -2F9A3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A3 -2F9A4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A4 -2F9A5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A5 -2F9A6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A6 -2F9A7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A7 -2F9A8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A8 -2F9A9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A9 -2F9AA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AA -2F9AB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AB -2F9AC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AC -2F9AD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AD -2F9AE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AE -2F9AF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AF -2F9B0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B0 -2F9B1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B1 -2F9B2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B2 -2F9B3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B3 -2F9B4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B4 -2F9B5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B5 -2F9B6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B6 -2F9B7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B7 -2F9B8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B8 -2F9B9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B9 -2F9BA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BA -2F9BB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BB -2F9BC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BC -2F9BD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BD -2F9BE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BE -2F9BF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BF -2F9C0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C0 -2F9C1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C1 -2F9C2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C2 -2F9C3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C3 -2F9C4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C4 -2F9C5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C5 -2F9C6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C6 -2F9C7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C7 -2F9C8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C8 -2F9C9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C9 -2F9CA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CA -2F9CB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CB -2F9CC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CC -2F9CD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CD -2F9CE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CE -2F9CF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CF -2F9D0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D0 -2F9D1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D1 -2F9D2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D2 -2F9D3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D3 -2F9D4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D4 -2F9D5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D5 -2F9D6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D6 -2F9D7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D7 -2F9D8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D8 -2F9D9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D9 -2F9DA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DA -2F9DB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DB -2F9DC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DC -2F9DD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DD -2F9DE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DE -2F9DF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DF -2F9E0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E0 -2F9E1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E1 -2F9E2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E2 -2F9E3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E3 -2F9E4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E4 -2F9E5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E5 -2F9E6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E6 -2F9E7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E7 -2F9E8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E8 -2F9E9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E9 -2F9EA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EA -2F9EB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EB -2F9EC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EC -2F9ED;ID # CJK COMPATIBILITY IDEOGRAPH-2F9ED -2F9EE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EE -2F9EF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EF -2F9F0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F0 -2F9F1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F1 -2F9F2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F2 -2F9F3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F3 -2F9F4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F4 -2F9F5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F5 -2F9F6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F6 -2F9F7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F7 -2F9F8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F8 -2F9F9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F9 -2F9FA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FA -2F9FB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FB -2F9FC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FC -2F9FD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FD -2F9FE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FE -2F9FF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FF -2FA00;ID # CJK COMPATIBILITY IDEOGRAPH-2FA00 -2FA01;ID # CJK COMPATIBILITY IDEOGRAPH-2FA01 -2FA02;ID # CJK COMPATIBILITY IDEOGRAPH-2FA02 -2FA03;ID # CJK COMPATIBILITY IDEOGRAPH-2FA03 -2FA04;ID # CJK COMPATIBILITY IDEOGRAPH-2FA04 -2FA05;ID # CJK COMPATIBILITY IDEOGRAPH-2FA05 -2FA06;ID # CJK COMPATIBILITY IDEOGRAPH-2FA06 -2FA07;ID # CJK COMPATIBILITY IDEOGRAPH-2FA07 -2FA08;ID # CJK COMPATIBILITY IDEOGRAPH-2FA08 -2FA09;ID # CJK COMPATIBILITY IDEOGRAPH-2FA09 -2FA0A;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0A -2FA0B;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0B -2FA0C;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0C -2FA0D;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0D -2FA0E;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0E -2FA0F;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0F -2FA10;ID # CJK COMPATIBILITY IDEOGRAPH-2FA10 -2FA11;ID # CJK COMPATIBILITY IDEOGRAPH-2FA11 -2FA12;ID # CJK COMPATIBILITY IDEOGRAPH-2FA12 -2FA13;ID # CJK COMPATIBILITY IDEOGRAPH-2FA13 -2FA14;ID # CJK COMPATIBILITY IDEOGRAPH-2FA14 -2FA15;ID # CJK COMPATIBILITY IDEOGRAPH-2FA15 -2FA16;ID # CJK COMPATIBILITY IDEOGRAPH-2FA16 -2FA17;ID # CJK COMPATIBILITY IDEOGRAPH-2FA17 -2FA18;ID # CJK COMPATIBILITY IDEOGRAPH-2FA18 -2FA19;ID # CJK COMPATIBILITY IDEOGRAPH-2FA19 -2FA1A;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1A -2FA1B;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1B -2FA1C;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1C -2FA1D;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1D -E0001;CM # LANGUAGE TAG -E0020;CM # TAG SPACE -E0021;CM # TAG EXCLAMATION MARK -E0022;CM # TAG QUOTATION MARK -E0023;CM # TAG NUMBER SIGN -E0024;CM # TAG DOLLAR SIGN -E0025;CM # TAG PERCENT SIGN -E0026;CM # TAG AMPERSAND -E0027;CM # TAG APOSTROPHE -E0028;CM # TAG LEFT PARENTHESIS -E0029;CM # TAG RIGHT PARENTHESIS -E002A;CM # TAG ASTERISK -E002B;CM # TAG PLUS SIGN -E002C;CM # TAG COMMA -E002D;CM # TAG HYPHEN-MINUS -E002E;CM # TAG FULL STOP -E002F;CM # TAG SOLIDUS -E0030;CM # TAG DIGIT ZERO -E0031;CM # TAG DIGIT ONE -E0032;CM # TAG DIGIT TWO -E0033;CM # TAG DIGIT THREE -E0034;CM # TAG DIGIT FOUR -E0035;CM # TAG DIGIT FIVE -E0036;CM # TAG DIGIT SIX -E0037;CM # TAG DIGIT SEVEN -E0038;CM # TAG DIGIT EIGHT -E0039;CM # TAG DIGIT NINE -E003A;CM # TAG COLON -E003B;CM # TAG SEMICOLON -E003C;CM # TAG LESS-THAN SIGN -E003D;CM # TAG EQUALS SIGN -E003E;CM # TAG GREATER-THAN SIGN -E003F;CM # TAG QUESTION MARK -E0040;CM # TAG COMMERCIAL AT -E0041;CM # TAG LATIN CAPITAL LETTER A -E0042;CM # TAG LATIN CAPITAL LETTER B -E0043;CM # TAG LATIN CAPITAL LETTER C -E0044;CM # TAG LATIN CAPITAL LETTER D -E0045;CM # TAG LATIN CAPITAL LETTER E -E0046;CM # TAG LATIN CAPITAL LETTER F -E0047;CM # TAG LATIN CAPITAL LETTER G -E0048;CM # TAG LATIN CAPITAL LETTER H -E0049;CM # TAG LATIN CAPITAL LETTER I -E004A;CM # TAG LATIN CAPITAL LETTER J -E004B;CM # TAG LATIN CAPITAL LETTER K -E004C;CM # TAG LATIN CAPITAL LETTER L -E004D;CM # TAG LATIN CAPITAL LETTER M -E004E;CM # TAG LATIN CAPITAL LETTER N -E004F;CM # TAG LATIN CAPITAL LETTER O -E0050;CM # TAG LATIN CAPITAL LETTER P -E0051;CM # TAG LATIN CAPITAL LETTER Q -E0052;CM # TAG LATIN CAPITAL LETTER R -E0053;CM # TAG LATIN CAPITAL LETTER S -E0054;CM # TAG LATIN CAPITAL LETTER T -E0055;CM # TAG LATIN CAPITAL LETTER U -E0056;CM # TAG LATIN CAPITAL LETTER V -E0057;CM # TAG LATIN CAPITAL LETTER W -E0058;CM # TAG LATIN CAPITAL LETTER X -E0059;CM # TAG LATIN CAPITAL LETTER Y -E005A;CM # TAG LATIN CAPITAL LETTER Z -E005B;CM # TAG LEFT SQUARE BRACKET -E005C;CM # TAG REVERSE SOLIDUS -E005D;CM # TAG RIGHT SQUARE BRACKET -E005E;CM # TAG CIRCUMFLEX ACCENT -E005F;CM # TAG LOW LINE -E0060;CM # TAG GRAVE ACCENT -E0061;CM # TAG LATIN SMALL LETTER A -E0062;CM # TAG LATIN SMALL LETTER B -E0063;CM # TAG LATIN SMALL LETTER C -E0064;CM # TAG LATIN SMALL LETTER D -E0065;CM # TAG LATIN SMALL LETTER E -E0066;CM # TAG LATIN SMALL LETTER F -E0067;CM # TAG LATIN SMALL LETTER G -E0068;CM # TAG LATIN SMALL LETTER H -E0069;CM # TAG LATIN SMALL LETTER I -E006A;CM # TAG LATIN SMALL LETTER J -E006B;CM # TAG LATIN SMALL LETTER K -E006C;CM # TAG LATIN SMALL LETTER L -E006D;CM # TAG LATIN SMALL LETTER M -E006E;CM # TAG LATIN SMALL LETTER N -E006F;CM # TAG LATIN SMALL LETTER O -E0070;CM # TAG LATIN SMALL LETTER P -E0071;CM # TAG LATIN SMALL LETTER Q -E0072;CM # TAG LATIN SMALL LETTER R -E0073;CM # TAG LATIN SMALL LETTER S -E0074;CM # TAG LATIN SMALL LETTER T -E0075;CM # TAG LATIN SMALL LETTER U -E0076;CM # TAG LATIN SMALL LETTER V -E0077;CM # TAG LATIN SMALL LETTER W -E0078;CM # TAG LATIN SMALL LETTER X -E0079;CM # TAG LATIN SMALL LETTER Y -E007A;CM # TAG LATIN SMALL LETTER Z -E007B;CM # TAG LEFT CURLY BRACKET -E007C;CM # TAG VERTICAL LINE -E007D;CM # TAG RIGHT CURLY BRACKET -E007E;CM # TAG TILDE -E007F;CM # CANCEL TAG -E0100;CM # VARIATION SELECTOR-17 -E0101;CM # VARIATION SELECTOR-18 -E0102;CM # VARIATION SELECTOR-19 -E0103;CM # VARIATION SELECTOR-20 -E0104;CM # VARIATION SELECTOR-21 -E0105;CM # VARIATION SELECTOR-22 -E0106;CM # VARIATION SELECTOR-23 -E0107;CM # VARIATION SELECTOR-24 -E0108;CM # VARIATION SELECTOR-25 -E0109;CM # VARIATION SELECTOR-26 -E010A;CM # VARIATION SELECTOR-27 -E010B;CM # VARIATION SELECTOR-28 -E010C;CM # VARIATION SELECTOR-29 -E010D;CM # VARIATION SELECTOR-30 -E010E;CM # VARIATION SELECTOR-31 -E010F;CM # VARIATION SELECTOR-32 -E0110;CM # VARIATION SELECTOR-33 -E0111;CM # VARIATION SELECTOR-34 -E0112;CM # VARIATION SELECTOR-35 -E0113;CM # VARIATION SELECTOR-36 -E0114;CM # VARIATION SELECTOR-37 -E0115;CM # VARIATION SELECTOR-38 -E0116;CM # VARIATION SELECTOR-39 -E0117;CM # VARIATION SELECTOR-40 -E0118;CM # VARIATION SELECTOR-41 -E0119;CM # VARIATION SELECTOR-42 -E011A;CM # VARIATION SELECTOR-43 -E011B;CM # VARIATION SELECTOR-44 -E011C;CM # VARIATION SELECTOR-45 -E011D;CM # VARIATION SELECTOR-46 -E011E;CM # VARIATION SELECTOR-47 -E011F;CM # VARIATION SELECTOR-48 -E0120;CM # VARIATION SELECTOR-49 -E0121;CM # VARIATION SELECTOR-50 -E0122;CM # VARIATION SELECTOR-51 -E0123;CM # VARIATION SELECTOR-52 -E0124;CM # VARIATION SELECTOR-53 -E0125;CM # VARIATION SELECTOR-54 -E0126;CM # VARIATION SELECTOR-55 -E0127;CM # VARIATION SELECTOR-56 -E0128;CM # VARIATION SELECTOR-57 -E0129;CM # VARIATION SELECTOR-58 -E012A;CM # VARIATION SELECTOR-59 -E012B;CM # VARIATION SELECTOR-60 -E012C;CM # VARIATION SELECTOR-61 -E012D;CM # VARIATION SELECTOR-62 -E012E;CM # VARIATION SELECTOR-63 -E012F;CM # VARIATION SELECTOR-64 -E0130;CM # VARIATION SELECTOR-65 -E0131;CM # VARIATION SELECTOR-66 -E0132;CM # VARIATION SELECTOR-67 -E0133;CM # VARIATION SELECTOR-68 -E0134;CM # VARIATION SELECTOR-69 -E0135;CM # VARIATION SELECTOR-70 -E0136;CM # VARIATION SELECTOR-71 -E0137;CM # VARIATION SELECTOR-72 -E0138;CM # VARIATION SELECTOR-73 -E0139;CM # VARIATION SELECTOR-74 -E013A;CM # VARIATION SELECTOR-75 -E013B;CM # VARIATION SELECTOR-76 -E013C;CM # VARIATION SELECTOR-77 -E013D;CM # VARIATION SELECTOR-78 -E013E;CM # VARIATION SELECTOR-79 -E013F;CM # VARIATION SELECTOR-80 -E0140;CM # VARIATION SELECTOR-81 -E0141;CM # VARIATION SELECTOR-82 -E0142;CM # VARIATION SELECTOR-83 -E0143;CM # VARIATION SELECTOR-84 -E0144;CM # VARIATION SELECTOR-85 -E0145;CM # VARIATION SELECTOR-86 -E0146;CM # VARIATION SELECTOR-87 -E0147;CM # VARIATION SELECTOR-88 -E0148;CM # VARIATION SELECTOR-89 -E0149;CM # VARIATION SELECTOR-90 -E014A;CM # VARIATION SELECTOR-91 -E014B;CM # VARIATION SELECTOR-92 -E014C;CM # VARIATION SELECTOR-93 -E014D;CM # VARIATION SELECTOR-94 -E014E;CM # VARIATION SELECTOR-95 -E014F;CM # VARIATION SELECTOR-96 -E0150;CM # VARIATION SELECTOR-97 -E0151;CM # VARIATION SELECTOR-98 -E0152;CM # VARIATION SELECTOR-99 -E0153;CM # VARIATION SELECTOR-100 -E0154;CM # VARIATION SELECTOR-101 -E0155;CM # VARIATION SELECTOR-102 -E0156;CM # VARIATION SELECTOR-103 -E0157;CM # VARIATION SELECTOR-104 -E0158;CM # VARIATION SELECTOR-105 -E0159;CM # VARIATION SELECTOR-106 -E015A;CM # VARIATION SELECTOR-107 -E015B;CM # VARIATION SELECTOR-108 -E015C;CM # VARIATION SELECTOR-109 -E015D;CM # VARIATION SELECTOR-110 -E015E;CM # VARIATION SELECTOR-111 -E015F;CM # VARIATION SELECTOR-112 -E0160;CM # VARIATION SELECTOR-113 -E0161;CM # VARIATION SELECTOR-114 -E0162;CM # VARIATION SELECTOR-115 -E0163;CM # VARIATION SELECTOR-116 -E0164;CM # VARIATION SELECTOR-117 -E0165;CM # VARIATION SELECTOR-118 -E0166;CM # VARIATION SELECTOR-119 -E0167;CM # VARIATION SELECTOR-120 -E0168;CM # VARIATION SELECTOR-121 -E0169;CM # VARIATION SELECTOR-122 -E016A;CM # VARIATION SELECTOR-123 -E016B;CM # VARIATION SELECTOR-124 -E016C;CM # VARIATION SELECTOR-125 -E016D;CM # VARIATION SELECTOR-126 -E016E;CM # VARIATION SELECTOR-127 -E016F;CM # VARIATION SELECTOR-128 -E0170;CM # VARIATION SELECTOR-129 -E0171;CM # VARIATION SELECTOR-130 -E0172;CM # VARIATION SELECTOR-131 -E0173;CM # VARIATION SELECTOR-132 -E0174;CM # VARIATION SELECTOR-133 -E0175;CM # VARIATION SELECTOR-134 -E0176;CM # VARIATION SELECTOR-135 -E0177;CM # VARIATION SELECTOR-136 -E0178;CM # VARIATION SELECTOR-137 -E0179;CM # VARIATION SELECTOR-138 -E017A;CM # VARIATION SELECTOR-139 -E017B;CM # VARIATION SELECTOR-140 -E017C;CM # VARIATION SELECTOR-141 -E017D;CM # VARIATION SELECTOR-142 -E017E;CM # VARIATION SELECTOR-143 -E017F;CM # VARIATION SELECTOR-144 -E0180;CM # VARIATION SELECTOR-145 -E0181;CM # VARIATION SELECTOR-146 -E0182;CM # VARIATION SELECTOR-147 -E0183;CM # VARIATION SELECTOR-148 -E0184;CM # VARIATION SELECTOR-149 -E0185;CM # VARIATION SELECTOR-150 -E0186;CM # VARIATION SELECTOR-151 -E0187;CM # VARIATION SELECTOR-152 -E0188;CM # VARIATION SELECTOR-153 -E0189;CM # VARIATION SELECTOR-154 -E018A;CM # VARIATION SELECTOR-155 -E018B;CM # VARIATION SELECTOR-156 -E018C;CM # VARIATION SELECTOR-157 -E018D;CM # VARIATION SELECTOR-158 -E018E;CM # VARIATION SELECTOR-159 -E018F;CM # VARIATION SELECTOR-160 -E0190;CM # VARIATION SELECTOR-161 -E0191;CM # VARIATION SELECTOR-162 -E0192;CM # VARIATION SELECTOR-163 -E0193;CM # VARIATION SELECTOR-164 -E0194;CM # VARIATION SELECTOR-165 -E0195;CM # VARIATION SELECTOR-166 -E0196;CM # VARIATION SELECTOR-167 -E0197;CM # VARIATION SELECTOR-168 -E0198;CM # VARIATION SELECTOR-169 -E0199;CM # VARIATION SELECTOR-170 -E019A;CM # VARIATION SELECTOR-171 -E019B;CM # VARIATION SELECTOR-172 -E019C;CM # VARIATION SELECTOR-173 -E019D;CM # VARIATION SELECTOR-174 -E019E;CM # VARIATION SELECTOR-175 -E019F;CM # VARIATION SELECTOR-176 -E01A0;CM # VARIATION SELECTOR-177 -E01A1;CM # VARIATION SELECTOR-178 -E01A2;CM # VARIATION SELECTOR-179 -E01A3;CM # VARIATION SELECTOR-180 -E01A4;CM # VARIATION SELECTOR-181 -E01A5;CM # VARIATION SELECTOR-182 -E01A6;CM # VARIATION SELECTOR-183 -E01A7;CM # VARIATION SELECTOR-184 -E01A8;CM # VARIATION SELECTOR-185 -E01A9;CM # VARIATION SELECTOR-186 -E01AA;CM # VARIATION SELECTOR-187 -E01AB;CM # VARIATION SELECTOR-188 -E01AC;CM # VARIATION SELECTOR-189 -E01AD;CM # VARIATION SELECTOR-190 -E01AE;CM # VARIATION SELECTOR-191 -E01AF;CM # VARIATION SELECTOR-192 -E01B0;CM # VARIATION SELECTOR-193 -E01B1;CM # VARIATION SELECTOR-194 -E01B2;CM # VARIATION SELECTOR-195 -E01B3;CM # VARIATION SELECTOR-196 -E01B4;CM # VARIATION SELECTOR-197 -E01B5;CM # VARIATION SELECTOR-198 -E01B6;CM # VARIATION SELECTOR-199 -E01B7;CM # VARIATION SELECTOR-200 -E01B8;CM # VARIATION SELECTOR-201 -E01B9;CM # VARIATION SELECTOR-202 -E01BA;CM # VARIATION SELECTOR-203 -E01BB;CM # VARIATION SELECTOR-204 -E01BC;CM # VARIATION SELECTOR-205 -E01BD;CM # VARIATION SELECTOR-206 -E01BE;CM # VARIATION SELECTOR-207 -E01BF;CM # VARIATION SELECTOR-208 -E01C0;CM # VARIATION SELECTOR-209 -E01C1;CM # VARIATION SELECTOR-210 -E01C2;CM # VARIATION SELECTOR-211 -E01C3;CM # VARIATION SELECTOR-212 -E01C4;CM # VARIATION SELECTOR-213 -E01C5;CM # VARIATION SELECTOR-214 -E01C6;CM # VARIATION SELECTOR-215 -E01C7;CM # VARIATION SELECTOR-216 -E01C8;CM # VARIATION SELECTOR-217 -E01C9;CM # VARIATION SELECTOR-218 -E01CA;CM # VARIATION SELECTOR-219 -E01CB;CM # VARIATION SELECTOR-220 -E01CC;CM # VARIATION SELECTOR-221 -E01CD;CM # VARIATION SELECTOR-222 -E01CE;CM # VARIATION SELECTOR-223 -E01CF;CM # VARIATION SELECTOR-224 -E01D0;CM # VARIATION SELECTOR-225 -E01D1;CM # VARIATION SELECTOR-226 -E01D2;CM # VARIATION SELECTOR-227 -E01D3;CM # VARIATION SELECTOR-228 -E01D4;CM # VARIATION SELECTOR-229 -E01D5;CM # VARIATION SELECTOR-230 -E01D6;CM # VARIATION SELECTOR-231 -E01D7;CM # VARIATION SELECTOR-232 -E01D8;CM # VARIATION SELECTOR-233 -E01D9;CM # VARIATION SELECTOR-234 -E01DA;CM # VARIATION SELECTOR-235 -E01DB;CM # VARIATION SELECTOR-236 -E01DC;CM # VARIATION SELECTOR-237 -E01DD;CM # VARIATION SELECTOR-238 -E01DE;CM # VARIATION SELECTOR-239 -E01DF;CM # VARIATION SELECTOR-240 -E01E0;CM # VARIATION SELECTOR-241 -E01E1;CM # VARIATION SELECTOR-242 -E01E2;CM # VARIATION SELECTOR-243 -E01E3;CM # VARIATION SELECTOR-244 -E01E4;CM # VARIATION SELECTOR-245 -E01E5;CM # VARIATION SELECTOR-246 -E01E6;CM # VARIATION SELECTOR-247 -E01E7;CM # VARIATION SELECTOR-248 -E01E8;CM # VARIATION SELECTOR-249 -E01E9;CM # VARIATION SELECTOR-250 -E01EA;CM # VARIATION SELECTOR-251 -E01EB;CM # VARIATION SELECTOR-252 -E01EC;CM # VARIATION SELECTOR-253 -E01ED;CM # VARIATION SELECTOR-254 -E01EE;CM # VARIATION SELECTOR-255 -E01EF;CM # VARIATION SELECTOR-256 -F0000..FFFFD;XX # <Plane 15 Private Use, First>..<Plane 15 Private Use, Last> -100000..10FFFD;XX # <Plane 16 Private Use, First>..<Plane 16 Private Use, Last> diff --git a/Master/tlpkg/tlperl.old/lib/unicore/Name.pl b/Master/tlpkg/tlperl.old/lib/unicore/Name.pl deleted file mode 100644 index 6074a8ae3c7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/Name.pl +++ /dev/null @@ -1,16346 +0,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 -0221 LATIN SMALL LETTER D WITH CURL -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 -0234 LATIN SMALL LETTER L WITH CURL -0235 LATIN SMALL LETTER N WITH CURL -0236 LATIN SMALL LETTER T WITH CURL -0237 LATIN SMALL LETTER DOTLESS J -0238 LATIN SMALL LETTER DB DIGRAPH -0239 LATIN SMALL LETTER QP DIGRAPH -023A LATIN CAPITAL LETTER A WITH STROKE -023B LATIN CAPITAL LETTER C WITH STROKE -023C LATIN SMALL LETTER C WITH STROKE -023D LATIN CAPITAL LETTER L WITH BAR -023E LATIN CAPITAL LETTER T WITH DIAGONAL STROKE -023F LATIN SMALL LETTER S WITH SWASH TAIL -0240 LATIN SMALL LETTER Z WITH SWASH TAIL -0241 LATIN CAPITAL LETTER GLOTTAL STOP -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 -02AE LATIN SMALL LETTER TURNED H WITH FISHHOOK -02AF LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL -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 -02EF MODIFIER LETTER LOW DOWN ARROWHEAD -02F0 MODIFIER LETTER LOW UP ARROWHEAD -02F1 MODIFIER LETTER LOW LEFT ARROWHEAD -02F2 MODIFIER LETTER LOW RIGHT ARROWHEAD -02F3 MODIFIER LETTER LOW RING -02F4 MODIFIER LETTER MIDDLE GRAVE ACCENT -02F5 MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT -02F6 MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT -02F7 MODIFIER LETTER LOW TILDE -02F8 MODIFIER LETTER RAISED COLON -02F9 MODIFIER LETTER BEGIN HIGH TONE -02FA MODIFIER LETTER END HIGH TONE -02FB MODIFIER LETTER BEGIN LOW TONE -02FC MODIFIER LETTER END LOW TONE -02FD MODIFIER LETTER SHELF -02FE MODIFIER LETTER OPEN SHELF -02FF MODIFIER LETTER LOW LEFT ARROW -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 -0350 COMBINING RIGHT ARROWHEAD ABOVE -0351 COMBINING LEFT HALF RING ABOVE -0352 COMBINING FERMATA -0353 COMBINING X BELOW -0354 COMBINING LEFT ARROWHEAD BELOW -0355 COMBINING RIGHT ARROWHEAD BELOW -0356 COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW -0357 COMBINING RIGHT HALF RING ABOVE -0358 COMBINING DOT ABOVE RIGHT -0359 COMBINING ASTERISK BELOW -035A COMBINING DOUBLE RING BELOW -035B COMBINING ZIGZAG ABOVE -035C COMBINING DOUBLE BREVE BELOW -035D COMBINING DOUBLE BREVE -035E COMBINING DOUBLE MACRON -035F COMBINING DOUBLE MACRON BELOW -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 -03F7 GREEK CAPITAL LETTER SHO -03F8 GREEK SMALL LETTER SHO -03F9 GREEK CAPITAL LUNATE SIGMA SYMBOL -03FA GREEK CAPITAL LETTER SAN -03FB GREEK SMALL LETTER SAN -03FC GREEK RHO WITH STROKE SYMBOL -03FD GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL -03FE GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL -03FF GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA 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 -04F6 CYRILLIC CAPITAL LETTER GHE WITH DESCENDER -04F7 CYRILLIC SMALL LETTER GHE WITH DESCENDER -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 -05A2 HEBREW ACCENT ATNAH HAFUKH -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 -05C5 HEBREW MARK LOWER DOT -05C6 HEBREW PUNCTUATION NUN HAFUKHA -05C7 HEBREW POINT QAMATS QATAN -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 -0600 ARABIC NUMBER SIGN -0601 ARABIC SIGN SANAH -0602 ARABIC FOOTNOTE MARKER -0603 ARABIC SIGN SAFHA -060B AFGHANI SIGN -060C ARABIC COMMA -060D ARABIC DATE SEPARATOR -060E ARABIC POETIC VERSE SIGN -060F ARABIC SIGN MISRA -0610 ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM -0611 ARABIC SIGN ALAYHE ASSALLAM -0612 ARABIC SIGN RAHMATULLAH ALAYHE -0613 ARABIC SIGN RADI ALLAHOU ANHU -0614 ARABIC SIGN TAKHALLUS -0615 ARABIC SMALL HIGH TAH -061B ARABIC SEMICOLON -061E ARABIC TRIPLE DOT PUNCTUATION MARK -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 -0656 ARABIC SUBSCRIPT ALEF -0657 ARABIC INVERTED DAMMA -0658 ARABIC MARK NOON GHUNNA -0659 ARABIC ZWARAKAY -065A ARABIC VOWEL SIGN SMALL V ABOVE -065B ARABIC VOWEL SIGN INVERTED SMALL V ABOVE -065C ARABIC VOWEL SIGN DOT BELOW -065D ARABIC REVERSED DAMMA -065E ARABIC FATHA WITH TWO DOTS -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 -06EE ARABIC LETTER DAL WITH INVERTED V -06EF ARABIC LETTER REH WITH INVERTED V -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 -06FF ARABIC LETTER HEH WITH INVERTED V -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 -072D SYRIAC LETTER PERSIAN BHETH -072E SYRIAC LETTER PERSIAN GHAMAL -072F SYRIAC LETTER PERSIAN DHALATH -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 -074D SYRIAC LETTER SOGDIAN ZHAIN -074E SYRIAC LETTER SOGDIAN KHAPH -074F SYRIAC LETTER SOGDIAN FE -0750 ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW -0751 ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE -0752 ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW -0753 ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE -0754 ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE -0755 ARABIC LETTER BEH WITH INVERTED SMALL V BELOW -0756 ARABIC LETTER BEH WITH SMALL V -0757 ARABIC LETTER HAH WITH TWO DOTS ABOVE -0758 ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW -0759 ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH -075A ARABIC LETTER DAL WITH INVERTED SMALL V BELOW -075B ARABIC LETTER REH WITH STROKE -075C ARABIC LETTER SEEN WITH FOUR DOTS ABOVE -075D ARABIC LETTER AIN WITH TWO DOTS ABOVE -075E ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE -075F ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE -0760 ARABIC LETTER FEH WITH TWO DOTS BELOW -0761 ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW -0762 ARABIC LETTER KEHEH WITH DOT ABOVE -0763 ARABIC LETTER KEHEH WITH THREE DOTS ABOVE -0764 ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW -0765 ARABIC LETTER MEEM WITH DOT ABOVE -0766 ARABIC LETTER MEEM WITH DOT BELOW -0767 ARABIC LETTER NOON WITH TWO DOTS BELOW -0768 ARABIC LETTER NOON WITH SMALL TAH -0769 ARABIC LETTER NOON WITH SMALL V -076A ARABIC LETTER LAM WITH BAR -076B ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE -076C ARABIC LETTER REH WITH HAMZA ABOVE -076D ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE -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 -0904 DEVANAGARI LETTER SHORT A -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 -097D DEVANAGARI LETTER GLOTTAL STOP -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 -09BD BENGALI SIGN AVAGRAHA -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 -09CE BENGALI LETTER KHANDA TA -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 -0A01 GURMUKHI SIGN ADAK BINDI -0A02 GURMUKHI SIGN BINDI -0A03 GURMUKHI SIGN VISARGA -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 -0A8C GUJARATI LETTER VOCALIC L -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 -0AE1 GUJARATI LETTER VOCALIC LL -0AE2 GUJARATI VOWEL SIGN VOCALIC L -0AE3 GUJARATI VOWEL SIGN VOCALIC LL -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 -0AF1 GUJARATI RUPEE SIGN -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 -0B35 ORIYA LETTER VA -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 -0B71 ORIYA LETTER WA -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 -0BB6 TAMIL LETTER SHA -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 -0BE6 TAMIL DIGIT ZERO -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 -0BF3 TAMIL DAY SIGN -0BF4 TAMIL MONTH SIGN -0BF5 TAMIL YEAR SIGN -0BF6 TAMIL DEBIT SIGN -0BF7 TAMIL CREDIT SIGN -0BF8 TAMIL AS ABOVE SIGN -0BF9 TAMIL RUPEE SIGN -0BFA TAMIL NUMBER SIGN -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 -0CBC KANNADA SIGN NUKTA -0CBD KANNADA SIGN AVAGRAHA -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 -0FD0 TIBETAN MARK BSKA- SHOG GI MGO RGYAN -0FD1 TIBETAN MARK MNYAM YIG GI MGO RGYAN -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 -10F9 GEORGIAN LETTER TURNED GAN -10FA GEORGIAN LETTER AIN -10FB GEORGIAN PARAGRAPH SEPARATOR -10FC MODIFIER LETTER GEORGIAN NAR -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 -1207 ETHIOPIC SYLLABLE HOA -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 -1247 ETHIOPIC SYLLABLE QOA -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 -1287 ETHIOPIC SYLLABLE XOA -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 -12AF ETHIOPIC SYLLABLE KOA -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 -12CF ETHIOPIC SYLLABLE WOA -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 -12EF ETHIOPIC SYLLABLE YOA -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 -130F ETHIOPIC SYLLABLE GOA -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 -131F ETHIOPIC SYLLABLE GGWAA -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 -1347 ETHIOPIC SYLLABLE TZOA -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 -135F ETHIOPIC COMBINING GEMINATION MARK -1360 ETHIOPIC SECTION MARK -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 -1380 ETHIOPIC SYLLABLE SEBATBEIT MWA -1381 ETHIOPIC SYLLABLE MWI -1382 ETHIOPIC SYLLABLE MWEE -1383 ETHIOPIC SYLLABLE MWE -1384 ETHIOPIC SYLLABLE SEBATBEIT BWA -1385 ETHIOPIC SYLLABLE BWI -1386 ETHIOPIC SYLLABLE BWEE -1387 ETHIOPIC SYLLABLE BWE -1388 ETHIOPIC SYLLABLE SEBATBEIT FWA -1389 ETHIOPIC SYLLABLE FWI -138A ETHIOPIC SYLLABLE FWEE -138B ETHIOPIC SYLLABLE FWE -138C ETHIOPIC SYLLABLE SEBATBEIT PWA -138D ETHIOPIC SYLLABLE PWI -138E ETHIOPIC SYLLABLE PWEE -138F ETHIOPIC SYLLABLE PWE -1390 ETHIOPIC TONAL MARK YIZET -1391 ETHIOPIC TONAL MARK DERET -1392 ETHIOPIC TONAL MARK RIKRIK -1393 ETHIOPIC TONAL MARK SHORT RIKRIK -1394 ETHIOPIC TONAL MARK DIFAT -1395 ETHIOPIC TONAL MARK KENAT -1396 ETHIOPIC TONAL MARK CHIRET -1397 ETHIOPIC TONAL MARK HIDET -1398 ETHIOPIC TONAL MARK DERET-HIDET -1399 ETHIOPIC TONAL MARK KURT -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 -17DD KHMER SIGN ATTHACAN -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 -17F0 KHMER SYMBOL LEK ATTAK SON -17F1 KHMER SYMBOL LEK ATTAK MUOY -17F2 KHMER SYMBOL LEK ATTAK PII -17F3 KHMER SYMBOL LEK ATTAK BEI -17F4 KHMER SYMBOL LEK ATTAK BUON -17F5 KHMER SYMBOL LEK ATTAK PRAM -17F6 KHMER SYMBOL LEK ATTAK PRAM-MUOY -17F7 KHMER SYMBOL LEK ATTAK PRAM-PII -17F8 KHMER SYMBOL LEK ATTAK PRAM-BEI -17F9 KHMER SYMBOL LEK ATTAK PRAM-BUON -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 -1900 LIMBU VOWEL-CARRIER LETTER -1901 LIMBU LETTER KA -1902 LIMBU LETTER KHA -1903 LIMBU LETTER GA -1904 LIMBU LETTER GHA -1905 LIMBU LETTER NGA -1906 LIMBU LETTER CA -1907 LIMBU LETTER CHA -1908 LIMBU LETTER JA -1909 LIMBU LETTER JHA -190A LIMBU LETTER YAN -190B LIMBU LETTER TA -190C LIMBU LETTER THA -190D LIMBU LETTER DA -190E LIMBU LETTER DHA -190F LIMBU LETTER NA -1910 LIMBU LETTER PA -1911 LIMBU LETTER PHA -1912 LIMBU LETTER BA -1913 LIMBU LETTER BHA -1914 LIMBU LETTER MA -1915 LIMBU LETTER YA -1916 LIMBU LETTER RA -1917 LIMBU LETTER LA -1918 LIMBU LETTER WA -1919 LIMBU LETTER SHA -191A LIMBU LETTER SSA -191B LIMBU LETTER SA -191C LIMBU LETTER HA -1920 LIMBU VOWEL SIGN A -1921 LIMBU VOWEL SIGN I -1922 LIMBU VOWEL SIGN U -1923 LIMBU VOWEL SIGN EE -1924 LIMBU VOWEL SIGN AI -1925 LIMBU VOWEL SIGN OO -1926 LIMBU VOWEL SIGN AU -1927 LIMBU VOWEL SIGN E -1928 LIMBU VOWEL SIGN O -1929 LIMBU SUBJOINED LETTER YA -192A LIMBU SUBJOINED LETTER RA -192B LIMBU SUBJOINED LETTER WA -1930 LIMBU SMALL LETTER KA -1931 LIMBU SMALL LETTER NGA -1932 LIMBU SMALL LETTER ANUSVARA -1933 LIMBU SMALL LETTER TA -1934 LIMBU SMALL LETTER NA -1935 LIMBU SMALL LETTER PA -1936 LIMBU SMALL LETTER MA -1937 LIMBU SMALL LETTER RA -1938 LIMBU SMALL LETTER LA -1939 LIMBU SIGN MUKPHRENG -193A LIMBU SIGN KEMPHRENG -193B LIMBU SIGN SA-I -1940 LIMBU SIGN LOO -1944 LIMBU EXCLAMATION MARK -1945 LIMBU QUESTION MARK -1946 LIMBU DIGIT ZERO -1947 LIMBU DIGIT ONE -1948 LIMBU DIGIT TWO -1949 LIMBU DIGIT THREE -194A LIMBU DIGIT FOUR -194B LIMBU DIGIT FIVE -194C LIMBU DIGIT SIX -194D LIMBU DIGIT SEVEN -194E LIMBU DIGIT EIGHT -194F LIMBU DIGIT NINE -1950 TAI LE LETTER KA -1951 TAI LE LETTER XA -1952 TAI LE LETTER NGA -1953 TAI LE LETTER TSA -1954 TAI LE LETTER SA -1955 TAI LE LETTER YA -1956 TAI LE LETTER TA -1957 TAI LE LETTER THA -1958 TAI LE LETTER LA -1959 TAI LE LETTER PA -195A TAI LE LETTER PHA -195B TAI LE LETTER MA -195C TAI LE LETTER FA -195D TAI LE LETTER VA -195E TAI LE LETTER HA -195F TAI LE LETTER QA -1960 TAI LE LETTER KHA -1961 TAI LE LETTER TSHA -1962 TAI LE LETTER NA -1963 TAI LE LETTER A -1964 TAI LE LETTER I -1965 TAI LE LETTER EE -1966 TAI LE LETTER EH -1967 TAI LE LETTER U -1968 TAI LE LETTER OO -1969 TAI LE LETTER O -196A TAI LE LETTER UE -196B TAI LE LETTER E -196C TAI LE LETTER AUE -196D TAI LE LETTER AI -1970 TAI LE LETTER TONE-2 -1971 TAI LE LETTER TONE-3 -1972 TAI LE LETTER TONE-4 -1973 TAI LE LETTER TONE-5 -1974 TAI LE LETTER TONE-6 -1980 NEW TAI LUE LETTER HIGH QA -1981 NEW TAI LUE LETTER LOW QA -1982 NEW TAI LUE LETTER HIGH KA -1983 NEW TAI LUE LETTER HIGH XA -1984 NEW TAI LUE LETTER HIGH NGA -1985 NEW TAI LUE LETTER LOW KA -1986 NEW TAI LUE LETTER LOW XA -1987 NEW TAI LUE LETTER LOW NGA -1988 NEW TAI LUE LETTER HIGH TSA -1989 NEW TAI LUE LETTER HIGH SA -198A NEW TAI LUE LETTER HIGH YA -198B NEW TAI LUE LETTER LOW TSA -198C NEW TAI LUE LETTER LOW SA -198D NEW TAI LUE LETTER LOW YA -198E NEW TAI LUE LETTER HIGH TA -198F NEW TAI LUE LETTER HIGH THA -1990 NEW TAI LUE LETTER HIGH NA -1991 NEW TAI LUE LETTER LOW TA -1992 NEW TAI LUE LETTER LOW THA -1993 NEW TAI LUE LETTER LOW NA -1994 NEW TAI LUE LETTER HIGH PA -1995 NEW TAI LUE LETTER HIGH PHA -1996 NEW TAI LUE LETTER HIGH MA -1997 NEW TAI LUE LETTER LOW PA -1998 NEW TAI LUE LETTER LOW PHA -1999 NEW TAI LUE LETTER LOW MA -199A NEW TAI LUE LETTER HIGH FA -199B NEW TAI LUE LETTER HIGH VA -199C NEW TAI LUE LETTER HIGH LA -199D NEW TAI LUE LETTER LOW FA -199E NEW TAI LUE LETTER LOW VA -199F NEW TAI LUE LETTER LOW LA -19A0 NEW TAI LUE LETTER HIGH HA -19A1 NEW TAI LUE LETTER HIGH DA -19A2 NEW TAI LUE LETTER HIGH BA -19A3 NEW TAI LUE LETTER LOW HA -19A4 NEW TAI LUE LETTER LOW DA -19A5 NEW TAI LUE LETTER LOW BA -19A6 NEW TAI LUE LETTER HIGH KVA -19A7 NEW TAI LUE LETTER HIGH XVA -19A8 NEW TAI LUE LETTER LOW KVA -19A9 NEW TAI LUE LETTER LOW XVA -19B0 NEW TAI LUE VOWEL SIGN VOWEL SHORTENER -19B1 NEW TAI LUE VOWEL SIGN AA -19B2 NEW TAI LUE VOWEL SIGN II -19B3 NEW TAI LUE VOWEL SIGN U -19B4 NEW TAI LUE VOWEL SIGN UU -19B5 NEW TAI LUE VOWEL SIGN E -19B6 NEW TAI LUE VOWEL SIGN AE -19B7 NEW TAI LUE VOWEL SIGN O -19B8 NEW TAI LUE VOWEL SIGN OA -19B9 NEW TAI LUE VOWEL SIGN UE -19BA NEW TAI LUE VOWEL SIGN AY -19BB NEW TAI LUE VOWEL SIGN AAY -19BC NEW TAI LUE VOWEL SIGN UY -19BD NEW TAI LUE VOWEL SIGN OY -19BE NEW TAI LUE VOWEL SIGN OAY -19BF NEW TAI LUE VOWEL SIGN UEY -19C0 NEW TAI LUE VOWEL SIGN IY -19C1 NEW TAI LUE LETTER FINAL V -19C2 NEW TAI LUE LETTER FINAL NG -19C3 NEW TAI LUE LETTER FINAL N -19C4 NEW TAI LUE LETTER FINAL M -19C5 NEW TAI LUE LETTER FINAL K -19C6 NEW TAI LUE LETTER FINAL D -19C7 NEW TAI LUE LETTER FINAL B -19C8 NEW TAI LUE TONE MARK-1 -19C9 NEW TAI LUE TONE MARK-2 -19D0 NEW TAI LUE DIGIT ZERO -19D1 NEW TAI LUE DIGIT ONE -19D2 NEW TAI LUE DIGIT TWO -19D3 NEW TAI LUE DIGIT THREE -19D4 NEW TAI LUE DIGIT FOUR -19D5 NEW TAI LUE DIGIT FIVE -19D6 NEW TAI LUE DIGIT SIX -19D7 NEW TAI LUE DIGIT SEVEN -19D8 NEW TAI LUE DIGIT EIGHT -19D9 NEW TAI LUE DIGIT NINE -19DE NEW TAI LUE SIGN LAE -19DF NEW TAI LUE SIGN LAEV -19E0 KHMER SYMBOL PATHAMASAT -19E1 KHMER SYMBOL MUOY KOET -19E2 KHMER SYMBOL PII KOET -19E3 KHMER SYMBOL BEI KOET -19E4 KHMER SYMBOL BUON KOET -19E5 KHMER SYMBOL PRAM KOET -19E6 KHMER SYMBOL PRAM-MUOY KOET -19E7 KHMER SYMBOL PRAM-PII KOET -19E8 KHMER SYMBOL PRAM-BEI KOET -19E9 KHMER SYMBOL PRAM-BUON KOET -19EA KHMER SYMBOL DAP KOET -19EB KHMER SYMBOL DAP-MUOY KOET -19EC KHMER SYMBOL DAP-PII KOET -19ED KHMER SYMBOL DAP-BEI KOET -19EE KHMER SYMBOL DAP-BUON KOET -19EF KHMER SYMBOL DAP-PRAM KOET -19F0 KHMER SYMBOL TUTEYASAT -19F1 KHMER SYMBOL MUOY ROC -19F2 KHMER SYMBOL PII ROC -19F3 KHMER SYMBOL BEI ROC -19F4 KHMER SYMBOL BUON ROC -19F5 KHMER SYMBOL PRAM ROC -19F6 KHMER SYMBOL PRAM-MUOY ROC -19F7 KHMER SYMBOL PRAM-PII ROC -19F8 KHMER SYMBOL PRAM-BEI ROC -19F9 KHMER SYMBOL PRAM-BUON ROC -19FA KHMER SYMBOL DAP ROC -19FB KHMER SYMBOL DAP-MUOY ROC -19FC KHMER SYMBOL DAP-PII ROC -19FD KHMER SYMBOL DAP-BEI ROC -19FE KHMER SYMBOL DAP-BUON ROC -19FF KHMER SYMBOL DAP-PRAM ROC -1A00 BUGINESE LETTER KA -1A01 BUGINESE LETTER GA -1A02 BUGINESE LETTER NGA -1A03 BUGINESE LETTER NGKA -1A04 BUGINESE LETTER PA -1A05 BUGINESE LETTER BA -1A06 BUGINESE LETTER MA -1A07 BUGINESE LETTER MPA -1A08 BUGINESE LETTER TA -1A09 BUGINESE LETTER DA -1A0A BUGINESE LETTER NA -1A0B BUGINESE LETTER NRA -1A0C BUGINESE LETTER CA -1A0D BUGINESE LETTER JA -1A0E BUGINESE LETTER NYA -1A0F BUGINESE LETTER NYCA -1A10 BUGINESE LETTER YA -1A11 BUGINESE LETTER RA -1A12 BUGINESE LETTER LA -1A13 BUGINESE LETTER VA -1A14 BUGINESE LETTER SA -1A15 BUGINESE LETTER A -1A16 BUGINESE LETTER HA -1A17 BUGINESE VOWEL SIGN I -1A18 BUGINESE VOWEL SIGN U -1A19 BUGINESE VOWEL SIGN E -1A1A BUGINESE VOWEL SIGN O -1A1B BUGINESE VOWEL SIGN AE -1A1E BUGINESE PALLAWA -1A1F BUGINESE END OF SECTION -1D00 LATIN LETTER SMALL CAPITAL A -1D01 LATIN LETTER SMALL CAPITAL AE -1D02 LATIN SMALL LETTER TURNED AE -1D03 LATIN LETTER SMALL CAPITAL BARRED B -1D04 LATIN LETTER SMALL CAPITAL C -1D05 LATIN LETTER SMALL CAPITAL D -1D06 LATIN LETTER SMALL CAPITAL ETH -1D07 LATIN LETTER SMALL CAPITAL E -1D08 LATIN SMALL LETTER TURNED OPEN E -1D09 LATIN SMALL LETTER TURNED I -1D0A LATIN LETTER SMALL CAPITAL J -1D0B LATIN LETTER SMALL CAPITAL K -1D0C LATIN LETTER SMALL CAPITAL L WITH STROKE -1D0D LATIN LETTER SMALL CAPITAL M -1D0E LATIN LETTER SMALL CAPITAL REVERSED N -1D0F LATIN LETTER SMALL CAPITAL O -1D10 LATIN LETTER SMALL CAPITAL OPEN O -1D11 LATIN SMALL LETTER SIDEWAYS O -1D12 LATIN SMALL LETTER SIDEWAYS OPEN O -1D13 LATIN SMALL LETTER SIDEWAYS O WITH STROKE -1D14 LATIN SMALL LETTER TURNED OE -1D15 LATIN LETTER SMALL CAPITAL OU -1D16 LATIN SMALL LETTER TOP HALF O -1D17 LATIN SMALL LETTER BOTTOM HALF O -1D18 LATIN LETTER SMALL CAPITAL P -1D19 LATIN LETTER SMALL CAPITAL REVERSED R -1D1A LATIN LETTER SMALL CAPITAL TURNED R -1D1B LATIN LETTER SMALL CAPITAL T -1D1C LATIN LETTER SMALL CAPITAL U -1D1D LATIN SMALL LETTER SIDEWAYS U -1D1E LATIN SMALL LETTER SIDEWAYS DIAERESIZED U -1D1F LATIN SMALL LETTER SIDEWAYS TURNED M -1D20 LATIN LETTER SMALL CAPITAL V -1D21 LATIN LETTER SMALL CAPITAL W -1D22 LATIN LETTER SMALL CAPITAL Z -1D23 LATIN LETTER SMALL CAPITAL EZH -1D24 LATIN LETTER VOICED LARYNGEAL SPIRANT -1D25 LATIN LETTER AIN -1D26 GREEK LETTER SMALL CAPITAL GAMMA -1D27 GREEK LETTER SMALL CAPITAL LAMDA -1D28 GREEK LETTER SMALL CAPITAL PI -1D29 GREEK LETTER SMALL CAPITAL RHO -1D2A GREEK LETTER SMALL CAPITAL PSI -1D2B CYRILLIC LETTER SMALL CAPITAL EL -1D2C MODIFIER LETTER CAPITAL A -1D2D MODIFIER LETTER CAPITAL AE -1D2E MODIFIER LETTER CAPITAL B -1D2F MODIFIER LETTER CAPITAL BARRED B -1D30 MODIFIER LETTER CAPITAL D -1D31 MODIFIER LETTER CAPITAL E -1D32 MODIFIER LETTER CAPITAL REVERSED E -1D33 MODIFIER LETTER CAPITAL G -1D34 MODIFIER LETTER CAPITAL H -1D35 MODIFIER LETTER CAPITAL I -1D36 MODIFIER LETTER CAPITAL J -1D37 MODIFIER LETTER CAPITAL K -1D38 MODIFIER LETTER CAPITAL L -1D39 MODIFIER LETTER CAPITAL M -1D3A MODIFIER LETTER CAPITAL N -1D3B MODIFIER LETTER CAPITAL REVERSED N -1D3C MODIFIER LETTER CAPITAL O -1D3D MODIFIER LETTER CAPITAL OU -1D3E MODIFIER LETTER CAPITAL P -1D3F MODIFIER LETTER CAPITAL R -1D40 MODIFIER LETTER CAPITAL T -1D41 MODIFIER LETTER CAPITAL U -1D42 MODIFIER LETTER CAPITAL W -1D43 MODIFIER LETTER SMALL A -1D44 MODIFIER LETTER SMALL TURNED A -1D45 MODIFIER LETTER SMALL ALPHA -1D46 MODIFIER LETTER SMALL TURNED AE -1D47 MODIFIER LETTER SMALL B -1D48 MODIFIER LETTER SMALL D -1D49 MODIFIER LETTER SMALL E -1D4A MODIFIER LETTER SMALL SCHWA -1D4B MODIFIER LETTER SMALL OPEN E -1D4C MODIFIER LETTER SMALL TURNED OPEN E -1D4D MODIFIER LETTER SMALL G -1D4E MODIFIER LETTER SMALL TURNED I -1D4F MODIFIER LETTER SMALL K -1D50 MODIFIER LETTER SMALL M -1D51 MODIFIER LETTER SMALL ENG -1D52 MODIFIER LETTER SMALL O -1D53 MODIFIER LETTER SMALL OPEN O -1D54 MODIFIER LETTER SMALL TOP HALF O -1D55 MODIFIER LETTER SMALL BOTTOM HALF O -1D56 MODIFIER LETTER SMALL P -1D57 MODIFIER LETTER SMALL T -1D58 MODIFIER LETTER SMALL U -1D59 MODIFIER LETTER SMALL SIDEWAYS U -1D5A MODIFIER LETTER SMALL TURNED M -1D5B MODIFIER LETTER SMALL V -1D5C MODIFIER LETTER SMALL AIN -1D5D MODIFIER LETTER SMALL BETA -1D5E MODIFIER LETTER SMALL GREEK GAMMA -1D5F MODIFIER LETTER SMALL DELTA -1D60 MODIFIER LETTER SMALL GREEK PHI -1D61 MODIFIER LETTER SMALL CHI -1D62 LATIN SUBSCRIPT SMALL LETTER I -1D63 LATIN SUBSCRIPT SMALL LETTER R -1D64 LATIN SUBSCRIPT SMALL LETTER U -1D65 LATIN SUBSCRIPT SMALL LETTER V -1D66 GREEK SUBSCRIPT SMALL LETTER BETA -1D67 GREEK SUBSCRIPT SMALL LETTER GAMMA -1D68 GREEK SUBSCRIPT SMALL LETTER RHO -1D69 GREEK SUBSCRIPT SMALL LETTER PHI -1D6A GREEK SUBSCRIPT SMALL LETTER CHI -1D6B LATIN SMALL LETTER UE -1D6C LATIN SMALL LETTER B WITH MIDDLE TILDE -1D6D LATIN SMALL LETTER D WITH MIDDLE TILDE -1D6E LATIN SMALL LETTER F WITH MIDDLE TILDE -1D6F LATIN SMALL LETTER M WITH MIDDLE TILDE -1D70 LATIN SMALL LETTER N WITH MIDDLE TILDE -1D71 LATIN SMALL LETTER P WITH MIDDLE TILDE -1D72 LATIN SMALL LETTER R WITH MIDDLE TILDE -1D73 LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE -1D74 LATIN SMALL LETTER S WITH MIDDLE TILDE -1D75 LATIN SMALL LETTER T WITH MIDDLE TILDE -1D76 LATIN SMALL LETTER Z WITH MIDDLE TILDE -1D77 LATIN SMALL LETTER TURNED G -1D78 MODIFIER LETTER CYRILLIC EN -1D79 LATIN SMALL LETTER INSULAR G -1D7A LATIN SMALL LETTER TH WITH STRIKETHROUGH -1D7B LATIN SMALL CAPITAL LETTER I WITH STROKE -1D7C LATIN SMALL LETTER IOTA WITH STROKE -1D7D LATIN SMALL LETTER P WITH STROKE -1D7E LATIN SMALL CAPITAL LETTER U WITH STROKE -1D7F LATIN SMALL LETTER UPSILON WITH STROKE -1D80 LATIN SMALL LETTER B WITH PALATAL HOOK -1D81 LATIN SMALL LETTER D WITH PALATAL HOOK -1D82 LATIN SMALL LETTER F WITH PALATAL HOOK -1D83 LATIN SMALL LETTER G WITH PALATAL HOOK -1D84 LATIN SMALL LETTER K WITH PALATAL HOOK -1D85 LATIN SMALL LETTER L WITH PALATAL HOOK -1D86 LATIN SMALL LETTER M WITH PALATAL HOOK -1D87 LATIN SMALL LETTER N WITH PALATAL HOOK -1D88 LATIN SMALL LETTER P WITH PALATAL HOOK -1D89 LATIN SMALL LETTER R WITH PALATAL HOOK -1D8A LATIN SMALL LETTER S WITH PALATAL HOOK -1D8B LATIN SMALL LETTER ESH WITH PALATAL HOOK -1D8C LATIN SMALL LETTER V WITH PALATAL HOOK -1D8D LATIN SMALL LETTER X WITH PALATAL HOOK -1D8E LATIN SMALL LETTER Z WITH PALATAL HOOK -1D8F LATIN SMALL LETTER A WITH RETROFLEX HOOK -1D90 LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK -1D91 LATIN SMALL LETTER D WITH HOOK AND TAIL -1D92 LATIN SMALL LETTER E WITH RETROFLEX HOOK -1D93 LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK -1D94 LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK -1D95 LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK -1D96 LATIN SMALL LETTER I WITH RETROFLEX HOOK -1D97 LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK -1D98 LATIN SMALL LETTER ESH WITH RETROFLEX HOOK -1D99 LATIN SMALL LETTER U WITH RETROFLEX HOOK -1D9A LATIN SMALL LETTER EZH WITH RETROFLEX HOOK -1D9B MODIFIER LETTER SMALL TURNED ALPHA -1D9C MODIFIER LETTER SMALL C -1D9D MODIFIER LETTER SMALL C WITH CURL -1D9E MODIFIER LETTER SMALL ETH -1D9F MODIFIER LETTER SMALL REVERSED OPEN E -1DA0 MODIFIER LETTER SMALL F -1DA1 MODIFIER LETTER SMALL DOTLESS J WITH STROKE -1DA2 MODIFIER LETTER SMALL SCRIPT G -1DA3 MODIFIER LETTER SMALL TURNED H -1DA4 MODIFIER LETTER SMALL I WITH STROKE -1DA5 MODIFIER LETTER SMALL IOTA -1DA6 MODIFIER LETTER SMALL CAPITAL I -1DA7 MODIFIER LETTER SMALL CAPITAL I WITH STROKE -1DA8 MODIFIER LETTER SMALL J WITH CROSSED-TAIL -1DA9 MODIFIER LETTER SMALL L WITH RETROFLEX HOOK -1DAA MODIFIER LETTER SMALL L WITH PALATAL HOOK -1DAB MODIFIER LETTER SMALL CAPITAL L -1DAC MODIFIER LETTER SMALL M WITH HOOK -1DAD MODIFIER LETTER SMALL TURNED M WITH LONG LEG -1DAE MODIFIER LETTER SMALL N WITH LEFT HOOK -1DAF MODIFIER LETTER SMALL N WITH RETROFLEX HOOK -1DB0 MODIFIER LETTER SMALL CAPITAL N -1DB1 MODIFIER LETTER SMALL BARRED O -1DB2 MODIFIER LETTER SMALL PHI -1DB3 MODIFIER LETTER SMALL S WITH HOOK -1DB4 MODIFIER LETTER SMALL ESH -1DB5 MODIFIER LETTER SMALL T WITH PALATAL HOOK -1DB6 MODIFIER LETTER SMALL U BAR -1DB7 MODIFIER LETTER SMALL UPSILON -1DB8 MODIFIER LETTER SMALL CAPITAL U -1DB9 MODIFIER LETTER SMALL V WITH HOOK -1DBA MODIFIER LETTER SMALL TURNED V -1DBB MODIFIER LETTER SMALL Z -1DBC MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK -1DBD MODIFIER LETTER SMALL Z WITH CURL -1DBE MODIFIER LETTER SMALL EZH -1DBF MODIFIER LETTER SMALL THETA -1DC0 COMBINING DOTTED GRAVE ACCENT -1DC1 COMBINING DOTTED ACUTE ACCENT -1DC2 COMBINING SNAKE BELOW -1DC3 COMBINING SUSPENSION MARK -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 -2053 SWUNG DASH -2054 INVERTED UNDERTIE -2055 FLOWER PUNCTUATION MARK -2056 THREE DOT PUNCTUATION -2057 QUADRUPLE PRIME -2058 FOUR DOT PUNCTUATION -2059 FIVE DOT PUNCTUATION -205A TWO DOT PUNCTUATION -205B FOUR DOT MARK -205C DOTTED CROSS -205D TRICOLON -205E VERTICAL FOUR DOTS -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 -2090 LATIN SUBSCRIPT SMALL LETTER A -2091 LATIN SUBSCRIPT SMALL LETTER E -2092 LATIN SUBSCRIPT SMALL LETTER O -2093 LATIN SUBSCRIPT SMALL LETTER X -2094 LATIN SUBSCRIPT SMALL LETTER SCHWA -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 -20B2 GUARANI SIGN -20B3 AUSTRAL SIGN -20B4 HRYVNIA SIGN -20B5 CEDI 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 -20EB COMBINING LONG DOUBLE SOLIDUS 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 -213B FACSIMILE SIGN -213C DOUBLE-STRUCK SMALL PI -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 -214C PER SIGN -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 -23CF EJECT SYMBOL -23D0 VERTICAL LINE EXTENSION -23D1 METRICAL BREVE -23D2 METRICAL LONG OVER SHORT -23D3 METRICAL SHORT OVER LONG -23D4 METRICAL LONG OVER TWO SHORTS -23D5 METRICAL TWO SHORTS OVER LONG -23D6 METRICAL TWO SHORTS JOINED -23D7 METRICAL TRISEME -23D8 METRICAL TETRASEME -23D9 METRICAL PENTASEME -23DA EARTH GROUND -23DB FUSE -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 -24FF NEGATIVE CIRCLED DIGIT ZERO -2500 BOX DRAWINGS LIGHT HORIZONTAL -2501 BOX DRAWINGS HEAVY HORIZONTAL -2502 BOX DRAWINGS LIGHT VERTICAL -2503 BOX DRAWINGS HEAVY VERTICAL -2504 BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL -2505 BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL -2506 BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL -2507 BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL -2508 BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL -2509 BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL -250A BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL -250B BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL -250C BOX DRAWINGS LIGHT DOWN AND RIGHT -250D BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY -250E BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT -250F BOX DRAWINGS HEAVY DOWN AND RIGHT -2510 BOX DRAWINGS LIGHT DOWN AND LEFT -2511 BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY -2512 BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT -2513 BOX DRAWINGS HEAVY DOWN AND LEFT -2514 BOX DRAWINGS LIGHT UP AND RIGHT -2515 BOX DRAWINGS UP LIGHT AND RIGHT HEAVY -2516 BOX DRAWINGS UP HEAVY AND RIGHT LIGHT -2517 BOX DRAWINGS HEAVY UP AND RIGHT -2518 BOX DRAWINGS LIGHT UP AND LEFT -2519 BOX DRAWINGS UP LIGHT AND LEFT HEAVY -251A BOX DRAWINGS UP HEAVY AND LEFT LIGHT -251B BOX DRAWINGS HEAVY UP AND LEFT -251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT -251D BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY -251E BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT -251F BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT -2520 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT -2521 BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY -2522 BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY -2523 BOX DRAWINGS HEAVY VERTICAL AND RIGHT -2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT -2525 BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY -2526 BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT -2527 BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT -2528 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT -2529 BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY -252A BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY -252B BOX DRAWINGS HEAVY VERTICAL AND LEFT -252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL -252D BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT -252E BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT -252F BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY -2530 BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT -2531 BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY -2532 BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY -2533 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL -2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL -2535 BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT -2536 BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT -2537 BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY -2538 BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT -2539 BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY -253A BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY -253B BOX DRAWINGS HEAVY UP AND HORIZONTAL -253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL -253D BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT -253E BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT -253F BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY -2540 BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT -2541 BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT -2542 BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT -2543 BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT -2544 BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT -2545 BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT -2546 BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT -2547 BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY -2548 BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY -2549 BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY -254A BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY -254B BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL -254C BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL -254D BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL -254E BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL -254F BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL -2550 BOX DRAWINGS DOUBLE HORIZONTAL -2551 BOX DRAWINGS DOUBLE VERTICAL -2552 BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE -2553 BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE -2554 BOX DRAWINGS DOUBLE DOWN AND RIGHT -2555 BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE -2556 BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE -2557 BOX DRAWINGS DOUBLE DOWN AND LEFT -2558 BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE -2559 BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE -255A BOX DRAWINGS DOUBLE UP AND RIGHT -255B BOX DRAWINGS UP SINGLE AND LEFT DOUBLE -255C BOX DRAWINGS UP DOUBLE AND LEFT SINGLE -255D BOX DRAWINGS DOUBLE UP AND LEFT -255E BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE -255F BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE -2560 BOX DRAWINGS DOUBLE VERTICAL AND RIGHT -2561 BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE -2562 BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE -2563 BOX DRAWINGS DOUBLE VERTICAL AND LEFT -2564 BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE -2565 BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE -2566 BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL -2567 BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE -2568 BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE -2569 BOX DRAWINGS DOUBLE UP AND HORIZONTAL -256A BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE -256B BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE -256C BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL -256D BOX DRAWINGS LIGHT ARC DOWN AND RIGHT -256E BOX DRAWINGS LIGHT ARC DOWN AND LEFT -256F BOX DRAWINGS LIGHT ARC UP AND LEFT -2570 BOX DRAWINGS LIGHT ARC UP AND RIGHT -2571 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT -2572 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT -2573 BOX DRAWINGS LIGHT DIAGONAL CROSS -2574 BOX DRAWINGS LIGHT LEFT -2575 BOX DRAWINGS LIGHT UP -2576 BOX DRAWINGS LIGHT RIGHT -2577 BOX DRAWINGS LIGHT DOWN -2578 BOX DRAWINGS HEAVY LEFT -2579 BOX DRAWINGS HEAVY UP -257A BOX DRAWINGS HEAVY RIGHT -257B BOX DRAWINGS HEAVY DOWN -257C BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT -257D BOX DRAWINGS LIGHT UP AND HEAVY DOWN -257E BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT -257F BOX DRAWINGS HEAVY UP AND LIGHT DOWN -2580 UPPER HALF BLOCK -2581 LOWER ONE EIGHTH BLOCK -2582 LOWER ONE QUARTER BLOCK -2583 LOWER THREE EIGHTHS BLOCK -2584 LOWER HALF BLOCK -2585 LOWER FIVE EIGHTHS BLOCK -2586 LOWER THREE QUARTERS BLOCK -2587 LOWER SEVEN EIGHTHS BLOCK -2588 FULL BLOCK -2589 LEFT SEVEN EIGHTHS BLOCK -258A LEFT THREE QUARTERS BLOCK -258B LEFT FIVE EIGHTHS BLOCK -258C LEFT HALF BLOCK -258D LEFT THREE EIGHTHS BLOCK -258E LEFT ONE QUARTER BLOCK -258F LEFT ONE EIGHTH BLOCK -2590 RIGHT HALF BLOCK -2591 LIGHT SHADE -2592 MEDIUM SHADE -2593 DARK SHADE -2594 UPPER ONE EIGHTH BLOCK -2595 RIGHT ONE EIGHTH BLOCK -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 -2614 UMBRELLA WITH RAIN DROPS -2615 HOT BEVERAGE -2616 WHITE SHOGI PIECE -2617 BLACK SHOGI PIECE -2618 SHAMROCK -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 -267E PERMANENT PAPER SIGN -267F WHEELCHAIR 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 -268A MONOGRAM FOR YANG -268B MONOGRAM FOR YIN -268C DIGRAM FOR GREATER YANG -268D DIGRAM FOR LESSER YIN -268E DIGRAM FOR LESSER YANG -268F DIGRAM FOR GREATER YIN -2690 WHITE FLAG -2691 BLACK FLAG -2692 HAMMER AND PICK -2693 ANCHOR -2694 CROSSED SWORDS -2695 STAFF OF AESCULAPIUS -2696 SCALES -2697 ALEMBIC -2698 FLOWER -2699 GEAR -269A STAFF OF HERMES -269B ATOM SYMBOL -269C FLEUR-DE-LIS -26A0 WARNING SIGN -26A1 HIGH VOLTAGE SIGN -26A2 DOUBLED FEMALE SIGN -26A3 DOUBLED MALE SIGN -26A4 INTERLOCKED FEMALE AND MALE SIGN -26A5 MALE AND FEMALE SIGN -26A6 MALE WITH STROKE SIGN -26A7 MALE WITH STROKE AND MALE AND FEMALE SIGN -26A8 VERTICAL MALE WITH STROKE SIGN -26A9 HORIZONTAL MALE WITH STROKE SIGN -26AA MEDIUM WHITE CIRCLE -26AB MEDIUM BLACK CIRCLE -26AC MEDIUM SMALL WHITE CIRCLE -26AD MARRIAGE SYMBOL -26AE DIVORCE SYMBOL -26AF UNMARRIED PARTNERSHIP SYMBOL -26B0 COFFIN -26B1 FUNERAL URN -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 -27C0 THREE DIMENSIONAL ANGLE -27C1 WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE -27C2 PERPENDICULAR -27C3 OPEN SUBSET -27C4 OPEN SUPERSET -27C5 LEFT S-SHAPED BAG DELIMITER -27C6 RIGHT S-SHAPED BAG DELIMITER -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 -2B00 NORTH EAST WHITE ARROW -2B01 NORTH WEST WHITE ARROW -2B02 SOUTH EAST WHITE ARROW -2B03 SOUTH WEST WHITE ARROW -2B04 LEFT RIGHT WHITE ARROW -2B05 LEFTWARDS BLACK ARROW -2B06 UPWARDS BLACK ARROW -2B07 DOWNWARDS BLACK ARROW -2B08 NORTH EAST BLACK ARROW -2B09 NORTH WEST BLACK ARROW -2B0A SOUTH EAST BLACK ARROW -2B0B SOUTH WEST BLACK ARROW -2B0C LEFT RIGHT BLACK ARROW -2B0D UP DOWN BLACK ARROW -2B0E RIGHTWARDS ARROW WITH TIP DOWNWARDS -2B0F RIGHTWARDS ARROW WITH TIP UPWARDS -2B10 LEFTWARDS ARROW WITH TIP DOWNWARDS -2B11 LEFTWARDS ARROW WITH TIP UPWARDS -2B12 SQUARE WITH TOP HALF BLACK -2B13 SQUARE WITH BOTTOM HALF BLACK -2C00 GLAGOLITIC CAPITAL LETTER AZU -2C01 GLAGOLITIC CAPITAL LETTER BUKY -2C02 GLAGOLITIC CAPITAL LETTER VEDE -2C03 GLAGOLITIC CAPITAL LETTER GLAGOLI -2C04 GLAGOLITIC CAPITAL LETTER DOBRO -2C05 GLAGOLITIC CAPITAL LETTER YESTU -2C06 GLAGOLITIC CAPITAL LETTER ZHIVETE -2C07 GLAGOLITIC CAPITAL LETTER DZELO -2C08 GLAGOLITIC CAPITAL LETTER ZEMLJA -2C09 GLAGOLITIC CAPITAL LETTER IZHE -2C0A GLAGOLITIC CAPITAL LETTER INITIAL IZHE -2C0B GLAGOLITIC CAPITAL LETTER I -2C0C GLAGOLITIC CAPITAL LETTER DJERVI -2C0D GLAGOLITIC CAPITAL LETTER KAKO -2C0E GLAGOLITIC CAPITAL LETTER LJUDIJE -2C0F GLAGOLITIC CAPITAL LETTER MYSLITE -2C10 GLAGOLITIC CAPITAL LETTER NASHI -2C11 GLAGOLITIC CAPITAL LETTER ONU -2C12 GLAGOLITIC CAPITAL LETTER POKOJI -2C13 GLAGOLITIC CAPITAL LETTER RITSI -2C14 GLAGOLITIC CAPITAL LETTER SLOVO -2C15 GLAGOLITIC CAPITAL LETTER TVRIDO -2C16 GLAGOLITIC CAPITAL LETTER UKU -2C17 GLAGOLITIC CAPITAL LETTER FRITU -2C18 GLAGOLITIC CAPITAL LETTER HERU -2C19 GLAGOLITIC CAPITAL LETTER OTU -2C1A GLAGOLITIC CAPITAL LETTER PE -2C1B GLAGOLITIC CAPITAL LETTER SHTA -2C1C GLAGOLITIC CAPITAL LETTER TSI -2C1D GLAGOLITIC CAPITAL LETTER CHRIVI -2C1E GLAGOLITIC CAPITAL LETTER SHA -2C1F GLAGOLITIC CAPITAL LETTER YERU -2C20 GLAGOLITIC CAPITAL LETTER YERI -2C21 GLAGOLITIC CAPITAL LETTER YATI -2C22 GLAGOLITIC CAPITAL LETTER SPIDERY HA -2C23 GLAGOLITIC CAPITAL LETTER YU -2C24 GLAGOLITIC CAPITAL LETTER SMALL YUS -2C25 GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL -2C26 GLAGOLITIC CAPITAL LETTER YO -2C27 GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS -2C28 GLAGOLITIC CAPITAL LETTER BIG YUS -2C29 GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS -2C2A GLAGOLITIC CAPITAL LETTER FITA -2C2B GLAGOLITIC CAPITAL LETTER IZHITSA -2C2C GLAGOLITIC CAPITAL LETTER SHTAPIC -2C2D GLAGOLITIC CAPITAL LETTER TROKUTASTI A -2C2E GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30 GLAGOLITIC SMALL LETTER AZU -2C31 GLAGOLITIC SMALL LETTER BUKY -2C32 GLAGOLITIC SMALL LETTER VEDE -2C33 GLAGOLITIC SMALL LETTER GLAGOLI -2C34 GLAGOLITIC SMALL LETTER DOBRO -2C35 GLAGOLITIC SMALL LETTER YESTU -2C36 GLAGOLITIC SMALL LETTER ZHIVETE -2C37 GLAGOLITIC SMALL LETTER DZELO -2C38 GLAGOLITIC SMALL LETTER ZEMLJA -2C39 GLAGOLITIC SMALL LETTER IZHE -2C3A GLAGOLITIC SMALL LETTER INITIAL IZHE -2C3B GLAGOLITIC SMALL LETTER I -2C3C GLAGOLITIC SMALL LETTER DJERVI -2C3D GLAGOLITIC SMALL LETTER KAKO -2C3E GLAGOLITIC SMALL LETTER LJUDIJE -2C3F GLAGOLITIC SMALL LETTER MYSLITE -2C40 GLAGOLITIC SMALL LETTER NASHI -2C41 GLAGOLITIC SMALL LETTER ONU -2C42 GLAGOLITIC SMALL LETTER POKOJI -2C43 GLAGOLITIC SMALL LETTER RITSI -2C44 GLAGOLITIC SMALL LETTER SLOVO -2C45 GLAGOLITIC SMALL LETTER TVRIDO -2C46 GLAGOLITIC SMALL LETTER UKU -2C47 GLAGOLITIC SMALL LETTER FRITU -2C48 GLAGOLITIC SMALL LETTER HERU -2C49 GLAGOLITIC SMALL LETTER OTU -2C4A GLAGOLITIC SMALL LETTER PE -2C4B GLAGOLITIC SMALL LETTER SHTA -2C4C GLAGOLITIC SMALL LETTER TSI -2C4D GLAGOLITIC SMALL LETTER CHRIVI -2C4E GLAGOLITIC SMALL LETTER SHA -2C4F GLAGOLITIC SMALL LETTER YERU -2C50 GLAGOLITIC SMALL LETTER YERI -2C51 GLAGOLITIC SMALL LETTER YATI -2C52 GLAGOLITIC SMALL LETTER SPIDERY HA -2C53 GLAGOLITIC SMALL LETTER YU -2C54 GLAGOLITIC SMALL LETTER SMALL YUS -2C55 GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL -2C56 GLAGOLITIC SMALL LETTER YO -2C57 GLAGOLITIC SMALL LETTER IOTATED SMALL YUS -2C58 GLAGOLITIC SMALL LETTER BIG YUS -2C59 GLAGOLITIC SMALL LETTER IOTATED BIG YUS -2C5A GLAGOLITIC SMALL LETTER FITA -2C5B GLAGOLITIC SMALL LETTER IZHITSA -2C5C GLAGOLITIC SMALL LETTER SHTAPIC -2C5D GLAGOLITIC SMALL LETTER TROKUTASTI A -2C5E GLAGOLITIC SMALL LETTER LATINATE MYSLITE -2C80 COPTIC CAPITAL LETTER ALFA -2C81 COPTIC SMALL LETTER ALFA -2C82 COPTIC CAPITAL LETTER VIDA -2C83 COPTIC SMALL LETTER VIDA -2C84 COPTIC CAPITAL LETTER GAMMA -2C85 COPTIC SMALL LETTER GAMMA -2C86 COPTIC CAPITAL LETTER DALDA -2C87 COPTIC SMALL LETTER DALDA -2C88 COPTIC CAPITAL LETTER EIE -2C89 COPTIC SMALL LETTER EIE -2C8A COPTIC CAPITAL LETTER SOU -2C8B COPTIC SMALL LETTER SOU -2C8C COPTIC CAPITAL LETTER ZATA -2C8D COPTIC SMALL LETTER ZATA -2C8E COPTIC CAPITAL LETTER HATE -2C8F COPTIC SMALL LETTER HATE -2C90 COPTIC CAPITAL LETTER THETHE -2C91 COPTIC SMALL LETTER THETHE -2C92 COPTIC CAPITAL LETTER IAUDA -2C93 COPTIC SMALL LETTER IAUDA -2C94 COPTIC CAPITAL LETTER KAPA -2C95 COPTIC SMALL LETTER KAPA -2C96 COPTIC CAPITAL LETTER LAULA -2C97 COPTIC SMALL LETTER LAULA -2C98 COPTIC CAPITAL LETTER MI -2C99 COPTIC SMALL LETTER MI -2C9A COPTIC CAPITAL LETTER NI -2C9B COPTIC SMALL LETTER NI -2C9C COPTIC CAPITAL LETTER KSI -2C9D COPTIC SMALL LETTER KSI -2C9E COPTIC CAPITAL LETTER O -2C9F COPTIC SMALL LETTER O -2CA0 COPTIC CAPITAL LETTER PI -2CA1 COPTIC SMALL LETTER PI -2CA2 COPTIC CAPITAL LETTER RO -2CA3 COPTIC SMALL LETTER RO -2CA4 COPTIC CAPITAL LETTER SIMA -2CA5 COPTIC SMALL LETTER SIMA -2CA6 COPTIC CAPITAL LETTER TAU -2CA7 COPTIC SMALL LETTER TAU -2CA8 COPTIC CAPITAL LETTER UA -2CA9 COPTIC SMALL LETTER UA -2CAA COPTIC CAPITAL LETTER FI -2CAB COPTIC SMALL LETTER FI -2CAC COPTIC CAPITAL LETTER KHI -2CAD COPTIC SMALL LETTER KHI -2CAE COPTIC CAPITAL LETTER PSI -2CAF COPTIC SMALL LETTER PSI -2CB0 COPTIC CAPITAL LETTER OOU -2CB1 COPTIC SMALL LETTER OOU -2CB2 COPTIC CAPITAL LETTER DIALECT-P ALEF -2CB3 COPTIC SMALL LETTER DIALECT-P ALEF -2CB4 COPTIC CAPITAL LETTER OLD COPTIC AIN -2CB5 COPTIC SMALL LETTER OLD COPTIC AIN -2CB6 COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE -2CB7 COPTIC SMALL LETTER CRYPTOGRAMMIC EIE -2CB8 COPTIC CAPITAL LETTER DIALECT-P KAPA -2CB9 COPTIC SMALL LETTER DIALECT-P KAPA -2CBA COPTIC CAPITAL LETTER DIALECT-P NI -2CBB COPTIC SMALL LETTER DIALECT-P NI -2CBC COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI -2CBD COPTIC SMALL LETTER CRYPTOGRAMMIC NI -2CBE COPTIC CAPITAL LETTER OLD COPTIC OOU -2CBF COPTIC SMALL LETTER OLD COPTIC OOU -2CC0 COPTIC CAPITAL LETTER SAMPI -2CC1 COPTIC SMALL LETTER SAMPI -2CC2 COPTIC CAPITAL LETTER CROSSED SHEI -2CC3 COPTIC SMALL LETTER CROSSED SHEI -2CC4 COPTIC CAPITAL LETTER OLD COPTIC SHEI -2CC5 COPTIC SMALL LETTER OLD COPTIC SHEI -2CC6 COPTIC CAPITAL LETTER OLD COPTIC ESH -2CC7 COPTIC SMALL LETTER OLD COPTIC ESH -2CC8 COPTIC CAPITAL LETTER AKHMIMIC KHEI -2CC9 COPTIC SMALL LETTER AKHMIMIC KHEI -2CCA COPTIC CAPITAL LETTER DIALECT-P HORI -2CCB COPTIC SMALL LETTER DIALECT-P HORI -2CCC COPTIC CAPITAL LETTER OLD COPTIC HORI -2CCD COPTIC SMALL LETTER OLD COPTIC HORI -2CCE COPTIC CAPITAL LETTER OLD COPTIC HA -2CCF COPTIC SMALL LETTER OLD COPTIC HA -2CD0 COPTIC CAPITAL LETTER L-SHAPED HA -2CD1 COPTIC SMALL LETTER L-SHAPED HA -2CD2 COPTIC CAPITAL LETTER OLD COPTIC HEI -2CD3 COPTIC SMALL LETTER OLD COPTIC HEI -2CD4 COPTIC CAPITAL LETTER OLD COPTIC HAT -2CD5 COPTIC SMALL LETTER OLD COPTIC HAT -2CD6 COPTIC CAPITAL LETTER OLD COPTIC GANGIA -2CD7 COPTIC SMALL LETTER OLD COPTIC GANGIA -2CD8 COPTIC CAPITAL LETTER OLD COPTIC DJA -2CD9 COPTIC SMALL LETTER OLD COPTIC DJA -2CDA COPTIC CAPITAL LETTER OLD COPTIC SHIMA -2CDB COPTIC SMALL LETTER OLD COPTIC SHIMA -2CDC COPTIC CAPITAL LETTER OLD NUBIAN SHIMA -2CDD COPTIC SMALL LETTER OLD NUBIAN SHIMA -2CDE COPTIC CAPITAL LETTER OLD NUBIAN NGI -2CDF COPTIC SMALL LETTER OLD NUBIAN NGI -2CE0 COPTIC CAPITAL LETTER OLD NUBIAN NYI -2CE1 COPTIC SMALL LETTER OLD NUBIAN NYI -2CE2 COPTIC CAPITAL LETTER OLD NUBIAN WAU -2CE3 COPTIC SMALL LETTER OLD NUBIAN WAU -2CE4 COPTIC SYMBOL KAI -2CE5 COPTIC SYMBOL MI RO -2CE6 COPTIC SYMBOL PI RO -2CE7 COPTIC SYMBOL STAUROS -2CE8 COPTIC SYMBOL TAU RO -2CE9 COPTIC SYMBOL KHI RO -2CEA COPTIC SYMBOL SHIMA SIMA -2CF9 COPTIC OLD NUBIAN FULL STOP -2CFA COPTIC OLD NUBIAN DIRECT QUESTION MARK -2CFB COPTIC OLD NUBIAN INDIRECT QUESTION MARK -2CFC COPTIC OLD NUBIAN VERSE DIVIDER -2CFD COPTIC FRACTION ONE HALF -2CFE COPTIC FULL STOP -2CFF COPTIC MORPHOLOGICAL DIVIDER -2D00 GEORGIAN SMALL LETTER AN -2D01 GEORGIAN SMALL LETTER BAN -2D02 GEORGIAN SMALL LETTER GAN -2D03 GEORGIAN SMALL LETTER DON -2D04 GEORGIAN SMALL LETTER EN -2D05 GEORGIAN SMALL LETTER VIN -2D06 GEORGIAN SMALL LETTER ZEN -2D07 GEORGIAN SMALL LETTER TAN -2D08 GEORGIAN SMALL LETTER IN -2D09 GEORGIAN SMALL LETTER KAN -2D0A GEORGIAN SMALL LETTER LAS -2D0B GEORGIAN SMALL LETTER MAN -2D0C GEORGIAN SMALL LETTER NAR -2D0D GEORGIAN SMALL LETTER ON -2D0E GEORGIAN SMALL LETTER PAR -2D0F GEORGIAN SMALL LETTER ZHAR -2D10 GEORGIAN SMALL LETTER RAE -2D11 GEORGIAN SMALL LETTER SAN -2D12 GEORGIAN SMALL LETTER TAR -2D13 GEORGIAN SMALL LETTER UN -2D14 GEORGIAN SMALL LETTER PHAR -2D15 GEORGIAN SMALL LETTER KHAR -2D16 GEORGIAN SMALL LETTER GHAN -2D17 GEORGIAN SMALL LETTER QAR -2D18 GEORGIAN SMALL LETTER SHIN -2D19 GEORGIAN SMALL LETTER CHIN -2D1A GEORGIAN SMALL LETTER CAN -2D1B GEORGIAN SMALL LETTER JIL -2D1C GEORGIAN SMALL LETTER CIL -2D1D GEORGIAN SMALL LETTER CHAR -2D1E GEORGIAN SMALL LETTER XAN -2D1F GEORGIAN SMALL LETTER JHAN -2D20 GEORGIAN SMALL LETTER HAE -2D21 GEORGIAN SMALL LETTER HE -2D22 GEORGIAN SMALL LETTER HIE -2D23 GEORGIAN SMALL LETTER WE -2D24 GEORGIAN SMALL LETTER HAR -2D25 GEORGIAN SMALL LETTER HOE -2D30 TIFINAGH LETTER YA -2D31 TIFINAGH LETTER YAB -2D32 TIFINAGH LETTER YABH -2D33 TIFINAGH LETTER YAG -2D34 TIFINAGH LETTER YAGHH -2D35 TIFINAGH LETTER BERBER ACADEMY YAJ -2D36 TIFINAGH LETTER YAJ -2D37 TIFINAGH LETTER YAD -2D38 TIFINAGH LETTER YADH -2D39 TIFINAGH LETTER YADD -2D3A TIFINAGH LETTER YADDH -2D3B TIFINAGH LETTER YEY -2D3C TIFINAGH LETTER YAF -2D3D TIFINAGH LETTER YAK -2D3E TIFINAGH LETTER TUAREG YAK -2D3F TIFINAGH LETTER YAKHH -2D40 TIFINAGH LETTER YAH -2D41 TIFINAGH LETTER BERBER ACADEMY YAH -2D42 TIFINAGH LETTER TUAREG YAH -2D43 TIFINAGH LETTER YAHH -2D44 TIFINAGH LETTER YAA -2D45 TIFINAGH LETTER YAKH -2D46 TIFINAGH LETTER TUAREG YAKH -2D47 TIFINAGH LETTER YAQ -2D48 TIFINAGH LETTER TUAREG YAQ -2D49 TIFINAGH LETTER YI -2D4A TIFINAGH LETTER YAZH -2D4B TIFINAGH LETTER AHAGGAR YAZH -2D4C TIFINAGH LETTER TUAREG YAZH -2D4D TIFINAGH LETTER YAL -2D4E TIFINAGH LETTER YAM -2D4F TIFINAGH LETTER YAN -2D50 TIFINAGH LETTER TUAREG YAGN -2D51 TIFINAGH LETTER TUAREG YANG -2D52 TIFINAGH LETTER YAP -2D53 TIFINAGH LETTER YU -2D54 TIFINAGH LETTER YAR -2D55 TIFINAGH LETTER YARR -2D56 TIFINAGH LETTER YAGH -2D57 TIFINAGH LETTER TUAREG YAGH -2D58 TIFINAGH LETTER AYER YAGH -2D59 TIFINAGH LETTER YAS -2D5A TIFINAGH LETTER YASS -2D5B TIFINAGH LETTER YASH -2D5C TIFINAGH LETTER YAT -2D5D TIFINAGH LETTER YATH -2D5E TIFINAGH LETTER YACH -2D5F TIFINAGH LETTER YATT -2D60 TIFINAGH LETTER YAV -2D61 TIFINAGH LETTER YAW -2D62 TIFINAGH LETTER YAY -2D63 TIFINAGH LETTER YAZ -2D64 TIFINAGH LETTER TAWELLEMET YAZ -2D65 TIFINAGH LETTER YAZZ -2D6F TIFINAGH MODIFIER LETTER LABIALIZATION MARK -2D80 ETHIOPIC SYLLABLE LOA -2D81 ETHIOPIC SYLLABLE MOA -2D82 ETHIOPIC SYLLABLE ROA -2D83 ETHIOPIC SYLLABLE SOA -2D84 ETHIOPIC SYLLABLE SHOA -2D85 ETHIOPIC SYLLABLE BOA -2D86 ETHIOPIC SYLLABLE TOA -2D87 ETHIOPIC SYLLABLE COA -2D88 ETHIOPIC SYLLABLE NOA -2D89 ETHIOPIC SYLLABLE NYOA -2D8A ETHIOPIC SYLLABLE GLOTTAL OA -2D8B ETHIOPIC SYLLABLE ZOA -2D8C ETHIOPIC SYLLABLE DOA -2D8D ETHIOPIC SYLLABLE DDOA -2D8E ETHIOPIC SYLLABLE JOA -2D8F ETHIOPIC SYLLABLE THOA -2D90 ETHIOPIC SYLLABLE CHOA -2D91 ETHIOPIC SYLLABLE PHOA -2D92 ETHIOPIC SYLLABLE POA -2D93 ETHIOPIC SYLLABLE GGWA -2D94 ETHIOPIC SYLLABLE GGWI -2D95 ETHIOPIC SYLLABLE GGWEE -2D96 ETHIOPIC SYLLABLE GGWE -2DA0 ETHIOPIC SYLLABLE SSA -2DA1 ETHIOPIC SYLLABLE SSU -2DA2 ETHIOPIC SYLLABLE SSI -2DA3 ETHIOPIC SYLLABLE SSAA -2DA4 ETHIOPIC SYLLABLE SSEE -2DA5 ETHIOPIC SYLLABLE SSE -2DA6 ETHIOPIC SYLLABLE SSO -2DA8 ETHIOPIC SYLLABLE CCA -2DA9 ETHIOPIC SYLLABLE CCU -2DAA ETHIOPIC SYLLABLE CCI -2DAB ETHIOPIC SYLLABLE CCAA -2DAC ETHIOPIC SYLLABLE CCEE -2DAD ETHIOPIC SYLLABLE CCE -2DAE ETHIOPIC SYLLABLE CCO -2DB0 ETHIOPIC SYLLABLE ZZA -2DB1 ETHIOPIC SYLLABLE ZZU -2DB2 ETHIOPIC SYLLABLE ZZI -2DB3 ETHIOPIC SYLLABLE ZZAA -2DB4 ETHIOPIC SYLLABLE ZZEE -2DB5 ETHIOPIC SYLLABLE ZZE -2DB6 ETHIOPIC SYLLABLE ZZO -2DB8 ETHIOPIC SYLLABLE CCHA -2DB9 ETHIOPIC SYLLABLE CCHU -2DBA ETHIOPIC SYLLABLE CCHI -2DBB ETHIOPIC SYLLABLE CCHAA -2DBC ETHIOPIC SYLLABLE CCHEE -2DBD ETHIOPIC SYLLABLE CCHE -2DBE ETHIOPIC SYLLABLE CCHO -2DC0 ETHIOPIC SYLLABLE QYA -2DC1 ETHIOPIC SYLLABLE QYU -2DC2 ETHIOPIC SYLLABLE QYI -2DC3 ETHIOPIC SYLLABLE QYAA -2DC4 ETHIOPIC SYLLABLE QYEE -2DC5 ETHIOPIC SYLLABLE QYE -2DC6 ETHIOPIC SYLLABLE QYO -2DC8 ETHIOPIC SYLLABLE KYA -2DC9 ETHIOPIC SYLLABLE KYU -2DCA ETHIOPIC SYLLABLE KYI -2DCB ETHIOPIC SYLLABLE KYAA -2DCC ETHIOPIC SYLLABLE KYEE -2DCD ETHIOPIC SYLLABLE KYE -2DCE ETHIOPIC SYLLABLE KYO -2DD0 ETHIOPIC SYLLABLE XYA -2DD1 ETHIOPIC SYLLABLE XYU -2DD2 ETHIOPIC SYLLABLE XYI -2DD3 ETHIOPIC SYLLABLE XYAA -2DD4 ETHIOPIC SYLLABLE XYEE -2DD5 ETHIOPIC SYLLABLE XYE -2DD6 ETHIOPIC SYLLABLE XYO -2DD8 ETHIOPIC SYLLABLE GYA -2DD9 ETHIOPIC SYLLABLE GYU -2DDA ETHIOPIC SYLLABLE GYI -2DDB ETHIOPIC SYLLABLE GYAA -2DDC ETHIOPIC SYLLABLE GYEE -2DDD ETHIOPIC SYLLABLE GYE -2DDE ETHIOPIC SYLLABLE GYO -2E00 RIGHT ANGLE SUBSTITUTION MARKER -2E01 RIGHT ANGLE DOTTED SUBSTITUTION MARKER -2E02 LEFT SUBSTITUTION BRACKET -2E03 RIGHT SUBSTITUTION BRACKET -2E04 LEFT DOTTED SUBSTITUTION BRACKET -2E05 RIGHT DOTTED SUBSTITUTION BRACKET -2E06 RAISED INTERPOLATION MARKER -2E07 RAISED DOTTED INTERPOLATION MARKER -2E08 DOTTED TRANSPOSITION MARKER -2E09 LEFT TRANSPOSITION BRACKET -2E0A RIGHT TRANSPOSITION BRACKET -2E0B RAISED SQUARE -2E0C LEFT RAISED OMISSION BRACKET -2E0D RIGHT RAISED OMISSION BRACKET -2E0E EDITORIAL CORONIS -2E0F PARAGRAPHOS -2E10 FORKED PARAGRAPHOS -2E11 REVERSED FORKED PARAGRAPHOS -2E12 HYPODIASTOLE -2E13 DOTTED OBELOS -2E14 DOWNWARDS ANCORA -2E15 UPWARDS ANCORA -2E16 DOTTED RIGHT-POINTING ANGLE -2E17 DOUBLE OBLIQUE HYPHEN -2E1C LEFT LOW PARAPHRASE BRACKET -2E1D RIGHT LOW PARAPHRASE BRACKET -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 -31C0 CJK STROKE T -31C1 CJK STROKE WG -31C2 CJK STROKE XG -31C3 CJK STROKE BXG -31C4 CJK STROKE SW -31C5 CJK STROKE HZZ -31C6 CJK STROKE HZG -31C7 CJK STROKE HP -31C8 CJK STROKE HZWG -31C9 CJK STROKE SZWG -31CA CJK STROKE HZT -31CB CJK STROKE HZZP -31CC CJK STROKE HPWG -31CD CJK STROKE HZW -31CE CJK STROKE HZZZ -31CF CJK STROKE N -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 -321D PARENTHESIZED KOREAN CHARACTER OJEON -321E PARENTHESIZED KOREAN CHARACTER O HU -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 -3250 PARTNERSHIP SIGN -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 -327C CIRCLED KOREAN CHARACTER CHAMKO -327D CIRCLED KOREAN CHARACTER JUEUI -327E CIRCLED HANGUL IEUNG U -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 -32CC SQUARE HG -32CD SQUARE ERG -32CE SQUARE EV -32CF LIMITED LIABILITY SIGN -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 -3377 SQUARE DM -3378 SQUARE DM SQUARED -3379 SQUARE DM CUBED -337A SQUARE IU -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 -33DE SQUARE V OVER M -33DF SQUARE A OVER M -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 -33FF SQUARE GAL -3400 4DB5 CJK Ideograph Extension A -4DC0 HEXAGRAM FOR THE CREATIVE HEAVEN -4DC1 HEXAGRAM FOR THE RECEPTIVE EARTH -4DC2 HEXAGRAM FOR DIFFICULTY AT THE BEGINNING -4DC3 HEXAGRAM FOR YOUTHFUL FOLLY -4DC4 HEXAGRAM FOR WAITING -4DC5 HEXAGRAM FOR CONFLICT -4DC6 HEXAGRAM FOR THE ARMY -4DC7 HEXAGRAM FOR HOLDING TOGETHER -4DC8 HEXAGRAM FOR SMALL TAMING -4DC9 HEXAGRAM FOR TREADING -4DCA HEXAGRAM FOR PEACE -4DCB HEXAGRAM FOR STANDSTILL -4DCC HEXAGRAM FOR FELLOWSHIP -4DCD HEXAGRAM FOR GREAT POSSESSION -4DCE HEXAGRAM FOR MODESTY -4DCF HEXAGRAM FOR ENTHUSIASM -4DD0 HEXAGRAM FOR FOLLOWING -4DD1 HEXAGRAM FOR WORK ON THE DECAYED -4DD2 HEXAGRAM FOR APPROACH -4DD3 HEXAGRAM FOR CONTEMPLATION -4DD4 HEXAGRAM FOR BITING THROUGH -4DD5 HEXAGRAM FOR GRACE -4DD6 HEXAGRAM FOR SPLITTING APART -4DD7 HEXAGRAM FOR RETURN -4DD8 HEXAGRAM FOR INNOCENCE -4DD9 HEXAGRAM FOR GREAT TAMING -4DDA HEXAGRAM FOR MOUTH CORNERS -4DDB HEXAGRAM FOR GREAT PREPONDERANCE -4DDC HEXAGRAM FOR THE ABYSMAL WATER -4DDD HEXAGRAM FOR THE CLINGING FIRE -4DDE HEXAGRAM FOR INFLUENCE -4DDF HEXAGRAM FOR DURATION -4DE0 HEXAGRAM FOR RETREAT -4DE1 HEXAGRAM FOR GREAT POWER -4DE2 HEXAGRAM FOR PROGRESS -4DE3 HEXAGRAM FOR DARKENING OF THE LIGHT -4DE4 HEXAGRAM FOR THE FAMILY -4DE5 HEXAGRAM FOR OPPOSITION -4DE6 HEXAGRAM FOR OBSTRUCTION -4DE7 HEXAGRAM FOR DELIVERANCE -4DE8 HEXAGRAM FOR DECREASE -4DE9 HEXAGRAM FOR INCREASE -4DEA HEXAGRAM FOR BREAKTHROUGH -4DEB HEXAGRAM FOR COMING TO MEET -4DEC HEXAGRAM FOR GATHERING TOGETHER -4DED HEXAGRAM FOR PUSHING UPWARD -4DEE HEXAGRAM FOR OPPRESSION -4DEF HEXAGRAM FOR THE WELL -4DF0 HEXAGRAM FOR REVOLUTION -4DF1 HEXAGRAM FOR THE CAULDRON -4DF2 HEXAGRAM FOR THE AROUSING THUNDER -4DF3 HEXAGRAM FOR THE KEEPING STILL MOUNTAIN -4DF4 HEXAGRAM FOR DEVELOPMENT -4DF5 HEXAGRAM FOR THE MARRYING MAIDEN -4DF6 HEXAGRAM FOR ABUNDANCE -4DF7 HEXAGRAM FOR THE WANDERER -4DF8 HEXAGRAM FOR THE GENTLE WIND -4DF9 HEXAGRAM FOR THE JOYOUS LAKE -4DFA HEXAGRAM FOR DISPERSION -4DFB HEXAGRAM FOR LIMITATION -4DFC HEXAGRAM FOR INNER TRUTH -4DFD HEXAGRAM FOR SMALL PREPONDERANCE -4DFE HEXAGRAM FOR AFTER COMPLETION -4DFF HEXAGRAM FOR BEFORE COMPLETION -4E00 9FBB 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 -A700 MODIFIER LETTER CHINESE TONE YIN PING -A701 MODIFIER LETTER CHINESE TONE YANG PING -A702 MODIFIER LETTER CHINESE TONE YIN SHANG -A703 MODIFIER LETTER CHINESE TONE YANG SHANG -A704 MODIFIER LETTER CHINESE TONE YIN QU -A705 MODIFIER LETTER CHINESE TONE YANG QU -A706 MODIFIER LETTER CHINESE TONE YIN RU -A707 MODIFIER LETTER CHINESE TONE YANG RU -A708 MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR -A709 MODIFIER LETTER HIGH DOTTED TONE BAR -A70A MODIFIER LETTER MID DOTTED TONE BAR -A70B MODIFIER LETTER LOW DOTTED TONE BAR -A70C MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR -A70D MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR -A70E MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR -A70F MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR -A710 MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR -A711 MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR -A712 MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR -A713 MODIFIER LETTER HIGH LEFT-STEM TONE BAR -A714 MODIFIER LETTER MID LEFT-STEM TONE BAR -A715 MODIFIER LETTER LOW LEFT-STEM TONE BAR -A716 MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR -A800 SYLOTI NAGRI LETTER A -A801 SYLOTI NAGRI LETTER I -A802 SYLOTI NAGRI SIGN DVISVARA -A803 SYLOTI NAGRI LETTER U -A804 SYLOTI NAGRI LETTER E -A805 SYLOTI NAGRI LETTER O -A806 SYLOTI NAGRI SIGN HASANTA -A807 SYLOTI NAGRI LETTER KO -A808 SYLOTI NAGRI LETTER KHO -A809 SYLOTI NAGRI LETTER GO -A80A SYLOTI NAGRI LETTER GHO -A80B SYLOTI NAGRI SIGN ANUSVARA -A80C SYLOTI NAGRI LETTER CO -A80D SYLOTI NAGRI LETTER CHO -A80E SYLOTI NAGRI LETTER JO -A80F SYLOTI NAGRI LETTER JHO -A810 SYLOTI NAGRI LETTER TTO -A811 SYLOTI NAGRI LETTER TTHO -A812 SYLOTI NAGRI LETTER DDO -A813 SYLOTI NAGRI LETTER DDHO -A814 SYLOTI NAGRI LETTER TO -A815 SYLOTI NAGRI LETTER THO -A816 SYLOTI NAGRI LETTER DO -A817 SYLOTI NAGRI LETTER DHO -A818 SYLOTI NAGRI LETTER NO -A819 SYLOTI NAGRI LETTER PO -A81A SYLOTI NAGRI LETTER PHO -A81B SYLOTI NAGRI LETTER BO -A81C SYLOTI NAGRI LETTER BHO -A81D SYLOTI NAGRI LETTER MO -A81E SYLOTI NAGRI LETTER RO -A81F SYLOTI NAGRI LETTER LO -A820 SYLOTI NAGRI LETTER RRO -A821 SYLOTI NAGRI LETTER SO -A822 SYLOTI NAGRI LETTER HO -A823 SYLOTI NAGRI VOWEL SIGN A -A824 SYLOTI NAGRI VOWEL SIGN I -A825 SYLOTI NAGRI VOWEL SIGN U -A826 SYLOTI NAGRI VOWEL SIGN E -A827 SYLOTI NAGRI VOWEL SIGN OO -A828 SYLOTI NAGRI POETRY MARK-1 -A829 SYLOTI NAGRI POETRY MARK-2 -A82A SYLOTI NAGRI POETRY MARK-3 -A82B SYLOTI NAGRI POETRY MARK-4 -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 -FA70 CJK COMPATIBILITY IDEOGRAPH-FA70 -FA71 CJK COMPATIBILITY IDEOGRAPH-FA71 -FA72 CJK COMPATIBILITY IDEOGRAPH-FA72 -FA73 CJK COMPATIBILITY IDEOGRAPH-FA73 -FA74 CJK COMPATIBILITY IDEOGRAPH-FA74 -FA75 CJK COMPATIBILITY IDEOGRAPH-FA75 -FA76 CJK COMPATIBILITY IDEOGRAPH-FA76 -FA77 CJK COMPATIBILITY IDEOGRAPH-FA77 -FA78 CJK COMPATIBILITY IDEOGRAPH-FA78 -FA79 CJK COMPATIBILITY IDEOGRAPH-FA79 -FA7A CJK COMPATIBILITY IDEOGRAPH-FA7A -FA7B CJK COMPATIBILITY IDEOGRAPH-FA7B -FA7C CJK COMPATIBILITY IDEOGRAPH-FA7C -FA7D CJK COMPATIBILITY IDEOGRAPH-FA7D -FA7E CJK COMPATIBILITY IDEOGRAPH-FA7E -FA7F CJK COMPATIBILITY IDEOGRAPH-FA7F -FA80 CJK COMPATIBILITY IDEOGRAPH-FA80 -FA81 CJK COMPATIBILITY IDEOGRAPH-FA81 -FA82 CJK COMPATIBILITY IDEOGRAPH-FA82 -FA83 CJK COMPATIBILITY IDEOGRAPH-FA83 -FA84 CJK COMPATIBILITY IDEOGRAPH-FA84 -FA85 CJK COMPATIBILITY IDEOGRAPH-FA85 -FA86 CJK COMPATIBILITY IDEOGRAPH-FA86 -FA87 CJK COMPATIBILITY IDEOGRAPH-FA87 -FA88 CJK COMPATIBILITY IDEOGRAPH-FA88 -FA89 CJK COMPATIBILITY IDEOGRAPH-FA89 -FA8A CJK COMPATIBILITY IDEOGRAPH-FA8A -FA8B CJK COMPATIBILITY IDEOGRAPH-FA8B -FA8C CJK COMPATIBILITY IDEOGRAPH-FA8C -FA8D CJK COMPATIBILITY IDEOGRAPH-FA8D -FA8E CJK COMPATIBILITY IDEOGRAPH-FA8E -FA8F CJK COMPATIBILITY IDEOGRAPH-FA8F -FA90 CJK COMPATIBILITY IDEOGRAPH-FA90 -FA91 CJK COMPATIBILITY IDEOGRAPH-FA91 -FA92 CJK COMPATIBILITY IDEOGRAPH-FA92 -FA93 CJK COMPATIBILITY IDEOGRAPH-FA93 -FA94 CJK COMPATIBILITY IDEOGRAPH-FA94 -FA95 CJK COMPATIBILITY IDEOGRAPH-FA95 -FA96 CJK COMPATIBILITY IDEOGRAPH-FA96 -FA97 CJK COMPATIBILITY IDEOGRAPH-FA97 -FA98 CJK COMPATIBILITY IDEOGRAPH-FA98 -FA99 CJK COMPATIBILITY IDEOGRAPH-FA99 -FA9A CJK COMPATIBILITY IDEOGRAPH-FA9A -FA9B CJK COMPATIBILITY IDEOGRAPH-FA9B -FA9C CJK COMPATIBILITY IDEOGRAPH-FA9C -FA9D CJK COMPATIBILITY IDEOGRAPH-FA9D -FA9E CJK COMPATIBILITY IDEOGRAPH-FA9E -FA9F CJK COMPATIBILITY IDEOGRAPH-FA9F -FAA0 CJK COMPATIBILITY IDEOGRAPH-FAA0 -FAA1 CJK COMPATIBILITY IDEOGRAPH-FAA1 -FAA2 CJK COMPATIBILITY IDEOGRAPH-FAA2 -FAA3 CJK COMPATIBILITY IDEOGRAPH-FAA3 -FAA4 CJK COMPATIBILITY IDEOGRAPH-FAA4 -FAA5 CJK COMPATIBILITY IDEOGRAPH-FAA5 -FAA6 CJK COMPATIBILITY IDEOGRAPH-FAA6 -FAA7 CJK COMPATIBILITY IDEOGRAPH-FAA7 -FAA8 CJK COMPATIBILITY IDEOGRAPH-FAA8 -FAA9 CJK COMPATIBILITY IDEOGRAPH-FAA9 -FAAA CJK COMPATIBILITY IDEOGRAPH-FAAA -FAAB CJK COMPATIBILITY IDEOGRAPH-FAAB -FAAC CJK COMPATIBILITY IDEOGRAPH-FAAC -FAAD CJK COMPATIBILITY IDEOGRAPH-FAAD -FAAE CJK COMPATIBILITY IDEOGRAPH-FAAE -FAAF CJK COMPATIBILITY IDEOGRAPH-FAAF -FAB0 CJK COMPATIBILITY IDEOGRAPH-FAB0 -FAB1 CJK COMPATIBILITY IDEOGRAPH-FAB1 -FAB2 CJK COMPATIBILITY IDEOGRAPH-FAB2 -FAB3 CJK COMPATIBILITY IDEOGRAPH-FAB3 -FAB4 CJK COMPATIBILITY IDEOGRAPH-FAB4 -FAB5 CJK COMPATIBILITY IDEOGRAPH-FAB5 -FAB6 CJK COMPATIBILITY IDEOGRAPH-FAB6 -FAB7 CJK COMPATIBILITY IDEOGRAPH-FAB7 -FAB8 CJK COMPATIBILITY IDEOGRAPH-FAB8 -FAB9 CJK COMPATIBILITY IDEOGRAPH-FAB9 -FABA CJK COMPATIBILITY IDEOGRAPH-FABA -FABB CJK COMPATIBILITY IDEOGRAPH-FABB -FABC CJK COMPATIBILITY IDEOGRAPH-FABC -FABD CJK COMPATIBILITY IDEOGRAPH-FABD -FABE CJK COMPATIBILITY IDEOGRAPH-FABE -FABF CJK COMPATIBILITY IDEOGRAPH-FABF -FAC0 CJK COMPATIBILITY IDEOGRAPH-FAC0 -FAC1 CJK COMPATIBILITY IDEOGRAPH-FAC1 -FAC2 CJK COMPATIBILITY IDEOGRAPH-FAC2 -FAC3 CJK COMPATIBILITY IDEOGRAPH-FAC3 -FAC4 CJK COMPATIBILITY IDEOGRAPH-FAC4 -FAC5 CJK COMPATIBILITY IDEOGRAPH-FAC5 -FAC6 CJK COMPATIBILITY IDEOGRAPH-FAC6 -FAC7 CJK COMPATIBILITY IDEOGRAPH-FAC7 -FAC8 CJK COMPATIBILITY IDEOGRAPH-FAC8 -FAC9 CJK COMPATIBILITY IDEOGRAPH-FAC9 -FACA CJK COMPATIBILITY IDEOGRAPH-FACA -FACB CJK COMPATIBILITY IDEOGRAPH-FACB -FACC CJK COMPATIBILITY IDEOGRAPH-FACC -FACD CJK COMPATIBILITY IDEOGRAPH-FACD -FACE CJK COMPATIBILITY IDEOGRAPH-FACE -FACF CJK COMPATIBILITY IDEOGRAPH-FACF -FAD0 CJK COMPATIBILITY IDEOGRAPH-FAD0 -FAD1 CJK COMPATIBILITY IDEOGRAPH-FAD1 -FAD2 CJK COMPATIBILITY IDEOGRAPH-FAD2 -FAD3 CJK COMPATIBILITY IDEOGRAPH-FAD3 -FAD4 CJK COMPATIBILITY IDEOGRAPH-FAD4 -FAD5 CJK COMPATIBILITY IDEOGRAPH-FAD5 -FAD6 CJK COMPATIBILITY IDEOGRAPH-FAD6 -FAD7 CJK COMPATIBILITY IDEOGRAPH-FAD7 -FAD8 CJK COMPATIBILITY IDEOGRAPH-FAD8 -FAD9 CJK COMPATIBILITY IDEOGRAPH-FAD9 -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 -FDFD ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM -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 -FE10 PRESENTATION FORM FOR VERTICAL COMMA -FE11 PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA -FE12 PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP -FE13 PRESENTATION FORM FOR VERTICAL COLON -FE14 PRESENTATION FORM FOR VERTICAL SEMICOLON -FE15 PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK -FE16 PRESENTATION FORM FOR VERTICAL QUESTION MARK -FE17 PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET -FE18 PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET -FE19 PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS -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 -FE47 PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET -FE48 PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET -FE49 DASHED OVERLINE -FE4A CENTRELINE OVERLINE -FE4B WAVY OVERLINE -FE4C DOUBLE WAVY OVERLINE -FE4D DASHED LOW LINE -FE4E CENTRELINE LOW LINE -FE4F WAVY LOW LINE -FE50 SMALL COMMA -FE51 SMALL IDEOGRAPHIC COMMA -FE52 SMALL FULL STOP -FE54 SMALL SEMICOLON -FE55 SMALL COLON -FE56 SMALL QUESTION MARK -FE57 SMALL EXCLAMATION MARK -FE58 SMALL EM DASH -FE59 SMALL LEFT PARENTHESIS -FE5A SMALL RIGHT PARENTHESIS -FE5B SMALL LEFT CURLY BRACKET -FE5C SMALL RIGHT CURLY BRACKET -FE5D SMALL LEFT TORTOISE SHELL BRACKET -FE5E SMALL RIGHT TORTOISE SHELL BRACKET -FE5F SMALL NUMBER SIGN -FE60 SMALL AMPERSAND -FE61 SMALL ASTERISK -FE62 SMALL PLUS SIGN -FE63 SMALL HYPHEN-MINUS -FE64 SMALL LESS-THAN SIGN -FE65 SMALL GREATER-THAN SIGN -FE66 SMALL EQUALS SIGN -FE68 SMALL REVERSE SOLIDUS -FE69 SMALL DOLLAR SIGN -FE6A SMALL PERCENT SIGN -FE6B SMALL COMMERCIAL AT -FE70 ARABIC FATHATAN ISOLATED FORM -FE71 ARABIC TATWEEL WITH FATHATAN ABOVE -FE72 ARABIC DAMMATAN ISOLATED FORM -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 -10000 LINEAR B SYLLABLE B008 A -10001 LINEAR B SYLLABLE B038 E -10002 LINEAR B SYLLABLE B028 I -10003 LINEAR B SYLLABLE B061 O -10004 LINEAR B SYLLABLE B010 U -10005 LINEAR B SYLLABLE B001 DA -10006 LINEAR B SYLLABLE B045 DE -10007 LINEAR B SYLLABLE B007 DI -10008 LINEAR B SYLLABLE B014 DO -10009 LINEAR B SYLLABLE B051 DU -1000A LINEAR B SYLLABLE B057 JA -1000B LINEAR B SYLLABLE B046 JE -1000D LINEAR B SYLLABLE B036 JO -1000E LINEAR B SYLLABLE B065 JU -1000F LINEAR B SYLLABLE B077 KA -10010 LINEAR B SYLLABLE B044 KE -10011 LINEAR B SYLLABLE B067 KI -10012 LINEAR B SYLLABLE B070 KO -10013 LINEAR B SYLLABLE B081 KU -10014 LINEAR B SYLLABLE B080 MA -10015 LINEAR B SYLLABLE B013 ME -10016 LINEAR B SYLLABLE B073 MI -10017 LINEAR B SYLLABLE B015 MO -10018 LINEAR B SYLLABLE B023 MU -10019 LINEAR B SYLLABLE B006 NA -1001A LINEAR B SYLLABLE B024 NE -1001B LINEAR B SYLLABLE B030 NI -1001C LINEAR B SYLLABLE B052 NO -1001D LINEAR B SYLLABLE B055 NU -1001E LINEAR B SYLLABLE B003 PA -1001F LINEAR B SYLLABLE B072 PE -10020 LINEAR B SYLLABLE B039 PI -10021 LINEAR B SYLLABLE B011 PO -10022 LINEAR B SYLLABLE B050 PU -10023 LINEAR B SYLLABLE B016 QA -10024 LINEAR B SYLLABLE B078 QE -10025 LINEAR B SYLLABLE B021 QI -10026 LINEAR B SYLLABLE B032 QO -10028 LINEAR B SYLLABLE B060 RA -10029 LINEAR B SYLLABLE B027 RE -1002A LINEAR B SYLLABLE B053 RI -1002B LINEAR B SYLLABLE B002 RO -1002C LINEAR B SYLLABLE B026 RU -1002D LINEAR B SYLLABLE B031 SA -1002E LINEAR B SYLLABLE B009 SE -1002F LINEAR B SYLLABLE B041 SI -10030 LINEAR B SYLLABLE B012 SO -10031 LINEAR B SYLLABLE B058 SU -10032 LINEAR B SYLLABLE B059 TA -10033 LINEAR B SYLLABLE B004 TE -10034 LINEAR B SYLLABLE B037 TI -10035 LINEAR B SYLLABLE B005 TO -10036 LINEAR B SYLLABLE B069 TU -10037 LINEAR B SYLLABLE B054 WA -10038 LINEAR B SYLLABLE B075 WE -10039 LINEAR B SYLLABLE B040 WI -1003A LINEAR B SYLLABLE B042 WO -1003C LINEAR B SYLLABLE B017 ZA -1003D LINEAR B SYLLABLE B074 ZE -1003F LINEAR B SYLLABLE B020 ZO -10040 LINEAR B SYLLABLE B025 A2 -10041 LINEAR B SYLLABLE B043 A3 -10042 LINEAR B SYLLABLE B085 AU -10043 LINEAR B SYLLABLE B071 DWE -10044 LINEAR B SYLLABLE B090 DWO -10045 LINEAR B SYLLABLE B048 NWA -10046 LINEAR B SYLLABLE B029 PU2 -10047 LINEAR B SYLLABLE B062 PTE -10048 LINEAR B SYLLABLE B076 RA2 -10049 LINEAR B SYLLABLE B033 RA3 -1004A LINEAR B SYLLABLE B068 RO2 -1004B LINEAR B SYLLABLE B066 TA2 -1004C LINEAR B SYLLABLE B087 TWE -1004D LINEAR B SYLLABLE B091 TWO -10050 LINEAR B SYMBOL B018 -10051 LINEAR B SYMBOL B019 -10052 LINEAR B SYMBOL B022 -10053 LINEAR B SYMBOL B034 -10054 LINEAR B SYMBOL B047 -10055 LINEAR B SYMBOL B049 -10056 LINEAR B SYMBOL B056 -10057 LINEAR B SYMBOL B063 -10058 LINEAR B SYMBOL B064 -10059 LINEAR B SYMBOL B079 -1005A LINEAR B SYMBOL B082 -1005B LINEAR B SYMBOL B083 -1005C LINEAR B SYMBOL B086 -1005D LINEAR B SYMBOL B089 -10080 LINEAR B IDEOGRAM B100 MAN -10081 LINEAR B IDEOGRAM B102 WOMAN -10082 LINEAR B IDEOGRAM B104 DEER -10083 LINEAR B IDEOGRAM B105 EQUID -10084 LINEAR B IDEOGRAM B105F MARE -10085 LINEAR B IDEOGRAM B105M STALLION -10086 LINEAR B IDEOGRAM B106F EWE -10087 LINEAR B IDEOGRAM B106M RAM -10088 LINEAR B IDEOGRAM B107F SHE-GOAT -10089 LINEAR B IDEOGRAM B107M HE-GOAT -1008A LINEAR B IDEOGRAM B108F SOW -1008B LINEAR B IDEOGRAM B108M BOAR -1008C LINEAR B IDEOGRAM B109F COW -1008D LINEAR B IDEOGRAM B109M BULL -1008E LINEAR B IDEOGRAM B120 WHEAT -1008F LINEAR B IDEOGRAM B121 BARLEY -10090 LINEAR B IDEOGRAM B122 OLIVE -10091 LINEAR B IDEOGRAM B123 SPICE -10092 LINEAR B IDEOGRAM B125 CYPERUS -10093 LINEAR B MONOGRAM B127 KAPO -10094 LINEAR B MONOGRAM B128 KANAKO -10095 LINEAR B IDEOGRAM B130 OIL -10096 LINEAR B IDEOGRAM B131 WINE -10097 LINEAR B IDEOGRAM B132 -10098 LINEAR B MONOGRAM B133 AREPA -10099 LINEAR B MONOGRAM B135 MERI -1009A LINEAR B IDEOGRAM B140 BRONZE -1009B LINEAR B IDEOGRAM B141 GOLD -1009C LINEAR B IDEOGRAM B142 -1009D LINEAR B IDEOGRAM B145 WOOL -1009E LINEAR B IDEOGRAM B146 -1009F LINEAR B IDEOGRAM B150 -100A0 LINEAR B IDEOGRAM B151 HORN -100A1 LINEAR B IDEOGRAM B152 -100A2 LINEAR B IDEOGRAM B153 -100A3 LINEAR B IDEOGRAM B154 -100A4 LINEAR B MONOGRAM B156 TURO2 -100A5 LINEAR B IDEOGRAM B157 -100A6 LINEAR B IDEOGRAM B158 -100A7 LINEAR B IDEOGRAM B159 CLOTH -100A8 LINEAR B IDEOGRAM B160 -100A9 LINEAR B IDEOGRAM B161 -100AA LINEAR B IDEOGRAM B162 GARMENT -100AB LINEAR B IDEOGRAM B163 ARMOUR -100AC LINEAR B IDEOGRAM B164 -100AD LINEAR B IDEOGRAM B165 -100AE LINEAR B IDEOGRAM B166 -100AF LINEAR B IDEOGRAM B167 -100B0 LINEAR B IDEOGRAM B168 -100B1 LINEAR B IDEOGRAM B169 -100B2 LINEAR B IDEOGRAM B170 -100B3 LINEAR B IDEOGRAM B171 -100B4 LINEAR B IDEOGRAM B172 -100B5 LINEAR B IDEOGRAM B173 MONTH -100B6 LINEAR B IDEOGRAM B174 -100B7 LINEAR B IDEOGRAM B176 TREE -100B8 LINEAR B IDEOGRAM B177 -100B9 LINEAR B IDEOGRAM B178 -100BA LINEAR B IDEOGRAM B179 -100BB LINEAR B IDEOGRAM B180 -100BC LINEAR B IDEOGRAM B181 -100BD LINEAR B IDEOGRAM B182 -100BE LINEAR B IDEOGRAM B183 -100BF LINEAR B IDEOGRAM B184 -100C0 LINEAR B IDEOGRAM B185 -100C1 LINEAR B IDEOGRAM B189 -100C2 LINEAR B IDEOGRAM B190 -100C3 LINEAR B IDEOGRAM B191 HELMET -100C4 LINEAR B IDEOGRAM B220 FOOTSTOOL -100C5 LINEAR B IDEOGRAM B225 BATHTUB -100C6 LINEAR B IDEOGRAM B230 SPEAR -100C7 LINEAR B IDEOGRAM B231 ARROW -100C8 LINEAR B IDEOGRAM B232 -100C9 LINEAR B IDEOGRAM B233 SWORD -100CA LINEAR B IDEOGRAM B234 -100CB LINEAR B IDEOGRAM B236 -100CC LINEAR B IDEOGRAM B240 WHEELED CHARIOT -100CD LINEAR B IDEOGRAM B241 CHARIOT -100CE LINEAR B IDEOGRAM B242 CHARIOT FRAME -100CF LINEAR B IDEOGRAM B243 WHEEL -100D0 LINEAR B IDEOGRAM B245 -100D1 LINEAR B IDEOGRAM B246 -100D2 LINEAR B MONOGRAM B247 DIPTE -100D3 LINEAR B IDEOGRAM B248 -100D4 LINEAR B IDEOGRAM B249 -100D5 LINEAR B IDEOGRAM B251 -100D6 LINEAR B IDEOGRAM B252 -100D7 LINEAR B IDEOGRAM B253 -100D8 LINEAR B IDEOGRAM B254 DART -100D9 LINEAR B IDEOGRAM B255 -100DA LINEAR B IDEOGRAM B256 -100DB LINEAR B IDEOGRAM B257 -100DC LINEAR B IDEOGRAM B258 -100DD LINEAR B IDEOGRAM B259 -100DE LINEAR B IDEOGRAM VESSEL B155 -100DF LINEAR B IDEOGRAM VESSEL B200 -100E0 LINEAR B IDEOGRAM VESSEL B201 -100E1 LINEAR B IDEOGRAM VESSEL B202 -100E2 LINEAR B IDEOGRAM VESSEL B203 -100E3 LINEAR B IDEOGRAM VESSEL B204 -100E4 LINEAR B IDEOGRAM VESSEL B205 -100E5 LINEAR B IDEOGRAM VESSEL B206 -100E6 LINEAR B IDEOGRAM VESSEL B207 -100E7 LINEAR B IDEOGRAM VESSEL B208 -100E8 LINEAR B IDEOGRAM VESSEL B209 -100E9 LINEAR B IDEOGRAM VESSEL B210 -100EA LINEAR B IDEOGRAM VESSEL B211 -100EB LINEAR B IDEOGRAM VESSEL B212 -100EC LINEAR B IDEOGRAM VESSEL B213 -100ED LINEAR B IDEOGRAM VESSEL B214 -100EE LINEAR B IDEOGRAM VESSEL B215 -100EF LINEAR B IDEOGRAM VESSEL B216 -100F0 LINEAR B IDEOGRAM VESSEL B217 -100F1 LINEAR B IDEOGRAM VESSEL B218 -100F2 LINEAR B IDEOGRAM VESSEL B219 -100F3 LINEAR B IDEOGRAM VESSEL B221 -100F4 LINEAR B IDEOGRAM VESSEL B222 -100F5 LINEAR B IDEOGRAM VESSEL B226 -100F6 LINEAR B IDEOGRAM VESSEL B227 -100F7 LINEAR B IDEOGRAM VESSEL B228 -100F8 LINEAR B IDEOGRAM VESSEL B229 -100F9 LINEAR B IDEOGRAM VESSEL B250 -100FA LINEAR B IDEOGRAM VESSEL B305 -10100 AEGEAN WORD SEPARATOR LINE -10101 AEGEAN WORD SEPARATOR DOT -10102 AEGEAN CHECK MARK -10107 AEGEAN NUMBER ONE -10108 AEGEAN NUMBER TWO -10109 AEGEAN NUMBER THREE -1010A AEGEAN NUMBER FOUR -1010B AEGEAN NUMBER FIVE -1010C AEGEAN NUMBER SIX -1010D AEGEAN NUMBER SEVEN -1010E AEGEAN NUMBER EIGHT -1010F AEGEAN NUMBER NINE -10110 AEGEAN NUMBER TEN -10111 AEGEAN NUMBER TWENTY -10112 AEGEAN NUMBER THIRTY -10113 AEGEAN NUMBER FORTY -10114 AEGEAN NUMBER FIFTY -10115 AEGEAN NUMBER SIXTY -10116 AEGEAN NUMBER SEVENTY -10117 AEGEAN NUMBER EIGHTY -10118 AEGEAN NUMBER NINETY -10119 AEGEAN NUMBER ONE HUNDRED -1011A AEGEAN NUMBER TWO HUNDRED -1011B AEGEAN NUMBER THREE HUNDRED -1011C AEGEAN NUMBER FOUR HUNDRED -1011D AEGEAN NUMBER FIVE HUNDRED -1011E AEGEAN NUMBER SIX HUNDRED -1011F AEGEAN NUMBER SEVEN HUNDRED -10120 AEGEAN NUMBER EIGHT HUNDRED -10121 AEGEAN NUMBER NINE HUNDRED -10122 AEGEAN NUMBER ONE THOUSAND -10123 AEGEAN NUMBER TWO THOUSAND -10124 AEGEAN NUMBER THREE THOUSAND -10125 AEGEAN NUMBER FOUR THOUSAND -10126 AEGEAN NUMBER FIVE THOUSAND -10127 AEGEAN NUMBER SIX THOUSAND -10128 AEGEAN NUMBER SEVEN THOUSAND -10129 AEGEAN NUMBER EIGHT THOUSAND -1012A AEGEAN NUMBER NINE THOUSAND -1012B AEGEAN NUMBER TEN THOUSAND -1012C AEGEAN NUMBER TWENTY THOUSAND -1012D AEGEAN NUMBER THIRTY THOUSAND -1012E AEGEAN NUMBER FORTY THOUSAND -1012F AEGEAN NUMBER FIFTY THOUSAND -10130 AEGEAN NUMBER SIXTY THOUSAND -10131 AEGEAN NUMBER SEVENTY THOUSAND -10132 AEGEAN NUMBER EIGHTY THOUSAND -10133 AEGEAN NUMBER NINETY THOUSAND -10137 AEGEAN WEIGHT BASE UNIT -10138 AEGEAN WEIGHT FIRST SUBUNIT -10139 AEGEAN WEIGHT SECOND SUBUNIT -1013A AEGEAN WEIGHT THIRD SUBUNIT -1013B AEGEAN WEIGHT FOURTH SUBUNIT -1013C AEGEAN DRY MEASURE FIRST SUBUNIT -1013D AEGEAN LIQUID MEASURE FIRST SUBUNIT -1013E AEGEAN MEASURE SECOND SUBUNIT -1013F AEGEAN MEASURE THIRD SUBUNIT -10140 GREEK ACROPHONIC ATTIC ONE QUARTER -10141 GREEK ACROPHONIC ATTIC ONE HALF -10142 GREEK ACROPHONIC ATTIC ONE DRACHMA -10143 GREEK ACROPHONIC ATTIC FIVE -10144 GREEK ACROPHONIC ATTIC FIFTY -10145 GREEK ACROPHONIC ATTIC FIVE HUNDRED -10146 GREEK ACROPHONIC ATTIC FIVE THOUSAND -10147 GREEK ACROPHONIC ATTIC FIFTY THOUSAND -10148 GREEK ACROPHONIC ATTIC FIVE TALENTS -10149 GREEK ACROPHONIC ATTIC TEN TALENTS -1014A GREEK ACROPHONIC ATTIC FIFTY TALENTS -1014B GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS -1014C GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS -1014D GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS -1014E GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS -1014F GREEK ACROPHONIC ATTIC FIVE STATERS -10150 GREEK ACROPHONIC ATTIC TEN STATERS -10151 GREEK ACROPHONIC ATTIC FIFTY STATERS -10152 GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS -10153 GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS -10154 GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS -10155 GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS -10156 GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS -10157 GREEK ACROPHONIC ATTIC TEN MNAS -10158 GREEK ACROPHONIC HERAEUM ONE PLETHRON -10159 GREEK ACROPHONIC THESPIAN ONE -1015A GREEK ACROPHONIC HERMIONIAN ONE -1015B GREEK ACROPHONIC EPIDAUREAN TWO -1015C GREEK ACROPHONIC THESPIAN TWO -1015D GREEK ACROPHONIC CYRENAIC TWO DRACHMAS -1015E GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS -1015F GREEK ACROPHONIC TROEZENIAN FIVE -10160 GREEK ACROPHONIC TROEZENIAN TEN -10161 GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM -10162 GREEK ACROPHONIC HERMIONIAN TEN -10163 GREEK ACROPHONIC MESSENIAN TEN -10164 GREEK ACROPHONIC THESPIAN TEN -10165 GREEK ACROPHONIC THESPIAN THIRTY -10166 GREEK ACROPHONIC TROEZENIAN FIFTY -10167 GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM -10168 GREEK ACROPHONIC HERMIONIAN FIFTY -10169 GREEK ACROPHONIC THESPIAN FIFTY -1016A GREEK ACROPHONIC THESPIAN ONE HUNDRED -1016B GREEK ACROPHONIC THESPIAN THREE HUNDRED -1016C GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED -1016D GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED -1016E GREEK ACROPHONIC THESPIAN FIVE HUNDRED -1016F GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED -10170 GREEK ACROPHONIC NAXIAN FIVE HUNDRED -10171 GREEK ACROPHONIC THESPIAN ONE THOUSAND -10172 GREEK ACROPHONIC THESPIAN FIVE THOUSAND -10173 GREEK ACROPHONIC DELPHIC FIVE MNAS -10174 GREEK ACROPHONIC STRATIAN FIFTY MNAS -10175 GREEK ONE HALF SIGN -10176 GREEK ONE HALF SIGN ALTERNATE FORM -10177 GREEK TWO THIRDS SIGN -10178 GREEK THREE QUARTERS SIGN -10179 GREEK YEAR SIGN -1017A GREEK TALENT SIGN -1017B GREEK DRACHMA SIGN -1017C GREEK OBOL SIGN -1017D GREEK TWO OBOLS SIGN -1017E GREEK THREE OBOLS SIGN -1017F GREEK FOUR OBOLS SIGN -10180 GREEK FIVE OBOLS SIGN -10181 GREEK METRETES SIGN -10182 GREEK KYATHOS BASE SIGN -10183 GREEK LITRA SIGN -10184 GREEK OUNKIA SIGN -10185 GREEK XESTES SIGN -10186 GREEK ARTABE SIGN -10187 GREEK AROURA SIGN -10188 GREEK GRAMMA SIGN -10189 GREEK TRYBLION BASE SIGN -1018A GREEK ZERO SIGN -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 -10380 UGARITIC LETTER ALPA -10381 UGARITIC LETTER BETA -10382 UGARITIC LETTER GAMLA -10383 UGARITIC LETTER KHA -10384 UGARITIC LETTER DELTA -10385 UGARITIC LETTER HO -10386 UGARITIC LETTER WO -10387 UGARITIC LETTER ZETA -10388 UGARITIC LETTER HOTA -10389 UGARITIC LETTER TET -1038A UGARITIC LETTER YOD -1038B UGARITIC LETTER KAF -1038C UGARITIC LETTER SHIN -1038D UGARITIC LETTER LAMDA -1038E UGARITIC LETTER MEM -1038F UGARITIC LETTER DHAL -10390 UGARITIC LETTER NUN -10391 UGARITIC LETTER ZU -10392 UGARITIC LETTER SAMKA -10393 UGARITIC LETTER AIN -10394 UGARITIC LETTER PU -10395 UGARITIC LETTER SADE -10396 UGARITIC LETTER QOPA -10397 UGARITIC LETTER RASHA -10398 UGARITIC LETTER THANNA -10399 UGARITIC LETTER GHAIN -1039A UGARITIC LETTER TO -1039B UGARITIC LETTER I -1039C UGARITIC LETTER U -1039D UGARITIC LETTER SSU -1039F UGARITIC WORD DIVIDER -103A0 OLD PERSIAN SIGN A -103A1 OLD PERSIAN SIGN I -103A2 OLD PERSIAN SIGN U -103A3 OLD PERSIAN SIGN KA -103A4 OLD PERSIAN SIGN KU -103A5 OLD PERSIAN SIGN GA -103A6 OLD PERSIAN SIGN GU -103A7 OLD PERSIAN SIGN XA -103A8 OLD PERSIAN SIGN CA -103A9 OLD PERSIAN SIGN JA -103AA OLD PERSIAN SIGN JI -103AB OLD PERSIAN SIGN TA -103AC OLD PERSIAN SIGN TU -103AD OLD PERSIAN SIGN DA -103AE OLD PERSIAN SIGN DI -103AF OLD PERSIAN SIGN DU -103B0 OLD PERSIAN SIGN THA -103B1 OLD PERSIAN SIGN PA -103B2 OLD PERSIAN SIGN BA -103B3 OLD PERSIAN SIGN FA -103B4 OLD PERSIAN SIGN NA -103B5 OLD PERSIAN SIGN NU -103B6 OLD PERSIAN SIGN MA -103B7 OLD PERSIAN SIGN MI -103B8 OLD PERSIAN SIGN MU -103B9 OLD PERSIAN SIGN YA -103BA OLD PERSIAN SIGN VA -103BB OLD PERSIAN SIGN VI -103BC OLD PERSIAN SIGN RA -103BD OLD PERSIAN SIGN RU -103BE OLD PERSIAN SIGN LA -103BF OLD PERSIAN SIGN SA -103C0 OLD PERSIAN SIGN ZA -103C1 OLD PERSIAN SIGN SHA -103C2 OLD PERSIAN SIGN SSA -103C3 OLD PERSIAN SIGN HA -103C8 OLD PERSIAN SIGN AURAMAZDAA -103C9 OLD PERSIAN SIGN AURAMAZDAA-2 -103CA OLD PERSIAN SIGN AURAMAZDAAHA -103CB OLD PERSIAN SIGN XSHAAYATHIYA -103CC OLD PERSIAN SIGN DAHYAAUSH -103CD OLD PERSIAN SIGN DAHYAAUSH-2 -103CE OLD PERSIAN SIGN BAGA -103CF OLD PERSIAN SIGN BUUMISH -103D0 OLD PERSIAN WORD DIVIDER -103D1 OLD PERSIAN NUMBER ONE -103D2 OLD PERSIAN NUMBER TWO -103D3 OLD PERSIAN NUMBER TEN -103D4 OLD PERSIAN NUMBER TWENTY -103D5 OLD PERSIAN NUMBER 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 -10426 DESERET CAPITAL LETTER OI -10427 DESERET CAPITAL LETTER EW -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 -1044E DESERET SMALL LETTER OI -1044F DESERET SMALL LETTER EW -10450 SHAVIAN LETTER PEEP -10451 SHAVIAN LETTER TOT -10452 SHAVIAN LETTER KICK -10453 SHAVIAN LETTER FEE -10454 SHAVIAN LETTER THIGH -10455 SHAVIAN LETTER SO -10456 SHAVIAN LETTER SURE -10457 SHAVIAN LETTER CHURCH -10458 SHAVIAN LETTER YEA -10459 SHAVIAN LETTER HUNG -1045A SHAVIAN LETTER BIB -1045B SHAVIAN LETTER DEAD -1045C SHAVIAN LETTER GAG -1045D SHAVIAN LETTER VOW -1045E SHAVIAN LETTER THEY -1045F SHAVIAN LETTER ZOO -10460 SHAVIAN LETTER MEASURE -10461 SHAVIAN LETTER JUDGE -10462 SHAVIAN LETTER WOE -10463 SHAVIAN LETTER HA-HA -10464 SHAVIAN LETTER LOLL -10465 SHAVIAN LETTER MIME -10466 SHAVIAN LETTER IF -10467 SHAVIAN LETTER EGG -10468 SHAVIAN LETTER ASH -10469 SHAVIAN LETTER ADO -1046A SHAVIAN LETTER ON -1046B SHAVIAN LETTER WOOL -1046C SHAVIAN LETTER OUT -1046D SHAVIAN LETTER AH -1046E SHAVIAN LETTER ROAR -1046F SHAVIAN LETTER NUN -10470 SHAVIAN LETTER EAT -10471 SHAVIAN LETTER AGE -10472 SHAVIAN LETTER ICE -10473 SHAVIAN LETTER UP -10474 SHAVIAN LETTER OAK -10475 SHAVIAN LETTER OOZE -10476 SHAVIAN LETTER OIL -10477 SHAVIAN LETTER AWE -10478 SHAVIAN LETTER ARE -10479 SHAVIAN LETTER OR -1047A SHAVIAN LETTER AIR -1047B SHAVIAN LETTER ERR -1047C SHAVIAN LETTER ARRAY -1047D SHAVIAN LETTER EAR -1047E SHAVIAN LETTER IAN -1047F SHAVIAN LETTER YEW -10480 OSMANYA LETTER ALEF -10481 OSMANYA LETTER BA -10482 OSMANYA LETTER TA -10483 OSMANYA LETTER JA -10484 OSMANYA LETTER XA -10485 OSMANYA LETTER KHA -10486 OSMANYA LETTER DEEL -10487 OSMANYA LETTER RA -10488 OSMANYA LETTER SA -10489 OSMANYA LETTER SHIIN -1048A OSMANYA LETTER DHA -1048B OSMANYA LETTER CAYN -1048C OSMANYA LETTER GA -1048D OSMANYA LETTER FA -1048E OSMANYA LETTER QAAF -1048F OSMANYA LETTER KAAF -10490 OSMANYA LETTER LAAN -10491 OSMANYA LETTER MIIN -10492 OSMANYA LETTER NUUN -10493 OSMANYA LETTER WAW -10494 OSMANYA LETTER HA -10495 OSMANYA LETTER YA -10496 OSMANYA LETTER A -10497 OSMANYA LETTER E -10498 OSMANYA LETTER I -10499 OSMANYA LETTER O -1049A OSMANYA LETTER U -1049B OSMANYA LETTER AA -1049C OSMANYA LETTER EE -1049D OSMANYA LETTER OO -104A0 OSMANYA DIGIT ZERO -104A1 OSMANYA DIGIT ONE -104A2 OSMANYA DIGIT TWO -104A3 OSMANYA DIGIT THREE -104A4 OSMANYA DIGIT FOUR -104A5 OSMANYA DIGIT FIVE -104A6 OSMANYA DIGIT SIX -104A7 OSMANYA DIGIT SEVEN -104A8 OSMANYA DIGIT EIGHT -104A9 OSMANYA DIGIT NINE -10800 CYPRIOT SYLLABLE A -10801 CYPRIOT SYLLABLE E -10802 CYPRIOT SYLLABLE I -10803 CYPRIOT SYLLABLE O -10804 CYPRIOT SYLLABLE U -10805 CYPRIOT SYLLABLE JA -10808 CYPRIOT SYLLABLE JO -1080A CYPRIOT SYLLABLE KA -1080B CYPRIOT SYLLABLE KE -1080C CYPRIOT SYLLABLE KI -1080D CYPRIOT SYLLABLE KO -1080E CYPRIOT SYLLABLE KU -1080F CYPRIOT SYLLABLE LA -10810 CYPRIOT SYLLABLE LE -10811 CYPRIOT SYLLABLE LI -10812 CYPRIOT SYLLABLE LO -10813 CYPRIOT SYLLABLE LU -10814 CYPRIOT SYLLABLE MA -10815 CYPRIOT SYLLABLE ME -10816 CYPRIOT SYLLABLE MI -10817 CYPRIOT SYLLABLE MO -10818 CYPRIOT SYLLABLE MU -10819 CYPRIOT SYLLABLE NA -1081A CYPRIOT SYLLABLE NE -1081B CYPRIOT SYLLABLE NI -1081C CYPRIOT SYLLABLE NO -1081D CYPRIOT SYLLABLE NU -1081E CYPRIOT SYLLABLE PA -1081F CYPRIOT SYLLABLE PE -10820 CYPRIOT SYLLABLE PI -10821 CYPRIOT SYLLABLE PO -10822 CYPRIOT SYLLABLE PU -10823 CYPRIOT SYLLABLE RA -10824 CYPRIOT SYLLABLE RE -10825 CYPRIOT SYLLABLE RI -10826 CYPRIOT SYLLABLE RO -10827 CYPRIOT SYLLABLE RU -10828 CYPRIOT SYLLABLE SA -10829 CYPRIOT SYLLABLE SE -1082A CYPRIOT SYLLABLE SI -1082B CYPRIOT SYLLABLE SO -1082C CYPRIOT SYLLABLE SU -1082D CYPRIOT SYLLABLE TA -1082E CYPRIOT SYLLABLE TE -1082F CYPRIOT SYLLABLE TI -10830 CYPRIOT SYLLABLE TO -10831 CYPRIOT SYLLABLE TU -10832 CYPRIOT SYLLABLE WA -10833 CYPRIOT SYLLABLE WE -10834 CYPRIOT SYLLABLE WI -10835 CYPRIOT SYLLABLE WO -10837 CYPRIOT SYLLABLE XA -10838 CYPRIOT SYLLABLE XE -1083C CYPRIOT SYLLABLE ZA -1083F CYPRIOT SYLLABLE ZO -10A00 KHAROSHTHI LETTER A -10A01 KHAROSHTHI VOWEL SIGN I -10A02 KHAROSHTHI VOWEL SIGN U -10A03 KHAROSHTHI VOWEL SIGN VOCALIC R -10A05 KHAROSHTHI VOWEL SIGN E -10A06 KHAROSHTHI VOWEL SIGN O -10A0C KHAROSHTHI VOWEL LENGTH MARK -10A0D KHAROSHTHI SIGN DOUBLE RING BELOW -10A0E KHAROSHTHI SIGN ANUSVARA -10A0F KHAROSHTHI SIGN VISARGA -10A10 KHAROSHTHI LETTER KA -10A11 KHAROSHTHI LETTER KHA -10A12 KHAROSHTHI LETTER GA -10A13 KHAROSHTHI LETTER GHA -10A15 KHAROSHTHI LETTER CA -10A16 KHAROSHTHI LETTER CHA -10A17 KHAROSHTHI LETTER JA -10A19 KHAROSHTHI LETTER NYA -10A1A KHAROSHTHI LETTER TTA -10A1B KHAROSHTHI LETTER TTHA -10A1C KHAROSHTHI LETTER DDA -10A1D KHAROSHTHI LETTER DDHA -10A1E KHAROSHTHI LETTER NNA -10A1F KHAROSHTHI LETTER TA -10A20 KHAROSHTHI LETTER THA -10A21 KHAROSHTHI LETTER DA -10A22 KHAROSHTHI LETTER DHA -10A23 KHAROSHTHI LETTER NA -10A24 KHAROSHTHI LETTER PA -10A25 KHAROSHTHI LETTER PHA -10A26 KHAROSHTHI LETTER BA -10A27 KHAROSHTHI LETTER BHA -10A28 KHAROSHTHI LETTER MA -10A29 KHAROSHTHI LETTER YA -10A2A KHAROSHTHI LETTER RA -10A2B KHAROSHTHI LETTER LA -10A2C KHAROSHTHI LETTER VA -10A2D KHAROSHTHI LETTER SHA -10A2E KHAROSHTHI LETTER SSA -10A2F KHAROSHTHI LETTER SA -10A30 KHAROSHTHI LETTER ZA -10A31 KHAROSHTHI LETTER HA -10A32 KHAROSHTHI LETTER KKA -10A33 KHAROSHTHI LETTER TTTHA -10A38 KHAROSHTHI SIGN BAR ABOVE -10A39 KHAROSHTHI SIGN CAUDA -10A3A KHAROSHTHI SIGN DOT BELOW -10A3F KHAROSHTHI VIRAMA -10A40 KHAROSHTHI DIGIT ONE -10A41 KHAROSHTHI DIGIT TWO -10A42 KHAROSHTHI DIGIT THREE -10A43 KHAROSHTHI DIGIT FOUR -10A44 KHAROSHTHI NUMBER TEN -10A45 KHAROSHTHI NUMBER TWENTY -10A46 KHAROSHTHI NUMBER ONE HUNDRED -10A47 KHAROSHTHI NUMBER ONE THOUSAND -10A50 KHAROSHTHI PUNCTUATION DOT -10A51 KHAROSHTHI PUNCTUATION SMALL CIRCLE -10A52 KHAROSHTHI PUNCTUATION CIRCLE -10A53 KHAROSHTHI PUNCTUATION CRESCENT BAR -10A54 KHAROSHTHI PUNCTUATION MANGALAM -10A55 KHAROSHTHI PUNCTUATION LOTUS -10A56 KHAROSHTHI PUNCTUATION DANDA -10A57 KHAROSHTHI PUNCTUATION DOUBLE DANDA -10A58 KHAROSHTHI PUNCTUATION LINES -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 -1D200 GREEK VOCAL NOTATION SYMBOL-1 -1D201 GREEK VOCAL NOTATION SYMBOL-2 -1D202 GREEK VOCAL NOTATION SYMBOL-3 -1D203 GREEK VOCAL NOTATION SYMBOL-4 -1D204 GREEK VOCAL NOTATION SYMBOL-5 -1D205 GREEK VOCAL NOTATION SYMBOL-6 -1D206 GREEK VOCAL NOTATION SYMBOL-7 -1D207 GREEK VOCAL NOTATION SYMBOL-8 -1D208 GREEK VOCAL NOTATION SYMBOL-9 -1D209 GREEK VOCAL NOTATION SYMBOL-10 -1D20A GREEK VOCAL NOTATION SYMBOL-11 -1D20B GREEK VOCAL NOTATION SYMBOL-12 -1D20C GREEK VOCAL NOTATION SYMBOL-13 -1D20D GREEK VOCAL NOTATION SYMBOL-14 -1D20E GREEK VOCAL NOTATION SYMBOL-15 -1D20F GREEK VOCAL NOTATION SYMBOL-16 -1D210 GREEK VOCAL NOTATION SYMBOL-17 -1D211 GREEK VOCAL NOTATION SYMBOL-18 -1D212 GREEK VOCAL NOTATION SYMBOL-19 -1D213 GREEK VOCAL NOTATION SYMBOL-20 -1D214 GREEK VOCAL NOTATION SYMBOL-21 -1D215 GREEK VOCAL NOTATION SYMBOL-22 -1D216 GREEK VOCAL NOTATION SYMBOL-23 -1D217 GREEK VOCAL NOTATION SYMBOL-24 -1D218 GREEK VOCAL NOTATION SYMBOL-50 -1D219 GREEK VOCAL NOTATION SYMBOL-51 -1D21A GREEK VOCAL NOTATION SYMBOL-52 -1D21B GREEK VOCAL NOTATION SYMBOL-53 -1D21C GREEK VOCAL NOTATION SYMBOL-54 -1D21D GREEK INSTRUMENTAL NOTATION SYMBOL-1 -1D21E GREEK INSTRUMENTAL NOTATION SYMBOL-2 -1D21F GREEK INSTRUMENTAL NOTATION SYMBOL-4 -1D220 GREEK INSTRUMENTAL NOTATION SYMBOL-5 -1D221 GREEK INSTRUMENTAL NOTATION SYMBOL-7 -1D222 GREEK INSTRUMENTAL NOTATION SYMBOL-8 -1D223 GREEK INSTRUMENTAL NOTATION SYMBOL-11 -1D224 GREEK INSTRUMENTAL NOTATION SYMBOL-12 -1D225 GREEK INSTRUMENTAL NOTATION SYMBOL-13 -1D226 GREEK INSTRUMENTAL NOTATION SYMBOL-14 -1D227 GREEK INSTRUMENTAL NOTATION SYMBOL-17 -1D228 GREEK INSTRUMENTAL NOTATION SYMBOL-18 -1D229 GREEK INSTRUMENTAL NOTATION SYMBOL-19 -1D22A GREEK INSTRUMENTAL NOTATION SYMBOL-23 -1D22B GREEK INSTRUMENTAL NOTATION SYMBOL-24 -1D22C GREEK INSTRUMENTAL NOTATION SYMBOL-25 -1D22D GREEK INSTRUMENTAL NOTATION SYMBOL-26 -1D22E GREEK INSTRUMENTAL NOTATION SYMBOL-27 -1D22F GREEK INSTRUMENTAL NOTATION SYMBOL-29 -1D230 GREEK INSTRUMENTAL NOTATION SYMBOL-30 -1D231 GREEK INSTRUMENTAL NOTATION SYMBOL-32 -1D232 GREEK INSTRUMENTAL NOTATION SYMBOL-36 -1D233 GREEK INSTRUMENTAL NOTATION SYMBOL-37 -1D234 GREEK INSTRUMENTAL NOTATION SYMBOL-38 -1D235 GREEK INSTRUMENTAL NOTATION SYMBOL-39 -1D236 GREEK INSTRUMENTAL NOTATION SYMBOL-40 -1D237 GREEK INSTRUMENTAL NOTATION SYMBOL-42 -1D238 GREEK INSTRUMENTAL NOTATION SYMBOL-43 -1D239 GREEK INSTRUMENTAL NOTATION SYMBOL-45 -1D23A GREEK INSTRUMENTAL NOTATION SYMBOL-47 -1D23B GREEK INSTRUMENTAL NOTATION SYMBOL-48 -1D23C GREEK INSTRUMENTAL NOTATION SYMBOL-49 -1D23D GREEK INSTRUMENTAL NOTATION SYMBOL-50 -1D23E GREEK INSTRUMENTAL NOTATION SYMBOL-51 -1D23F GREEK INSTRUMENTAL NOTATION SYMBOL-52 -1D240 GREEK INSTRUMENTAL NOTATION SYMBOL-53 -1D241 GREEK INSTRUMENTAL NOTATION SYMBOL-54 -1D242 COMBINING GREEK MUSICAL TRISEME -1D243 COMBINING GREEK MUSICAL TETRASEME -1D244 COMBINING GREEK MUSICAL PENTASEME -1D245 GREEK MUSICAL LEIMMA -1D300 MONOGRAM FOR EARTH -1D301 DIGRAM FOR HEAVENLY EARTH -1D302 DIGRAM FOR HUMAN EARTH -1D303 DIGRAM FOR EARTHLY HEAVEN -1D304 DIGRAM FOR EARTHLY HUMAN -1D305 DIGRAM FOR EARTH -1D306 TETRAGRAM FOR CENTRE -1D307 TETRAGRAM FOR FULL CIRCLE -1D308 TETRAGRAM FOR MIRED -1D309 TETRAGRAM FOR BARRIER -1D30A TETRAGRAM FOR KEEPING SMALL -1D30B TETRAGRAM FOR CONTRARIETY -1D30C TETRAGRAM FOR ASCENT -1D30D TETRAGRAM FOR OPPOSITION -1D30E TETRAGRAM FOR BRANCHING OUT -1D30F TETRAGRAM FOR DEFECTIVENESS OR DISTORTION -1D310 TETRAGRAM FOR DIVERGENCE -1D311 TETRAGRAM FOR YOUTHFULNESS -1D312 TETRAGRAM FOR INCREASE -1D313 TETRAGRAM FOR PENETRATION -1D314 TETRAGRAM FOR REACH -1D315 TETRAGRAM FOR CONTACT -1D316 TETRAGRAM FOR HOLDING BACK -1D317 TETRAGRAM FOR WAITING -1D318 TETRAGRAM FOR FOLLOWING -1D319 TETRAGRAM FOR ADVANCE -1D31A TETRAGRAM FOR RELEASE -1D31B TETRAGRAM FOR RESISTANCE -1D31C TETRAGRAM FOR EASE -1D31D TETRAGRAM FOR JOY -1D31E TETRAGRAM FOR CONTENTION -1D31F TETRAGRAM FOR ENDEAVOUR -1D320 TETRAGRAM FOR DUTIES -1D321 TETRAGRAM FOR CHANGE -1D322 TETRAGRAM FOR DECISIVENESS -1D323 TETRAGRAM FOR BOLD RESOLUTION -1D324 TETRAGRAM FOR PACKING -1D325 TETRAGRAM FOR LEGION -1D326 TETRAGRAM FOR CLOSENESS -1D327 TETRAGRAM FOR KINSHIP -1D328 TETRAGRAM FOR GATHERING -1D329 TETRAGRAM FOR STRENGTH -1D32A TETRAGRAM FOR PURITY -1D32B TETRAGRAM FOR FULLNESS -1D32C TETRAGRAM FOR RESIDENCE -1D32D TETRAGRAM FOR LAW OR MODEL -1D32E TETRAGRAM FOR RESPONSE -1D32F TETRAGRAM FOR GOING TO MEET -1D330 TETRAGRAM FOR ENCOUNTERS -1D331 TETRAGRAM FOR STOVE -1D332 TETRAGRAM FOR GREATNESS -1D333 TETRAGRAM FOR ENLARGEMENT -1D334 TETRAGRAM FOR PATTERN -1D335 TETRAGRAM FOR RITUAL -1D336 TETRAGRAM FOR FLIGHT -1D337 TETRAGRAM FOR VASTNESS OR WASTING -1D338 TETRAGRAM FOR CONSTANCY -1D339 TETRAGRAM FOR MEASURE -1D33A TETRAGRAM FOR ETERNITY -1D33B TETRAGRAM FOR UNITY -1D33C TETRAGRAM FOR DIMINISHMENT -1D33D TETRAGRAM FOR CLOSED MOUTH -1D33E TETRAGRAM FOR GUARDEDNESS -1D33F TETRAGRAM FOR GATHERING IN -1D340 TETRAGRAM FOR MASSING -1D341 TETRAGRAM FOR ACCUMULATION -1D342 TETRAGRAM FOR EMBELLISHMENT -1D343 TETRAGRAM FOR DOUBT -1D344 TETRAGRAM FOR WATCH -1D345 TETRAGRAM FOR SINKING -1D346 TETRAGRAM FOR INNER -1D347 TETRAGRAM FOR DEPARTURE -1D348 TETRAGRAM FOR DARKENING -1D349 TETRAGRAM FOR DIMMING -1D34A TETRAGRAM FOR EXHAUSTION -1D34B TETRAGRAM FOR SEVERANCE -1D34C TETRAGRAM FOR STOPPAGE -1D34D TETRAGRAM FOR HARDNESS -1D34E TETRAGRAM FOR COMPLETION -1D34F TETRAGRAM FOR CLOSURE -1D350 TETRAGRAM FOR FAILURE -1D351 TETRAGRAM FOR AGGRAVATION -1D352 TETRAGRAM FOR COMPLIANCE -1D353 TETRAGRAM FOR ON THE VERGE -1D354 TETRAGRAM FOR DIFFICULTIES -1D355 TETRAGRAM FOR LABOURING -1D356 TETRAGRAM FOR FOSTERING -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 -1D4C1 MATHEMATICAL SCRIPT SMALL L -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 -1D6A4 MATHEMATICAL ITALIC SMALL DOTLESS I -1D6A5 MATHEMATICAL ITALIC SMALL DOTLESS J -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 -E0100 VARIATION SELECTOR-17 -E0101 VARIATION SELECTOR-18 -E0102 VARIATION SELECTOR-19 -E0103 VARIATION SELECTOR-20 -E0104 VARIATION SELECTOR-21 -E0105 VARIATION SELECTOR-22 -E0106 VARIATION SELECTOR-23 -E0107 VARIATION SELECTOR-24 -E0108 VARIATION SELECTOR-25 -E0109 VARIATION SELECTOR-26 -E010A VARIATION SELECTOR-27 -E010B VARIATION SELECTOR-28 -E010C VARIATION SELECTOR-29 -E010D VARIATION SELECTOR-30 -E010E VARIATION SELECTOR-31 -E010F VARIATION SELECTOR-32 -E0110 VARIATION SELECTOR-33 -E0111 VARIATION SELECTOR-34 -E0112 VARIATION SELECTOR-35 -E0113 VARIATION SELECTOR-36 -E0114 VARIATION SELECTOR-37 -E0115 VARIATION SELECTOR-38 -E0116 VARIATION SELECTOR-39 -E0117 VARIATION SELECTOR-40 -E0118 VARIATION SELECTOR-41 -E0119 VARIATION SELECTOR-42 -E011A VARIATION SELECTOR-43 -E011B VARIATION SELECTOR-44 -E011C VARIATION SELECTOR-45 -E011D VARIATION SELECTOR-46 -E011E VARIATION SELECTOR-47 -E011F VARIATION SELECTOR-48 -E0120 VARIATION SELECTOR-49 -E0121 VARIATION SELECTOR-50 -E0122 VARIATION SELECTOR-51 -E0123 VARIATION SELECTOR-52 -E0124 VARIATION SELECTOR-53 -E0125 VARIATION SELECTOR-54 -E0126 VARIATION SELECTOR-55 -E0127 VARIATION SELECTOR-56 -E0128 VARIATION SELECTOR-57 -E0129 VARIATION SELECTOR-58 -E012A VARIATION SELECTOR-59 -E012B VARIATION SELECTOR-60 -E012C VARIATION SELECTOR-61 -E012D VARIATION SELECTOR-62 -E012E VARIATION SELECTOR-63 -E012F VARIATION SELECTOR-64 -E0130 VARIATION SELECTOR-65 -E0131 VARIATION SELECTOR-66 -E0132 VARIATION SELECTOR-67 -E0133 VARIATION SELECTOR-68 -E0134 VARIATION SELECTOR-69 -E0135 VARIATION SELECTOR-70 -E0136 VARIATION SELECTOR-71 -E0137 VARIATION SELECTOR-72 -E0138 VARIATION SELECTOR-73 -E0139 VARIATION SELECTOR-74 -E013A VARIATION SELECTOR-75 -E013B VARIATION SELECTOR-76 -E013C VARIATION SELECTOR-77 -E013D VARIATION SELECTOR-78 -E013E VARIATION SELECTOR-79 -E013F VARIATION SELECTOR-80 -E0140 VARIATION SELECTOR-81 -E0141 VARIATION SELECTOR-82 -E0142 VARIATION SELECTOR-83 -E0143 VARIATION SELECTOR-84 -E0144 VARIATION SELECTOR-85 -E0145 VARIATION SELECTOR-86 -E0146 VARIATION SELECTOR-87 -E0147 VARIATION SELECTOR-88 -E0148 VARIATION SELECTOR-89 -E0149 VARIATION SELECTOR-90 -E014A VARIATION SELECTOR-91 -E014B VARIATION SELECTOR-92 -E014C VARIATION SELECTOR-93 -E014D VARIATION SELECTOR-94 -E014E VARIATION SELECTOR-95 -E014F VARIATION SELECTOR-96 -E0150 VARIATION SELECTOR-97 -E0151 VARIATION SELECTOR-98 -E0152 VARIATION SELECTOR-99 -E0153 VARIATION SELECTOR-100 -E0154 VARIATION SELECTOR-101 -E0155 VARIATION SELECTOR-102 -E0156 VARIATION SELECTOR-103 -E0157 VARIATION SELECTOR-104 -E0158 VARIATION SELECTOR-105 -E0159 VARIATION SELECTOR-106 -E015A VARIATION SELECTOR-107 -E015B VARIATION SELECTOR-108 -E015C VARIATION SELECTOR-109 -E015D VARIATION SELECTOR-110 -E015E VARIATION SELECTOR-111 -E015F VARIATION SELECTOR-112 -E0160 VARIATION SELECTOR-113 -E0161 VARIATION SELECTOR-114 -E0162 VARIATION SELECTOR-115 -E0163 VARIATION SELECTOR-116 -E0164 VARIATION SELECTOR-117 -E0165 VARIATION SELECTOR-118 -E0166 VARIATION SELECTOR-119 -E0167 VARIATION SELECTOR-120 -E0168 VARIATION SELECTOR-121 -E0169 VARIATION SELECTOR-122 -E016A VARIATION SELECTOR-123 -E016B VARIATION SELECTOR-124 -E016C VARIATION SELECTOR-125 -E016D VARIATION SELECTOR-126 -E016E VARIATION SELECTOR-127 -E016F VARIATION SELECTOR-128 -E0170 VARIATION SELECTOR-129 -E0171 VARIATION SELECTOR-130 -E0172 VARIATION SELECTOR-131 -E0173 VARIATION SELECTOR-132 -E0174 VARIATION SELECTOR-133 -E0175 VARIATION SELECTOR-134 -E0176 VARIATION SELECTOR-135 -E0177 VARIATION SELECTOR-136 -E0178 VARIATION SELECTOR-137 -E0179 VARIATION SELECTOR-138 -E017A VARIATION SELECTOR-139 -E017B VARIATION SELECTOR-140 -E017C VARIATION SELECTOR-141 -E017D VARIATION SELECTOR-142 -E017E VARIATION SELECTOR-143 -E017F VARIATION SELECTOR-144 -E0180 VARIATION SELECTOR-145 -E0181 VARIATION SELECTOR-146 -E0182 VARIATION SELECTOR-147 -E0183 VARIATION SELECTOR-148 -E0184 VARIATION SELECTOR-149 -E0185 VARIATION SELECTOR-150 -E0186 VARIATION SELECTOR-151 -E0187 VARIATION SELECTOR-152 -E0188 VARIATION SELECTOR-153 -E0189 VARIATION SELECTOR-154 -E018A VARIATION SELECTOR-155 -E018B VARIATION SELECTOR-156 -E018C VARIATION SELECTOR-157 -E018D VARIATION SELECTOR-158 -E018E VARIATION SELECTOR-159 -E018F VARIATION SELECTOR-160 -E0190 VARIATION SELECTOR-161 -E0191 VARIATION SELECTOR-162 -E0192 VARIATION SELECTOR-163 -E0193 VARIATION SELECTOR-164 -E0194 VARIATION SELECTOR-165 -E0195 VARIATION SELECTOR-166 -E0196 VARIATION SELECTOR-167 -E0197 VARIATION SELECTOR-168 -E0198 VARIATION SELECTOR-169 -E0199 VARIATION SELECTOR-170 -E019A VARIATION SELECTOR-171 -E019B VARIATION SELECTOR-172 -E019C VARIATION SELECTOR-173 -E019D VARIATION SELECTOR-174 -E019E VARIATION SELECTOR-175 -E019F VARIATION SELECTOR-176 -E01A0 VARIATION SELECTOR-177 -E01A1 VARIATION SELECTOR-178 -E01A2 VARIATION SELECTOR-179 -E01A3 VARIATION SELECTOR-180 -E01A4 VARIATION SELECTOR-181 -E01A5 VARIATION SELECTOR-182 -E01A6 VARIATION SELECTOR-183 -E01A7 VARIATION SELECTOR-184 -E01A8 VARIATION SELECTOR-185 -E01A9 VARIATION SELECTOR-186 -E01AA VARIATION SELECTOR-187 -E01AB VARIATION SELECTOR-188 -E01AC VARIATION SELECTOR-189 -E01AD VARIATION SELECTOR-190 -E01AE VARIATION SELECTOR-191 -E01AF VARIATION SELECTOR-192 -E01B0 VARIATION SELECTOR-193 -E01B1 VARIATION SELECTOR-194 -E01B2 VARIATION SELECTOR-195 -E01B3 VARIATION SELECTOR-196 -E01B4 VARIATION SELECTOR-197 -E01B5 VARIATION SELECTOR-198 -E01B6 VARIATION SELECTOR-199 -E01B7 VARIATION SELECTOR-200 -E01B8 VARIATION SELECTOR-201 -E01B9 VARIATION SELECTOR-202 -E01BA VARIATION SELECTOR-203 -E01BB VARIATION SELECTOR-204 -E01BC VARIATION SELECTOR-205 -E01BD VARIATION SELECTOR-206 -E01BE VARIATION SELECTOR-207 -E01BF VARIATION SELECTOR-208 -E01C0 VARIATION SELECTOR-209 -E01C1 VARIATION SELECTOR-210 -E01C2 VARIATION SELECTOR-211 -E01C3 VARIATION SELECTOR-212 -E01C4 VARIATION SELECTOR-213 -E01C5 VARIATION SELECTOR-214 -E01C6 VARIATION SELECTOR-215 -E01C7 VARIATION SELECTOR-216 -E01C8 VARIATION SELECTOR-217 -E01C9 VARIATION SELECTOR-218 -E01CA VARIATION SELECTOR-219 -E01CB VARIATION SELECTOR-220 -E01CC VARIATION SELECTOR-221 -E01CD VARIATION SELECTOR-222 -E01CE VARIATION SELECTOR-223 -E01CF VARIATION SELECTOR-224 -E01D0 VARIATION SELECTOR-225 -E01D1 VARIATION SELECTOR-226 -E01D2 VARIATION SELECTOR-227 -E01D3 VARIATION SELECTOR-228 -E01D4 VARIATION SELECTOR-229 -E01D5 VARIATION SELECTOR-230 -E01D6 VARIATION SELECTOR-231 -E01D7 VARIATION SELECTOR-232 -E01D8 VARIATION SELECTOR-233 -E01D9 VARIATION SELECTOR-234 -E01DA VARIATION SELECTOR-235 -E01DB VARIATION SELECTOR-236 -E01DC VARIATION SELECTOR-237 -E01DD VARIATION SELECTOR-238 -E01DE VARIATION SELECTOR-239 -E01DF VARIATION SELECTOR-240 -E01E0 VARIATION SELECTOR-241 -E01E1 VARIATION SELECTOR-242 -E01E2 VARIATION SELECTOR-243 -E01E3 VARIATION SELECTOR-244 -E01E4 VARIATION SELECTOR-245 -E01E5 VARIATION SELECTOR-246 -E01E6 VARIATION SELECTOR-247 -E01E7 VARIATION SELECTOR-248 -E01E8 VARIATION SELECTOR-249 -E01E9 VARIATION SELECTOR-250 -E01EA VARIATION SELECTOR-251 -E01EB VARIATION SELECTOR-252 -E01EC VARIATION SELECTOR-253 -E01ED VARIATION SELECTOR-254 -E01EE VARIATION SELECTOR-255 -E01EF VARIATION SELECTOR-256 -F0000 FFFFD Plane 15 Private Use -100000 10FFFD Plane 16 Private Use -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/NamedSequences.txt b/Master/tlpkg/tlperl.old/lib/unicore/NamedSequences.txt deleted file mode 100644 index c880c50b911..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/NamedSequences.txt +++ /dev/null @@ -1,95 +0,0 @@ -# NamedSequences-4.1.0.txt -# Date: 2005-214, 13:10 PST [KW] -# -# Unicode Character Database -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# For documentation, see UCD.html -# -# Format: -# Name of Sequence; Code Point Sequence for USI -# -# Note: The order of entries in this file is not significant. -# However, entries are generally in script order corresponding -# to block order in the Unicode Standard, to make it easier -# to find entries in the list. - -# ================================================ - -LATIN CAPITAL LETTER A WITH MACRON AND GRAVE;0100 0300 -LATIN SMALL LETTER A WITH MACRON AND GRAVE;0101 0300 -LATIN SMALL LETTER A WITH ACUTE AND OGONEK;00E1 0328 -LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW;0045 0329 -LATIN SMALL LETTER E WITH VERTICAL LINE BELOW;0065 0329 -LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW AND GRAVE;00C8 0329 -LATIN SMALL LETTER E WITH VERTICAL LINE BELOW AND GRAVE;00E8 0329 -LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW AND ACUTE;00C9 0329 -LATIN SMALL LETTER E WITH VERTICAL LINE BELOW AND ACUTE;00E9 0329 -LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND MACRON;00CA 0304 -LATIN SMALL LETTER E WITH CIRCUMFLEX AND MACRON;00EA 0304 -LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND CARON;00CA 030C -LATIN SMALL LETTER E WITH CIRCUMFLEX AND CARON;00EA 030C -LATIN CAPITAL LETTER I WITH MACRON AND GRAVE;012A 0300 -LATIN SMALL LETTER I WITH MACRON AND GRAVE;012B 0300 -LATIN SMALL LETTER I WITH DOT ABOVE AND ACUTE;0069 0307 0301 -LATIN SMALL LETTER NG WITH TILDE ABOVE;006E 0360 0067 -LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW;004F 0329 -LATIN SMALL LETTER O WITH VERTICAL LINE BELOW;006F 0329 -LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW AND GRAVE;00D2 0329 -LATIN SMALL LETTER O WITH VERTICAL LINE BELOW AND GRAVE;00F2 0329 -LATIN CAPITAL LETTER O WITH VERTICAL LINE BELOW AND ACUTE;00D3 0329 -LATIN SMALL LETTER O WITH VERTICAL LINE BELOW AND ACUTE;00F3 0329 -LATIN CAPITAL LETTER S WITH VERTICAL LINE BELOW;0053 0329 -LATIN SMALL LETTER S WITH VERTICAL LINE BELOW;0073 0329 -LATIN CAPITAL LETTER U WITH MACRON AND GRAVE;016A 0300 -LATIN SMALL LETTER U WITH MACRON AND GRAVE;016B 0300 -GURMUKHI HALF YA;0A2F 0A4D -GURMUKHI PARI CA;0A4D 0A1A -GURMUKHI PARI TA;0A4D 0A24 -GURMUKHI PARI NA;0A4D 0A28 -GURMUKHI PARI YA;0A4D 0A2F -GURMUKHI PARI VA;0A4D 0A35 -GEORGIAN LETTER U-BRJGU;10E3 0302 -KHMER CONSONANT SIGN COENG KA;17D2 1780 -KHMER CONSONANT SIGN COENG KHA;17D2 1781 -KHMER CONSONANT SIGN COENG KO;17D2 1782 -KHMER CONSONANT SIGN COENG KHO;17D2 1783 -KHMER CONSONANT SIGN COENG NGO;17D2 1784 -KHMER CONSONANT SIGN COENG CA;17D2 1785 -KHMER CONSONANT SIGN COENG CHA;17D2 1786 -KHMER CONSONANT SIGN COENG CO;17D2 1787 -KHMER CONSONANT SIGN COENG CHO;17D2 1788 -KHMER CONSONANT SIGN COENG NYO;17D2 1789 -KHMER CONSONANT SIGN COENG DA;17D2 178A -KHMER CONSONANT SIGN COENG TTHA;17D2 178B -KHMER CONSONANT SIGN COENG DO;17D2 178C -KHMER CONSONANT SIGN COENG TTHO;17D2 178D -KHMER CONSONANT SIGN COENG NA;17D2 178E -KHMER CONSONANT SIGN COENG TA;17D2 178F -KHMER CONSONANT SIGN COENG THA;17D2 1790 -KHMER CONSONANT SIGN COENG TO;17D2 1791 -KHMER CONSONANT SIGN COENG THO;17D2 1792 -KHMER CONSONANT SIGN COENG NO;17D2 1793 -KHMER CONSONANT SIGN COENG BA;17D2 1794 -KHMER CONSONANT SIGN COENG PHA;17D2 1795 -KHMER CONSONANT SIGN COENG PO;17D2 1796 -KHMER CONSONANT SIGN COENG PHO;17D2 1797 -KHMER CONSONANT SIGN COENG MO;17D2 1798 -KHMER CONSONANT SIGN COENG YO;17D2 1799 -KHMER CONSONANT SIGN COENG RO;17D2 179A -KHMER CONSONANT SIGN COENG LO;17D2 179B -KHMER CONSONANT SIGN COENG VO;17D2 179C -KHMER CONSONANT SIGN COENG SHA;17D2 179D -KHMER CONSONANT SIGN COENG SSA;17D2 179E -KHMER CONSONANT SIGN COENG SA;17D2 179F -KHMER CONSONANT SIGN COENG HA;17D2 17A0 -KHMER CONSONANT SIGN COENG LA;17D2 17A1 -KHMER VOWEL SIGN COENG QA;17D2 17A2 -KHMER INDEPENDENT VOWEL SIGN COENG QU;17D2 17A7 -KHMER INDEPENDENT VOWEL SIGN COENG RY;17D2 17AB -KHMER INDEPENDENT VOWEL SIGN COENG RYY;17D2 17AC -KHMER INDEPENDENT VOWEL SIGN COENG QE;17D2 17AF -KHMER VOWEL SIGN OM;17BB 17C6 -KHMER VOWEL SIGN AAM;17B6 17C6 -KATAKANA LETTER AINU P;31F7 309A -MODIFIER LETTER EXTRA-HIGH EXTRA-LOW CONTOUR TONE BAR;02E5 02E9 diff --git a/Master/tlpkg/tlperl.old/lib/unicore/NamesList.txt b/Master/tlpkg/tlperl.old/lib/unicore/NamesList.txt deleted file mode 100644 index 6adb13d920c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/NamesList.txt +++ /dev/null @@ -1,27024 +0,0 @@ -@@@ The Unicode Standard 4.1 -@@@+ U41M050317.lst - Draft Unicode 4.1 names list. - Major merger of post-Unicode 4.0 additions with Amd1 name file (xia050208.lst). - Accumulation of fixes post-Unicode 4.0. (5th collection) - Add alias for 2D53. - Corrected alias for 2697. - Subdivided headers for Modifier Tone Letters. - Add xrefs for 1DC0 and 1DC3. - Updated annotation for 301C. - Add xref to 2026 and 22EE for FE19. - This file is semi-automatically derived from UnicodeData.txt and - a set of manually created annotations using a script to select - or suppress information from the data file. The rules used - for this process are aimed at readability for the human reader, - at the expense of some details; therefore, this file should not - be parsed for machine-readable information. -@+ Copyright (c) 1991-2005 Unicode, Inc. - For terms of use, see http://www.unicode.org/terms_of_use.html -@@ 0000 C0 Controls and Basic Latin (Basic Latin) 007F -@ C0 controls -@+ Alias names are those for ISO/IEC 6429:1992. Commonly used alternative aliases are also shown. -0000 <control> - = NULL -0001 <control> - = START OF HEADING -0002 <control> - = START OF TEXT -0003 <control> - = END OF TEXT -0004 <control> - = END OF TRANSMISSION -0005 <control> - = ENQUIRY -0006 <control> - = ACKNOWLEDGE -0007 <control> - = BELL -0008 <control> - = BACKSPACE -0009 <control> - = CHARACTER TABULATION - = horizontal tabulation (HT), tab -000A <control> - = LINE FEED (LF) - = new line (NL), end of line (EOL) -000B <control> - = LINE TABULATION - = vertical tabulation (VT) -000C <control> - = FORM FEED (FF) -000D <control> - = CARRIAGE RETURN (CR) -000E <control> - = SHIFT OUT -000F <control> - = SHIFT IN -0010 <control> - = DATA LINK ESCAPE -0011 <control> - = DEVICE CONTROL ONE -0012 <control> - = DEVICE CONTROL TWO -0013 <control> - = DEVICE CONTROL THREE -0014 <control> - = DEVICE CONTROL FOUR -0015 <control> - = NEGATIVE ACKNOWLEDGE -0016 <control> - = SYNCHRONOUS IDLE -0017 <control> - = END OF TRANSMISSION BLOCK -0018 <control> - = CANCEL -0019 <control> - = END OF MEDIUM -001A <control> - = SUBSTITUTE - x (replacement character - FFFD) -001B <control> - = ESCAPE -001C <control> - = INFORMATION SEPARATOR FOUR - = file separator (FS) -001D <control> - = INFORMATION SEPARATOR THREE - = group separator (GS) -001E <control> - = INFORMATION SEPARATOR TWO - = record separator (RS) -001F <control> - = INFORMATION SEPARATOR ONE - = unit separator (US) -@ ASCII punctuation and symbols -@+ Based on ISO/IEC 646 from here. -0020 SPACE - * sometimes considered a control code - * other space characters: 2000-200A - x (no-break space - 00A0) - x (zero width space - 200B) - x (word joiner - 2060) - x (ideographic space - 3000) - x (zero width no-break space - FEFF) -0021 EXCLAMATION MARK - = factorial - = bang - x (inverted exclamation mark - 00A1) - x (latin letter retroflex click - 01C3) - x (double exclamation mark - 203C) - x (interrobang - 203D) - x (heavy exclamation mark ornament - 2762) -0022 QUOTATION MARK - * neutral (vertical), used as opening or closing quotation mark - * preferred characters in English for paired quotation marks are 201C & 201D - x (modifier letter double prime - 02BA) - x (combining double acute accent - 030B) - x (combining double vertical line above - 030E) - x (double prime - 2033) - x (ditto mark - 3003) -0023 NUMBER SIGN - = pound sign, hash, crosshatch, octothorpe - x (music sharp sign - 266F) -0024 DOLLAR SIGN - = milreis, escudo - * glyph may have one or two vertical bars - * other currency symbol characters: 20A0-20AF - x (currency sign - 00A4) -0025 PERCENT SIGN - x (arabic percent sign - 066A) - x (per mille sign - 2030) - x (per ten thousand sign - 2031) - x (commercial minus sign - 2052) -0026 AMPERSAND -0027 APOSTROPHE - = APOSTROPHE-QUOTE - = APL quote - * neutral (vertical) glyph with mixed usage - * 2019 is preferred for apostrophe - * preferred characters in English for paired quotation marks are 2018 & 2019 - x (modifier letter prime - 02B9) - x (modifier letter apostrophe - 02BC) - x (modifier letter vertical line - 02C8) - x (combining acute accent - 0301) - x (prime - 2032) -0028 LEFT PARENTHESIS - = OPENING PARENTHESIS -0029 RIGHT PARENTHESIS - = CLOSING PARENTHESIS - * see discussion on semantics of paired bracketing characters -002A ASTERISK - = star (on phone keypads) - x (arabic five pointed star - 066D) - x (low asterisk - 204E) - x (asterisk operator - 2217) - x (heavy asterisk - 2731) -002B PLUS SIGN -002C COMMA - = decimal separator - x (arabic comma - 060C) - x (single low-9 quotation mark - 201A) - x (ideographic comma - 3001) -002D HYPHEN-MINUS - = hyphen or minus sign - * used for either hyphen or minus sign - x (hyphen - 2010) - x (non-breaking hyphen - 2011) - x (figure dash - 2012) - x (en dash - 2013) - x (minus sign - 2212) -002E FULL STOP - = PERIOD - = dot, decimal point - * may be rendered as a raised decimal point in old style numbers - x (arabic full stop - 06D4) - x (ideographic full stop - 3002) -002F SOLIDUS - = SLASH - = virgule, shilling (British) - x (latin letter dental click - 01C0) - x (combining long solidus overlay - 0338) - x (fraction slash - 2044) - x (division slash - 2215) -@ ASCII digits -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 -@ ASCII punctuation and symbols -003A COLON - x (armenian full stop - 0589) - x (hebrew punctuation sof pasuq - 05C3) - x (ratio - 2236) -003B SEMICOLON - * this, and not 037E, is the preferred character for 'Greek question mark' - x (greek question mark - 037E) - x (arabic semicolon - 061B) - x (reversed semicolon - 204F) -003C LESS-THAN SIGN - x (single left-pointing angle quotation mark - 2039) - x (left-pointing angle bracket - 2329) - x (mathematical left angle bracket - 27E8) - x (left angle bracket - 3008) -003D EQUALS SIGN - * other related characters: 2241-2263 - x (not equal to - 2260) - x (identical to - 2261) -003E GREATER-THAN SIGN - x (single right-pointing angle quotation mark - 203A) - x (right-pointing angle bracket - 232A) - x (mathematical right angle bracket - 27E9) - x (right angle bracket - 3009) -003F QUESTION MARK - x (inverted question mark - 00BF) - x (greek question mark - 037E) - x (arabic question mark - 061F) - x (interrobang - 203D) - x (question exclamation mark - 2048) - x (exclamation question mark - 2049) -0040 COMMERCIAL AT - = Klammeraffe (common, humorous slang German name) -@ Uppercase Latin alphabet -0041 LATIN CAPITAL LETTER A -0042 LATIN CAPITAL LETTER B - x (script capital b - 212C) -0043 LATIN CAPITAL LETTER C - x (double-struck capital c - 2102) - x (black-letter capital c - 212D) -0044 LATIN CAPITAL LETTER D -0045 LATIN CAPITAL LETTER E - x (euler constant - 2107) - x (script capital e - 2130) -0046 LATIN CAPITAL LETTER F - x (script capital f - 2131) - x (turned capital f - 2132) -0047 LATIN CAPITAL LETTER G - * invented circa 300 BCE by Spurius Carvilius Ruga, who added a stroke to the letter C -0048 LATIN CAPITAL LETTER H - x (script capital h - 210B) - x (black-letter capital h - 210C) - x (double-struck capital h - 210D) -0049 LATIN CAPITAL LETTER I - * Turkish and Azerbaijani use 0131 for lowercase - x (latin capital letter i with dot above - 0130) - x (cyrillic capital letter byelorussian-ukrainian i - 0406) - x (cyrillic letter palochka - 04C0) - x (script capital i - 2110) - x (black-letter capital i - 2111) - x (roman numeral one - 2160) -004A LATIN CAPITAL LETTER J -004B LATIN CAPITAL LETTER K - x (kelvin sign - 212A) -004C LATIN CAPITAL LETTER L - x (script capital l - 2112) -004D LATIN CAPITAL LETTER M - x (script capital m - 2133) -004E LATIN CAPITAL LETTER N - x (double-struck capital n - 2115) -004F LATIN CAPITAL LETTER O -0050 LATIN CAPITAL LETTER P - x (double-struck capital p - 2119) -0051 LATIN CAPITAL LETTER Q - x (double-struck capital q - 211A) -0052 LATIN CAPITAL LETTER R - x (script capital r - 211B) - x (black-letter capital r - 211C) - x (double-struck capital r - 211D) -0053 LATIN CAPITAL LETTER S -0054 LATIN CAPITAL LETTER T -0055 LATIN CAPITAL LETTER U -0056 LATIN CAPITAL LETTER V -0057 LATIN CAPITAL LETTER W -0058 LATIN CAPITAL LETTER X -0059 LATIN CAPITAL LETTER Y -005A LATIN CAPITAL LETTER Z - x (double-struck capital z - 2124) - x (black-letter capital z - 2128) -@ ASCII punctuation and symbols -005B LEFT SQUARE BRACKET - = OPENING SQUARE BRACKET - * other bracket characters: 3008-301B -005C REVERSE SOLIDUS - = BACKSLASH - x (combining reverse solidus overlay - 20E5) - x (set minus - 2216) -005D RIGHT SQUARE BRACKET - = CLOSING SQUARE BRACKET -005E CIRCUMFLEX ACCENT - * this is a spacing character - x (modifier letter up arrowhead - 02C4) - x (modifier letter circumflex accent - 02C6) - x (combining circumflex accent - 0302) - x (up arrowhead - 2303) -005F LOW LINE - = SPACING UNDERSCORE - * this is a spacing character - x (modifier letter low macron - 02CD) - x (combining macron below - 0331) - x (combining low line - 0332) - x (double low line - 2017) -0060 GRAVE ACCENT - * this is a spacing character - x (modifier letter grave accent - 02CB) - x (combining grave accent - 0300) - x (reversed prime - 2035) -@ Lowercase Latin alphabet -0061 LATIN SMALL LETTER A -0062 LATIN SMALL LETTER B -0063 LATIN SMALL LETTER C -0064 LATIN SMALL LETTER D -0065 LATIN SMALL LETTER E - x (estimated symbol - 212E) - x (script small e - 212F) -0066 LATIN SMALL LETTER F -0067 LATIN SMALL LETTER G - x (latin small letter script g - 0261) - x (script small g - 210A) -0068 LATIN SMALL LETTER H - x (cyrillic small letter shha - 04BB) - x (planck constant - 210E) -0069 LATIN SMALL LETTER I - * Turkish and Azerbaijani use 0130 for uppercase - x (latin small letter dotless i - 0131) -006A LATIN SMALL LETTER J -006B LATIN SMALL LETTER K -006C LATIN SMALL LETTER L - x (script small l - 2113) -006D LATIN SMALL LETTER M -006E LATIN SMALL LETTER N - x (superscript latin small letter n - 207F) -006F LATIN SMALL LETTER O - x (script small o - 2134) -0070 LATIN SMALL LETTER P -0071 LATIN SMALL LETTER Q -0072 LATIN SMALL LETTER R -0073 LATIN SMALL LETTER S -0074 LATIN SMALL LETTER T -0075 LATIN SMALL LETTER U -0076 LATIN SMALL LETTER V -0077 LATIN SMALL LETTER W -0078 LATIN SMALL LETTER X -0079 LATIN SMALL LETTER Y -007A LATIN SMALL LETTER Z - x (latin small letter z with stroke - 01B6) -@ ASCII punctuation and symbols -007B LEFT CURLY BRACKET - = OPENING CURLY BRACKET - = opening brace -007C VERTICAL LINE - = VERTICAL BAR - * used in pairs to indicate absolute value - x (latin letter dental click - 01C0) - x (hebrew punctuation paseq - 05C0) - x (divides - 2223) - x (light vertical bar - 2758) -007D RIGHT CURLY BRACKET - = CLOSING CURLY BRACKET - = closing brace -007E TILDE - * this is a spacing character - x (small tilde - 02DC) - x (combining tilde - 0303) - x (swung dash - 2053) - x (tilde operator - 223C) - x (fullwidth tilde - FF5E) -@ Control character -007F <control> - = DELETE -@@ 0080 C1 Controls and Latin-1 Supplement (Latin-1 Supplement) 00FF -@ C1 controls -@+ Alias names are those for ISO/IEC 6429:1992. -0080 <control> -0081 <control> -0082 <control> - = BREAK PERMITTED HERE -0083 <control> - = NO BREAK HERE -0084 <control> -0085 <control> - = NEXT LINE (NEL) -0086 <control> - = START OF SELECTED AREA -0087 <control> - = END OF SELECTED AREA -0088 <control> - = CHARACTER TABULATION SET -0089 <control> - = CHARACTER TABULATION WITH JUSTIFICATION -008A <control> - = LINE TABULATION SET -008B <control> - = PARTIAL LINE FORWARD -008C <control> - = PARTIAL LINE BACKWARD -008D <control> - = REVERSE LINE FEED -008E <control> - = SINGLE SHIFT TWO -008F <control> - = SINGLE SHIFT THREE -0090 <control> - = DEVICE CONTROL STRING -0091 <control> - = PRIVATE USE ONE -0092 <control> - = PRIVATE USE TWO -0093 <control> - = SET TRANSMIT STATE -0094 <control> - = CANCEL CHARACTER -0095 <control> - = MESSAGE WAITING -0096 <control> - = START OF GUARDED AREA -0097 <control> - = END OF GUARDED AREA -0098 <control> - = START OF STRING -0099 <control> -009A <control> - = SINGLE CHARACTER INTRODUCER -009B <control> - = CONTROL SEQUENCE INTRODUCER -009C <control> - = STRING TERMINATOR -009D <control> - = OPERATING SYSTEM COMMAND -009E <control> - = PRIVACY MESSAGE -009F <control> - = APPLICATION PROGRAM COMMAND -@ Latin-1 punctuation and symbols -@+ Based on ISO/IEC 8859-1 (aka Latin-1) from here. -00A0 NO-BREAK SPACE - = NBSP - x (space - 0020) - x (figure space - 2007) - x (narrow no-break space - 202F) - x (word joiner - 2060) - x (zero width no-break space - FEFF) - # <noBreak> 0020 -00A1 INVERTED EXCLAMATION MARK - * Spanish, Asturian, Galician - x (exclamation mark - 0021) -00A2 CENT SIGN -00A3 POUND SIGN - = pound sterling, Irish punt, Italian lira, Turkish lira, etc. - x (lira sign - 20A4) -00A4 CURRENCY SIGN - * other currency symbol characters: 20A0-20AF - x (dollar sign - 0024) -00A5 YEN SIGN - = yuan sign - * glyph may have one or two crossbars -00A6 BROKEN BAR - = BROKEN VERTICAL BAR - = parted rule (in typography) -00A7 SECTION SIGN - * paragraph sign in some European usage -00A8 DIAERESIS - * this is a spacing character - x (combining diaeresis - 0308) - # 0020 0308 -00A9 COPYRIGHT SIGN - x (sound recording copyright - 2117) -00AA FEMININE ORDINAL INDICATOR - * Spanish - # <super> 0061 -00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK * - = LEFT POINTING GUILLEMET - = chevrons (in typography) - * usually opening, sometimes closing - x (much less-than - 226A) - x (left double angle bracket - 300A) -00AC NOT SIGN - = angled dash (in typography) - x (reversed not sign - 2310) -00AD SOFT HYPHEN - = SHY - = discretionary hyphen - x (mongolian todo soft hyphen - 1806) -00AE REGISTERED SIGN - = REGISTERED TRADE MARK SIGN -00AF MACRON - = overline, APL overbar - * this is a spacing character - x (modifier letter macron - 02C9) - x (combining macron - 0304) - x (combining overline - 0305) - # 0020 0304 -00B0 DEGREE SIGN - * this is a spacing character - x (ring above - 02DA) - x (combining ring above - 030A) - x (superscript zero - 2070) - x (ring operator - 2218) -00B1 PLUS-MINUS SIGN - x (minus-or-plus sign - 2213) -00B2 SUPERSCRIPT TWO - = squared - * other superscript digit characters: 2070-2079 - x (superscript one - 00B9) - # <super> 0032 -00B3 SUPERSCRIPT THREE - = cubed - x (superscript one - 00B9) - # <super> 0033 -00B4 ACUTE ACCENT - * this is a spacing character - x (modifier letter prime - 02B9) - x (modifier letter acute accent - 02CA) - x (combining acute accent - 0301) - x (prime - 2032) - # 0020 0301 -00B5 MICRO SIGN - # 03BC greek small letter mu -00B6 PILCROW SIGN - = PARAGRAPH SIGN - * section sign in some European usage - x (reversed pilcrow sign - 204B) - x (curved stem paragraph sign ornament - 2761) -00B7 MIDDLE DOT - = midpoint (in typography) - = Georgian comma - = Greek middle dot (ano teleia) - x (greek ano teleia - 0387) - x (bullet - 2022) - x (one dot leader - 2024) - x (hyphenation point - 2027) - x (bullet operator - 2219) - x (dot operator - 22C5) - x (katakana middle dot - 30FB) -00B8 CEDILLA - * this is a spacing character - * other spacing accent characters: 02D8-02DB - x (combining cedilla - 0327) - # 0020 0327 -00B9 SUPERSCRIPT ONE - x (superscript two - 00B2) - x (superscript three - 00B3) - # <super> 0031 -00BA MASCULINE ORDINAL INDICATOR - * Spanish - # <super> 006F -00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK * - = RIGHT POINTING GUILLEMET - * usually closing, sometimes opening - x (much greater-than - 226B) - x (right double angle bracket - 300B) -00BC VULGAR FRACTION ONE QUARTER - * bar may be horizontal or slanted - * other fraction characters: 2153-215E - # <fraction> 0031 2044 0034 -00BD VULGAR FRACTION ONE HALF - * bar may be horizontal or slanted - # <fraction> 0031 2044 0032 -00BE VULGAR FRACTION THREE QUARTERS - * bar may be horizontal or slanted - # <fraction> 0033 2044 0034 -00BF INVERTED QUESTION MARK - = turned question mark - * Spanish - x (question mark - 003F) -@ Letters -00C0 LATIN CAPITAL LETTER A WITH GRAVE - : 0041 0300 -00C1 LATIN CAPITAL LETTER A WITH ACUTE - : 0041 0301 -00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX - : 0041 0302 -00C3 LATIN CAPITAL LETTER A WITH TILDE - : 0041 0303 -00C4 LATIN CAPITAL LETTER A WITH DIAERESIS - : 0041 0308 -00C5 LATIN CAPITAL LETTER A WITH RING ABOVE - x (angstrom sign - 212B) - : 0041 030A -00C6 LATIN CAPITAL LETTER AE (ash) * - = LATIN CAPITAL LIGATURE AE -00C7 LATIN CAPITAL LETTER C WITH CEDILLA - : 0043 0327 -00C8 LATIN CAPITAL LETTER E WITH GRAVE - : 0045 0300 -00C9 LATIN CAPITAL LETTER E WITH ACUTE - : 0045 0301 -00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX - : 0045 0302 -00CB LATIN CAPITAL LETTER E WITH DIAERESIS - : 0045 0308 -00CC LATIN CAPITAL LETTER I WITH GRAVE - : 0049 0300 -00CD LATIN CAPITAL LETTER I WITH ACUTE - : 0049 0301 -00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX - : 0049 0302 -00CF LATIN CAPITAL LETTER I WITH DIAERESIS - : 0049 0308 -00D0 LATIN CAPITAL LETTER ETH (Icelandic) - x (latin small letter eth - 00F0) - x (latin capital letter d with stroke - 0110) - x (latin capital letter african d - 0189) -00D1 LATIN CAPITAL LETTER N WITH TILDE - : 004E 0303 -00D2 LATIN CAPITAL LETTER O WITH GRAVE - : 004F 0300 -00D3 LATIN CAPITAL LETTER O WITH ACUTE - : 004F 0301 -00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX - : 004F 0302 -00D5 LATIN CAPITAL LETTER O WITH TILDE - : 004F 0303 -00D6 LATIN CAPITAL LETTER O WITH DIAERESIS - : 004F 0308 -@ Mathematical operator -00D7 MULTIPLICATION SIGN - = z notation Cartesian product -@ Letters -00D8 LATIN CAPITAL LETTER O WITH STROKE - = LATIN CAPITAL LETTER O SLASH - x (empty set - 2205) -00D9 LATIN CAPITAL LETTER U WITH GRAVE - : 0055 0300 -00DA LATIN CAPITAL LETTER U WITH ACUTE - : 0055 0301 -00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX - : 0055 0302 -00DC LATIN CAPITAL LETTER U WITH DIAERESIS - : 0055 0308 -00DD LATIN CAPITAL LETTER Y WITH ACUTE - : 0059 0301 -00DE LATIN CAPITAL LETTER THORN (Icelandic) -00DF LATIN SMALL LETTER SHARP S (German) - = Eszett - * German - * uppercase is "SS" - * in origin a ligature of 017F and 0073 - x (greek small letter beta - 03B2) -00E0 LATIN SMALL LETTER A WITH GRAVE - : 0061 0300 -00E1 LATIN SMALL LETTER A WITH ACUTE - : 0061 0301 -00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX - : 0061 0302 -00E3 LATIN SMALL LETTER A WITH TILDE - * Portuguese - : 0061 0303 -00E4 LATIN SMALL LETTER A WITH DIAERESIS - : 0061 0308 -00E5 LATIN SMALL LETTER A WITH RING ABOVE - * Danish, Norwegian, Swedish, Walloon - : 0061 030A -00E6 LATIN SMALL LETTER AE (ash) * - = LATIN SMALL LIGATURE AE - = ash (from Old English æsc) - * Danish, Norwegian, Icelandic, Faroese, Old English, French, IPA - x (latin small ligature oe - 0153) - x (cyrillic small ligature a ie - 04D5) -00E7 LATIN SMALL LETTER C WITH CEDILLA - : 0063 0327 -00E8 LATIN SMALL LETTER E WITH GRAVE - : 0065 0300 -00E9 LATIN SMALL LETTER E WITH ACUTE - : 0065 0301 -00EA LATIN SMALL LETTER E WITH CIRCUMFLEX - : 0065 0302 -00EB LATIN SMALL LETTER E WITH DIAERESIS - : 0065 0308 -00EC LATIN SMALL LETTER I WITH GRAVE - * Italian, Malagasy - : 0069 0300 -00ED LATIN SMALL LETTER I WITH ACUTE - : 0069 0301 -00EE LATIN SMALL LETTER I WITH CIRCUMFLEX - : 0069 0302 -00EF LATIN SMALL LETTER I WITH DIAERESIS - : 0069 0308 -00F0 LATIN SMALL LETTER ETH (Icelandic) - * Icelandic, Faroese, Old English, IPA - x (latin capital letter eth - 00D0) - x (greek small letter delta - 03B4) - x (partial differential - 2202) -00F1 LATIN SMALL LETTER N WITH TILDE - : 006E 0303 -00F2 LATIN SMALL LETTER O WITH GRAVE - : 006F 0300 -00F3 LATIN SMALL LETTER O WITH ACUTE - : 006F 0301 -00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX - : 006F 0302 -00F5 LATIN SMALL LETTER O WITH TILDE - * Portuguese, Estonian - : 006F 0303 -00F6 LATIN SMALL LETTER O WITH DIAERESIS - : 006F 0308 -@ Mathematical operator -00F7 DIVISION SIGN - x (division slash - 2215) - x (divides - 2223) -@ Letters -00F8 LATIN SMALL LETTER O WITH STROKE - = LATIN SMALL LETTER O SLASH - * Danish, Norwegian, Faroese, IPA -00F9 LATIN SMALL LETTER U WITH GRAVE - * French, Italian - : 0075 0300 -00FA LATIN SMALL LETTER U WITH ACUTE - : 0075 0301 -00FB LATIN SMALL LETTER U WITH CIRCUMFLEX - : 0075 0302 -00FC LATIN SMALL LETTER U WITH DIAERESIS - : 0075 0308 -00FD LATIN SMALL LETTER Y WITH ACUTE - * Czech, Slovak, Icelandic, Faroese, Welsh, Malagasy - : 0079 0301 -00FE LATIN SMALL LETTER THORN (Icelandic) - * Icelandic, Old English, phonetics - * Runic letter borrowed into Latin script - x (runic letter thurisaz thurs thorn - 16A6) -00FF LATIN SMALL LETTER Y WITH DIAERESIS - * French - x (latin capital letter y with diaeresis - 0178) - : 0079 0308 -@@ 0100 Latin Extended-A 017F -@ European Latin -0100 LATIN CAPITAL LETTER A WITH MACRON - : 0041 0304 -0101 LATIN SMALL LETTER A WITH MACRON - * Latvian, Latin, ... - : 0061 0304 -0102 LATIN CAPITAL LETTER A WITH BREVE - : 0041 0306 -0103 LATIN SMALL LETTER A WITH BREVE - * Romanian, Vietnamese, Latin, ... - : 0061 0306 -0104 LATIN CAPITAL LETTER A WITH OGONEK - : 0041 0328 -0105 LATIN SMALL LETTER A WITH OGONEK - * Polish, Lithuanian, ... - : 0061 0328 -0106 LATIN CAPITAL LETTER C WITH ACUTE - : 0043 0301 -0107 LATIN SMALL LETTER C WITH ACUTE - * Polish, Croatian, ... - x (cyrillic small letter tshe - 045B) - : 0063 0301 -0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX - : 0043 0302 -0109 LATIN SMALL LETTER C WITH CIRCUMFLEX - * Esperanto - : 0063 0302 -010A LATIN CAPITAL LETTER C WITH DOT ABOVE - : 0043 0307 -010B LATIN SMALL LETTER C WITH DOT ABOVE - * Maltese, Irish Gaelic (old orthography) - : 0063 0307 -010C LATIN CAPITAL LETTER C WITH CARON - : 0043 030C -010D LATIN SMALL LETTER C WITH CARON - * Czech, Slovak, Slovenian, and many other languages - : 0063 030C -010E LATIN CAPITAL LETTER D WITH CARON - * the form using caron/hacek is preferred in all contexts - : 0044 030C -010F LATIN SMALL LETTER D WITH CARON - * Czech, Slovak - * the form using apostrophe is preferred in typesetting - : 0064 030C -0110 LATIN CAPITAL LETTER D WITH STROKE - x (latin capital letter eth - 00D0) - x (latin small letter d with stroke - 0111) - x (latin capital letter african d - 0189) -0111 LATIN SMALL LETTER D WITH STROKE - * Croatian, Vietnamese, Sami - * an alternate glyph with the stroke through the bowl is used in Americanist orthographies - x (latin capital letter d with stroke - 0110) - x (cyrillic small letter dje - 0452) -0112 LATIN CAPITAL LETTER E WITH MACRON - : 0045 0304 -0113 LATIN SMALL LETTER E WITH MACRON - * Latvian, Latin, ... - : 0065 0304 -0114 LATIN CAPITAL LETTER E WITH BREVE - : 0045 0306 -0115 LATIN SMALL LETTER E WITH BREVE - * Malay, Latin, ... - : 0065 0306 -0116 LATIN CAPITAL LETTER E WITH DOT ABOVE - : 0045 0307 -0117 LATIN SMALL LETTER E WITH DOT ABOVE - * Lithuanian - : 0065 0307 -0118 LATIN CAPITAL LETTER E WITH OGONEK - : 0045 0328 -0119 LATIN SMALL LETTER E WITH OGONEK - * Polish, Lithuanian, ... - : 0065 0328 -011A LATIN CAPITAL LETTER E WITH CARON - : 0045 030C -011B LATIN SMALL LETTER E WITH CARON - * Czech, ... - : 0065 030C -011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX - : 0047 0302 -011D LATIN SMALL LETTER G WITH CIRCUMFLEX - * Esperanto - : 0067 0302 -011E LATIN CAPITAL LETTER G WITH BREVE - : 0047 0306 -011F LATIN SMALL LETTER G WITH BREVE - * Turkish, Azerbaijani - x (latin small letter g with caron - 01E7) - : 0067 0306 -0120 LATIN CAPITAL LETTER G WITH DOT ABOVE - : 0047 0307 -0121 LATIN SMALL LETTER G WITH DOT ABOVE - * Maltese, Irish Gaelic (old orthography) - : 0067 0307 -0122 LATIN CAPITAL LETTER G WITH CEDILLA - : 0047 0327 -0123 LATIN SMALL LETTER G WITH CEDILLA - * Latvian - * there are three major glyph variants - : 0067 0327 -0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX - : 0048 0302 -0125 LATIN SMALL LETTER H WITH CIRCUMFLEX - * Esperanto - : 0068 0302 -0126 LATIN CAPITAL LETTER H WITH STROKE -0127 LATIN SMALL LETTER H WITH STROKE - * Maltese, IPA, ... - x (cyrillic small letter tshe - 045B) - x (planck constant over two pi - 210F) -0128 LATIN CAPITAL LETTER I WITH TILDE - : 0049 0303 -0129 LATIN SMALL LETTER I WITH TILDE - * Greenlandic (old orthography) - : 0069 0303 -012A LATIN CAPITAL LETTER I WITH MACRON - : 0049 0304 -012B LATIN SMALL LETTER I WITH MACRON - * Latvian, Latin, ... - : 0069 0304 -012C LATIN CAPITAL LETTER I WITH BREVE - : 0049 0306 -012D LATIN SMALL LETTER I WITH BREVE - * Latin, ... - : 0069 0306 -012E LATIN CAPITAL LETTER I WITH OGONEK - : 0049 0328 -012F LATIN SMALL LETTER I WITH OGONEK - * Lithuanian, ... - : 0069 0328 -0130 LATIN CAPITAL LETTER I WITH DOT ABOVE - = LATIN CAPITAL LETTER I DOT - * Turkish, Azerbaijani - * lowercase is 0069 - x (latin capital letter i - 0049) - : 0049 0307 -0131 LATIN SMALL LETTER DOTLESS I - * Turkish, Azerbaijani - * uppercase is 0049 - x (latin small letter i - 0069) -0132 LATIN CAPITAL LIGATURE IJ - # 0049 004A -0133 LATIN SMALL LIGATURE IJ - * Dutch - # 0069 006A -0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX - : 004A 0302 -0135 LATIN SMALL LETTER J WITH CIRCUMFLEX - * Esperanto - : 006A 0302 -0136 LATIN CAPITAL LETTER K WITH CEDILLA - : 004B 0327 -0137 LATIN SMALL LETTER K WITH CEDILLA - * Latvian - : 006B 0327 -0138 LATIN SMALL LETTER KRA (Greenlandic) - * Greenlandic (old orthography) -0139 LATIN CAPITAL LETTER L WITH ACUTE - : 004C 0301 -013A LATIN SMALL LETTER L WITH ACUTE - * Slovak - : 006C 0301 -013B LATIN CAPITAL LETTER L WITH CEDILLA - : 004C 0327 -013C LATIN SMALL LETTER L WITH CEDILLA - * Latvian - : 006C 0327 -013D LATIN CAPITAL LETTER L WITH CARON - * the form using apostrophe is preferred in typesetting - : 004C 030C -013E LATIN SMALL LETTER L WITH CARON - * Slovak - * the form using apostrophe is preferred in typesetting - : 006C 030C -013F LATIN CAPITAL LETTER L WITH MIDDLE DOT - * some fonts show the middle dot inside the L, but the preferred form has the dot following the L - # 004C 00B7 -0140 LATIN SMALL LETTER L WITH MIDDLE DOT - * Catalan - # 006C 00B7 -0141 LATIN CAPITAL LETTER L WITH STROKE -0142 LATIN SMALL LETTER L WITH STROKE - * Polish, ... - x (latin small letter l with bar - 019A) -0143 LATIN CAPITAL LETTER N WITH ACUTE - : 004E 0301 -0144 LATIN SMALL LETTER N WITH ACUTE - * Polish, ... - : 006E 0301 -0145 LATIN CAPITAL LETTER N WITH CEDILLA - : 004E 0327 -0146 LATIN SMALL LETTER N WITH CEDILLA - * Latvian - : 006E 0327 -0147 LATIN CAPITAL LETTER N WITH CARON - : 004E 030C -0148 LATIN SMALL LETTER N WITH CARON - * Czech, Slovak - : 006E 030C -0149 LATIN SMALL LETTER N PRECEDED BY APOSTROPHE - = LATIN SMALL LETTER APOSTROPHE N - * Afrikaans - * this is not actually a single letter - # 02BC 006E -014A LATIN CAPITAL LETTER ENG (Sami) - * glyph may also have appearance of large form of the small letter -014B LATIN SMALL LETTER ENG (Sami) - * Sami, Mende, IPA, ... -014C LATIN CAPITAL LETTER O WITH MACRON - : 004F 0304 -014D LATIN SMALL LETTER O WITH MACRON - * Latvian, Latin, ... - : 006F 0304 -014E LATIN CAPITAL LETTER O WITH BREVE - : 004F 0306 -014F LATIN SMALL LETTER O WITH BREVE - * Latin - : 006F 0306 -0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE - : 004F 030B -0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE - * Hungarian - : 006F 030B -0152 LATIN CAPITAL LIGATURE OE -0153 LATIN SMALL LIGATURE OE - = LATIN SMALL LETTER O E - = ethel (from Old English eðel) - * French, IPA, Old Icelandic, Old English, ... - x (latin small letter ae - 00E6) - x (latin letter small capital oe - 0276) -0154 LATIN CAPITAL LETTER R WITH ACUTE - : 0052 0301 -0155 LATIN SMALL LETTER R WITH ACUTE - * Slovak, ... - : 0072 0301 -0156 LATIN CAPITAL LETTER R WITH CEDILLA - : 0052 0327 -0157 LATIN SMALL LETTER R WITH CEDILLA - * Latvian - : 0072 0327 -0158 LATIN CAPITAL LETTER R WITH CARON - : 0052 030C -0159 LATIN SMALL LETTER R WITH CARON - * Czech, ... - : 0072 030C -015A LATIN CAPITAL LETTER S WITH ACUTE - : 0053 0301 -015B LATIN SMALL LETTER S WITH ACUTE - * Polish, Indic transliteration, ... - : 0073 0301 -015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX - : 0053 0302 -015D LATIN SMALL LETTER S WITH CIRCUMFLEX - * Esperanto - : 0073 0302 -015E LATIN CAPITAL LETTER S WITH CEDILLA * - : 0053 0327 -015F LATIN SMALL LETTER S WITH CEDILLA * - * Turkish, Azerbaijani, Romanian, ... - * this character is used in both Turkish and Romanian data - * a glyph variant with comma below is preferred for Romanian - x (latin small letter s with comma below - 0219) - : 0073 0327 -0160 LATIN CAPITAL LETTER S WITH CARON - : 0053 030C -0161 LATIN SMALL LETTER S WITH CARON - * Czech, Estonian, Finnish, Slovak, and many other languages - : 0073 030C -0162 LATIN CAPITAL LETTER T WITH CEDILLA * - : 0054 0327 -0163 LATIN SMALL LETTER T WITH CEDILLA * - * Romanian, Semitic transliteration, ... - * this character is used in Romanian data - * a glyph variant with comma below is preferred for Romanian - x (latin small letter t with comma below - 021B) - : 0074 0327 -0164 LATIN CAPITAL LETTER T WITH CARON - * the form using caron/hacek is preferred in all contexts - : 0054 030C -0165 LATIN SMALL LETTER T WITH CARON - * Czech, Slovak - * the form using apostrophe is preferred in typesetting - : 0074 030C -0166 LATIN CAPITAL LETTER T WITH STROKE -0167 LATIN SMALL LETTER T WITH STROKE - * Sami -0168 LATIN CAPITAL LETTER U WITH TILDE - : 0055 0303 -0169 LATIN SMALL LETTER U WITH TILDE - * Greenlandic (old orthography) - : 0075 0303 -016A LATIN CAPITAL LETTER U WITH MACRON - : 0055 0304 -016B LATIN SMALL LETTER U WITH MACRON - * Latvian, Lithuanian, Latin, ... - : 0075 0304 -016C LATIN CAPITAL LETTER U WITH BREVE - : 0055 0306 -016D LATIN SMALL LETTER U WITH BREVE - * Latin, Esperanto, ... - : 0075 0306 -016E LATIN CAPITAL LETTER U WITH RING ABOVE - : 0055 030A -016F LATIN SMALL LETTER U WITH RING ABOVE - * Czech, ... - : 0075 030A -0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE - : 0055 030B -0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE - * Hungarian - : 0075 030B -0172 LATIN CAPITAL LETTER U WITH OGONEK - : 0055 0328 -0173 LATIN SMALL LETTER U WITH OGONEK - * Lithuanian - : 0075 0328 -0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX - : 0057 0302 -0175 LATIN SMALL LETTER W WITH CIRCUMFLEX - * Welsh - : 0077 0302 -0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX - : 0059 0302 -0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX - * Welsh - : 0079 0302 -0178 LATIN CAPITAL LETTER Y WITH DIAERESIS - * French, Igbo - x (latin small letter y with diaeresis - 00FF) - : 0059 0308 -0179 LATIN CAPITAL LETTER Z WITH ACUTE - : 005A 0301 -017A LATIN SMALL LETTER Z WITH ACUTE - * Polish, ... - : 007A 0301 -017B LATIN CAPITAL LETTER Z WITH DOT ABOVE - : 005A 0307 -017C LATIN SMALL LETTER Z WITH DOT ABOVE - * Polish, ... - : 007A 0307 -017D LATIN CAPITAL LETTER Z WITH CARON - : 005A 030C -017E LATIN SMALL LETTER Z WITH CARON - * Czech, Estonian, Finnish, Slovak, Slovenian, and many other languages - : 007A 030C -017F LATIN SMALL LETTER LONG S - * in common use in Roman types until the 18th century - * in current use in Fraktur and Gaelic types - # 0073 latin small letter s -@@ 0180 Latin Extended-B 024F -@ Latin Extended-B -0180 LATIN SMALL LETTER B WITH STROKE - * Americanist and Indo-Europeanist usage for phonetic beta - * Americanist orthographies use an alternate glyph with the stroke through the bowl - * Old Saxon - x (greek small letter beta - 03B2) - x (blank symbol - 2422) -0181 LATIN CAPITAL LETTER B WITH HOOK - * Zulu, Pan-Nigerian alphabet - x (latin small letter b with hook - 0253) -0182 LATIN CAPITAL LETTER B WITH TOPBAR -0183 LATIN SMALL LETTER B WITH TOPBAR - * Zhuang - * former Soviet minority language scripts - x (cyrillic capital letter be - 0411) -0184 LATIN CAPITAL LETTER TONE SIX -0185 LATIN SMALL LETTER TONE SIX - * Zhuang - * Zhuang tone three is Cyrillic ze - * Zhuang tone four is Cyrillic che - x (latin small letter tone two - 01A8) - x (latin small letter tone five - 01BD) - x (cyrillic small letter ze - 0437) - x (cyrillic small letter che - 0447) - x (cyrillic small letter soft sign - 044C) -0186 LATIN CAPITAL LETTER OPEN O - * typographically a turned C - * African - x (latin small letter open o - 0254) -0187 LATIN CAPITAL LETTER C WITH HOOK -0188 LATIN SMALL LETTER C WITH HOOK - * African -0189 LATIN CAPITAL LETTER AFRICAN D * - * Ewe - x (latin capital letter eth - 00D0) - x (latin capital letter d with stroke - 0110) - x (latin small letter d with tail - 0256) -018A LATIN CAPITAL LETTER D WITH HOOK - * Pan-Nigerian alphabet - x (latin small letter d with hook - 0257) -018B LATIN CAPITAL LETTER D WITH TOPBAR -018C LATIN SMALL LETTER D WITH TOPBAR - * former-Soviet minority language scripts -018D LATIN SMALL LETTER TURNED DELTA - = reversed Polish-hook o - * archaic phonetic for labialized alveolar fricative - * recommended spellings 007A 02B7 or 007A 032B -018E LATIN CAPITAL LETTER REVERSED E - = LATIN CAPITAL LETTER TURNED E - * Pan-Nigerian alphabet - * lowercase is 01DD -018F LATIN CAPITAL LETTER SCHWA - * Azerbaijani, ... - x (latin small letter schwa - 0259) - x (cyrillic capital letter schwa - 04D8) -0190 LATIN CAPITAL LETTER OPEN E - = LATIN CAPITAL LETTER EPSILON - * African - x (latin small letter open e - 025B) - x (euler constant - 2107) -0191 LATIN CAPITAL LETTER F WITH HOOK - * African -0192 LATIN SMALL LETTER F WITH HOOK - = LATIN SMALL LETTER SCRIPT F - = Florin currency symbol (Netherlands) - = function symbol - = abbreviation convention for folder -0193 LATIN CAPITAL LETTER G WITH HOOK - * African - x (latin small letter g with hook - 0260) -0194 LATIN CAPITAL LETTER GAMMA - * African - x (latin small letter gamma - 0263) -0195 LATIN SMALL LETTER HV (hwair) - * Gothic transliteration - * uppercase is 01F6 -0196 LATIN CAPITAL LETTER IOTA - * African - x (latin small letter iota - 0269) -0197 LATIN CAPITAL LETTER I WITH STROKE - = barred i, i bar - * African - * ISO 6438 gives lowercase as 026A, not 0268 - x (latin letter small capital i - 026A) -0198 LATIN CAPITAL LETTER K WITH HOOK -0199 LATIN SMALL LETTER K WITH HOOK - * Hausa, Pan-Nigerian alphabet -019A LATIN SMALL LETTER L WITH BAR - = barred l - * Americanist phonetic usage for 026C - x (latin small letter l with stroke - 0142) -019B LATIN SMALL LETTER LAMBDA WITH STROKE - = barred lambda, lambda bar - * Americanist phonetic usage -019C LATIN CAPITAL LETTER TURNED M - * Zhuang - x (latin small letter turned m - 026F) -019D LATIN CAPITAL LETTER N WITH LEFT HOOK - * African - x (latin small letter n with left hook - 0272) -019E LATIN SMALL LETTER N WITH LONG RIGHT LEG - * archaic phonetic for Japanese 3093 - * recommended spelling for syllabic n is 006E 0329 - * Lakota (indicates nasalization of vowel) - x (latin capital letter n with long right leg - 0220) -019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE * - = barred o, o bar - * lowercase is 0275 - * African - x (cyrillic capital letter barred o - 04E8) -01A0 LATIN CAPITAL LETTER O WITH HORN - : 004F 031B -01A1 LATIN SMALL LETTER O WITH HORN - * Vietnamese - : 006F 031B -01A2 LATIN CAPITAL LETTER OI (gha) -01A3 LATIN SMALL LETTER OI (gha) - = gha - * Pan-Turkic Latin alphabets -01A4 LATIN CAPITAL LETTER P WITH HOOK -01A5 LATIN SMALL LETTER P WITH HOOK - * African -01A6 LATIN LETTER YR * - * Old Norse - * from German Standard DIN 31624 and ISO 5246-2 - * lowercase is 0280 -01A7 LATIN CAPITAL LETTER TONE TWO -01A8 LATIN SMALL LETTER TONE TWO - * Zhuang - * typographically a reversed S - x (latin small letter tone six - 0185) -01A9 LATIN CAPITAL LETTER ESH - * African - x (latin small letter esh - 0283) - x (greek capital letter sigma - 03A3) -01AA LATIN LETTER REVERSED ESH LOOP - * archaic phonetic for labialized palatoalveolar or palatal fricative - * Twi - * recommended spellings 0283 02B7, 00E7 02B7, 0068 0265, etc. -01AB LATIN SMALL LETTER T WITH PALATAL HOOK - * archaic phonetic for palatalized alveolar or dental stop - * recommended spelling 0074 02B2 -01AC LATIN CAPITAL LETTER T WITH HOOK - * a glyph variant with hook at the right also occurs -01AD LATIN SMALL LETTER T WITH HOOK - * African -01AE LATIN CAPITAL LETTER T WITH RETROFLEX HOOK - * African - x (latin small letter t with retroflex hook - 0288) -01AF LATIN CAPITAL LETTER U WITH HORN - : 0055 031B -01B0 LATIN SMALL LETTER U WITH HORN - * Vietnamese - : 0075 031B -01B1 LATIN CAPITAL LETTER UPSILON - * African - * typographically based on turned capital Greek omega - x (latin small letter upsilon - 028A) - x (inverted ohm sign - 2127) -01B2 LATIN CAPITAL LETTER V WITH HOOK - = LATIN CAPITAL LETTER SCRIPT V - * African - x (latin small letter v with hook - 028B) -01B3 LATIN CAPITAL LETTER Y WITH HOOK - * a glyph variant with hook at the right also occurs -01B4 LATIN SMALL LETTER Y WITH HOOK - * Bini, Esoko, and other Edo languages in West Africa -01B5 LATIN CAPITAL LETTER Z WITH STROKE -01B6 LATIN SMALL LETTER Z WITH STROKE - = barred z, z bar - * Pan-Turkic Latin orthography - * handwritten variant of Latin "z" - x (latin small letter z - 007A) -01B7 LATIN CAPITAL LETTER EZH - * African, Skolt Sami - * lowercase is 0292 - x (latin capital letter yogh - 021C) - x (cyrillic capital letter abkhasian dze - 04E0) -01B8 LATIN CAPITAL LETTER EZH REVERSED -01B9 LATIN SMALL LETTER EZH REVERSED - * archaic phonetic for voiced pharyngeal fricative - * sometimes typographically rendered with a turned digit 3 - * recommended spelling 0295 - x (latin letter pharyngeal voiced fricative - 0295) - x (arabic letter ain - 0639) -01BA LATIN SMALL LETTER EZH WITH TAIL - * archaic phonetic for labialized voiced palatoalveolar or palatal fricative - * Twi - * recommended spellings 0292 02B7 or 006A 02B7 -01BB LATIN LETTER TWO WITH STROKE - * archaic phonetic for [dz] affricate - * recommended spellings 0292 or 0064 007A -01BC LATIN CAPITAL LETTER TONE FIVE -01BD LATIN SMALL LETTER TONE FIVE - * Zhuang - x (latin small letter tone six - 0185) -01BE LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE - * archaic phonetic for [ts] affricate - * recommended spelling 0074 0073 - * letter form is actually derived from ligation of ts, rather than inverted glottal stop -01BF LATIN LETTER WYNN - = wen - * Runic letter borrowed into Latin script - * replaced by "w" in modern transcriptions of Old English - * uppercase is 01F7 - x (runic letter wunjo wynn w - 16B9) -@ African letters for clicks -01C0 LATIN LETTER DENTAL CLICK - = pipe - * Khoisan tradition - * "c" in Zulu orthography - x (solidus - 002F) - x (vertical line - 007C) - x (latin small letter turned t - 0287) - x (divides - 2223) -01C1 LATIN LETTER LATERAL CLICK - = double pipe - * Khoisan tradition - * "x" in Zulu orthography - x (latin letter inverted glottal stop - 0296) - x (parallel to - 2225) -01C2 LATIN LETTER ALVEOLAR CLICK - = double-barred pipe - * Khoisan tradition - x (not equal to - 2260) -01C3 LATIN LETTER RETROFLEX CLICK - = LATIN LETTER EXCLAMATION MARK - * Khoisan tradition - * "q" in Zulu orthography - x (exclamation mark - 0021) - x (latin letter stretched c - 0297) -@ Croatian digraphs matching Serbian Cyrillic letters -01C4 LATIN CAPITAL LETTER DZ WITH CARON - # 0044 017D -01C5 LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON - # 0044 017E -01C6 LATIN SMALL LETTER DZ WITH CARON - x (cyrillic small letter dzhe - 045F) - # 0064 017E -01C7 LATIN CAPITAL LETTER LJ - # 004C 004A -01C8 LATIN CAPITAL LETTER L WITH SMALL LETTER J - # 004C 006A -01C9 LATIN SMALL LETTER LJ - x (cyrillic small letter lje - 0459) - # 006C 006A -01CA LATIN CAPITAL LETTER NJ - # 004E 004A -01CB LATIN CAPITAL LETTER N WITH SMALL LETTER J - # 004E 006A -01CC LATIN SMALL LETTER NJ - x (cyrillic small letter nje - 045A) - # 006E 006A -@ Pinyin diacritic-vowel combinations -01CD LATIN CAPITAL LETTER A WITH CARON - : 0041 030C -01CE LATIN SMALL LETTER A WITH CARON - * Pinyin third tone - : 0061 030C -01CF LATIN CAPITAL LETTER I WITH CARON - : 0049 030C -01D0 LATIN SMALL LETTER I WITH CARON - * Pinyin third tone - : 0069 030C -01D1 LATIN CAPITAL LETTER O WITH CARON - : 004F 030C -01D2 LATIN SMALL LETTER O WITH CARON - * Pinyin third tone - : 006F 030C -01D3 LATIN CAPITAL LETTER U WITH CARON - : 0055 030C -01D4 LATIN SMALL LETTER U WITH CARON - * Pinyin third tone - : 0075 030C -01D5 LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON - : 00DC 0304 -01D6 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON - * Pinyin first tone - : 00FC 0304 -01D7 LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE - : 00DC 0301 -01D8 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE - * Pinyin second tone - : 00FC 0301 -01D9 LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON - : 00DC 030C -01DA LATIN SMALL LETTER U WITH DIAERESIS AND CARON - * Pinyin third tone - : 00FC 030C -01DB LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE - : 00DC 0300 -01DC LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE - * Pinyin fourth tone - : 00FC 0300 -@ Additions -01DD LATIN SMALL LETTER TURNED E - * Pan-Nigerian alphabet - * all other usages of schwa are 0259 - * uppercase is 018E - x (latin small letter schwa - 0259) -01DE LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON - : 00C4 0304 -01DF LATIN SMALL LETTER A WITH DIAERESIS AND MACRON - * Livonian, Uralicist usage - : 00E4 0304 -01E0 LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON - : 0226 0304 -01E1 LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON - * Uralicist usage - : 0227 0304 -01E2 LATIN CAPITAL LETTER AE WITH MACRON (ash) * - : 00C6 0304 -01E3 LATIN SMALL LETTER AE WITH MACRON (ash) * - * Old Norse, Old English - : 00E6 0304 -01E4 LATIN CAPITAL LETTER G WITH STROKE -01E5 LATIN SMALL LETTER G WITH STROKE - * Skolt Sami -01E6 LATIN CAPITAL LETTER G WITH CARON - : 0047 030C -01E7 LATIN SMALL LETTER G WITH CARON - * Skolt Sami - x (latin small letter g with breve - 011F) - : 0067 030C -01E8 LATIN CAPITAL LETTER K WITH CARON - : 004B 030C -01E9 LATIN SMALL LETTER K WITH CARON - * Skolt Sami - : 006B 030C -01EA LATIN CAPITAL LETTER O WITH OGONEK - : 004F 0328 -01EB LATIN SMALL LETTER O WITH OGONEK - * Sami, Iroquoian, Old Icelandic - : 006F 0328 -01EC LATIN CAPITAL LETTER O WITH OGONEK AND MACRON - : 01EA 0304 -01ED LATIN SMALL LETTER O WITH OGONEK AND MACRON - * Old Icelandic - : 01EB 0304 -01EE LATIN CAPITAL LETTER EZH WITH CARON - : 01B7 030C -01EF LATIN SMALL LETTER EZH WITH CARON - * Skolt Sami - : 0292 030C -01F0 LATIN SMALL LETTER J WITH CARON - * IPA and many languages - : 006A 030C -01F1 LATIN CAPITAL LETTER DZ - # 0044 005A -01F2 LATIN CAPITAL LETTER D WITH SMALL LETTER Z - # 0044 007A -01F3 LATIN SMALL LETTER DZ - # 0064 007A -01F4 LATIN CAPITAL LETTER G WITH ACUTE - : 0047 0301 -01F5 LATIN SMALL LETTER G WITH ACUTE - * Macedonian and Serbian transliteration - : 0067 0301 -01F6 LATIN CAPITAL LETTER HWAIR - * lowercase is 0195 -01F7 LATIN CAPITAL LETTER WYNN - = wen - * lowercase is 01BF -01F8 LATIN CAPITAL LETTER N WITH GRAVE - : 004E 0300 -01F9 LATIN SMALL LETTER N WITH GRAVE - * Pinyin - : 006E 0300 -01FA LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE - : 00C5 0301 -01FB LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE - : 00E5 0301 -01FC LATIN CAPITAL LETTER AE WITH ACUTE (ash) * - : 00C6 0301 -01FD LATIN SMALL LETTER AE WITH ACUTE (ash) * - : 00E6 0301 -01FE LATIN CAPITAL LETTER O WITH STROKE AND ACUTE - : 00D8 0301 -01FF LATIN SMALL LETTER O WITH STROKE AND ACUTE - : 00F8 0301 -@ Additions for Slovenian and Croatian -0200 LATIN CAPITAL LETTER A WITH DOUBLE GRAVE - : 0041 030F -0201 LATIN SMALL LETTER A WITH DOUBLE GRAVE - : 0061 030F -0202 LATIN CAPITAL LETTER A WITH INVERTED BREVE - : 0041 0311 -0203 LATIN SMALL LETTER A WITH INVERTED BREVE - : 0061 0311 -0204 LATIN CAPITAL LETTER E WITH DOUBLE GRAVE - : 0045 030F -0205 LATIN SMALL LETTER E WITH DOUBLE GRAVE - : 0065 030F -0206 LATIN CAPITAL LETTER E WITH INVERTED BREVE - : 0045 0311 -0207 LATIN SMALL LETTER E WITH INVERTED BREVE - : 0065 0311 -0208 LATIN CAPITAL LETTER I WITH DOUBLE GRAVE - : 0049 030F -0209 LATIN SMALL LETTER I WITH DOUBLE GRAVE - : 0069 030F -020A LATIN CAPITAL LETTER I WITH INVERTED BREVE - : 0049 0311 -020B LATIN SMALL LETTER I WITH INVERTED BREVE - : 0069 0311 -020C LATIN CAPITAL LETTER O WITH DOUBLE GRAVE - : 004F 030F -020D LATIN SMALL LETTER O WITH DOUBLE GRAVE - : 006F 030F -020E LATIN CAPITAL LETTER O WITH INVERTED BREVE - : 004F 0311 -020F LATIN SMALL LETTER O WITH INVERTED BREVE - : 006F 0311 -0210 LATIN CAPITAL LETTER R WITH DOUBLE GRAVE - : 0052 030F -0211 LATIN SMALL LETTER R WITH DOUBLE GRAVE - : 0072 030F -0212 LATIN CAPITAL LETTER R WITH INVERTED BREVE - : 0052 0311 -0213 LATIN SMALL LETTER R WITH INVERTED BREVE - : 0072 0311 -0214 LATIN CAPITAL LETTER U WITH DOUBLE GRAVE - : 0055 030F -0215 LATIN SMALL LETTER U WITH DOUBLE GRAVE - : 0075 030F -0216 LATIN CAPITAL LETTER U WITH INVERTED BREVE - : 0055 0311 -0217 LATIN SMALL LETTER U WITH INVERTED BREVE - : 0075 0311 -@ Additions for Romanian -0218 LATIN CAPITAL LETTER S WITH COMMA BELOW * - : 0053 0326 -0219 LATIN SMALL LETTER S WITH COMMA BELOW * - * Romanian, when distinct comma below form is required - x (latin small letter s with cedilla - 015F) - : 0073 0326 -021A LATIN CAPITAL LETTER T WITH COMMA BELOW * - : 0054 0326 -021B LATIN SMALL LETTER T WITH COMMA BELOW * - * Romanian, when distinct comma below form is required - x (latin small letter t with cedilla - 0163) - : 0074 0326 -@ Miscellaneous additions -021C LATIN CAPITAL LETTER YOGH - x (latin capital letter ezh - 01B7) -021D LATIN SMALL LETTER YOGH - * Middle English, Scots - x (latin small letter ezh - 0292) - x (ounce sign - 2125) -021E LATIN CAPITAL LETTER H WITH CARON - : 0048 030C -021F LATIN SMALL LETTER H WITH CARON - * Finnish Romany - : 0068 030C -0220 LATIN CAPITAL LETTER N WITH LONG RIGHT LEG - * Lakota - x (latin small letter n with long right leg - 019E) -0221 LATIN SMALL LETTER D WITH CURL - * phonetic use in Sinology -0222 LATIN CAPITAL LETTER OU -0223 LATIN SMALL LETTER OU - * Algonquin, Huron - x (digit eight - 0038) -0224 LATIN CAPITAL LETTER Z WITH HOOK -0225 LATIN SMALL LETTER Z WITH HOOK - * Middle High German -0226 LATIN CAPITAL LETTER A WITH DOT ABOVE - : 0041 0307 -0227 LATIN SMALL LETTER A WITH DOT ABOVE - * Uralicist usage - : 0061 0307 -0228 LATIN CAPITAL LETTER E WITH CEDILLA - : 0045 0327 -0229 LATIN SMALL LETTER E WITH CEDILLA - : 0065 0327 -@ Additions for Livonian -022A LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON - : 00D6 0304 -022B LATIN SMALL LETTER O WITH DIAERESIS AND MACRON - * Livonian - : 00F6 0304 -022C LATIN CAPITAL LETTER O WITH TILDE AND MACRON - : 00D5 0304 -022D LATIN SMALL LETTER O WITH TILDE AND MACRON - * Livonian - : 00F5 0304 -022E LATIN CAPITAL LETTER O WITH DOT ABOVE - : 004F 0307 -022F LATIN SMALL LETTER O WITH DOT ABOVE - * Livonian - : 006F 0307 -0230 LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON - : 022E 0304 -0231 LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON - * Livonian - : 022F 0304 -0232 LATIN CAPITAL LETTER Y WITH MACRON - : 0059 0304 -0233 LATIN SMALL LETTER Y WITH MACRON - * Livonian, Cornish - : 0079 0304 -@ Additions for Sinology -0234 LATIN SMALL LETTER L WITH CURL -0235 LATIN SMALL LETTER N WITH CURL -0236 LATIN SMALL LETTER T WITH CURL -@ Miscellaneous additions -0237 LATIN SMALL LETTER DOTLESS J - x (mathematical italic small dotless j - 1D6A5) -0238 LATIN SMALL LETTER DB DIGRAPH - * used in Africanist linguistics -0239 LATIN SMALL LETTER QP DIGRAPH - * used in Africanist linguistics -023A LATIN CAPITAL LETTER A WITH STROKE - * Sencoten -023B LATIN CAPITAL LETTER C WITH STROKE - * Sencoten -023C LATIN SMALL LETTER C WITH STROKE - * used in Americanist linguistics -023D LATIN CAPITAL LETTER L WITH BAR - * Sencoten -023E LATIN CAPITAL LETTER T WITH DIAGONAL STROKE - * Sencoten -023F LATIN SMALL LETTER S WITH SWASH TAIL -0240 LATIN SMALL LETTER Z WITH SWASH TAIL -0241 LATIN CAPITAL LETTER GLOTTAL STOP - * lowercase is 0294 -@@ 0250 IPA Extensions 02AF -@ IPA extensions -@+ IPA includes basic Latin letters and a number of Latin or Greek letters from other blocks. - x (latin small letter ae - 00E6) - x (latin small letter c with cedilla - 00E7) - x (latin small letter eth - 00F0) - x (latin small letter o with stroke - 00F8) - x (latin small letter h with stroke - 0127) - x (latin small letter eng - 014B) - x (latin small ligature oe - 0153) - x (greek small letter beta - 03B2) - x (greek small letter theta - 03B8) - x (greek small letter lamda - 03BB) - x (greek small letter chi - 03C7) -0250 LATIN SMALL LETTER TURNED A - * low central unrounded vowel -0251 LATIN SMALL LETTER ALPHA - = LATIN SMALL LETTER SCRIPT A - * low back unrounded vowel - x (greek small letter alpha - 03B1) -0252 LATIN SMALL LETTER TURNED ALPHA - * low back rounded vowel -0253 LATIN SMALL LETTER B WITH HOOK - * implosive bilabial stop - * Pan-Nigerian alphabet - x (latin capital letter b with hook - 0181) -0254 LATIN SMALL LETTER OPEN O - * typographically a turned c - * lower-mid back rounded vowel - x (latin capital letter open o - 0186) -0255 LATIN SMALL LETTER C WITH CURL - * voiceless alveolo-palatal laminal fricative - * used in transcription of Mandarin Chinese - * sound spelled with 015B in Polish -0256 LATIN SMALL LETTER D WITH TAIL - = LATIN SMALL LETTER D RETROFLEX HOOK - * voiced retroflex stop - x (latin capital letter african d - 0189) -0257 LATIN SMALL LETTER D WITH HOOK - * implosive dental or alveolar stop - * Ewe, Pan-Nigerian alphabet - x (latin capital letter d with hook - 018A) -0258 LATIN SMALL LETTER REVERSED E - * upper-mid central unrounded vowel -0259 LATIN SMALL LETTER SCHWA - * mid-central unrounded vowel - * variant uppercase form 018E is associated with 01DD - x (latin capital letter schwa - 018F) - x (latin small letter turned e - 01DD) - x (cyrillic small letter schwa - 04D9) -025A LATIN SMALL LETTER SCHWA WITH HOOK - * rhotacized schwa -025B LATIN SMALL LETTER OPEN E - = LATIN SMALL LETTER EPSILON - * lower-mid front unrounded vowel - x (latin capital letter open e - 0190) - x (greek small letter epsilon - 03B5) -025C LATIN SMALL LETTER REVERSED OPEN E - * lower-mid central unrounded vowel -025D LATIN SMALL LETTER REVERSED OPEN E WITH HOOK - * rhotacized lower-mid central vowel -025E LATIN SMALL LETTER CLOSED REVERSED OPEN E - = LATIN SMALL LETTER CLOSED REVERSED EPSILON - * lower-mid central rounded vowel -025F LATIN SMALL LETTER DOTLESS J WITH STROKE - * voiced palatal stop - * typographically a turned f, but better thought of as a form of j - * "gy" in Hungarian orthography - * also archaic phonetic for palatoalveolar affricate 02A4 -0260 LATIN SMALL LETTER G WITH HOOK - * implosive velar stop - x (latin capital letter g with hook - 0193) -0261 LATIN SMALL LETTER SCRIPT G - * voiced velar stop - x (latin small letter g - 0067) -0262 LATIN LETTER SMALL CAPITAL G - * voiced uvular stop -0263 LATIN SMALL LETTER GAMMA - * voiced velar fricative - x (latin capital letter gamma - 0194) - x (greek small letter gamma - 03B3) -0264 LATIN SMALL LETTER RAMS HORN - = LATIN SMALL LETTER BABY GAMMA - * upper-mid back unrounded vowel -0265 LATIN SMALL LETTER TURNED H - * voiced rounded palatal approximant -0266 LATIN SMALL LETTER H WITH HOOK - * breathy-voiced glottal fricative - x (modifier letter small h with hook - 02B1) -0267 LATIN SMALL LETTER HENG WITH HOOK - * voiceless coarticulated velar and palatoalveolar fricative - * "tj" or "kj" or "sj" in some Swedish dialects -0268 LATIN SMALL LETTER I WITH STROKE - = barred i, i bar - * high central unrounded vowel - * ISO 6438 gives lowercase of 0197 as 026A, not 0268 -0269 LATIN SMALL LETTER IOTA - * semi-high front unrounded vowel -@+ * obsoleted by IPA in 1989 - * preferred use is 026A LATIN LETTER SMALL CAPITAL I - x (latin capital letter iota - 0196) - x (greek small letter iota - 03B9) -026A LATIN LETTER SMALL CAPITAL I - * semi-high front unrounded vowel - * preferred IPA alternate for 0269 - x (latin capital letter i with stroke - 0197) -026B LATIN SMALL LETTER L WITH MIDDLE TILDE - * velarized voiced alveolar lateral approximant -026C LATIN SMALL LETTER L WITH BELT - * voiceless alveolar lateral fricative -026D LATIN SMALL LETTER L WITH RETROFLEX HOOK - * voiced retroflex lateral -026E LATIN SMALL LETTER LEZH - * voiced lateral fricative - * "dhl" in Zulu orthography -026F LATIN SMALL LETTER TURNED M - * high back unrounded vowel - x (latin capital letter turned m - 019C) -0270 LATIN SMALL LETTER TURNED M WITH LONG LEG - * voiced velar approximant -0271 LATIN SMALL LETTER M WITH HOOK - * voiced labiodental nasal -0272 LATIN SMALL LETTER N WITH LEFT HOOK - * voiced palatal nasal - x (latin capital letter n with left hook - 019D) -0273 LATIN SMALL LETTER N WITH RETROFLEX HOOK - * voiced retroflex nasal -0274 LATIN LETTER SMALL CAPITAL N - * voiced uvular nasal -0275 LATIN SMALL LETTER BARRED O - = o bar - * rounded mid-central vowel, i.e. rounded schwa - * uppercase is 019F - x (greek small letter theta - 03B8) - x (cyrillic small letter fita - 0473) - x (cyrillic small letter barred o - 04E9) -0276 LATIN LETTER SMALL CAPITAL OE - * low front rounded vowel - x (latin small ligature oe - 0153) -0277 LATIN SMALL LETTER CLOSED OMEGA - * semi-high back rounded vowel -@+ * obsoleted by IPA in 1989 - * preferred use is 028A latin small letter upsilon -0278 LATIN SMALL LETTER PHI - * voiceless bilabial fricative - x (greek small letter phi - 03C6) -0279 LATIN SMALL LETTER TURNED R - * voiced alveolar approximant - x (modifier letter small turned r - 02B4) -027A LATIN SMALL LETTER TURNED R WITH LONG LEG - * voiced lateral flap -027B LATIN SMALL LETTER TURNED R WITH HOOK - * voiced retroflex approximant - x (modifier letter small turned r with hook - 02B5) -027C LATIN SMALL LETTER R WITH LONG LEG - * voiced strident apico-alveolar trill -@+ * obsoleted by IPA in 1989 - * sound spelled with 0159 in Czech - * preferred phonetic representation for Czech is 0072 031D - * in current use in Gaelic types (as glyph variant of 0072) -027D LATIN SMALL LETTER R WITH TAIL - * voiced retroflex flap -027E LATIN SMALL LETTER R WITH FISHHOOK - * voiced alveolar flap or tap -027F LATIN SMALL LETTER REVERSED R WITH FISHHOOK - = long leg turned iota (a misnomer) - * apical dental vowel - * used by linguists working on Chinese and other Sino-Tibetan languages - * IPA spelling - 007A 0329 -0280 LATIN LETTER SMALL CAPITAL R * - * voiced uvular trill - * Germanic, Old Norse - * uppercase is 01A6 -0281 LATIN LETTER SMALL CAPITAL INVERTED R - * voiced uvular fricative or approximant - x (modifier letter small capital inverted r - 02B6) -0282 LATIN SMALL LETTER S WITH HOOK - * voiceless retroflex fricative -0283 LATIN SMALL LETTER ESH - * voiceless postalveolar fricative - x (latin capital letter esh - 01A9) - x (integral - 222B) -0284 LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK - * implosive palatal stop - * typographically based on 025F, not on 0283 -0285 LATIN SMALL LETTER SQUAT REVERSED ESH - * apical retroflex vowel - * used by linguists working on Chinese and other Sino-Tibetan languages - * IPA spelling - 0290 0329 - * in origin 027F plus the retroflex hook 0322, despite its name -0286 LATIN SMALL LETTER ESH WITH CURL - * palatalized voiceless postalveolar fricative - * suggested spelling - 0283 02B2 -0287 LATIN SMALL LETTER TURNED T - * dental click (sound of "tsk tsk") - x (latin letter dental click - 01C0) -0288 LATIN SMALL LETTER T WITH RETROFLEX HOOK - * voiceless retroflex stop - x (latin capital letter t with retroflex hook - 01AE) -0289 LATIN SMALL LETTER U BAR - * high central rounded vowel -028A LATIN SMALL LETTER UPSILON - * semi-high back rounded vowel - * preferred IPA alternate to 0277 - x (latin capital letter upsilon - 01B1) - x (greek small letter upsilon - 03C5) -028B LATIN SMALL LETTER V WITH HOOK - = LATIN SMALL LETTER SCRIPT V - * voiced labiodental approximant - x (latin capital letter v with hook - 01B2) - x (greek small letter upsilon - 03C5) -028C LATIN SMALL LETTER TURNED V - = caret, wedge - * lower-mid back unrounded vowel - x (greek capital letter lamda - 039B) - x (caret - 2038) - x (logical and - 2227) -028D LATIN SMALL LETTER TURNED W - * voiceless rounded labiovelar approximant -028E LATIN SMALL LETTER TURNED Y - * voiced lateral approximant -028F LATIN LETTER SMALL CAPITAL Y - * semi-high front rounded vowel -0290 LATIN SMALL LETTER Z WITH RETROFLEX HOOK - * voiced retroflex fricative -0291 LATIN SMALL LETTER Z WITH CURL - * voiced alveolo-palatal laminal fricative - * sound spelled with 017A in Polish -0292 LATIN SMALL LETTER EZH - = dram - * voiced postalveolar fricative - * mistakenly named yogh in Unicode 1.0 - * uppercase is 01B7 - * Skolt Sami - x (latin small letter yogh - 021D) - x (cyrillic small letter abkhasian dze - 04E1) - x (ounce sign - 2125) -0293 LATIN SMALL LETTER EZH WITH CURL - * palatalized voiced postalveolar fricative -0294 LATIN LETTER GLOTTAL STOP - * uppercase is 0241 - x (modifier letter glottal stop - 02C0) -0295 LATIN LETTER PHARYNGEAL VOICED FRICATIVE - = LATIN LETTER REVERSED GLOTTAL STOP - * voiced pharyngeal fricative - * ain - x (latin small letter ezh reversed - 01B9) - x (modifier letter reversed glottal stop - 02C1) -0296 LATIN LETTER INVERTED GLOTTAL STOP - * lateral click - x (latin letter lateral click - 01C1) -0297 LATIN LETTER STRETCHED C - * palatal (or alveolar) click - x (latin letter retroflex click - 01C3) - x (complement - 2201) -0298 LATIN LETTER BILABIAL CLICK - = LATIN LETTER BULLSEYE - x (circled dot operator - 2299) -0299 LATIN LETTER SMALL CAPITAL B - * bilabial trill -029A LATIN SMALL LETTER CLOSED OPEN E - = LATIN SMALL LETTER CLOSED EPSILON - * lower-mid front rounded vowel - * non-IPA alternate for the preferred 0153 -029B LATIN LETTER SMALL CAPITAL G WITH HOOK - * voiced uvular implosive -029C LATIN LETTER SMALL CAPITAL H - * voiceless epiglottal fricative -029D LATIN SMALL LETTER J WITH CROSSED-TAIL - * voiced palatal fricative -029E LATIN SMALL LETTER TURNED K - * proposed for velar click -@+ * withdrawn by IPA in 1970 -029F LATIN LETTER SMALL CAPITAL L - * velar lateral approximant -02A0 LATIN SMALL LETTER Q WITH HOOK - * voiceless uvular implosive -02A1 LATIN LETTER GLOTTAL STOP WITH STROKE - * voiced epiglottal stop -02A2 LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE - * voiced epiglottal fricative -02A3 LATIN SMALL LETTER DZ DIGRAPH - * voiced dental affricate -02A4 LATIN SMALL LETTER DEZH DIGRAPH - * voiced postalveolar affricate -02A5 LATIN SMALL LETTER DZ DIGRAPH WITH CURL - * voiced alveolo-palatal affricate -02A6 LATIN SMALL LETTER TS DIGRAPH - * voiceless dental affricate -02A7 LATIN SMALL LETTER TESH DIGRAPH - * voiceless postalveolar affricate -02A8 LATIN SMALL LETTER TC DIGRAPH WITH CURL - * voiceless alveolo-palatal affricate -@ IPA characters for disordered speech -02A9 LATIN SMALL LETTER FENG DIGRAPH - * velopharyngeal fricative -02AA LATIN SMALL LETTER LS DIGRAPH - * lateral alveolar fricative (lisp) -02AB LATIN SMALL LETTER LZ DIGRAPH - * voiced lateral alveolar fricative -02AC LATIN LETTER BILABIAL PERCUSSIVE - * audible lip smack -02AD LATIN LETTER BIDENTAL PERCUSSIVE - * audible teeth gnashing -@ Additions for Sinology -02AE LATIN SMALL LETTER TURNED H WITH FISHHOOK -02AF LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL -@@ 02B0 Spacing Modifier Letters 02FF -@ Latin superscript modifier letters -02B0 MODIFIER LETTER SMALL H - * aspiration - # <super> 0068 -02B1 MODIFIER LETTER SMALL H WITH HOOK - * breathy voiced, murmured - x (latin small letter h with hook - 0266) - x (combining diaeresis below - 0324) - # <super> 0266 -02B2 MODIFIER LETTER SMALL J - * palatalization - x (combining palatalized hook below - 0321) - # <super> 006A -02B3 MODIFIER LETTER SMALL R - # <super> 0072 -02B4 MODIFIER LETTER SMALL TURNED R - x (latin small letter turned r - 0279) - # <super> 0279 -02B5 MODIFIER LETTER SMALL TURNED R WITH HOOK - x (latin small letter turned r with hook - 027B) - # <super> 027B -02B6 MODIFIER LETTER SMALL CAPITAL INVERTED R - * preceding four used for r-coloring or r-offglides - x (latin letter small capital inverted r - 0281) - # <super> 0281 -02B7 MODIFIER LETTER SMALL W - * labialization - x (combining inverted double arch below - 032B) - # <super> 0077 -02B8 MODIFIER LETTER SMALL Y - * palatalization - * common Americanist usage for 02B2 - # <super> 0079 -@ Miscellaneous phonetic modifiers -02B9 MODIFIER LETTER PRIME - * primary stress, emphasis - * transliteration of mjagkij znak (Cyrillic soft sign: palatalization) - x (apostrophe - 0027) - x (acute accent - 00B4) - x (modifier letter acute accent - 02CA) - x (combining acute accent - 0301) - x (greek numeral sign - 0374) - x (prime - 2032) -02BA MODIFIER LETTER DOUBLE PRIME - * exaggerated stress, contrastive stress - * transliteration of tverdyj znak (Cyrillic hard sign: no palatalization) - x (quotation mark - 0022) - x (combining double acute accent - 030B) - x (double prime - 2033) -02BB MODIFIER LETTER TURNED COMMA - * typographical alternate for 02BD or 02BF - x (combining turned comma above - 0312) - x (left single quotation mark - 2018) -02BC MODIFIER LETTER APOSTROPHE - = apostrophe - * glottal stop, glottalization, ejective - * spacing clone of Greek smooth breathing mark - * many languages use this as a letter of their alphabets - * 2019 is the preferred character for a punctuation apostrophe - x (apostrophe - 0027) - x (combining comma above - 0313) - x (combining comma above right - 0315) - x (armenian apostrophe - 055A) - x (right single quotation mark - 2019) -02BD MODIFIER LETTER REVERSED COMMA - * weak aspiration - * spacing clone of Greek rough breathing mark - x (combining reversed comma above - 0314) - x (armenian modifier letter left half ring - 0559) - x (single high-reversed-9 quotation mark - 201B) -02BE MODIFIER LETTER RIGHT HALF RING - * transliteration of Arabic hamza (glottal stop) - x (armenian apostrophe - 055A) - x (arabic letter hamza - 0621) -02BF MODIFIER LETTER LEFT HALF RING - * transliteration of Arabic ain (voiced pharyngeal fricative) - x (armenian modifier letter left half ring - 0559) - x (arabic letter ain - 0639) -02C0 MODIFIER LETTER GLOTTAL STOP - * ejective or glottalized - * typographical alternate for 02BC or 02BE - x (latin letter glottal stop - 0294) - x (combining hook above - 0309) -02C1 MODIFIER LETTER REVERSED GLOTTAL STOP - * typographical alternate for 02BF - x (latin letter pharyngeal voiced fricative - 0295) -02C2 MODIFIER LETTER LEFT ARROWHEAD - * fronted articulation -02C3 MODIFIER LETTER RIGHT ARROWHEAD - * backed articulation -02C4 MODIFIER LETTER UP ARROWHEAD - * raised articulation - x (circumflex accent - 005E) - x (up arrowhead - 2303) -02C5 MODIFIER LETTER DOWN ARROWHEAD - * lowered articulation -02C6 MODIFIER LETTER CIRCUMFLEX ACCENT - * rising-falling tone, falling tone, secondary stress, etc. - x (circumflex accent - 005E) - x (combining circumflex accent - 0302) -02C7 CARON (Mandarin Chinese third tone) - = hacek - * falling-rising tone - * Mandarin Chinese third tone - x (combining caron - 030C) -02C8 MODIFIER LETTER VERTICAL LINE - * primary stress, downstep - * precedes letter or syllable modified - x (apostrophe - 0027) - x (combining vertical line above - 030D) -02C9 MODIFIER LETTER MACRON (Mandarin Chinese first tone) - * high level tone - * precedes or follows letter or syllable modified - * Mandarin Chinese first tone - x (macron - 00AF) - x (combining macron - 0304) -02CA MODIFIER LETTER ACUTE ACCENT (Mandarin Chinese second tone) - * high-rising tone (IPA), high tone, primary stress - * Mandarin Chinese second tone - x (acute accent - 00B4) - x (modifier letter prime - 02B9) - x (combining acute accent - 0301) - x (greek numeral sign - 0374) - x (armenian emphasis mark - 055B) -02CB MODIFIER LETTER GRAVE ACCENT (Mandarin Chinese fourth tone) - * high-falling tone (IPA), low tone, secondary or tertiary stress - * Mandarin Chinese fourth tone - x (grave accent - 0060) - x (combining grave accent - 0300) - x (armenian comma - 055D) -02CC MODIFIER LETTER LOW VERTICAL LINE - * secondary stress - * precedes letter or syllable modified - x (combining vertical line below - 0329) -02CD MODIFIER LETTER LOW MACRON - * low level tone - x (low line - 005F) - x (combining macron below - 0331) -02CE MODIFIER LETTER LOW GRAVE ACCENT - * low-falling tone -02CF MODIFIER LETTER LOW ACUTE ACCENT - * low-rising tone - x (greek lower numeral sign - 0375) -02D0 MODIFIER LETTER TRIANGULAR COLON - * length mark - x (colon - 003A) -02D1 MODIFIER LETTER HALF TRIANGULAR COLON - * half-length mark - x (middle dot - 00B7) -02D2 MODIFIER LETTER CENTRED RIGHT HALF RING - * more rounded articulation -02D3 MODIFIER LETTER CENTRED LEFT HALF RING - * less rounded articulation -02D4 MODIFIER LETTER UP TACK - * vowel raising or closing - x (combining up tack below - 031D) - x (combining dot below - 0323) -02D5 MODIFIER LETTER DOWN TACK - * vowel lowering or opening - x (combining left half ring below - 031C) - x (combining down tack below - 031E) -02D6 MODIFIER LETTER PLUS SIGN - * advanced or fronted articulation - x (combining plus sign below - 031F) -02D7 MODIFIER LETTER MINUS SIGN - * retracted or backed articulation - * glyph may have small end-serifs - x (combining minus sign below - 0320) - x (minus sign - 2212) -@ Spacing clones of diacritics -02D8 BREVE - x (combining breve - 0306) - # 0020 0306 -02D9 DOT ABOVE (Mandarin Chinese light tone) - * Mandarin Chinese fifth tone (light or neutral) - x (combining dot above - 0307) - # 0020 0307 -02DA RING ABOVE - x (degree sign - 00B0) - x (combining ring above - 030A) - # 0020 030A -02DB OGONEK - x (combining ogonek - 0328) - # 0020 0328 -02DC SMALL TILDE - x (tilde - 007E) - x (combining tilde - 0303) - x (tilde operator - 223C) - # 0020 0303 -02DD DOUBLE ACUTE ACCENT - x (combining double acute accent - 030B) - # 0020 030B -@ Additions based on 1989 IPA -02DE MODIFIER LETTER RHOTIC HOOK - * rhotacization in vowel - * often ligated: 025A = 0259 + 02DE; 025D = 025C + 02DE -02DF MODIFIER LETTER CROSS ACCENT - * Swedish grave accent -02E0 MODIFIER LETTER SMALL GAMMA - * these modifier letters are occasionally used in transcription of affricates - # <super> 0263 -02E1 MODIFIER LETTER SMALL L - # <super> 006C -02E2 MODIFIER LETTER SMALL S - # <super> 0073 -02E3 MODIFIER LETTER SMALL X - # <super> 0078 -02E4 MODIFIER LETTER SMALL REVERSED GLOTTAL STOP - # <super> 0295 -@ Tone letters -02E5 MODIFIER LETTER EXTRA-HIGH TONE BAR -02E6 MODIFIER LETTER HIGH TONE BAR -02E7 MODIFIER LETTER MID TONE BAR -02E8 MODIFIER LETTER LOW TONE BAR -02E9 MODIFIER LETTER EXTRA-LOW TONE BAR -@ Extended Bopomofo tone marks -02EA MODIFIER LETTER YIN DEPARTING TONE MARK -02EB MODIFIER LETTER YANG DEPARTING TONE MARK -@ IPA modifiers -02EC MODIFIER LETTER VOICING -02ED MODIFIER LETTER UNASPIRATED -@ Other modifier letter -02EE MODIFIER LETTER DOUBLE APOSTROPHE - * Nenets -@ UPA modifiers -02EF MODIFIER LETTER LOW DOWN ARROWHEAD -02F0 MODIFIER LETTER LOW UP ARROWHEAD -02F1 MODIFIER LETTER LOW LEFT ARROWHEAD -02F2 MODIFIER LETTER LOW RIGHT ARROWHEAD -02F3 MODIFIER LETTER LOW RING -02F4 MODIFIER LETTER MIDDLE GRAVE ACCENT -02F5 MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT -02F6 MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT -02F7 MODIFIER LETTER LOW TILDE -02F8 MODIFIER LETTER RAISED COLON -02F9 MODIFIER LETTER BEGIN HIGH TONE -02FA MODIFIER LETTER END HIGH TONE -02FB MODIFIER LETTER BEGIN LOW TONE -02FC MODIFIER LETTER END LOW TONE -02FD MODIFIER LETTER SHELF -02FE MODIFIER LETTER OPEN SHELF -02FF MODIFIER LETTER LOW LEFT ARROW -@@ 0300 Combining Diacritical Marks 036F -@ Ordinary diacritics -0300 COMBINING GRAVE ACCENT (Varia) - = Greek varia - x (grave accent - 0060) - x (modifier letter grave accent - 02CB) -0301 COMBINING ACUTE ACCENT (Oxia, Tonos) - = stress mark - = Greek oxia, tonos - x (apostrophe - 0027) - x (acute accent - 00B4) - x (modifier letter prime - 02B9) - x (modifier letter acute accent - 02CA) - x (greek tonos - 0384) -0302 COMBINING CIRCUMFLEX ACCENT - = hat - x (circumflex accent - 005E) - x (modifier letter circumflex accent - 02C6) -0303 COMBINING TILDE - * IPA: nasalization - * Vietnamese tone mark - x (tilde - 007E) - x (small tilde - 02DC) -0304 COMBINING MACRON - = long - * distinguish from the following - x (macron - 00AF) - x (modifier letter macron - 02C9) -0305 COMBINING OVERLINE - = overscore, vinculum - * connects on left and right - x (macron - 00AF) -0306 COMBINING BREVE (Vrachy) - = short - = Greek vrachy - x (breve - 02D8) -0307 COMBINING DOT ABOVE - = derivative (Newtonian notation) -@+ * IPA (withdrawn in 1976): palatalization - x (dot above - 02D9) -0308 COMBINING DIAERESIS (Dialytika) - = double dot above, umlaut - = Greek dialytika - = double derivative - x (diaeresis - 00A8) -0309 COMBINING HOOK ABOVE - = hoi - * kerns left or right of circumflex over vowels - * Vietnamese tone mark - x (modifier letter glottal stop - 02C0) -030A COMBINING RING ABOVE - x (degree sign - 00B0) - x (ring above - 02DA) -030B COMBINING DOUBLE ACUTE ACCENT - * Hungarian, Chuvash - x (quotation mark - 0022) - x (modifier letter double prime - 02BA) - x (double acute accent - 02DD) -030C COMBINING CARON - = hacek, V above - x (caron - 02C7) -030D COMBINING VERTICAL LINE ABOVE - * this is not the Greek tonos - * Marshallese - x (modifier letter vertical line - 02C8) -030E COMBINING DOUBLE VERTICAL LINE ABOVE - * Marshallese - x (quotation mark - 0022) -030F COMBINING DOUBLE GRAVE ACCENT - * Serbian and Croatian poetics -0310 COMBINING CANDRABINDU - x (devanagari sign candrabindu - 0901) -0311 COMBINING INVERTED BREVE -0312 COMBINING TURNED COMMA ABOVE - = cedilla above - * Latvian (but not used in decomposition) - x (modifier letter turned comma - 02BB) -0313 COMBINING COMMA ABOVE (Psili) - = Greek psili, smooth breathing mark - * Americanist: ejective or glottalization - x (modifier letter apostrophe - 02BC) - x (combining cyrillic psili pneumata - 0486) - x (armenian apostrophe - 055A) -0314 COMBINING REVERSED COMMA ABOVE (Dasia) - = Greek dasia, rough breathing mark - x (modifier letter reversed comma - 02BD) - x (combining cyrillic dasia pneumata - 0485) - x (armenian modifier letter left half ring - 0559) -0315 COMBINING COMMA ABOVE RIGHT - x (modifier letter apostrophe - 02BC) -0316 COMBINING GRAVE ACCENT BELOW -0317 COMBINING ACUTE ACCENT BELOW -0318 COMBINING LEFT TACK BELOW -0319 COMBINING RIGHT TACK BELOW -031A COMBINING LEFT ANGLE ABOVE - * IPA: unreleased stop -031B COMBINING HORN - * Vietnamese -031C COMBINING LEFT HALF RING BELOW - * IPA: open variety of vowel - x (modifier letter down tack - 02D5) -031D COMBINING UP TACK BELOW - * IPA: vowel raising or closing - x (modifier letter up tack - 02D4) -031E COMBINING DOWN TACK BELOW - * IPA: vowel lowering or opening - x (modifier letter down tack - 02D5) -031F COMBINING PLUS SIGN BELOW - * IPA: advanced or fronted articulation - x (modifier letter plus sign - 02D6) -0320 COMBINING MINUS SIGN BELOW - * IPA: retracted or backed articulation - * glyph may have small end-serifs - x (modifier letter minus sign - 02D7) -0321 COMBINING PALATALIZED HOOK BELOW - * IPA: palatalization - x (modifier letter small j - 02B2) -0322 COMBINING RETROFLEX HOOK BELOW - * IPA: retroflexion -0323 COMBINING DOT BELOW - = nang - * IPA: closer variety of vowel - * Americanist and Indo-Europeanist: retraction or retroflexion - * Semiticist: velarization or pharyngealization - * Vietnamese tone mark - x (modifier letter up tack - 02D4) -0324 COMBINING DIAERESIS BELOW - * IPA: breathy-voice or murmur - x (modifier letter small h with hook - 02B1) -0325 COMBINING RING BELOW - * IPA: voiceless - * Madurese -0326 COMBINING COMMA BELOW - * Romanian, Latvian, Livonian -0327 COMBINING CEDILLA - * French, Turkish, Azerbaijani - x (cedilla - 00B8) -0328 COMBINING OGONEK - = nasal hook - * Americanist: nasalization - * Polish, Lithuanian - x (ogonek - 02DB) -0329 COMBINING VERTICAL LINE BELOW - * IPA: syllabic - * Yoruba - x (modifier letter low vertical line - 02CC) -032A COMBINING BRIDGE BELOW - * IPA: dental -032B COMBINING INVERTED DOUBLE ARCH BELOW - * IPA: labialization - x (modifier letter small w - 02B7) -032C COMBINING CARON BELOW - * IPA: voiced -032D COMBINING CIRCUMFLEX ACCENT BELOW - * Americanist: fronted articulation -032E COMBINING BREVE BELOW - * Hittite transcription -032F COMBINING INVERTED BREVE BELOW - * Americanist: fronted articulation (variant of 032D) - * Indo-Europeanist: semivowel -0330 COMBINING TILDE BELOW - * IPA: creaky voice -0331 COMBINING MACRON BELOW - x (low line - 005F) - x (modifier letter low macron - 02CD) -0332 COMBINING LOW LINE - = underline, underscore - * connects on left and right - x (low line - 005F) -0333 COMBINING DOUBLE LOW LINE - = double underline, double underscore - * connects on left and right - x (combining equals sign below - 0347) - x (double low line - 2017) -@ Overstruck diacritics -0334 COMBINING TILDE OVERLAY - * IPA: velarization or pharyngealization -0335 COMBINING SHORT STROKE OVERLAY -0336 COMBINING LONG STROKE OVERLAY -0337 COMBINING SHORT SOLIDUS OVERLAY - = short slash overlay -0338 COMBINING LONG SOLIDUS OVERLAY - = long slash overlay -@ Additions -0339 COMBINING RIGHT HALF RING BELOW -033A COMBINING INVERTED BRIDGE BELOW -033B COMBINING SQUARE BELOW -033C COMBINING SEAGULL BELOW -033D COMBINING X ABOVE -033E COMBINING VERTICAL TILDE - * Cyrillic palatalization - x (combining cyrillic palatalization - 0484) -033F COMBINING DOUBLE OVERLINE -@ Vietnamese tone marks (deprecated) -0340 COMBINING GRAVE TONE MARK (Vietnamese) - * kerns left or right of circumflex over vowels - : 0300 combining grave accent -0341 COMBINING ACUTE TONE MARK (Vietnamese) - * kerns right of circumflex over vowels - : 0301 combining acute accent -@ Additions for Greek -0342 COMBINING GREEK PERISPOMENI -0343 COMBINING GREEK KORONIS - : 0313 combining comma above -0344 COMBINING GREEK DIALYTIKA TONOS - * use of this character is discouraged - : 0308 0301 -0345 COMBINING GREEK YPOGEGRAMMENI - = GREEK NON-SPACING IOTA BELOW - = iota subscript - * note special casing issues - x (greek ypogegrammeni - 037A) - x (greek capital letter iota - 0399) -@ Additions for IPA -0346 COMBINING BRIDGE ABOVE - * IPA: dentolabial - x (combining wide bridge above - 20E9) -0347 COMBINING EQUALS SIGN BELOW - * IPA: alveolar -0348 COMBINING DOUBLE VERTICAL LINE BELOW - * IPA: strong articulation -0349 COMBINING LEFT ANGLE BELOW - * IPA: weak articulation -034A COMBINING NOT TILDE ABOVE - * IPA: denasal -@ IPA diacritics for disordered speech -034B COMBINING HOMOTHETIC ABOVE - * IPA: nasal escape -034C COMBINING ALMOST EQUAL TO ABOVE - * IPA: velopharyngeal friction -034D COMBINING LEFT RIGHT ARROW BELOW - * IPA: labial spreading -034E COMBINING UPWARDS ARROW BELOW - * IPA: whistled articulation -@ Grapheme joiner -034F COMBINING GRAPHEME JOINER - = CGJ - * has no visible glyph - * indicates that adjoining characters are to be treated as a graphemic unit -@ Additions for the Uralic Phonetic Alphabet -0350 COMBINING RIGHT ARROWHEAD ABOVE -0351 COMBINING LEFT HALF RING ABOVE -0352 COMBINING FERMATA -0353 COMBINING X BELOW -0354 COMBINING LEFT ARROWHEAD BELOW -0355 COMBINING RIGHT ARROWHEAD BELOW -0356 COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW -0357 COMBINING RIGHT HALF RING ABOVE -@ Miscellaneous additions -0358 COMBINING DOT ABOVE RIGHT - * Latin transliterations of the Southern Min dialects of Chinese -0359 COMBINING ASTERISK BELOW -035A COMBINING DOUBLE RING BELOW - * Kharoshthi transliteration -035B COMBINING ZIGZAG ABOVE - * Latin abbreviation, Lithuanian phonetics and mediaevalist transcriptions -@ Double diacritics -035C COMBINING DOUBLE BREVE BELOW - = ligature tie below, papyrological hyphen - * a common glyph alternate connects the horizontal midpoints of the characters - x (combining double breve - 035D) - x (combining double inverted breve - 0361) -035D COMBINING DOUBLE BREVE -035E COMBINING DOUBLE MACRON -035F COMBINING DOUBLE MACRON BELOW -0360 COMBINING DOUBLE TILDE -0361 COMBINING DOUBLE INVERTED BREVE - = ligature tie -0362 COMBINING DOUBLE RIGHTWARDS ARROW BELOW - * IPA: sliding articulation -@ Medieval superscript letter diacritics -@+ These are letter diacritics written directly above other letters. They appear primarily in medieval Germanic manuscripts, but saw some usage as late as the 19th century in some languages. -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 -@@ 0370 Greek and Coptic 03FF -@ Based on ISO 8859-7 -0374 GREEK NUMERAL SIGN (Dexia keraia) - = dexia keraia - * indicates numeric use of letters - x (modifier letter acute accent - 02CA) - : 02B9 modifier letter prime -0375 GREEK LOWER NUMERAL SIGN (Aristeri keraia) - = aristeri keraia - * indicates numeric use of letters - x (modifier letter low acute accent - 02CF) -037A GREEK YPOGEGRAMMENI - = iota subscript - x (combining greek ypogegrammeni - 0345) - # 0020 0345 -037E GREEK QUESTION MARK (Erotimatiko) - = erotimatiko - * sentence-final punctuation - * 003B is the preferred character - x (question mark - 003F) - : 003B semicolon -0384 GREEK TONOS - x (acute accent - 00B4) - x (combining vertical line above - 030D) - # 0020 0301 -0385 GREEK DIALYTIKA TONOS - : 00A8 0301 -0386 GREEK CAPITAL LETTER ALPHA WITH TONOS - : 0391 0301 -0387 GREEK ANO TELEIA - * functions in Greek like a semicolon - * 00B7 is the preferred character - : 00B7 middle dot -0388 GREEK CAPITAL LETTER EPSILON WITH TONOS - : 0395 0301 -0389 GREEK CAPITAL LETTER ETA WITH TONOS - : 0397 0301 -038A GREEK CAPITAL LETTER IOTA WITH TONOS - : 0399 0301 -038C GREEK CAPITAL LETTER OMICRON WITH TONOS - : 039F 0301 -038E GREEK CAPITAL LETTER UPSILON WITH TONOS - : 03A5 0301 -038F GREEK CAPITAL LETTER OMEGA WITH TONOS - : 03A9 0301 -0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS - : 03CA 0301 -0391 GREEK CAPITAL LETTER ALPHA -0392 GREEK CAPITAL LETTER BETA -0393 GREEK CAPITAL LETTER GAMMA - = gamma function -0394 GREEK CAPITAL LETTER DELTA - x (increment - 2206) -0395 GREEK CAPITAL LETTER EPSILON -0396 GREEK CAPITAL LETTER ZETA -0397 GREEK CAPITAL LETTER ETA -0398 GREEK CAPITAL LETTER THETA -0399 GREEK CAPITAL LETTER IOTA - = iota adscript -039A GREEK CAPITAL LETTER KAPPA -039B GREEK CAPITAL LETTER LAMDA -039C GREEK CAPITAL LETTER MU -039D GREEK CAPITAL LETTER NU -039E GREEK CAPITAL LETTER XI -039F GREEK CAPITAL LETTER OMICRON -03A0 GREEK CAPITAL LETTER PI - x (n-ary product - 220F) -03A1 GREEK CAPITAL LETTER RHO -03A3 GREEK CAPITAL LETTER SIGMA - x (latin capital letter esh - 01A9) - x (n-ary summation - 2211) -03A4 GREEK CAPITAL LETTER TAU -03A5 GREEK CAPITAL LETTER UPSILON -03A6 GREEK CAPITAL LETTER PHI -03A7 GREEK CAPITAL LETTER CHI -03A8 GREEK CAPITAL LETTER PSI -03A9 GREEK CAPITAL LETTER OMEGA - x (ohm sign - 2126) - x (inverted ohm sign - 2127) -03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA - : 0399 0308 -03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA - : 03A5 0308 -03AC GREEK SMALL LETTER ALPHA WITH TONOS - : 03B1 0301 -03AD GREEK SMALL LETTER EPSILON WITH TONOS - : 03B5 0301 -03AE GREEK SMALL LETTER ETA WITH TONOS - : 03B7 0301 -03AF GREEK SMALL LETTER IOTA WITH TONOS - : 03B9 0301 -03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS - : 03CB 0301 -03B1 GREEK SMALL LETTER ALPHA - x (latin small letter alpha - 0251) - x (proportional to - 221D) -03B2 GREEK SMALL LETTER BETA - x (latin small letter sharp s - 00DF) - x (latin small letter b with stroke - 0180) -03B3 GREEK SMALL LETTER GAMMA - x (latin small letter gamma - 0263) -03B4 GREEK SMALL LETTER DELTA -03B5 GREEK SMALL LETTER EPSILON - x (latin small letter open e - 025B) -03B6 GREEK SMALL LETTER ZETA -03B7 GREEK SMALL LETTER ETA -03B8 GREEK SMALL LETTER THETA - x (latin small letter barred o - 0275) - x (cyrillic small letter fita - 0473) -03B9 GREEK SMALL LETTER IOTA - x (latin small letter iota - 0269) - x (turned greek small letter iota - 2129) -03BA GREEK SMALL LETTER KAPPA -03BB GREEK SMALL LETTER LAMDA - = lambda -03BC GREEK SMALL LETTER MU - x (micro sign - 00B5) -03BD GREEK SMALL LETTER NU -03BE GREEK SMALL LETTER XI -03BF GREEK SMALL LETTER OMICRON -03C0 GREEK SMALL LETTER PI - * math constant 3.141592... -03C1 GREEK SMALL LETTER RHO -03C2 GREEK SMALL LETTER FINAL SIGMA - = stigma (the Modern Greek name for this letterform) - * not to be confused with the actual stigma letter - x (greek small letter stigma - 03DB) -03C3 GREEK SMALL LETTER SIGMA - * used symbolically with a numeric value 200 -03C4 GREEK SMALL LETTER TAU -03C5 GREEK SMALL LETTER UPSILON - x (latin small letter upsilon - 028A) - x (latin small letter v with hook - 028B) -03C6 GREEK SMALL LETTER PHI - x (latin small letter phi - 0278) - x (greek phi symbol - 03D5) - * the ordinary Greek letter, showing considerable glyph variation - * in mathematical contexts, the loopy glyph is preferred, to contrast with 03D5 -03C7 GREEK SMALL LETTER CHI -03C8 GREEK SMALL LETTER PSI -03C9 GREEK SMALL LETTER OMEGA -03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA - : 03B9 0308 -03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA - : 03C5 0308 -03CC GREEK SMALL LETTER OMICRON WITH TONOS - : 03BF 0301 -03CD GREEK SMALL LETTER UPSILON WITH TONOS - : 03C5 0301 -03CE GREEK SMALL LETTER OMEGA WITH TONOS - : 03C9 0301 -@ Variant letterforms -03D0 GREEK BETA SYMBOL - = GREEK SMALL LETTER CURLED BETA - # 03B2 greek small letter beta -03D1 GREEK THETA SYMBOL - = GREEK SMALL LETTER SCRIPT THETA - * used as a technical symbol - # 03B8 greek small letter theta -03D2 GREEK UPSILON WITH HOOK SYMBOL - = GREEK CAPITAL LETTER UPSILON HOOK - # 03A5 greek capital letter upsilon -03D3 GREEK UPSILON WITH ACUTE AND HOOK SYMBOL - = GREEK CAPITAL LETTER UPSILON HOOK TONOS - : 03D2 0301 -03D4 GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL - = GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS - : 03D2 0308 -03D5 GREEK PHI SYMBOL - * used as a technical symbol, with a stroked glyph - * maps to "phi1" symbol entities - # 03C6 greek small letter phi -03D6 GREEK PI SYMBOL - = GREEK SMALL LETTER OMEGA PI - * used as a technical symbol - * a variant of pi, looking like omega - # 03C0 greek small letter pi -03D7 GREEK KAI SYMBOL - * used as an ampersand - x (coptic symbol kai - 2CE4) -@ Archaic letters -03D8 GREEK LETTER ARCHAIC KOPPA * -03D9 GREEK SMALL LETTER ARCHAIC KOPPA * - * the Q-shaped archaic koppas are the ordinary alphabetic letters and can also be used as symbols with a numeric value of 90 in classical and pre-classical texts -03DA GREEK LETTER STIGMA - * apparently in origin a cursive form of digamma - * the name "stigma" originally applied to a medieval sigma-tau ligature, whose shape was confusably similar to the cursive digamma - * used as a symbol with a numeric value of 6 -03DB GREEK SMALL LETTER STIGMA - x (greek small letter final sigma - 03C2) -03DC GREEK LETTER DIGAMMA -03DD GREEK SMALL LETTER DIGAMMA - * used as a symbol with a numeric value of 6 -03DE GREEK LETTER KOPPA -03DF GREEK SMALL LETTER KOPPA - * used in modern Greek as a symbol with a numeric value of 90, as in the dating of legal documentation -03E0 GREEK LETTER SAMPI -03E1 GREEK SMALL LETTER SAMPI - * used as a symbol with a numeric value of 900 -@ Coptic letters derived from Demotic -@+ For other Coptic letters see the Coptic Block. -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 -@ Variant letterforms -03F0 GREEK KAPPA SYMBOL - = GREEK SMALL LETTER SCRIPT KAPPA - * used as technical symbol - # 03BA greek small letter kappa -03F1 GREEK RHO SYMBOL - = GREEK SMALL LETTER TAILED RHO - * used as technical symbol - # 03C1 greek small letter rho -03F2 GREEK LUNATE SIGMA SYMBOL - = GREEK SMALL LETTER LUNATE SIGMA - # 03C2 greek small letter final sigma -@ Additional letter -03F3 GREEK LETTER YOT -@ Variant letterforms and symbols -03F4 GREEK CAPITAL THETA SYMBOL - x (cyrillic capital letter fita - 0472) - # 0398 greek capital letter theta -03F5 GREEK LUNATE EPSILON SYMBOL - = straight epsilon - x (small element of - 220A) - # 03B5 greek small letter epsilon -03F6 GREEK REVERSED LUNATE EPSILON SYMBOL - = reversed straight epsilon - x (small contains as member - 220D) -@ Additional archaic letters for Bactrian -03F7 GREEK CAPITAL LETTER SHO -03F8 GREEK SMALL LETTER SHO -@ Variant letterform -03F9 GREEK CAPITAL LUNATE SIGMA SYMBOL - # 03A3 greek capital letter sigma -@ Archaic letters -03FA GREEK CAPITAL LETTER SAN -03FB GREEK SMALL LETTER SAN -@ Symbol -03FC GREEK RHO WITH STROKE SYMBOL - * used with abbreviations containing 03C1 -@ Editorial symbols -03FD GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL - = antisigma -03FE GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL - = sigma periestigmenon -03FF GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL - = antisigma periestigmenon -@@ 0400 Cyrillic 04FF -@ Cyrillic extensions -0400 CYRILLIC CAPITAL LETTER IE WITH GRAVE - : 0415 0300 -0401 CYRILLIC CAPITAL LETTER IO - : 0415 0308 -0402 CYRILLIC CAPITAL LETTER DJE (Serbocroatian) -0403 CYRILLIC CAPITAL LETTER GJE - : 0413 0301 -0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE -0405 CYRILLIC CAPITAL LETTER DZE -0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I - x (latin capital letter i - 0049) - x (cyrillic small letter byelorussian-ukrainian i - 0456) - x (cyrillic letter palochka - 04C0) -0407 CYRILLIC CAPITAL LETTER YI (Ukrainian) - : 0406 0308 -0408 CYRILLIC CAPITAL LETTER JE -0409 CYRILLIC CAPITAL LETTER LJE -040A CYRILLIC CAPITAL LETTER NJE -040B CYRILLIC CAPITAL LETTER TSHE (Serbocroatian) -040C CYRILLIC CAPITAL LETTER KJE - : 041A 0301 -040D CYRILLIC CAPITAL LETTER I WITH GRAVE - : 0418 0300 -040E CYRILLIC CAPITAL LETTER SHORT U (Byelorussian) - : 0423 0306 -040F CYRILLIC CAPITAL LETTER DZHE -@ Basic Russian alphabet -0410 CYRILLIC CAPITAL LETTER A -0411 CYRILLIC CAPITAL LETTER BE - x (latin small letter b with topbar - 0183) -0412 CYRILLIC CAPITAL LETTER VE -0413 CYRILLIC CAPITAL LETTER GHE -0414 CYRILLIC CAPITAL LETTER DE -0415 CYRILLIC CAPITAL LETTER IE -0416 CYRILLIC CAPITAL LETTER ZHE -0417 CYRILLIC CAPITAL LETTER ZE -0418 CYRILLIC CAPITAL LETTER I -0419 CYRILLIC CAPITAL LETTER SHORT I - : 0418 0306 -041A CYRILLIC CAPITAL LETTER KA -041B CYRILLIC CAPITAL LETTER EL -041C CYRILLIC CAPITAL LETTER EM -041D CYRILLIC CAPITAL LETTER EN -041E CYRILLIC CAPITAL LETTER O -041F CYRILLIC CAPITAL LETTER PE -0420 CYRILLIC CAPITAL LETTER ER -0421 CYRILLIC CAPITAL LETTER ES -0422 CYRILLIC CAPITAL LETTER TE -0423 CYRILLIC CAPITAL LETTER U - x (cyrillic capital letter uk - 0478) - x (cyrillic small letter straight u - 04AF) -0424 CYRILLIC CAPITAL LETTER EF -0425 CYRILLIC CAPITAL LETTER HA -0426 CYRILLIC CAPITAL LETTER TSE -0427 CYRILLIC CAPITAL LETTER CHE -0428 CYRILLIC CAPITAL LETTER SHA -0429 CYRILLIC CAPITAL LETTER SHCHA -042A CYRILLIC CAPITAL LETTER HARD SIGN -042B CYRILLIC CAPITAL LETTER YERU -042C CYRILLIC CAPITAL LETTER SOFT SIGN -042D CYRILLIC CAPITAL LETTER E -042E CYRILLIC CAPITAL LETTER YU -042F CYRILLIC CAPITAL LETTER YA -0430 CYRILLIC SMALL LETTER A -0431 CYRILLIC SMALL LETTER BE -0432 CYRILLIC SMALL LETTER VE -0433 CYRILLIC SMALL LETTER GHE -0434 CYRILLIC SMALL LETTER DE -0435 CYRILLIC SMALL LETTER IE -0436 CYRILLIC SMALL LETTER ZHE -0437 CYRILLIC SMALL LETTER ZE -0438 CYRILLIC SMALL LETTER I -0439 CYRILLIC SMALL LETTER SHORT I - : 0438 0306 -043A CYRILLIC SMALL LETTER KA -043B CYRILLIC SMALL LETTER EL -043C CYRILLIC SMALL LETTER EM -043D CYRILLIC SMALL LETTER EN -043E CYRILLIC SMALL LETTER O -043F CYRILLIC SMALL LETTER PE -0440 CYRILLIC SMALL LETTER ER -0441 CYRILLIC SMALL LETTER ES -0442 CYRILLIC SMALL LETTER TE -0443 CYRILLIC SMALL LETTER U -0444 CYRILLIC SMALL LETTER EF -0445 CYRILLIC SMALL LETTER HA -0446 CYRILLIC SMALL LETTER TSE -0447 CYRILLIC SMALL LETTER CHE -0448 CYRILLIC SMALL LETTER SHA -0449 CYRILLIC SMALL LETTER SHCHA -044A CYRILLIC SMALL LETTER HARD SIGN -044B CYRILLIC SMALL LETTER YERU -044C CYRILLIC SMALL LETTER SOFT SIGN - x (latin small letter tone six - 0185) -044D CYRILLIC SMALL LETTER E -044E CYRILLIC SMALL LETTER YU -044F CYRILLIC SMALL LETTER YA -@ Cyrillic extensions -0450 CYRILLIC SMALL LETTER IE WITH GRAVE - * Macedonian - : 0435 0300 -0451 CYRILLIC SMALL LETTER IO - * Russian, ... - : 0435 0308 -0452 CYRILLIC SMALL LETTER DJE (Serbocroatian) - * Serbian - x (latin small letter d with stroke - 0111) -0453 CYRILLIC SMALL LETTER GJE - * Macedonian - : 0433 0301 -0454 CYRILLIC SMALL LETTER UKRAINIAN IE - = Old Cyrillic yest -0455 CYRILLIC SMALL LETTER DZE - = Old Cyrillic zelo - * Macedonian -0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I - = Old Cyrillic i -0457 CYRILLIC SMALL LETTER YI (Ukrainian) - * Ukrainian - : 0456 0308 -0458 CYRILLIC SMALL LETTER JE - * Serbian, Azerbaijani, Altay -0459 CYRILLIC SMALL LETTER LJE - * Serbian, Macedonian - x (latin small letter lj - 01C9) -045A CYRILLIC SMALL LETTER NJE - * Serbian, Macedonian - x (latin small letter nj - 01CC) -045B CYRILLIC SMALL LETTER TSHE (Serbocroatian) - = Old Cyrillic derv - * Serbian - x (latin small letter c with acute - 0107) - x (latin small letter h with stroke - 0127) - x (cyrillic capital letter tshe - 040B) - x (planck constant over two pi - 210F) -045C CYRILLIC SMALL LETTER KJE - * Macedonian - : 043A 0301 -045D CYRILLIC SMALL LETTER I WITH GRAVE - * Macedonian - : 0438 0300 -045E CYRILLIC SMALL LETTER SHORT U (Byelorussian) - * Byelorussian, Uzbek - : 0443 0306 -045F CYRILLIC SMALL LETTER DZHE - * Serbian, Macedonian, Abkhasian - x (latin small letter dz with caron - 01C6) -@ Historic letters -0460 CYRILLIC CAPITAL LETTER OMEGA -0461 CYRILLIC SMALL LETTER OMEGA -0462 CYRILLIC CAPITAL LETTER YAT -0463 CYRILLIC SMALL LETTER YAT -0464 CYRILLIC CAPITAL LETTER IOTIFIED E -0465 CYRILLIC SMALL LETTER IOTIFIED E -0466 CYRILLIC CAPITAL LETTER LITTLE YUS -0467 CYRILLIC SMALL LETTER LITTLE YUS -0468 CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS -0469 CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS -046A CYRILLIC CAPITAL LETTER BIG YUS -046B CYRILLIC SMALL LETTER BIG YUS -046C CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS -046D CYRILLIC SMALL LETTER IOTIFIED BIG YUS -046E CYRILLIC CAPITAL LETTER KSI -046F CYRILLIC SMALL LETTER KSI -0470 CYRILLIC CAPITAL LETTER PSI -0471 CYRILLIC SMALL LETTER PSI -0472 CYRILLIC CAPITAL LETTER FITA -0473 CYRILLIC SMALL LETTER FITA - x (latin small letter barred o - 0275) - x (greek small letter theta - 03B8) -0474 CYRILLIC CAPITAL LETTER IZHITSA -0475 CYRILLIC SMALL LETTER IZHITSA -0476 CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT - : 0474 030F -0477 CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT - : 0475 030F -0478 CYRILLIC CAPITAL LETTER UK - * basic Old Cyrillic uk is unified with CYRILLIC LETTER U - x (cyrillic capital letter u - 0423) -0479 CYRILLIC SMALL LETTER UK -047A CYRILLIC CAPITAL LETTER ROUND OMEGA -047B CYRILLIC SMALL LETTER ROUND OMEGA -047C CYRILLIC CAPITAL LETTER OMEGA WITH TITLO -047D CYRILLIC SMALL LETTER OMEGA WITH TITLO -047E CYRILLIC CAPITAL LETTER OT -047F CYRILLIC SMALL LETTER OT -0480 CYRILLIC CAPITAL LETTER KOPPA -0481 CYRILLIC SMALL LETTER KOPPA -@ Historic miscellaneous -0482 CYRILLIC THOUSANDS SIGN -0483 COMBINING CYRILLIC TITLO -0484 COMBINING CYRILLIC PALATALIZATION - x (combining vertical tilde - 033E) -0485 COMBINING CYRILLIC DASIA PNEUMATA - x (combining reversed comma above - 0314) -0486 COMBINING CYRILLIC PSILI PNEUMATA - x (combining comma above - 0313) -0488 COMBINING CYRILLIC HUNDRED THOUSANDS SIGN -0489 COMBINING CYRILLIC MILLIONS SIGN -@ Extended Cyrillic -048A CYRILLIC CAPITAL LETTER SHORT I WITH TAIL -048B CYRILLIC SMALL LETTER SHORT I WITH TAIL - * Kildin Sami -048C CYRILLIC CAPITAL LETTER SEMISOFT SIGN -048D CYRILLIC SMALL LETTER SEMISOFT SIGN - * Kildin Sami -048E CYRILLIC CAPITAL LETTER ER WITH TICK -048F CYRILLIC SMALL LETTER ER WITH TICK - * Kildin Sami -0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN -0491 CYRILLIC SMALL LETTER GHE WITH UPTURN - * Ukrainian -0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE -0493 CYRILLIC SMALL LETTER GHE WITH STROKE - * Azerbaijani, Bashkir, ... - * full bar form preferred over half-barred "F"-type -0494 CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK -0495 CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK - * Abkhasian, Yakut -0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER -0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER - * Tatar, ... -0498 CYRILLIC CAPITAL LETTER ZE WITH DESCENDER -0499 CYRILLIC SMALL LETTER ZE WITH DESCENDER - * Bashkir - * reversed ogonek form of the descender is preferred -049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER -049B CYRILLIC SMALL LETTER KA WITH DESCENDER - * Abkhasian, Tajik, ... -049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE -049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE - * Azerbaijani -049E CYRILLIC CAPITAL LETTER KA WITH STROKE -049F CYRILLIC SMALL LETTER KA WITH STROKE - * Abkhasian -04A0 CYRILLIC CAPITAL LETTER BASHKIR KA -04A1 CYRILLIC SMALL LETTER BASHKIR KA -04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER -04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER - * Bashkir, ... -04A4 CYRILLIC CAPITAL LIGATURE EN GHE -04A5 CYRILLIC SMALL LIGATURE EN GHE - * Altay, Mari, Yakut - * this is not a decomposable ligature -04A6 CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK (Abkhasian) -04A7 CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK (Abkhasian) - * Abkhasian -04A8 CYRILLIC CAPITAL LETTER ABKHASIAN HA -04A9 CYRILLIC SMALL LETTER ABKHASIAN HA -04AA CYRILLIC CAPITAL LETTER ES WITH DESCENDER -04AB CYRILLIC SMALL LETTER ES WITH DESCENDER - * Bashkir, Chuvash - * reversed ogonek form of the descender is preferred -04AC CYRILLIC CAPITAL LETTER TE WITH DESCENDER -04AD CYRILLIC SMALL LETTER TE WITH DESCENDER - * Abkhasian -04AE CYRILLIC CAPITAL LETTER STRAIGHT U -04AF CYRILLIC SMALL LETTER STRAIGHT U - * stem is straight, unlike LETTER U - * Azerbaijani, Bashkir, ... - x (cyrillic capital letter u - 0423) -04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE -04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE - * Kazakh -04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER -04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER - * Abkhasian, Tajik, Uzbek -04B4 CYRILLIC CAPITAL LIGATURE TE TSE (Abkhasian) -04B5 CYRILLIC SMALL LIGATURE TE TSE (Abkhasian) - * Abkhasian - * this is not a decomposable ligature -04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER -04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER - * Abkhasian, Tajik -04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE -04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE - * Azerbaijani -04BA CYRILLIC CAPITAL LETTER SHHA -04BB CYRILLIC SMALL LETTER SHHA - * originally derived from Latin "h", but uppercase form 04BA is closer to an inverted che (0427) - * Azerbaijani, Bashkir, ... - x (latin small letter h - 0068) -04BC CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04BD CYRILLIC SMALL LETTER ABKHASIAN CHE -04BE CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER -04BF CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER - * ogonek form preferred -04C0 CYRILLIC LETTER PALOCHKA - * aspiration sign in many Caucasian languages - * has no "lowercase form", i.e. is case-invariant - x (latin capital letter i - 0049) - x (cyrillic capital letter byelorussian-ukrainian i - 0406) -04C1 CYRILLIC CAPITAL LETTER ZHE WITH BREVE - : 0416 0306 -04C2 CYRILLIC SMALL LETTER ZHE WITH BREVE - * Moldavian - : 0436 0306 -04C3 CYRILLIC CAPITAL LETTER KA WITH HOOK -04C4 CYRILLIC SMALL LETTER KA WITH HOOK - * Khanty, Chukchi -04C5 CYRILLIC CAPITAL LETTER EL WITH TAIL -04C6 CYRILLIC SMALL LETTER EL WITH TAIL - * Kildin Sami -04C7 CYRILLIC CAPITAL LETTER EN WITH HOOK -04C8 CYRILLIC SMALL LETTER EN WITH HOOK - * Khanty, Chukchi, Nenets -04C9 CYRILLIC CAPITAL LETTER EN WITH TAIL -04CA CYRILLIC SMALL LETTER EN WITH TAIL - * Kildin Sami -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 - * Kildin Sami -04D0 CYRILLIC CAPITAL LETTER A WITH BREVE - : 0410 0306 -04D1 CYRILLIC SMALL LETTER A WITH BREVE - : 0430 0306 -04D2 CYRILLIC CAPITAL LETTER A WITH DIAERESIS - : 0410 0308 -04D3 CYRILLIC SMALL LETTER A WITH DIAERESIS - : 0430 0308 -04D4 CYRILLIC CAPITAL LIGATURE A IE -04D5 CYRILLIC SMALL LIGATURE A IE - * this is not a decomposable ligature - x (latin small letter ae - 00E6) -04D6 CYRILLIC CAPITAL LETTER IE WITH BREVE - : 0415 0306 -04D7 CYRILLIC SMALL LETTER IE WITH BREVE - : 0435 0306 -04D8 CYRILLIC CAPITAL LETTER SCHWA -04D9 CYRILLIC SMALL LETTER SCHWA - x (latin small letter schwa - 0259) -04DA CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS - : 04D8 0308 -04DB CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS - : 04D9 0308 -04DC CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS - : 0416 0308 -04DD CYRILLIC SMALL LETTER ZHE WITH DIAERESIS - : 0436 0308 -04DE CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS - : 0417 0308 -04DF CYRILLIC SMALL LETTER ZE WITH DIAERESIS - : 0437 0308 -04E0 CYRILLIC CAPITAL LETTER ABKHASIAN DZE -04E1 CYRILLIC SMALL LETTER ABKHASIAN DZE - x (latin small letter ezh - 0292) -04E2 CYRILLIC CAPITAL LETTER I WITH MACRON - : 0418 0304 -04E3 CYRILLIC SMALL LETTER I WITH MACRON - : 0438 0304 -04E4 CYRILLIC CAPITAL LETTER I WITH DIAERESIS - : 0418 0308 -04E5 CYRILLIC SMALL LETTER I WITH DIAERESIS - : 0438 0308 -04E6 CYRILLIC CAPITAL LETTER O WITH DIAERESIS - : 041E 0308 -04E7 CYRILLIC SMALL LETTER O WITH DIAERESIS - : 043E 0308 -04E8 CYRILLIC CAPITAL LETTER BARRED O -04E9 CYRILLIC SMALL LETTER BARRED O - x (latin small letter barred o - 0275) -04EA CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS - : 04E8 0308 -04EB CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS - : 04E9 0308 -04EC CYRILLIC CAPITAL LETTER E WITH DIAERESIS - : 042D 0308 -04ED CYRILLIC SMALL LETTER E WITH DIAERESIS - * Kildin Sami - : 044D 0308 -04EE CYRILLIC CAPITAL LETTER U WITH MACRON - : 0423 0304 -04EF CYRILLIC SMALL LETTER U WITH MACRON - : 0443 0304 -04F0 CYRILLIC CAPITAL LETTER U WITH DIAERESIS - : 0423 0308 -04F1 CYRILLIC SMALL LETTER U WITH DIAERESIS - : 0443 0308 -04F2 CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE - : 0423 030B -04F3 CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE - : 0443 030B -04F4 CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS - : 0427 0308 -04F5 CYRILLIC SMALL LETTER CHE WITH DIAERESIS - : 0447 0308 -04F6 CYRILLIC CAPITAL LETTER GHE WITH DESCENDER -04F7 CYRILLIC SMALL LETTER GHE WITH DESCENDER - * Yupik -04F8 CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS - : 042B 0308 -04F9 CYRILLIC SMALL LETTER YERU WITH DIAERESIS - : 044B 0308 -@@ 0500 Cyrillic Supplement 052F -@ Komi letters -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 -@@ 0530 Armenian 058F -@ Uppercase letters -0531 ARMENIAN CAPITAL LETTER AYB -0532 ARMENIAN CAPITAL LETTER BEN -0533 ARMENIAN CAPITAL LETTER GIM -0534 ARMENIAN CAPITAL LETTER DA -0535 ARMENIAN CAPITAL LETTER ECH -0536 ARMENIAN CAPITAL LETTER ZA -0537 ARMENIAN CAPITAL LETTER EH -0538 ARMENIAN CAPITAL LETTER ET -0539 ARMENIAN CAPITAL LETTER TO -053A ARMENIAN CAPITAL LETTER ZHE -053B ARMENIAN CAPITAL LETTER INI -053C ARMENIAN CAPITAL LETTER LIWN -053D ARMENIAN CAPITAL LETTER XEH -053E ARMENIAN CAPITAL LETTER CA -053F ARMENIAN CAPITAL LETTER KEN -0540 ARMENIAN CAPITAL LETTER HO -0541 ARMENIAN CAPITAL LETTER JA -0542 ARMENIAN CAPITAL LETTER GHAD -0543 ARMENIAN CAPITAL LETTER CHEH -0544 ARMENIAN CAPITAL LETTER MEN -0545 ARMENIAN CAPITAL LETTER YI -0546 ARMENIAN CAPITAL LETTER NOW -0547 ARMENIAN CAPITAL LETTER SHA -0548 ARMENIAN CAPITAL LETTER VO -0549 ARMENIAN CAPITAL LETTER CHA -054A ARMENIAN CAPITAL LETTER PEH -054B ARMENIAN CAPITAL LETTER JHEH -054C ARMENIAN CAPITAL LETTER RA -054D ARMENIAN CAPITAL LETTER SEH -054E ARMENIAN CAPITAL LETTER VEW -054F ARMENIAN CAPITAL LETTER TIWN -0550 ARMENIAN CAPITAL LETTER REH -0551 ARMENIAN CAPITAL LETTER CO -0552 ARMENIAN CAPITAL LETTER YIWN -0553 ARMENIAN CAPITAL LETTER PIWR -0554 ARMENIAN CAPITAL LETTER KEH -0555 ARMENIAN CAPITAL LETTER OH -0556 ARMENIAN CAPITAL LETTER FEH -@ Modifier letters -0559 ARMENIAN MODIFIER LETTER LEFT HALF RING - x (modifier letter reversed comma - 02BD) - x (modifier letter left half ring - 02BF) - x (combining reversed comma above - 0314) -055A ARMENIAN APOSTROPHE - = ARMENIAN MODIFIER LETTER RIGHT HALF RING - x (modifier letter apostrophe - 02BC) - x (modifier letter right half ring - 02BE) - x (combining comma above - 0313) -055B ARMENIAN EMPHASIS MARK - = shesht - x (modifier letter acute accent - 02CA) -055C ARMENIAN EXCLAMATION MARK - = batsaganchakan nshan -055D ARMENIAN COMMA - = bowt - x (modifier letter grave accent - 02CB) -055E ARMENIAN QUESTION MARK - = hartsakan nshan -055F ARMENIAN ABBREVIATION MARK - = patiw -@ Lowercase letters -0561 ARMENIAN SMALL LETTER AYB -0562 ARMENIAN SMALL LETTER BEN -0563 ARMENIAN SMALL LETTER GIM -0564 ARMENIAN SMALL LETTER DA -0565 ARMENIAN SMALL LETTER ECH -0566 ARMENIAN SMALL LETTER ZA -0567 ARMENIAN SMALL LETTER EH -0568 ARMENIAN SMALL LETTER ET -0569 ARMENIAN SMALL LETTER TO -056A ARMENIAN SMALL LETTER ZHE -056B ARMENIAN SMALL LETTER INI -056C ARMENIAN SMALL LETTER LIWN -056D ARMENIAN SMALL LETTER XEH -056E ARMENIAN SMALL LETTER CA -056F ARMENIAN SMALL LETTER KEN -0570 ARMENIAN SMALL LETTER HO -0571 ARMENIAN SMALL LETTER JA -0572 ARMENIAN SMALL LETTER GHAD -0573 ARMENIAN SMALL LETTER CHEH -0574 ARMENIAN SMALL LETTER MEN -0575 ARMENIAN SMALL LETTER YI -0576 ARMENIAN SMALL LETTER NOW -0577 ARMENIAN SMALL LETTER SHA -0578 ARMENIAN SMALL LETTER VO -0579 ARMENIAN SMALL LETTER CHA -057A ARMENIAN SMALL LETTER PEH -057B ARMENIAN SMALL LETTER JHEH -057C ARMENIAN SMALL LETTER RA -057D ARMENIAN SMALL LETTER SEH -057E ARMENIAN SMALL LETTER VEW -057F ARMENIAN SMALL LETTER TIWN -0580 ARMENIAN SMALL LETTER REH -0581 ARMENIAN SMALL LETTER CO -0582 ARMENIAN SMALL LETTER YIWN -0583 ARMENIAN SMALL LETTER PIWR -0584 ARMENIAN SMALL LETTER KEH -0585 ARMENIAN SMALL LETTER OH -0586 ARMENIAN SMALL LETTER FEH -0587 ARMENIAN SMALL LIGATURE ECH YIWN - # 0565 0582 -@ Punctuation -0589 ARMENIAN FULL STOP - = vertsaket - * may also be used for Georgian - x (colon - 003A) -058A ARMENIAN HYPHEN - = yentamna -@@ 0590 Hebrew 05FF -@ Cantillation marks -0591 HEBREW ACCENT ETNAHTA - = atnah -0592 HEBREW ACCENT SEGOL - = segolta -0593 HEBREW ACCENT SHALSHELET -0594 HEBREW ACCENT ZAQEF QATAN -0595 HEBREW ACCENT ZAQEF GADOL -0596 HEBREW ACCENT TIPEHA * - = tarha, me'ayla ~ mayla -0597 HEBREW ACCENT REVIA -0598 HEBREW ACCENT ZARQA * - = tsinorit, zinorit; tsinor, zinor - * This character is to be used when Zarqa or Tsinor are placed above, and also for Tsinorit. - x (hebrew accent zinor - 05AE) -0599 HEBREW ACCENT PASHTA -059A HEBREW ACCENT YETIV -059B HEBREW ACCENT TEVIR -059C HEBREW ACCENT GERESH - = teres -059D HEBREW ACCENT GERESH MUQDAM -059E HEBREW ACCENT GERSHAYIM -059F HEBREW ACCENT QARNEY PARA - = pazer gadol -05A0 HEBREW ACCENT TELISHA GEDOLA -05A1 HEBREW ACCENT PAZER - = pazer qatan -05A2 HEBREW ACCENT ATNAH HAFUKH - x (hebrew accent yerah ben yomo - 05AA) -05A3 HEBREW ACCENT MUNAH -05A4 HEBREW ACCENT MAHAPAKH -05A5 HEBREW ACCENT MERKHA * - = yored -05A6 HEBREW ACCENT MERKHA KEFULA -05A7 HEBREW ACCENT DARGA -05A8 HEBREW ACCENT QADMA * - = azla -05A9 HEBREW ACCENT TELISHA QETANA -05AA HEBREW ACCENT YERAH BEN YOMO * - = galgal - x (hebrew accent atnah hafukh - 05A2) -05AB HEBREW ACCENT OLE -05AC HEBREW ACCENT ILUY -05AD HEBREW ACCENT DEHI -05AE HEBREW ACCENT ZINOR - = tsinor; zarqa - * This character is to be used when Zarqa or Tsinor are placed above left. - x (hebrew accent zarqa - 0598) -05AF HEBREW MARK MASORA CIRCLE -@ Points and punctuation -05B0 HEBREW POINT SHEVA -05B1 HEBREW POINT HATAF SEGOL -05B2 HEBREW POINT HATAF PATAH -05B3 HEBREW POINT HATAF QAMATS -05B4 HEBREW POINT HIRIQ -05B5 HEBREW POINT TSERE -05B6 HEBREW POINT SEGOL -05B7 HEBREW POINT PATAH - * furtive patah is not a distinct character -05B8 HEBREW POINT QAMATS - x (hebrew point qamats qatan - 05C7) -05B9 HEBREW POINT HOLAM -05BB HEBREW POINT QUBUTS -05BC HEBREW POINT DAGESH OR MAPIQ (or shuruq) - = shuruq - * falls within the base letter -05BD HEBREW POINT METEG * - = siluq - * may be used as a Hebrew accent sof pasuq -05BE HEBREW PUNCTUATION MAQAF -05BF HEBREW POINT RAFE - x (hebrew point judeo-spanish varika - FB1E) -05C0 HEBREW PUNCTUATION PASEQ * - = legarmeh - * may be treated as spacing punctuation, not as a point - x (vertical line - 007C) -05C1 HEBREW POINT SHIN DOT -05C2 HEBREW POINT SIN DOT -05C3 HEBREW PUNCTUATION SOF PASUQ * - * may be used as a Hebrew punctuation colon - x (colon - 003A) -@ Puncta extraordinaria -05C4 HEBREW MARK UPPER DOT -05C5 HEBREW MARK LOWER DOT - * punctum extraordinarium (Psalms 27:13) - x (hebrew point hiriq - 05B4) -@ Points and punctuation -05C6 HEBREW PUNCTUATION NUN HAFUKHA - * does not historically derive from the letter nun - x (hebrew letter nun - 05E0) -05C7 HEBREW POINT QAMATS QATAN - x (hebrew point qamats - 05B8) -@ Based on ISO 8859-8 -05D0 HEBREW LETTER ALEF - = aleph - x (alef symbol - 2135) -05D1 HEBREW LETTER BET - x (bet symbol - 2136) -05D2 HEBREW LETTER GIMEL - x (gimel symbol - 2137) -05D3 HEBREW LETTER DALET - x (dalet symbol - 2138) -05D4 HEBREW LETTER HE -05D5 HEBREW LETTER VAV -05D6 HEBREW LETTER ZAYIN -05D7 HEBREW LETTER HET -05D8 HEBREW LETTER TET -05D9 HEBREW LETTER YOD -05DA HEBREW LETTER FINAL KAF -05DB HEBREW LETTER KAF -05DC HEBREW LETTER LAMED -05DD HEBREW LETTER FINAL MEM -05DE HEBREW LETTER MEM -05DF HEBREW LETTER FINAL NUN -05E0 HEBREW LETTER NUN -05E1 HEBREW LETTER SAMEKH -05E2 HEBREW LETTER AYIN -05E3 HEBREW LETTER FINAL PE -05E4 HEBREW LETTER PE -05E5 HEBREW LETTER FINAL TSADI -05E6 HEBREW LETTER TSADI - = zade -05E7 HEBREW LETTER QOF -05E8 HEBREW LETTER RESH -05E9 HEBREW LETTER SHIN -05EA HEBREW LETTER TAV -@ Yiddish digraphs -05F0 HEBREW LIGATURE YIDDISH DOUBLE VAV - = tsvey vovn -05F1 HEBREW LIGATURE YIDDISH VAV YOD -05F2 HEBREW LIGATURE YIDDISH DOUBLE YOD - = tsvey yudn -@ Additional punctuation -05F3 HEBREW PUNCTUATION GERESH -05F4 HEBREW PUNCTUATION GERSHAYIM -@@ 0600 Arabic 06FF -@ Subtending marks -0600 ARABIC NUMBER SIGN -0601 ARABIC SIGN SANAH -0602 ARABIC FOOTNOTE MARKER -0603 ARABIC SIGN SAFHA -@ Currency sign -060B AFGHANI SIGN -@ Punctuation -060C ARABIC COMMA - * also used with Thaana and Syriac in modern text - x (comma - 002C) -060D ARABIC DATE SEPARATOR -@ Poetic marks -060E ARABIC POETIC VERSE SIGN -060F ARABIC SIGN MISRA -@ Honorifics -0610 ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM - * represents sallallahu alayhe wasallam "may God's peace and blessings be upon him" -0611 ARABIC SIGN ALAYHE ASSALLAM - * represents alayhe assalam "upon him be peace" -0612 ARABIC SIGN RAHMATULLAH ALAYHE - * represents rahmatullah alayhe "may God have mercy upon him" -0613 ARABIC SIGN RADI ALLAHOU ANHU - * represents radi allahu 'anhu "may God be pleased with him" -0614 ARABIC SIGN TAKHALLUS - * sign placed over the name or nom-de-plume of a poet, or in some writings used to mark all proper names -@ Koranic annotation sign -0615 ARABIC SMALL HIGH TAH - * marks a recommended pause position in some Korans published in Iran and Pakistan - * should not be confused with the small TAH sign used as a diacritic for some letters such as 0679 -@ Punctuation -061B ARABIC SEMICOLON - * also used with Thaana and Syriac in modern text - x (semicolon - 003B) -061E ARABIC TRIPLE DOT PUNCTUATION MARK -061F ARABIC QUESTION MARK - * also used with Thaana and Syriac in modern text - x (question mark - 003F) -@ Based on ISO 8859-6 -0621 ARABIC LETTER HAMZA - x (modifier letter right half ring - 02BE) -0622 ARABIC LETTER ALEF WITH MADDA ABOVE - : 0627 0653 -0623 ARABIC LETTER ALEF WITH HAMZA ABOVE - : 0627 0654 -0624 ARABIC LETTER WAW WITH HAMZA ABOVE - : 0648 0654 -0625 ARABIC LETTER ALEF WITH HAMZA BELOW - : 0627 0655 -0626 ARABIC LETTER YEH WITH HAMZA ABOVE - : 064A 0654 -0627 ARABIC LETTER ALEF -0628 ARABIC LETTER BEH -0629 ARABIC LETTER TEH MARBUTA -062A ARABIC LETTER TEH -062B ARABIC LETTER THEH -062C ARABIC LETTER JEEM -062D ARABIC LETTER HAH -062E ARABIC LETTER KHAH -062F ARABIC LETTER DAL -0630 ARABIC LETTER THAL -0631 ARABIC LETTER REH -0632 ARABIC LETTER ZAIN -0633 ARABIC LETTER SEEN -0634 ARABIC LETTER SHEEN -0635 ARABIC LETTER SAD -0636 ARABIC LETTER DAD -0637 ARABIC LETTER TAH -0638 ARABIC LETTER ZAH -0639 ARABIC LETTER AIN - x (latin small letter ezh reversed - 01B9) - x (modifier letter left half ring - 02BF) -063A ARABIC LETTER GHAIN -0640 ARABIC TATWEEL - = kashida - * inserted to stretch characters - * also used with Syriac -0641 ARABIC LETTER FEH -0642 ARABIC LETTER QAF -0643 ARABIC LETTER KAF -0644 ARABIC LETTER LAM -0645 ARABIC LETTER MEEM -0646 ARABIC LETTER NOON -0647 ARABIC LETTER HEH -0648 ARABIC LETTER WAW -0649 ARABIC LETTER ALEF MAKSURA - * represents YEH-shaped letter with no dots in any positional form -064A ARABIC LETTER YEH -@ Points from ISO 8859-6 -064B ARABIC FATHATAN -064C ARABIC DAMMATAN -064D ARABIC KASRATAN -064E ARABIC FATHA -064F ARABIC DAMMA -0650 ARABIC KASRA -0651 ARABIC SHADDA -0652 ARABIC SUKUN - * marks absence of a vowel after the base consonant - * used in some Korans to mark a long vowel as ignored - x (arabic small high dotless head of khah - 06E1) -@ Combining maddah and hamza -0653 ARABIC MADDAH ABOVE -0654 ARABIC HAMZA ABOVE -0655 ARABIC HAMZA BELOW -@ Other combining marks -0656 ARABIC SUBSCRIPT ALEF -0657 ARABIC INVERTED DAMMA -0658 ARABIC MARK NOON GHUNNA - * Kashmiri and Baluchi - * indicates nasalization in Urdu -0659 ARABIC ZWARAKAY - * Pashto -065A ARABIC VOWEL SIGN SMALL V ABOVE - * African languages -065B ARABIC VOWEL SIGN INVERTED SMALL V ABOVE - * African languages -065C ARABIC VOWEL SIGN DOT BELOW - * African languages -065D ARABIC REVERSED DAMMA - * Ormuri, African languages -065E ARABIC FATHA WITH TWO DOTS - * Kalami -@ Arabic-Indic digits -@+ These digits are used with Arabic proper; for languages of Iran, Pakistan, and India, see the Eastern Arabic-Indic digits at 06F0..06F9. -0660 ARABIC-INDIC DIGIT ZERO -0661 ARABIC-INDIC DIGIT ONE -0662 ARABIC-INDIC DIGIT TWO -0663 ARABIC-INDIC DIGIT THREE -0664 ARABIC-INDIC DIGIT FOUR -0665 ARABIC-INDIC DIGIT FIVE -0666 ARABIC-INDIC DIGIT SIX -0667 ARABIC-INDIC DIGIT SEVEN -0668 ARABIC-INDIC DIGIT EIGHT -0669 ARABIC-INDIC DIGIT NINE -@ Punctuation -066A ARABIC PERCENT SIGN - x (percent sign - 0025) -066B ARABIC DECIMAL SEPARATOR -066C ARABIC THOUSANDS SEPARATOR - x (apostrophe - 0027) - x (right single quotation mark - 2019) -066D ARABIC FIVE POINTED STAR - x (asterisk - 002A) -@ Archaic letters -066E ARABIC LETTER DOTLESS BEH -066F ARABIC LETTER DOTLESS QAF -@ Point -0670 ARABIC LETTER SUPERSCRIPT ALEF - * actually a vowel sign, despite the name -@ Extended Arabic letters -0671 ARABIC LETTER ALEF WASLA - * Koranic Arabic -0672 ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE - * Baluchi, Kashmiri -0673 ARABIC LETTER ALEF WITH WAVY HAMZA BELOW - * Baluchi, Kashmiri -0674 ARABIC LETTER HIGH HAMZA - * Kazakh - * forms digraphs -0675 ARABIC LETTER HIGH HAMZA ALEF - * Kazakh - # 0627 0674 -0676 ARABIC LETTER HIGH HAMZA WAW - * Kazakh - # 0648 0674 -0677 ARABIC LETTER U WITH HAMZA ABOVE - * Kazakh - # 06C7 0674 -0678 ARABIC LETTER HIGH HAMZA YEH - * Kazakh - # 064A 0674 -0679 ARABIC LETTER TTEH - * Urdu -067A ARABIC LETTER TTEHEH - * Sindhi -067B ARABIC LETTER BEEH - * Sindhi -067C ARABIC LETTER TEH WITH RING - * Pashto -067D ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS - * Sindhi -067E ARABIC LETTER PEH - * Persian, Urdu, ... -067F ARABIC LETTER TEHEH - * Sindhi -0680 ARABIC LETTER BEHEH - * Sindhi -0681 ARABIC LETTER HAH WITH HAMZA ABOVE - * Pashto letter "zhe" -0682 ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE - * not used in modern Pashto -0683 ARABIC LETTER NYEH - * Sindhi -0684 ARABIC LETTER DYEH - * Sindhi -0685 ARABIC LETTER HAH WITH THREE DOTS ABOVE - * Pashto -0686 ARABIC LETTER TCHEH - * Persian, Urdu, ... -0687 ARABIC LETTER TCHEHEH - * Sindhi -0688 ARABIC LETTER DDAL - * Urdu -0689 ARABIC LETTER DAL WITH RING - * Pashto -068A ARABIC LETTER DAL WITH DOT BELOW - * Sindhi -068B ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH - * Lahnda -068C ARABIC LETTER DAHAL - * Sindhi -068D ARABIC LETTER DDAHAL - * Sindhi -068E ARABIC LETTER DUL - * older shape for DUL, now obsolete in Sindhi -068F ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS - * Sindhi - * current shape used for DUL -0690 ARABIC LETTER DAL WITH FOUR DOTS ABOVE - * old Urdu, not in current use -0691 ARABIC LETTER RREH - * Urdu -0692 ARABIC LETTER REH WITH SMALL V - * Kurdish -0693 ARABIC LETTER REH WITH RING - * Pashto -0694 ARABIC LETTER REH WITH DOT BELOW - * Kurdish -0695 ARABIC LETTER REH WITH SMALL V BELOW - * Kurdish -0696 ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE - * Pashto -0697 ARABIC LETTER REH WITH TWO DOTS ABOVE - * Dargwa -0698 ARABIC LETTER JEH - * Persian, Urdu, ... -0699 ARABIC LETTER REH WITH FOUR DOTS ABOVE - * Sindhi -069A ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE - * Pashto -069B ARABIC LETTER SEEN WITH THREE DOTS BELOW -069C ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE - * Moroccan Arabic -069D ARABIC LETTER SAD WITH TWO DOTS BELOW - * Turkic -069E ARABIC LETTER SAD WITH THREE DOTS ABOVE - * Berber -069F ARABIC LETTER TAH WITH THREE DOTS ABOVE - * old Hausa -06A0 ARABIC LETTER AIN WITH THREE DOTS ABOVE - * old Malay -06A1 ARABIC LETTER DOTLESS FEH - * Adighe -06A2 ARABIC LETTER FEH WITH DOT MOVED BELOW - * Maghrib Arabic -06A3 ARABIC LETTER FEH WITH DOT BELOW - * Ingush -06A4 ARABIC LETTER VEH - * Middle Eastern Arabic for foreign words - * Kurdish -06A5 ARABIC LETTER FEH WITH THREE DOTS BELOW - * North African Arabic for foreign words -06A6 ARABIC LETTER PEHEH - * Sindhi -06A7 ARABIC LETTER QAF WITH DOT ABOVE - * Maghrib Arabic -06A8 ARABIC LETTER QAF WITH THREE DOTS ABOVE - * Tunisian Arabic -06A9 ARABIC LETTER KEHEH - * Persian, Urdu, ... -06AA ARABIC LETTER SWASH KAF -06AB ARABIC LETTER KAF WITH RING - * Pashto - * may appear like an Arabic KAF (0643) with a ring below the base -06AC ARABIC LETTER KAF WITH DOT ABOVE - * old Malay -06AD ARABIC LETTER NG - * Uighur, Kazakh, old Malay, ... -06AE ARABIC LETTER KAF WITH THREE DOTS BELOW - * Berber -06AF ARABIC LETTER GAF * - * Persian, Urdu, ... -06B0 ARABIC LETTER GAF WITH RING - * Lahnda -06B1 ARABIC LETTER NGOEH - * Sindhi -06B2 ARABIC LETTER GAF WITH TWO DOTS BELOW - * not used in Sindhi -06B3 ARABIC LETTER GUEH - * Sindhi -06B4 ARABIC LETTER GAF WITH THREE DOTS ABOVE - * not used in Sindhi -06B5 ARABIC LETTER LAM WITH SMALL V - * Kurdish -06B6 ARABIC LETTER LAM WITH DOT ABOVE - * Kurdish -06B7 ARABIC LETTER LAM WITH THREE DOTS ABOVE - * Kurdish -06B8 ARABIC LETTER LAM WITH THREE DOTS BELOW -06B9 ARABIC LETTER NOON WITH DOT BELOW -06BA ARABIC LETTER NOON GHUNNA - * Urdu -06BB ARABIC LETTER RNOON - * Sindhi -06BC ARABIC LETTER NOON WITH RING - * Pashto -06BD ARABIC LETTER NOON WITH THREE DOTS ABOVE - * old Malay -06BE ARABIC LETTER HEH DOACHASHMEE - * Urdu - * forms aspirate digraphs -06BF ARABIC LETTER TCHEH WITH DOT ABOVE -06C0 ARABIC LETTER HEH WITH YEH ABOVE - = ARABIC LETTER HAMZAH ON HA - = izafet - * Urdu - * actually a ligature, not an independent letter - : 06D5 0654 -06C1 ARABIC LETTER HEH GOAL - * Urdu -06C2 ARABIC LETTER HEH GOAL WITH HAMZA ABOVE - * Urdu - * actually a ligature, not an independent letter - : 06C1 0654 -06C3 ARABIC LETTER TEH MARBUTA GOAL - * Urdu -06C4 ARABIC LETTER WAW WITH RING - * Kashmiri -06C5 ARABIC LETTER KIRGHIZ OE - * Kirghiz -06C6 ARABIC LETTER OE - * Uighur, Kurdish, Kazakh -06C7 ARABIC LETTER U - * Kirghiz -06C8 ARABIC LETTER YU - * Uighur -06C9 ARABIC LETTER KIRGHIZ YU - * Kazakh, Kirghiz -06CA ARABIC LETTER WAW WITH TWO DOTS ABOVE - * Kurdish -06CB ARABIC LETTER VE - * Uighur, Kazakh -06CC ARABIC LETTER FARSI YEH - * Arabic, Persian, Urdu, ... - * initial and medial forms of this letter have dots - x (arabic letter alef maksura - 0649) - x (arabic letter yeh - 064A) -06CD ARABIC LETTER YEH WITH TAIL - * Pashto, Sindhi -06CE ARABIC LETTER YEH WITH SMALL V - * Kurdish -06CF ARABIC LETTER WAW WITH DOT ABOVE -06D0 ARABIC LETTER E * - * Pashto, Uighur - * used as the letter bbeh in Sindhi -06D1 ARABIC LETTER YEH WITH THREE DOTS BELOW - * old Malay -06D2 ARABIC LETTER YEH BARREE - * Urdu -06D3 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE - * Urdu - * actually a ligature, not an independent letter - : 06D2 0654 -@ Punctuation -06D4 ARABIC FULL STOP - * Urdu -@ Extended Arabic letter -06D5 ARABIC LETTER AE - * Uighur, Kazakh, Kirghiz -@ Koranic annotation signs -06D6 ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA -06D7 ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA -06D8 ARABIC SMALL HIGH MEEM INITIAL FORM -06D9 ARABIC SMALL HIGH LAM ALEF -06DA ARABIC SMALL HIGH JEEM -06DB ARABIC SMALL HIGH THREE DOTS -06DC ARABIC SMALL HIGH SEEN -06DD ARABIC END OF AYAH -06DE ARABIC START OF RUB EL HIZB -06DF ARABIC SMALL HIGH ROUNDED ZERO -06E0 ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO -06E1 ARABIC SMALL HIGH DOTLESS HEAD OF KHAH - = Arabic jazm - * used in some Korans to mark absence of a vowel - x (arabic sukun - 0652) -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 -@ Extended Arabic letters for Parkari -06EE ARABIC LETTER DAL WITH INVERTED V -06EF ARABIC LETTER REH WITH INVERTED V -@ Eastern Arabic-Indic digits -@+ These digits are used with Arabic-script languages of Iran, Pakistan, and India (Persian, Sindhi, Urdu, etc.). For details of variations in preferred glyphs, see the block description for the Arabic script. -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 - * Persian has a different glyph than Sindhi and Urdu -06F5 EXTENDED ARABIC-INDIC DIGIT FIVE - * Persian, Sindhi, and Urdu share glyph different from Arabic -06F6 EXTENDED ARABIC-INDIC DIGIT SIX - * Persian, Sindhi, and Urdu have glyphs different from Arabic -06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN - * Urdu and Sindhi have glyphs different from Arabic -06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT -06F9 EXTENDED ARABIC-INDIC DIGIT NINE -@ Extended Arabic letters -06FA ARABIC LETTER SHEEN WITH DOT BELOW -06FB ARABIC LETTER DAD WITH DOT BELOW -06FC ARABIC LETTER GHAIN WITH DOT BELOW -@ Signs for Sindhi -06FD ARABIC SIGN SINDHI AMPERSAND -06FE ARABIC SIGN SINDHI POSTPOSITION MEN -@ Extended Arabic letter for Parkari -06FF ARABIC LETTER HEH WITH INVERTED V -@@ 0700 Syriac 074F -@ Syriac punctuation and signs -0700 SYRIAC END OF PARAGRAPH - * marks the end of a paragraph -0701 SYRIAC SUPRALINEAR FULL STOP - * marks interrogations, imperatives, and pauses, especially in Biblical texts -0702 SYRIAC SUBLINEAR FULL STOP - * marks subordinate clauses and minor pauses, especially in Biblical texts -0703 SYRIAC SUPRALINEAR COLON - * marks expressions of wonder and has a distinct pausal value in Biblical texts -0704 SYRIAC SUBLINEAR COLON - * used at the end of verses of supplications -0705 SYRIAC HORIZONTAL COLON - * joins two words closely together in a context to which a rising tone is suitable -0706 SYRIAC COLON SKEWED LEFT - * marks a dependent clause -0707 SYRIAC COLON SKEWED RIGHT - * marks the end of a subdivision of the apodosis, or latter part of a Biblical verse -0708 SYRIAC SUPRALINEAR COLON SKEWED LEFT - * marks a minor phrase division -0709 SYRIAC SUBLINEAR COLON SKEWED RIGHT - * marks the end of a real or rhetorical question -070A SYRIAC CONTRACTION - * a contraction mark, mostly used in East Syriac - * placed at the end of an incomplete word -070B SYRIAC HARKLEAN OBELUS - * marks the beginning of a phrase, word, or morpheme that has a marginal note -070C SYRIAC HARKLEAN METOBELUS - * marks the end of a section with a marginal note -070D SYRIAC HARKLEAN ASTERISCUS - * marks the beginning of a phrase, word, or morpheme that has a marginal note -@ Syriac format control character -070F SYRIAC ABBREVIATION MARK - = SAM - * marks the beginning of a Syriac abbreviation -@ Syriac letters -0710 SYRIAC LETTER ALAPH -0711 SYRIAC LETTER SUPERSCRIPT ALAPH - * used in East Syriac texts to indicate an etymological Alaph -0712 SYRIAC LETTER BETH -0713 SYRIAC LETTER GAMAL -0714 SYRIAC LETTER GAMAL GARSHUNI - * used in Garshuni documents -0715 SYRIAC LETTER DALATH -0716 SYRIAC LETTER DOTLESS DALATH RISH - * ambiguous form for undifferentiated early dalath/rish -0717 SYRIAC LETTER HE -0718 SYRIAC LETTER WAW -0719 SYRIAC LETTER ZAIN -071A SYRIAC LETTER HETH -071B SYRIAC LETTER TETH -071C SYRIAC LETTER TETH GARSHUNI - * used in Garshuni documents -071D SYRIAC LETTER YUDH -071E SYRIAC LETTER YUDH HE - * mostly used in East Syriac texts -071F SYRIAC LETTER KAPH -0720 SYRIAC LETTER LAMADH -0721 SYRIAC LETTER MIM -0722 SYRIAC LETTER NUN -0723 SYRIAC LETTER SEMKATH -0724 SYRIAC LETTER FINAL SEMKATH -0725 SYRIAC LETTER E -0726 SYRIAC LETTER PE -0727 SYRIAC LETTER REVERSED PE - * used in Christian Palestinian Aramaic -0728 SYRIAC LETTER SADHE -0729 SYRIAC LETTER QAPH -072A SYRIAC LETTER RISH -072B SYRIAC LETTER SHIN -072C SYRIAC LETTER TAW -@ Persian letters -072D SYRIAC LETTER PERSIAN BHETH -072E SYRIAC LETTER PERSIAN GHAMAL -072F SYRIAC LETTER PERSIAN DHALATH -@ Syriac points (vowels) -0730 SYRIAC PTHAHA ABOVE -0731 SYRIAC PTHAHA BELOW -0732 SYRIAC PTHAHA DOTTED -0733 SYRIAC ZQAPHA ABOVE -0734 SYRIAC ZQAPHA BELOW -0735 SYRIAC ZQAPHA DOTTED -0736 SYRIAC RBASA ABOVE -0737 SYRIAC RBASA BELOW -0738 SYRIAC DOTTED ZLAMA HORIZONTAL -0739 SYRIAC DOTTED ZLAMA ANGULAR -073A SYRIAC HBASA ABOVE -073B SYRIAC HBASA BELOW -073C SYRIAC HBASA-ESASA DOTTED -073D SYRIAC ESASA ABOVE -073E SYRIAC ESASA BELOW -073F SYRIAC RWAHA -@ Syriac marks -0740 SYRIAC FEMININE DOT - * feminine marker used with the Taw feminine suffix -0741 SYRIAC QUSHSHAYA - * indicates a plosive pronunciation -0742 SYRIAC RUKKAKHA - * indicates an aspirated (spirantized) pronunciation -0743 SYRIAC TWO VERTICAL DOTS ABOVE - * accent mark used in ancient manuscripts -0744 SYRIAC TWO VERTICAL DOTS BELOW - * accent mark used in ancient manuscripts -0745 SYRIAC THREE DOTS ABOVE - * diacritic used in Turoyo for letters not found in Syriac -0746 SYRIAC THREE DOTS BELOW - * diacritic used in Turoyo for letters not found in Syriac -0747 SYRIAC OBLIQUE LINE ABOVE - * indication of a silent letter -0748 SYRIAC OBLIQUE LINE BELOW - * indication of a silent letter - * also used to indicate numbers multiplied by a certain constant -0749 SYRIAC MUSIC - * a music mark - * also used in the Syrian Orthodox Anaphora book to mark the breaking of the Eucharist bread -074A SYRIAC BARREKH - * a diacritic cross used in liturgical texts -@ Sogdian letters -074D SYRIAC LETTER SOGDIAN ZHAIN -074E SYRIAC LETTER SOGDIAN KHAPH -074F SYRIAC LETTER SOGDIAN FE -@@ 0750 Arabic Supplement 077F -@ Extended Arabic letters -@+ These are primarily used in Arabic-script orthographies of African languages. -0750 ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW -0751 ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE -0752 ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW -0753 ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE -0754 ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE -0755 ARABIC LETTER BEH WITH INVERTED SMALL V BELOW -0756 ARABIC LETTER BEH WITH SMALL V -0757 ARABIC LETTER HAH WITH TWO DOTS ABOVE -0758 ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW -0759 ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH - * Saraiki -075A ARABIC LETTER DAL WITH INVERTED SMALL V BELOW -075B ARABIC LETTER REH WITH STROKE -075C ARABIC LETTER SEEN WITH FOUR DOTS ABOVE - * Shina -075D ARABIC LETTER AIN WITH TWO DOTS ABOVE -075E ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE -075F ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE -0760 ARABIC LETTER FEH WITH TWO DOTS BELOW -0761 ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW -0762 ARABIC LETTER KEHEH WITH DOT ABOVE - * old Malay, preferred to 06AC - x (arabic letter kaf with dot above - 06AC) -0763 ARABIC LETTER KEHEH WITH THREE DOTS ABOVE - * Moroccan Arabic, Amazigh - x (arabic letter ng - 06AD) -0764 ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW -0765 ARABIC LETTER MEEM WITH DOT ABOVE -0766 ARABIC LETTER MEEM WITH DOT BELOW - * Maba -0767 ARABIC LETTER NOON WITH TWO DOTS BELOW -0768 ARABIC LETTER NOON WITH SMALL TAH - * Saraiki, Pathwari -0769 ARABIC LETTER NOON WITH SMALL V - * Gojri -076A ARABIC LETTER LAM WITH BAR -076B ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE - * Torwali, Ormuri -076C ARABIC LETTER REH WITH HAMZA ABOVE - * Ormuri -076D ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE - * Kalami, Ormuri -@@ 0780 Thaana 07BF -@ Basic consonants -0780 THAANA LETTER HAA -0781 THAANA LETTER SHAVIYANI -0782 THAANA LETTER NOONU -0783 THAANA LETTER RAA -0784 THAANA LETTER BAA -0785 THAANA LETTER LHAVIYANI -0786 THAANA LETTER KAAFU -0787 THAANA LETTER ALIFU -0788 THAANA LETTER VAAVU -0789 THAANA LETTER MEEMU -078A THAANA LETTER FAAFU -078B THAANA LETTER DHAALU -078C THAANA LETTER THAA -078D THAANA LETTER LAAMU -078E THAANA LETTER GAAFU -078F THAANA LETTER GNAVIYANI -0790 THAANA LETTER SEENU -0791 THAANA LETTER DAVIYANI -0792 THAANA LETTER ZAVIYANI -0793 THAANA LETTER TAVIYANI -0794 THAANA LETTER YAA -0795 THAANA LETTER PAVIYANI -0796 THAANA LETTER JAVIYANI -0797 THAANA LETTER CHAVIYANI -@ Extensions for Arabic -0798 THAANA LETTER TTAA -0799 THAANA LETTER HHAA -079A THAANA LETTER KHAA -079B THAANA LETTER THAALU -079C THAANA LETTER ZAA -079D THAANA LETTER SHEENU -079E THAANA LETTER SAADHU -079F THAANA LETTER DAADHU -07A0 THAANA LETTER TO -07A1 THAANA LETTER ZO -07A2 THAANA LETTER AINU -07A3 THAANA LETTER GHAINU -07A4 THAANA LETTER QAAFU -07A5 THAANA LETTER WAAVU -@ Vowels -07A6 THAANA ABAFILI -07A7 THAANA AABAAFILI -07A8 THAANA IBIFILI -07A9 THAANA EEBEEFILI -07AA THAANA UBUFILI -07AB THAANA OOBOOFILI -07AC THAANA EBEFILI -07AD THAANA EYBEYFILI -07AE THAANA OBOFILI -07AF THAANA OABOAFILI -07B0 THAANA SUKUN -@ Consonant for Addu dialect -07B1 THAANA LETTER NAA -@@ 0900 Devanagari 097F -@ Based on ISCII 1988 -@ Various signs -0901 DEVANAGARI SIGN CANDRABINDU - = anunasika - x (combining candrabindu - 0310) -0902 DEVANAGARI SIGN ANUSVARA - = bindu -0903 DEVANAGARI SIGN VISARGA -@ Independent vowels -0904 DEVANAGARI LETTER SHORT A -0905 DEVANAGARI LETTER A -0906 DEVANAGARI LETTER AA -0907 DEVANAGARI LETTER I -0908 DEVANAGARI LETTER II -0909 DEVANAGARI LETTER U -090A DEVANAGARI LETTER UU -090B DEVANAGARI LETTER VOCALIC R -090C DEVANAGARI LETTER VOCALIC L -090D DEVANAGARI LETTER CANDRA E -090E DEVANAGARI LETTER SHORT E - * for transcribing Dravidian short e -090F DEVANAGARI LETTER E -0910 DEVANAGARI LETTER AI -0911 DEVANAGARI LETTER CANDRA O -0912 DEVANAGARI LETTER SHORT O - * for transcribing Dravidian short o -0913 DEVANAGARI LETTER O -0914 DEVANAGARI LETTER AU -@ Consonants -0915 DEVANAGARI LETTER KA -0916 DEVANAGARI LETTER KHA -0917 DEVANAGARI LETTER GA -0918 DEVANAGARI LETTER GHA -0919 DEVANAGARI LETTER NGA -091A DEVANAGARI LETTER CA -091B DEVANAGARI LETTER CHA -091C DEVANAGARI LETTER JA -091D DEVANAGARI LETTER JHA -091E DEVANAGARI LETTER NYA -091F DEVANAGARI LETTER TTA -0920 DEVANAGARI LETTER TTHA -0921 DEVANAGARI LETTER DDA -0922 DEVANAGARI LETTER DDHA -0923 DEVANAGARI LETTER NNA -0924 DEVANAGARI LETTER TA -0925 DEVANAGARI LETTER THA -0926 DEVANAGARI LETTER DA -0927 DEVANAGARI LETTER DHA -0928 DEVANAGARI LETTER NA -0929 DEVANAGARI LETTER NNNA - * for transcribing Dravidian alveolar n - : 0928 093C -092A DEVANAGARI LETTER PA -092B DEVANAGARI LETTER PHA -092C DEVANAGARI LETTER BA -092D DEVANAGARI LETTER BHA -092E DEVANAGARI LETTER MA -092F DEVANAGARI LETTER YA -0930 DEVANAGARI LETTER RA -0931 DEVANAGARI LETTER RRA - * for transcribing Dravidian alveolar r - * half form is represented as "Eyelash RA" - : 0930 093C -0932 DEVANAGARI LETTER LA -0933 DEVANAGARI LETTER LLA -0934 DEVANAGARI LETTER LLLA - * for transcribing Dravidian l - : 0933 093C -0935 DEVANAGARI LETTER VA -0936 DEVANAGARI LETTER SHA -0937 DEVANAGARI LETTER SSA -0938 DEVANAGARI LETTER SA -0939 DEVANAGARI LETTER HA -@ Various signs -093C DEVANAGARI SIGN NUKTA - * for extending the alphabet to new letters -093D DEVANAGARI SIGN AVAGRAHA -@ Dependent vowel signs -093E DEVANAGARI VOWEL SIGN AA -093F DEVANAGARI VOWEL SIGN I - * stands to the left of the consonant -0940 DEVANAGARI VOWEL SIGN II -0941 DEVANAGARI VOWEL SIGN U -0942 DEVANAGARI VOWEL SIGN UU -0943 DEVANAGARI VOWEL SIGN VOCALIC R -0944 DEVANAGARI VOWEL SIGN VOCALIC RR -0945 DEVANAGARI VOWEL SIGN CANDRA E - = candra -0946 DEVANAGARI VOWEL SIGN SHORT E - * for transcribing Dravidian vowels -0947 DEVANAGARI VOWEL SIGN E -0948 DEVANAGARI VOWEL SIGN AI -0949 DEVANAGARI VOWEL SIGN CANDRA O -094A DEVANAGARI VOWEL SIGN SHORT O - * for transcribing Dravidian vowels -094B DEVANAGARI VOWEL SIGN O -094C DEVANAGARI VOWEL SIGN AU -@ Various signs -094D DEVANAGARI SIGN VIRAMA - = halant (the preferred Hindi name) - * suppresses inherent vowel -0950 DEVANAGARI OM -0951 DEVANAGARI STRESS SIGN UDATTA - * mostly used for Rigvedic svarita, with rare use for Yajurvedic udatta -0952 DEVANAGARI STRESS SIGN ANUDATTA -0953 DEVANAGARI GRAVE ACCENT -0954 DEVANAGARI ACUTE ACCENT -@ Additional consonants -0958 DEVANAGARI LETTER QA - : 0915 093C -0959 DEVANAGARI LETTER KHHA - : 0916 093C -095A DEVANAGARI LETTER GHHA - : 0917 093C -095B DEVANAGARI LETTER ZA - : 091C 093C -095C DEVANAGARI LETTER DDDHA - : 0921 093C -095D DEVANAGARI LETTER RHA - : 0922 093C -095E DEVANAGARI LETTER FA - : 092B 093C -095F DEVANAGARI LETTER YYA - : 092F 093C -@ Generic additions -0960 DEVANAGARI LETTER VOCALIC RR -0961 DEVANAGARI LETTER VOCALIC LL -0962 DEVANAGARI VOWEL SIGN VOCALIC L -0963 DEVANAGARI VOWEL SIGN VOCALIC LL -0964 DEVANAGARI DANDA - = purna viram - * phrase separator -0965 DEVANAGARI DOUBLE DANDA - = deergh viram -@ Digits -0966 DEVANAGARI DIGIT ZERO -0967 DEVANAGARI DIGIT ONE -0968 DEVANAGARI DIGIT TWO -0969 DEVANAGARI DIGIT THREE -096A DEVANAGARI DIGIT FOUR -096B DEVANAGARI DIGIT FIVE -096C DEVANAGARI DIGIT SIX -096D DEVANAGARI DIGIT SEVEN -096E DEVANAGARI DIGIT EIGHT -096F DEVANAGARI DIGIT NINE -@ Devanagari-specific additions -0970 DEVANAGARI ABBREVIATION SIGN -@ Glottal stop -097D DEVANAGARI LETTER GLOTTAL STOP - * used for writing Limbu in Devanagari - * a glyph variant has the connecting top bar -@@ 0980 Bengali 09FF -@ Based on ISCII 1988 -@ Various signs -0981 BENGALI SIGN CANDRABINDU -0982 BENGALI SIGN ANUSVARA -0983 BENGALI SIGN VISARGA -@ Independent vowels -0985 BENGALI LETTER A -0986 BENGALI LETTER AA -0987 BENGALI LETTER I -0988 BENGALI LETTER II -0989 BENGALI LETTER U -098A BENGALI LETTER UU -098B BENGALI LETTER VOCALIC R -098C BENGALI LETTER VOCALIC L -098F BENGALI LETTER E -0990 BENGALI LETTER AI -0993 BENGALI LETTER O -0994 BENGALI LETTER AU -@ Consonants -0995 BENGALI LETTER KA -0996 BENGALI LETTER KHA -0997 BENGALI LETTER GA -0998 BENGALI LETTER GHA -0999 BENGALI LETTER NGA -099A BENGALI LETTER CA -099B BENGALI LETTER CHA -099C BENGALI LETTER JA -099D BENGALI LETTER JHA -099E BENGALI LETTER NYA -099F BENGALI LETTER TTA -09A0 BENGALI LETTER TTHA -09A1 BENGALI LETTER DDA -09A2 BENGALI LETTER DDHA -09A3 BENGALI LETTER NNA -09A4 BENGALI LETTER TA -09A5 BENGALI LETTER THA -09A6 BENGALI LETTER DA -09A7 BENGALI LETTER DHA -09A8 BENGALI LETTER NA -09AA BENGALI LETTER PA -09AB BENGALI LETTER PHA -09AC BENGALI LETTER BA - = Bengali va, wa -09AD BENGALI LETTER BHA -09AE BENGALI LETTER MA -09AF BENGALI LETTER YA -09B0 BENGALI LETTER RA -09B2 BENGALI LETTER LA -09B6 BENGALI LETTER SHA -09B7 BENGALI LETTER SSA -09B8 BENGALI LETTER SA -09B9 BENGALI LETTER HA -@ Various signs -09BC BENGALI SIGN NUKTA - * for extending the alphabet to new letters -09BD BENGALI SIGN AVAGRAHA -@ Dependent vowel signs -09BE BENGALI VOWEL SIGN AA -09BF BENGALI VOWEL SIGN I - * stands to the left of the consonant -09C0 BENGALI VOWEL SIGN II -09C1 BENGALI VOWEL SIGN U -09C2 BENGALI VOWEL SIGN UU -09C3 BENGALI VOWEL SIGN VOCALIC R -09C4 BENGALI VOWEL SIGN VOCALIC RR -09C7 BENGALI VOWEL SIGN E - * stands to the left of the consonant -09C8 BENGALI VOWEL SIGN AI - * stands to the left of the consonant -@ Two-part dependent vowel signs -@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for most processing. -09CB BENGALI VOWEL SIGN O - : 09C7 09BE -09CC BENGALI VOWEL SIGN AU - : 09C7 09D7 -@ Sign -09CD BENGALI SIGN VIRAMA - = hasant (Bengali term for halant) -@ Additional consonant -09CE BENGALI LETTER KHANDA TA -@ Sign -09D7 BENGALI AU LENGTH MARK -@ Additional consonants -09DC BENGALI LETTER RRA - : 09A1 09BC -09DD BENGALI LETTER RHA - : 09A2 09BC -09DF BENGALI LETTER YYA - : 09AF 09BC -@ Generic additions -09E0 BENGALI LETTER VOCALIC RR -09E1 BENGALI LETTER VOCALIC LL -09E2 BENGALI VOWEL SIGN VOCALIC L -09E3 BENGALI VOWEL SIGN VOCALIC LL -@ Digits -09E6 BENGALI DIGIT ZERO -09E7 BENGALI DIGIT ONE -09E8 BENGALI DIGIT TWO -09E9 BENGALI DIGIT THREE -09EA BENGALI DIGIT FOUR -09EB BENGALI DIGIT FIVE -09EC BENGALI DIGIT SIX -09ED BENGALI DIGIT SEVEN -09EE BENGALI DIGIT EIGHT -09EF BENGALI DIGIT NINE -@ Bengali-specific additions -09F0 BENGALI LETTER RA WITH MIDDLE DIAGONAL (Assamese) - * Assamese -09F1 BENGALI LETTER RA WITH LOWER DIAGONAL (Assamese) - = BENGALI LETTER VA WITH LOWER DIAGONAL - * Assamese -09F2 BENGALI RUPEE MARK -09F3 BENGALI RUPEE SIGN -09F4 BENGALI CURRENCY NUMERATOR ONE - * not in current usage -09F5 BENGALI CURRENCY NUMERATOR TWO - * not in current usage -09F6 BENGALI CURRENCY NUMERATOR THREE - * not in current usage -09F7 BENGALI CURRENCY NUMERATOR FOUR -09F8 BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR -09F9 BENGALI CURRENCY DENOMINATOR SIXTEEN -09FA BENGALI ISSHAR -@@ 0A00 Gurmukhi 0A7F -@ Based on ISCII 1988 -@ Various signs -0A01 GURMUKHI SIGN ADAK BINDI -0A02 GURMUKHI SIGN BINDI -0A03 GURMUKHI SIGN VISARGA -@ Independent vowels -0A05 GURMUKHI LETTER A -0A06 GURMUKHI LETTER AA -0A07 GURMUKHI LETTER I -0A08 GURMUKHI LETTER II -0A09 GURMUKHI LETTER U -0A0A GURMUKHI LETTER UU -0A0F GURMUKHI LETTER EE -0A10 GURMUKHI LETTER AI -0A13 GURMUKHI LETTER OO -0A14 GURMUKHI LETTER AU -@ Consonants -0A15 GURMUKHI LETTER KA -0A16 GURMUKHI LETTER KHA -0A17 GURMUKHI LETTER GA -0A18 GURMUKHI LETTER GHA -0A19 GURMUKHI LETTER NGA -0A1A GURMUKHI LETTER CA -0A1B GURMUKHI LETTER CHA -0A1C GURMUKHI LETTER JA -0A1D GURMUKHI LETTER JHA -0A1E GURMUKHI LETTER NYA -0A1F GURMUKHI LETTER TTA -0A20 GURMUKHI LETTER TTHA -0A21 GURMUKHI LETTER DDA -0A22 GURMUKHI LETTER DDHA -0A23 GURMUKHI LETTER NNA -0A24 GURMUKHI LETTER TA -0A25 GURMUKHI LETTER THA -0A26 GURMUKHI LETTER DA -0A27 GURMUKHI LETTER DHA -0A28 GURMUKHI LETTER NA -0A2A GURMUKHI LETTER PA -0A2B GURMUKHI LETTER PHA -0A2C GURMUKHI LETTER BA -0A2D GURMUKHI LETTER BHA -0A2E GURMUKHI LETTER MA -0A2F GURMUKHI LETTER YA -0A30 GURMUKHI LETTER RA -0A32 GURMUKHI LETTER LA -0A33 GURMUKHI LETTER LLA - : 0A32 0A3C -0A35 GURMUKHI LETTER VA -0A36 GURMUKHI LETTER SHA - : 0A38 0A3C -0A38 GURMUKHI LETTER SA -0A39 GURMUKHI LETTER HA -@ Various signs -0A3C GURMUKHI SIGN NUKTA - * for extending the alphabet to new letters -@ Dependent vowel signs -0A3E GURMUKHI VOWEL SIGN AA -0A3F GURMUKHI VOWEL SIGN I - * stands to the left of the consonant -0A40 GURMUKHI VOWEL SIGN II -0A41 GURMUKHI VOWEL SIGN U -0A42 GURMUKHI VOWEL SIGN UU -0A47 GURMUKHI VOWEL SIGN EE -0A48 GURMUKHI VOWEL SIGN AI -0A4B GURMUKHI VOWEL SIGN OO -0A4C GURMUKHI VOWEL SIGN AU -@ Various signs -0A4D GURMUKHI SIGN VIRAMA -@ Additional consonants -0A59 GURMUKHI LETTER KHHA - : 0A16 0A3C -0A5A GURMUKHI LETTER GHHA - : 0A17 0A3C -0A5B GURMUKHI LETTER ZA - : 0A1C 0A3C -0A5C GURMUKHI LETTER RRA -0A5E GURMUKHI LETTER FA - : 0A2B 0A3C -@ Digits -0A66 GURMUKHI DIGIT ZERO -0A67 GURMUKHI DIGIT ONE -0A68 GURMUKHI DIGIT TWO -0A69 GURMUKHI DIGIT THREE -0A6A GURMUKHI DIGIT FOUR -0A6B GURMUKHI DIGIT FIVE -0A6C GURMUKHI DIGIT SIX -0A6D GURMUKHI DIGIT SEVEN -0A6E GURMUKHI DIGIT EIGHT -0A6F GURMUKHI DIGIT NINE -@ Gurmukhi-specific additions -0A70 GURMUKHI TIPPI - * nasalization -0A71 GURMUKHI ADDAK - * doubles following consonant -0A72 GURMUKHI IRI - * base for vowels -0A73 GURMUKHI URA - * base for vowels -0A74 GURMUKHI EK ONKAR - * God is One -@@ 0A80 Gujarati 0AFF -@ Based on ISCII 1988 -@ Various signs -0A81 GUJARATI SIGN CANDRABINDU -0A82 GUJARATI SIGN ANUSVARA -0A83 GUJARATI SIGN VISARGA -@ Independent vowels -0A85 GUJARATI LETTER A -0A86 GUJARATI LETTER AA -0A87 GUJARATI LETTER I -0A88 GUJARATI LETTER II -0A89 GUJARATI LETTER U -0A8A GUJARATI LETTER UU -0A8B GUJARATI LETTER VOCALIC R -0A8C GUJARATI LETTER VOCALIC L - * used with Sanskrit text -0A8D GUJARATI VOWEL CANDRA E -0A8F GUJARATI LETTER E -0A90 GUJARATI LETTER AI -0A91 GUJARATI VOWEL CANDRA O -0A93 GUJARATI LETTER O -0A94 GUJARATI LETTER AU -@ Consonants -0A95 GUJARATI LETTER KA -0A96 GUJARATI LETTER KHA -0A97 GUJARATI LETTER GA -0A98 GUJARATI LETTER GHA -0A99 GUJARATI LETTER NGA -0A9A GUJARATI LETTER CA -0A9B GUJARATI LETTER CHA -0A9C GUJARATI LETTER JA -0A9D GUJARATI LETTER JHA -0A9E GUJARATI LETTER NYA -0A9F GUJARATI LETTER TTA -0AA0 GUJARATI LETTER TTHA -0AA1 GUJARATI LETTER DDA -0AA2 GUJARATI LETTER DDHA -0AA3 GUJARATI LETTER NNA -0AA4 GUJARATI LETTER TA -0AA5 GUJARATI LETTER THA -0AA6 GUJARATI LETTER DA -0AA7 GUJARATI LETTER DHA -0AA8 GUJARATI LETTER NA -0AAA GUJARATI LETTER PA -0AAB GUJARATI LETTER PHA -0AAC GUJARATI LETTER BA -0AAD GUJARATI LETTER BHA -0AAE GUJARATI LETTER MA -0AAF GUJARATI LETTER YA -0AB0 GUJARATI LETTER RA -0AB2 GUJARATI LETTER LA -0AB3 GUJARATI LETTER LLA -0AB5 GUJARATI LETTER VA -0AB6 GUJARATI LETTER SHA -0AB7 GUJARATI LETTER SSA -0AB8 GUJARATI LETTER SA -0AB9 GUJARATI LETTER HA -@ Various signs -0ABC GUJARATI SIGN NUKTA - * for extending the alphabet to new letters -0ABD GUJARATI SIGN AVAGRAHA -@ Dependent vowel signs -0ABE GUJARATI VOWEL SIGN AA -0ABF GUJARATI VOWEL SIGN I - * stands to the left of the consonant -0AC0 GUJARATI VOWEL SIGN II -0AC1 GUJARATI VOWEL SIGN U -0AC2 GUJARATI VOWEL SIGN UU -0AC3 GUJARATI VOWEL SIGN VOCALIC R -0AC4 GUJARATI VOWEL SIGN VOCALIC RR -0AC5 GUJARATI VOWEL SIGN CANDRA E -0AC7 GUJARATI VOWEL SIGN E -0AC8 GUJARATI VOWEL SIGN AI -0AC9 GUJARATI VOWEL SIGN CANDRA O -0ACB GUJARATI VOWEL SIGN O -0ACC GUJARATI VOWEL SIGN AU -@ Various signs -0ACD GUJARATI SIGN VIRAMA -0AD0 GUJARATI OM -@ Generic addition -0AE0 GUJARATI LETTER VOCALIC RR -@ Additions for use with Sanskrit text -0AE1 GUJARATI LETTER VOCALIC LL -0AE2 GUJARATI VOWEL SIGN VOCALIC L -0AE3 GUJARATI VOWEL SIGN VOCALIC LL -@ Digits -0AE6 GUJARATI DIGIT ZERO -0AE7 GUJARATI DIGIT ONE -0AE8 GUJARATI DIGIT TWO -0AE9 GUJARATI DIGIT THREE -0AEA GUJARATI DIGIT FOUR -0AEB GUJARATI DIGIT FIVE -0AEC GUJARATI DIGIT SIX -0AED GUJARATI DIGIT SEVEN -0AEE GUJARATI DIGIT EIGHT -0AEF GUJARATI DIGIT NINE -@ Currency sign -0AF1 GUJARATI RUPEE SIGN -@@ 0B00 Oriya 0B7F -@ Based on ISCII 1988 -@ Various signs -0B01 ORIYA SIGN CANDRABINDU -0B02 ORIYA SIGN ANUSVARA -0B03 ORIYA SIGN VISARGA -@ Independent vowels -0B05 ORIYA LETTER A -0B06 ORIYA LETTER AA -0B07 ORIYA LETTER I -0B08 ORIYA LETTER II -0B09 ORIYA LETTER U -0B0A ORIYA LETTER UU -0B0B ORIYA LETTER VOCALIC R -0B0C ORIYA LETTER VOCALIC L -0B0F ORIYA LETTER E -0B10 ORIYA LETTER AI -0B13 ORIYA LETTER O -0B14 ORIYA LETTER AU -@ Consonants -0B15 ORIYA LETTER KA -0B16 ORIYA LETTER KHA -0B17 ORIYA LETTER GA -0B18 ORIYA LETTER GHA -0B19 ORIYA LETTER NGA -0B1A ORIYA LETTER CA -0B1B ORIYA LETTER CHA -0B1C ORIYA LETTER JA -0B1D ORIYA LETTER JHA -0B1E ORIYA LETTER NYA -0B1F ORIYA LETTER TTA -0B20 ORIYA LETTER TTHA -0B21 ORIYA LETTER DDA -0B22 ORIYA LETTER DDHA -0B23 ORIYA LETTER NNA -0B24 ORIYA LETTER TA -0B25 ORIYA LETTER THA -0B26 ORIYA LETTER DA -0B27 ORIYA LETTER DHA -0B28 ORIYA LETTER NA -0B2A ORIYA LETTER PA -0B2B ORIYA LETTER PHA -0B2C ORIYA LETTER BA - x (oriya letter va - 0B35) -0B2D ORIYA LETTER BHA -0B2E ORIYA LETTER MA -0B2F ORIYA LETTER YA - = ja -0B30 ORIYA LETTER RA -0B32 ORIYA LETTER LA -0B33 ORIYA LETTER LLA -0B35 ORIYA LETTER VA - x (oriya letter ba - 0B2C) -0B36 ORIYA LETTER SHA -0B37 ORIYA LETTER SSA -0B38 ORIYA LETTER SA -0B39 ORIYA LETTER HA -@ Various signs -0B3C ORIYA SIGN NUKTA - * for extending the alphabet to new letters -0B3D ORIYA SIGN AVAGRAHA -@ Dependent vowel signs -0B3E ORIYA VOWEL SIGN AA -0B3F ORIYA VOWEL SIGN I -0B40 ORIYA VOWEL SIGN II -0B41 ORIYA VOWEL SIGN U -0B42 ORIYA VOWEL SIGN UU -0B43 ORIYA VOWEL SIGN VOCALIC R -0B47 ORIYA VOWEL SIGN E - * stands to the left of the consonant -0B48 ORIYA VOWEL SIGN AI - * pieces left of and above the consonant - : 0B47 0B56 -@ Two-part dependent vowel signs -@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for most processing. -0B4B ORIYA VOWEL SIGN O - : 0B47 0B3E -0B4C ORIYA VOWEL SIGN AU - : 0B47 0B57 -@ Various signs -0B4D ORIYA SIGN VIRAMA -0B56 ORIYA AI LENGTH MARK -0B57 ORIYA AU LENGTH MARK -@ Additional consonants -0B5C ORIYA LETTER RRA - = dda - : 0B21 0B3C -0B5D ORIYA LETTER RHA - = ddha - : 0B22 0B3C -0B5F ORIYA LETTER YYA - = ya -@ Generic additions -0B60 ORIYA LETTER VOCALIC RR -0B61 ORIYA LETTER VOCALIC LL -@ Digits -0B66 ORIYA DIGIT ZERO -0B67 ORIYA DIGIT ONE -0B68 ORIYA DIGIT TWO -0B69 ORIYA DIGIT THREE -0B6A ORIYA DIGIT FOUR -0B6B ORIYA DIGIT FIVE -0B6C ORIYA DIGIT SIX -0B6D ORIYA DIGIT SEVEN -0B6E ORIYA DIGIT EIGHT -0B6F ORIYA DIGIT NINE -@ Oriya-specific additions -0B70 ORIYA ISSHAR -0B71 ORIYA LETTER WA - x (oriya letter o - 0B13) - x (oriya letter va - 0B35) -@@ 0B80 Tamil 0BFF -@ Based on ISCII 1988 -@ Various signs -0B82 TAMIL SIGN ANUSVARA - * not used in Tamil -0B83 TAMIL SIGN VISARGA - = aytham -@ Independent vowels -0B85 TAMIL LETTER A -0B86 TAMIL LETTER AA -0B87 TAMIL LETTER I -0B88 TAMIL LETTER II -0B89 TAMIL LETTER U -0B8A TAMIL LETTER UU -0B8E TAMIL LETTER E -0B8F TAMIL LETTER EE -0B90 TAMIL LETTER AI -0B92 TAMIL LETTER O -0B93 TAMIL LETTER OO -0B94 TAMIL LETTER AU - : 0B92 0BD7 -@ Consonants -0B95 TAMIL LETTER KA -0B99 TAMIL LETTER NGA -0B9A TAMIL LETTER CA -0B9C TAMIL LETTER JA -0B9E TAMIL LETTER NYA -0B9F TAMIL LETTER TTA -0BA3 TAMIL LETTER NNA -0BA4 TAMIL LETTER TA -0BA8 TAMIL LETTER NA -0BA9 TAMIL LETTER NNNA -0BAA TAMIL LETTER PA -0BAE TAMIL LETTER MA -0BAF TAMIL LETTER YA -0BB0 TAMIL LETTER RA -0BB1 TAMIL LETTER RRA -0BB2 TAMIL LETTER LA -0BB3 TAMIL LETTER LLA -0BB4 TAMIL LETTER LLLA -0BB5 TAMIL LETTER VA -0BB6 TAMIL LETTER SHA -0BB7 TAMIL LETTER SSA -0BB8 TAMIL LETTER SA -0BB9 TAMIL LETTER HA -@ Dependent vowel signs -0BBE TAMIL VOWEL SIGN AA -0BBF TAMIL VOWEL SIGN I -0BC0 TAMIL VOWEL SIGN II -0BC1 TAMIL VOWEL SIGN U -0BC2 TAMIL VOWEL SIGN UU -0BC6 TAMIL VOWEL SIGN E - * stands to the left of the consonant -0BC7 TAMIL VOWEL SIGN EE - * stands to the left of the consonant -0BC8 TAMIL VOWEL SIGN AI - * stands to the left of the consonant -@ Two-part dependent vowel signs -@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for most processing. -0BCA TAMIL VOWEL SIGN O - : 0BC6 0BBE -0BCB TAMIL VOWEL SIGN OO - : 0BC7 0BBE -0BCC TAMIL VOWEL SIGN AU - : 0BC6 0BD7 -@ Various signs -0BCD TAMIL SIGN VIRAMA -0BD7 TAMIL AU LENGTH MARK -@ Digits -0BE6 TAMIL DIGIT ZERO -0BE7 TAMIL DIGIT ONE -0BE8 TAMIL DIGIT TWO -0BE9 TAMIL DIGIT THREE -0BEA TAMIL DIGIT FOUR -0BEB TAMIL DIGIT FIVE -0BEC TAMIL DIGIT SIX -0BED TAMIL DIGIT SEVEN -0BEE TAMIL DIGIT EIGHT -0BEF TAMIL DIGIT NINE -@ Tamil numerics -0BF0 TAMIL NUMBER TEN -0BF1 TAMIL NUMBER ONE HUNDRED -0BF2 TAMIL NUMBER ONE THOUSAND -@ Tamil symbols -0BF3 TAMIL DAY SIGN (Naal) -0BF4 TAMIL MONTH SIGN (Maatham) -0BF5 TAMIL YEAR SIGN (Varudam) -0BF6 TAMIL DEBIT SIGN (Patru) -0BF7 TAMIL CREDIT SIGN (Varavu) -0BF8 TAMIL AS ABOVE SIGN (Merpadi) -@ Currency symbol -0BF9 TAMIL RUPEE SIGN (Rupai) -@ Tamil symbol -0BFA TAMIL NUMBER SIGN (Enn) -@@ 0C00 Telugu 0C7F -@ Based on ISCII 1988 -@ Various signs -0C01 TELUGU SIGN CANDRABINDU -0C02 TELUGU SIGN ANUSVARA - = sunna -0C03 TELUGU SIGN VISARGA -@ Independent vowels -0C05 TELUGU LETTER A -0C06 TELUGU LETTER AA -0C07 TELUGU LETTER I -0C08 TELUGU LETTER II -0C09 TELUGU LETTER U -0C0A TELUGU LETTER UU -0C0B TELUGU LETTER VOCALIC R -0C0C TELUGU LETTER VOCALIC L -0C0E TELUGU LETTER E -0C0F TELUGU LETTER EE -0C10 TELUGU LETTER AI -0C12 TELUGU LETTER O -0C13 TELUGU LETTER OO -0C14 TELUGU LETTER AU -@ Consonants -0C15 TELUGU LETTER KA -0C16 TELUGU LETTER KHA -0C17 TELUGU LETTER GA -0C18 TELUGU LETTER GHA -0C19 TELUGU LETTER NGA -0C1A TELUGU LETTER CA -0C1B TELUGU LETTER CHA -0C1C TELUGU LETTER JA -0C1D TELUGU LETTER JHA -0C1E TELUGU LETTER NYA -0C1F TELUGU LETTER TTA -0C20 TELUGU LETTER TTHA -0C21 TELUGU LETTER DDA -0C22 TELUGU LETTER DDHA -0C23 TELUGU LETTER NNA -0C24 TELUGU LETTER TA -0C25 TELUGU LETTER THA -0C26 TELUGU LETTER DA -0C27 TELUGU LETTER DHA -0C28 TELUGU LETTER NA -0C2A TELUGU LETTER PA -0C2B TELUGU LETTER PHA -0C2C TELUGU LETTER BA -0C2D TELUGU LETTER BHA -0C2E TELUGU LETTER MA -0C2F TELUGU LETTER YA -0C30 TELUGU LETTER RA -0C31 TELUGU LETTER RRA -0C32 TELUGU LETTER LA -0C33 TELUGU LETTER LLA -0C35 TELUGU LETTER VA -0C36 TELUGU LETTER SHA -0C37 TELUGU LETTER SSA -0C38 TELUGU LETTER SA -0C39 TELUGU LETTER HA -@ Dependent vowel signs -0C3E TELUGU VOWEL SIGN AA -0C3F TELUGU VOWEL SIGN I -0C40 TELUGU VOWEL SIGN II -0C41 TELUGU VOWEL SIGN U -0C42 TELUGU VOWEL SIGN UU -0C43 TELUGU VOWEL SIGN VOCALIC R -0C44 TELUGU VOWEL SIGN VOCALIC RR -0C46 TELUGU VOWEL SIGN E -0C47 TELUGU VOWEL SIGN EE -0C48 TELUGU VOWEL SIGN AI - : 0C46 0C56 -0C4A TELUGU VOWEL SIGN O -0C4B TELUGU VOWEL SIGN OO -0C4C TELUGU VOWEL SIGN AU -@ Various signs -0C4D TELUGU SIGN VIRAMA - = halant (the preferred name) -0C55 TELUGU LENGTH MARK -0C56 TELUGU AI LENGTH MARK -@ Generic additions -0C60 TELUGU LETTER VOCALIC RR -0C61 TELUGU LETTER VOCALIC LL -@ Digits -0C66 TELUGU DIGIT ZERO -0C67 TELUGU DIGIT ONE -0C68 TELUGU DIGIT TWO -0C69 TELUGU DIGIT THREE -0C6A TELUGU DIGIT FOUR -0C6B TELUGU DIGIT FIVE -0C6C TELUGU DIGIT SIX -0C6D TELUGU DIGIT SEVEN -0C6E TELUGU DIGIT EIGHT -0C6F TELUGU DIGIT NINE -@@ 0C80 Kannada 0CFF -@ Based on ISCII 1988 -@ Various signs -0C82 KANNADA SIGN ANUSVARA -0C83 KANNADA SIGN VISARGA -@ Independent vowels -0C85 KANNADA LETTER A -0C86 KANNADA LETTER AA -0C87 KANNADA LETTER I -0C88 KANNADA LETTER II -0C89 KANNADA LETTER U -0C8A KANNADA LETTER UU -0C8B KANNADA LETTER VOCALIC R -0C8C KANNADA LETTER VOCALIC L -0C8E KANNADA LETTER E -0C8F KANNADA LETTER EE -0C90 KANNADA LETTER AI -0C92 KANNADA LETTER O -0C93 KANNADA LETTER OO -0C94 KANNADA LETTER AU -@ Consonants -0C95 KANNADA LETTER KA -0C96 KANNADA LETTER KHA -0C97 KANNADA LETTER GA -0C98 KANNADA LETTER GHA -0C99 KANNADA LETTER NGA -0C9A KANNADA LETTER CA -0C9B KANNADA LETTER CHA -0C9C KANNADA LETTER JA -0C9D KANNADA LETTER JHA -0C9E KANNADA LETTER NYA -0C9F KANNADA LETTER TTA -0CA0 KANNADA LETTER TTHA -0CA1 KANNADA LETTER DDA -0CA2 KANNADA LETTER DDHA -0CA3 KANNADA LETTER NNA -0CA4 KANNADA LETTER TA -0CA5 KANNADA LETTER THA -0CA6 KANNADA LETTER DA -0CA7 KANNADA LETTER DHA -0CA8 KANNADA LETTER NA -0CAA KANNADA LETTER PA -0CAB KANNADA LETTER PHA -0CAC KANNADA LETTER BA -0CAD KANNADA LETTER BHA -0CAE KANNADA LETTER MA -0CAF KANNADA LETTER YA -0CB0 KANNADA LETTER RA -0CB1 KANNADA LETTER RRA -0CB2 KANNADA LETTER LA -0CB3 KANNADA LETTER LLA -0CB5 KANNADA LETTER VA -0CB6 KANNADA LETTER SHA -0CB7 KANNADA LETTER SSA -0CB8 KANNADA LETTER SA -0CB9 KANNADA LETTER HA -@ Various signs -0CBC KANNADA SIGN NUKTA -0CBD KANNADA SIGN AVAGRAHA -@ Dependent vowel signs -0CBE KANNADA VOWEL SIGN AA -0CBF KANNADA VOWEL SIGN I -0CC0 KANNADA VOWEL SIGN II - : 0CBF 0CD5 -0CC1 KANNADA VOWEL SIGN U -0CC2 KANNADA VOWEL SIGN UU -0CC3 KANNADA VOWEL SIGN VOCALIC R -0CC4 KANNADA VOWEL SIGN VOCALIC RR -0CC6 KANNADA VOWEL SIGN E -0CC7 KANNADA VOWEL SIGN EE - : 0CC6 0CD5 -0CC8 KANNADA VOWEL SIGN AI - : 0CC6 0CD6 -0CCA KANNADA VOWEL SIGN O - : 0CC6 0CC2 -0CCB KANNADA VOWEL SIGN OO - : 0CCA 0CD5 -0CCC KANNADA VOWEL SIGN AU -@ Various signs -0CCD KANNADA SIGN VIRAMA - * preferred name is halant -0CD5 KANNADA LENGTH MARK -0CD6 KANNADA AI LENGTH MARK -@ Additional consonants -0CDE KANNADA LETTER FA - * obsolete historic letter - * name is a mistake for LLLA -@ Generic additions -0CE0 KANNADA LETTER VOCALIC RR -0CE1 KANNADA LETTER VOCALIC LL -@ Digits -0CE6 KANNADA DIGIT ZERO -0CE7 KANNADA DIGIT ONE -0CE8 KANNADA DIGIT TWO -0CE9 KANNADA DIGIT THREE -0CEA KANNADA DIGIT FOUR -0CEB KANNADA DIGIT FIVE -0CEC KANNADA DIGIT SIX -0CED KANNADA DIGIT SEVEN -0CEE KANNADA DIGIT EIGHT -0CEF KANNADA DIGIT NINE -@@ 0D00 Malayalam 0D7F -@ Based on ISCII 1988 -@ Various signs -0D02 MALAYALAM SIGN ANUSVARA -0D03 MALAYALAM SIGN VISARGA -@ Independent vowels -0D05 MALAYALAM LETTER A -0D06 MALAYALAM LETTER AA -0D07 MALAYALAM LETTER I -0D08 MALAYALAM LETTER II -0D09 MALAYALAM LETTER U -0D0A MALAYALAM LETTER UU -0D0B MALAYALAM LETTER VOCALIC R -0D0C MALAYALAM LETTER VOCALIC L -0D0E MALAYALAM LETTER E -0D0F MALAYALAM LETTER EE -0D10 MALAYALAM LETTER AI -0D12 MALAYALAM LETTER O -0D13 MALAYALAM LETTER OO -0D14 MALAYALAM LETTER AU -@ Consonants -@+ Alternate romanizations are shown as aliases for some letters to clarify their identity. -0D15 MALAYALAM LETTER KA -0D16 MALAYALAM LETTER KHA -0D17 MALAYALAM LETTER GA -0D18 MALAYALAM LETTER GHA -0D19 MALAYALAM LETTER NGA -0D1A MALAYALAM LETTER CA - = cha -0D1B MALAYALAM LETTER CHA - = chha -0D1C MALAYALAM LETTER JA -0D1D MALAYALAM LETTER JHA -0D1E MALAYALAM LETTER NYA - = nha -0D1F MALAYALAM LETTER TTA - = ta -0D20 MALAYALAM LETTER TTHA - = tta -0D21 MALAYALAM LETTER DDA - = hard da -0D22 MALAYALAM LETTER DDHA - = hard dda -0D23 MALAYALAM LETTER NNA - = hard na -0D24 MALAYALAM LETTER TA - = tha -0D25 MALAYALAM LETTER THA - = ttha -0D26 MALAYALAM LETTER DA - = soft da -0D27 MALAYALAM LETTER DHA - = soft dda -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 - = zha -0D35 MALAYALAM LETTER VA -0D36 MALAYALAM LETTER SHA - = soft sha -0D37 MALAYALAM LETTER SSA - = sha -0D38 MALAYALAM LETTER SA -0D39 MALAYALAM LETTER HA -@ Dependent vowel signs -0D3E MALAYALAM VOWEL SIGN AA -0D3F MALAYALAM VOWEL SIGN I -0D40 MALAYALAM VOWEL SIGN II -0D41 MALAYALAM VOWEL SIGN U -0D42 MALAYALAM VOWEL SIGN UU -0D43 MALAYALAM VOWEL SIGN VOCALIC R -0D46 MALAYALAM VOWEL SIGN E - * stands to the left of the consonant -0D47 MALAYALAM VOWEL SIGN EE - * stands to the left of the consonant -0D48 MALAYALAM VOWEL SIGN AI - * stands to the left of the consonant -@ Two-part dependent vowel signs -@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for most processing. -0D4A MALAYALAM VOWEL SIGN O - : 0D46 0D3E -0D4B MALAYALAM VOWEL SIGN OO - : 0D47 0D3E -0D4C MALAYALAM VOWEL SIGN AU - : 0D46 0D57 -@ Various signs -0D4D MALAYALAM SIGN VIRAMA - = chandrakkala (the preferred name) - = vowel half-u -0D57 MALAYALAM AU LENGTH MARK - * only a representation of the right half of 0D4C -@ Generic additions -0D60 MALAYALAM LETTER VOCALIC RR -0D61 MALAYALAM LETTER VOCALIC LL -@ Digits -0D66 MALAYALAM DIGIT ZERO -0D67 MALAYALAM DIGIT ONE -0D68 MALAYALAM DIGIT TWO -0D69 MALAYALAM DIGIT THREE -0D6A MALAYALAM DIGIT FOUR -0D6B MALAYALAM DIGIT FIVE -0D6C MALAYALAM DIGIT SIX -0D6D MALAYALAM DIGIT SEVEN -0D6E MALAYALAM DIGIT EIGHT -0D6F MALAYALAM DIGIT NINE -@@ 0D80 Sinhala 0DFF -@ Various signs -0D82 SINHALA SIGN ANUSVARAYA - = anusvara -0D83 SINHALA SIGN VISARGAYA - = visarga -@ Independent vowels -0D85 SINHALA LETTER AYANNA - = sinhala letter a -0D86 SINHALA LETTER AAYANNA - = sinhala letter aa -0D87 SINHALA LETTER AEYANNA - = sinhala letter ae -0D88 SINHALA LETTER AEEYANNA - = sinhala letter aae -0D89 SINHALA LETTER IYANNA - = sinhala letter i -0D8A SINHALA LETTER IIYANNA - = sinhala letter ii -0D8B SINHALA LETTER UYANNA - = sinhala letter u -0D8C SINHALA LETTER UUYANNA - = sinhala letter uu -0D8D SINHALA LETTER IRUYANNA - = sinhala letter vocalic r -0D8E SINHALA LETTER IRUUYANNA - = sinhala letter vocalic rr -0D8F SINHALA LETTER ILUYANNA - = sinhala letter vocalic l -0D90 SINHALA LETTER ILUUYANNA - = sinhala letter vocalic ll -0D91 SINHALA LETTER EYANNA - = sinhala letter e -0D92 SINHALA LETTER EEYANNA - = sinhala letter ee -0D93 SINHALA LETTER AIYANNA - = sinhala letter ai -0D94 SINHALA LETTER OYANNA - = sinhala letter o -0D95 SINHALA LETTER OOYANNA - = sinhala letter oo -0D96 SINHALA LETTER AUYANNA - = sinhala letter au -@ Consonants -0D9A SINHALA LETTER ALPAPRAANA KAYANNA - = sinhala letter ka -0D9B SINHALA LETTER MAHAAPRAANA KAYANNA - = sinhala letter kha -0D9C SINHALA LETTER ALPAPRAANA GAYANNA - = sinhala letter ga -0D9D SINHALA LETTER MAHAAPRAANA GAYANNA - = sinhala letter gha -0D9E SINHALA LETTER KANTAJA NAASIKYAYA - = sinhala letter nga -0D9F SINHALA LETTER SANYAKA GAYANNA - = sinhala letter nnga -0DA0 SINHALA LETTER ALPAPRAANA CAYANNA - = sinhala letter ca -0DA1 SINHALA LETTER MAHAAPRAANA CAYANNA - = sinhala letter cha -0DA2 SINHALA LETTER ALPAPRAANA JAYANNA - = sinhala letter ja -0DA3 SINHALA LETTER MAHAAPRAANA JAYANNA - = sinhala letter jha -0DA4 SINHALA LETTER TAALUJA NAASIKYAYA - = sinhala letter nya -0DA5 SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA - = sinhala letter jnya -0DA6 SINHALA LETTER SANYAKA JAYANNA - = sinhala letter nyja -0DA7 SINHALA LETTER ALPAPRAANA TTAYANNA - = sinhala letter tta -0DA8 SINHALA LETTER MAHAAPRAANA TTAYANNA - = sinhala letter ttha -0DA9 SINHALA LETTER ALPAPRAANA DDAYANNA - = sinhala letter dda -0DAA SINHALA LETTER MAHAAPRAANA DDAYANNA - = sinhala letter ddha -0DAB SINHALA LETTER MUURDHAJA NAYANNA - = sinhala letter nna -0DAC SINHALA LETTER SANYAKA DDAYANNA - = sinhala letter nndda -0DAD SINHALA LETTER ALPAPRAANA TAYANNA - = sinhala letter ta -0DAE SINHALA LETTER MAHAAPRAANA TAYANNA - = sinhala letter tha -0DAF SINHALA LETTER ALPAPRAANA DAYANNA - = sinhala letter da -0DB0 SINHALA LETTER MAHAAPRAANA DAYANNA - = sinhala letter dha -0DB1 SINHALA LETTER DANTAJA NAYANNA - = sinhala letter na -0DB3 SINHALA LETTER SANYAKA DAYANNA - = sinhala letter nda -0DB4 SINHALA LETTER ALPAPRAANA PAYANNA - = sinhala letter pa -0DB5 SINHALA LETTER MAHAAPRAANA PAYANNA - = sinhala letter pha -0DB6 SINHALA LETTER ALPAPRAANA BAYANNA - = sinhala letter ba -0DB7 SINHALA LETTER MAHAAPRAANA BAYANNA - = sinhala letter bha -0DB8 SINHALA LETTER MAYANNA - = sinhala letter ma -0DB9 SINHALA LETTER AMBA BAYANNA - = sinhala letter mba -0DBA SINHALA LETTER YAYANNA - = sinhala letter ya -0DBB SINHALA LETTER RAYANNA - = sinhala letter ra -0DBD SINHALA LETTER DANTAJA LAYANNA - = sinhala letter la - * dental -0DC0 SINHALA LETTER VAYANNA - = sinhala letter va -0DC1 SINHALA LETTER TAALUJA SAYANNA - = sinhala letter sha -0DC2 SINHALA LETTER MUURDHAJA SAYANNA - = sinhala letter ssa - * retroflex -0DC3 SINHALA LETTER DANTAJA SAYANNA - = sinhala letter sa - * dental -0DC4 SINHALA LETTER HAYANNA - = sinhala letter ha -0DC5 SINHALA LETTER MUURDHAJA LAYANNA - = sinhala letter lla - * retroflex -0DC6 SINHALA LETTER FAYANNA - = sinhala letter fa -@ Sign -0DCA SINHALA SIGN AL-LAKUNA - = virama -@ Dependent vowel signs -0DCF SINHALA VOWEL SIGN AELA-PILLA - = sinhala vowel sign aa -0DD0 SINHALA VOWEL SIGN KETTI AEDA-PILLA - = sinhala vowel sign ae -0DD1 SINHALA VOWEL SIGN DIGA AEDA-PILLA - = sinhala vowel sign aae -0DD2 SINHALA VOWEL SIGN KETTI IS-PILLA - = sinhala vowel sign i -0DD3 SINHALA VOWEL SIGN DIGA IS-PILLA - = sinhala vowel sign ii -0DD4 SINHALA VOWEL SIGN KETTI PAA-PILLA - = sinhala vowel sign u -0DD6 SINHALA VOWEL SIGN DIGA PAA-PILLA - = sinhala vowel sign uu -0DD8 SINHALA VOWEL SIGN GAETTA-PILLA - = sinhala vowel sign vocalic r -0DD9 SINHALA VOWEL SIGN KOMBUVA - = sinhala vowel sign e -0DDA SINHALA VOWEL SIGN DIGA KOMBUVA - = sinhala vowel sign ee - : 0DD9 0DCA -0DDB SINHALA VOWEL SIGN KOMBU DEKA - = sinhala vowel sign ai -@ Two-part dependent vowel signs -@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for most processing. -0DDC SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA - = sinhala vowel sign o - : 0DD9 0DCF -0DDD SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA - = sinhala vowel sign oo - : 0DDC 0DCA -0DDE SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA - = sinhala vowel sign au - : 0DD9 0DDF -@ Dependent vowel sign -0DDF SINHALA VOWEL SIGN GAYANUKITTA - = sinhala vowel sign vocalic l -@ Additional dependent vowel signs -0DF2 SINHALA VOWEL SIGN DIGA GAETTA-PILLA - = sinhala vowel sign vocalic rr -0DF3 SINHALA VOWEL SIGN DIGA GAYANUKITTA - = sinhala vowel sign vocalic ll -@ Punctuation -0DF4 SINHALA PUNCTUATION KUNDDALIYA -@@ 0E00 Thai 0E7F -@ Based on TIS 620-2533 -@ Consonants -0E01 THAI CHARACTER KO KAI -0E02 THAI CHARACTER KHO KHAI -0E03 THAI CHARACTER KHO KHUAT -0E04 THAI CHARACTER KHO KHWAI -0E05 THAI CHARACTER KHO KHON -0E06 THAI CHARACTER KHO RAKHANG -0E07 THAI CHARACTER NGO NGU -0E08 THAI CHARACTER CHO CHAN -0E09 THAI CHARACTER CHO CHING -0E0A THAI CHARACTER CHO CHANG -0E0B THAI CHARACTER SO SO -0E0C THAI CHARACTER CHO CHOE -0E0D THAI CHARACTER YO YING -0E0E THAI CHARACTER DO CHADA -0E0F THAI CHARACTER TO PATAK -0E10 THAI CHARACTER THO THAN -0E11 THAI CHARACTER THO NANGMONTHO -0E12 THAI CHARACTER THO PHUTHAO -0E13 THAI CHARACTER NO NEN -0E14 THAI CHARACTER DO DEK -0E15 THAI CHARACTER TO TAO -0E16 THAI CHARACTER THO THUNG -0E17 THAI CHARACTER THO THAHAN -0E18 THAI CHARACTER THO THONG -0E19 THAI CHARACTER NO NU -0E1A THAI CHARACTER BO BAIMAI -0E1B THAI CHARACTER PO PLA -0E1C THAI CHARACTER PHO PHUNG -0E1D THAI CHARACTER FO FA -0E1E THAI CHARACTER PHO PHAN -0E1F THAI CHARACTER FO FAN -0E20 THAI CHARACTER PHO SAMPHAO -0E21 THAI CHARACTER MO MA -0E22 THAI CHARACTER YO YAK -0E23 THAI CHARACTER RO RUA -0E24 THAI CHARACTER RU - * independent vowel letter used to write Sanskrit -0E25 THAI CHARACTER LO LING -0E26 THAI CHARACTER LU - * independent vowel letter used to write Sanskrit -0E27 THAI CHARACTER WO WAEN -0E28 THAI CHARACTER SO SALA -0E29 THAI CHARACTER SO RUSI -0E2A THAI CHARACTER SO SUA -0E2B THAI CHARACTER HO HIP -0E2C THAI CHARACTER LO CHULA -0E2D THAI CHARACTER O ANG -0E2E THAI CHARACTER HO NOKHUK - = ho nok huk -@ Sign -0E2F THAI CHARACTER PAIYANNOI (paiyan noi) - = paiyan noi - * ellipsis, abbreviation -@ Vowels -0E30 THAI CHARACTER SARA A -0E31 THAI CHARACTER MAI HAN-AKAT -0E32 THAI CHARACTER SARA AA - x (thai character lakkhangyao - 0E45) -0E33 THAI CHARACTER SARA AM - # 0E4D 0E32 -0E34 THAI CHARACTER SARA I -0E35 THAI CHARACTER SARA II -0E36 THAI CHARACTER SARA UE -0E37 THAI CHARACTER SARA UEE (sara uue) - = sara uue -0E38 THAI CHARACTER SARA U -0E39 THAI CHARACTER SARA UU -0E3A THAI CHARACTER PHINTHU - * Pali virama -@ Currency symbol -0E3F THAI CURRENCY SYMBOL BAHT -@ Vowels -0E40 THAI CHARACTER SARA E -0E41 THAI CHARACTER SARA AE -0E42 THAI CHARACTER SARA O -0E43 THAI CHARACTER SARA AI MAIMUAN (sara ai mai muan) - = sara ai mai muan -0E44 THAI CHARACTER SARA AI MAIMALAI (sara ai mai malai) - = sara ai mai malai -0E45 THAI CHARACTER LAKKHANGYAO (lakkhang yao) - = lakkhang yao - * special vowel length indication used with 0E24 or 0E26 - x (thai character sara aa - 0E32) -@ Sign -0E46 THAI CHARACTER MAIYAMOK (mai yamok) - = mai yamok - * repetition -@ Vowel -0E47 THAI CHARACTER MAITAIKHU (mai taikhu) - = mai taikhu -@ Tone marks -0E48 THAI CHARACTER MAI EK -0E49 THAI CHARACTER MAI THO -0E4A THAI CHARACTER MAI TRI -0E4B THAI CHARACTER MAI CHATTAWA -@ Signs -0E4C THAI CHARACTER THANTHAKHAT - * cancellation mark -0E4D THAI CHARACTER NIKHAHIT (nikkhahit) - = nikkhahit - * final nasal -0E4E THAI CHARACTER YAMAKKAN -0E4F THAI CHARACTER FONGMAN - * used as a bullet - x (khmer sign phnaek muan - 17D9) -@ Digits -0E50 THAI DIGIT ZERO -0E51 THAI DIGIT ONE -0E52 THAI DIGIT TWO -0E53 THAI DIGIT THREE -0E54 THAI DIGIT FOUR -0E55 THAI DIGIT FIVE -0E56 THAI DIGIT SIX -0E57 THAI DIGIT SEVEN -0E58 THAI DIGIT EIGHT -0E59 THAI DIGIT NINE -@ Signs -0E5A THAI CHARACTER ANGKHANKHU - * used to mark end of long sections - * used in combination with 0E30 to mark end of a verse -0E5B THAI CHARACTER KHOMUT - * used to mark end of chapter or document - x (khmer sign koomuut - 17DA) -@@ 0E80 Lao 0EFF -@ Based on TIS 620-2529 -@ Consonants -0E81 LAO LETTER KO -0E82 LAO LETTER KHO SUNG -0E84 LAO LETTER KHO TAM -0E87 LAO LETTER NGO -0E88 LAO LETTER CO -0E8A LAO LETTER SO TAM -0E8D LAO LETTER NYO -0E94 LAO LETTER DO -0E95 LAO LETTER TO -0E96 LAO LETTER THO SUNG -0E97 LAO LETTER THO TAM -0E99 LAO LETTER NO -0E9A LAO LETTER BO -0E9B LAO LETTER PO -0E9C LAO LETTER PHO SUNG -0E9D LAO LETTER FO TAM -0E9E LAO LETTER PHO TAM -0E9F LAO LETTER FO SUNG -0EA1 LAO LETTER MO -0EA2 LAO LETTER YO -0EA3 LAO LETTER LO LING -0EA5 LAO LETTER LO LOOT -0EA7 LAO LETTER WO -0EAA LAO LETTER SO SUNG -0EAB LAO LETTER HO SUNG -0EAD LAO LETTER O -0EAE LAO LETTER HO TAM -@ Sign -0EAF LAO ELLIPSIS -@ Vowels -0EB0 LAO VOWEL SIGN A -0EB1 LAO VOWEL SIGN MAI KAN - * vowel shortener -0EB2 LAO VOWEL SIGN AA -0EB3 LAO VOWEL SIGN AM - # 0ECD 0EB2 -0EB4 LAO VOWEL SIGN I -0EB5 LAO VOWEL SIGN II -0EB6 LAO VOWEL SIGN Y -0EB7 LAO VOWEL SIGN YY -0EB8 LAO VOWEL SIGN U -0EB9 LAO VOWEL SIGN UU -0EBB LAO VOWEL SIGN MAI KON -@ Signs -0EBC LAO SEMIVOWEL SIGN LO -0EBD LAO SEMIVOWEL SIGN NYO -@ Vowels -0EC0 LAO VOWEL SIGN E -0EC1 LAO VOWEL SIGN EI -0EC2 LAO VOWEL SIGN O -0EC3 LAO VOWEL SIGN AY -0EC4 LAO VOWEL SIGN AI -@ Sign -0EC6 LAO KO LA - * repetition -@ Tone marks -0EC8 LAO TONE MAI EK -0EC9 LAO TONE MAI THO -0ECA LAO TONE MAI TI -0ECB LAO TONE MAI CATAWA -@ Signs -0ECC LAO CANCELLATION MARK -0ECD LAO NIGGAHITA - * final nasal -@ Digits -0ED0 LAO DIGIT ZERO -0ED1 LAO DIGIT ONE -0ED2 LAO DIGIT TWO -0ED3 LAO DIGIT THREE -0ED4 LAO DIGIT FOUR -0ED5 LAO DIGIT FIVE -0ED6 LAO DIGIT SIX -0ED7 LAO DIGIT SEVEN -0ED8 LAO DIGIT EIGHT -0ED9 LAO DIGIT NINE -@ Digraphs -0EDC LAO HO NO - # 0EAB 0E99 -0EDD LAO HO MO - # 0EAB 0EA1 -@@ 0F00 Tibetan 0FFF -@ Syllable -0F00 TIBETAN SYLLABLE OM -@ Head marks -0F01 TIBETAN MARK GTER YIG MGO TRUNCATED A (ter yik go a thung) -0F02 TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA (ter yik go wum nam chey ma) -0F03 TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA (ter yik go wum ter tsek ma) -0F04 TIBETAN MARK INITIAL YIG MGO MDUN MA (yik go dun ma) - * honorific; marks beginning of text or start of new folio - x (mongolian birga - 1800) -0F05 TIBETAN MARK CLOSING YIG MGO SGAB MA (yik go kab ma) - * follows and ligates with initial yig-mgo -0F06 TIBETAN MARK CARET YIG MGO PHUR SHAD MA (yik go pur shey ma) -0F07 TIBETAN MARK YIG MGO TSHEG SHAD MA (yik go tsek shey ma) -@ Marks and signs -0F08 TIBETAN MARK SBRUL SHAD (drul shey) - * separates sections of meaning equivalent to topics and sub-topics -0F09 TIBETAN MARK BSKUR YIG MGO (kur yik go) - * list enumerator, used in Bhutan -0F0A TIBETAN MARK BKA- SHOG YIG MGO (ka sho yik go) - * petition honorific, used in Bhutan -0F0B TIBETAN MARK INTERSYLLABIC TSHEG (tsek) - * morpheme delimiter (approximate meaning) - * the normal tsheg; provides a break opportunity - * character name is a misnomer -0F0C TIBETAN MARK DELIMITER TSHEG BSTAR (tsek tar) - * a non-breaking tsheg; inhibits line breaking - * character name is a misnomer - # <noBreak> 0F0B -0F0D TIBETAN MARK SHAD (shey) - * marks end of a section of text (tshig-grub) - x (devanagari danda - 0964) -0F0E TIBETAN MARK NYIS SHAD (nyi shey) - * marks end of a whole topic (don-tshan) - x (devanagari double danda - 0965) -0F0F TIBETAN MARK TSHEG SHAD (tsek shey) -0F10 TIBETAN MARK NYIS TSHEG SHAD (nyi tsek shey) -0F11 TIBETAN MARK RIN CHEN SPUNGS SHAD (rinchen pung shey) - * shad which follows a tsheg-bar that starts a new line -0F12 TIBETAN MARK RGYA GRAM SHAD (gya tram shey) -0F13 TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN (dzu ta me long chen) -0F14 TIBETAN MARK GTER TSHEG (ter tsek) - * used as a comma-like text delimiter - x (khmer sign camnuc pii kuuh - 17D6) -@ Astrological signs -0F15 TIBETAN LOGOTYPE SIGN CHAD RTAGS (che ta) -0F16 TIBETAN LOGOTYPE SIGN LHAG RTAGS (hlak ta) -0F17 TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS (trachen char ta) -0F18 TIBETAN ASTROLOGICAL SIGN -KHYUD PA (kyu pa) - * combines with digits -0F19 TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS (dong tsu) - * combines with digits -0F1A TIBETAN SIGN RDEL DKAR GCIG (deka chig) -0F1B TIBETAN SIGN RDEL DKAR GNYIS (deka nyi) -0F1C TIBETAN SIGN RDEL DKAR GSUM (deka sum) -0F1D TIBETAN SIGN RDEL NAG GCIG (dena chig) -0F1E TIBETAN SIGN RDEL NAG GNYIS (dena nyi) -0F1F TIBETAN SIGN RDEL DKAR RDEL NAG (deka dena) -@ Digits -0F20 TIBETAN DIGIT ZERO -0F21 TIBETAN DIGIT ONE -0F22 TIBETAN DIGIT TWO -0F23 TIBETAN DIGIT THREE -0F24 TIBETAN DIGIT FOUR -0F25 TIBETAN DIGIT FIVE -0F26 TIBETAN DIGIT SIX -0F27 TIBETAN DIGIT SEVEN -0F28 TIBETAN DIGIT EIGHT -0F29 TIBETAN DIGIT NINE -@ Digits minus half -0F2A TIBETAN DIGIT HALF ONE -0F2B TIBETAN DIGIT HALF TWO -0F2C TIBETAN DIGIT HALF THREE -0F2D TIBETAN DIGIT HALF FOUR -0F2E TIBETAN DIGIT HALF FIVE -0F2F TIBETAN DIGIT HALF SIX -0F30 TIBETAN DIGIT HALF SEVEN -0F31 TIBETAN DIGIT HALF EIGHT -0F32 TIBETAN DIGIT HALF NINE -0F33 TIBETAN DIGIT HALF ZERO -@ Marks and signs -0F34 TIBETAN MARK BSDUS RTAGS (du ta) - * repetition -0F35 TIBETAN MARK NGAS BZUNG NYI ZLA (nge zung nyi da) - * honorific, emphasis; used like underlining -0F36 TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN (dzu ta shi mig chen) - * marks point of text insertion or annotation -0F37 TIBETAN MARK NGAS BZUNG SGOR RTAGS (nge zung gor ta) - * emphasis; used like underlining -0F38 TIBETAN MARK CHE MGO (che go) -0F39 TIBETAN MARK TSA -PHRU (tsa tru) - * a lenition mark -@ Paired punctuation -0F3A TIBETAN MARK GUG RTAGS GYON (gug ta yun) -0F3B TIBETAN MARK GUG RTAGS GYAS (gug ta ye) - * brackets -0F3C TIBETAN MARK ANG KHANG GYON (ang kang yun) -0F3D TIBETAN MARK ANG KHANG GYAS (ang kang ye) - * used for bracketing with a roof over -@ Astrological signs -0F3E TIBETAN SIGN YAR TSHES (yar tse) -0F3F TIBETAN SIGN MAR TSHES (mar tse) - * marks which combine with digits -@ Consonants -0F40 TIBETAN LETTER KA -0F41 TIBETAN LETTER KHA -0F42 TIBETAN LETTER GA -0F43 TIBETAN LETTER GHA - : 0F42 0FB7 -0F44 TIBETAN LETTER NGA -0F45 TIBETAN LETTER CA -0F46 TIBETAN LETTER CHA -0F47 TIBETAN LETTER JA -0F49 TIBETAN LETTER NYA -0F4A TIBETAN LETTER TTA -0F4B TIBETAN LETTER TTHA -0F4C TIBETAN LETTER DDA -0F4D TIBETAN LETTER DDHA - : 0F4C 0FB7 -0F4E TIBETAN LETTER NNA -0F4F TIBETAN LETTER TA -0F50 TIBETAN LETTER THA -0F51 TIBETAN LETTER DA -0F52 TIBETAN LETTER DHA - : 0F51 0FB7 -0F53 TIBETAN LETTER NA -0F54 TIBETAN LETTER PA -0F55 TIBETAN LETTER PHA -0F56 TIBETAN LETTER BA -0F57 TIBETAN LETTER BHA - : 0F56 0FB7 -0F58 TIBETAN LETTER MA -0F59 TIBETAN LETTER TSA -0F5A TIBETAN LETTER TSHA -0F5B TIBETAN LETTER DZA -0F5C TIBETAN LETTER DZHA - : 0F5B 0FB7 -0F5D TIBETAN LETTER WA -0F5E TIBETAN LETTER ZHA -0F5F TIBETAN LETTER ZA -0F60 TIBETAN LETTER -A -0F61 TIBETAN LETTER YA -0F62 TIBETAN LETTER RA * - * when followed by a subjoined letter = ra mgo -0F63 TIBETAN LETTER LA -0F64 TIBETAN LETTER SHA -0F65 TIBETAN LETTER SSA - = reversed sha -0F66 TIBETAN LETTER SA -0F67 TIBETAN LETTER HA -0F68 TIBETAN LETTER A - * base for dependent vowels -0F69 TIBETAN LETTER KSSA - : 0F40 0FB5 -0F6A TIBETAN LETTER FIXED-FORM RA * - * used only in transliteration and transcription -@ Dependent vowel signs -0F71 TIBETAN VOWEL SIGN AA - = a-chung - * common, vowel-lengthening mark -0F72 TIBETAN VOWEL SIGN I -0F73 TIBETAN VOWEL SIGN II - * use of this character is discouraged - : 0F71 0F72 -0F74 TIBETAN VOWEL SIGN U -0F75 TIBETAN VOWEL SIGN UU - * use of this character is discouraged - : 0F71 0F74 -0F76 TIBETAN VOWEL SIGN VOCALIC R - : 0FB2 0F80 -0F77 TIBETAN VOWEL SIGN VOCALIC RR - * use of this character is strongly discouraged - # 0FB2 0F81 -0F78 TIBETAN VOWEL SIGN VOCALIC L - : 0FB3 0F80 -0F79 TIBETAN VOWEL SIGN VOCALIC LL - * use of this character is strongly discouraged - # 0FB3 0F81 -0F7A TIBETAN VOWEL SIGN E -0F7B TIBETAN VOWEL SIGN EE -0F7C TIBETAN VOWEL SIGN O -0F7D TIBETAN VOWEL SIGN OO -@ Vocalic modification -0F7E TIBETAN SIGN RJES SU NGA RO (je su nga ro) - = anusvara -0F7F TIBETAN SIGN RNAM BCAD (nam chey) - = visarga -@ Dependent vowel signs -0F80 TIBETAN VOWEL SIGN REVERSED I -0F81 TIBETAN VOWEL SIGN REVERSED II - * use of this character is discouraged - : 0F71 0F80 -@ Marks and signs -0F82 TIBETAN SIGN NYI ZLA NAA DA (nyi da na da) -0F83 TIBETAN SIGN SNA LDAN (nan de) - x (devanagari sign candrabindu - 0901) -0F84 TIBETAN MARK HALANTA - = srog med - x (devanagari sign virama - 094D) -0F85 TIBETAN MARK PALUTA - * transliteration of Sanskrit avagraha - x (devanagari sign avagraha - 093D) -0F86 TIBETAN SIGN LCI RTAGS (ji ta) -0F87 TIBETAN SIGN YANG RTAGS (yang ta) -@ Transliteration head letters -0F88 TIBETAN SIGN LCE TSA CAN (che tsa chen) -0F89 TIBETAN SIGN MCHU CAN (chu chen) -0F8A TIBETAN SIGN GRU CAN RGYINGS (tru chen ging) - * always followed by 0F82 -0F8B TIBETAN SIGN GRU MED RGYINGS (tru me ging) -@ Subjoined consonants -0F90 TIBETAN SUBJOINED LETTER KA -0F91 TIBETAN SUBJOINED LETTER KHA -0F92 TIBETAN SUBJOINED LETTER GA -0F93 TIBETAN SUBJOINED LETTER GHA - : 0F92 0FB7 -0F94 TIBETAN SUBJOINED LETTER NGA -0F95 TIBETAN SUBJOINED LETTER CA -0F96 TIBETAN SUBJOINED LETTER CHA -0F97 TIBETAN SUBJOINED LETTER JA -0F99 TIBETAN SUBJOINED LETTER NYA -0F9A TIBETAN SUBJOINED LETTER TTA -0F9B TIBETAN SUBJOINED LETTER TTHA -0F9C TIBETAN SUBJOINED LETTER DDA -0F9D TIBETAN SUBJOINED LETTER DDHA - : 0F9C 0FB7 -0F9E TIBETAN SUBJOINED LETTER NNA -0F9F TIBETAN SUBJOINED LETTER TA -0FA0 TIBETAN SUBJOINED LETTER THA -0FA1 TIBETAN SUBJOINED LETTER DA -0FA2 TIBETAN SUBJOINED LETTER DHA - : 0FA1 0FB7 -0FA3 TIBETAN SUBJOINED LETTER NA -0FA4 TIBETAN SUBJOINED LETTER PA -0FA5 TIBETAN SUBJOINED LETTER PHA -0FA6 TIBETAN SUBJOINED LETTER BA -0FA7 TIBETAN SUBJOINED LETTER BHA - : 0FA6 0FB7 -0FA8 TIBETAN SUBJOINED LETTER MA -0FA9 TIBETAN SUBJOINED LETTER TSA -0FAA TIBETAN SUBJOINED LETTER TSHA -0FAB TIBETAN SUBJOINED LETTER DZA -0FAC TIBETAN SUBJOINED LETTER DZHA - : 0FAB 0FB7 -0FAD TIBETAN SUBJOINED LETTER WA * - = wa-zur, wa-btags -0FAE TIBETAN SUBJOINED LETTER ZHA -0FAF TIBETAN SUBJOINED LETTER ZA -0FB0 TIBETAN SUBJOINED LETTER -A - = a-chung - * rare, only used for full-sized subjoined letter - x (tibetan vowel sign aa - 0F71) -0FB1 TIBETAN SUBJOINED LETTER YA * - = ya-btags -0FB2 TIBETAN SUBJOINED LETTER RA * - = ra-btags -0FB3 TIBETAN SUBJOINED LETTER LA -0FB4 TIBETAN SUBJOINED LETTER SHA -0FB5 TIBETAN SUBJOINED LETTER SSA - = reversed subjoined sha -0FB6 TIBETAN SUBJOINED LETTER SA -0FB7 TIBETAN SUBJOINED LETTER HA -0FB8 TIBETAN SUBJOINED LETTER A -0FB9 TIBETAN SUBJOINED LETTER KSSA - : 0F90 0FB5 -@ Fixed-form subjoined consonants -@+ These characters are used only for transliteration and transcription. -0FBA TIBETAN SUBJOINED LETTER FIXED-FORM WA * -0FBB TIBETAN SUBJOINED LETTER FIXED-FORM YA * -0FBC TIBETAN SUBJOINED LETTER FIXED-FORM RA * -@ Signs -0FBE TIBETAN KU RU KHA (kuruka) - * often repeated three times; indicates a refrain -0FBF TIBETAN KU RU KHA BZHI MIG CAN (kuruka shi mik chen) - * marks point of text insertion or annotation - x (reference mark - 203B) -@ Cantillation signs -0FC0 TIBETAN CANTILLATION SIGN HEAVY BEAT - * marks a heavy drum beat -0FC1 TIBETAN CANTILLATION SIGN LIGHT BEAT - * marks a light drum beat -0FC2 TIBETAN CANTILLATION SIGN CANG TE-U (chang tyu) - * symbol of a small Tibetan hand drum -0FC3 TIBETAN CANTILLATION SIGN SBUB -CHAL (bub chey) - * symbol of a Tibetan cymbal -@ Symbols -0FC4 TIBETAN SYMBOL DRIL BU (drilbu) - * symbol of a Tibetan hand bell -0FC5 TIBETAN SYMBOL RDO RJE (dorje) -0FC6 TIBETAN SYMBOL PADMA GDAN (pema den) -0FC7 TIBETAN SYMBOL RDO RJE RGYA GRAM (dorje gya dram) -0FC8 TIBETAN SYMBOL PHUR PA (phurba) -0FC9 TIBETAN SYMBOL NOR BU (norbu) -0FCA TIBETAN SYMBOL NOR BU NYIS -KHYIL (norbu nyi khyi) - * the double body symbol - x (yin yang - 262F) -0FCB TIBETAN SYMBOL NOR BU GSUM -KHYIL (norbu sum khyi) - * the tri-kaya or triple body symbol -0FCC TIBETAN SYMBOL NOR BU BZHI -KHYIL (norbu shi khyi) - * the quadruple body symbol, a form of the swastika - x (cjk unified ideograph-534D - 534D) -@ Astrological sign -0FCF TIBETAN SIGN RDEL NAG GSUM (dena sum) -@ Marks -0FD0 TIBETAN MARK BSKA- SHOG GI MGO RGYAN (ka shog gi go gyen) - * used in Bhutan -0FD1 TIBETAN MARK MNYAM YIG GI MGO RGYAN (nyam yig gi go gyen) - * used in Bhutan -@@ 1000 Myanmar 109F -@ Consonants -1000 MYANMAR LETTER KA -1001 MYANMAR LETTER KHA -1002 MYANMAR LETTER GA -1003 MYANMAR LETTER GHA -1004 MYANMAR LETTER NGA -1005 MYANMAR LETTER CA -1006 MYANMAR LETTER CHA -1007 MYANMAR LETTER JA -1008 MYANMAR LETTER JHA -1009 MYANMAR LETTER NYA -100A MYANMAR LETTER NNYA -100B MYANMAR LETTER TTA -100C MYANMAR LETTER TTHA -100D MYANMAR LETTER DDA -100E MYANMAR LETTER DDHA -100F MYANMAR LETTER NNA -1010 MYANMAR LETTER TA -1011 MYANMAR LETTER THA -1012 MYANMAR LETTER DA -1013 MYANMAR LETTER DHA -1014 MYANMAR LETTER NA -1015 MYANMAR LETTER PA -1016 MYANMAR LETTER PHA -1017 MYANMAR LETTER BA -1018 MYANMAR LETTER BHA -1019 MYANMAR LETTER MA -101A MYANMAR LETTER YA -101B MYANMAR LETTER RA -101C MYANMAR LETTER LA -101D MYANMAR LETTER WA -101E MYANMAR LETTER SA -101F MYANMAR LETTER HA -1020 MYANMAR LETTER LLA -@ Independent vowels -1021 MYANMAR LETTER A - * also represents the glottal stop as a consonant -1023 MYANMAR LETTER I -1024 MYANMAR LETTER II -1025 MYANMAR LETTER U -1026 MYANMAR LETTER UU - : 1025 102E -1027 MYANMAR LETTER E -1029 MYANMAR LETTER O -102A MYANMAR LETTER AU -@ Dependent vowel signs -102C MYANMAR VOWEL SIGN AA -102D MYANMAR VOWEL SIGN I -102E MYANMAR VOWEL SIGN II -102F MYANMAR VOWEL SIGN U -1030 MYANMAR VOWEL SIGN UU -1031 MYANMAR VOWEL SIGN E - * stands to the left of the consonant -1032 MYANMAR VOWEL SIGN AI -@ Various signs -1036 MYANMAR SIGN ANUSVARA -1037 MYANMAR SIGN DOT BELOW - = aukmyit - * a tone mark -1038 MYANMAR SIGN VISARGA -1039 MYANMAR SIGN VIRAMA - = killer (when rendered visibly) -@ Digits -1040 MYANMAR DIGIT ZERO -1041 MYANMAR DIGIT ONE -1042 MYANMAR DIGIT TWO -1043 MYANMAR DIGIT THREE -1044 MYANMAR DIGIT FOUR -1045 MYANMAR DIGIT FIVE -1046 MYANMAR DIGIT SIX -1047 MYANMAR DIGIT SEVEN -1048 MYANMAR DIGIT EIGHT -1049 MYANMAR DIGIT NINE -@ Punctuation -104A MYANMAR SIGN LITTLE SECTION - x (devanagari danda - 0964) -104B MYANMAR SIGN SECTION - x (devanagari double danda - 0965) -@ Various signs -104C MYANMAR SYMBOL LOCATIVE -104D MYANMAR SYMBOL COMPLETED -104E MYANMAR SYMBOL AFOREMENTIONED -104F MYANMAR SYMBOL GENITIVE -@ Pali and Sanskrit extensions -1050 MYANMAR LETTER SHA -1051 MYANMAR LETTER SSA -1052 MYANMAR LETTER VOCALIC R -1053 MYANMAR LETTER VOCALIC RR -1054 MYANMAR LETTER VOCALIC L -1055 MYANMAR LETTER VOCALIC LL -1056 MYANMAR VOWEL SIGN VOCALIC R -1057 MYANMAR VOWEL SIGN VOCALIC RR -1058 MYANMAR VOWEL SIGN VOCALIC L -1059 MYANMAR VOWEL SIGN VOCALIC LL -@@ 10A0 Georgian 10FF -@ Capital letters (Khutsuri) -@+ This is the uppercase of the old ecclesiastical alphabet. The style shown in the code charts is known as Asomtavruli. See the Georgian Supplement block for lowercase Nuskhuri. -10A0 GEORGIAN CAPITAL LETTER AN (Khutsuri) -10A1 GEORGIAN CAPITAL LETTER BAN (Khutsuri) -10A2 GEORGIAN CAPITAL LETTER GAN (Khutsuri) -10A3 GEORGIAN CAPITAL LETTER DON (Khutsuri) -10A4 GEORGIAN CAPITAL LETTER EN (Khutsuri) -10A5 GEORGIAN CAPITAL LETTER VIN (Khutsuri) -10A6 GEORGIAN CAPITAL LETTER ZEN (Khutsuri) -10A7 GEORGIAN CAPITAL LETTER TAN (Khutsuri) -10A8 GEORGIAN CAPITAL LETTER IN (Khutsuri) -10A9 GEORGIAN CAPITAL LETTER KAN (Khutsuri) -10AA GEORGIAN CAPITAL LETTER LAS (Khutsuri) -10AB GEORGIAN CAPITAL LETTER MAN (Khutsuri) -10AC GEORGIAN CAPITAL LETTER NAR (Khutsuri) -10AD GEORGIAN CAPITAL LETTER ON (Khutsuri) -10AE GEORGIAN CAPITAL LETTER PAR (Khutsuri) -10AF GEORGIAN CAPITAL LETTER ZHAR (Khutsuri) -10B0 GEORGIAN CAPITAL LETTER RAE (Khutsuri) -10B1 GEORGIAN CAPITAL LETTER SAN (Khutsuri) -10B2 GEORGIAN CAPITAL LETTER TAR (Khutsuri) -10B3 GEORGIAN CAPITAL LETTER UN (Khutsuri) -10B4 GEORGIAN CAPITAL LETTER PHAR (Khutsuri) -10B5 GEORGIAN CAPITAL LETTER KHAR (Khutsuri) -10B6 GEORGIAN CAPITAL LETTER GHAN (Khutsuri) -10B7 GEORGIAN CAPITAL LETTER QAR (Khutsuri) -10B8 GEORGIAN CAPITAL LETTER SHIN (Khutsuri) -10B9 GEORGIAN CAPITAL LETTER CHIN (Khutsuri) -10BA GEORGIAN CAPITAL LETTER CAN (Khutsuri) -10BB GEORGIAN CAPITAL LETTER JIL (Khutsuri) -10BC GEORGIAN CAPITAL LETTER CIL (Khutsuri) -10BD GEORGIAN CAPITAL LETTER CHAR (Khutsuri) -10BE GEORGIAN CAPITAL LETTER XAN (Khutsuri) -10BF GEORGIAN CAPITAL LETTER JHAN (Khutsuri) -10C0 GEORGIAN CAPITAL LETTER HAE (Khutsuri) -10C1 GEORGIAN CAPITAL LETTER HE (Khutsuri) -10C2 GEORGIAN CAPITAL LETTER HIE (Khutsuri) -10C3 GEORGIAN CAPITAL LETTER WE (Khutsuri) -10C4 GEORGIAN CAPITAL LETTER HAR (Khutsuri) -10C5 GEORGIAN CAPITAL LETTER HOE (Khutsuri) -@ Mkhedruli -@+ This is the modern secular alphabet, which is caseless. -10D0 GEORGIAN LETTER AN -10D1 GEORGIAN LETTER BAN -10D2 GEORGIAN LETTER GAN -10D3 GEORGIAN LETTER DON -10D4 GEORGIAN LETTER EN -10D5 GEORGIAN LETTER VIN -10D6 GEORGIAN LETTER ZEN -10D7 GEORGIAN LETTER TAN -10D8 GEORGIAN LETTER IN -10D9 GEORGIAN LETTER KAN -10DA GEORGIAN LETTER LAS -10DB GEORGIAN LETTER MAN -10DC GEORGIAN LETTER NAR -10DD GEORGIAN LETTER ON -10DE GEORGIAN LETTER PAR -10DF GEORGIAN LETTER ZHAR -10E0 GEORGIAN LETTER RAE -10E1 GEORGIAN LETTER SAN -10E2 GEORGIAN LETTER TAR -10E3 GEORGIAN LETTER UN -10E4 GEORGIAN LETTER PHAR -10E5 GEORGIAN LETTER KHAR -10E6 GEORGIAN LETTER GHAN -10E7 GEORGIAN LETTER QAR -10E8 GEORGIAN LETTER SHIN -10E9 GEORGIAN LETTER CHIN -10EA GEORGIAN LETTER CAN -10EB GEORGIAN LETTER JIL -10EC GEORGIAN LETTER CIL -10ED GEORGIAN LETTER CHAR -10EE GEORGIAN LETTER XAN -10EF GEORGIAN LETTER JHAN -10F0 GEORGIAN LETTER HAE -@ Archaic letters -10F1 GEORGIAN LETTER HE -10F2 GEORGIAN LETTER HIE -10F3 GEORGIAN LETTER WE -10F4 GEORGIAN LETTER HAR -10F5 GEORGIAN LETTER HOE -10F6 GEORGIAN LETTER FI -@ Additional letters for Mingrelian and Svan -10F7 GEORGIAN LETTER YN -10F8 GEORGIAN LETTER ELIFI -@ Additional letters -10F9 GEORGIAN LETTER TURNED GAN -10FA GEORGIAN LETTER AIN -@ Punctuation -10FB GEORGIAN PARAGRAPH SEPARATOR -@ Modifier letter -10FC MODIFIER LETTER GEORGIAN NAR - # <super> 10DC -@@ 1100 Hangul Jamo 11FF -@+ The aliases in this block represent the Jamo short names. -@ Korean combining alphabet -@ Initial consonants -1100 HANGUL CHOSEONG KIYEOK (g) * - = G -1101 HANGUL CHOSEONG SSANGKIYEOK (gg) * - = GG -1102 HANGUL CHOSEONG NIEUN (n) * - = N -1103 HANGUL CHOSEONG TIKEUT (d) * - = D -1104 HANGUL CHOSEONG SSANGTIKEUT (dd) * - = DD -1105 HANGUL CHOSEONG RIEUL (r) * - = R -1106 HANGUL CHOSEONG MIEUM (m) * - = M -1107 HANGUL CHOSEONG PIEUP (b) * - = B -1108 HANGUL CHOSEONG SSANGPIEUP (bb) * - = BB -1109 HANGUL CHOSEONG SIOS (s) * - = S -110A HANGUL CHOSEONG SSANGSIOS (ss) * - = SS -110B HANGUL CHOSEONG IEUNG -110C HANGUL CHOSEONG CIEUC (j) * - = J -110D HANGUL CHOSEONG SSANGCIEUC (jj) * - = JJ -110E HANGUL CHOSEONG CHIEUCH (c) * - = C -110F HANGUL CHOSEONG KHIEUKH (k) * - = K -1110 HANGUL CHOSEONG THIEUTH (t) * - = T -1111 HANGUL CHOSEONG PHIEUPH (p) * - = P -1112 HANGUL CHOSEONG HIEUH (h) * - = H -1113 HANGUL CHOSEONG NIEUN-KIYEOK -1114 HANGUL CHOSEONG SSANGNIEUN -1115 HANGUL CHOSEONG NIEUN-TIKEUT -1116 HANGUL CHOSEONG NIEUN-PIEUP -1117 HANGUL CHOSEONG TIKEUT-KIYEOK -1118 HANGUL CHOSEONG RIEUL-NIEUN -1119 HANGUL CHOSEONG SSANGRIEUL -111A HANGUL CHOSEONG RIEUL-HIEUH -111B HANGUL CHOSEONG KAPYEOUNRIEUL -111C HANGUL CHOSEONG MIEUM-PIEUP -111D HANGUL CHOSEONG KAPYEOUNMIEUM -111E HANGUL CHOSEONG PIEUP-KIYEOK -111F HANGUL CHOSEONG PIEUP-NIEUN -1120 HANGUL CHOSEONG PIEUP-TIKEUT -1121 HANGUL CHOSEONG PIEUP-SIOS -1122 HANGUL CHOSEONG PIEUP-SIOS-KIYEOK -1123 HANGUL CHOSEONG PIEUP-SIOS-TIKEUT -1124 HANGUL CHOSEONG PIEUP-SIOS-PIEUP -1125 HANGUL CHOSEONG PIEUP-SSANGSIOS -1126 HANGUL CHOSEONG PIEUP-SIOS-CIEUC -1127 HANGUL CHOSEONG PIEUP-CIEUC -1128 HANGUL CHOSEONG PIEUP-CHIEUCH -1129 HANGUL CHOSEONG PIEUP-THIEUTH -112A HANGUL CHOSEONG PIEUP-PHIEUPH -112B HANGUL CHOSEONG KAPYEOUNPIEUP -112C HANGUL CHOSEONG KAPYEOUNSSANGPIEUP -112D HANGUL CHOSEONG SIOS-KIYEOK -112E HANGUL CHOSEONG SIOS-NIEUN -112F HANGUL CHOSEONG SIOS-TIKEUT -1130 HANGUL CHOSEONG SIOS-RIEUL -1131 HANGUL CHOSEONG SIOS-MIEUM -1132 HANGUL CHOSEONG SIOS-PIEUP -1133 HANGUL CHOSEONG SIOS-PIEUP-KIYEOK -1134 HANGUL CHOSEONG SIOS-SSANGSIOS -1135 HANGUL CHOSEONG SIOS-IEUNG -1136 HANGUL CHOSEONG SIOS-CIEUC -1137 HANGUL CHOSEONG SIOS-CHIEUCH -1138 HANGUL CHOSEONG SIOS-KHIEUKH -1139 HANGUL CHOSEONG SIOS-THIEUTH -113A HANGUL CHOSEONG SIOS-PHIEUPH -113B HANGUL CHOSEONG SIOS-HIEUH -113C HANGUL CHOSEONG CHITUEUMSIOS -113D HANGUL CHOSEONG CHITUEUMSSANGSIOS -113E HANGUL CHOSEONG CEONGCHIEUMSIOS -113F HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS -1140 HANGUL CHOSEONG PANSIOS -1141 HANGUL CHOSEONG IEUNG-KIYEOK -1142 HANGUL CHOSEONG IEUNG-TIKEUT -1143 HANGUL CHOSEONG IEUNG-MIEUM -1144 HANGUL CHOSEONG IEUNG-PIEUP -1145 HANGUL CHOSEONG IEUNG-SIOS -1146 HANGUL CHOSEONG IEUNG-PANSIOS -1147 HANGUL CHOSEONG SSANGIEUNG -1148 HANGUL CHOSEONG IEUNG-CIEUC -1149 HANGUL CHOSEONG IEUNG-CHIEUCH -114A HANGUL CHOSEONG IEUNG-THIEUTH -114B HANGUL CHOSEONG IEUNG-PHIEUPH -114C HANGUL CHOSEONG YESIEUNG -114D HANGUL CHOSEONG CIEUC-IEUNG -114E HANGUL CHOSEONG CHITUEUMCIEUC -114F HANGUL CHOSEONG CHITUEUMSSANGCIEUC -1150 HANGUL CHOSEONG CEONGCHIEUMCIEUC -1151 HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC -1152 HANGUL CHOSEONG CHIEUCH-KHIEUKH -1153 HANGUL CHOSEONG CHIEUCH-HIEUH -1154 HANGUL CHOSEONG CHITUEUMCHIEUCH -1155 HANGUL CHOSEONG CEONGCHIEUMCHIEUCH -1156 HANGUL CHOSEONG PHIEUPH-PIEUP -1157 HANGUL CHOSEONG KAPYEOUNPHIEUPH -1158 HANGUL CHOSEONG SSANGHIEUH -1159 HANGUL CHOSEONG YEORINHIEUH -115F HANGUL CHOSEONG FILLER -@ Medial vowels -1160 HANGUL JUNGSEONG FILLER -1161 HANGUL JUNGSEONG A - = A -1162 HANGUL JUNGSEONG AE - = AE -1163 HANGUL JUNGSEONG YA - = YA -1164 HANGUL JUNGSEONG YAE - = YAE -1165 HANGUL JUNGSEONG EO - = EO -1166 HANGUL JUNGSEONG E - = E -1167 HANGUL JUNGSEONG YEO - = YEO -1168 HANGUL JUNGSEONG YE - = YE -1169 HANGUL JUNGSEONG O - = O -116A HANGUL JUNGSEONG WA - = WA -116B HANGUL JUNGSEONG WAE - = WAE -116C HANGUL JUNGSEONG OE - = OE -116D HANGUL JUNGSEONG YO - = YO -116E HANGUL JUNGSEONG U - = U -116F HANGUL JUNGSEONG WEO - = WEO -1170 HANGUL JUNGSEONG WE - = WE -1171 HANGUL JUNGSEONG WI - = WI -1172 HANGUL JUNGSEONG YU - = YU -1173 HANGUL JUNGSEONG EU - = EU -1174 HANGUL JUNGSEONG YI - = YI -1175 HANGUL JUNGSEONG I - = I -1176 HANGUL JUNGSEONG A-O -1177 HANGUL JUNGSEONG A-U -1178 HANGUL JUNGSEONG YA-O -1179 HANGUL JUNGSEONG YA-YO -117A HANGUL JUNGSEONG EO-O -117B HANGUL JUNGSEONG EO-U -117C HANGUL JUNGSEONG EO-EU -117D HANGUL JUNGSEONG YEO-O -117E HANGUL JUNGSEONG YEO-U -117F HANGUL JUNGSEONG O-EO -1180 HANGUL JUNGSEONG O-E -1181 HANGUL JUNGSEONG O-YE -1182 HANGUL JUNGSEONG O-O -1183 HANGUL JUNGSEONG O-U -1184 HANGUL JUNGSEONG YO-YA -1185 HANGUL JUNGSEONG YO-YAE -1186 HANGUL JUNGSEONG YO-YEO -1187 HANGUL JUNGSEONG YO-O -1188 HANGUL JUNGSEONG YO-I -1189 HANGUL JUNGSEONG U-A -118A HANGUL JUNGSEONG U-AE -118B HANGUL JUNGSEONG U-EO-EU -118C HANGUL JUNGSEONG U-YE -118D HANGUL JUNGSEONG U-U -118E HANGUL JUNGSEONG YU-A -118F HANGUL JUNGSEONG YU-EO -1190 HANGUL JUNGSEONG YU-E -1191 HANGUL JUNGSEONG YU-YEO -1192 HANGUL JUNGSEONG YU-YE -1193 HANGUL JUNGSEONG YU-U -1194 HANGUL JUNGSEONG YU-I -1195 HANGUL JUNGSEONG EU-U -1196 HANGUL JUNGSEONG EU-EU -1197 HANGUL JUNGSEONG YI-U -1198 HANGUL JUNGSEONG I-A -1199 HANGUL JUNGSEONG I-YA -119A HANGUL JUNGSEONG I-O -119B HANGUL JUNGSEONG I-U -119C HANGUL JUNGSEONG I-EU -119D HANGUL JUNGSEONG I-ARAEA -119E HANGUL JUNGSEONG ARAEA -119F HANGUL JUNGSEONG ARAEA-EO -11A0 HANGUL JUNGSEONG ARAEA-U -11A1 HANGUL JUNGSEONG ARAEA-I -11A2 HANGUL JUNGSEONG SSANGARAEA -@ Final consonants -11A8 HANGUL JONGSEONG KIYEOK (g) * - = G -11A9 HANGUL JONGSEONG SSANGKIYEOK (gg) * - = GG -11AA HANGUL JONGSEONG KIYEOK-SIOS (gs) * - = GS -11AB HANGUL JONGSEONG NIEUN (n) * - = N -11AC HANGUL JONGSEONG NIEUN-CIEUC (nj) * - = NJ -11AD HANGUL JONGSEONG NIEUN-HIEUH (nh) * - = NH -11AE HANGUL JONGSEONG TIKEUT (d) * - = D -11AF HANGUL JONGSEONG RIEUL (l) * - = L -11B0 HANGUL JONGSEONG RIEUL-KIYEOK (lg) * - = LG -11B1 HANGUL JONGSEONG RIEUL-MIEUM (lm) * - = LM -11B2 HANGUL JONGSEONG RIEUL-PIEUP (lb) * - = LB -11B3 HANGUL JONGSEONG RIEUL-SIOS (ls) * - = LS -11B4 HANGUL JONGSEONG RIEUL-THIEUTH (lt) * - = LT -11B5 HANGUL JONGSEONG RIEUL-PHIEUPH (lp) * - = LP -11B6 HANGUL JONGSEONG RIEUL-HIEUH (lh) * - = LH -11B7 HANGUL JONGSEONG MIEUM (m) * - = M -11B8 HANGUL JONGSEONG PIEUP (b) * - = B -11B9 HANGUL JONGSEONG PIEUP-SIOS (bs) * - = BS -11BA HANGUL JONGSEONG SIOS (s) * - = S -11BB HANGUL JONGSEONG SSANGSIOS (ss) * - = SS -11BC HANGUL JONGSEONG IEUNG (ng) * - = NG -11BD HANGUL JONGSEONG CIEUC (j) * - = J -11BE HANGUL JONGSEONG CHIEUCH (c) * - = C -11BF HANGUL JONGSEONG KHIEUKH (k) * - = K -11C0 HANGUL JONGSEONG THIEUTH (t) * - = T -11C1 HANGUL JONGSEONG PHIEUPH (p) * - = P -11C2 HANGUL JONGSEONG HIEUH (h) * - = H -11C3 HANGUL JONGSEONG KIYEOK-RIEUL -11C4 HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK -11C5 HANGUL JONGSEONG NIEUN-KIYEOK -11C6 HANGUL JONGSEONG NIEUN-TIKEUT -11C7 HANGUL JONGSEONG NIEUN-SIOS -11C8 HANGUL JONGSEONG NIEUN-PANSIOS -11C9 HANGUL JONGSEONG NIEUN-THIEUTH -11CA HANGUL JONGSEONG TIKEUT-KIYEOK -11CB HANGUL JONGSEONG TIKEUT-RIEUL -11CC HANGUL JONGSEONG RIEUL-KIYEOK-SIOS -11CD HANGUL JONGSEONG RIEUL-NIEUN -11CE HANGUL JONGSEONG RIEUL-TIKEUT -11CF HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH -11D0 HANGUL JONGSEONG SSANGRIEUL -11D1 HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK -11D2 HANGUL JONGSEONG RIEUL-MIEUM-SIOS -11D3 HANGUL JONGSEONG RIEUL-PIEUP-SIOS -11D4 HANGUL JONGSEONG RIEUL-PIEUP-HIEUH -11D5 HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP -11D6 HANGUL JONGSEONG RIEUL-SSANGSIOS -11D7 HANGUL JONGSEONG RIEUL-PANSIOS -11D8 HANGUL JONGSEONG RIEUL-KHIEUKH -11D9 HANGUL JONGSEONG RIEUL-YEORINHIEUH -11DA HANGUL JONGSEONG MIEUM-KIYEOK -11DB HANGUL JONGSEONG MIEUM-RIEUL -11DC HANGUL JONGSEONG MIEUM-PIEUP -11DD HANGUL JONGSEONG MIEUM-SIOS -11DE HANGUL JONGSEONG MIEUM-SSANGSIOS -11DF HANGUL JONGSEONG MIEUM-PANSIOS -11E0 HANGUL JONGSEONG MIEUM-CHIEUCH -11E1 HANGUL JONGSEONG MIEUM-HIEUH -11E2 HANGUL JONGSEONG KAPYEOUNMIEUM -11E3 HANGUL JONGSEONG PIEUP-RIEUL -11E4 HANGUL JONGSEONG PIEUP-PHIEUPH -11E5 HANGUL JONGSEONG PIEUP-HIEUH -11E6 HANGUL JONGSEONG KAPYEOUNPIEUP -11E7 HANGUL JONGSEONG SIOS-KIYEOK -11E8 HANGUL JONGSEONG SIOS-TIKEUT -11E9 HANGUL JONGSEONG SIOS-RIEUL -11EA HANGUL JONGSEONG SIOS-PIEUP -11EB HANGUL JONGSEONG PANSIOS -11EC HANGUL JONGSEONG IEUNG-KIYEOK -11ED HANGUL JONGSEONG IEUNG-SSANGKIYEOK -11EE HANGUL JONGSEONG SSANGIEUNG -11EF HANGUL JONGSEONG IEUNG-KHIEUKH -11F0 HANGUL JONGSEONG YESIEUNG -11F1 HANGUL JONGSEONG YESIEUNG-SIOS -11F2 HANGUL JONGSEONG YESIEUNG-PANSIOS -11F3 HANGUL JONGSEONG PHIEUPH-PIEUP -11F4 HANGUL JONGSEONG KAPYEOUNPHIEUPH -11F5 HANGUL JONGSEONG HIEUH-NIEUN -11F6 HANGUL JONGSEONG HIEUH-RIEUL -11F7 HANGUL JONGSEONG HIEUH-MIEUM -11F8 HANGUL JONGSEONG HIEUH-PIEUP -11F9 HANGUL JONGSEONG YEORINHIEUH -@@ 1200 Ethiopic 137F -@ Syllables -1200 ETHIOPIC SYLLABLE HA -1201 ETHIOPIC SYLLABLE HU -1202 ETHIOPIC SYLLABLE HI -1203 ETHIOPIC SYLLABLE HAA -1204 ETHIOPIC SYLLABLE HEE -1205 ETHIOPIC SYLLABLE HE -1206 ETHIOPIC SYLLABLE HO -1207 ETHIOPIC SYLLABLE HOA -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 -1247 ETHIOPIC SYLLABLE QOA -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 -1287 ETHIOPIC SYLLABLE XOA -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 -12AF ETHIOPIC SYLLABLE KOA -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 -12CF ETHIOPIC SYLLABLE WOA -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 -12EF ETHIOPIC SYLLABLE YOA -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 -130F ETHIOPIC SYLLABLE GOA -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 -131F ETHIOPIC SYLLABLE GGWAA -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 -1347 ETHIOPIC SYLLABLE TZOA -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 -@ Combining mark -135F ETHIOPIC COMBINING GEMINATION MARK -@ Punctuation -1360 ETHIOPIC SECTION MARK -1361 ETHIOPIC WORDSPACE -1362 ETHIOPIC FULL STOP -1363 ETHIOPIC COMMA -1364 ETHIOPIC SEMICOLON -1365 ETHIOPIC COLON -1366 ETHIOPIC PREFACE COLON -1367 ETHIOPIC QUESTION MARK -1368 ETHIOPIC PARAGRAPH SEPARATOR -@ Digits -1369 ETHIOPIC DIGIT ONE -136A ETHIOPIC DIGIT TWO -136B ETHIOPIC DIGIT THREE -136C ETHIOPIC DIGIT FOUR -136D ETHIOPIC DIGIT FIVE -136E ETHIOPIC DIGIT SIX -136F ETHIOPIC DIGIT SEVEN -1370 ETHIOPIC DIGIT EIGHT -1371 ETHIOPIC DIGIT NINE -@ Numbers -1372 ETHIOPIC NUMBER TEN -1373 ETHIOPIC NUMBER TWENTY -1374 ETHIOPIC NUMBER THIRTY -1375 ETHIOPIC NUMBER FORTY -1376 ETHIOPIC NUMBER FIFTY -1377 ETHIOPIC NUMBER SIXTY -1378 ETHIOPIC NUMBER SEVENTY -1379 ETHIOPIC NUMBER EIGHTY -137A ETHIOPIC NUMBER NINETY -137B ETHIOPIC NUMBER HUNDRED -137C ETHIOPIC NUMBER TEN THOUSAND -@@ 1380 Ethiopic Supplement 139F -@ Syllables for Sebatbeit -1380 ETHIOPIC SYLLABLE SEBATBEIT MWA -1381 ETHIOPIC SYLLABLE MWI -1382 ETHIOPIC SYLLABLE MWEE -1383 ETHIOPIC SYLLABLE MWE -1384 ETHIOPIC SYLLABLE SEBATBEIT BWA -1385 ETHIOPIC SYLLABLE BWI -1386 ETHIOPIC SYLLABLE BWEE -1387 ETHIOPIC SYLLABLE BWE -1388 ETHIOPIC SYLLABLE SEBATBEIT FWA -1389 ETHIOPIC SYLLABLE FWI -138A ETHIOPIC SYLLABLE FWEE -138B ETHIOPIC SYLLABLE FWE -138C ETHIOPIC SYLLABLE SEBATBEIT PWA -138D ETHIOPIC SYLLABLE PWI -138E ETHIOPIC SYLLABLE PWEE -138F ETHIOPIC SYLLABLE PWE -@ Tonal Marks -@+ Intended for use with a multiline scored layout -1390 ETHIOPIC TONAL MARK YIZET -1391 ETHIOPIC TONAL MARK DERET -1392 ETHIOPIC TONAL MARK RIKRIK -1393 ETHIOPIC TONAL MARK SHORT RIKRIK -1394 ETHIOPIC TONAL MARK DIFAT -1395 ETHIOPIC TONAL MARK KENAT -1396 ETHIOPIC TONAL MARK CHIRET -1397 ETHIOPIC TONAL MARK HIDET -1398 ETHIOPIC TONAL MARK DERET-HIDET -1399 ETHIOPIC TONAL MARK KURT -@@ 13A0 Cherokee 13FF -@ Syllables -13A0 CHEROKEE LETTER A -13A1 CHEROKEE LETTER E -13A2 CHEROKEE LETTER I -13A3 CHEROKEE LETTER O -13A4 CHEROKEE LETTER U -13A5 CHEROKEE LETTER V -13A6 CHEROKEE LETTER GA -13A7 CHEROKEE LETTER KA -13A8 CHEROKEE LETTER GE -13A9 CHEROKEE LETTER GI -13AA CHEROKEE LETTER GO -13AB CHEROKEE LETTER GU -13AC CHEROKEE LETTER GV -13AD CHEROKEE LETTER HA -13AE CHEROKEE LETTER HE -13AF CHEROKEE LETTER HI -13B0 CHEROKEE LETTER HO -13B1 CHEROKEE LETTER HU -13B2 CHEROKEE LETTER HV -13B3 CHEROKEE LETTER LA -13B4 CHEROKEE LETTER LE -13B5 CHEROKEE LETTER LI -13B6 CHEROKEE LETTER LO -13B7 CHEROKEE LETTER LU -13B8 CHEROKEE LETTER LV -13B9 CHEROKEE LETTER MA -13BA CHEROKEE LETTER ME -13BB CHEROKEE LETTER MI -13BC CHEROKEE LETTER MO -13BD CHEROKEE LETTER MU -13BE CHEROKEE LETTER NA -13BF CHEROKEE LETTER HNA -13C0 CHEROKEE LETTER NAH -13C1 CHEROKEE LETTER NE -13C2 CHEROKEE LETTER NI -13C3 CHEROKEE LETTER NO -13C4 CHEROKEE LETTER NU -13C5 CHEROKEE LETTER NV -13C6 CHEROKEE LETTER QUA -13C7 CHEROKEE LETTER QUE -13C8 CHEROKEE LETTER QUI -13C9 CHEROKEE LETTER QUO -13CA CHEROKEE LETTER QUU -13CB CHEROKEE LETTER QUV -13CC CHEROKEE LETTER SA -13CD CHEROKEE LETTER S -13CE CHEROKEE LETTER SE -13CF CHEROKEE LETTER SI -13D0 CHEROKEE LETTER SO -13D1 CHEROKEE LETTER SU -13D2 CHEROKEE LETTER SV -13D3 CHEROKEE LETTER DA -13D4 CHEROKEE LETTER TA -13D5 CHEROKEE LETTER DE -13D6 CHEROKEE LETTER TE -13D7 CHEROKEE LETTER DI -13D8 CHEROKEE LETTER TI -13D9 CHEROKEE LETTER DO -13DA CHEROKEE LETTER DU -13DB CHEROKEE LETTER DV -13DC CHEROKEE LETTER DLA -13DD CHEROKEE LETTER TLA -13DE CHEROKEE LETTER TLE -13DF CHEROKEE LETTER TLI -13E0 CHEROKEE LETTER TLO -13E1 CHEROKEE LETTER TLU -13E2 CHEROKEE LETTER TLV -13E3 CHEROKEE LETTER TSA -13E4 CHEROKEE LETTER TSE -13E5 CHEROKEE LETTER TSI -13E6 CHEROKEE LETTER TSO -13E7 CHEROKEE LETTER TSU -13E8 CHEROKEE LETTER TSV -13E9 CHEROKEE LETTER WA -13EA CHEROKEE LETTER WE -13EB CHEROKEE LETTER WI -13EC CHEROKEE LETTER WO -13ED CHEROKEE LETTER WU -13EE CHEROKEE LETTER WV -13EF CHEROKEE LETTER YA -13F0 CHEROKEE LETTER YE -13F1 CHEROKEE LETTER YI -13F2 CHEROKEE LETTER YO -13F3 CHEROKEE LETTER YU -13F4 CHEROKEE LETTER YV -@@ 1400 Unified Canadian Aboriginal Syllabics 167F -@ Syllables -1401 CANADIAN SYLLABICS E - * Inuktitut (AI), Carrier (U) -1402 CANADIAN SYLLABICS AAI - * Inuktitut -1403 CANADIAN SYLLABICS I - * Carrier (O) -1404 CANADIAN SYLLABICS II -1405 CANADIAN SYLLABICS O - * Inuktitut (U), Carrier (E) -1406 CANADIAN SYLLABICS OO - * Inuktitut (UU) -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 - * East Cree -141D CANADIAN SYLLABICS Y-CREE W -141E CANADIAN SYLLABICS GLOTTAL STOP - * Moose Cree (Y), Algonquian (GLOTTAL STOP) -141F CANADIAN SYLLABICS FINAL ACUTE - * West Cree (T), East Cree (Y), Inuktitut (GLOTTAL STOP) - * Athapascan (B/P), Sayisi (I), Carrier (G) -1420 CANADIAN SYLLABICS FINAL GRAVE - * West Cree (K), Athapascan (K), Carrier (KH) -1421 CANADIAN SYLLABICS FINAL BOTTOM HALF RING - * N Cree (SH), Sayisi (R), Carrier (NG) -1422 CANADIAN SYLLABICS FINAL TOP HALF RING - * Algonquian (S), Chipewyan (R), Sayisi (S) -1423 CANADIAN SYLLABICS FINAL RIGHT HALF RING - * West Cree (N), Athapascan (D/T), Sayisi (N), Carrier (N) -1424 CANADIAN SYLLABICS FINAL RING - * West Cree (W), Sayisi (O) -1425 CANADIAN SYLLABICS FINAL DOUBLE ACUTE - * Chipewyan (TT), South Slavey (GH) -1426 CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES - * Algonquian (H), Carrier (R) -1427 CANADIAN SYLLABICS FINAL MIDDLE DOT - * Moose Cree (W), Athapascan (Y), Sayisi (YU) -1428 CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE - * West Cree (C), Sayisi (D) -1429 CANADIAN SYLLABICS FINAL PLUS - * Athapascan (N), Sayisi (AI) -142A CANADIAN SYLLABICS FINAL DOWN TACK - * N Cree (L), Carrier (D) - x (down tack - 22A4) -142B CANADIAN SYLLABICS EN -142C CANADIAN SYLLABICS IN -142D CANADIAN SYLLABICS ON -142E CANADIAN SYLLABICS AN -142F CANADIAN SYLLABICS PE - * Inuktitut (PAI), Athapascan (BE), Carrier (HU) -1430 CANADIAN SYLLABICS PAAI - * Inuktitut -1431 CANADIAN SYLLABICS PI -1432 CANADIAN SYLLABICS PII -1433 CANADIAN SYLLABICS PO - * Inuktitut (PU), Athapascan (BO), Carrier (HE) -1434 CANADIAN SYLLABICS POO - * Inuktitut (PUU) -1435 CANADIAN SYLLABICS Y-CREE POO -1436 CANADIAN SYLLABICS CARRIER HEE -1437 CANADIAN SYLLABICS CARRIER HI -1438 CANADIAN SYLLABICS PA - * Athapascan (BA), Carrier (HA) -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 - * Sayisi (G) -144B CANADIAN SYLLABICS CARRIER H -144C CANADIAN SYLLABICS TE - * Inuktitut (TAI), Athapascan (DI), Carrier (DU) -144D CANADIAN SYLLABICS TAAI - * Inuktitut -144E CANADIAN SYLLABICS TI - * Athapascan (DE), Carrier (DO) -144F CANADIAN SYLLABICS TII -1450 CANADIAN SYLLABICS TO - * Inuktitut (TU), Athapascan (DO), Carrier (DE), Sayisi (DU) -1451 CANADIAN SYLLABICS TOO - * Inuktitut (TUU) -1452 CANADIAN SYLLABICS Y-CREE TOO -1453 CANADIAN SYLLABICS CARRIER DEE -1454 CANADIAN SYLLABICS CARRIER DI -1455 CANADIAN SYLLABICS TA - * Athapascan (DA) -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 - * South Slavey (DEH) -1468 CANADIAN SYLLABICS TTI - * South Slavey (DIH) -1469 CANADIAN SYLLABICS TTO - * South Slavey (DOH) -146A CANADIAN SYLLABICS TTA - * South Slavey (DAH) -146B CANADIAN SYLLABICS KE - * Inuktitut (KAI) -146C CANADIAN SYLLABICS KAAI - * Inuktitut -146D CANADIAN SYLLABICS KI -146E CANADIAN SYLLABICS KII -146F CANADIAN SYLLABICS KO - * Inuktitut (KU), Sayisi (KU) -1470 CANADIAN SYLLABICS KOO - * Inuktitut (KUU) -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 - * East Cree -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 - * Inuktitut (GAI), Athapascan (DHE), Sayisi (THE) -148A CANADIAN SYLLABICS CAAI - * Inuktitut (GAAI) -148B CANADIAN SYLLABICS CI - * Inuktitut (GI), Athapascan (DHI), Sayisi (THI) -148C CANADIAN SYLLABICS CII - * Inuktitut (GII) -148D CANADIAN SYLLABICS CO - * Inuktitut (GU), Athapascan (DHO), Sayisi (THO) -148E CANADIAN SYLLABICS COO - * Inuktitut (GUU) -148F CANADIAN SYLLABICS Y-CREE COO -1490 CANADIAN SYLLABICS CA - * Inuktitut (GA), Athapascan (DHA), Sayisi (THA) -1491 CANADIAN SYLLABICS CAA - * Inuktitut (GAA) -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 - * Inuktitut (G), Sayisi (T) -14A2 CANADIAN SYLLABICS SAYISI TH - * Athapascan (DH) -14A3 CANADIAN SYLLABICS ME - * Inuktitut (MAI) -14A4 CANADIAN SYLLABICS MAAI - * Inuktitut -14A5 CANADIAN SYLLABICS MI -14A6 CANADIAN SYLLABICS MII -14A7 CANADIAN SYLLABICS MO - * Inuktitut (MU), Sayisi (MU) -14A8 CANADIAN SYLLABICS MOO - * Inuktitut (MUU) -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 - * Carrier (M) -14BD CANADIAN SYLLABICS MH -14BE CANADIAN SYLLABICS ATHAPASCAN M -14BF CANADIAN SYLLABICS SAYISI M -14C0 CANADIAN SYLLABICS NE - * Inuktitut (NAI) -14C1 CANADIAN SYLLABICS NAAI - * Inuktitut -14C2 CANADIAN SYLLABICS NI -14C3 CANADIAN SYLLABICS NII -14C4 CANADIAN SYLLABICS NO - * Inuktitut (NU), Sayisi (NU) -14C5 CANADIAN SYLLABICS NOO - * Inuktitut (NUU) -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 - * Inuktitut (LAI) -14D4 CANADIAN SYLLABICS LAAI - * Inuktitut -14D5 CANADIAN SYLLABICS LI -14D6 CANADIAN SYLLABICS LII -14D7 CANADIAN SYLLABICS LO - * Inuktitut (LU) -14D8 CANADIAN SYLLABICS LOO - * Inuktitut (LUU) -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 - * Inuktitut (SAI) -14EE CANADIAN SYLLABICS SAAI - * Inuktitut -14EF CANADIAN SYLLABICS SI -14F0 CANADIAN SYLLABICS SII -14F1 CANADIAN SYLLABICS SO - * Inuktitut (SU), Sayisi (SU) -14F2 CANADIAN SYLLABICS SOO - * Inuktitut (SUU) -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 - * Inuktitut (YAI) -1527 CANADIAN SYLLABICS YAAI - * Inuktitut -1528 CANADIAN SYLLABICS YI -1529 CANADIAN SYLLABICS YII -152A CANADIAN SYLLABICS YO - * Inuktitut (YU) -152B CANADIAN SYLLABICS YOO - * Inuktitut (YUU) -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 - * Inuktitut (RAI) -1543 CANADIAN SYLLABICS R-CREE RE - * Athapascan (LE) -1544 CANADIAN SYLLABICS WEST-CREE LE - * Athapascan (LI) -1545 CANADIAN SYLLABICS RAAI - * Inuktitut -1546 CANADIAN SYLLABICS RI -1547 CANADIAN SYLLABICS RII -1548 CANADIAN SYLLABICS RO - * Inuktitut (RU) -1549 CANADIAN SYLLABICS ROO - * Inuktitut (RUU) -154A CANADIAN SYLLABICS WEST-CREE LO - * Sayisi (LU) -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 - * Inuktitut (FAI) -1554 CANADIAN SYLLABICS FAAI - * Inuktitut -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 - * Sayisi (TE) -155F CANADIAN SYLLABICS N-CREE THE -1560 CANADIAN SYLLABICS THI - * Sayisi (TI) -1561 CANADIAN SYLLABICS N-CREE THI -1562 CANADIAN SYLLABICS THII -1563 CANADIAN SYLLABICS N-CREE THII -1564 CANADIAN SYLLABICS THO - * Sayisi (TU) -1565 CANADIAN SYLLABICS THOO -1566 CANADIAN SYLLABICS THA - * Sayisi (TA) -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 - * Sayisi (TTHU) -156E CANADIAN SYLLABICS TTHA -156F CANADIAN SYLLABICS TTH - * probably a mistaken interpretation of an asterisk used to mark a proper noun - x (asterisk - 002A) -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 - * Algonquian -157E CANADIAN SYLLABICS QAAI - * Inuktitut -157F CANADIAN SYLLABICS QI -1580 CANADIAN SYLLABICS QII -1581 CANADIAN SYLLABICS QO - * Inuktitut (QU) -1582 CANADIAN SYLLABICS QOO - * Inuktitut (QUU) -1583 CANADIAN SYLLABICS QA -1584 CANADIAN SYLLABICS QAA -1585 CANADIAN SYLLABICS Q -1586 CANADIAN SYLLABICS TLHE - * Sayisi (KLE) -1587 CANADIAN SYLLABICS TLHI - * Sayisi (KLI) -1588 CANADIAN SYLLABICS TLHO - * Sayisi (KLU) -1589 CANADIAN SYLLABICS TLHA - * Sayisi (KLA) -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 - * Inuktitut -158F CANADIAN SYLLABICS NGI -1590 CANADIAN SYLLABICS NGII -1591 CANADIAN SYLLABICS NGO - * Inuktitut (NGU) -1592 CANADIAN SYLLABICS NGOO - * Inuktitut (NGUU) -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 - * Sayisi (SHU) -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 - * Inuktitut (LHU) -15A3 CANADIAN SYLLABICS LHOO - * Inuktitut (LHUU) -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 - * Sayisi (HU) -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 - * Athapascan (ZA), Sayisi (TZO), South Slavey (DHA) -1615 CANADIAN SYLLABICS SAYISI JU - * Athapascan (ZO), Sayisi (TZU), South Slavey (DHO) -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 - * Athapascan (ZE), Sayisi (TZE), South Slavey (DHE) -161B CANADIAN SYLLABICS CARRIER JA - * Athapascan (ZI), Sayisi (TZI), South Slavey (DHI) -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 -@ Symbol -166D CANADIAN SYLLABICS CHI SIGN - * Algonquian - * used as a symbol to denote Christ - x (chi rho - 2627) -@ Punctuation -166E CANADIAN SYLLABICS FULL STOP -@ Syllables -166F CANADIAN SYLLABICS QAI -1670 CANADIAN SYLLABICS NGAI -1671 CANADIAN SYLLABICS NNGI -1672 CANADIAN SYLLABICS NNGII -1673 CANADIAN SYLLABICS NNGO - * Inuktitut (NNGU) -1674 CANADIAN SYLLABICS NNGOO - * Inuktitut (NNGUU) -1675 CANADIAN SYLLABICS NNGA -1676 CANADIAN SYLLABICS NNGAA -@@ 1680 Ogham 169F -@ Punctuation -1680 OGHAM SPACE MARK - * glyph is blank in "stemless" style fonts -@ Traditional letters -1681 OGHAM LETTER BEITH -1682 OGHAM LETTER LUIS -1683 OGHAM LETTER FEARN -1684 OGHAM LETTER SAIL -1685 OGHAM LETTER NION -1686 OGHAM LETTER UATH -1687 OGHAM LETTER DAIR -1688 OGHAM LETTER TINNE -1689 OGHAM LETTER COLL -168A OGHAM LETTER CEIRT -168B OGHAM LETTER MUIN -168C OGHAM LETTER GORT -168D OGHAM LETTER NGEADAL -168E OGHAM LETTER STRAIF -168F OGHAM LETTER RUIS -1690 OGHAM LETTER AILM -1691 OGHAM LETTER ONN -1692 OGHAM LETTER UR -1693 OGHAM LETTER EADHADH -1694 OGHAM LETTER IODHADH -@ Forfeda (supplementary letters) -1695 OGHAM LETTER EABHADH -1696 OGHAM LETTER OR -1697 OGHAM LETTER UILLEANN -1698 OGHAM LETTER IFIN -1699 OGHAM LETTER EAMHANCHOLL -169A OGHAM LETTER PEITH -@ Punctuation -169B OGHAM FEATHER MARK - * marks beginning of Ogham text -169C OGHAM REVERSED FEATHER MARK - * marks end of Ogham text -@@ 16A0 Runic 16FF -@ Letters -16A0 RUNIC LETTER FEHU FEOH FE F -16A1 RUNIC LETTER V -16A2 RUNIC LETTER URUZ UR U -16A3 RUNIC LETTER YR -16A4 RUNIC LETTER Y -16A5 RUNIC LETTER W -16A6 RUNIC LETTER THURISAZ THURS THORN - x (latin small letter thorn - 00FE) -16A7 RUNIC LETTER ETH -16A8 RUNIC LETTER ANSUZ A -16A9 RUNIC LETTER OS O -16AA RUNIC LETTER AC A -16AB RUNIC LETTER AESC -16AC RUNIC LETTER LONG-BRANCH-OSS O -16AD RUNIC LETTER SHORT-TWIG-OSS O -16AE RUNIC LETTER O -16AF RUNIC LETTER OE -16B0 RUNIC LETTER ON -16B1 RUNIC LETTER RAIDO RAD REID R -16B2 RUNIC LETTER KAUNA -16B3 RUNIC LETTER CEN -16B4 RUNIC LETTER KAUN K -16B5 RUNIC LETTER G -16B6 RUNIC LETTER ENG -16B7 RUNIC LETTER GEBO GYFU G -16B8 RUNIC LETTER GAR -16B9 RUNIC LETTER WUNJO WYNN W - x (latin letter wynn - 01BF) -16BA RUNIC LETTER HAGLAZ H -16BB RUNIC LETTER HAEGL H -16BC RUNIC LETTER LONG-BRANCH-HAGALL H -16BD RUNIC LETTER SHORT-TWIG-HAGALL H -16BE RUNIC LETTER NAUDIZ NYD NAUD N -16BF RUNIC LETTER SHORT-TWIG-NAUD N -16C0 RUNIC LETTER DOTTED-N -16C1 RUNIC LETTER ISAZ IS ISS I -16C2 RUNIC LETTER E -16C3 RUNIC LETTER JERAN J -16C4 RUNIC LETTER GER -16C5 RUNIC LETTER LONG-BRANCH-AR AE -16C6 RUNIC LETTER SHORT-TWIG-AR A -16C7 RUNIC LETTER IWAZ EOH -16C8 RUNIC LETTER PERTHO PEORTH P -16C9 RUNIC LETTER ALGIZ EOLHX -16CA RUNIC LETTER SOWILO S -16CB RUNIC LETTER SIGEL LONG-BRANCH-SOL S -16CC RUNIC LETTER SHORT-TWIG-SOL S -16CD RUNIC LETTER C -16CE RUNIC LETTER Z -16CF RUNIC LETTER TIWAZ TIR TYR T -16D0 RUNIC LETTER SHORT-TWIG-TYR T -16D1 RUNIC LETTER D -16D2 RUNIC LETTER BERKANAN BEORC BJARKAN B -16D3 RUNIC LETTER SHORT-TWIG-BJARKAN B -16D4 RUNIC LETTER DOTTED-P -16D5 RUNIC LETTER OPEN-P -16D6 RUNIC LETTER EHWAZ EH E -16D7 RUNIC LETTER MANNAZ MAN M -16D8 RUNIC LETTER LONG-BRANCH-MADR M -16D9 RUNIC LETTER SHORT-TWIG-MADR M -16DA RUNIC LETTER LAUKAZ LAGU LOGR L -16DB RUNIC LETTER DOTTED-L -16DC RUNIC LETTER INGWAZ -16DD RUNIC LETTER ING -16DE RUNIC LETTER DAGAZ DAEG D -16DF RUNIC LETTER OTHALAN ETHEL O -16E0 RUNIC LETTER EAR -16E1 RUNIC LETTER IOR -16E2 RUNIC LETTER CWEORTH -16E3 RUNIC LETTER CALC -16E4 RUNIC LETTER CEALC -16E5 RUNIC LETTER STAN -16E6 RUNIC LETTER LONG-BRANCH-YR -16E7 RUNIC LETTER SHORT-TWIG-YR -16E8 RUNIC LETTER ICELANDIC-YR -16E9 RUNIC LETTER Q -16EA RUNIC LETTER X -@ Punctuation -16EB RUNIC SINGLE PUNCTUATION -16EC RUNIC MULTIPLE PUNCTUATION -16ED RUNIC CROSS PUNCTUATION -@ Golden number runes -16EE RUNIC ARLAUG SYMBOL (golden number 17) - * golden number 17 -16EF RUNIC TVIMADUR SYMBOL (golden number 18) - * golden number 18 -16F0 RUNIC BELGTHOR SYMBOL (golden number 19) - * golden number 19 -@@ 1700 Tagalog 171F -@ Independent vowels -1700 TAGALOG LETTER A -1701 TAGALOG LETTER I -1702 TAGALOG LETTER U -@ Consonants -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 -@ Dependent vowel signs -1712 TAGALOG VOWEL SIGN I -1713 TAGALOG VOWEL SIGN U -@ Virama -1714 TAGALOG SIGN VIRAMA -@@ 1720 Hanunoo 173F -@ Independent vowels -1720 HANUNOO LETTER A -1721 HANUNOO LETTER I -1722 HANUNOO LETTER U -@ Consonants -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 -@ Dependent vowel signs -1732 HANUNOO VOWEL SIGN I -1733 HANUNOO VOWEL SIGN U -@ Virama -1734 HANUNOO SIGN PAMUDPOD -@ Generic punctuation for Philippine scripts -1735 PHILIPPINE SINGLE PUNCTUATION - x (devanagari danda - 0964) -1736 PHILIPPINE DOUBLE PUNCTUATION - x (devanagari double danda - 0965) -@@ 1740 Buhid 175F -@ Independent vowels -1740 BUHID LETTER A -1741 BUHID LETTER I -1742 BUHID LETTER U -@ Consonants -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 -@ Dependent vowel signs -1752 BUHID VOWEL SIGN I -1753 BUHID VOWEL SIGN U -@@ 1760 Tagbanwa 177F -@ Independent vowels -1760 TAGBANWA LETTER A -1761 TAGBANWA LETTER I -1762 TAGBANWA LETTER U -@ Consonants -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 -@ Dependent vowel signs -1772 TAGBANWA VOWEL SIGN I -1773 TAGBANWA VOWEL SIGN U -@@ 1780 Khmer 17FF -@ Consonants -1780 KHMER LETTER KA -1781 KHMER LETTER KHA -1782 KHMER LETTER KO -1783 KHMER LETTER KHO -1784 KHMER LETTER NGO -1785 KHMER LETTER CA -1786 KHMER LETTER CHA -1787 KHMER LETTER CO -1788 KHMER LETTER CHO -1789 KHMER LETTER NYO -178A KHMER LETTER DA -178B KHMER LETTER TTHA -178C KHMER LETTER DO -178D KHMER LETTER TTHO -178E KHMER LETTER NNO - * as this character belongs to the first register, its correct transliteration is nna, not nno -178F KHMER LETTER TA -1790 KHMER LETTER THA -1791 KHMER LETTER TO -1792 KHMER LETTER THO -1793 KHMER LETTER NO -1794 KHMER LETTER BA -1795 KHMER LETTER PHA -1796 KHMER LETTER PO -1797 KHMER LETTER PHO -1798 KHMER LETTER MO -1799 KHMER LETTER YO -179A KHMER LETTER RO -179B KHMER LETTER LO -179C KHMER LETTER VO -179D KHMER LETTER SHA - * used only for Pali/Sanskrit transliteration -179E KHMER LETTER SSO - * used only for Pali/Sanskrit transliteration - * as this character belongs to the first register, its correct transliteration is ssa, not sso -179F KHMER LETTER SA -17A0 KHMER LETTER HA -17A1 KHMER LETTER LA -17A2 KHMER LETTER QA - * glottal stop -@ Independent vowel (deprecated) -17A3 KHMER INDEPENDENT VOWEL QAQ * - * originally intended only for Pali/Sanskrit transliteration - * use of this character is strongly discouraged; 17A2 should be used instead -@ Independent vowels -17A4 KHMER INDEPENDENT VOWEL QAA * - * used only for Pali/Sanskrit transliteration - * use of this character is discouraged; the sequence 17A2 17B6 should be used instead -17A5 KHMER INDEPENDENT VOWEL QI -17A6 KHMER INDEPENDENT VOWEL QII -17A7 KHMER INDEPENDENT VOWEL QU -17A8 KHMER INDEPENDENT VOWEL QUK - * obsolete ligature for the sequence 17A7 1780 - * use of the sequence is now preferred -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 - * this is a variant for 17B1, used in only two words - * 17B1 is the normal variant of this vowel -17B3 KHMER INDEPENDENT VOWEL QAU -@ Inherent vowels -@+ These are for phonetic transcription to distinguish Indic language inherent vowels from Khmer inherent vowels. These characters are included solely for compatibility with particular applications; their use in other contexts is discouraged. -17B4 KHMER VOWEL INHERENT AQ * -17B5 KHMER VOWEL INHERENT AA * -@ Dependent vowel signs -17B6 KHMER VOWEL SIGN AA -17B7 KHMER VOWEL SIGN I -17B8 KHMER VOWEL SIGN II -17B9 KHMER VOWEL SIGN Y -17BA KHMER VOWEL SIGN YY -17BB KHMER VOWEL SIGN U -17BC KHMER VOWEL SIGN UU -17BD KHMER VOWEL SIGN UA -@ Two-part dependent vowel signs -@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for processing. -17BE KHMER VOWEL SIGN OE -17BF KHMER VOWEL SIGN YA -17C0 KHMER VOWEL SIGN IE -@ Dependent vowel signs -17C1 KHMER VOWEL SIGN E -17C2 KHMER VOWEL SIGN AE -17C3 KHMER VOWEL SIGN AI -@ Two-part dependent vowel signs -@+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for processing. -17C4 KHMER VOWEL SIGN OO -17C5 KHMER VOWEL SIGN AU -@ Various signs -17C6 KHMER SIGN NIKAHIT - = srak am - = anusvara - * final nasalization - * this character is usually regarded as a vowel sign am, along with om and aam - x (thai character nikhahit - 0E4D) - x (myanmar sign anusvara - 1036) -17C7 KHMER SIGN REAHMUK - = srak ah - = visarga - x (myanmar sign visarga - 1038) -17C8 KHMER SIGN YUUKALEAPINTU - * inserts a short inherent vowel with abrupt glottal stop - * the preferred transliteration is yukaleakpintu -@ Consonant shifters -@+ These signs shift the base consonant between registers. -17C9 KHMER SIGN MUUSIKATOAN - * changes the second register to the first - * the preferred transliteration is muusekatoan -17CA KHMER SIGN TRIISAP - * changes the first register to the second - * the preferred transliteration is treisap -@ Various signs -17CB KHMER SIGN BANTOC - * shortens the vowel sound in the previous orthographic syllable - * the preferred transliteration is bantak -17CC KHMER SIGN ROBAT - * a diacritic historically corresponding to the repha form of ra in Devanagari -17CD KHMER SIGN TOANDAKHIAT - * indicates that the base character is not pronounced -17CE KHMER SIGN KAKABAT - * sign used with some exclamations -17CF KHMER SIGN AHSDA - * denotes stressed intonation in some single-consonant words -17D0 KHMER SIGN SAMYOK SANNYA - * denotes deviation from the general rules of pronunciation, mostly used in loan words from Pali/Sanskrit, French, and so on -17D1 KHMER SIGN VIRIAM - * mostly obsolete, a "killer" - * indicates that the base character is the final consonant of a word without its inherent vowel sound -17D2 KHMER SIGN COENG - * functions to indicate that the following Khmer letter is to be rendered subscripted - * shape shown is arbitrary and is not visibly rendered -@ Lunar date sign (deprecated) -17D3 KHMER SIGN BATHAMASAT * - * originally intended as part of lunar date symbols - * use of this character is strongly discouraged in favor of the complete set of lunar date symbols - x (khmer symbol pathamasat - 19E0) -@ Various signs -17D4 KHMER SIGN KHAN - * functions as a full stop, period - x (thai character paiyannoi - 0E2F) - x (myanmar sign little section - 104A) -17D5 KHMER SIGN BARIYOOSAN - * indicates the end of a section or a text - x (thai character angkhankhu - 0E5A) - x (myanmar sign section - 104B) -17D6 KHMER SIGN CAMNUC PII KUUH - * functions as colon - * the preferred transliteration is camnoc pii kuuh - x (division sign - 00F7) - x (tibetan mark gter tsheg - 0F14) -17D7 KHMER SIGN LEK TOO - * repetition sign - x (thai character maiyamok - 0E46) -17D8 KHMER SIGN BEYYAL * - * et cetera - * use of this character is discouraged; other abbreviations for et cetera also exist - * preferred spelling: 17D4 179B 17D4 -17D9 KHMER SIGN PHNAEK MUAN - * indicates the beginning of a book or a treatise - * the preferred transliteration is phnek moan - x (thai character fongman - 0E4F) -17DA KHMER SIGN KOOMUUT - * indicates the end of a book or treatise - * this forms a pair with 17D9 - * the preferred transliteration is koomoot - x (thai character khomut - 0E5B) -@ Currency symbol -17DB KHMER CURRENCY SYMBOL RIEL -@ Various signs -17DC KHMER SIGN AVAKRAHASANYA - * rare, shows an omitted Sanskrit vowel, like an apostrophe - * the preferred transliteration is avakraha sannya - x (devanagari sign avagraha - 093D) -17DD KHMER SIGN ATTHACAN - * mostly obsolete - * indicates that the base character is the final consonant of a word with its inherent vowel sound - x (khmer sign viriam - 17D1) -@ Digits -17E0 KHMER DIGIT ZERO -17E1 KHMER DIGIT ONE -17E2 KHMER DIGIT TWO -17E3 KHMER DIGIT THREE -17E4 KHMER DIGIT FOUR -17E5 KHMER DIGIT FIVE -17E6 KHMER DIGIT SIX -17E7 KHMER DIGIT SEVEN -17E8 KHMER DIGIT EIGHT -17E9 KHMER DIGIT NINE -@ Numeric symbols for divination lore -@+ These characters have numeric values 0-9, respectively, but are not used for calculation. -17F0 KHMER SYMBOL LEK ATTAK SON -17F1 KHMER SYMBOL LEK ATTAK MUOY -17F2 KHMER SYMBOL LEK ATTAK PII -17F3 KHMER SYMBOL LEK ATTAK BEI -17F4 KHMER SYMBOL LEK ATTAK BUON -17F5 KHMER SYMBOL LEK ATTAK PRAM -17F6 KHMER SYMBOL LEK ATTAK PRAM-MUOY -17F7 KHMER SYMBOL LEK ATTAK PRAM-PII -17F8 KHMER SYMBOL LEK ATTAK PRAM-BEI -17F9 KHMER SYMBOL LEK ATTAK PRAM-BUON -@@ 1800 Mongolian 18AF -@ Punctuation -1800 MONGOLIAN BIRGA - x (tibetan mark initial yig mgo mdun ma - 0F04) -1801 MONGOLIAN ELLIPSIS -1802 MONGOLIAN COMMA -1803 MONGOLIAN FULL STOP -1804 MONGOLIAN COLON -1805 MONGOLIAN FOUR DOTS - * marks the end of a chapter -1806 MONGOLIAN TODO SOFT HYPHEN - * not a format control character, but simply a hyphen for Todo - x (soft hyphen - 00AD) -1807 MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER -1808 MONGOLIAN MANCHU COMMA -1809 MONGOLIAN MANCHU FULL STOP -180A MONGOLIAN NIRUGU -@ Format controls -180B MONGOLIAN FREE VARIATION SELECTOR ONE - = FVS1 -180C MONGOLIAN FREE VARIATION SELECTOR TWO - = FVS2 -180D MONGOLIAN FREE VARIATION SELECTOR THREE - = FVS3 -180E MONGOLIAN VOWEL SEPARATOR - = MVS -@ Digits -1810 MONGOLIAN DIGIT ZERO -1811 MONGOLIAN DIGIT ONE -1812 MONGOLIAN DIGIT TWO -1813 MONGOLIAN DIGIT THREE -1814 MONGOLIAN DIGIT FOUR -1815 MONGOLIAN DIGIT FIVE -1816 MONGOLIAN DIGIT SIX -1817 MONGOLIAN DIGIT SEVEN -1818 MONGOLIAN DIGIT EIGHT -1819 MONGOLIAN DIGIT NINE -@ Basic letters -1820 MONGOLIAN LETTER A - x (cyrillic small letter a - 0430) -1821 MONGOLIAN LETTER E - x (cyrillic small letter e - 044D) -1822 MONGOLIAN LETTER I - x (cyrillic small letter i - 0438) -1823 MONGOLIAN LETTER O - x (cyrillic small letter o - 043E) -1824 MONGOLIAN LETTER U - x (cyrillic small letter u - 0443) -1825 MONGOLIAN LETTER OE - x (cyrillic small letter barred o - 04E9) -1826 MONGOLIAN LETTER UE - x (cyrillic small letter straight u - 04AF) -1827 MONGOLIAN LETTER EE -1828 MONGOLIAN LETTER NA - x (cyrillic small letter en - 043D) -1829 MONGOLIAN LETTER ANG -182A MONGOLIAN LETTER BA - x (cyrillic small letter be - 0431) -182B MONGOLIAN LETTER PA - x (cyrillic small letter pe - 043F) -182C MONGOLIAN LETTER QA - x (cyrillic small letter ha - 0445) -182D MONGOLIAN LETTER GA - x (cyrillic small letter ghe - 0433) -182E MONGOLIAN LETTER MA - x (cyrillic small letter em - 043C) -182F MONGOLIAN LETTER LA - x (cyrillic small letter el - 043B) -1830 MONGOLIAN LETTER SA - x (cyrillic small letter es - 0441) -1831 MONGOLIAN LETTER SHA - x (cyrillic small letter sha - 0448) -1832 MONGOLIAN LETTER TA - x (cyrillic small letter te - 0442) -1833 MONGOLIAN LETTER DA - x (cyrillic small letter de - 0434) -1834 MONGOLIAN LETTER CHA - x (cyrillic small letter che - 0447) -1835 MONGOLIAN LETTER JA - x (cyrillic small letter zhe - 0436) -1836 MONGOLIAN LETTER YA - x (cyrillic small letter short i - 0439) -1837 MONGOLIAN LETTER RA - x (cyrillic small letter er - 0440) -1838 MONGOLIAN LETTER WA - x (cyrillic small letter ve - 0432) -1839 MONGOLIAN LETTER FA - x (cyrillic small letter ef - 0444) -183A MONGOLIAN LETTER KA - x (cyrillic small letter ha - 0445) -183B MONGOLIAN LETTER KHA - x (cyrillic small letter ka - 043A) -183C MONGOLIAN LETTER TSA - x (cyrillic small letter tse - 0446) -183D MONGOLIAN LETTER ZA - x (cyrillic small letter ze - 0437) -183E MONGOLIAN LETTER HAA - x (cyrillic small letter ha - 0445) -183F MONGOLIAN LETTER ZRA - x (cyrillic small letter zhe - 0436) -1840 MONGOLIAN LETTER LHA -1841 MONGOLIAN LETTER ZHI -1842 MONGOLIAN LETTER CHI -@ Todo letters -1843 MONGOLIAN LETTER TODO LONG VOWEL SIGN -1844 MONGOLIAN LETTER TODO E -1845 MONGOLIAN LETTER TODO I -1846 MONGOLIAN LETTER TODO O -1847 MONGOLIAN LETTER TODO U -1848 MONGOLIAN LETTER TODO OE -1849 MONGOLIAN LETTER TODO UE -184A MONGOLIAN LETTER TODO ANG -184B MONGOLIAN LETTER TODO BA -184C MONGOLIAN LETTER TODO PA -184D MONGOLIAN LETTER TODO QA -184E MONGOLIAN LETTER TODO GA -184F MONGOLIAN LETTER TODO MA -1850 MONGOLIAN LETTER TODO TA -1851 MONGOLIAN LETTER TODO DA -1852 MONGOLIAN LETTER TODO CHA -1853 MONGOLIAN LETTER TODO JA -1854 MONGOLIAN LETTER TODO TSA -1855 MONGOLIAN LETTER TODO YA -1856 MONGOLIAN LETTER TODO WA -1857 MONGOLIAN LETTER TODO KA -1858 MONGOLIAN LETTER TODO GAA -1859 MONGOLIAN LETTER TODO HAA -185A MONGOLIAN LETTER TODO JIA -185B MONGOLIAN LETTER TODO NIA -185C MONGOLIAN LETTER TODO DZA -@ Sibe letters -185D MONGOLIAN LETTER SIBE E -185E MONGOLIAN LETTER SIBE I -185F MONGOLIAN LETTER SIBE IY -1860 MONGOLIAN LETTER SIBE UE -1861 MONGOLIAN LETTER SIBE U -1862 MONGOLIAN LETTER SIBE ANG -1863 MONGOLIAN LETTER SIBE KA -1864 MONGOLIAN LETTER SIBE GA -1865 MONGOLIAN LETTER SIBE HA -1866 MONGOLIAN LETTER SIBE PA -1867 MONGOLIAN LETTER SIBE SHA -1868 MONGOLIAN LETTER SIBE TA -1869 MONGOLIAN LETTER SIBE DA -186A MONGOLIAN LETTER SIBE JA -186B MONGOLIAN LETTER SIBE FA -186C MONGOLIAN LETTER SIBE GAA -186D MONGOLIAN LETTER SIBE HAA -186E MONGOLIAN LETTER SIBE TSA -186F MONGOLIAN LETTER SIBE ZA -1870 MONGOLIAN LETTER SIBE RAA -1871 MONGOLIAN LETTER SIBE CHA -1872 MONGOLIAN LETTER SIBE ZHA -@ Manchu letters -1873 MONGOLIAN LETTER MANCHU I -1874 MONGOLIAN LETTER MANCHU KA -1875 MONGOLIAN LETTER MANCHU RA -1876 MONGOLIAN LETTER MANCHU FA -1877 MONGOLIAN LETTER MANCHU ZHA -@ Extensions for Sanskrit and Tibetan -1880 MONGOLIAN LETTER ALI GALI ANUSVARA ONE - x (tibetan sign sna ldan - 0F83) -1881 MONGOLIAN LETTER ALI GALI VISARGA ONE - x (tibetan sign rnam bcad - 0F7F) -1882 MONGOLIAN LETTER ALI GALI DAMARU - x (tibetan sign lce tsa can - 0F88) -1883 MONGOLIAN LETTER ALI GALI UBADAMA -1884 MONGOLIAN LETTER ALI GALI INVERTED UBADAMA -1885 MONGOLIAN LETTER ALI GALI BALUDA - x (tibetan mark paluta - 0F85) -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 -@@ 1900 Limbu 194F -@ Consonants -1900 LIMBU VOWEL-CARRIER LETTER -1901 LIMBU LETTER KA -1902 LIMBU LETTER KHA -1903 LIMBU LETTER GA -1904 LIMBU LETTER GHA -1905 LIMBU LETTER NGA -1906 LIMBU LETTER CA -1907 LIMBU LETTER CHA -1908 LIMBU LETTER JA -1909 LIMBU LETTER JHA -190A LIMBU LETTER YAN -190B LIMBU LETTER TA -190C LIMBU LETTER THA -190D LIMBU LETTER DA -190E LIMBU LETTER DHA -190F LIMBU LETTER NA -1910 LIMBU LETTER PA -1911 LIMBU LETTER PHA -1912 LIMBU LETTER BA -1913 LIMBU LETTER BHA -1914 LIMBU LETTER MA -1915 LIMBU LETTER YA -1916 LIMBU LETTER RA -1917 LIMBU LETTER LA -1918 LIMBU LETTER WA -1919 LIMBU LETTER SHA -191A LIMBU LETTER SSA -191B LIMBU LETTER SA -191C LIMBU LETTER HA -@ Dependent vowel signs -1920 LIMBU VOWEL SIGN A -1921 LIMBU VOWEL SIGN I -1922 LIMBU VOWEL SIGN U -1923 LIMBU VOWEL SIGN EE -1924 LIMBU VOWEL SIGN AI -1925 LIMBU VOWEL SIGN OO -1926 LIMBU VOWEL SIGN AU -1927 LIMBU VOWEL SIGN E -1928 LIMBU VOWEL SIGN O -@ Subjoined consonants -1929 LIMBU SUBJOINED LETTER YA -192A LIMBU SUBJOINED LETTER RA -192B LIMBU SUBJOINED LETTER WA -@ Final consonants -1930 LIMBU SMALL LETTER KA -1931 LIMBU SMALL LETTER NGA -1932 LIMBU SMALL LETTER ANUSVARA -1933 LIMBU SMALL LETTER TA -1934 LIMBU SMALL LETTER NA -1935 LIMBU SMALL LETTER PA -1936 LIMBU SMALL LETTER MA -1937 LIMBU SMALL LETTER RA -1938 LIMBU SMALL LETTER LA -@ Various signs -1939 LIMBU SIGN MUKPHRENG -193A LIMBU SIGN KEMPHRENG -193B LIMBU SIGN SA-I -1940 LIMBU SIGN LOO -1944 LIMBU EXCLAMATION MARK -1945 LIMBU QUESTION MARK -@ Digits -1946 LIMBU DIGIT ZERO -1947 LIMBU DIGIT ONE -1948 LIMBU DIGIT TWO -1949 LIMBU DIGIT THREE -194A LIMBU DIGIT FOUR -194B LIMBU DIGIT FIVE -194C LIMBU DIGIT SIX -194D LIMBU DIGIT SEVEN -194E LIMBU DIGIT EIGHT -194F LIMBU DIGIT NINE -@@ 1950 Tai Le 197F -@ Consonants -1950 TAI LE LETTER KA -1951 TAI LE LETTER XA -1952 TAI LE LETTER NGA -1953 TAI LE LETTER TSA -1954 TAI LE LETTER SA -1955 TAI LE LETTER YA -1956 TAI LE LETTER TA -1957 TAI LE LETTER THA -1958 TAI LE LETTER LA -1959 TAI LE LETTER PA -195A TAI LE LETTER PHA -195B TAI LE LETTER MA -195C TAI LE LETTER FA -195D TAI LE LETTER VA -195E TAI LE LETTER HA -195F TAI LE LETTER QA -1960 TAI LE LETTER KHA -1961 TAI LE LETTER TSHA -1962 TAI LE LETTER NA -@ Vowels -1963 TAI LE LETTER A -1964 TAI LE LETTER I -1965 TAI LE LETTER EE -1966 TAI LE LETTER EH -1967 TAI LE LETTER U -1968 TAI LE LETTER OO -1969 TAI LE LETTER O -196A TAI LE LETTER UE -196B TAI LE LETTER E -196C TAI LE LETTER AUE -196D TAI LE LETTER AI -@ Tone letters -1970 TAI LE LETTER TONE-2 -1971 TAI LE LETTER TONE-3 -1972 TAI LE LETTER TONE-4 -1973 TAI LE LETTER TONE-5 -1974 TAI LE LETTER TONE-6 -@@ 1980 New Tai Lue 19DF -@+ This script is also known as Xishuang Banna Dai. -@ Consonants -1980 NEW TAI LUE LETTER HIGH QA -1981 NEW TAI LUE LETTER LOW QA -1982 NEW TAI LUE LETTER HIGH KA -1983 NEW TAI LUE LETTER HIGH XA -1984 NEW TAI LUE LETTER HIGH NGA -1985 NEW TAI LUE LETTER LOW KA -1986 NEW TAI LUE LETTER LOW XA -1987 NEW TAI LUE LETTER LOW NGA -1988 NEW TAI LUE LETTER HIGH TSA -1989 NEW TAI LUE LETTER HIGH SA -198A NEW TAI LUE LETTER HIGH YA -198B NEW TAI LUE LETTER LOW TSA -198C NEW TAI LUE LETTER LOW SA -198D NEW TAI LUE LETTER LOW YA -198E NEW TAI LUE LETTER HIGH TA -198F NEW TAI LUE LETTER HIGH THA -1990 NEW TAI LUE LETTER HIGH NA -1991 NEW TAI LUE LETTER LOW TA -1992 NEW TAI LUE LETTER LOW THA -1993 NEW TAI LUE LETTER LOW NA -1994 NEW TAI LUE LETTER HIGH PA -1995 NEW TAI LUE LETTER HIGH PHA -1996 NEW TAI LUE LETTER HIGH MA -1997 NEW TAI LUE LETTER LOW PA -1998 NEW TAI LUE LETTER LOW PHA -1999 NEW TAI LUE LETTER LOW MA -199A NEW TAI LUE LETTER HIGH FA -199B NEW TAI LUE LETTER HIGH VA -199C NEW TAI LUE LETTER HIGH LA -199D NEW TAI LUE LETTER LOW FA -199E NEW TAI LUE LETTER LOW VA -199F NEW TAI LUE LETTER LOW LA -19A0 NEW TAI LUE LETTER HIGH HA -19A1 NEW TAI LUE LETTER HIGH DA -19A2 NEW TAI LUE LETTER HIGH BA -19A3 NEW TAI LUE LETTER LOW HA -19A4 NEW TAI LUE LETTER LOW DA -19A5 NEW TAI LUE LETTER LOW BA -19A6 NEW TAI LUE LETTER HIGH KVA -19A7 NEW TAI LUE LETTER HIGH XVA -19A8 NEW TAI LUE LETTER LOW KVA -19A9 NEW TAI LUE LETTER LOW XVA -@ Vowel signs -19B0 NEW TAI LUE VOWEL SIGN VOWEL SHORTENER -19B1 NEW TAI LUE VOWEL SIGN AA -19B2 NEW TAI LUE VOWEL SIGN II -19B3 NEW TAI LUE VOWEL SIGN U -19B4 NEW TAI LUE VOWEL SIGN UU -19B5 NEW TAI LUE VOWEL SIGN E -19B6 NEW TAI LUE VOWEL SIGN AE -19B7 NEW TAI LUE VOWEL SIGN O -19B8 NEW TAI LUE VOWEL SIGN OA -19B9 NEW TAI LUE VOWEL SIGN UE -19BA NEW TAI LUE VOWEL SIGN AY -19BB NEW TAI LUE VOWEL SIGN AAY -19BC NEW TAI LUE VOWEL SIGN UY -19BD NEW TAI LUE VOWEL SIGN OY -19BE NEW TAI LUE VOWEL SIGN OAY -19BF NEW TAI LUE VOWEL SIGN UEY -19C0 NEW TAI LUE VOWEL SIGN IY -@ Final consonants -19C1 NEW TAI LUE LETTER FINAL V -19C2 NEW TAI LUE LETTER FINAL NG -19C3 NEW TAI LUE LETTER FINAL N -19C4 NEW TAI LUE LETTER FINAL M -19C5 NEW TAI LUE LETTER FINAL K -19C6 NEW TAI LUE LETTER FINAL D -19C7 NEW TAI LUE LETTER FINAL B -@ Tone marks -19C8 NEW TAI LUE TONE MARK-1 -19C9 NEW TAI LUE TONE MARK-2 -@ Digits -19D0 NEW TAI LUE DIGIT ZERO -19D1 NEW TAI LUE DIGIT ONE -19D2 NEW TAI LUE DIGIT TWO -19D3 NEW TAI LUE DIGIT THREE -19D4 NEW TAI LUE DIGIT FOUR -19D5 NEW TAI LUE DIGIT FIVE -19D6 NEW TAI LUE DIGIT SIX -19D7 NEW TAI LUE DIGIT SEVEN -19D8 NEW TAI LUE DIGIT EIGHT -19D9 NEW TAI LUE DIGIT NINE -@ Various signs -19DE NEW TAI LUE SIGN LAE - * conjunction: and -19DF NEW TAI LUE SIGN LAEV - * perfective -@@ 19E0 Khmer Symbols 19FF -@ Lunar date symbols -19E0 KHMER SYMBOL PATHAMASAT - * represents the first August in a leap year -@+ The following fifteen characters represent the first through the fifteenth waxing days, respectively. -19E1 KHMER SYMBOL MUOY KOET -19E2 KHMER SYMBOL PII KOET -19E3 KHMER SYMBOL BEI KOET -19E4 KHMER SYMBOL BUON KOET -19E5 KHMER SYMBOL PRAM KOET -19E6 KHMER SYMBOL PRAM-MUOY KOET -19E7 KHMER SYMBOL PRAM-PII KOET -19E8 KHMER SYMBOL PRAM-BEI KOET -19E9 KHMER SYMBOL PRAM-BUON KOET -19EA KHMER SYMBOL DAP KOET -19EB KHMER SYMBOL DAP-MUOY KOET -19EC KHMER SYMBOL DAP-PII KOET -19ED KHMER SYMBOL DAP-BEI KOET -19EE KHMER SYMBOL DAP-BUON KOET -19EF KHMER SYMBOL DAP-PRAM KOET -19F0 KHMER SYMBOL TUTEYASAT - * represents the second August in a leap year -@+ The following fifteen characters represent the first through the fifteenth waning days, respectively. -19F1 KHMER SYMBOL MUOY ROC -19F2 KHMER SYMBOL PII ROC -19F3 KHMER SYMBOL BEI ROC -19F4 KHMER SYMBOL BUON ROC -19F5 KHMER SYMBOL PRAM ROC -19F6 KHMER SYMBOL PRAM-MUOY ROC -19F7 KHMER SYMBOL PRAM-PII ROC -19F8 KHMER SYMBOL PRAM-BEI ROC -19F9 KHMER SYMBOL PRAM-BUON ROC -19FA KHMER SYMBOL DAP ROC -19FB KHMER SYMBOL DAP-MUOY ROC -19FC KHMER SYMBOL DAP-PII ROC -19FD KHMER SYMBOL DAP-BEI ROC -19FE KHMER SYMBOL DAP-BUON ROC -19FF KHMER SYMBOL DAP-PRAM ROC -@@ 1A00 Buginese 1A1F -@+ This script is also known as Lontara. -@ Consonants -1A00 BUGINESE LETTER KA -1A01 BUGINESE LETTER GA -1A02 BUGINESE LETTER NGA -1A03 BUGINESE LETTER NGKA -1A04 BUGINESE LETTER PA -1A05 BUGINESE LETTER BA -1A06 BUGINESE LETTER MA -1A07 BUGINESE LETTER MPA -1A08 BUGINESE LETTER TA -1A09 BUGINESE LETTER DA -1A0A BUGINESE LETTER NA -1A0B BUGINESE LETTER NRA -1A0C BUGINESE LETTER CA -1A0D BUGINESE LETTER JA -1A0E BUGINESE LETTER NYA -1A0F BUGINESE LETTER NYCA -1A10 BUGINESE LETTER YA -1A11 BUGINESE LETTER RA -1A12 BUGINESE LETTER LA -1A13 BUGINESE LETTER VA -1A14 BUGINESE LETTER SA -1A15 BUGINESE LETTER A -1A16 BUGINESE LETTER HA -@ Vowels -1A17 BUGINESE VOWEL SIGN I -1A18 BUGINESE VOWEL SIGN U -1A19 BUGINESE VOWEL SIGN E -1A1A BUGINESE VOWEL SIGN O -1A1B BUGINESE VOWEL SIGN AE -@ Various signs -1A1E BUGINESE PALLAWA -1A1F BUGINESE END OF SECTION -@@ 1D00 Phonetic Extensions 1D7F -@+ These are non-IPA phonetic extensions, mostly for the Uralic Phonetic Alphabet (UPA). -@+ The small capitals, superscript, and subscript forms are for phonetic representations where style variations are semantically important. -@+ For general text, use regular Latin, Greek or Cyrillic letters with markup instead. -@ Latin letters -1D00 LATIN LETTER SMALL CAPITAL A -1D01 LATIN LETTER SMALL CAPITAL AE -1D02 LATIN SMALL LETTER TURNED AE - * glyph can also have sideways orientation -1D03 LATIN LETTER SMALL CAPITAL BARRED B -1D04 LATIN LETTER SMALL CAPITAL C -1D05 LATIN LETTER SMALL CAPITAL D -1D06 LATIN LETTER SMALL CAPITAL ETH -1D07 LATIN LETTER SMALL CAPITAL E -1D08 LATIN SMALL LETTER TURNED OPEN E -1D09 LATIN SMALL LETTER TURNED I -1D0A LATIN LETTER SMALL CAPITAL J -1D0B LATIN LETTER SMALL CAPITAL K -1D0C LATIN LETTER SMALL CAPITAL L WITH STROKE -1D0D LATIN LETTER SMALL CAPITAL M -1D0E LATIN LETTER SMALL CAPITAL REVERSED N -1D0F LATIN LETTER SMALL CAPITAL O -1D10 LATIN LETTER SMALL CAPITAL OPEN O -1D11 LATIN SMALL LETTER SIDEWAYS O -1D12 LATIN SMALL LETTER SIDEWAYS OPEN O -1D13 LATIN SMALL LETTER SIDEWAYS O WITH STROKE -1D14 LATIN SMALL LETTER TURNED OE - * glyph can also have sideways orientation -1D15 LATIN LETTER SMALL CAPITAL OU -1D16 LATIN SMALL LETTER TOP HALF O -1D17 LATIN SMALL LETTER BOTTOM HALF O -1D18 LATIN LETTER SMALL CAPITAL P - * represents a semi-voiced [p] -1D19 LATIN LETTER SMALL CAPITAL REVERSED R -1D1A LATIN LETTER SMALL CAPITAL TURNED R -1D1B LATIN LETTER SMALL CAPITAL T -1D1C LATIN LETTER SMALL CAPITAL U -1D1D LATIN SMALL LETTER SIDEWAYS U -1D1E LATIN SMALL LETTER SIDEWAYS DIAERESIZED U - * glyph can also have turned orientation -1D1F LATIN SMALL LETTER SIDEWAYS TURNED M -1D20 LATIN LETTER SMALL CAPITAL V -1D21 LATIN LETTER SMALL CAPITAL W -1D22 LATIN LETTER SMALL CAPITAL Z -1D23 LATIN LETTER SMALL CAPITAL EZH -1D24 LATIN LETTER VOICED LARYNGEAL SPIRANT -1D25 LATIN LETTER AIN -@ Greek letters -1D26 GREEK LETTER SMALL CAPITAL GAMMA -1D27 GREEK LETTER SMALL CAPITAL LAMDA -1D28 GREEK LETTER SMALL CAPITAL PI -1D29 GREEK LETTER SMALL CAPITAL RHO - * represents a voiceless uvular trill -1D2A GREEK LETTER SMALL CAPITAL PSI -@ Cyrillic letter -1D2B CYRILLIC LETTER SMALL CAPITAL EL - * in italic style, the glyph is obliqued, not italicized - x (cyrillic small letter el - 043B) -@ Latin superscript modifier letters -1D2C MODIFIER LETTER CAPITAL A - # <super> 0041 -1D2D MODIFIER LETTER CAPITAL AE - # <super> 00C6 -1D2E MODIFIER LETTER CAPITAL B - # <super> 0042 -1D2F MODIFIER LETTER CAPITAL BARRED B -1D30 MODIFIER LETTER CAPITAL D - # <super> 0044 -1D31 MODIFIER LETTER CAPITAL E - # <super> 0045 -1D32 MODIFIER LETTER CAPITAL REVERSED E - # <super> 018E -1D33 MODIFIER LETTER CAPITAL G - # <super> 0047 -1D34 MODIFIER LETTER CAPITAL H - # <super> 0048 -1D35 MODIFIER LETTER CAPITAL I - # <super> 0049 -1D36 MODIFIER LETTER CAPITAL J - # <super> 004A -1D37 MODIFIER LETTER CAPITAL K - # <super> 004B -1D38 MODIFIER LETTER CAPITAL L - # <super> 004C -1D39 MODIFIER LETTER CAPITAL M - # <super> 004D -1D3A MODIFIER LETTER CAPITAL N - # <super> 004E -1D3B MODIFIER LETTER CAPITAL REVERSED N -1D3C MODIFIER LETTER CAPITAL O - # <super> 004F -1D3D MODIFIER LETTER CAPITAL OU - # <super> 0222 -1D3E MODIFIER LETTER CAPITAL P - # <super> 0050 -1D3F MODIFIER LETTER CAPITAL R - # <super> 0052 -1D40 MODIFIER LETTER CAPITAL T - # <super> 0054 -1D41 MODIFIER LETTER CAPITAL U - # <super> 0055 -1D42 MODIFIER LETTER CAPITAL W - # <super> 0057 -1D43 MODIFIER LETTER SMALL A - # <super> 0061 -1D44 MODIFIER LETTER SMALL TURNED A - # <super> 0250 -1D45 MODIFIER LETTER SMALL ALPHA - # <super> 0251 -1D46 MODIFIER LETTER SMALL TURNED AE - # <super> 1D02 -1D47 MODIFIER LETTER SMALL B - # <super> 0062 -1D48 MODIFIER LETTER SMALL D - # <super> 0064 -1D49 MODIFIER LETTER SMALL E - # <super> 0065 -1D4A MODIFIER LETTER SMALL SCHWA - # <super> 0259 -1D4B MODIFIER LETTER SMALL OPEN E - # <super> 025B -1D4C MODIFIER LETTER SMALL TURNED OPEN E - * more appropriate equivalence would be to 1D08 - # <super> 025C -1D4D MODIFIER LETTER SMALL G - # <super> 0067 -1D4E MODIFIER LETTER SMALL TURNED I -1D4F MODIFIER LETTER SMALL K - # <super> 006B -1D50 MODIFIER LETTER SMALL M - # <super> 006D -1D51 MODIFIER LETTER SMALL ENG - # <super> 014B -1D52 MODIFIER LETTER SMALL O - # <super> 006F -1D53 MODIFIER LETTER SMALL OPEN O - # <super> 0254 -1D54 MODIFIER LETTER SMALL TOP HALF O - # <super> 1D16 -1D55 MODIFIER LETTER SMALL BOTTOM HALF O - # <super> 1D17 -1D56 MODIFIER LETTER SMALL P - # <super> 0070 -1D57 MODIFIER LETTER SMALL T - # <super> 0074 -1D58 MODIFIER LETTER SMALL U - # <super> 0075 -1D59 MODIFIER LETTER SMALL SIDEWAYS U - # <super> 1D1D -1D5A MODIFIER LETTER SMALL TURNED M - # <super> 026F -1D5B MODIFIER LETTER SMALL V - # <super> 0076 -1D5C MODIFIER LETTER SMALL AIN - # <super> 1D25 -@ Greek superscript modifier letters -1D5D MODIFIER LETTER SMALL BETA - # <super> 03B2 -1D5E MODIFIER LETTER SMALL GREEK GAMMA - # <super> 03B3 -1D5F MODIFIER LETTER SMALL DELTA - # <super> 03B4 -1D60 MODIFIER LETTER SMALL GREEK PHI - # <super> 03C6 -1D61 MODIFIER LETTER SMALL CHI - # <super> 03C7 -@ Latin subscript modifier letters -1D62 LATIN SUBSCRIPT SMALL LETTER I - # <sub> 0069 -1D63 LATIN SUBSCRIPT SMALL LETTER R - # <sub> 0072 -1D64 LATIN SUBSCRIPT SMALL LETTER U - # <sub> 0075 -1D65 LATIN SUBSCRIPT SMALL LETTER V - # <sub> 0076 -@ Greek subscript modifier letters -1D66 GREEK SUBSCRIPT SMALL LETTER BETA - # <sub> 03B2 -1D67 GREEK SUBSCRIPT SMALL LETTER GAMMA - # <sub> 03B3 -1D68 GREEK SUBSCRIPT SMALL LETTER RHO - # <sub> 03C1 -1D69 GREEK SUBSCRIPT SMALL LETTER PHI - # <sub> 03C6 -1D6A GREEK SUBSCRIPT SMALL LETTER CHI - # <sub> 03C7 -@ Latin letter -1D6B LATIN SMALL LETTER UE -@ Latin letters with middle tilde -@+ An additional letter with middle tilde is found in another block. - x (latin small letter l with middle tilde - 026B) -1D6C LATIN SMALL LETTER B WITH MIDDLE TILDE -1D6D LATIN SMALL LETTER D WITH MIDDLE TILDE -1D6E LATIN SMALL LETTER F WITH MIDDLE TILDE -1D6F LATIN SMALL LETTER M WITH MIDDLE TILDE -1D70 LATIN SMALL LETTER N WITH MIDDLE TILDE -1D71 LATIN SMALL LETTER P WITH MIDDLE TILDE -1D72 LATIN SMALL LETTER R WITH MIDDLE TILDE -1D73 LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE -1D74 LATIN SMALL LETTER S WITH MIDDLE TILDE -1D75 LATIN SMALL LETTER T WITH MIDDLE TILDE -1D76 LATIN SMALL LETTER Z WITH MIDDLE TILDE -@ Caucasian linguistics -1D77 LATIN SMALL LETTER TURNED G - * Georgian transcription - x (georgian letter turned gan - 10F9) -1D78 MODIFIER LETTER CYRILLIC EN - # <super> 043D -@ Other phonetic symbols -1D79 LATIN SMALL LETTER INSULAR G - * older Irish phonetic notation - x (latin small letter g - 0067) - x (latin small letter script g - 0261) - x (latin small letter gamma - 0263) -1D7A LATIN SMALL LETTER TH WITH STRIKETHROUGH - * American dictionary usage - x (greek small letter theta - 03B8) -1D7B LATIN SMALL CAPITAL LETTER I WITH STROKE - * used with different meanings by Americanists and Oxford dictionaries -1D7C LATIN SMALL LETTER IOTA WITH STROKE - * used by Russianists -1D7D LATIN SMALL LETTER P WITH STROKE - * used by Americanists -1D7E LATIN SMALL CAPITAL LETTER U WITH STROKE - * used by Americanists -1D7F LATIN SMALL LETTER UPSILON WITH STROKE - * used by Americanists and Oxford dictionaries -@@ 1D80 Phonetic Extensions Supplement 1DBF -@ Latin letters with palatal hook -@+ An additional letter with palatal hook is found in another block. - x (latin small letter t with palatal hook - 01AB) -1D80 LATIN SMALL LETTER B WITH PALATAL HOOK -1D81 LATIN SMALL LETTER D WITH PALATAL HOOK -1D82 LATIN SMALL LETTER F WITH PALATAL HOOK -1D83 LATIN SMALL LETTER G WITH PALATAL HOOK -1D84 LATIN SMALL LETTER K WITH PALATAL HOOK -1D85 LATIN SMALL LETTER L WITH PALATAL HOOK -1D86 LATIN SMALL LETTER M WITH PALATAL HOOK -1D87 LATIN SMALL LETTER N WITH PALATAL HOOK -1D88 LATIN SMALL LETTER P WITH PALATAL HOOK -1D89 LATIN SMALL LETTER R WITH PALATAL HOOK -1D8A LATIN SMALL LETTER S WITH PALATAL HOOK -1D8B LATIN SMALL LETTER ESH WITH PALATAL HOOK -1D8C LATIN SMALL LETTER V WITH PALATAL HOOK -1D8D LATIN SMALL LETTER X WITH PALATAL HOOK -1D8E LATIN SMALL LETTER Z WITH PALATAL HOOK -@ Latin letters with retroflex hook -@+ IPA recommends transcribing vowels with r-coloring (rhoticity) with the rhotic hook instead. - x (modifier letter rhotic hook - 02DE) -@+ Additional letters with retroflex hook are found in other blocks. - x (latin capital letter t with retroflex hook - 01AE) - x (latin small letter d with tail - 0256) - x (latin small letter l with retroflex hook - 026D) - x (latin small letter n with retroflex hook - 0273) - x (latin small letter turned r with hook - 027B) - x (latin small letter r with tail - 027D) - x (latin small letter s with hook - 0282) - x (latin small letter squat reversed esh - 0285) - x (latin small letter t with retroflex hook - 0288) - x (latin small letter z with retroflex hook - 0290) - x (latin small letter turned h with fishhook and tail - 02AF) -1D8F LATIN SMALL LETTER A WITH RETROFLEX HOOK -1D90 LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK -1D91 LATIN SMALL LETTER D WITH HOOK AND TAIL -1D92 LATIN SMALL LETTER E WITH RETROFLEX HOOK -1D93 LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK -1D94 LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK - x (latin small letter reversed open e with hook - 025D) -1D95 LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK - x (latin small letter schwa with hook - 025A) -1D96 LATIN SMALL LETTER I WITH RETROFLEX HOOK -1D97 LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK -1D98 LATIN SMALL LETTER ESH WITH RETROFLEX HOOK -1D99 LATIN SMALL LETTER U WITH RETROFLEX HOOK -1D9A LATIN SMALL LETTER EZH WITH RETROFLEX HOOK -@ Modifier letters -@+ Other modifier letters can be found in the Spacing Modifer Letters, Phonetic Extensions, as well as Superscripts and Subscripts blocks. -1D9B MODIFIER LETTER SMALL TURNED ALPHA - # <super> 0252 -1D9C MODIFIER LETTER SMALL C - # <super> 0063 -1D9D MODIFIER LETTER SMALL C WITH CURL - # <super> 0255 -1D9E MODIFIER LETTER SMALL ETH - # <super> 00F0 -1D9F MODIFIER LETTER SMALL REVERSED OPEN E - # <super> 025C -1DA0 MODIFIER LETTER SMALL F - # <super> 0066 -1DA1 MODIFIER LETTER SMALL DOTLESS J WITH STROKE - # <super> 025F -1DA2 MODIFIER LETTER SMALL SCRIPT G - # <super> 0261 -1DA3 MODIFIER LETTER SMALL TURNED H - # <super> 0265 -1DA4 MODIFIER LETTER SMALL I WITH STROKE - # <super> 0268 -1DA5 MODIFIER LETTER SMALL IOTA - # <super> 0269 -1DA6 MODIFIER LETTER SMALL CAPITAL I - # <super> 026A -1DA7 MODIFIER LETTER SMALL CAPITAL I WITH STROKE - # <super> 1D7B -1DA8 MODIFIER LETTER SMALL J WITH CROSSED-TAIL - # <super> 029D -1DA9 MODIFIER LETTER SMALL L WITH RETROFLEX HOOK - # <super> 026D -1DAA MODIFIER LETTER SMALL L WITH PALATAL HOOK - # <super> 1D85 -1DAB MODIFIER LETTER SMALL CAPITAL L - # <super> 029F -1DAC MODIFIER LETTER SMALL M WITH HOOK - # <super> 0271 -1DAD MODIFIER LETTER SMALL TURNED M WITH LONG LEG - # <super> 0270 -1DAE MODIFIER LETTER SMALL N WITH LEFT HOOK - # <super> 0272 -1DAF MODIFIER LETTER SMALL N WITH RETROFLEX HOOK - # <super> 0273 -1DB0 MODIFIER LETTER SMALL CAPITAL N - # <super> 0274 -1DB1 MODIFIER LETTER SMALL BARRED O - # <super> 0275 -1DB2 MODIFIER LETTER SMALL PHI - # <super> 0278 -1DB3 MODIFIER LETTER SMALL S WITH HOOK - # <super> 0282 -1DB4 MODIFIER LETTER SMALL ESH - # <super> 0283 -1DB5 MODIFIER LETTER SMALL T WITH PALATAL HOOK - # <super> 01AB -1DB6 MODIFIER LETTER SMALL U BAR - # <super> 0289 -1DB7 MODIFIER LETTER SMALL UPSILON - # <super> 028A -1DB8 MODIFIER LETTER SMALL CAPITAL U - # <super> 1D1C -1DB9 MODIFIER LETTER SMALL V WITH HOOK - # <super> 028B -1DBA MODIFIER LETTER SMALL TURNED V - # <super> 028C -1DBB MODIFIER LETTER SMALL Z - # <super> 007A -1DBC MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK - # <super> 0290 -1DBD MODIFIER LETTER SMALL Z WITH CURL - # <super> 0291 -1DBE MODIFIER LETTER SMALL EZH - # <super> 0292 -1DBF MODIFIER LETTER SMALL THETA - # <super> 03B8 -@@ 1DC0 Combining Diacritical Marks Supplement 1DFF -@ Used for Ancient Greek -1DC0 COMBINING DOTTED GRAVE ACCENT - x (greek dialytika and varia - 1FED) -1DC1 COMBINING DOTTED ACUTE ACCENT - x (combining greek dialytika tonos - 0344) - x (greek dialytika and oxia - 1FEE) -@ Miscellaneous marks -1DC2 COMBINING SNAKE BELOW -1DC3 COMBINING SUSPENSION MARK - * Glagolitic - x (combining breve - 0306) -@@ 1E00 Latin Extended Additional 1EFF -@+ In this block the names "WITH LINE BELOW" refer to a macron below the letter. -@ Latin general use extensions -1E00 LATIN CAPITAL LETTER A WITH RING BELOW - : 0041 0325 -1E01 LATIN SMALL LETTER A WITH RING BELOW - : 0061 0325 -1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE - : 0042 0307 -1E03 LATIN SMALL LETTER B WITH DOT ABOVE - * Irish Gaelic (old orthography) - : 0062 0307 -1E04 LATIN CAPITAL LETTER B WITH DOT BELOW - : 0042 0323 -1E05 LATIN SMALL LETTER B WITH DOT BELOW - : 0062 0323 -1E06 LATIN CAPITAL LETTER B WITH LINE BELOW - : 0042 0331 -1E07 LATIN SMALL LETTER B WITH LINE BELOW - : 0062 0331 -1E08 LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE - : 00C7 0301 -1E09 LATIN SMALL LETTER C WITH CEDILLA AND ACUTE - : 00E7 0301 -1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE - : 0044 0307 -1E0B LATIN SMALL LETTER D WITH DOT ABOVE - * Irish Gaelic (old orthography) - : 0064 0307 -1E0C LATIN CAPITAL LETTER D WITH DOT BELOW - : 0044 0323 -1E0D LATIN SMALL LETTER D WITH DOT BELOW - * Indic transliteration - : 0064 0323 -1E0E LATIN CAPITAL LETTER D WITH LINE BELOW - : 0044 0331 -1E0F LATIN SMALL LETTER D WITH LINE BELOW - : 0064 0331 -1E10 LATIN CAPITAL LETTER D WITH CEDILLA - : 0044 0327 -1E11 LATIN SMALL LETTER D WITH CEDILLA - * Livonian - : 0064 0327 -1E12 LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW - : 0044 032D -1E13 LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW - : 0064 032D -1E14 LATIN CAPITAL LETTER E WITH MACRON AND GRAVE - : 0112 0300 -1E15 LATIN SMALL LETTER E WITH MACRON AND GRAVE - : 0113 0300 -1E16 LATIN CAPITAL LETTER E WITH MACRON AND ACUTE - : 0112 0301 -1E17 LATIN SMALL LETTER E WITH MACRON AND ACUTE - : 0113 0301 -1E18 LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW - : 0045 032D -1E19 LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW - : 0065 032D -1E1A LATIN CAPITAL LETTER E WITH TILDE BELOW - : 0045 0330 -1E1B LATIN SMALL LETTER E WITH TILDE BELOW - : 0065 0330 -1E1C LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE - : 0228 0306 -1E1D LATIN SMALL LETTER E WITH CEDILLA AND BREVE - : 0229 0306 -1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE - : 0046 0307 -1E1F LATIN SMALL LETTER F WITH DOT ABOVE - * Irish Gaelic (old orthography) - : 0066 0307 -1E20 LATIN CAPITAL LETTER G WITH MACRON - : 0047 0304 -1E21 LATIN SMALL LETTER G WITH MACRON - : 0067 0304 -1E22 LATIN CAPITAL LETTER H WITH DOT ABOVE - : 0048 0307 -1E23 LATIN SMALL LETTER H WITH DOT ABOVE - : 0068 0307 -1E24 LATIN CAPITAL LETTER H WITH DOT BELOW - : 0048 0323 -1E25 LATIN SMALL LETTER H WITH DOT BELOW - * Indic transliteration - : 0068 0323 -1E26 LATIN CAPITAL LETTER H WITH DIAERESIS - : 0048 0308 -1E27 LATIN SMALL LETTER H WITH DIAERESIS - : 0068 0308 -1E28 LATIN CAPITAL LETTER H WITH CEDILLA - : 0048 0327 -1E29 LATIN SMALL LETTER H WITH CEDILLA - : 0068 0327 -1E2A LATIN CAPITAL LETTER H WITH BREVE BELOW - : 0048 032E -1E2B LATIN SMALL LETTER H WITH BREVE BELOW - * Semitic transliteration - : 0068 032E -1E2C LATIN CAPITAL LETTER I WITH TILDE BELOW - : 0049 0330 -1E2D LATIN SMALL LETTER I WITH TILDE BELOW - : 0069 0330 -1E2E LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE - : 00CF 0301 -1E2F LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE - : 00EF 0301 -1E30 LATIN CAPITAL LETTER K WITH ACUTE - : 004B 0301 -1E31 LATIN SMALL LETTER K WITH ACUTE - * Macedonian transliteration - : 006B 0301 -1E32 LATIN CAPITAL LETTER K WITH DOT BELOW - : 004B 0323 -1E33 LATIN SMALL LETTER K WITH DOT BELOW - : 006B 0323 -1E34 LATIN CAPITAL LETTER K WITH LINE BELOW - : 004B 0331 -1E35 LATIN SMALL LETTER K WITH LINE BELOW - : 006B 0331 -1E36 LATIN CAPITAL LETTER L WITH DOT BELOW - : 004C 0323 -1E37 LATIN SMALL LETTER L WITH DOT BELOW - * Indic transliteration - : 006C 0323 -1E38 LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON - : 1E36 0304 -1E39 LATIN SMALL LETTER L WITH DOT BELOW AND MACRON - * Indic transliteration - : 1E37 0304 -1E3A LATIN CAPITAL LETTER L WITH LINE BELOW - : 004C 0331 -1E3B LATIN SMALL LETTER L WITH LINE BELOW - * Indic transliteration - : 006C 0331 -1E3C LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW - : 004C 032D -1E3D LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW - : 006C 032D -1E3E LATIN CAPITAL LETTER M WITH ACUTE - : 004D 0301 -1E3F LATIN SMALL LETTER M WITH ACUTE - : 006D 0301 -1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE - : 004D 0307 -1E41 LATIN SMALL LETTER M WITH DOT ABOVE - * Irish Gaelic (old orthography) - : 006D 0307 -1E42 LATIN CAPITAL LETTER M WITH DOT BELOW - : 004D 0323 -1E43 LATIN SMALL LETTER M WITH DOT BELOW - * Indic transliteration - : 006D 0323 -1E44 LATIN CAPITAL LETTER N WITH DOT ABOVE - : 004E 0307 -1E45 LATIN SMALL LETTER N WITH DOT ABOVE - * Indic transliteration - : 006E 0307 -1E46 LATIN CAPITAL LETTER N WITH DOT BELOW - : 004E 0323 -1E47 LATIN SMALL LETTER N WITH DOT BELOW - * Indic transliteration - : 006E 0323 -1E48 LATIN CAPITAL LETTER N WITH LINE BELOW - : 004E 0331 -1E49 LATIN SMALL LETTER N WITH LINE BELOW - * Indic transliteration - : 006E 0331 -1E4A LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW - : 004E 032D -1E4B LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW - : 006E 032D -1E4C LATIN CAPITAL LETTER O WITH TILDE AND ACUTE - : 00D5 0301 -1E4D LATIN SMALL LETTER O WITH TILDE AND ACUTE - : 00F5 0301 -1E4E LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS - : 00D5 0308 -1E4F LATIN SMALL LETTER O WITH TILDE AND DIAERESIS - : 00F5 0308 -1E50 LATIN CAPITAL LETTER O WITH MACRON AND GRAVE - : 014C 0300 -1E51 LATIN SMALL LETTER O WITH MACRON AND GRAVE - : 014D 0300 -1E52 LATIN CAPITAL LETTER O WITH MACRON AND ACUTE - : 014C 0301 -1E53 LATIN SMALL LETTER O WITH MACRON AND ACUTE - : 014D 0301 -1E54 LATIN CAPITAL LETTER P WITH ACUTE - : 0050 0301 -1E55 LATIN SMALL LETTER P WITH ACUTE - : 0070 0301 -1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE - : 0050 0307 -1E57 LATIN SMALL LETTER P WITH DOT ABOVE - * Irish Gaelic (old orthography) - : 0070 0307 -1E58 LATIN CAPITAL LETTER R WITH DOT ABOVE - : 0052 0307 -1E59 LATIN SMALL LETTER R WITH DOT ABOVE - : 0072 0307 -1E5A LATIN CAPITAL LETTER R WITH DOT BELOW - : 0052 0323 -1E5B LATIN SMALL LETTER R WITH DOT BELOW - * Indic transliteration - : 0072 0323 -1E5C LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON - : 1E5A 0304 -1E5D LATIN SMALL LETTER R WITH DOT BELOW AND MACRON - * Indic transliteration - : 1E5B 0304 -1E5E LATIN CAPITAL LETTER R WITH LINE BELOW - : 0052 0331 -1E5F LATIN SMALL LETTER R WITH LINE BELOW - * Indic transliteration - : 0072 0331 -1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE - : 0053 0307 -1E61 LATIN SMALL LETTER S WITH DOT ABOVE - * Irish Gaelic (old orthography) - : 0073 0307 -1E62 LATIN CAPITAL LETTER S WITH DOT BELOW - : 0053 0323 -1E63 LATIN SMALL LETTER S WITH DOT BELOW - * Indic transliteration - : 0073 0323 -1E64 LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE - : 015A 0307 -1E65 LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE - : 015B 0307 -1E66 LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE - : 0160 0307 -1E67 LATIN SMALL LETTER S WITH CARON AND DOT ABOVE - : 0161 0307 -1E68 LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE - : 1E62 0307 -1E69 LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE - : 1E63 0307 -1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE - : 0054 0307 -1E6B LATIN SMALL LETTER T WITH DOT ABOVE - * Irish Gaelic (old orthography) - : 0074 0307 -1E6C LATIN CAPITAL LETTER T WITH DOT BELOW - : 0054 0323 -1E6D LATIN SMALL LETTER T WITH DOT BELOW - * Indic transliteration - : 0074 0323 -1E6E LATIN CAPITAL LETTER T WITH LINE BELOW - : 0054 0331 -1E6F LATIN SMALL LETTER T WITH LINE BELOW - * Semitic transliteration - : 0074 0331 -1E70 LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW - : 0054 032D -1E71 LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW - : 0074 032D -1E72 LATIN CAPITAL LETTER U WITH DIAERESIS BELOW - : 0055 0324 -1E73 LATIN SMALL LETTER U WITH DIAERESIS BELOW - : 0075 0324 -1E74 LATIN CAPITAL LETTER U WITH TILDE BELOW - : 0055 0330 -1E75 LATIN SMALL LETTER U WITH TILDE BELOW - : 0075 0330 -1E76 LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW - : 0055 032D -1E77 LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW - : 0075 032D -1E78 LATIN CAPITAL LETTER U WITH TILDE AND ACUTE - : 0168 0301 -1E79 LATIN SMALL LETTER U WITH TILDE AND ACUTE - : 0169 0301 -1E7A LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS - : 016A 0308 -1E7B LATIN SMALL LETTER U WITH MACRON AND DIAERESIS - : 016B 0308 -1E7C LATIN CAPITAL LETTER V WITH TILDE - : 0056 0303 -1E7D LATIN SMALL LETTER V WITH TILDE - : 0076 0303 -1E7E LATIN CAPITAL LETTER V WITH DOT BELOW - : 0056 0323 -1E7F LATIN SMALL LETTER V WITH DOT BELOW - : 0076 0323 -1E80 LATIN CAPITAL LETTER W WITH GRAVE - : 0057 0300 -1E81 LATIN SMALL LETTER W WITH GRAVE - * Welsh - : 0077 0300 -1E82 LATIN CAPITAL LETTER W WITH ACUTE - : 0057 0301 -1E83 LATIN SMALL LETTER W WITH ACUTE - * Welsh - : 0077 0301 -1E84 LATIN CAPITAL LETTER W WITH DIAERESIS - : 0057 0308 -1E85 LATIN SMALL LETTER W WITH DIAERESIS - * Welsh - : 0077 0308 -1E86 LATIN CAPITAL LETTER W WITH DOT ABOVE - : 0057 0307 -1E87 LATIN SMALL LETTER W WITH DOT ABOVE - : 0077 0307 -1E88 LATIN CAPITAL LETTER W WITH DOT BELOW - : 0057 0323 -1E89 LATIN SMALL LETTER W WITH DOT BELOW - : 0077 0323 -1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE - : 0058 0307 -1E8B LATIN SMALL LETTER X WITH DOT ABOVE - : 0078 0307 -1E8C LATIN CAPITAL LETTER X WITH DIAERESIS - : 0058 0308 -1E8D LATIN SMALL LETTER X WITH DIAERESIS - : 0078 0308 -1E8E LATIN CAPITAL LETTER Y WITH DOT ABOVE - : 0059 0307 -1E8F LATIN SMALL LETTER Y WITH DOT ABOVE - : 0079 0307 -1E90 LATIN CAPITAL LETTER Z WITH CIRCUMFLEX - : 005A 0302 -1E91 LATIN SMALL LETTER Z WITH CIRCUMFLEX - : 007A 0302 -1E92 LATIN CAPITAL LETTER Z WITH DOT BELOW - : 005A 0323 -1E93 LATIN SMALL LETTER Z WITH DOT BELOW - * Indic transliteration - : 007A 0323 -1E94 LATIN CAPITAL LETTER Z WITH LINE BELOW - : 005A 0331 -1E95 LATIN SMALL LETTER Z WITH LINE BELOW - * Semitic transliteration - : 007A 0331 -1E96 LATIN SMALL LETTER H WITH LINE BELOW - * Semitic transliteration - : 0068 0331 -1E97 LATIN SMALL LETTER T WITH DIAERESIS - : 0074 0308 -1E98 LATIN SMALL LETTER W WITH RING ABOVE - : 0077 030A -1E99 LATIN SMALL LETTER Y WITH RING ABOVE - : 0079 030A -1E9A LATIN SMALL LETTER A WITH RIGHT HALF RING - # 0061 02BE -1E9B LATIN SMALL LETTER LONG S WITH DOT ABOVE - * in current use in Gaelic types (as glyph variant of 1E61) - : 017F 0307 -@ Latin extensions for Vietnamese -1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW - : 0041 0323 -1EA1 LATIN SMALL LETTER A WITH DOT BELOW - : 0061 0323 -1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE - : 0041 0309 -1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE - : 0061 0309 -1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE - : 00C2 0301 -1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE - : 00E2 0301 -1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE - : 00C2 0300 -1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE - : 00E2 0300 -1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE - : 00C2 0309 -1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE - : 00E2 0309 -1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE - : 00C2 0303 -1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE - : 00E2 0303 -1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW - : 1EA0 0302 -1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW - : 1EA1 0302 -1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE - : 0102 0301 -1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE - : 0103 0301 -1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE - : 0102 0300 -1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE - : 0103 0300 -1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE - : 0102 0309 -1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE - : 0103 0309 -1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE - : 0102 0303 -1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE - : 0103 0303 -1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW - : 1EA0 0306 -1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW - : 1EA1 0306 -1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW - : 0045 0323 -1EB9 LATIN SMALL LETTER E WITH DOT BELOW - : 0065 0323 -1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE - : 0045 0309 -1EBB LATIN SMALL LETTER E WITH HOOK ABOVE - : 0065 0309 -1EBC LATIN CAPITAL LETTER E WITH TILDE - : 0045 0303 -1EBD LATIN SMALL LETTER E WITH TILDE - : 0065 0303 -1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE - : 00CA 0301 -1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE - : 00EA 0301 -1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE - : 00CA 0300 -1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE - : 00EA 0300 -1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE - : 00CA 0309 -1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE - : 00EA 0309 -1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE - : 00CA 0303 -1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE - : 00EA 0303 -1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW - : 1EB8 0302 -1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW - : 1EB9 0302 -1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE - : 0049 0309 -1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE - : 0069 0309 -1ECA LATIN CAPITAL LETTER I WITH DOT BELOW - : 0049 0323 -1ECB LATIN SMALL LETTER I WITH DOT BELOW - : 0069 0323 -1ECC LATIN CAPITAL LETTER O WITH DOT BELOW - : 004F 0323 -1ECD LATIN SMALL LETTER O WITH DOT BELOW - : 006F 0323 -1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE - : 004F 0309 -1ECF LATIN SMALL LETTER O WITH HOOK ABOVE - : 006F 0309 -1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE - : 00D4 0301 -1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE - : 00F4 0301 -1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE - : 00D4 0300 -1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE - : 00F4 0300 -1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE - : 00D4 0309 -1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE - : 00F4 0309 -1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE - : 00D4 0303 -1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE - : 00F4 0303 -1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW - : 1ECC 0302 -1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW - : 1ECD 0302 -1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE - : 01A0 0301 -1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE - : 01A1 0301 -1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE - : 01A0 0300 -1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE - : 01A1 0300 -1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE - : 01A0 0309 -1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE - : 01A1 0309 -1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE - : 01A0 0303 -1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE - : 01A1 0303 -1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW - : 01A0 0323 -1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW - : 01A1 0323 -1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW - : 0055 0323 -1EE5 LATIN SMALL LETTER U WITH DOT BELOW - : 0075 0323 -1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE - : 0055 0309 -1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE - : 0075 0309 -1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE - : 01AF 0301 -1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE - : 01B0 0301 -1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE - : 01AF 0300 -1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE - : 01B0 0300 -1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE - : 01AF 0309 -1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE - : 01B0 0309 -1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE - : 01AF 0303 -1EEF LATIN SMALL LETTER U WITH HORN AND TILDE - : 01B0 0303 -1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW - : 01AF 0323 -1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW - : 01B0 0323 -1EF2 LATIN CAPITAL LETTER Y WITH GRAVE - : 0059 0300 -1EF3 LATIN SMALL LETTER Y WITH GRAVE - * Welsh - : 0079 0300 -1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW - : 0059 0323 -1EF5 LATIN SMALL LETTER Y WITH DOT BELOW - : 0079 0323 -1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE - : 0059 0309 -1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE - : 0079 0309 -1EF8 LATIN CAPITAL LETTER Y WITH TILDE - : 0059 0303 -1EF9 LATIN SMALL LETTER Y WITH TILDE - : 0079 0303 -@@ 1F00 Greek Extended 1FFF -@ Precomposed polytonic Greek -1F00 GREEK SMALL LETTER ALPHA WITH PSILI - : 03B1 0313 -1F01 GREEK SMALL LETTER ALPHA WITH DASIA - : 03B1 0314 -1F02 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA - : 1F00 0300 -1F03 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA - : 1F01 0300 -1F04 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA - : 1F00 0301 -1F05 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA - : 1F01 0301 -1F06 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI - : 1F00 0342 -1F07 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI - : 1F01 0342 -1F08 GREEK CAPITAL LETTER ALPHA WITH PSILI - : 0391 0313 -1F09 GREEK CAPITAL LETTER ALPHA WITH DASIA - : 0391 0314 -1F0A GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA - : 1F08 0300 -1F0B GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA - : 1F09 0300 -1F0C GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA - : 1F08 0301 -1F0D GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA - : 1F09 0301 -1F0E GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI - : 1F08 0342 -1F0F GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI - : 1F09 0342 -1F10 GREEK SMALL LETTER EPSILON WITH PSILI - : 03B5 0313 -1F11 GREEK SMALL LETTER EPSILON WITH DASIA - : 03B5 0314 -1F12 GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA - : 1F10 0300 -1F13 GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA - : 1F11 0300 -1F14 GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA - : 1F10 0301 -1F15 GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA - : 1F11 0301 -1F18 GREEK CAPITAL LETTER EPSILON WITH PSILI - : 0395 0313 -1F19 GREEK CAPITAL LETTER EPSILON WITH DASIA - : 0395 0314 -1F1A GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA - : 1F18 0300 -1F1B GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA - : 1F19 0300 -1F1C GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA - : 1F18 0301 -1F1D GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA - : 1F19 0301 -1F20 GREEK SMALL LETTER ETA WITH PSILI - : 03B7 0313 -1F21 GREEK SMALL LETTER ETA WITH DASIA - : 03B7 0314 -1F22 GREEK SMALL LETTER ETA WITH PSILI AND VARIA - : 1F20 0300 -1F23 GREEK SMALL LETTER ETA WITH DASIA AND VARIA - : 1F21 0300 -1F24 GREEK SMALL LETTER ETA WITH PSILI AND OXIA - : 1F20 0301 -1F25 GREEK SMALL LETTER ETA WITH DASIA AND OXIA - : 1F21 0301 -1F26 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI - : 1F20 0342 -1F27 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI - : 1F21 0342 -1F28 GREEK CAPITAL LETTER ETA WITH PSILI - : 0397 0313 -1F29 GREEK CAPITAL LETTER ETA WITH DASIA - : 0397 0314 -1F2A GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA - : 1F28 0300 -1F2B GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA - : 1F29 0300 -1F2C GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA - : 1F28 0301 -1F2D GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA - : 1F29 0301 -1F2E GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI - : 1F28 0342 -1F2F GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI - : 1F29 0342 -1F30 GREEK SMALL LETTER IOTA WITH PSILI - : 03B9 0313 -1F31 GREEK SMALL LETTER IOTA WITH DASIA - : 03B9 0314 -1F32 GREEK SMALL LETTER IOTA WITH PSILI AND VARIA - : 1F30 0300 -1F33 GREEK SMALL LETTER IOTA WITH DASIA AND VARIA - : 1F31 0300 -1F34 GREEK SMALL LETTER IOTA WITH PSILI AND OXIA - : 1F30 0301 -1F35 GREEK SMALL LETTER IOTA WITH DASIA AND OXIA - : 1F31 0301 -1F36 GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI - : 1F30 0342 -1F37 GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI - : 1F31 0342 -1F38 GREEK CAPITAL LETTER IOTA WITH PSILI - : 0399 0313 -1F39 GREEK CAPITAL LETTER IOTA WITH DASIA - : 0399 0314 -1F3A GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA - : 1F38 0300 -1F3B GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA - : 1F39 0300 -1F3C GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA - : 1F38 0301 -1F3D GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA - : 1F39 0301 -1F3E GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI - : 1F38 0342 -1F3F GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI - : 1F39 0342 -1F40 GREEK SMALL LETTER OMICRON WITH PSILI - : 03BF 0313 -1F41 GREEK SMALL LETTER OMICRON WITH DASIA - : 03BF 0314 -1F42 GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA - : 1F40 0300 -1F43 GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA - : 1F41 0300 -1F44 GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA - : 1F40 0301 -1F45 GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA - : 1F41 0301 -1F48 GREEK CAPITAL LETTER OMICRON WITH PSILI - : 039F 0313 -1F49 GREEK CAPITAL LETTER OMICRON WITH DASIA - : 039F 0314 -1F4A GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA - : 1F48 0300 -1F4B GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA - : 1F49 0300 -1F4C GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA - : 1F48 0301 -1F4D GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA - : 1F49 0301 -1F50 GREEK SMALL LETTER UPSILON WITH PSILI - : 03C5 0313 -1F51 GREEK SMALL LETTER UPSILON WITH DASIA - : 03C5 0314 -1F52 GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA - : 1F50 0300 -1F53 GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA - : 1F51 0300 -1F54 GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA - : 1F50 0301 -1F55 GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA - : 1F51 0301 -1F56 GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI - : 1F50 0342 -1F57 GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI - : 1F51 0342 -1F59 GREEK CAPITAL LETTER UPSILON WITH DASIA - : 03A5 0314 -1F5B GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA - : 1F59 0300 -1F5D GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA - : 1F59 0301 -1F5F GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI - : 1F59 0342 -1F60 GREEK SMALL LETTER OMEGA WITH PSILI - : 03C9 0313 -1F61 GREEK SMALL LETTER OMEGA WITH DASIA - : 03C9 0314 -1F62 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA - : 1F60 0300 -1F63 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA - : 1F61 0300 -1F64 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA - : 1F60 0301 -1F65 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA - : 1F61 0301 -1F66 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI - : 1F60 0342 -1F67 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI - : 1F61 0342 -1F68 GREEK CAPITAL LETTER OMEGA WITH PSILI - : 03A9 0313 -1F69 GREEK CAPITAL LETTER OMEGA WITH DASIA - : 03A9 0314 -1F6A GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA - : 1F68 0300 -1F6B GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA - : 1F69 0300 -1F6C GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA - : 1F68 0301 -1F6D GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA - : 1F69 0301 -1F6E GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI - : 1F68 0342 -1F6F GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI - : 1F69 0342 -1F70 GREEK SMALL LETTER ALPHA WITH VARIA - : 03B1 0300 -1F71 GREEK SMALL LETTER ALPHA WITH OXIA - : 03AC greek small letter alpha with tonos -1F72 GREEK SMALL LETTER EPSILON WITH VARIA - : 03B5 0300 -1F73 GREEK SMALL LETTER EPSILON WITH OXIA - : 03AD greek small letter epsilon with tonos -1F74 GREEK SMALL LETTER ETA WITH VARIA - : 03B7 0300 -1F75 GREEK SMALL LETTER ETA WITH OXIA - : 03AE greek small letter eta with tonos -1F76 GREEK SMALL LETTER IOTA WITH VARIA - : 03B9 0300 -1F77 GREEK SMALL LETTER IOTA WITH OXIA - : 03AF greek small letter iota with tonos -1F78 GREEK SMALL LETTER OMICRON WITH VARIA - : 03BF 0300 -1F79 GREEK SMALL LETTER OMICRON WITH OXIA - : 03CC greek small letter omicron with tonos -1F7A GREEK SMALL LETTER UPSILON WITH VARIA - : 03C5 0300 -1F7B GREEK SMALL LETTER UPSILON WITH OXIA - : 03CD greek small letter upsilon with tonos -1F7C GREEK SMALL LETTER OMEGA WITH VARIA - : 03C9 0300 -1F7D GREEK SMALL LETTER OMEGA WITH OXIA - : 03CE greek small letter omega with tonos -1F80 GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI - : 1F00 0345 -1F81 GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI - : 1F01 0345 -1F82 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI - : 1F02 0345 -1F83 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI - : 1F03 0345 -1F84 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI - : 1F04 0345 -1F85 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI - : 1F05 0345 -1F86 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI - : 1F06 0345 -1F87 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI - : 1F07 0345 -1F88 GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI - : 1F08 0345 -1F89 GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI - : 1F09 0345 -1F8A GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI - : 1F0A 0345 -1F8B GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI - : 1F0B 0345 -1F8C GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI - : 1F0C 0345 -1F8D GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI - : 1F0D 0345 -1F8E GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI - : 1F0E 0345 -1F8F GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI - : 1F0F 0345 -1F90 GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI - : 1F20 0345 -1F91 GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI - : 1F21 0345 -1F92 GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI - : 1F22 0345 -1F93 GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI - : 1F23 0345 -1F94 GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI - : 1F24 0345 -1F95 GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI - : 1F25 0345 -1F96 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI - : 1F26 0345 -1F97 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI - : 1F27 0345 -1F98 GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI - : 1F28 0345 -1F99 GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI - : 1F29 0345 -1F9A GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI - : 1F2A 0345 -1F9B GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI - : 1F2B 0345 -1F9C GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI - : 1F2C 0345 -1F9D GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI - : 1F2D 0345 -1F9E GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI - : 1F2E 0345 -1F9F GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI - : 1F2F 0345 -1FA0 GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI - : 1F60 0345 -1FA1 GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI - : 1F61 0345 -1FA2 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI - : 1F62 0345 -1FA3 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI - : 1F63 0345 -1FA4 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI - : 1F64 0345 -1FA5 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI - : 1F65 0345 -1FA6 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI - : 1F66 0345 -1FA7 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI - : 1F67 0345 -1FA8 GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI - : 1F68 0345 -1FA9 GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI - : 1F69 0345 -1FAA GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI - : 1F6A 0345 -1FAB GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI - : 1F6B 0345 -1FAC GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI - : 1F6C 0345 -1FAD GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI - : 1F6D 0345 -1FAE GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI - : 1F6E 0345 -1FAF GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI - : 1F6F 0345 -1FB0 GREEK SMALL LETTER ALPHA WITH VRACHY - : 03B1 0306 -1FB1 GREEK SMALL LETTER ALPHA WITH MACRON - : 03B1 0304 -1FB2 GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI - : 1F70 0345 -1FB3 GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI - : 03B1 0345 -1FB4 GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI - : 03AC 0345 -1FB6 GREEK SMALL LETTER ALPHA WITH PERISPOMENI - : 03B1 0342 -1FB7 GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI - : 1FB6 0345 -1FB8 GREEK CAPITAL LETTER ALPHA WITH VRACHY - : 0391 0306 -1FB9 GREEK CAPITAL LETTER ALPHA WITH MACRON - : 0391 0304 -1FBA GREEK CAPITAL LETTER ALPHA WITH VARIA - : 0391 0300 -1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA - : 0386 greek capital letter alpha with tonos -1FBC GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI - : 0391 0345 -1FBD GREEK KORONIS - # 0020 0313 -1FBE GREEK PROSGEGRAMMENI - : 03B9 greek small letter iota -1FBF GREEK PSILI - # 0020 0313 -1FC0 GREEK PERISPOMENI - # 0020 0342 -1FC1 GREEK DIALYTIKA AND PERISPOMENI - : 00A8 0342 -1FC2 GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI - : 1F74 0345 -1FC3 GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI - : 03B7 0345 -1FC4 GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI - : 03AE 0345 -1FC6 GREEK SMALL LETTER ETA WITH PERISPOMENI - : 03B7 0342 -1FC7 GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI - : 1FC6 0345 -1FC8 GREEK CAPITAL LETTER EPSILON WITH VARIA - : 0395 0300 -1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA - : 0388 greek capital letter epsilon with tonos -1FCA GREEK CAPITAL LETTER ETA WITH VARIA - : 0397 0300 -1FCB GREEK CAPITAL LETTER ETA WITH OXIA - : 0389 greek capital letter eta with tonos -1FCC GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI - : 0397 0345 -1FCD GREEK PSILI AND VARIA - : 1FBF 0300 -1FCE GREEK PSILI AND OXIA - : 1FBF 0301 -1FCF GREEK PSILI AND PERISPOMENI - : 1FBF 0342 -1FD0 GREEK SMALL LETTER IOTA WITH VRACHY - : 03B9 0306 -1FD1 GREEK SMALL LETTER IOTA WITH MACRON - : 03B9 0304 -1FD2 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA - : 03CA 0300 -1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA - : 0390 greek small letter iota with dialytika and tonos -1FD6 GREEK SMALL LETTER IOTA WITH PERISPOMENI - : 03B9 0342 -1FD7 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI - : 03CA 0342 -1FD8 GREEK CAPITAL LETTER IOTA WITH VRACHY - : 0399 0306 -1FD9 GREEK CAPITAL LETTER IOTA WITH MACRON - : 0399 0304 -1FDA GREEK CAPITAL LETTER IOTA WITH VARIA - : 0399 0300 -1FDB GREEK CAPITAL LETTER IOTA WITH OXIA - : 038A greek capital letter iota with tonos -1FDD GREEK DASIA AND VARIA - : 1FFE 0300 -1FDE GREEK DASIA AND OXIA - : 1FFE 0301 -1FDF GREEK DASIA AND PERISPOMENI - : 1FFE 0342 -1FE0 GREEK SMALL LETTER UPSILON WITH VRACHY - : 03C5 0306 -1FE1 GREEK SMALL LETTER UPSILON WITH MACRON - : 03C5 0304 -1FE2 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA - : 03CB 0300 -1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA - : 03B0 greek small letter upsilon with dialytika and tonos -1FE4 GREEK SMALL LETTER RHO WITH PSILI - : 03C1 0313 -1FE5 GREEK SMALL LETTER RHO WITH DASIA - : 03C1 0314 -1FE6 GREEK SMALL LETTER UPSILON WITH PERISPOMENI - : 03C5 0342 -1FE7 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI - : 03CB 0342 -1FE8 GREEK CAPITAL LETTER UPSILON WITH VRACHY - : 03A5 0306 -1FE9 GREEK CAPITAL LETTER UPSILON WITH MACRON - : 03A5 0304 -1FEA GREEK CAPITAL LETTER UPSILON WITH VARIA - : 03A5 0300 -1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA - : 038E greek capital letter upsilon with tonos -1FEC GREEK CAPITAL LETTER RHO WITH DASIA - : 03A1 0314 -1FED GREEK DIALYTIKA AND VARIA - : 00A8 0300 -1FEE GREEK DIALYTIKA AND OXIA - : 0385 greek dialytika tonos -1FEF GREEK VARIA - : 0060 grave accent -1FF2 GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI - : 1F7C 0345 -1FF3 GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI - : 03C9 0345 -1FF4 GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI - : 03CE 0345 -1FF6 GREEK SMALL LETTER OMEGA WITH PERISPOMENI - : 03C9 0342 -1FF7 GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI - : 1FF6 0345 -1FF8 GREEK CAPITAL LETTER OMICRON WITH VARIA - : 039F 0300 -1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA - : 038C greek capital letter omicron with tonos -1FFA GREEK CAPITAL LETTER OMEGA WITH VARIA - : 03A9 0300 -1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA - : 038F greek capital letter omega with tonos -1FFC GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI - : 03A9 0345 -1FFD GREEK OXIA - : 00B4 acute accent -1FFE GREEK DASIA - # 0020 0314 -@@ 2000 General Punctuation 206F -@+ For additional general punctuation characters see also Basic Latin, Latin-1, Supplemental Punctuation and CJK Symbols and Punctuation. -@ Spaces -2000 EN QUAD - : 2002 en space -2001 EM QUAD - = mutton quad - : 2003 em space -2002 EN SPACE - = nut - * half an em - # 0020 space -2003 EM SPACE - = mutton - * nominally, a space equal to the type size in points - * may scale by the condensation factor of a font - # 0020 space -2004 THREE-PER-EM SPACE - = thick space - # 0020 space -2005 FOUR-PER-EM SPACE - = mid space - # 0020 space -2006 SIX-PER-EM SPACE - * in computer typography sometimes equated to thin space - # 0020 space -2007 FIGURE SPACE - * space equal to tabular width of a font - * this is equivalent to the digit width of fonts with fixed-width digits - # <noBreak> 0020 -2008 PUNCTUATION SPACE - * space equal to narrow punctuation of a font - # 0020 space -2009 THIN SPACE - * a fifth of an em (or sometimes a sixth) - # 0020 space -200A HAIR SPACE - * thinner than a thin space - * in traditional typography, the thinnest space available - # 0020 space -200B ZERO WIDTH SPACE - = ZWSP - * this character is intended for line break control; it has no width, but its presence between two characters does not prevent increased letter spacing in justification -@ Formatting characters -200C ZERO WIDTH NON-JOINER - = ZWNJ -200D ZERO WIDTH JOINER - = ZWJ -200E LEFT-TO-RIGHT MARK - = LRM -200F RIGHT-TO-LEFT MARK - = RLM -@ Dashes -2010 HYPHEN - x (hyphen-minus - 002D) - x (soft hyphen - 00AD) -2011 NON-BREAKING HYPHEN - x (hyphen-minus - 002D) - x (soft hyphen - 00AD) - # <noBreak> 2010 -2012 FIGURE DASH -2013 EN DASH -2014 EM DASH - * may be used in pairs to offset parenthetical text - x (katakana-hiragana prolonged sound mark - 30FC) -2015 HORIZONTAL BAR - = QUOTATION DASH - * long dash introducing quoted text -@ General punctuation -2016 DOUBLE VERTICAL LINE - * used in pairs to indicate norm of a matrix - x (combining double vertical stroke overlay - 20E6) - x (parallel to - 2225) -2017 DOUBLE LOW LINE - * this is a spacing character - x (low line - 005F) - x (combining double low line - 0333) - # 0020 0333 -2018 LEFT SINGLE QUOTATION MARK - = SINGLE TURNED COMMA QUOTATION MARK - * this is the preferred glyph (as opposed to 201B) - x (apostrophe - 0027) - x (modifier letter turned comma - 02BB) - x (heavy single turned comma quotation mark ornament - 275B) -2019 RIGHT SINGLE QUOTATION MARK - = SINGLE COMMA QUOTATION MARK - * this is the preferred character to use for apostrophe - x (apostrophe - 0027) - x (modifier letter apostrophe - 02BC) - x (heavy single comma quotation mark ornament - 275C) -201A SINGLE LOW-9 QUOTATION MARK - = LOW SINGLE COMMA QUOTATION MARK - * used as opening single quotation mark in some languages -201B SINGLE HIGH-REVERSED-9 QUOTATION MARK - = SINGLE REVERSED COMMA QUOTATION MARK - * glyph variant of 2018 - x (modifier letter reversed comma - 02BD) -201C LEFT DOUBLE QUOTATION MARK - = DOUBLE TURNED COMMA QUOTATION MARK - * this is the preferred glyph (as opposed to 201F) - x (quotation mark - 0022) - x (heavy double turned comma quotation mark ornament - 275D) - x (reversed double prime quotation mark - 301D) -201D RIGHT DOUBLE QUOTATION MARK - = DOUBLE COMMA QUOTATION MARK - x (quotation mark - 0022) - x (double prime - 2033) - x (heavy double comma quotation mark ornament - 275E) - x (double prime quotation mark - 301E) -201E DOUBLE LOW-9 QUOTATION MARK - = LOW DOUBLE COMMA QUOTATION MARK - * used as opening double quotation mark in some languages - x (low double prime quotation mark - 301F) -201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK - = DOUBLE REVERSED COMMA QUOTATION MARK - * glyph variant of 201C -2020 DAGGER - = obelisk, obelus, long cross -2021 DOUBLE DAGGER - = diesis, double obelisk -2022 BULLET - = black small circle - x (middle dot - 00B7) - x (one dot leader - 2024) - x (bullet operator - 2219) - x (inverse bullet - 25D8) - x (white bullet - 25E6) -2023 TRIANGULAR BULLET - x (end of proof - 220E) - x (black right-pointing small triangle - 25B8) -2024 ONE DOT LEADER - * also used as an Armenian semicolon (mijaket) - x (middle dot - 00B7) - x (bullet - 2022) - x (bullet operator - 2219) - # 002E full stop -2025 TWO DOT LEADER - # 002E 002E -2026 HORIZONTAL ELLIPSIS - = three dot leader - x (vertical ellipsis - 22EE) - x (presentation form for vertical horizontal ellipsis - FE19) - # 002E 002E 002E -2027 HYPHENATION POINT -@ Formatting characters -2028 LINE SEPARATOR - * may be used to represent this semantic unambiguously -2029 PARAGRAPH SEPARATOR - * may be used to represent this semantic unambiguously -202A LEFT-TO-RIGHT EMBEDDING - = LRE -202B RIGHT-TO-LEFT EMBEDDING - = RLE -202C POP DIRECTIONAL FORMATTING - = PDF -202D LEFT-TO-RIGHT OVERRIDE - = LRO -202E RIGHT-TO-LEFT OVERRIDE - = RLO -202F NARROW NO-BREAK SPACE - = NNBSP - x (no-break space - 00A0) - # <noBreak> 0020 -@ General punctuation -2030 PER MILLE SIGN - = permille, per thousand - * used, for example, in measures of blood alcohol content, salinity, etc. - x (percent sign - 0025) -2031 PER TEN THOUSAND SIGN - = permyriad - * percent of a percent, rarely used - x (percent sign - 0025) -2032 PRIME - = minutes, feet - x (apostrophe - 0027) - x (acute accent - 00B4) - x (modifier letter prime - 02B9) -2033 DOUBLE PRIME - = seconds, inches - x (quotation mark - 0022) - x (modifier letter double prime - 02BA) - x (right double quotation mark - 201D) - x (ditto mark - 3003) - x (double prime quotation mark - 301E) - # 2032 2032 -2034 TRIPLE PRIME - = lines (old measure, 1/12 of an inch) - # 2032 2032 2032 -2035 REVERSED PRIME - x (grave accent - 0060) -2036 REVERSED DOUBLE PRIME - x (reversed double prime quotation mark - 301D) - # 2035 2035 -2037 REVERSED TRIPLE PRIME - # 2035 2035 2035 -2038 CARET - x (up arrowhead - 2303) -2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK - = LEFT POINTING SINGLE GUILLEMET - * usually opening, sometimes closing - x (less-than sign - 003C) - x (left-pointing angle bracket - 2329) - x (left angle bracket - 3008) -203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - = RIGHT POINTING SINGLE GUILLEMET - * usually closing, sometimes opening - x (greater-than sign - 003E) - x (right-pointing angle bracket - 232A) - x (right angle bracket - 3009) -203B REFERENCE MARK - = Japanese kome - = Urdu paragraph separator - x (tibetan ku ru kha bzhi mig can - 0FBF) -@ Double punctuation for vertical text -203C DOUBLE EXCLAMATION MARK - x (exclamation mark - 0021) - # 0021 0021 -@ General punctuation -203D INTERROBANG - x (exclamation mark - 0021) - x (question mark - 003F) -203E OVERLINE - = SPACING OVERSCORE - # 0020 0305 -203F UNDERTIE (Enotikon) - = Greek enotikon - x (smile - 2323) -2040 CHARACTER TIE - = z notation sequence concatenation - x (frown - 2322) -2041 CARET INSERTION POINT - * proofreader's mark: insert here - x (right semidirect product - 22CC) -2042 ASTERISM -2043 HYPHEN BULLET -2044 FRACTION SLASH - = solidus (in typography) - * for composing arbitrary fractions - x (solidus - 002F) - x (division slash - 2215) -2045 LEFT SQUARE BRACKET WITH QUILL -2046 RIGHT SQUARE BRACKET WITH QUILL -@ Double punctuation for vertical text -2047 DOUBLE QUESTION MARK - # 003F 003F -2048 QUESTION EXCLAMATION MARK - # 003F 0021 -2049 EXCLAMATION QUESTION MARK - # 0021 003F -@ General punctuation -204A TIRONIAN SIGN ET - * Irish Gaelic, ... -204B REVERSED PILCROW SIGN - x (pilcrow sign - 00B6) -204C BLACK LEFTWARDS BULLET -204D BLACK RIGHTWARDS BULLET -204E LOW ASTERISK - x (asterisk - 002A) -204F REVERSED SEMICOLON - x (semicolon - 003B) -2050 CLOSE UP - * editing mark -2051 TWO ASTERISKS ALIGNED VERTICALLY -2052 COMMERCIAL MINUS SIGN - = abzüglich (German), med avdrag av (Swedish), piska (Swedish, "whip") - * a common glyph variant and fallback representation looks like ./. - * may also be used as a dingbat to indicate correctness - * used in Finno-Ugric Phonetic Alphabet to indicate a related borrowed form with different sound - x (percent sign - 0025) - x (arabic percent sign - 066A) -2053 SWUNG DASH - x (tilde - 007E) -2054 INVERTED UNDERTIE -2055 FLOWER PUNCTUATION MARK - = phul, puspika - * used as a punctuation mark with Syloti Nagri, Bengali and other Indic scripts - x (heavy eight teardrop-spoked propeller asterisk - 274B) -@ Archaic punctuation -2056 THREE DOT PUNCTUATION -@ General punctuation -2057 QUADRUPLE PRIME - # 2032 2032 2032 2032 -@ Archaic punctuation -2058 FOUR DOT PUNCTUATION -2059 FIVE DOT PUNCTUATION - = Greek pentonkion -205A TWO DOT PUNCTUATION - * historically used to indicate the end of a sentence or change of speaker - * extends from baseline to cap height - x (presentation form for vertical two dot leader - FE30) - x (greek acrophonic epidaurean two - 1015B) -205B FOUR DOT MARK - * used by scribes in the margin as highlighter mark - * this is centered on the line, but extends beyond top and bottom of the line -205C DOTTED CROSS - * used by scribes in the margin as highlighter mark -205D TRICOLON - = Epidaurean acrophonic symbol three - x (vertical ellipsis - 22EE) - x (triple colon operator - 2AF6) - x (presentation form for vertical horizontal ellipsis - FE19) -205E VERTICAL FOUR DOTS - * used in dictionaries to indicate legal but undesirable word break - * glyph extends the whole height of the line -@ Space -205F MEDIUM MATHEMATICAL SPACE - = MMSP - * four-eighteenths of an em - # 0020 space -@ Formatting character -2060 WORD JOINER - = WJ - * a zero width non-breaking space (only) - * intended for disambiguation of functions for byte order mark - x (zero width no-break space - FEFF) -@ Invisible operators -2061 FUNCTION APPLICATION - * contiguity operator indicating application of a function -2062 INVISIBLE TIMES - * contiguity operator indicating multiplication -2063 INVISIBLE SEPARATOR - = invisible comma - * contiguity operator indicating that adjacent mathematical symbols form a list, e.g. when no visible comma is used between multiple indices -@ Deprecated -206A INHIBIT SYMMETRIC SWAPPING -206B ACTIVATE SYMMETRIC SWAPPING -206C INHIBIT ARABIC FORM SHAPING -206D ACTIVATE ARABIC FORM SHAPING -206E NATIONAL DIGIT SHAPES -206F NOMINAL DIGIT SHAPES -@@ 2070 Superscripts and Subscripts 209F -@ Superscripts -2070 SUPERSCRIPT ZERO - # <super> 0030 -2071 SUPERSCRIPT LATIN SMALL LETTER I - # <super> 0069 -2072 <reserved> - x (superscript two - 00B2) -2073 <reserved> - x (superscript three - 00B3) -2074 SUPERSCRIPT FOUR - # <super> 0034 -2075 SUPERSCRIPT FIVE - # <super> 0035 -2076 SUPERSCRIPT SIX - # <super> 0036 -2077 SUPERSCRIPT SEVEN - # <super> 0037 -2078 SUPERSCRIPT EIGHT - # <super> 0038 -2079 SUPERSCRIPT NINE - # <super> 0039 -207A SUPERSCRIPT PLUS SIGN - # <super> 002B -207B SUPERSCRIPT MINUS - # <super> 2212 -207C SUPERSCRIPT EQUALS SIGN - # <super> 003D -207D SUPERSCRIPT LEFT PARENTHESIS - # <super> 0028 -207E SUPERSCRIPT RIGHT PARENTHESIS - # <super> 0029 -207F SUPERSCRIPT LATIN SMALL LETTER N - # <super> 006E -@ Subscripts -2080 SUBSCRIPT ZERO - # <sub> 0030 -2081 SUBSCRIPT ONE - # <sub> 0031 -2082 SUBSCRIPT TWO - # <sub> 0032 -2083 SUBSCRIPT THREE - # <sub> 0033 -2084 SUBSCRIPT FOUR - # <sub> 0034 -2085 SUBSCRIPT FIVE - # <sub> 0035 -2086 SUBSCRIPT SIX - # <sub> 0036 -2087 SUBSCRIPT SEVEN - # <sub> 0037 -2088 SUBSCRIPT EIGHT - # <sub> 0038 -2089 SUBSCRIPT NINE - # <sub> 0039 -208A SUBSCRIPT PLUS SIGN - # <sub> 002B -208B SUBSCRIPT MINUS - # <sub> 2212 -208C SUBSCRIPT EQUALS SIGN - # <sub> 003D -208D SUBSCRIPT LEFT PARENTHESIS - # <sub> 0028 -208E SUBSCRIPT RIGHT PARENTHESIS - # <sub> 0029 -2090 LATIN SUBSCRIPT SMALL LETTER A - # <sub> 0061 -2091 LATIN SUBSCRIPT SMALL LETTER E - # <sub> 0065 -2092 LATIN SUBSCRIPT SMALL LETTER O - # <sub> 006F -2093 LATIN SUBSCRIPT SMALL LETTER X - # <sub> 0078 -2094 LATIN SUBSCRIPT SMALL LETTER SCHWA - # <sub> 0259 -@@ 20A0 Currency Symbols 20CF -@ Currency symbols -@+ A number of currency symbols are found in other blocks. Fullwidth versions of some currency symbols are found in the Halfwidth and Fullwidth Forms block. - x (dollar sign - 0024) - x (cent sign - 00A2) - x (pound sign - 00A3) - x (currency sign - 00A4) - x (yen sign - 00A5) - x (latin small letter f with hook - 0192) - x (afghani sign - 060B) - x (bengali rupee mark - 09F2) - x (bengali rupee sign - 09F3) - x (gujarati rupee sign - 0AF1) - x (tamil rupee sign - 0BF9) - x (thai currency symbol baht - 0E3F) - x (khmer currency symbol riel - 17DB) - x (script capital m - 2133) - x (rial sign - FDFC) -20A0 EURO-CURRENCY SIGN - * intended for ECU, but not widely used - * historical character; this is NOT the euro! - x (euro sign - 20AC) -20A1 COLON SIGN - * Costa Rica, El Salvador -20A2 CRUZEIRO SIGN - * Brazil -20A3 FRENCH FRANC SIGN - * France -20A4 LIRA SIGN - * intended for lira, but not widely used - * preferred character for lira is 00A3 - x (pound sign - 00A3) -20A5 MILL SIGN - * USA (1/10 cent) -20A6 NAIRA SIGN - * Nigeria -20A7 PESETA SIGN - * Spain - x (peso sign - 20B1) -20A8 RUPEE SIGN - * India - # 0052 0073 -20A9 WON SIGN - * Korea -20AA NEW SHEQEL SIGN - * Israel -20AB DONG SIGN - * Vietnam -20AC EURO SIGN - * currency sign for the European Monetary Union - * euro, not ecu - x (euro-currency sign - 20A0) -20AD KIP SIGN - * Laos -20AE TUGRIK SIGN - * Mongolia - * also transliterated as tugrug, tugric, tugrog, togrog, tögrög -20AF DRACHMA SIGN - * Greece -20B0 GERMAN PENNY SIGN -20B1 PESO SIGN - * Philippines - * the Mexican peso is indicated with the dollar sign - x (peseta sign - 20A7) -20B2 GUARANI SIGN - * Paraguay - * Often represented by G. or Gs. -20B3 AUSTRAL SIGN - * former Argentinian currency -20B4 HRYVNIA SIGN - * Ukraine -20B5 CEDI SIGN - * Ghana - * glyph may look like '023B' or like C with a short vertical stroke through the upper arm - x (cent sign - 00A2) - x (latin capital letter c with stroke - 023B) -@@ 20D0 Combining Diacritical Marks for Symbols 20FF -@ Combining diacritical marks for symbols -20D0 COMBINING LEFT HARPOON ABOVE -20D1 COMBINING RIGHT HARPOON ABOVE - * vector -20D2 COMBINING LONG VERTICAL LINE OVERLAY - * negation -20D3 COMBINING SHORT VERTICAL LINE OVERLAY - * occasional variant for negation -20D4 COMBINING ANTICLOCKWISE ARROW ABOVE -20D5 COMBINING CLOCKWISE ARROW ABOVE - * rotation -20D6 COMBINING LEFT ARROW ABOVE -20D7 COMBINING RIGHT ARROW ABOVE - * vector -20D8 COMBINING RING OVERLAY -20D9 COMBINING CLOCKWISE RING OVERLAY -20DA COMBINING ANTICLOCKWISE RING OVERLAY -20DB COMBINING THREE DOTS ABOVE - = third derivative -20DC COMBINING FOUR DOTS ABOVE - = fourth derivative -@ Enclosing diacritics -20DD COMBINING ENCLOSING CIRCLE - = JIS composition circle - x (white circle - 25CB) - x (large circle - 25EF) - x (ideographic number zero - 3007) -20DE COMBINING ENCLOSING SQUARE - x (white square - 25A1) -20DF COMBINING ENCLOSING DIAMOND - x (white diamond - 25C7) -20E0 COMBINING ENCLOSING CIRCLE BACKSLASH - * prohibition -@ Additional diacritical mark for symbols -20E1 COMBINING LEFT RIGHT ARROW ABOVE - * tensor -@ Additional enclosing diacritics -20E2 COMBINING ENCLOSING SCREEN - x (clear screen symbol - 239A) -20E3 COMBINING ENCLOSING KEYCAP -20E4 COMBINING ENCLOSING UPWARD POINTING TRIANGLE - x (white up-pointing triangle - 25B3) -@ Additional diacritical marks for symbols -20E5 COMBINING REVERSE SOLIDUS OVERLAY - x (reverse solidus - 005C) -20E6 COMBINING DOUBLE VERTICAL STROKE OVERLAY - = z notation finite function diacritic - x (double vertical line - 2016) -20E7 COMBINING ANNUITY SYMBOL - = actuarial bend - x (right ceiling - 2309) -20E8 COMBINING TRIPLE UNDERDOT -20E9 COMBINING WIDE BRIDGE ABOVE - = contraction operator - * extends the full width of the base character - x (combining bridge above - 0346) -20EA COMBINING LEFTWARDS ARROW OVERLAY - x (leftwards arrow - 2190) -20EB COMBINING LONG DOUBLE SOLIDUS OVERLAY - = long double slash overlay -@@ 2100 Letterlike Symbols 214F -@ Letterlike symbols -@+ Some of the letterlike symbols are intended to complete the set of mathematical alphanumeric symbols starting at U+1D400. -2100 ACCOUNT OF - # 0061 002F 0063 -2101 ADDRESSED TO THE SUBJECT - # 0061 002F 0073 -2102 DOUBLE-STRUCK CAPITAL C - = the set of complex numbers - # <font> 0043 latin capital letter c -2103 DEGREE CELSIUS - = degrees Centigrade - # 00B0 0043 -2104 CENTRE LINE SYMBOL - = clone -2105 CARE OF - # 0063 002F 006F -2106 CADA UNA - # 0063 002F 0075 -2107 EULER CONSTANT - x (latin capital letter e - 0045) - # 0190 latin capital letter open e -2108 SCRUPLE -2109 DEGREE FAHRENHEIT - # 00B0 0046 -210A SCRIPT SMALL G - = real number symbol - # <font> 0067 latin small letter g -210B SCRIPT CAPITAL H - = Hamiltonian operator - # <font> 0048 latin capital letter h -210C BLACK-LETTER CAPITAL H - = Hilbert space - # <font> 0048 latin capital letter h -210D DOUBLE-STRUCK CAPITAL H - # <font> 0048 latin capital letter h -210E PLANCK CONSTANT - # <font> 0068 latin small letter h -210F PLANCK CONSTANT OVER TWO PI - x (cyrillic small letter tshe - 045B) - # <font> 0127 latin small letter h with stroke -2110 SCRIPT CAPITAL I - # <font> 0049 latin capital letter i -2111 BLACK-LETTER CAPITAL I - = imaginary part - # <font> 0049 latin capital letter i -2112 SCRIPT CAPITAL L - = Laplace transform - # <font> 004C latin capital letter l -2113 SCRIPT SMALL L - = mathematical symbol 'ell' - = liter (traditional symbol) - * despite its character name, this symbol is derived from a special italicized version of the small letter l - * the SI recommended symbol for liter is 006C - x (mathematical script small l - 1D4C1) - # <font> 006C latin small letter l -2114 L B BAR SYMBOL - = pounds -2115 DOUBLE-STRUCK CAPITAL N - = natural number - # <font> 004E latin capital letter n -2116 NUMERO SIGN - # 004E 006F -2117 SOUND RECORDING COPYRIGHT - = published - = phonorecord sign - x (copyright sign - 00A9) -2118 SCRIPT CAPITAL P - = Weierstrass elliptic function - * actually this has the form of a lowercase calligraphic p, despite its name -2119 DOUBLE-STRUCK CAPITAL P - # <font> 0050 latin capital letter p -211A DOUBLE-STRUCK CAPITAL Q - = the set of rational numbers - # <font> 0051 latin capital letter q -211B SCRIPT CAPITAL R - = Riemann Integral - # <font> 0052 latin capital letter r -211C BLACK-LETTER CAPITAL R - = real part - # <font> 0052 latin capital letter r -211D DOUBLE-STRUCK CAPITAL R - = the set of real numbers - # <font> 0052 latin capital letter r -211E PRESCRIPTION TAKE - = recipe - = cross ratio -211F RESPONSE -2120 SERVICE MARK - # <super> 0053 004D -2121 TELEPHONE SIGN - * typical forms for this symbol may use lower case, small caps or superscripted letter shapes - # 0054 0045 004C -2122 TRADE MARK SIGN - # <super> 0054 004D -2123 VERSICLE -2124 DOUBLE-STRUCK CAPITAL Z - = the set of integers - # <font> 005A latin capital letter z -2125 OUNCE SIGN - x (latin small letter yogh - 021D) -2126 OHM SIGN - * SI unit of resistance, named after G. S. Ohm, German physicist - * preferred representation is 03A9 - : 03A9 greek capital letter omega -2127 INVERTED OHM SIGN - = MHO - * archaic unit of conductance (= the SI unit siemens) - * typographically a turned greek capital letter omega - x (latin capital letter upsilon - 01B1) - x (greek capital letter omega - 03A9) -2128 BLACK-LETTER CAPITAL Z - # <font> 005A latin capital letter z -2129 TURNED GREEK SMALL LETTER IOTA - * unique element fulfilling a description (logic) - x (greek small letter iota - 03B9) -212A KELVIN SIGN - : 004B latin capital letter k -212B ANGSTROM SIGN - * non SI length unit (=0.1 nm) named after A. J. Ångström, Swedish physicist - * preferred representation is 00C5 - : 00C5 latin capital letter a with ring above -212C SCRIPT CAPITAL B - = Bernoulli function - # <font> 0042 latin capital letter b -212D BLACK-LETTER CAPITAL C - # <font> 0043 latin capital letter c -212E ESTIMATED SYMBOL - * used in European packaging - x (latin small letter e - 0065) -212F SCRIPT SMALL E - = error - = natural exponent - # <font> 0065 latin small letter e -2130 SCRIPT CAPITAL E - = emf (electromotive force) - # <font> 0045 latin capital letter e -2131 SCRIPT CAPITAL F - = Fourier transform - # <font> 0046 latin capital letter f -2132 TURNED CAPITAL F - x (latin capital letter f - 0046) -2133 SCRIPT CAPITAL M - = M-matrix (physics) - = German Mark (not the current Deutsche Mark) - # <font> 004D latin capital letter m -2134 SCRIPT SMALL O - = order, of inferior order to - # <font> 006F latin small letter o -@ Hebrew letterlike math symbols -@+ These are left-to-right characters. -2135 ALEF SYMBOL - = first transfinite cardinal (countable) - # 05D0 hebrew letter alef -2136 BET SYMBOL - = second transfinite cardinal (the continuum) - # 05D1 hebrew letter bet -2137 GIMEL SYMBOL - = third transfinite cardinal (functions of a real variable) - # 05D2 hebrew letter gimel -2138 DALET SYMBOL - = fourth transfinite cardinal - # 05D3 hebrew letter dalet -@ Additional letterlike symbols -2139 INFORMATION SOURCE - * intended for use with 20DD - # <font> 0069 latin small letter i -213A ROTATED CAPITAL Q - * a binding signature mark -213B FACSIMILE SIGN - * typical forms for this symbol may use lower case, small caps or superscripted letter shapes - x (telephone sign - 2121) - # 0046 0041 0058 -213C DOUBLE-STRUCK SMALL PI - # <font> 03C0 greek small letter pi -213D DOUBLE-STRUCK SMALL GAMMA - # <font> 03B3 greek small letter gamma -213E DOUBLE-STRUCK CAPITAL GAMMA - # <font> 0393 greek capital letter gamma -213F DOUBLE-STRUCK CAPITAL PI - # <font> 03A0 greek capital letter pi -@ Double-struck large operator -2140 DOUBLE-STRUCK N-ARY SUMMATION - # <font> 2211 n-ary summation -@ Additional letterlike symbols -2141 TURNED SANS-SERIF CAPITAL G - = game -2142 TURNED SANS-SERIF CAPITAL L -2143 REVERSED SANS-SERIF CAPITAL L -2144 TURNED SANS-SERIF CAPITAL Y -@ Double-struck italic mathematical symbols -@+ These stylized mathematical symbols are used in some documents to distinguish special mathematical usages from ordinary variables. -2145 DOUBLE-STRUCK ITALIC CAPITAL D - * sometimes used for the differential - # <font> 0044 latin capital letter d -2146 DOUBLE-STRUCK ITALIC SMALL D - * sometimes used for the differential - # <font> 0064 latin small letter d -2147 DOUBLE-STRUCK ITALIC SMALL E - * sometimes used for the natural exponent - # <font> 0065 latin small letter e -2148 DOUBLE-STRUCK ITALIC SMALL I - * sometimes used for the imaginary unit - # <font> 0069 latin small letter i -2149 DOUBLE-STRUCK ITALIC SMALL J - * sometimes used for the imaginary unit - # <font> 006A latin small letter j -@ Additional letterlike symbols -214A PROPERTY LINE -214B TURNED AMPERSAND - * used in linear logic - x (ampersand - 0026) -214C PER SIGN - * abbreviates the word 'per' -@@ 2150 Number Forms 218F -@ Fractions -@+ Other fraction number forms are found in the Latin-1 Supplement block. - x (vulgar fraction one quarter - 00BC) - x (vulgar fraction one half - 00BD) - x (vulgar fraction three quarters - 00BE) -2153 VULGAR FRACTION ONE THIRD - # <fraction> 0031 2044 0033 -2154 VULGAR FRACTION TWO THIRDS - # <fraction> 0032 2044 0033 -2155 VULGAR FRACTION ONE FIFTH - # <fraction> 0031 2044 0035 -2156 VULGAR FRACTION TWO FIFTHS - # <fraction> 0032 2044 0035 -2157 VULGAR FRACTION THREE FIFTHS - # <fraction> 0033 2044 0035 -2158 VULGAR FRACTION FOUR FIFTHS - # <fraction> 0034 2044 0035 -2159 VULGAR FRACTION ONE SIXTH - # <fraction> 0031 2044 0036 -215A VULGAR FRACTION FIVE SIXTHS - # <fraction> 0035 2044 0036 -215B VULGAR FRACTION ONE EIGHTH - # <fraction> 0031 2044 0038 -215C VULGAR FRACTION THREE EIGHTHS - # <fraction> 0033 2044 0038 -215D VULGAR FRACTION FIVE EIGHTHS - # <fraction> 0035 2044 0038 -215E VULGAR FRACTION SEVEN EIGHTHS - # <fraction> 0037 2044 0038 -215F FRACTION NUMERATOR ONE - # <fraction> 0031 2044 -@ Roman numerals -2160 ROMAN NUMERAL ONE - # 0049 latin capital letter i -2161 ROMAN NUMERAL TWO - # 0049 0049 -2162 ROMAN NUMERAL THREE - # 0049 0049 0049 -2163 ROMAN NUMERAL FOUR - # 0049 0056 -2164 ROMAN NUMERAL FIVE - # 0056 latin capital letter v -2165 ROMAN NUMERAL SIX - # 0056 0049 -2166 ROMAN NUMERAL SEVEN - # 0056 0049 0049 -2167 ROMAN NUMERAL EIGHT - # 0056 0049 0049 0049 -2168 ROMAN NUMERAL NINE - # 0049 0058 -2169 ROMAN NUMERAL TEN - # 0058 latin capital letter x -216A ROMAN NUMERAL ELEVEN - # 0058 0049 -216B ROMAN NUMERAL TWELVE - # 0058 0049 0049 -216C ROMAN NUMERAL FIFTY - # 004C latin capital letter l -216D ROMAN NUMERAL ONE HUNDRED - # 0043 latin capital letter c -216E ROMAN NUMERAL FIVE HUNDRED - # 0044 latin capital letter d -216F ROMAN NUMERAL ONE THOUSAND - # 004D latin capital letter m -2170 SMALL ROMAN NUMERAL ONE - # 0069 latin small letter i -2171 SMALL ROMAN NUMERAL TWO - # 0069 0069 -2172 SMALL ROMAN NUMERAL THREE - # 0069 0069 0069 -2173 SMALL ROMAN NUMERAL FOUR - # 0069 0076 -2174 SMALL ROMAN NUMERAL FIVE - # 0076 latin small letter v -2175 SMALL ROMAN NUMERAL SIX - # 0076 0069 -2176 SMALL ROMAN NUMERAL SEVEN - # 0076 0069 0069 -2177 SMALL ROMAN NUMERAL EIGHT - # 0076 0069 0069 0069 -2178 SMALL ROMAN NUMERAL NINE - # 0069 0078 -2179 SMALL ROMAN NUMERAL TEN - # 0078 latin small letter x -217A SMALL ROMAN NUMERAL ELEVEN - # 0078 0069 -217B SMALL ROMAN NUMERAL TWELVE - # 0078 0069 0069 -217C SMALL ROMAN NUMERAL FIFTY - # 006C latin small letter l -217D SMALL ROMAN NUMERAL ONE HUNDRED - # 0063 latin small letter c -217E SMALL ROMAN NUMERAL FIVE HUNDRED - # 0064 latin small letter d -217F SMALL ROMAN NUMERAL ONE THOUSAND - # 006D latin small letter m -2180 ROMAN NUMERAL ONE THOUSAND C D -2181 ROMAN NUMERAL FIVE THOUSAND -2182 ROMAN NUMERAL TEN THOUSAND -2183 ROMAN NUMERAL REVERSED ONE HUNDRED - = apostrophic C - * used in combination with C and I to form large numbers -@@ 2190 Arrows 21FF -@ Arrows -2190 LEFTWARDS ARROW - x (combining leftwards arrow overlay - 20EA) -2191 UPWARDS ARROW - * IPA: egressive airflow -2192 RIGHTWARDS ARROW - = z notation total function -2193 DOWNWARDS ARROW - * IPA: ingressive airflow -2194 LEFT RIGHT ARROW - = z notation relation -2195 UP DOWN ARROW -2196 NORTH WEST ARROW -2197 NORTH EAST ARROW -2198 SOUTH EAST ARROW -2199 SOUTH WEST ARROW -219A LEFTWARDS ARROW WITH STROKE - * negation of 2190 - : 2190 0338 -219B RIGHTWARDS ARROW WITH STROKE - * negation of 2192 - : 2192 0338 -219C LEFTWARDS WAVE ARROW -219D RIGHTWARDS WAVE ARROW -219E LEFTWARDS TWO HEADED ARROW - = fast cursor left -219F UPWARDS TWO HEADED ARROW - = fast cursor up -21A0 RIGHTWARDS TWO HEADED ARROW - = z notation total surjection - = fast cursor right -21A1 DOWNWARDS TWO HEADED ARROW - = form feed - = fast cursor down -21A2 LEFTWARDS ARROW WITH TAIL -21A3 RIGHTWARDS ARROW WITH TAIL - = z notation total injection -21A4 LEFTWARDS ARROW FROM BAR -21A5 UPWARDS ARROW FROM BAR -21A6 RIGHTWARDS ARROW FROM BAR - = z notation maplet -21A7 DOWNWARDS ARROW FROM BAR - = depth symbol -21A8 UP DOWN ARROW WITH BASE -21A9 LEFTWARDS ARROW WITH HOOK -21AA RIGHTWARDS ARROW WITH HOOK -21AB LEFTWARDS ARROW WITH LOOP -21AC RIGHTWARDS ARROW WITH LOOP -21AD LEFT RIGHT WAVE ARROW -21AE LEFT RIGHT ARROW WITH STROKE - * negation of 2194 - : 2194 0338 -21AF DOWNWARDS ZIGZAG ARROW - = electrolysis -21B0 UPWARDS ARROW WITH TIP LEFTWARDS -21B1 UPWARDS ARROW WITH TIP RIGHTWARDS -21B2 DOWNWARDS ARROW WITH TIP LEFTWARDS -21B3 DOWNWARDS ARROW WITH TIP RIGHTWARDS -21B4 RIGHTWARDS ARROW WITH CORNER DOWNWARDS - = line feed -21B5 DOWNWARDS ARROW WITH CORNER LEFTWARDS - * may indicate a carriage return or new line - x (return symbol - 23CE) -21B6 ANTICLOCKWISE TOP SEMICIRCLE ARROW -21B7 CLOCKWISE TOP SEMICIRCLE ARROW -21B8 NORTH WEST ARROW TO LONG BAR - = home -21B9 LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR - = tab with shift tab -21BA ANTICLOCKWISE OPEN CIRCLE ARROW -21BB CLOCKWISE OPEN CIRCLE ARROW -21BC LEFTWARDS HARPOON WITH BARB UPWARDS -21BD LEFTWARDS HARPOON WITH BARB DOWNWARDS -21BE UPWARDS HARPOON WITH BARB RIGHTWARDS -21BF UPWARDS HARPOON WITH BARB LEFTWARDS -21C0 RIGHTWARDS HARPOON WITH BARB UPWARDS -21C1 RIGHTWARDS HARPOON WITH BARB DOWNWARDS -21C2 DOWNWARDS HARPOON WITH BARB RIGHTWARDS -21C3 DOWNWARDS HARPOON WITH BARB LEFTWARDS -21C4 RIGHTWARDS ARROW OVER LEFTWARDS ARROW -21C5 UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW -21C6 LEFTWARDS ARROW OVER RIGHTWARDS ARROW -21C7 LEFTWARDS PAIRED ARROWS -21C8 UPWARDS PAIRED ARROWS -21C9 RIGHTWARDS PAIRED ARROWS -21CA DOWNWARDS PAIRED ARROWS -21CB LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON -21CC RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON -21CD LEFTWARDS DOUBLE ARROW WITH STROKE - * negation of 21D0 - : 21D0 0338 -21CE LEFT RIGHT DOUBLE ARROW WITH STROKE - * negation of 21D4 - : 21D4 0338 -21CF RIGHTWARDS DOUBLE ARROW WITH STROKE - * negation of 21D2 - : 21D2 0338 -21D0 LEFTWARDS DOUBLE ARROW -21D1 UPWARDS DOUBLE ARROW -21D2 RIGHTWARDS DOUBLE ARROW -21D3 DOWNWARDS DOUBLE ARROW -21D4 LEFT RIGHT DOUBLE ARROW -21D5 UP DOWN DOUBLE ARROW -21D6 NORTH WEST DOUBLE ARROW -21D7 NORTH EAST DOUBLE ARROW -21D8 SOUTH EAST DOUBLE ARROW -21D9 SOUTH WEST DOUBLE ARROW -21DA LEFTWARDS TRIPLE ARROW -21DB RIGHTWARDS TRIPLE ARROW -21DC LEFTWARDS SQUIGGLE ARROW -21DD RIGHTWARDS SQUIGGLE ARROW -21DE UPWARDS ARROW WITH DOUBLE STROKE - = page up -21DF DOWNWARDS ARROW WITH DOUBLE STROKE - = page down -21E0 LEFTWARDS DASHED ARROW -21E1 UPWARDS DASHED ARROW -21E2 RIGHTWARDS DASHED ARROW -21E3 DOWNWARDS DASHED ARROW -21E4 LEFTWARDS ARROW TO BAR - = leftward tab -21E5 RIGHTWARDS ARROW TO BAR - = rightward tab -21E6 LEFTWARDS WHITE ARROW -21E7 UPWARDS WHITE ARROW - = shift -21E8 RIGHTWARDS WHITE ARROW -21E9 DOWNWARDS WHITE ARROW -21EA UPWARDS WHITE ARROW FROM BAR - = caps lock -21EB UPWARDS WHITE ARROW ON PEDESTAL - = level 2 lock -21EC UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR - = caps lock -21ED UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR - = numerics lock -21EE UPWARDS WHITE DOUBLE ARROW - = level 3 select -21EF UPWARDS WHITE DOUBLE ARROW ON PEDESTAL - = level 3 lock -21F0 RIGHTWARDS WHITE ARROW FROM WALL - = group lock -21F1 NORTH WEST ARROW TO CORNER - = home -21F2 SOUTH EAST ARROW TO CORNER - = end -21F3 UP DOWN WHITE ARROW - = scrolling -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 - = z notation partial function -21F9 LEFT RIGHT ARROW WITH VERTICAL STROKE - = z notation partial relation -21FA LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE -21FB RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE - = z notation finite function -21FC LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE - = z notation finite relation -21FD LEFTWARDS OPEN-HEADED ARROW -21FE RIGHTWARDS OPEN-HEADED ARROW -21FF LEFT RIGHT OPEN-HEADED ARROW -@@ 2200 Mathematical Operators 22FF -@ Miscellaneous mathematical symbols -2200 FOR ALL - = universal quantifier -2201 COMPLEMENT - x (latin letter stretched c - 0297) -2202 PARTIAL DIFFERENTIAL -2203 THERE EXISTS - = existential quantifier -2204 THERE DOES NOT EXIST - : 2203 0338 -2205 EMPTY SET - = null set - * used in linguistics to indicate a null morpheme or phonological "zero" - x (latin capital letter o with stroke - 00D8) - x (diameter sign - 2300) -2206 INCREMENT - = Laplace operator - = forward difference - x (greek capital letter delta - 0394) - x (white up-pointing triangle - 25B3) -2207 NABLA - = backward difference - = gradient, del - * used for Laplacian operator (written with superscript 2) - x (white down-pointing triangle - 25BD) -@ Set membership -2208 ELEMENT OF -2209 NOT AN ELEMENT OF - : 2208 0338 -220A SMALL ELEMENT OF - * originates in math pi fonts; not the straight epsilon - x (greek lunate epsilon symbol - 03F5) -220B CONTAINS AS MEMBER - = such that -220C DOES NOT CONTAIN AS MEMBER - : 220B 0338 -220D SMALL CONTAINS AS MEMBER - x (greek reversed lunate epsilon symbol - 03F6) -@ Miscellaneous mathematical symbol -220E END OF PROOF - = Q.E.D. - x (triangular bullet - 2023) - x (black vertical rectangle - 25AE) -@ N-ary operators -220F N-ARY PRODUCT - = product sign - x (greek capital letter pi - 03A0) -2210 N-ARY COPRODUCT - = coproduct sign -2211 N-ARY SUMMATION - = summation sign - x (greek capital letter sigma - 03A3) -@ Operators -2212 MINUS SIGN - x (hyphen-minus - 002D) -2213 MINUS-OR-PLUS SIGN - x (plus-minus sign - 00B1) -2214 DOT PLUS -2215 DIVISION SLASH - * generic division operator - x (solidus - 002F) - x (fraction slash - 2044) -2216 SET MINUS - x (reverse solidus - 005C) -2217 ASTERISK OPERATOR - x (asterisk - 002A) -2218 RING OPERATOR - = composite function - = APL jot - x (degree sign - 00B0) - x (white bullet - 25E6) -2219 BULLET OPERATOR - x (middle dot - 00B7) - x (bullet - 2022) - x (one dot leader - 2024) -221A SQUARE ROOT - = radical sign - x (check mark - 2713) -221B CUBE ROOT -221C FOURTH ROOT -221D PROPORTIONAL TO - x (greek small letter alpha - 03B1) -@ Miscellaneous mathematical symbols -221E INFINITY -221F RIGHT ANGLE -2220 ANGLE -2221 MEASURED ANGLE -2222 SPHERICAL ANGLE - = angle arc -@ Operators -2223 DIVIDES - = such that - = APL stile - x (vertical line - 007C) - x (latin letter dental click - 01C0) -2224 DOES NOT DIVIDE - : 2223 0338 -2225 PARALLEL TO - x (latin letter lateral click - 01C1) - x (double vertical line - 2016) -2226 NOT PARALLEL TO - : 2225 0338 -@ Logical and set operators -2227 LOGICAL AND - = wedge, conjunction - x (n-ary logical and - 22C0) - x (up arrowhead - 2303) -2228 LOGICAL OR - = vee, disjunction - x (n-ary logical or - 22C1) - x (down arrowhead - 2304) -2229 INTERSECTION - = cap, hat - x (n-ary intersection - 22C2) -222A UNION - = cup - x (n-ary union - 22C3) -@ Integrals -222B INTEGRAL - x (latin small letter esh - 0283) -222C DOUBLE INTEGRAL - # 222B 222B -222D TRIPLE INTEGRAL - x (quadruple integral operator - 2A0C) - # 222B 222B 222B -222E CONTOUR INTEGRAL - x (integral around a point operator - 2A15) -222F SURFACE INTEGRAL - # 222E 222E -2230 VOLUME INTEGRAL - # 222E 222E 222E -2231 CLOCKWISE INTEGRAL -2232 CLOCKWISE CONTOUR INTEGRAL -2233 ANTICLOCKWISE CONTOUR INTEGRAL - * clockwise or anticlockwise arrows do not reverse during layout mirroring -@ Miscellaneous mathematical symbols -2234 THEREFORE -2235 BECAUSE -@ Relations -2236 RATIO - x (colon - 003A) -2237 PROPORTION -@ Operator -2238 DOT MINUS - = symmetric difference -@ Relation -2239 EXCESS -@ Operator -223A GEOMETRIC PROPORTION -@ Relations -223B HOMOTHETIC - x (tilde operator with rising dots - 2A6B) -223C TILDE OPERATOR - = varies with (proportional to) - = difference between - = similar to - = not - = cycle - = APL tilde - x (tilde - 007E) - x (not sign - 00AC) - x (small tilde - 02DC) -223D REVERSED TILDE (lazy S) - = lazy S - * reversed tilde and lazy S are glyph variants -223E INVERTED LAZY S - = most positive -@ Miscellaneous mathematical symbol -223F SINE WAVE - = alternating current -@ Operator -2240 WREATH PRODUCT -@ Relations -2241 NOT TILDE - : 223C 0338 -2242 MINUS TILDE -2243 ASYMPTOTICALLY EQUAL TO -2244 NOT ASYMPTOTICALLY EQUAL TO - : 2243 0338 -2245 APPROXIMATELY EQUAL TO -2246 APPROXIMATELY BUT NOT ACTUALLY EQUAL TO -2247 NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO - : 2245 0338 -2248 ALMOST EQUAL TO - = asymptotic to -2249 NOT ALMOST EQUAL TO - : 2248 0338 -224A ALMOST EQUAL OR EQUAL TO -224B TRIPLE TILDE -224C ALL EQUAL TO - * reversed tilde and lazy S are glyph variants -224D EQUIVALENT TO -224E GEOMETRICALLY EQUIVALENT TO -224F DIFFERENCE BETWEEN -2250 APPROACHES THE LIMIT -2251 GEOMETRICALLY EQUAL TO -2252 APPROXIMATELY EQUAL TO OR THE IMAGE OF - = nearly equals -2253 IMAGE OF OR APPROXIMATELY EQUAL TO -2254 COLON EQUALS -2255 EQUALS COLON -2256 RING IN EQUAL TO -2257 RING EQUAL TO - = approximately equal to -2258 CORRESPONDS TO -2259 ESTIMATES - = corresponds to -225A EQUIANGULAR TO -225B STAR EQUALS -225C DELTA EQUAL TO - = equiangular - = equal to by definition -225D EQUAL TO BY DEFINITION -225E MEASURED BY -225F QUESTIONED EQUAL TO -2260 NOT EQUAL TO - x (equals sign - 003D) - x (latin letter alveolar click - 01C2) - : 003D 0338 -2261 IDENTICAL TO -2262 NOT IDENTICAL TO - : 2261 0338 -2263 STRICTLY EQUIVALENT TO -2264 LESS-THAN OR EQUAL TO -2265 GREATER-THAN OR EQUAL TO -2266 LESS-THAN OVER EQUAL TO -2267 GREATER-THAN OVER EQUAL TO -2268 LESS-THAN BUT NOT EQUAL TO -2269 GREATER-THAN BUT NOT EQUAL TO -226A MUCH LESS-THAN - x (left-pointing double angle quotation mark - 00AB) -226B MUCH GREATER-THAN - x (right-pointing double angle quotation mark - 00BB) -226C BETWEEN - = plaintiff, quantic -226D NOT EQUIVALENT TO - : 224D 0338 -226E NOT LESS-THAN - : 003C 0338 -226F NOT GREATER-THAN - : 003E 0338 -2270 NEITHER LESS-THAN NOR EQUAL TO - : 2264 0338 -2271 NEITHER GREATER-THAN NOR EQUAL TO - : 2265 0338 -2272 LESS-THAN OR EQUIVALENT TO -2273 GREATER-THAN OR EQUIVALENT TO -2274 NEITHER LESS-THAN NOR EQUIVALENT TO - : 2272 0338 -2275 NEITHER GREATER-THAN NOR EQUIVALENT TO - : 2273 0338 -2276 LESS-THAN OR GREATER-THAN -2277 GREATER-THAN OR LESS-THAN -2278 NEITHER LESS-THAN NOR GREATER-THAN - : 2276 0338 -2279 NEITHER GREATER-THAN NOR LESS-THAN - : 2277 0338 -227A PRECEDES - = lower rank than - x (precedes under relation - 22B0) -227B SUCCEEDS - = higher rank than - x (succeeds under relation - 22B1) -227C PRECEDES OR EQUAL TO -227D SUCCEEDS OR EQUAL TO -227E PRECEDES OR EQUIVALENT TO -227F SUCCEEDS OR EQUIVALENT TO -2280 DOES NOT PRECEDE - : 227A 0338 -2281 DOES NOT SUCCEED - : 227B 0338 -2282 SUBSET OF - = included in set -2283 SUPERSET OF - = includes in set -2284 NOT A SUBSET OF - : 2282 0338 -2285 NOT A SUPERSET OF - : 2283 0338 -2286 SUBSET OF OR EQUAL TO -2287 SUPERSET OF OR EQUAL TO -2288 NEITHER A SUBSET OF NOR EQUAL TO - : 2286 0338 -2289 NEITHER A SUPERSET OF NOR EQUAL TO - : 2287 0338 -228A SUBSET OF WITH NOT EQUAL TO -228B SUPERSET OF WITH NOT EQUAL TO -@ Operators -228C MULTISET -228D MULTISET MULTIPLICATION - x (n-ary union operator with dot - 2A03) - x (intersection with dot - 2A40) -228E MULTISET UNION - = z notation bag addition - x (n-ary union operator with plus - 2A04) -@ Relations -228F SQUARE IMAGE OF -2290 SQUARE ORIGINAL OF -2291 SQUARE IMAGE OF OR EQUAL TO -2292 SQUARE ORIGINAL OF OR EQUAL TO -@ Operators -2293 SQUARE CAP - x (n-ary square intersection operator - 2A05) -2294 SQUARE CUP -2295 CIRCLED PLUS - = direct sum - = vector pointing into page - x (earth - 2641) - x (n-ary circled plus operator - 2A01) -2296 CIRCLED MINUS - = symmetric difference - x (circle with horizontal bar - 29B5) -2297 CIRCLED TIMES - = tensor product - = vector pointing into page - x (n-ary circled times operator - 2A02) -2298 CIRCLED DIVISION SLASH -2299 CIRCLED DOT OPERATOR - = direct product - = vector pointing out of page - x (latin letter bilabial click - 0298) - x (sun - 2609) - x (n-ary circled dot operator - 2A00) -229A CIRCLED RING OPERATOR - x (apl functional symbol circle jot - 233E) - x (bullseye - 25CE) -229B CIRCLED ASTERISK OPERATOR - x (apl functional symbol circle star - 235F) -229C CIRCLED EQUALS -229D CIRCLED DASH -229E SQUARED PLUS -229F SQUARED MINUS -22A0 SQUARED TIMES - x (ballot box with x - 2612) -22A1 SQUARED DOT OPERATOR -22A2 RIGHT TACK - = turnstile - = proves, implies, yields - = reducible -22A3 LEFT TACK - = reverse turnstile - = non-theorem, does not yield -@ Miscellaneous mathematical symbols -22A4 DOWN TACK - = top -22A5 UP TACK - = base, bottom - x (perpendicular - 27C2) -@ Relations -22A6 ASSERTION - = reduces to -22A7 MODELS -22A8 TRUE - = statement is true, valid - = is a tautology - = satisfies - = results in -22A9 FORCES -22AA TRIPLE VERTICAL BAR RIGHT TURNSTILE -22AB DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE -22AC DOES NOT PROVE - : 22A2 0338 -22AD NOT TRUE - : 22A8 0338 -22AE DOES NOT FORCE - : 22A9 0338 -22AF NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE - : 22AB 0338 -22B0 PRECEDES UNDER RELATION - x (precedes - 227A) -22B1 SUCCEEDS UNDER RELATION - x (succeeds - 227B) -22B2 NORMAL SUBGROUP OF - x (white left-pointing pointer - 25C5) -22B3 CONTAINS AS NORMAL SUBGROUP - x (white right-pointing pointer - 25BB) -22B4 NORMAL SUBGROUP OF OR EQUAL TO -22B5 CONTAINS AS NORMAL SUBGROUP OR EQUAL TO -22B6 ORIGINAL OF -22B7 IMAGE OF -22B8 MULTIMAP -22B9 HERMITIAN CONJUGATE MATRIX -@ Operators -22BA INTERCALATE -22BB XOR -22BC NAND - x (projective - 2305) -22BD NOR -@ Miscellaneous mathematical symbols -22BE RIGHT ANGLE WITH ARC -22BF RIGHT TRIANGLE -@ N-ary operators -22C0 N-ARY LOGICAL AND - * also used to denote the universal quantifier - x (logical and - 2227) -22C1 N-ARY LOGICAL OR - * also used to denote the existential quantifier - x (logical or - 2228) -22C2 N-ARY INTERSECTION - = z notation generalised intersection - x (intersection - 2229) -22C3 N-ARY UNION - = z notation generalised union - x (union - 222A) -@ Operators -22C4 DIAMOND OPERATOR - x (white diamond - 25C7) -22C5 DOT OPERATOR - x (middle dot - 00B7) -22C6 STAR OPERATOR - * APL - x (arabic five pointed star - 066D) - x (black star - 2605) -22C7 DIVISION TIMES -@ Relation -22C8 BOWTIE - x (ocr bow tie - 2445) -@ Operators -22C9 LEFT NORMAL FACTOR SEMIDIRECT PRODUCT -22CA RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT -22CB LEFT SEMIDIRECT PRODUCT -22CC RIGHT SEMIDIRECT PRODUCT - x (caret insertion point - 2041) -@ Relation -22CD REVERSED TILDE EQUALS -@ Logical operators -22CE CURLY LOGICAL OR -22CF CURLY LOGICAL AND -@ Relations -22D0 DOUBLE SUBSET -22D1 DOUBLE SUPERSET -@ Operators -22D2 DOUBLE INTERSECTION -22D3 DOUBLE UNION -@ Relations -22D4 PITCHFORK - = proper intersection -22D5 EQUAL AND PARALLEL TO - x (viewdata square - 2317) -22D6 LESS-THAN WITH DOT -22D7 GREATER-THAN WITH DOT -22D8 VERY MUCH LESS-THAN -22D9 VERY MUCH GREATER-THAN -22DA LESS-THAN EQUAL TO OR GREATER-THAN -22DB GREATER-THAN EQUAL TO OR LESS-THAN -22DC EQUAL TO OR LESS-THAN -22DD EQUAL TO OR GREATER-THAN -22DE EQUAL TO OR PRECEDES -22DF EQUAL TO OR SUCCEEDS -22E0 DOES NOT PRECEDE OR EQUAL - : 227C 0338 -22E1 DOES NOT SUCCEED OR EQUAL - : 227D 0338 -22E2 NOT SQUARE IMAGE OF OR EQUAL TO - : 2291 0338 -22E3 NOT SQUARE ORIGINAL OF OR EQUAL TO - : 2292 0338 -22E4 SQUARE IMAGE OF OR NOT EQUAL TO -22E5 SQUARE ORIGINAL OF OR NOT EQUAL TO -22E6 LESS-THAN BUT NOT EQUIVALENT TO -22E7 GREATER-THAN BUT NOT EQUIVALENT TO -22E8 PRECEDES BUT NOT EQUIVALENT TO -22E9 SUCCEEDS BUT NOT EQUIVALENT TO -22EA NOT NORMAL SUBGROUP OF - : 22B2 0338 -22EB DOES NOT CONTAIN AS NORMAL SUBGROUP - : 22B3 0338 -22EC NOT NORMAL SUBGROUP OF OR EQUAL TO - : 22B4 0338 -22ED DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL - : 22B5 0338 -22EE VERTICAL ELLIPSIS - * these four ellipses are used for matrix row/column elision - x (tricolon - 205D) - x (horizontal ellipsis - 2026) - x (presentation form for vertical horizontal ellipsis - FE19) -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 Miscellaneous Technical 23FF -@ Miscellaneous technical -2300 DIAMETER SIGN - x (empty set - 2205) -2301 ELECTRIC ARROW - * from ISO 2047 - * symbol for End of Transmission -2302 HOUSE -2303 UP ARROWHEAD - x (circumflex accent - 005E) - x (modifier letter up arrowhead - 02C4) - x (caret - 2038) - x (logical and - 2227) -2304 DOWN ARROWHEAD - x (modifier letter down arrowhead - 02C5) - x (logical or - 2228) - x (countersink - 2335) -2305 PROJECTIVE - x (nand - 22BC) -2306 PERSPECTIVE -2307 WAVY LINE - x (wavy dash - 3030) -@ Corner brackets -@+ The ceiling and floor characters are recommended for general-purpose corner brackets, rather than the CJK corner brackets, which are wide quotation marks. -2308 LEFT CEILING - = APL upstile - x (left corner bracket - 300C) -2309 RIGHT CEILING - x (combining annuity symbol - 20E7) -230A LEFT FLOOR - = APL downstile -230B RIGHT FLOOR - x (right corner bracket - 300D) -@ Crops -230C BOTTOM RIGHT CROP - * set of four "crop" corners, arranged facing outward -230D BOTTOM LEFT CROP -230E TOP RIGHT CROP -230F TOP LEFT CROP -@ Miscellaneous technical -2310 REVERSED NOT SIGN - = beginning of line - x (not sign - 00AC) -2311 SQUARE LOZENGE - = Kissen (pillow) - * used as a command delimiter in some very old computers -2312 ARC - x (upper half circle - 25E0) -2313 SEGMENT -2314 SECTOR -2315 TELEPHONE RECORDER -2316 POSITION INDICATOR -2317 VIEWDATA SQUARE - x (equal and parallel to - 22D5) -2318 PLACE OF INTEREST SIGN - = COMMAND KEY -2319 TURNED NOT SIGN - = line marker -@ GUI icons -231A WATCH -231B HOURGLASS -@ Quine corners -231C TOP LEFT CORNER - * set of four "quine" corners, for quincuncial arrangement -231D TOP RIGHT CORNER -231E BOTTOM LEFT CORNER -231F BOTTOM RIGHT CORNER -@ Integral pieces -2320 TOP HALF INTEGRAL - x (integral extension - 23AE) -2321 BOTTOM HALF INTEGRAL -@ Frown and smile -2322 FROWN - x (character tie - 2040) -2323 SMILE - x (undertie - 203F) -@ Keyboard symbols -2324 UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS - = ENTER KEY -2325 OPTION KEY -2326 ERASE TO THE RIGHT - = DELETE TO THE RIGHT KEY -2327 X IN A RECTANGLE BOX - = CLEAR KEY -2328 KEYBOARD -@ Angle brackets -@+ These are discouraged for mathematical use because of their canonical equivalence to CJK punctuation. -2329 LEFT-POINTING ANGLE BRACKET - x (less-than sign - 003C) - x (single left-pointing angle quotation mark - 2039) - x (mathematical left angle bracket - 27E8) - : 3008 left angle bracket -232A RIGHT-POINTING ANGLE BRACKET - x (greater-than sign - 003E) - x (single right-pointing angle quotation mark - 203A) - x (mathematical right angle bracket - 27E9) - : 3009 right angle bracket -@ Keyboard symbol -232B ERASE TO THE LEFT - = DELETE TO THE LEFT KEY -@ Chemistry symbol -232C BENZENE RING -@ Drafting symbols -232D CYLINDRICITY -232E ALL AROUND-PROFILE -232F SYMMETRY -2330 TOTAL RUNOUT -2331 DIMENSION ORIGIN -2332 CONICAL TAPER -2333 SLOPE - x (lower left triangle - 25FA) -2334 COUNTERBORE - x (open box - 2423) -2335 COUNTERSINK - x (down arrowhead - 2304) -@ APL -2336 APL FUNCTIONAL SYMBOL I-BEAM -2337 APL FUNCTIONAL SYMBOL SQUISH QUAD - x (apl functional symbol quad - 2395) - x (white vertical rectangle - 25AF) - x (n-ary white vertical bar - 2AFF) -2338 APL FUNCTIONAL SYMBOL QUAD EQUAL -2339 APL FUNCTIONAL SYMBOL QUAD DIVIDE -233A APL FUNCTIONAL SYMBOL QUAD DIAMOND -233B APL FUNCTIONAL SYMBOL QUAD JOT - x (squared small circle - 29C7) -233C APL FUNCTIONAL SYMBOL QUAD CIRCLE -233D APL FUNCTIONAL SYMBOL CIRCLE STILE -233E APL FUNCTIONAL SYMBOL CIRCLE JOT - x (circled ring operator - 229A) - x (circled white bullet - 29BE) -233F APL FUNCTIONAL SYMBOL SLASH BAR -2340 APL FUNCTIONAL SYMBOL BACKSLASH BAR -2341 APL FUNCTIONAL SYMBOL QUAD SLASH - x (squared rising diagonal slash - 29C4) -2342 APL FUNCTIONAL SYMBOL QUAD BACKSLASH - x (squared falling diagonal slash - 29C5) -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 - x (reversed empty set - 29B0) -234A APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR * - = up tack underbar - * preferred naming for APL tack symbols now follows the London Convention in ISO/IEC 13751:2000 (APL Extended) - x (up tack - 22A5) -234B APL FUNCTIONAL SYMBOL DELTA STILE -234C APL FUNCTIONAL SYMBOL QUAD DOWN CARET -234D APL FUNCTIONAL SYMBOL QUAD DELTA -234E APL FUNCTIONAL SYMBOL DOWN TACK JOT * - = up tack jot - x (up tack - 22A5) -234F APL FUNCTIONAL SYMBOL UPWARDS VANE -2350 APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW -2351 APL FUNCTIONAL SYMBOL UP TACK OVERBAR * - = down tack overbar - x (down tack - 22A4) - x (postal mark - 3012) -2352 APL FUNCTIONAL SYMBOL DEL STILE -2353 APL FUNCTIONAL SYMBOL QUAD UP CARET -2354 APL FUNCTIONAL SYMBOL QUAD DEL -2355 APL FUNCTIONAL SYMBOL UP TACK JOT * - = down tack jot - x (down tack - 22A4) -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 - x (intersection with dot - 2A40) -235E APL FUNCTIONAL SYMBOL QUOTE QUAD -235F APL FUNCTIONAL SYMBOL CIRCLE STAR - x (circled asterisk operator - 229B) -2360 APL FUNCTIONAL SYMBOL QUAD COLON -2361 APL FUNCTIONAL SYMBOL UP TACK DIAERESIS * - = down tack diaeresis - x (down tack - 22A4) -2362 APL FUNCTIONAL SYMBOL DEL DIAERESIS -2363 APL FUNCTIONAL SYMBOL STAR DIAERESIS -2364 APL FUNCTIONAL SYMBOL JOT DIAERESIS - = hoot -2365 APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS - = holler -2366 APL FUNCTIONAL SYMBOL DOWN SHOE STILE -2367 APL FUNCTIONAL SYMBOL LEFT SHOE STILE -2368 APL FUNCTIONAL SYMBOL TILDE DIAERESIS - = smirk -2369 APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS -236A APL FUNCTIONAL SYMBOL COMMA BAR -236B APL FUNCTIONAL SYMBOL DEL TILDE -236C APL FUNCTIONAL SYMBOL ZILDE -236D APL FUNCTIONAL SYMBOL STILE TILDE -236E APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR -236F APL FUNCTIONAL SYMBOL QUAD NOT EQUAL -2370 APL FUNCTIONAL SYMBOL QUAD QUESTION -2371 APL FUNCTIONAL SYMBOL DOWN CARET TILDE -2372 APL FUNCTIONAL SYMBOL UP CARET TILDE -2373 APL FUNCTIONAL SYMBOL IOTA -2374 APL FUNCTIONAL SYMBOL RHO -2375 APL FUNCTIONAL SYMBOL OMEGA -2376 APL FUNCTIONAL SYMBOL ALPHA UNDERBAR -2377 APL FUNCTIONAL SYMBOL EPSILON UNDERBAR -2378 APL FUNCTIONAL SYMBOL IOTA UNDERBAR -2379 APL FUNCTIONAL SYMBOL OMEGA UNDERBAR -237A APL FUNCTIONAL SYMBOL ALPHA -@ Graphics for control codes -237B NOT CHECK MARK - * from ISO 2047 - * symbol for Negative Acknowledge -@ Miscellaneous technical -237C RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW -@ Graphics for control codes -237D SHOULDERED OPEN BOX - * from ISO 9995-7 - * keyboard symbol for No Break Space - x (open box - 2423) -237E BELL SYMBOL - * from ISO 2047 -237F VERTICAL LINE WITH MIDDLE DOT - * from ISO 2047 - * symbol for End of Medium -@ Keyboard symbols from ISO 9995-7 -2380 INSERTION SYMBOL -2381 CONTINUOUS UNDERLINE SYMBOL -2382 DISCONTINUOUS UNDERLINE SYMBOL -2383 EMPHASIS SYMBOL -2384 COMPOSITION SYMBOL -2385 WHITE SQUARE WITH CENTRE VERTICAL LINE - = center -2386 ENTER SYMBOL -2387 ALTERNATIVE KEY SYMBOL -2388 HELM SYMBOL - = control - x (wheel of dharma - 2638) -2389 CIRCLED HORIZONTAL BAR WITH NOTCH (pause) - = pause -238A CIRCLED TRIANGLE DOWN (break) - = interrupt -238B BROKEN CIRCLE WITH NORTHWEST ARROW (escape) - = escape -238C UNDO SYMBOL -@ Electrotechnical symbols from IR 181 -238D MONOSTABLE SYMBOL -238E HYSTERESIS SYMBOL -238F OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL -2390 OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL -2391 PASSIVE-PULL-DOWN-OUTPUT SYMBOL -2392 PASSIVE-PULL-UP-OUTPUT SYMBOL -2393 DIRECT CURRENT SYMBOL FORM TWO -2394 SOFTWARE-FUNCTION SYMBOL -@ APL -2395 APL FUNCTIONAL SYMBOL QUAD - x (apl functional symbol squish quad - 2337) - x (white vertical rectangle - 25AF) -@ Keyboard symbols from ISO 9995-7 -2396 DECIMAL SEPARATOR KEY SYMBOL -2397 PREVIOUS PAGE -2398 NEXT PAGE -2399 PRINT SCREEN SYMBOL -239A CLEAR SCREEN SYMBOL - x (combining enclosing screen - 20E2) -@ Bracket pieces -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 -@ Special character extensions -23AE INTEGRAL EXTENSION - x (top half integral - 2320) - x (bottom half integral - 2321) -23AF HORIZONTAL LINE EXTENSION - * used for extension of arrows - x (vertical line extension - 23D0) -@ Bracket pieces -23B0 UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION - = left moustache -23B1 UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION - = right moustache -@ Summation sign parts -23B2 SUMMATION TOP -23B3 SUMMATION BOTTOM -@ Vertical brackets -23B4 TOP SQUARE BRACKET - x (presentation form for vertical left square bracket - FE47) -23B5 BOTTOM SQUARE BRACKET - x (presentation form for vertical right square bracket - FE48) -23B6 BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET -@ Terminal graphic characters -23B7 RADICAL SYMBOL BOTTOM -23B8 LEFT VERTICAL BOX LINE -23B9 RIGHT VERTICAL BOX LINE -@ Scan lines for terminal graphics -@+ The scan line numbers here refer to old, low-resolution technology for terminals, with only 9 scan lines per fixed-size character glyph. Even-numbered scan lines are unified with box-drawing graphics. -23BA HORIZONTAL SCAN LINE-1 -23BB HORIZONTAL SCAN LINE-3 -23BC HORIZONTAL SCAN LINE-7 -23BD HORIZONTAL SCAN LINE-9 -@ Dentistry notation symbols -23BE DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT - x (left ceiling - 2308) -23BF DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT - x (left floor - 230A) -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 - x (down tack - 22A4) - x (box drawings light down and horizontal - 252C) -23CA DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL - x (up tack - 22A5) - x (box drawings light up and horizontal - 2534) -23CB DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT - x (right ceiling - 2309) -23CC DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT - x (right floor - 230B) -@ Miscellaneous technical symbol -23CD SQUARE FOOT -@ Keyboard and UI symbols -23CE RETURN SYMBOL - * may be shown with either hollow or filled glyph - x (downwards arrow with corner leftwards - 21B5) -23CF EJECT SYMBOL - * UI symbol to eject media -@ Special character extension -23D0 VERTICAL LINE EXTENSION - * used for extension of arrows - x (horizontal line extension - 23AF) -@ Metrical symbols -23D1 METRICAL BREVE -23D2 METRICAL LONG OVER SHORT -23D3 METRICAL SHORT OVER LONG -23D4 METRICAL LONG OVER TWO SHORTS -23D5 METRICAL TWO SHORTS OVER LONG -23D6 METRICAL TWO SHORTS JOINED -23D7 METRICAL TRISEME - x (combining greek musical triseme - 1D242) -23D8 METRICAL TETRASEME - x (combining greek musical tetraseme - 1D243) -23D9 METRICAL PENTASEME - x (combining greek musical pentaseme - 1D244) -@ Electrotechnical symbols -23DA EARTH GROUND -23DB FUSE -@@ 2400 Control Pictures 243F -@+ The diagonal lettering glyphs are only exemplary; alternate representations may be, and often are used in the visible display of control codes. -@ Graphic pictures for control codes -2400 SYMBOL FOR NULL -2401 SYMBOL FOR START OF HEADING -2402 SYMBOL FOR START OF TEXT -2403 SYMBOL FOR END OF TEXT -2404 SYMBOL FOR END OF TRANSMISSION -2405 SYMBOL FOR ENQUIRY -2406 SYMBOL FOR ACKNOWLEDGE -2407 SYMBOL FOR BELL -2408 SYMBOL FOR BACKSPACE -2409 SYMBOL FOR HORIZONTAL TABULATION -240A SYMBOL FOR LINE FEED -240B SYMBOL FOR VERTICAL TABULATION -240C SYMBOL FOR FORM FEED -240D SYMBOL FOR CARRIAGE RETURN -240E SYMBOL FOR SHIFT OUT -240F SYMBOL FOR SHIFT IN -2410 SYMBOL FOR DATA LINK ESCAPE -2411 SYMBOL FOR DEVICE CONTROL ONE -2412 SYMBOL FOR DEVICE CONTROL TWO -2413 SYMBOL FOR DEVICE CONTROL THREE -2414 SYMBOL FOR DEVICE CONTROL FOUR -2415 SYMBOL FOR NEGATIVE ACKNOWLEDGE -2416 SYMBOL FOR SYNCHRONOUS IDLE -2417 SYMBOL FOR END OF TRANSMISSION BLOCK -2418 SYMBOL FOR CANCEL -2419 SYMBOL FOR END OF MEDIUM -241A SYMBOL FOR SUBSTITUTE -241B SYMBOL FOR ESCAPE -241C SYMBOL FOR FILE SEPARATOR -241D SYMBOL FOR GROUP SEPARATOR -241E SYMBOL FOR RECORD SEPARATOR -241F SYMBOL FOR UNIT SEPARATOR -2420 SYMBOL FOR SPACE -2421 SYMBOL FOR DELETE -@ Specific symbols for space -2422 BLANK SYMBOL - * graphic for space - x (latin small letter b with stroke - 0180) -2423 OPEN BOX - * graphic for space - x (counterbore - 2334) -@ Graphic picture for control code -2424 SYMBOL FOR NEWLINE -@ Keyboard symbol -2425 SYMBOL FOR DELETE FORM TWO - * from ISO 9995-7 - * keyboard symbol for undoable delete -@ Specific symbol for control code -2426 SYMBOL FOR SUBSTITUTE FORM TWO - * from ISO 2047 - x (arabic question mark - 061F) -@@ 2440 Optical Character Recognition 245F -@ OCR -2440 OCR HOOK -2441 OCR CHAIR -2442 OCR FORK -2443 OCR INVERTED FORK -2444 OCR BELT BUCKLE -2445 OCR BOW TIE - x (bowtie - 22C8) -2446 OCR BRANCH BANK IDENTIFICATION - = transit -2447 OCR AMOUNT OF CHECK -2448 OCR DASH - = on us -2449 OCR CUSTOMER ACCOUNT NUMBER - = dash -244A OCR DOUBLE BACKSLASH -@@ 2460 Enclosed Alphanumerics 24FF -@ Circled numbers -2460 CIRCLED DIGIT ONE - # <circle> 0031 -2461 CIRCLED DIGIT TWO - # <circle> 0032 -2462 CIRCLED DIGIT THREE - # <circle> 0033 -2463 CIRCLED DIGIT FOUR - # <circle> 0034 -2464 CIRCLED DIGIT FIVE - # <circle> 0035 -2465 CIRCLED DIGIT SIX - # <circle> 0036 -2466 CIRCLED DIGIT SEVEN - # <circle> 0037 -2467 CIRCLED DIGIT EIGHT - # <circle> 0038 -2468 CIRCLED DIGIT NINE - # <circle> 0039 -2469 CIRCLED NUMBER TEN - # <circle> 0031 0030 -246A CIRCLED NUMBER ELEVEN - # <circle> 0031 0031 -246B CIRCLED NUMBER TWELVE - # <circle> 0031 0032 -246C CIRCLED NUMBER THIRTEEN - # <circle> 0031 0033 -246D CIRCLED NUMBER FOURTEEN - # <circle> 0031 0034 -246E CIRCLED NUMBER FIFTEEN - # <circle> 0031 0035 -246F CIRCLED NUMBER SIXTEEN - # <circle> 0031 0036 -2470 CIRCLED NUMBER SEVENTEEN - # <circle> 0031 0037 -2471 CIRCLED NUMBER EIGHTEEN - # <circle> 0031 0038 -2472 CIRCLED NUMBER NINETEEN - # <circle> 0031 0039 -2473 CIRCLED NUMBER TWENTY - # <circle> 0032 0030 -@ Parenthesized numbers -2474 PARENTHESIZED DIGIT ONE - # 0028 0031 0029 -2475 PARENTHESIZED DIGIT TWO - # 0028 0032 0029 -2476 PARENTHESIZED DIGIT THREE - # 0028 0033 0029 -2477 PARENTHESIZED DIGIT FOUR - # 0028 0034 0029 -2478 PARENTHESIZED DIGIT FIVE - # 0028 0035 0029 -2479 PARENTHESIZED DIGIT SIX - # 0028 0036 0029 -247A PARENTHESIZED DIGIT SEVEN - # 0028 0037 0029 -247B PARENTHESIZED DIGIT EIGHT - # 0028 0038 0029 -247C PARENTHESIZED DIGIT NINE - # 0028 0039 0029 -247D PARENTHESIZED NUMBER TEN - # 0028 0031 0030 0029 -247E PARENTHESIZED NUMBER ELEVEN - # 0028 0031 0031 0029 -247F PARENTHESIZED NUMBER TWELVE - # 0028 0031 0032 0029 -2480 PARENTHESIZED NUMBER THIRTEEN - # 0028 0031 0033 0029 -2481 PARENTHESIZED NUMBER FOURTEEN - # 0028 0031 0034 0029 -2482 PARENTHESIZED NUMBER FIFTEEN - # 0028 0031 0035 0029 -2483 PARENTHESIZED NUMBER SIXTEEN - # 0028 0031 0036 0029 -2484 PARENTHESIZED NUMBER SEVENTEEN - # 0028 0031 0037 0029 -2485 PARENTHESIZED NUMBER EIGHTEEN - # 0028 0031 0038 0029 -2486 PARENTHESIZED NUMBER NINETEEN - # 0028 0031 0039 0029 -2487 PARENTHESIZED NUMBER TWENTY - # 0028 0032 0030 0029 -@ Numbers period -2488 DIGIT ONE FULL STOP - # 0031 002E -2489 DIGIT TWO FULL STOP - # 0032 002E -248A DIGIT THREE FULL STOP - # 0033 002E -248B DIGIT FOUR FULL STOP - # 0034 002E -248C DIGIT FIVE FULL STOP - # 0035 002E -248D DIGIT SIX FULL STOP - # 0036 002E -248E DIGIT SEVEN FULL STOP - # 0037 002E -248F DIGIT EIGHT FULL STOP - # 0038 002E -2490 DIGIT NINE FULL STOP - # 0039 002E -2491 NUMBER TEN FULL STOP - # 0031 0030 002E -2492 NUMBER ELEVEN FULL STOP - # 0031 0031 002E -2493 NUMBER TWELVE FULL STOP - # 0031 0032 002E -2494 NUMBER THIRTEEN FULL STOP - # 0031 0033 002E -2495 NUMBER FOURTEEN FULL STOP - # 0031 0034 002E -2496 NUMBER FIFTEEN FULL STOP - # 0031 0035 002E -2497 NUMBER SIXTEEN FULL STOP - # 0031 0036 002E -2498 NUMBER SEVENTEEN FULL STOP - # 0031 0037 002E -2499 NUMBER EIGHTEEN FULL STOP - # 0031 0038 002E -249A NUMBER NINETEEN FULL STOP - # 0031 0039 002E -249B NUMBER TWENTY FULL STOP - # 0032 0030 002E -@ Parenthesized Latin letters -249C PARENTHESIZED LATIN SMALL LETTER A - # 0028 0061 0029 -249D PARENTHESIZED LATIN SMALL LETTER B - # 0028 0062 0029 -249E PARENTHESIZED LATIN SMALL LETTER C - # 0028 0063 0029 -249F PARENTHESIZED LATIN SMALL LETTER D - # 0028 0064 0029 -24A0 PARENTHESIZED LATIN SMALL LETTER E - # 0028 0065 0029 -24A1 PARENTHESIZED LATIN SMALL LETTER F - # 0028 0066 0029 -24A2 PARENTHESIZED LATIN SMALL LETTER G - # 0028 0067 0029 -24A3 PARENTHESIZED LATIN SMALL LETTER H - # 0028 0068 0029 -24A4 PARENTHESIZED LATIN SMALL LETTER I - # 0028 0069 0029 -24A5 PARENTHESIZED LATIN SMALL LETTER J - # 0028 006A 0029 -24A6 PARENTHESIZED LATIN SMALL LETTER K - # 0028 006B 0029 -24A7 PARENTHESIZED LATIN SMALL LETTER L - # 0028 006C 0029 -24A8 PARENTHESIZED LATIN SMALL LETTER M - # 0028 006D 0029 -24A9 PARENTHESIZED LATIN SMALL LETTER N - # 0028 006E 0029 -24AA PARENTHESIZED LATIN SMALL LETTER O - # 0028 006F 0029 -24AB PARENTHESIZED LATIN SMALL LETTER P - # 0028 0070 0029 -24AC PARENTHESIZED LATIN SMALL LETTER Q - # 0028 0071 0029 -24AD PARENTHESIZED LATIN SMALL LETTER R - # 0028 0072 0029 -24AE PARENTHESIZED LATIN SMALL LETTER S - # 0028 0073 0029 -24AF PARENTHESIZED LATIN SMALL LETTER T - # 0028 0074 0029 -24B0 PARENTHESIZED LATIN SMALL LETTER U - # 0028 0075 0029 -24B1 PARENTHESIZED LATIN SMALL LETTER V - # 0028 0076 0029 -24B2 PARENTHESIZED LATIN SMALL LETTER W - # 0028 0077 0029 -24B3 PARENTHESIZED LATIN SMALL LETTER X - # 0028 0078 0029 -24B4 PARENTHESIZED LATIN SMALL LETTER Y - # 0028 0079 0029 -24B5 PARENTHESIZED LATIN SMALL LETTER Z - # 0028 007A 0029 -@ Circled Latin letters -24B6 CIRCLED LATIN CAPITAL LETTER A - # <circle> 0041 -24B7 CIRCLED LATIN CAPITAL LETTER B - # <circle> 0042 -24B8 CIRCLED LATIN CAPITAL LETTER C - # <circle> 0043 -24B9 CIRCLED LATIN CAPITAL LETTER D - # <circle> 0044 -24BA CIRCLED LATIN CAPITAL LETTER E - # <circle> 0045 -24BB CIRCLED LATIN CAPITAL LETTER F - # <circle> 0046 -24BC CIRCLED LATIN CAPITAL LETTER G - # <circle> 0047 -24BD CIRCLED LATIN CAPITAL LETTER H - # <circle> 0048 -24BE CIRCLED LATIN CAPITAL LETTER I - # <circle> 0049 -24BF CIRCLED LATIN CAPITAL LETTER J - # <circle> 004A -24C0 CIRCLED LATIN CAPITAL LETTER K - # <circle> 004B -24C1 CIRCLED LATIN CAPITAL LETTER L - # <circle> 004C -24C2 CIRCLED LATIN CAPITAL LETTER M - # <circle> 004D -24C3 CIRCLED LATIN CAPITAL LETTER N - # <circle> 004E -24C4 CIRCLED LATIN CAPITAL LETTER O - # <circle> 004F -24C5 CIRCLED LATIN CAPITAL LETTER P - # <circle> 0050 -24C6 CIRCLED LATIN CAPITAL LETTER Q - # <circle> 0051 -24C7 CIRCLED LATIN CAPITAL LETTER R - # <circle> 0052 -24C8 CIRCLED LATIN CAPITAL LETTER S - # <circle> 0053 -24C9 CIRCLED LATIN CAPITAL LETTER T - # <circle> 0054 -24CA CIRCLED LATIN CAPITAL LETTER U - # <circle> 0055 -24CB CIRCLED LATIN CAPITAL LETTER V - # <circle> 0056 -24CC CIRCLED LATIN CAPITAL LETTER W - # <circle> 0057 -24CD CIRCLED LATIN CAPITAL LETTER X - # <circle> 0058 -24CE CIRCLED LATIN CAPITAL LETTER Y - # <circle> 0059 -24CF CIRCLED LATIN CAPITAL LETTER Z - # <circle> 005A -24D0 CIRCLED LATIN SMALL LETTER A - # <circle> 0061 -24D1 CIRCLED LATIN SMALL LETTER B - # <circle> 0062 -24D2 CIRCLED LATIN SMALL LETTER C - # <circle> 0063 -24D3 CIRCLED LATIN SMALL LETTER D - # <circle> 0064 -24D4 CIRCLED LATIN SMALL LETTER E - # <circle> 0065 -24D5 CIRCLED LATIN SMALL LETTER F - # <circle> 0066 -24D6 CIRCLED LATIN SMALL LETTER G - # <circle> 0067 -24D7 CIRCLED LATIN SMALL LETTER H - # <circle> 0068 -24D8 CIRCLED LATIN SMALL LETTER I - # <circle> 0069 -24D9 CIRCLED LATIN SMALL LETTER J - # <circle> 006A -24DA CIRCLED LATIN SMALL LETTER K - # <circle> 006B -24DB CIRCLED LATIN SMALL LETTER L - # <circle> 006C -24DC CIRCLED LATIN SMALL LETTER M - # <circle> 006D -24DD CIRCLED LATIN SMALL LETTER N - # <circle> 006E -24DE CIRCLED LATIN SMALL LETTER O - # <circle> 006F -24DF CIRCLED LATIN SMALL LETTER P - # <circle> 0070 -24E0 CIRCLED LATIN SMALL LETTER Q - # <circle> 0071 -24E1 CIRCLED LATIN SMALL LETTER R - # <circle> 0072 -24E2 CIRCLED LATIN SMALL LETTER S - # <circle> 0073 -24E3 CIRCLED LATIN SMALL LETTER T - # <circle> 0074 -24E4 CIRCLED LATIN SMALL LETTER U - # <circle> 0075 -24E5 CIRCLED LATIN SMALL LETTER V - # <circle> 0076 -24E6 CIRCLED LATIN SMALL LETTER W - # <circle> 0077 -24E7 CIRCLED LATIN SMALL LETTER X - # <circle> 0078 -24E8 CIRCLED LATIN SMALL LETTER Y - # <circle> 0079 -24E9 CIRCLED LATIN SMALL LETTER Z - # <circle> 007A -@ Additional circled number -24EA CIRCLED DIGIT ZERO - # <circle> 0030 -@ White on black circled numbers -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 -@ Double circled numbers -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 -@ Additional white on black circled number -24FF NEGATIVE CIRCLED DIGIT ZERO - x (dingbat negative circled digit one - 2776) -@@ 2500 Box Drawing 257F -@ Form and chart components -2500 BOX DRAWINGS LIGHT HORIZONTAL - = Videotex Mosaic DG 15 -2501 BOX DRAWINGS HEAVY HORIZONTAL -2502 BOX DRAWINGS LIGHT VERTICAL - = Videotex Mosaic DG 14 -2503 BOX DRAWINGS HEAVY VERTICAL -2504 BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL -2505 BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL -2506 BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL -2507 BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL -2508 BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL -2509 BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL -250A BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL -250B BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL -250C BOX DRAWINGS LIGHT DOWN AND RIGHT - = Videotex Mosaic DG 16 -250D BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY -250E BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT -250F BOX DRAWINGS HEAVY DOWN AND RIGHT -2510 BOX DRAWINGS LIGHT DOWN AND LEFT - = Videotex Mosaic DG 17 -2511 BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY -2512 BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT -2513 BOX DRAWINGS HEAVY DOWN AND LEFT -2514 BOX DRAWINGS LIGHT UP AND RIGHT - = Videotex Mosaic DG 18 -2515 BOX DRAWINGS UP LIGHT AND RIGHT HEAVY -2516 BOX DRAWINGS UP HEAVY AND RIGHT LIGHT -2517 BOX DRAWINGS HEAVY UP AND RIGHT -2518 BOX DRAWINGS LIGHT UP AND LEFT - = Videotex Mosaic DG 19 -2519 BOX DRAWINGS UP LIGHT AND LEFT HEAVY -251A BOX DRAWINGS UP HEAVY AND LEFT LIGHT -251B BOX DRAWINGS HEAVY UP AND LEFT -251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT - = Videotex Mosaic DG 20 -251D BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY - = Videotex Mosaic DG 03 -251E BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT -251F BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT -2520 BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT -2521 BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY -2522 BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY -2523 BOX DRAWINGS HEAVY VERTICAL AND RIGHT -2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT - = Videotex Mosaic DG 21 -2525 BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY - = Videotex Mosaic DG 04 -2526 BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT -2527 BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT -2528 BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT -2529 BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY -252A BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY -252B BOX DRAWINGS HEAVY VERTICAL AND LEFT -252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL - = Videotex Mosaic DG 22 -252D BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT -252E BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT -252F BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY - = Videotex Mosaic DG 02 -2530 BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT -2531 BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY -2532 BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY -2533 BOX DRAWINGS HEAVY DOWN AND HORIZONTAL -2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL - = Videotex Mosaic DG 23 -2535 BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT -2536 BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT -2537 BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY - = Videotex Mosaic DG 01 -2538 BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT -2539 BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY -253A BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY -253B BOX DRAWINGS HEAVY UP AND HORIZONTAL -253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL - = Videotex Mosaic DG 24 -253D BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT -253E BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT -253F BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY - = Videotex Mosaic DG 13 -2540 BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT -2541 BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT -2542 BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT -2543 BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT -2544 BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT -2545 BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT -2546 BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT -2547 BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY -2548 BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY -2549 BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY -254A BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY -254B BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL -254C BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL -254D BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL -254E BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL -254F BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL -2550 BOX DRAWINGS DOUBLE HORIZONTAL -2551 BOX DRAWINGS DOUBLE VERTICAL -2552 BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE -2553 BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE -2554 BOX DRAWINGS DOUBLE DOWN AND RIGHT -2555 BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE -2556 BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE -2557 BOX DRAWINGS DOUBLE DOWN AND LEFT -2558 BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE -2559 BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE -255A BOX DRAWINGS DOUBLE UP AND RIGHT -255B BOX DRAWINGS UP SINGLE AND LEFT DOUBLE -255C BOX DRAWINGS UP DOUBLE AND LEFT SINGLE -255D BOX DRAWINGS DOUBLE UP AND LEFT -255E BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE -255F BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE -2560 BOX DRAWINGS DOUBLE VERTICAL AND RIGHT -2561 BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE -2562 BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE -2563 BOX DRAWINGS DOUBLE VERTICAL AND LEFT -2564 BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE -2565 BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE -2566 BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL -2567 BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE -2568 BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE -2569 BOX DRAWINGS DOUBLE UP AND HORIZONTAL -256A BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE -256B BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE -256C BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL -256D BOX DRAWINGS LIGHT ARC DOWN AND RIGHT -256E BOX DRAWINGS LIGHT ARC DOWN AND LEFT -256F BOX DRAWINGS LIGHT ARC UP AND LEFT -2570 BOX DRAWINGS LIGHT ARC UP AND RIGHT -2571 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT -2572 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT -2573 BOX DRAWINGS LIGHT DIAGONAL CROSS -2574 BOX DRAWINGS LIGHT LEFT -2575 BOX DRAWINGS LIGHT UP -2576 BOX DRAWINGS LIGHT RIGHT -2577 BOX DRAWINGS LIGHT DOWN -2578 BOX DRAWINGS HEAVY LEFT -2579 BOX DRAWINGS HEAVY UP -257A BOX DRAWINGS HEAVY RIGHT -257B BOX DRAWINGS HEAVY DOWN -257C BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT -257D BOX DRAWINGS LIGHT UP AND HEAVY DOWN -257E BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT -257F BOX DRAWINGS HEAVY UP AND LIGHT DOWN -@@ 2580 Block Elements 259F -@ Block elements -2580 UPPER HALF BLOCK -2581 LOWER ONE EIGHTH BLOCK -2582 LOWER ONE QUARTER BLOCK -2583 LOWER THREE EIGHTHS BLOCK -2584 LOWER HALF BLOCK -2585 LOWER FIVE EIGHTHS BLOCK -2586 LOWER THREE QUARTERS BLOCK -2587 LOWER SEVEN EIGHTHS BLOCK -2588 FULL BLOCK - = solid - x (black square - 25A0) -2589 LEFT SEVEN EIGHTHS BLOCK -258A LEFT THREE QUARTERS BLOCK -258B LEFT FIVE EIGHTHS BLOCK -258C LEFT HALF BLOCK -258D LEFT THREE EIGHTHS BLOCK -258E LEFT ONE QUARTER BLOCK -258F LEFT ONE EIGHTH BLOCK -2590 RIGHT HALF BLOCK -@ Shade characters -2591 LIGHT SHADE - * 25% -2592 MEDIUM SHADE - * 50% -2593 DARK SHADE - * 75% -@ Block elements -2594 UPPER ONE EIGHTH BLOCK -2595 RIGHT ONE EIGHTH BLOCK -@ Terminal graphic characters -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 Geometric Shapes 25FF -@ Geometric shapes -25A0 BLACK SQUARE - = moding mark (in ideographic text) - x (full block - 2588) -25A1 WHITE SQUARE - = quadrature - * may be used to represent a missing ideograph - x (combining enclosing square - 20DE) - x (ballot box - 2610) - x (geta mark - 3013) -25A2 WHITE SQUARE WITH ROUNDED CORNERS -25A3 WHITE SQUARE CONTAINING BLACK SMALL SQUARE -25A4 SQUARE WITH HORIZONTAL FILL -25A5 SQUARE WITH VERTICAL FILL -25A6 SQUARE WITH ORTHOGONAL CROSSHATCH FILL -25A7 SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL -25A8 SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL -25A9 SQUARE WITH DIAGONAL CROSSHATCH FILL -25AA BLACK SMALL SQUARE -25AB WHITE SMALL SQUARE -25AC BLACK RECTANGLE -25AD WHITE RECTANGLE -25AE BLACK VERTICAL RECTANGLE - = histogram marker - x (end of proof - 220E) -25AF WHITE VERTICAL RECTANGLE - x (apl functional symbol squish quad - 2337) - x (apl functional symbol quad - 2395) -25B0 BLACK PARALLELOGRAM -25B1 WHITE PARALLELOGRAM -25B2 BLACK UP-POINTING TRIANGLE -25B3 WHITE UP-POINTING TRIANGLE - = trine - x (combining enclosing upward pointing triangle - 20E4) - x (increment - 2206) -25B4 BLACK UP-POINTING SMALL TRIANGLE -25B5 WHITE UP-POINTING SMALL TRIANGLE -25B6 BLACK RIGHT-POINTING TRIANGLE -25B7 WHITE RIGHT-POINTING TRIANGLE - = z notation range restriction -25B8 BLACK RIGHT-POINTING SMALL TRIANGLE - x (triangular bullet - 2023) -25B9 WHITE RIGHT-POINTING SMALL TRIANGLE -25BA BLACK RIGHT-POINTING POINTER -25BB WHITE RIGHT-POINTING POINTER - = forward arrow indicator - x (contains as normal subgroup - 22B3) -25BC BLACK DOWN-POINTING TRIANGLE -25BD WHITE DOWN-POINTING TRIANGLE - = Hamilton operator - x (nabla - 2207) -25BE BLACK DOWN-POINTING SMALL TRIANGLE -25BF WHITE DOWN-POINTING SMALL TRIANGLE -25C0 BLACK LEFT-POINTING TRIANGLE -25C1 WHITE LEFT-POINTING TRIANGLE - = z notation domain restriction -25C2 BLACK LEFT-POINTING SMALL TRIANGLE -25C3 WHITE LEFT-POINTING SMALL TRIANGLE -25C4 BLACK LEFT-POINTING POINTER -25C5 WHITE LEFT-POINTING POINTER - = backward arrow indicator - x (normal subgroup of - 22B2) -25C6 BLACK DIAMOND - x (black diamond suit - 2666) -25C7 WHITE DIAMOND - x (combining enclosing diamond - 20DF) - x (diamond operator - 22C4) - x (white diamond suit - 2662) -25C8 WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND -25C9 FISHEYE - = tainome (Japanese, a kind of bullet) -25CA LOZENGE - x (white diamond suit - 2662) -25CB WHITE CIRCLE - x (combining enclosing circle - 20DD) - x (large circle - 25EF) - x (ideographic number zero - 3007) -25CC DOTTED CIRCLE - * note that the reference glyph for this character is intentionally larger than the dotted circle glyph used to indicate combining characters in this standard; see, for example, 0300 -25CD CIRCLE WITH VERTICAL FILL -25CE BULLSEYE - x (circled ring operator - 229A) -25CF BLACK CIRCLE -25D0 CIRCLE WITH LEFT HALF BLACK -25D1 CIRCLE WITH RIGHT HALF BLACK -25D2 CIRCLE WITH LOWER HALF BLACK -25D3 CIRCLE WITH UPPER HALF BLACK -25D4 CIRCLE WITH UPPER RIGHT QUADRANT BLACK -25D5 CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK -25D6 LEFT HALF BLACK CIRCLE -25D7 RIGHT HALF BLACK CIRCLE -25D8 INVERSE BULLET - x (bullet - 2022) - x (white bullet - 25E6) -25D9 INVERSE WHITE CIRCLE -25DA UPPER HALF INVERSE WHITE CIRCLE -25DB LOWER HALF INVERSE WHITE CIRCLE -25DC UPPER LEFT QUADRANT CIRCULAR ARC -25DD UPPER RIGHT QUADRANT CIRCULAR ARC -25DE LOWER RIGHT QUADRANT CIRCULAR ARC -25DF LOWER LEFT QUADRANT CIRCULAR ARC -25E0 UPPER HALF CIRCLE - x (arc - 2312) -25E1 LOWER HALF CIRCLE -25E2 BLACK LOWER RIGHT TRIANGLE -25E3 BLACK LOWER LEFT TRIANGLE -25E4 BLACK UPPER LEFT TRIANGLE -25E5 BLACK UPPER RIGHT TRIANGLE -25E6 WHITE BULLET - x (bullet - 2022) - x (ring operator - 2218) - x (inverse bullet - 25D8) -25E7 SQUARE WITH LEFT HALF BLACK - x (square with top half black - 2B12) -25E8 SQUARE WITH RIGHT HALF BLACK -25E9 SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK -25EA SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK -25EB WHITE SQUARE WITH VERTICAL BISECTING LINE -25EC WHITE UP-POINTING TRIANGLE WITH DOT -25ED UP-POINTING TRIANGLE WITH LEFT HALF BLACK -25EE UP-POINTING TRIANGLE WITH RIGHT HALF BLACK -25EF LARGE CIRCLE - x (combining enclosing circle - 20DD) - x (white circle - 25CB) - x (ideographic number zero - 3007) -@ Control code graphics -25F0 WHITE SQUARE WITH UPPER LEFT QUADRANT -25F1 WHITE SQUARE WITH LOWER LEFT QUADRANT -25F2 WHITE SQUARE WITH LOWER RIGHT QUADRANT -25F3 WHITE SQUARE WITH UPPER RIGHT QUADRANT -25F4 WHITE CIRCLE WITH UPPER LEFT QUADRANT -25F5 WHITE CIRCLE WITH LOWER LEFT QUADRANT -25F6 WHITE CIRCLE WITH LOWER RIGHT QUADRANT -25F7 WHITE CIRCLE WITH UPPER RIGHT QUADRANT -@ Geometric shapes -25F8 UPPER LEFT TRIANGLE -25F9 UPPER RIGHT TRIANGLE -25FA LOWER LEFT TRIANGLE - x (right triangle - 22BF) -25FB WHITE MEDIUM SQUARE - = always (modal operator) - x (white square - 25A1) -25FC BLACK MEDIUM SQUARE - x (black square - 25A0) -25FD WHITE MEDIUM SMALL SQUARE - x (white small square - 25AB) -25FE BLACK MEDIUM SMALL SQUARE - x (black small square - 25AA) -25FF LOWER RIGHT TRIANGLE - x (right triangle - 22BF) -@@ 2600 Miscellaneous Symbols 26FF -@ Weather and astrological symbols -2600 BLACK SUN WITH RAYS - = clear weather - x (sun - 2609) -2601 CLOUD - = cloudy weather -2602 UMBRELLA - = rainy weather -2603 SNOWMAN - = snowy weather -2604 COMET -2605 BLACK STAR - x (star operator - 22C6) -2606 WHITE STAR - x (stress outlined white star - 2729) -2607 LIGHTNING -2608 THUNDERSTORM -2609 SUN - x (circled dot operator - 2299) - x (black sun with rays - 2600) - x (white sun with rays - 263C) -260A ASCENDING NODE -260B DESCENDING NODE -260C CONJUNCTION -260D OPPOSITION -@ Miscellaneous symbols -260E BLACK TELEPHONE -260F WHITE TELEPHONE -2610 BALLOT BOX - x (white square - 25A1) -2611 BALLOT BOX WITH CHECK -2612 BALLOT BOX WITH X - x (squared times - 22A0) -2613 SALTIRE - = St. Andrew's Cross - x (ballot x - 2717) -@ Weather symbol -2614 UMBRELLA WITH RAIN DROPS - = showery weather -@ Miscellaneous symbol -2615 HOT BEVERAGE - = tea or coffee, depending on locale - * can be used to indicate a wait - x (watch - 231A) - x (hourglass - 231B) -@ Japanese chess symbols -2616 WHITE SHOGI PIECE -2617 BLACK SHOGI PIECE -@ Miscellaneous symbols -2618 SHAMROCK -2619 REVERSED ROTATED FLORAL HEART BULLET - * a binding signature mark - x (rotated floral heart bullet - 2767) -@ Pointing hand symbols -261A BLACK LEFT POINTING INDEX -261B BLACK RIGHT POINTING INDEX -261C WHITE LEFT POINTING INDEX -261D WHITE UP POINTING INDEX -261E WHITE RIGHT POINTING INDEX - = fist (typographic term) -261F WHITE DOWN POINTING INDEX -@ Warning signs -2620 SKULL AND CROSSBONES - = poison -2621 CAUTION SIGN -2622 RADIOACTIVE SIGN -2623 BIOHAZARD SIGN -@ Medical and healing symbols -2624 CADUCEUS - x (staff of aesculapius - 2695) -2625 ANKH -@ Religious and political symbols -2626 ORTHODOX CROSS -2627 CHI RHO - = Constantine's cross, Christogram - x (coptic symbol khi ro - 2CE9) -2628 CROSS OF LORRAINE -2629 CROSS OF JERUSALEM -262A STAR AND CRESCENT -262B FARSI SYMBOL - = SYMBOL OF IRAN -262C ADI SHAKTI - = Gurmukhi khanda -262D HAMMER AND SICKLE -262E PEACE SYMBOL -262F YIN YANG - x (tibetan symbol nor bu nyis -khyil - 0FCA) -@ Yijing trigram symbols -2630 TRIGRAM FOR HEAVEN - = qian2 -2631 TRIGRAM FOR LAKE - = dui4 -2632 TRIGRAM FOR FIRE - = li2 -2633 TRIGRAM FOR THUNDER - = zhen4 -2634 TRIGRAM FOR WIND - = xun4 -2635 TRIGRAM FOR WATER - = kan3 -2636 TRIGRAM FOR MOUNTAIN - = gen4 -2637 TRIGRAM FOR EARTH - = kun1 -@ Miscellaneous symbols -2638 WHEEL OF DHARMA - x (helm symbol - 2388) -2639 WHITE FROWNING FACE -263A WHITE SMILING FACE - = have a nice day! -263B BLACK SMILING FACE -263C WHITE SUN WITH RAYS - = compass - x (sun - 2609) -@ Astrological symbols -263D FIRST QUARTER MOON -263E LAST QUARTER MOON -263F MERCURY -2640 FEMALE SIGN - = Venus -2641 EARTH - x (circled plus - 2295) -2642 MALE SIGN - = Mars -2643 JUPITER -2644 SATURN -2645 URANUS -2646 NEPTUNE -2647 PLUTO -@ Zodiacal symbols -2648 ARIES -2649 TAURUS -264A GEMINI -264B CANCER -264C LEO -264D VIRGO - = minim (alternate glyph) -264E LIBRA -264F SCORPIUS - = minim, drop -2650 SAGITTARIUS -2651 CAPRICORN -2652 AQUARIUS -2653 PISCES -@ Chess symbols -2654 WHITE CHESS KING -2655 WHITE CHESS QUEEN -2656 WHITE CHESS ROOK -2657 WHITE CHESS BISHOP -2658 WHITE CHESS KNIGHT -2659 WHITE CHESS PAWN -265A BLACK CHESS KING -265B BLACK CHESS QUEEN -265C BLACK CHESS ROOK -265D BLACK CHESS BISHOP -265E BLACK CHESS KNIGHT -265F BLACK CHESS PAWN -@ Playing card symbols -2660 BLACK SPADE SUIT -2661 WHITE HEART SUIT -2662 WHITE DIAMOND SUIT - x (white diamond - 25C7) - x (lozenge - 25CA) -2663 BLACK CLUB SUIT - = shamrock -2664 WHITE SPADE SUIT -2665 BLACK HEART SUIT - = valentine - x (heavy black heart - 2764) -2666 BLACK DIAMOND SUIT - x (black diamond - 25C6) -2667 WHITE CLUB SUIT -@ Miscellaneous symbol -2668 HOT SPRINGS -@ Musical symbols -2669 QUARTER NOTE -266A EIGHTH NOTE -266B BEAMED EIGHTH NOTES -266C BEAMED SIXTEENTH NOTES -266D MUSIC FLAT SIGN -266E MUSIC NATURAL SIGN -266F MUSIC SHARP SIGN - = z notation infix bag count - x (number sign - 0023) -@ Syriac cross symbols -@+ These symbols are used in liturgical texts of Syriac-speaking churches. -2670 WEST SYRIAC CROSS -2671 EAST SYRIAC CROSS -@ Recycling symbols -2672 UNIVERSAL RECYCLING SYMBOL - * used as generic symbol for recycling or to indicate that material is recyclable -2673 RECYCLING SYMBOL FOR TYPE-1 PLASTICS (pete) - * polyethylene terephthalate -2674 RECYCLING SYMBOL FOR TYPE-2 PLASTICS (hdpe) - * high density polyethylene -2675 RECYCLING SYMBOL FOR TYPE-3 PLASTICS (pvc) - * vinyl, polyvinyl chloride -2676 RECYCLING SYMBOL FOR TYPE-4 PLASTICS (ldpe) - * low density polyethylene -2677 RECYCLING SYMBOL FOR TYPE-5 PLASTICS (pp) - * polypropylene -2678 RECYCLING SYMBOL FOR TYPE-6 PLASTICS (ps) - * polystyrene -2679 RECYCLING SYMBOL FOR TYPE-7 PLASTICS (other) - * other plastics -267A RECYCLING SYMBOL FOR GENERIC MATERIALS - * used together with other text and labels to indicate the type of material to be recycled -267B BLACK UNIVERSAL RECYCLING SYMBOL -267C RECYCLED PAPER SYMBOL - * used to indicate 100% recycled paper content -267D PARTIALLY-RECYCLED PAPER SYMBOL - * percentage of recycled paper content indicated in overlay or next to this symbol -@ Miscellaneous symbols -267E PERMANENT PAPER SIGN -267F WHEELCHAIR SYMBOL -@ Dice -2680 DIE FACE-1 -2681 DIE FACE-2 -2682 DIE FACE-3 -2683 DIE FACE-4 -2684 DIE FACE-5 -2685 DIE FACE-6 -@ Go markers -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 -@ Yijing monogram and digram symbols -268A MONOGRAM FOR YANG -268B MONOGRAM FOR YIN -268C DIGRAM FOR GREATER YANG -268D DIGRAM FOR LESSER YIN -268E DIGRAM FOR LESSER YANG -268F DIGRAM FOR GREATER YIN -@ Dictionary and map symbols -2690 WHITE FLAG -2691 BLACK FLAG -2692 HAMMER AND PICK - = mining, working day (in timetables) -2693 ANCHOR - = nautical term, harbor (on maps) -2694 CROSSED SWORDS - = military term, battleground (on maps), killed in action -2695 STAFF OF AESCULAPIUS - = medical term - * both inclined or upright renderings of this symbol are common - x (caduceus - 2624) -2696 SCALES - = legal term, jurisprudence -2697 ALEMBIC - = chemical term, chemistry -2698 FLOWER - = botanical term - x (flower punctuation mark - 2055) - x (shamrock - 2618) - x (white florette - 2740) -2699 GEAR - = technology, tools -269A STAFF OF HERMES - * signifies a commercial term or commerce - * glyph shows a heraldic staff with a winged wheel -269B ATOM SYMBOL - = nuclear installation (on maps) -@ Miscellaneous symbols -269C FLEUR-DE-LIS -26A0 WARNING SIGN -26A1 HIGH VOLTAGE SIGN -@ Gender symbols -26A2 DOUBLED FEMALE SIGN - = lesbianism -26A3 DOUBLED MALE SIGN - * a glyph variant has the two circles on the same line - = male homosexuality -26A4 INTERLOCKED FEMALE AND MALE SIGN - * a glyph variant has the two circles on the same line - = bisexuality -26A5 MALE AND FEMALE SIGN - = transgendered sexuality - = hermaphrodite (in entomology) -26A6 MALE WITH STROKE SIGN - = transgendered sexuality -26A7 MALE WITH STROKE AND MALE AND FEMALE SIGN - = transgendered sexuality -26A8 VERTICAL MALE WITH STROKE SIGN - = ferrous iron sulphate (alchemy and older chemistry) -26A9 HORIZONTAL MALE WITH STROKE SIGN - = magnesium (alchemy and older chemistry) -@ Circles -26AA MEDIUM WHITE CIRCLE - = asexuality, sexless, genderless - = engaged, betrothed - * base for male or female sign -26AB MEDIUM BLACK CIRCLE - * UI symbol for record function -26AC MEDIUM SMALL WHITE CIRCLE - = engaged, betrothed (genealogy) - * can represent wedding ring -@ Genealogical symbols -26AD MARRIAGE SYMBOL - x (infinity - 221E) -26AE DIVORCE SYMBOL - x (infinity negated with vertical bar - 29DE) -26AF UNMARRIED PARTNERSHIP SYMBOL - x (double-ended multimap - 29DF) -26B0 COFFIN - = buried (genealogy) - x (white rectangle - 25AD) -26B1 FUNERAL URN - = cremated (genealogy) -@@ 2700 Dingbats 27BF -@+ ITC Zapf dingbats series 100 -@ Miscellaneous -2701 UPPER BLADE SCISSORS -2702 BLACK SCISSORS -2703 LOWER BLADE SCISSORS -2704 WHITE SCISSORS -2705 <reserved> - x (black telephone - 260E) -2706 TELEPHONE LOCATION SIGN -2707 TAPE DRIVE -2708 AIRPLANE -2709 ENVELOPE -270A <reserved> - x (black right pointing index - 261B) -270B <reserved> - x (white right pointing index - 261E) -270C VICTORY HAND -270D WRITING HAND -270E LOWER RIGHT PENCIL -270F PENCIL -2710 UPPER RIGHT PENCIL -2711 WHITE NIB -2712 BLACK NIB -2713 CHECK MARK - x (square root - 221A) -2714 HEAVY CHECK MARK -2715 MULTIPLICATION X - x (multiplication sign - 00D7) - x (box drawings light diagonal cross - 2573) -2716 HEAVY MULTIPLICATION X -2717 BALLOT X - x (saltire - 2613) -2718 HEAVY BALLOT X -@ Crosses -2719 OUTLINED GREEK CROSS -271A HEAVY GREEK CROSS -271B OPEN CENTRE CROSS -271C HEAVY OPEN CENTRE CROSS -271D LATIN CROSS -271E SHADOWED WHITE LATIN CROSS -271F OUTLINED LATIN CROSS -2720 MALTESE CROSS - * Historically, the Maltese cross took many forms; the shape shown in the Zapf Dingbats is similar to one known as the Cross Formée. -@ Stars, asterisks and snowflakes -2721 STAR OF DAVID -2722 FOUR TEARDROP-SPOKED ASTERISK -2723 FOUR BALLOON-SPOKED ASTERISK -2724 HEAVY FOUR BALLOON-SPOKED ASTERISK -2725 FOUR CLUB-SPOKED ASTERISK -2726 BLACK FOUR POINTED STAR -2727 WHITE FOUR POINTED STAR -2728 <reserved> - x (black star - 2605) -2729 STRESS OUTLINED WHITE STAR - x (white star - 2606) -272A CIRCLED WHITE STAR -272B OPEN CENTRE BLACK STAR -272C BLACK CENTRE WHITE STAR -272D OUTLINED BLACK STAR -272E HEAVY OUTLINED BLACK STAR -272F PINWHEEL STAR -2730 SHADOWED WHITE STAR -2731 HEAVY ASTERISK - x (asterisk - 002A) -2732 OPEN CENTRE ASTERISK -2733 EIGHT SPOKED ASTERISK -2734 EIGHT POINTED BLACK STAR -2735 EIGHT POINTED PINWHEEL STAR -2736 SIX POINTED BLACK STAR - = sextile -2737 EIGHT POINTED RECTILINEAR BLACK STAR -2738 HEAVY EIGHT POINTED RECTILINEAR BLACK STAR -2739 TWELVE POINTED BLACK STAR -273A SIXTEEN POINTED ASTERISK - = starburst -273B TEARDROP-SPOKED ASTERISK -273C OPEN CENTRE TEARDROP-SPOKED ASTERISK -273D HEAVY TEARDROP-SPOKED ASTERISK -273E SIX PETALLED BLACK AND WHITE FLORETTE -273F BLACK FLORETTE -2740 WHITE FLORETTE -2741 EIGHT PETALLED OUTLINED BLACK FLORETTE -2742 CIRCLED OPEN CENTRE EIGHT POINTED STAR -2743 HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK -2744 SNOWFLAKE -2745 TIGHT TRIFOLIATE SNOWFLAKE -2746 HEAVY CHEVRON SNOWFLAKE -2747 SPARKLE -2748 HEAVY SPARKLE -2749 BALLOON-SPOKED ASTERISK - = jack -274A EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -274B HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK - = turbofan -@ Miscellaneous -274C <reserved> - x (black circle - 25CF) -274D SHADOWED WHITE CIRCLE -274E <reserved> - x (black square - 25A0) -274F LOWER RIGHT DROP-SHADOWED WHITE SQUARE -2750 UPPER RIGHT DROP-SHADOWED WHITE SQUARE -2751 LOWER RIGHT SHADOWED WHITE SQUARE -2752 UPPER RIGHT SHADOWED WHITE SQUARE -2753 <reserved> - x (black up-pointing triangle - 25B2) -2754 <reserved> - x (black down-pointing triangle - 25BC) -2755 <reserved> - x (black diamond - 25C6) -2756 BLACK DIAMOND MINUS WHITE X -2757 <reserved> - x (right half black circle - 25D7) -2758 LIGHT VERTICAL BAR - x (vertical line - 007C) -2759 MEDIUM VERTICAL BAR -275A HEAVY VERTICAL BAR -@ Punctuation ornaments -275B HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT - x (left single quotation mark - 2018) -275C HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT - x (right single quotation mark - 2019) -275D HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT - x (left double quotation mark - 201C) -275E HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT - x (right double quotation mark - 201D) -2761 CURVED STEM PARAGRAPH SIGN ORNAMENT - x (pilcrow sign - 00B6) -2762 HEAVY EXCLAMATION MARK ORNAMENT - x (exclamation mark - 0021) -2763 HEAVY HEART EXCLAMATION MARK ORNAMENT -2764 HEAVY BLACK HEART - x (black heart suit - 2665) -2765 ROTATED HEAVY BLACK HEART BULLET -2766 FLORAL HEART - = Aldus leaf -2767 ROTATED FLORAL HEART BULLET - = hedera, ivy leaf - x (reversed rotated floral heart bullet - 2619) -@ Ornamental brackets -2768 MEDIUM LEFT PARENTHESIS ORNAMENT - x (left parenthesis - 0028) -2769 MEDIUM RIGHT PARENTHESIS ORNAMENT - x (right parenthesis - 0029) -276A MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT -276B MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT -276C MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT - x (left-pointing angle bracket - 2329) -276D MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT - x (right-pointing angle bracket - 232A) -276E HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT - x (single left-pointing angle quotation mark - 2039) -276F HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT - x (single right-pointing angle quotation mark - 203A) -2770 HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT -2771 HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT -2772 LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT - x (left tortoise shell bracket - 3014) -2773 LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT - x (right tortoise shell bracket - 3015) -2774 MEDIUM LEFT CURLY BRACKET ORNAMENT - x (left curly bracket - 007B) -2775 MEDIUM RIGHT CURLY BRACKET ORNAMENT - x (right curly bracket - 007D) -@ Dingbat circled digits -2776 DINGBAT NEGATIVE CIRCLED DIGIT ONE -2777 DINGBAT NEGATIVE CIRCLED DIGIT TWO -2778 DINGBAT NEGATIVE CIRCLED DIGIT THREE -2779 DINGBAT NEGATIVE CIRCLED DIGIT FOUR -277A DINGBAT NEGATIVE CIRCLED DIGIT FIVE -277B DINGBAT NEGATIVE CIRCLED DIGIT SIX -277C DINGBAT NEGATIVE CIRCLED DIGIT SEVEN -277D DINGBAT NEGATIVE CIRCLED DIGIT EIGHT -277E DINGBAT NEGATIVE CIRCLED DIGIT NINE -277F DINGBAT NEGATIVE CIRCLED NUMBER TEN -2780 DINGBAT CIRCLED SANS-SERIF DIGIT ONE -2781 DINGBAT CIRCLED SANS-SERIF DIGIT TWO -2782 DINGBAT CIRCLED SANS-SERIF DIGIT THREE -2783 DINGBAT CIRCLED SANS-SERIF DIGIT FOUR -2784 DINGBAT CIRCLED SANS-SERIF DIGIT FIVE -2785 DINGBAT CIRCLED SANS-SERIF DIGIT SIX -2786 DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN -2787 DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT -2788 DINGBAT CIRCLED SANS-SERIF DIGIT NINE -2789 DINGBAT CIRCLED SANS-SERIF NUMBER TEN -278A DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE -278B DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO -278C DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE -278D DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR -278E DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE -278F DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX -2790 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN -2791 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT -2792 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE -2793 DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN -@ Dingbat arrows -2794 HEAVY WIDE-HEADED RIGHTWARDS ARROW -2795 <reserved> - x (rightwards arrow - 2192) -2796 <reserved> - x (left right arrow - 2194) -2797 <reserved> - x (up down arrow - 2195) -2798 HEAVY SOUTH EAST ARROW -2799 HEAVY RIGHTWARDS ARROW -279A HEAVY NORTH EAST ARROW -279B DRAFTING POINT RIGHTWARDS ARROW -279C HEAVY ROUND-TIPPED RIGHTWARDS ARROW -279D TRIANGLE-HEADED RIGHTWARDS ARROW -279E HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW -279F DASHED TRIANGLE-HEADED RIGHTWARDS ARROW -27A0 HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW -27A1 BLACK RIGHTWARDS ARROW -27A2 THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD -27A3 THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD -27A4 BLACK RIGHTWARDS ARROWHEAD -27A5 HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW -27A6 HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW -27A7 SQUAT BLACK RIGHTWARDS ARROW -27A8 HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW -27A9 RIGHT-SHADED WHITE RIGHTWARDS ARROW -27AA LEFT-SHADED WHITE RIGHTWARDS ARROW -27AB BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW -27AC FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW -27AD HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27AE HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27AF NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27B1 NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27B2 CIRCLED HEAVY WHITE RIGHTWARDS ARROW -27B3 WHITE-FEATHERED RIGHTWARDS ARROW -27B4 BLACK-FEATHERED SOUTH EAST ARROW -27B5 BLACK-FEATHERED RIGHTWARDS ARROW -27B6 BLACK-FEATHERED NORTH EAST ARROW -27B7 HEAVY BLACK-FEATHERED SOUTH EAST ARROW -27B8 HEAVY BLACK-FEATHERED RIGHTWARDS ARROW -27B9 HEAVY BLACK-FEATHERED NORTH EAST ARROW -27BA TEARDROP-BARBED RIGHTWARDS ARROW -27BB HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW -27BC WEDGE-TAILED RIGHTWARDS ARROW -27BD HEAVY WEDGE-TAILED RIGHTWARDS ARROW -27BE OPEN-OUTLINED RIGHTWARDS ARROW -@@ 27C0 Miscellaneous Mathematical Symbols-A 27EF -@ Miscellaneous symbols -27C0 THREE DIMENSIONAL ANGLE - * used by Euclid -27C1 WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE - * used by Euclid -27C2 PERPENDICULAR - = orthogonal to - * relation, typeset with additional spacing - x (up tack - 22A5) -27C3 OPEN SUBSET -27C4 OPEN SUPERSET -27C5 LEFT S-SHAPED BAG DELIMITER -27C6 RIGHT S-SHAPED BAG DELIMITER -27D0 WHITE DIAMOND WITH CENTRED DOT -@ Operators -27D1 AND WITH DOT - x (logical and - 2227) - x (intersection with dot - 2A40) -27D2 ELEMENT OF OPENING UPWARDS - x (element of opening downwards - 2AD9) -27D3 LOWER RIGHT CORNER WITH DOT - = pullback - x (right floor - 230B) -27D4 UPPER LEFT CORNER WITH DOT - = pushout - x (left ceiling - 2308) -@ Database theory operators -27D5 LEFT OUTER JOIN -27D6 RIGHT OUTER JOIN -27D7 FULL OUTER JOIN - x (join - 2A1D) -@ Tacks and turnstiles -27D8 LARGE UP TACK - x (up tack - 22A5) -27D9 LARGE DOWN TACK - x (down tack - 22A4) -27DA LEFT AND RIGHT DOUBLE TURNSTILE - x (true - 22A8) - x (vertical bar double left turnstile - 2AE4) -27DB LEFT AND RIGHT TACK - x (right tack - 22A2) -27DC LEFT MULTIMAP - x (multimap - 22B8) -27DD LONG RIGHT TACK - x (right tack - 22A2) -27DE LONG LEFT TACK - x (left tack - 22A3) -27DF UP TACK WITH CIRCLE ABOVE - = radial component - x (down tack with circle below - 2AF1) -@ Modal logic operators -27E0 LOZENGE DIVIDED BY HORIZONTAL RULE - * used as form of possibility in modal logic - x (lozenge - 25CA) -27E1 WHITE CONCAVE-SIDED DIAMOND - = never (modal operator) -27E2 WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK - = was never (modal operator) -27E3 WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK - = will never be (modal operator) -27E4 WHITE SQUARE WITH LEFTWARDS TICK - = was always (modal operator) - x (white square - 25A1) -27E5 WHITE SQUARE WITH RIGHTWARDS TICK - = will always be (modal operator) -@ Mathematical brackets -27E6 MATHEMATICAL LEFT WHITE SQUARE BRACKET - = z notation left bag bracket - x (left white square bracket - 301A) -27E7 MATHEMATICAL RIGHT WHITE SQUARE BRACKET - = z notation right bag bracket - x (right white square bracket - 301B) -27E8 MATHEMATICAL LEFT ANGLE BRACKET - = bra - = z notation left sequence bracket - x (left-pointing angle bracket - 2329) - x (left angle bracket - 3008) -27E9 MATHEMATICAL RIGHT ANGLE BRACKET - = ket - = z notation right sequence bracket - x (right-pointing angle bracket - 232A) - x (right angle bracket - 3009) -27EA MATHEMATICAL LEFT DOUBLE ANGLE BRACKET - = z notation left chevron bracket - x (left double angle bracket - 300A) -27EB MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET - = z notation right chevron bracket - x (right double angle bracket - 300B) -@@ 27F0 Supplemental Arrows-A 27FF -@ Arrows -27F0 UPWARDS QUADRUPLE ARROW - x (upwards triple arrow - 290A) -27F1 DOWNWARDS QUADRUPLE ARROW - x (downwards triple arrow - 290B) -27F2 ANTICLOCKWISE GAPPED CIRCLE ARROW - x (anticlockwise open circle arrow - 21BA) - x (anticlockwise closed circle arrow - 2940) -27F3 CLOCKWISE GAPPED CIRCLE ARROW - x (clockwise open circle arrow - 21BB) - x (clockwise closed circle arrow - 2941) -27F4 RIGHT ARROW WITH CIRCLED PLUS -@ Long arrows -@+ The long arrows are used for mapping whereas the short forms would be used in limits. They are also needed for MathML to complete mapping to the ASMA sets. -27F5 LONG LEFTWARDS ARROW - x (leftwards arrow - 2190) -27F6 LONG RIGHTWARDS ARROW - x (rightwards arrow - 2192) -27F7 LONG LEFT RIGHT ARROW - x (left right arrow - 2194) -27F8 LONG LEFTWARDS DOUBLE ARROW - x (leftwards double arrow - 21D0) -27F9 LONG RIGHTWARDS DOUBLE ARROW - x (rightwards double arrow - 21D2) -27FA LONG LEFT RIGHT DOUBLE ARROW - x (left right double arrow - 21D4) -27FB LONG LEFTWARDS ARROW FROM BAR - = maps from - x (leftwards arrow from bar - 21A4) -27FC LONG RIGHTWARDS ARROW FROM BAR - = maps to - x (rightwards arrow from bar - 21A6) -27FD LONG LEFTWARDS DOUBLE ARROW FROM BAR - x (leftwards double arrow from bar - 2906) -27FE LONG RIGHTWARDS DOUBLE ARROW FROM BAR - x (rightwards double arrow from bar - 2907) -27FF LONG RIGHTWARDS SQUIGGLE ARROW - x (rightwards squiggle arrow - 21DD) -@@ 2800 Braille Patterns 28FF -@ Braille patterns -2800 BRAILLE PATTERN BLANK -2801 BRAILLE PATTERN DOTS-1 -2802 BRAILLE PATTERN DOTS-2 -2803 BRAILLE PATTERN DOTS-12 -2804 BRAILLE PATTERN DOTS-3 -2805 BRAILLE PATTERN DOTS-13 -2806 BRAILLE PATTERN DOTS-23 -2807 BRAILLE PATTERN DOTS-123 -2808 BRAILLE PATTERN DOTS-4 -2809 BRAILLE PATTERN DOTS-14 -280A BRAILLE PATTERN DOTS-24 -280B BRAILLE PATTERN DOTS-124 -280C BRAILLE PATTERN DOTS-34 -280D BRAILLE PATTERN DOTS-134 -280E BRAILLE PATTERN DOTS-234 -280F BRAILLE PATTERN DOTS-1234 -2810 BRAILLE PATTERN DOTS-5 -2811 BRAILLE PATTERN DOTS-15 -2812 BRAILLE PATTERN DOTS-25 -2813 BRAILLE PATTERN DOTS-125 -2814 BRAILLE PATTERN DOTS-35 -2815 BRAILLE PATTERN DOTS-135 -2816 BRAILLE PATTERN DOTS-235 -2817 BRAILLE PATTERN DOTS-1235 -2818 BRAILLE PATTERN DOTS-45 -2819 BRAILLE PATTERN DOTS-145 -281A BRAILLE PATTERN DOTS-245 -281B BRAILLE PATTERN DOTS-1245 -281C BRAILLE PATTERN DOTS-345 -281D BRAILLE PATTERN DOTS-1345 -281E BRAILLE PATTERN DOTS-2345 -281F BRAILLE PATTERN DOTS-12345 -2820 BRAILLE PATTERN DOTS-6 -2821 BRAILLE PATTERN DOTS-16 -2822 BRAILLE PATTERN DOTS-26 -2823 BRAILLE PATTERN DOTS-126 -2824 BRAILLE PATTERN DOTS-36 -2825 BRAILLE PATTERN DOTS-136 -2826 BRAILLE PATTERN DOTS-236 -2827 BRAILLE PATTERN DOTS-1236 -2828 BRAILLE PATTERN DOTS-46 -2829 BRAILLE PATTERN DOTS-146 -282A BRAILLE PATTERN DOTS-246 -282B BRAILLE PATTERN DOTS-1246 -282C BRAILLE PATTERN DOTS-346 -282D BRAILLE PATTERN DOTS-1346 -282E BRAILLE PATTERN DOTS-2346 -282F BRAILLE PATTERN DOTS-12346 -2830 BRAILLE PATTERN DOTS-56 -2831 BRAILLE PATTERN DOTS-156 -2832 BRAILLE PATTERN DOTS-256 -2833 BRAILLE PATTERN DOTS-1256 -2834 BRAILLE PATTERN DOTS-356 -2835 BRAILLE PATTERN DOTS-1356 -2836 BRAILLE PATTERN DOTS-2356 -2837 BRAILLE PATTERN DOTS-12356 -2838 BRAILLE PATTERN DOTS-456 -2839 BRAILLE PATTERN DOTS-1456 -283A BRAILLE PATTERN DOTS-2456 -283B BRAILLE PATTERN DOTS-12456 -283C BRAILLE PATTERN DOTS-3456 -283D BRAILLE PATTERN DOTS-13456 -283E BRAILLE PATTERN DOTS-23456 -283F BRAILLE PATTERN DOTS-123456 -2840 BRAILLE PATTERN DOTS-7 -2841 BRAILLE PATTERN DOTS-17 -2842 BRAILLE PATTERN DOTS-27 -2843 BRAILLE PATTERN DOTS-127 -2844 BRAILLE PATTERN DOTS-37 -2845 BRAILLE PATTERN DOTS-137 -2846 BRAILLE PATTERN DOTS-237 -2847 BRAILLE PATTERN DOTS-1237 -2848 BRAILLE PATTERN DOTS-47 -2849 BRAILLE PATTERN DOTS-147 -284A BRAILLE PATTERN DOTS-247 -284B BRAILLE PATTERN DOTS-1247 -284C BRAILLE PATTERN DOTS-347 -284D BRAILLE PATTERN DOTS-1347 -284E BRAILLE PATTERN DOTS-2347 -284F BRAILLE PATTERN DOTS-12347 -2850 BRAILLE PATTERN DOTS-57 -2851 BRAILLE PATTERN DOTS-157 -2852 BRAILLE PATTERN DOTS-257 -2853 BRAILLE PATTERN DOTS-1257 -2854 BRAILLE PATTERN DOTS-357 -2855 BRAILLE PATTERN DOTS-1357 -2856 BRAILLE PATTERN DOTS-2357 -2857 BRAILLE PATTERN DOTS-12357 -2858 BRAILLE PATTERN DOTS-457 -2859 BRAILLE PATTERN DOTS-1457 -285A BRAILLE PATTERN DOTS-2457 -285B BRAILLE PATTERN DOTS-12457 -285C BRAILLE PATTERN DOTS-3457 -285D BRAILLE PATTERN DOTS-13457 -285E BRAILLE PATTERN DOTS-23457 -285F BRAILLE PATTERN DOTS-123457 -2860 BRAILLE PATTERN DOTS-67 -2861 BRAILLE PATTERN DOTS-167 -2862 BRAILLE PATTERN DOTS-267 -2863 BRAILLE PATTERN DOTS-1267 -2864 BRAILLE PATTERN DOTS-367 -2865 BRAILLE PATTERN DOTS-1367 -2866 BRAILLE PATTERN DOTS-2367 -2867 BRAILLE PATTERN DOTS-12367 -2868 BRAILLE PATTERN DOTS-467 -2869 BRAILLE PATTERN DOTS-1467 -286A BRAILLE PATTERN DOTS-2467 -286B BRAILLE PATTERN DOTS-12467 -286C BRAILLE PATTERN DOTS-3467 -286D BRAILLE PATTERN DOTS-13467 -286E BRAILLE PATTERN DOTS-23467 -286F BRAILLE PATTERN DOTS-123467 -2870 BRAILLE PATTERN DOTS-567 -2871 BRAILLE PATTERN DOTS-1567 -2872 BRAILLE PATTERN DOTS-2567 -2873 BRAILLE PATTERN DOTS-12567 -2874 BRAILLE PATTERN DOTS-3567 -2875 BRAILLE PATTERN DOTS-13567 -2876 BRAILLE PATTERN DOTS-23567 -2877 BRAILLE PATTERN DOTS-123567 -2878 BRAILLE PATTERN DOTS-4567 -2879 BRAILLE PATTERN DOTS-14567 -287A BRAILLE PATTERN DOTS-24567 -287B BRAILLE PATTERN DOTS-124567 -287C BRAILLE PATTERN DOTS-34567 -287D BRAILLE PATTERN DOTS-134567 -287E BRAILLE PATTERN DOTS-234567 -287F BRAILLE PATTERN DOTS-1234567 -2880 BRAILLE PATTERN DOTS-8 -2881 BRAILLE PATTERN DOTS-18 -2882 BRAILLE PATTERN DOTS-28 -2883 BRAILLE PATTERN DOTS-128 -2884 BRAILLE PATTERN DOTS-38 -2885 BRAILLE PATTERN DOTS-138 -2886 BRAILLE PATTERN DOTS-238 -2887 BRAILLE PATTERN DOTS-1238 -2888 BRAILLE PATTERN DOTS-48 -2889 BRAILLE PATTERN DOTS-148 -288A BRAILLE PATTERN DOTS-248 -288B BRAILLE PATTERN DOTS-1248 -288C BRAILLE PATTERN DOTS-348 -288D BRAILLE PATTERN DOTS-1348 -288E BRAILLE PATTERN DOTS-2348 -288F BRAILLE PATTERN DOTS-12348 -2890 BRAILLE PATTERN DOTS-58 -2891 BRAILLE PATTERN DOTS-158 -2892 BRAILLE PATTERN DOTS-258 -2893 BRAILLE PATTERN DOTS-1258 -2894 BRAILLE PATTERN DOTS-358 -2895 BRAILLE PATTERN DOTS-1358 -2896 BRAILLE PATTERN DOTS-2358 -2897 BRAILLE PATTERN DOTS-12358 -2898 BRAILLE PATTERN DOTS-458 -2899 BRAILLE PATTERN DOTS-1458 -289A BRAILLE PATTERN DOTS-2458 -289B BRAILLE PATTERN DOTS-12458 -289C BRAILLE PATTERN DOTS-3458 -289D BRAILLE PATTERN DOTS-13458 -289E BRAILLE PATTERN DOTS-23458 -289F BRAILLE PATTERN DOTS-123458 -28A0 BRAILLE PATTERN DOTS-68 -28A1 BRAILLE PATTERN DOTS-168 -28A2 BRAILLE PATTERN DOTS-268 -28A3 BRAILLE PATTERN DOTS-1268 -28A4 BRAILLE PATTERN DOTS-368 -28A5 BRAILLE PATTERN DOTS-1368 -28A6 BRAILLE PATTERN DOTS-2368 -28A7 BRAILLE PATTERN DOTS-12368 -28A8 BRAILLE PATTERN DOTS-468 -28A9 BRAILLE PATTERN DOTS-1468 -28AA BRAILLE PATTERN DOTS-2468 -28AB BRAILLE PATTERN DOTS-12468 -28AC BRAILLE PATTERN DOTS-3468 -28AD BRAILLE PATTERN DOTS-13468 -28AE BRAILLE PATTERN DOTS-23468 -28AF BRAILLE PATTERN DOTS-123468 -28B0 BRAILLE PATTERN DOTS-568 -28B1 BRAILLE PATTERN DOTS-1568 -28B2 BRAILLE PATTERN DOTS-2568 -28B3 BRAILLE PATTERN DOTS-12568 -28B4 BRAILLE PATTERN DOTS-3568 -28B5 BRAILLE PATTERN DOTS-13568 -28B6 BRAILLE PATTERN DOTS-23568 -28B7 BRAILLE PATTERN DOTS-123568 -28B8 BRAILLE PATTERN DOTS-4568 -28B9 BRAILLE PATTERN DOTS-14568 -28BA BRAILLE PATTERN DOTS-24568 -28BB BRAILLE PATTERN DOTS-124568 -28BC BRAILLE PATTERN DOTS-34568 -28BD BRAILLE PATTERN DOTS-134568 -28BE BRAILLE PATTERN DOTS-234568 -28BF BRAILLE PATTERN DOTS-1234568 -28C0 BRAILLE PATTERN DOTS-78 -28C1 BRAILLE PATTERN DOTS-178 -28C2 BRAILLE PATTERN DOTS-278 -28C3 BRAILLE PATTERN DOTS-1278 -28C4 BRAILLE PATTERN DOTS-378 -28C5 BRAILLE PATTERN DOTS-1378 -28C6 BRAILLE PATTERN DOTS-2378 -28C7 BRAILLE PATTERN DOTS-12378 -28C8 BRAILLE PATTERN DOTS-478 -28C9 BRAILLE PATTERN DOTS-1478 -28CA BRAILLE PATTERN DOTS-2478 -28CB BRAILLE PATTERN DOTS-12478 -28CC BRAILLE PATTERN DOTS-3478 -28CD BRAILLE PATTERN DOTS-13478 -28CE BRAILLE PATTERN DOTS-23478 -28CF BRAILLE PATTERN DOTS-123478 -28D0 BRAILLE PATTERN DOTS-578 -28D1 BRAILLE PATTERN DOTS-1578 -28D2 BRAILLE PATTERN DOTS-2578 -28D3 BRAILLE PATTERN DOTS-12578 -28D4 BRAILLE PATTERN DOTS-3578 -28D5 BRAILLE PATTERN DOTS-13578 -28D6 BRAILLE PATTERN DOTS-23578 -28D7 BRAILLE PATTERN DOTS-123578 -28D8 BRAILLE PATTERN DOTS-4578 -28D9 BRAILLE PATTERN DOTS-14578 -28DA BRAILLE PATTERN DOTS-24578 -28DB BRAILLE PATTERN DOTS-124578 -28DC BRAILLE PATTERN DOTS-34578 -28DD BRAILLE PATTERN DOTS-134578 -28DE BRAILLE PATTERN DOTS-234578 -28DF BRAILLE PATTERN DOTS-1234578 -28E0 BRAILLE PATTERN DOTS-678 -28E1 BRAILLE PATTERN DOTS-1678 -28E2 BRAILLE PATTERN DOTS-2678 -28E3 BRAILLE PATTERN DOTS-12678 -28E4 BRAILLE PATTERN DOTS-3678 -28E5 BRAILLE PATTERN DOTS-13678 -28E6 BRAILLE PATTERN DOTS-23678 -28E7 BRAILLE PATTERN DOTS-123678 -28E8 BRAILLE PATTERN DOTS-4678 -28E9 BRAILLE PATTERN DOTS-14678 -28EA BRAILLE PATTERN DOTS-24678 -28EB BRAILLE PATTERN DOTS-124678 -28EC BRAILLE PATTERN DOTS-34678 -28ED BRAILLE PATTERN DOTS-134678 -28EE BRAILLE PATTERN DOTS-234678 -28EF BRAILLE PATTERN DOTS-1234678 -28F0 BRAILLE PATTERN DOTS-5678 -28F1 BRAILLE PATTERN DOTS-15678 -28F2 BRAILLE PATTERN DOTS-25678 -28F3 BRAILLE PATTERN DOTS-125678 -28F4 BRAILLE PATTERN DOTS-35678 -28F5 BRAILLE PATTERN DOTS-135678 -28F6 BRAILLE PATTERN DOTS-235678 -28F7 BRAILLE PATTERN DOTS-1235678 -28F8 BRAILLE PATTERN DOTS-45678 -28F9 BRAILLE PATTERN DOTS-145678 -28FA BRAILLE PATTERN DOTS-245678 -28FB BRAILLE PATTERN DOTS-1245678 -28FC BRAILLE PATTERN DOTS-345678 -28FD BRAILLE PATTERN DOTS-1345678 -28FE BRAILLE PATTERN DOTS-2345678 -28FF BRAILLE PATTERN DOTS-12345678 -@@ 2900 Supplemental Arrows-B 297F -@ Supplemental arrows -2900 RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE - = z notation partial surjection -2901 RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE - = z notation finite surjection -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 - = maps to -2906 LEFTWARDS DOUBLE ARROW FROM BAR - = maps from - x (long leftwards arrow from bar - 27FB) -2907 RIGHTWARDS DOUBLE ARROW FROM BAR - = maps to - x (long rightwards arrow from bar - 27FC) -2908 DOWNWARDS ARROW WITH HORIZONTAL STROKE -2909 UPWARDS ARROW WITH HORIZONTAL STROKE -290A UPWARDS TRIPLE ARROW - x (upwards double arrow - 21D1) - x (upwards quadruple arrow - 27F0) -290B DOWNWARDS TRIPLE ARROW - x (downwards double arrow - 21D3) - x (downwards quadruple arrow - 27F1) -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 - = z notation partial injection -2915 RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE - = z notation finite injection -2916 RIGHTWARDS TWO-HEADED ARROW WITH TAIL - = bijective mapping - = z notation bijection -2917 RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE - = z notation surjective injection -2918 RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE - = z notation finite surjective injection -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 - x (rightwards wave arrow - 219D) -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 - x (combining anticlockwise ring overlay - 20DA) -2941 CLOCKWISE CLOSED CIRCLE ARROW - x (combining clockwise ring overlay - 20D9) -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 - x (superset of - 2283) -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 -@ Fish tails -297C LEFT FISH TAIL -297D RIGHT FISH TAIL -297E UP FISH TAIL -297F DOWN FISH TAIL -@@ 2980 Miscellaneous Mathematical Symbols-B 29FF -@ Miscellaneous mathematical symbols -2980 TRIPLE VERTICAL BAR DELIMITER - x (triple vertical bar binary relation - 2AF4) - x (large triple vertical bar operator - 2AFC) -2981 Z NOTATION SPOT - * medium-small-sized black circle - x (bullet operator - 2219) - x (black circle - 25CF) -2982 Z NOTATION TYPE COLON - x (tibetan sign rnam bcad - 0F7F) -@ Brackets -2983 LEFT WHITE CURLY BRACKET -2984 RIGHT WHITE CURLY BRACKET -2985 LEFT WHITE PARENTHESIS - x (fullwidth left white parenthesis - FF5F) -2986 RIGHT WHITE PARENTHESIS - * used for Bourbakist intervals - x (fullwidth right white parenthesis - FF60) -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 - x (left tortoise shell bracket - 3014) - x (left white tortoise shell bracket - 3018) -2998 RIGHT BLACK TORTOISE SHELL BRACKET -@ Fences -2999 DOTTED FENCE - * four close dots vertical -299A VERTICAL ZIGZAG LINE - x (wavy line - 2307) -@ Angles -299B MEASURED ANGLE OPENING LEFT - x (measured angle - 2221) -299C RIGHT ANGLE VARIANT WITH SQUARE - x (right angle - 221F) -299D MEASURED RIGHT ANGLE WITH DOT -299E ANGLE WITH S INSIDE -299F ACUTE ANGLE -29A0 SPHERICAL ANGLE OPENING LEFT - x (spherical angle - 2222) -29A1 SPHERICAL ANGLE OPENING UP -29A2 TURNED ANGLE - x (angle - 2220) -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 -@ Empty sets -29B0 REVERSED EMPTY SET - x (empty set - 2205) - x (apl functional symbol circle backslash - 2349) -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 -@ Circle symbols -29B5 CIRCLE WITH HORIZONTAL BAR - x (circled minus - 2296) -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 - x (circled times - 2297) -29BC CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN -29BD UP ARROW THROUGH CIRCLE -29BE CIRCLED WHITE BULLET - x (circled ring operator - 229A) - x (apl functional symbol circle jot - 233E) - x (bullseye - 25CE) -29BF CIRCLED BULLET - * forms part of a graduated set of circles with enclosed black circle of different sizes - x (circled dot operator - 2299) - x (fisheye - 25C9) - x (n-ary circled dot operator - 2A00) -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 -@ Square symbols -29C4 SQUARED RISING DIAGONAL SLASH - x (apl functional symbol quad slash - 2341) - x (masu mark - 303C) -29C5 SQUARED FALLING DIAGONAL SLASH - x (apl functional symbol quad backslash - 2342) -29C6 SQUARED ASTERISK -29C7 SQUARED SMALL CIRCLE - x (apl functional symbol quad jot - 233B) -29C8 SQUARED SQUARE -29C9 TWO JOINED SQUARES -@ Triangle symbols -29CA TRIANGLE WITH DOT ABOVE -29CB TRIANGLE WITH UNDERBAR -29CC S IN TRIANGLE -29CD TRIANGLE WITH SERIFS AT BOTTOM - x (white up-pointing triangle - 25B3) -29CE RIGHT TRIANGLE ABOVE LEFT TRIANGLE -29CF LEFT TRIANGLE BESIDE VERTICAL BAR -29D0 VERTICAL BAR BESIDE RIGHT TRIANGLE -@ Bowtie symbols -29D1 BOWTIE WITH LEFT HALF BLACK - x (bowtie - 22C8) -29D2 BOWTIE WITH RIGHT HALF BLACK -29D3 BLACK BOWTIE -29D4 TIMES WITH LEFT HALF BLACK - x (left normal factor semidirect product - 22C9) -29D5 TIMES WITH RIGHT HALF BLACK - x (right normal factor semidirect product - 22CA) -29D6 WHITE HOURGLASS - = vertical bowtie - = white framus - x (hourglass - 231B) -29D7 BLACK HOURGLASS -@ Fences -29D8 LEFT WIGGLY FENCE - x (presentation form for vertical wavy low line - FE34) -29D9 RIGHT WIGGLY FENCE -29DA LEFT DOUBLE WIGGLY FENCE -29DB RIGHT DOUBLE WIGGLY FENCE -@ Miscellaneous mathematical symbols -29DC INCOMPLETE INFINITY - = ISOtech entity ⧜ - x (infinity - 221E) -29DD TIE OVER INFINITY -29DE INFINITY NEGATED WITH VERTICAL BAR -29DF DOUBLE-ENDED MULTIMAP - x (multimap - 22B8) -29E0 SQUARE WITH CONTOURED OUTLINE - = D'Alembertian - x (lower right drop-shadowed white square - 274F) -29E1 INCREASES AS - x (normal subgroup of or equal to - 22B4) -29E2 SHUFFLE PRODUCT - x (z notation bag membership - 22FF) -@ Relations -29E3 EQUALS SIGN AND SLANTED PARALLEL - x (number sign - 0023) - x (equal and parallel to - 22D5) -29E4 EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE -29E5 IDENTICAL TO AND SLANTED PARALLEL - x (triple horizontal bar with double vertical stroke - 2A68) -29E6 GLEICH STARK - = tautological equivalent -@ Miscellaneous mathematical symbols -29E7 THERMODYNAMIC - * vertical bar crossed by two horizontals - x (not equal to - 2260) -29E8 DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK - x (up-pointing triangle with left half black - 25ED) -29E9 DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK - x (up-pointing triangle with right half black - 25EE) -29EA BLACK DIAMOND WITH DOWN ARROW -29EB BLACK LOZENGE - x (lozenge - 25CA) -29EC WHITE CIRCLE WITH DOWN ARROW -29ED BLACK CIRCLE WITH DOWN ARROW -@ Error bar symbols -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 -@ Miscellaneous mathematical symbols -29F4 RULE-DELAYED - = colon right arrow -29F5 REVERSE SOLIDUS OPERATOR - x (reverse solidus - 005C) - x (set minus - 2216) -29F6 SOLIDUS WITH OVERBAR -29F7 REVERSE SOLIDUS WITH HORIZONTAL STROKE -@ Large operators -29F8 BIG SOLIDUS - x (division slash - 2215) -29F9 BIG REVERSE SOLIDUS - = z notation schema hiding - x (set minus - 2216) -@ Specialized plus sign operators -29FA DOUBLE PLUS -29FB TRIPLE PLUS -@ Brackets -29FC LEFT-POINTING CURVED ANGLE BRACKET - x (precedes - 227A) - x (left-pointing angle bracket - 2329) -29FD RIGHT-POINTING CURVED ANGLE BRACKET - x (succeeds - 227B) - x (right-pointing angle bracket - 232A) -@ Miscellaneous mathematical symbols -29FE TINY - x (plus sign - 002B) -29FF MINY - x (minus sign - 2212) -@@ 2A00 Supplemental Mathematical Operators 2AFF -@ N-ary operators -2A00 N-ARY CIRCLED DOT OPERATOR - x (circled dot operator - 2299) - x (fisheye - 25C9) -2A01 N-ARY CIRCLED PLUS OPERATOR - x (circled plus - 2295) -2A02 N-ARY CIRCLED TIMES OPERATOR - x (circled times - 2297) -2A03 N-ARY UNION OPERATOR WITH DOT -2A04 N-ARY UNION OPERATOR WITH PLUS - x (multiset union - 228E) -2A05 N-ARY SQUARE INTERSECTION OPERATOR - x (square cap - 2293) -2A06 N-ARY SQUARE UNION OPERATOR - x (square cup - 2294) -2A07 TWO LOGICAL AND OPERATOR - = merge - x (two intersecting logical and - 2A55) -2A08 TWO LOGICAL OR OPERATOR - x (two intersecting logical or - 2A56) -2A09 N-ARY TIMES OPERATOR - x (multiplication sign - 00D7) -@ Summations and integrals -2A0A MODULO TWO SUM - x (n-ary summation - 2211) -2A0B SUMMATION WITH INTEGRAL -2A0C QUADRUPLE INTEGRAL OPERATOR - x (triple integral - 222D) - # 222B 222B 222B 222B -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 - x (contour integral - 222E) -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 - = upper integral -2A1C INTEGRAL WITH UNDERBAR - = lower integral -@ Miscellaneous large operators -2A1D JOIN - = large bowtie - * relational database theory - x (bowtie - 22C8) - x (full outer join - 27D7) -2A1E LARGE LEFT TRIANGLE OPERATOR - * relational database theory - x (white left-pointing triangle - 25C1) -2A1F Z NOTATION SCHEMA COMPOSITION - x (z notation relational composition - 2A3E) -2A20 Z NOTATION SCHEMA PIPING - x (much greater-than - 226B) -2A21 Z NOTATION SCHEMA PROJECTION - x (upwards harpoon with barb rightwards - 21BE) -@ Plus and minus sign operators -2A22 PLUS SIGN WITH SMALL CIRCLE ABOVE -2A23 PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE -2A24 PLUS SIGN WITH TILDE ABOVE - = positive difference or sum -2A25 PLUS SIGN WITH DOT BELOW - x (dot plus - 2214) -2A26 PLUS SIGN WITH TILDE BELOW - = sum or positive difference -2A27 PLUS SIGN WITH SUBSCRIPT TWO - = nim-addition -2A28 PLUS SIGN WITH BLACK TRIANGLE -2A29 MINUS SIGN WITH COMMA ABOVE -2A2A MINUS SIGN WITH DOT BELOW - x (dot minus - 2238) -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 -@ Multiplication and division sign operators -2A2F VECTOR OR CROSS PRODUCT - x (multiplication sign - 00D7) -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 -@ Miscellaneous mathematical operators -2A39 PLUS SIGN IN TRIANGLE -2A3A MINUS SIGN IN TRIANGLE -2A3B MULTIPLICATION SIGN IN TRIANGLE -2A3C INTERIOR PRODUCT - x (right floor - 230B) -2A3D RIGHTHAND INTERIOR PRODUCT - x (left floor - 230A) - x (turned not sign - 2319) -2A3E Z NOTATION RELATIONAL COMPOSITION - x (z notation schema composition - 2A1F) -2A3F AMALGAMATION OR COPRODUCT - x (n-ary coproduct - 2210) -@ Intersections and unions -2A40 INTERSECTION WITH DOT - x (logical and - 2227) - x (and with dot - 27D1) -2A41 UNION WITH MINUS SIGN - = z notation bag subtraction - x (multiset union - 228E) -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 - x (union - 222A) -2A4D CLOSED INTERSECTION WITH SERIFS - x (intersection - 2229) -2A4E DOUBLE SQUARE INTERSECTION -2A4F DOUBLE SQUARE UNION -2A50 CLOSED UNION WITH SERIFS AND SMASH PRODUCT -@ Logical ands and ors -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 - x (two logical and operator - 2A07) -2A56 TWO INTERSECTING LOGICAL OR - x (two logical or operator - 2A08) -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 - x (perspective - 2306) -2A5F LOGICAL AND WITH UNDERBAR -2A60 LOGICAL AND WITH DOUBLE UNDERBAR - x (estimates - 2259) -2A61 SMALL VEE WITH UNDERBAR - x (equiangular to - 225A) -2A62 LOGICAL OR WITH DOUBLE OVERBAR -2A63 LOGICAL OR WITH DOUBLE UNDERBAR - x (equiangular to - 225A) -@ Miscellaneous mathematical operators -2A64 Z NOTATION DOMAIN ANTIRESTRICTION -2A65 Z NOTATION RANGE ANTIRESTRICTION - x (conical taper - 2332) -@ Relational operators -2A66 EQUALS SIGN WITH DOT BELOW - x (approaches the limit - 2250) -2A67 IDENTICAL WITH DOT ABOVE -2A68 TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE - = identical and parallel to - x (equal and parallel to - 22D5) - x (identical to and slanted parallel - 29E5) -2A69 TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE -2A6A TILDE OPERATOR WITH DOT ABOVE -2A6B TILDE OPERATOR WITH RISING DOTS - x (homothetic - 223B) -2A6C SIMILAR MINUS SIMILAR -2A6D CONGRUENT WITH DOT ABOVE - x (approximately equal to - 2245) -2A6E EQUALS WITH ASTERISK - x (star equals - 225B) -2A6F ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT -2A70 APPROXIMATELY EQUAL OR EQUAL TO -2A71 EQUALS SIGN ABOVE PLUS SIGN - * black stands slightly better (chess notation) -2A72 PLUS SIGN ABOVE EQUALS SIGN - * white stands slightly better (chess notation) -2A73 EQUALS SIGN ABOVE TILDE OPERATOR -2A74 DOUBLE COLON EQUAL - # 003A 003A 003D -2A75 TWO CONSECUTIVE EQUALS SIGNS - # 003D 003D -2A76 THREE CONSECUTIVE EQUALS SIGNS - # 003D 003D 003D -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 - x (less-than or equal to - 2264) -2A7E GREATER-THAN OR SLANTED EQUAL TO - x (greater-than or equal to - 2265) -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 - x (less-than but not equal to - 2268) -2A88 GREATER-THAN AND SINGLE-LINE NOT EQUAL TO - x (greater-than but not equal to - 2269) -2A89 LESS-THAN AND NOT APPROXIMATE -2A8A GREATER-THAN AND NOT APPROXIMATE -2A8B LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN - x (less-than equal to or greater-than - 22DA) -2A8C GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN - x (greater-than equal to or less-than - 22DB) -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 - x (equal to or less-than - 22DC) -2A96 SLANTED EQUAL TO OR GREATER-THAN - x (equal to or greater-than - 22DD) -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 - x (equal to or less-than - 22DC) -2A9A DOUBLE-LINE EQUAL TO OR GREATER-THAN - x (equal to or greater-than - 22DD) -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 - = absolute continuity - x (much less-than - 226A) -2AA2 DOUBLE NESTED GREATER-THAN - x (much greater-than - 226B) -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 - x (difference between - 224F) -2AAF PRECEDES ABOVE SINGLE-LINE EQUALS SIGN - x (precedes or equal to - 227C) -2AB0 SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN - x (succeeds or equal to - 227D) -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 -@ Subset and superset relations -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 - x (subset of - 2282) -2AD0 CLOSED SUPERSET - x (superset of - 2283) -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 -@ Forks -2AD9 ELEMENT OF OPENING DOWNWARDS - x (element of - 2208) - x (element of opening upwards - 27D2) -2ADA PITCHFORK WITH TEE TOP - x (pitchfork - 22D4) -2ADB TRANSVERSAL INTERSECTION - x (pitchfork - 22D4) -2ADC FORKING (not independent) - = not independent - * an equational logic symbol, not a computing science symbol - * non-independence (original concept) is related to forking - : 2ADD 0338 -2ADD NONFORKING (independent) - = independent - * an equational logic symbol, not a computing science symbol - * independence (original concept) is related to non-forking -@ Tacks and turnstiles -2ADE SHORT LEFT TACK - x (left tack - 22A3) -2ADF SHORT DOWN TACK - x (down tack - 22A4) -2AE0 SHORT UP TACK - x (up tack - 22A5) -2AE1 PERPENDICULAR WITH S -2AE2 VERTICAL BAR TRIPLE RIGHT TURNSTILE - = ordinarily satisfies -2AE3 DOUBLE VERTICAL BAR LEFT TURNSTILE - x (forces - 22A9) -2AE4 VERTICAL BAR DOUBLE LEFT TURNSTILE - x (true - 22A8) -2AE5 DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE -2AE6 LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL - x (forces - 22A9) -2AE7 SHORT DOWN TACK WITH OVERBAR - x (down tack - 22A4) - x (apl functional symbol up tack overbar - 2351) -2AE8 SHORT UP TACK WITH UNDERBAR - x (up tack - 22A5) - x (apl functional symbol down tack underbar - 234A) -2AE9 SHORT UP TACK ABOVE SHORT DOWN TACK -2AEA DOUBLE DOWN TACK -2AEB DOUBLE UP TACK - = independence - * probability theory -2AEC DOUBLE STROKE NOT SIGN - x (not sign - 00AC) -2AED REVERSED DOUBLE STROKE NOT SIGN - x (reversed not sign - 2310) -@ Vertical line operators -2AEE DOES NOT DIVIDE WITH REVERSED NEGATION SLASH - x (does not divide - 2224) -2AEF VERTICAL LINE WITH CIRCLE ABOVE -2AF0 VERTICAL LINE WITH CIRCLE BELOW -2AF1 DOWN TACK WITH CIRCLE BELOW - = necessarily satisfies - x (up tack with circle above - 27DF) -2AF2 PARALLEL WITH HORIZONTAL STROKE - x (not parallel to - 2226) -2AF3 PARALLEL WITH TILDE OPERATOR -2AF4 TRIPLE VERTICAL BAR BINARY RELATION - = interleave - x (triple vertical bar delimiter - 2980) -2AF5 TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE -@ Miscellaneous mathematical operator -2AF6 TRIPLE COLON OPERATOR - * logic - x (tricolon - 205D) - x (vertical ellipsis - 22EE) -@ Relations -2AF7 TRIPLE NESTED LESS-THAN - x (very much less-than - 22D8) -2AF8 TRIPLE NESTED GREATER-THAN - x (very much greater-than - 22D9) -2AF9 DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO - x (less-than over equal to - 2266) -2AFA DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO - x (greater-than over equal to - 2267) -2AFB TRIPLE SOLIDUS BINARY RELATION - x (triple vertical bar binary relation - 2AF4) -@ Operators -2AFC LARGE TRIPLE VERTICAL BAR OPERATOR - * often n-ary - x (triple vertical bar binary relation - 2AF4) - x (triple vertical bar delimiter - 2980) -2AFD DOUBLE SOLIDUS OPERATOR - x (parallel to - 2225) -2AFE WHITE VERTICAL BAR - = Dijkstra choice -2AFF N-ARY WHITE VERTICAL BAR - = n-ary Dijkstra choice -@@ 2B00 Miscellaneous Symbols and Arrows 2BFF -@ White and black arrows -@+ Other white and black arrows to complete this set can be found in the Arrows and Dingbats blocks. -2B00 NORTH EAST WHITE ARROW -2B01 NORTH WEST WHITE ARROW -2B02 SOUTH EAST WHITE ARROW -2B03 SOUTH WEST WHITE ARROW -2B04 LEFT RIGHT WHITE ARROW -2B05 LEFTWARDS BLACK ARROW -2B06 UPWARDS BLACK ARROW -2B07 DOWNWARDS BLACK ARROW -2B08 NORTH EAST BLACK ARROW -2B09 NORTH WEST BLACK ARROW -2B0A SOUTH EAST BLACK ARROW -2B0B SOUTH WEST BLACK ARROW -2B0C LEFT RIGHT BLACK ARROW -2B0D UP DOWN BLACK ARROW -@ Arrows with bent tips -2B0E RIGHTWARDS ARROW WITH TIP DOWNWARDS -2B0F RIGHTWARDS ARROW WITH TIP UPWARDS -2B10 LEFTWARDS ARROW WITH TIP DOWNWARDS -2B11 LEFTWARDS ARROW WITH TIP UPWARDS -@ Squares -2B12 SQUARE WITH TOP HALF BLACK - x (square with left half black - 25E7) -2B13 SQUARE WITH BOTTOM HALF BLACK -@@ 2C00 Glagolitic 2C5F -@ Capital letters -2C00 GLAGOLITIC CAPITAL LETTER AZU -2C01 GLAGOLITIC CAPITAL LETTER BUKY -2C02 GLAGOLITIC CAPITAL LETTER VEDE -2C03 GLAGOLITIC CAPITAL LETTER GLAGOLI -2C04 GLAGOLITIC CAPITAL LETTER DOBRO -2C05 GLAGOLITIC CAPITAL LETTER YESTU -2C06 GLAGOLITIC CAPITAL LETTER ZHIVETE -2C07 GLAGOLITIC CAPITAL LETTER DZELO -2C08 GLAGOLITIC CAPITAL LETTER ZEMLJA -2C09 GLAGOLITIC CAPITAL LETTER IZHE -2C0A GLAGOLITIC CAPITAL LETTER INITIAL IZHE -2C0B GLAGOLITIC CAPITAL LETTER I -2C0C GLAGOLITIC CAPITAL LETTER DJERVI -2C0D GLAGOLITIC CAPITAL LETTER KAKO -2C0E GLAGOLITIC CAPITAL LETTER LJUDIJE -2C0F GLAGOLITIC CAPITAL LETTER MYSLITE -2C10 GLAGOLITIC CAPITAL LETTER NASHI -2C11 GLAGOLITIC CAPITAL LETTER ONU -2C12 GLAGOLITIC CAPITAL LETTER POKOJI -2C13 GLAGOLITIC CAPITAL LETTER RITSI -2C14 GLAGOLITIC CAPITAL LETTER SLOVO -2C15 GLAGOLITIC CAPITAL LETTER TVRIDO -2C16 GLAGOLITIC CAPITAL LETTER UKU -2C17 GLAGOLITIC CAPITAL LETTER FRITU -2C18 GLAGOLITIC CAPITAL LETTER HERU -2C19 GLAGOLITIC CAPITAL LETTER OTU -2C1A GLAGOLITIC CAPITAL LETTER PE -2C1B GLAGOLITIC CAPITAL LETTER SHTA -2C1C GLAGOLITIC CAPITAL LETTER TSI -2C1D GLAGOLITIC CAPITAL LETTER CHRIVI -2C1E GLAGOLITIC CAPITAL LETTER SHA -2C1F GLAGOLITIC CAPITAL LETTER YERU -2C20 GLAGOLITIC CAPITAL LETTER YERI -2C21 GLAGOLITIC CAPITAL LETTER YATI -2C22 GLAGOLITIC CAPITAL LETTER SPIDERY HA -2C23 GLAGOLITIC CAPITAL LETTER YU -2C24 GLAGOLITIC CAPITAL LETTER SMALL YUS -2C25 GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL -2C26 GLAGOLITIC CAPITAL LETTER YO -2C27 GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS -2C28 GLAGOLITIC CAPITAL LETTER BIG YUS -2C29 GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS -2C2A GLAGOLITIC CAPITAL LETTER FITA -2C2B GLAGOLITIC CAPITAL LETTER IZHITSA -2C2C GLAGOLITIC CAPITAL LETTER SHTAPIC -2C2D GLAGOLITIC CAPITAL LETTER TROKUTASTI A -2C2E GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -@ Small letters -2C30 GLAGOLITIC SMALL LETTER AZU -2C31 GLAGOLITIC SMALL LETTER BUKY -2C32 GLAGOLITIC SMALL LETTER VEDE -2C33 GLAGOLITIC SMALL LETTER GLAGOLI -2C34 GLAGOLITIC SMALL LETTER DOBRO -2C35 GLAGOLITIC SMALL LETTER YESTU -2C36 GLAGOLITIC SMALL LETTER ZHIVETE -2C37 GLAGOLITIC SMALL LETTER DZELO -2C38 GLAGOLITIC SMALL LETTER ZEMLJA -2C39 GLAGOLITIC SMALL LETTER IZHE -2C3A GLAGOLITIC SMALL LETTER INITIAL IZHE -2C3B GLAGOLITIC SMALL LETTER I -2C3C GLAGOLITIC SMALL LETTER DJERVI -2C3D GLAGOLITIC SMALL LETTER KAKO -2C3E GLAGOLITIC SMALL LETTER LJUDIJE -2C3F GLAGOLITIC SMALL LETTER MYSLITE -2C40 GLAGOLITIC SMALL LETTER NASHI -2C41 GLAGOLITIC SMALL LETTER ONU -2C42 GLAGOLITIC SMALL LETTER POKOJI -2C43 GLAGOLITIC SMALL LETTER RITSI -2C44 GLAGOLITIC SMALL LETTER SLOVO -2C45 GLAGOLITIC SMALL LETTER TVRIDO -2C46 GLAGOLITIC SMALL LETTER UKU -2C47 GLAGOLITIC SMALL LETTER FRITU -2C48 GLAGOLITIC SMALL LETTER HERU -2C49 GLAGOLITIC SMALL LETTER OTU -2C4A GLAGOLITIC SMALL LETTER PE -2C4B GLAGOLITIC SMALL LETTER SHTA -2C4C GLAGOLITIC SMALL LETTER TSI -2C4D GLAGOLITIC SMALL LETTER CHRIVI -2C4E GLAGOLITIC SMALL LETTER SHA -2C4F GLAGOLITIC SMALL LETTER YERU -2C50 GLAGOLITIC SMALL LETTER YERI -2C51 GLAGOLITIC SMALL LETTER YATI -2C52 GLAGOLITIC SMALL LETTER SPIDERY HA -2C53 GLAGOLITIC SMALL LETTER YU -2C54 GLAGOLITIC SMALL LETTER SMALL YUS -2C55 GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL -2C56 GLAGOLITIC SMALL LETTER YO -2C57 GLAGOLITIC SMALL LETTER IOTATED SMALL YUS -2C58 GLAGOLITIC SMALL LETTER BIG YUS -2C59 GLAGOLITIC SMALL LETTER IOTATED BIG YUS -2C5A GLAGOLITIC SMALL LETTER FITA -2C5B GLAGOLITIC SMALL LETTER IZHITSA -2C5C GLAGOLITIC SMALL LETTER SHTAPIC -2C5D GLAGOLITIC SMALL LETTER TROKUTASTI A -2C5E GLAGOLITIC SMALL LETTER LATINATE MYSLITE -@@ 2C80 Coptic 2CFF -@+ Other Coptic letters derived from Demotic are encoded in the Greek and Coptic block. -@ Bohairic Coptic letters -2C80 COPTIC CAPITAL LETTER ALFA -2C81 COPTIC SMALL LETTER ALFA -2C82 COPTIC CAPITAL LETTER VIDA -2C83 COPTIC SMALL LETTER VIDA -2C84 COPTIC CAPITAL LETTER GAMMA -2C85 COPTIC SMALL LETTER GAMMA -2C86 COPTIC CAPITAL LETTER DALDA -2C87 COPTIC SMALL LETTER DALDA -2C88 COPTIC CAPITAL LETTER EIE -2C89 COPTIC SMALL LETTER EIE -2C8A COPTIC CAPITAL LETTER SOU -2C8B COPTIC SMALL LETTER SOU -2C8C COPTIC CAPITAL LETTER ZATA -2C8D COPTIC SMALL LETTER ZATA -2C8E COPTIC CAPITAL LETTER HATE -2C8F COPTIC SMALL LETTER HATE -2C90 COPTIC CAPITAL LETTER THETHE -2C91 COPTIC SMALL LETTER THETHE -2C92 COPTIC CAPITAL LETTER IAUDA -2C93 COPTIC SMALL LETTER IAUDA -2C94 COPTIC CAPITAL LETTER KAPA -2C95 COPTIC SMALL LETTER KAPA -2C96 COPTIC CAPITAL LETTER LAULA -2C97 COPTIC SMALL LETTER LAULA -2C98 COPTIC CAPITAL LETTER MI -2C99 COPTIC SMALL LETTER MI -2C9A COPTIC CAPITAL LETTER NI -2C9B COPTIC SMALL LETTER NI -2C9C COPTIC CAPITAL LETTER KSI -2C9D COPTIC SMALL LETTER KSI -2C9E COPTIC CAPITAL LETTER O -2C9F COPTIC SMALL LETTER O -2CA0 COPTIC CAPITAL LETTER PI -2CA1 COPTIC SMALL LETTER PI -2CA2 COPTIC CAPITAL LETTER RO -2CA3 COPTIC SMALL LETTER RO -2CA4 COPTIC CAPITAL LETTER SIMA -2CA5 COPTIC SMALL LETTER SIMA -2CA6 COPTIC CAPITAL LETTER TAU -2CA7 COPTIC SMALL LETTER TAU -2CA8 COPTIC CAPITAL LETTER UA -2CA9 COPTIC SMALL LETTER UA -2CAA COPTIC CAPITAL LETTER FI -2CAB COPTIC SMALL LETTER FI -2CAC COPTIC CAPITAL LETTER KHI -2CAD COPTIC SMALL LETTER KHI -2CAE COPTIC CAPITAL LETTER PSI -2CAF COPTIC SMALL LETTER PSI -2CB0 COPTIC CAPITAL LETTER OOU -2CB1 COPTIC SMALL LETTER OOU -@ Old Coptic and dialect letters -2CB2 COPTIC CAPITAL LETTER DIALECT-P ALEF -2CB3 COPTIC SMALL LETTER DIALECT-P ALEF -2CB4 COPTIC CAPITAL LETTER OLD COPTIC AIN -2CB5 COPTIC SMALL LETTER OLD COPTIC AIN -2CB6 COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE -2CB7 COPTIC SMALL LETTER CRYPTOGRAMMIC EIE -2CB8 COPTIC CAPITAL LETTER DIALECT-P KAPA -2CB9 COPTIC SMALL LETTER DIALECT-P KAPA -2CBA COPTIC CAPITAL LETTER DIALECT-P NI -2CBB COPTIC SMALL LETTER DIALECT-P NI -2CBC COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI -2CBD COPTIC SMALL LETTER CRYPTOGRAMMIC NI -2CBE COPTIC CAPITAL LETTER OLD COPTIC OOU -2CBF COPTIC SMALL LETTER OLD COPTIC OOU -2CC0 COPTIC CAPITAL LETTER SAMPI -2CC1 COPTIC SMALL LETTER SAMPI -2CC2 COPTIC CAPITAL LETTER CROSSED SHEI -2CC3 COPTIC SMALL LETTER CROSSED SHEI -2CC4 COPTIC CAPITAL LETTER OLD COPTIC SHEI -2CC5 COPTIC SMALL LETTER OLD COPTIC SHEI -2CC6 COPTIC CAPITAL LETTER OLD COPTIC ESH -2CC7 COPTIC SMALL LETTER OLD COPTIC ESH -2CC8 COPTIC CAPITAL LETTER AKHMIMIC KHEI -2CC9 COPTIC SMALL LETTER AKHMIMIC KHEI -2CCA COPTIC CAPITAL LETTER DIALECT-P HORI -2CCB COPTIC SMALL LETTER DIALECT-P HORI -2CCC COPTIC CAPITAL LETTER OLD COPTIC HORI -2CCD COPTIC SMALL LETTER OLD COPTIC HORI -2CCE COPTIC CAPITAL LETTER OLD COPTIC HA -2CCF COPTIC SMALL LETTER OLD COPTIC HA -2CD0 COPTIC CAPITAL LETTER L-SHAPED HA -2CD1 COPTIC SMALL LETTER L-SHAPED HA -2CD2 COPTIC CAPITAL LETTER OLD COPTIC HEI -2CD3 COPTIC SMALL LETTER OLD COPTIC HEI -2CD4 COPTIC CAPITAL LETTER OLD COPTIC HAT -2CD5 COPTIC SMALL LETTER OLD COPTIC HAT -2CD6 COPTIC CAPITAL LETTER OLD COPTIC GANGIA -2CD7 COPTIC SMALL LETTER OLD COPTIC GANGIA -2CD8 COPTIC CAPITAL LETTER OLD COPTIC DJA -2CD9 COPTIC SMALL LETTER OLD COPTIC DJA -2CDA COPTIC CAPITAL LETTER OLD COPTIC SHIMA -2CDB COPTIC SMALL LETTER OLD COPTIC SHIMA -@ Old Nubian letters -2CDC COPTIC CAPITAL LETTER OLD NUBIAN SHIMA -2CDD COPTIC SMALL LETTER OLD NUBIAN SHIMA -2CDE COPTIC CAPITAL LETTER OLD NUBIAN NGI -2CDF COPTIC SMALL LETTER OLD NUBIAN NGI -2CE0 COPTIC CAPITAL LETTER OLD NUBIAN NYI -2CE1 COPTIC SMALL LETTER OLD NUBIAN NYI -2CE2 COPTIC CAPITAL LETTER OLD NUBIAN WAU -2CE3 COPTIC SMALL LETTER OLD NUBIAN WAU -@ Symbols -2CE4 COPTIC SYMBOL KAI - x (greek kai symbol - 03D7) -2CE5 COPTIC SYMBOL MI RO -2CE6 COPTIC SYMBOL PI RO -2CE7 COPTIC SYMBOL STAUROS -2CE8 COPTIC SYMBOL TAU RO -2CE9 COPTIC SYMBOL KHI RO - x (chi rho - 2627) -2CEA COPTIC SYMBOL SHIMA SIMA -@ Old Nubian punctuation -2CF9 COPTIC OLD NUBIAN FULL STOP -2CFA COPTIC OLD NUBIAN DIRECT QUESTION MARK -2CFB COPTIC OLD NUBIAN INDIRECT QUESTION MARK -2CFC COPTIC OLD NUBIAN VERSE DIVIDER -@ Numeric character -2CFD COPTIC FRACTION ONE HALF -@ Punctuation -2CFE COPTIC FULL STOP -2CFF COPTIC MORPHOLOGICAL DIVIDER -@@ 2D00 Georgian Supplement 2D2F -@ Small letters (Khutsuri) -@+ This is the lowercase of the old ecclesiastical alphabet. See the Georgian block for uppercase Asomtavruli. -2D00 GEORGIAN SMALL LETTER AN (Khutsuri) -2D01 GEORGIAN SMALL LETTER BAN (Khutsuri) -2D02 GEORGIAN SMALL LETTER GAN (Khutsuri) -2D03 GEORGIAN SMALL LETTER DON (Khutsuri) -2D04 GEORGIAN SMALL LETTER EN (Khutsuri) -2D05 GEORGIAN SMALL LETTER VIN (Khutsuri) -2D06 GEORGIAN SMALL LETTER ZEN (Khutsuri) -2D07 GEORGIAN SMALL LETTER TAN (Khutsuri) -2D08 GEORGIAN SMALL LETTER IN (Khutsuri) -2D09 GEORGIAN SMALL LETTER KAN (Khutsuri) -2D0A GEORGIAN SMALL LETTER LAS (Khutsuri) -2D0B GEORGIAN SMALL LETTER MAN (Khutsuri) -2D0C GEORGIAN SMALL LETTER NAR (Khutsuri) -2D0D GEORGIAN SMALL LETTER ON (Khutsuri) -2D0E GEORGIAN SMALL LETTER PAR (Khutsuri) -2D0F GEORGIAN SMALL LETTER ZHAR (Khutsuri) -2D10 GEORGIAN SMALL LETTER RAE (Khutsuri) -2D11 GEORGIAN SMALL LETTER SAN (Khutsuri) -2D12 GEORGIAN SMALL LETTER TAR (Khutsuri) -2D13 GEORGIAN SMALL LETTER UN (Khutsuri) -2D14 GEORGIAN SMALL LETTER PHAR (Khutsuri) -2D15 GEORGIAN SMALL LETTER KHAR (Khutsuri) -2D16 GEORGIAN SMALL LETTER GHAN (Khutsuri) -2D17 GEORGIAN SMALL LETTER QAR (Khutsuri) -2D18 GEORGIAN SMALL LETTER SHIN (Khutsuri) -2D19 GEORGIAN SMALL LETTER CHIN (Khutsuri) -2D1A GEORGIAN SMALL LETTER CAN (Khutsuri) -2D1B GEORGIAN SMALL LETTER JIL (Khutsuri) -2D1C GEORGIAN SMALL LETTER CIL (Khutsuri) -2D1D GEORGIAN SMALL LETTER CHAR (Khutsuri) -2D1E GEORGIAN SMALL LETTER XAN (Khutsuri) -2D1F GEORGIAN SMALL LETTER JHAN (Khutsuri) -2D20 GEORGIAN SMALL LETTER HAE (Khutsuri) -2D21 GEORGIAN SMALL LETTER HE (Khutsuri) -2D22 GEORGIAN SMALL LETTER HIE (Khutsuri) -2D23 GEORGIAN SMALL LETTER WE (Khutsuri) -2D24 GEORGIAN SMALL LETTER HAR (Khutsuri) -2D25 GEORGIAN SMALL LETTER HOE (Khutsuri) -@@ 2D30 Tifinagh 2D7F -@ Letters -2D30 TIFINAGH LETTER YA -2D31 TIFINAGH LETTER YAB -2D32 TIFINAGH LETTER YABH -2D33 TIFINAGH LETTER YAG -2D34 TIFINAGH LETTER YAGHH -2D35 TIFINAGH LETTER BERBER ACADEMY YAJ -2D36 TIFINAGH LETTER YAJ -2D37 TIFINAGH LETTER YAD -2D38 TIFINAGH LETTER YADH -2D39 TIFINAGH LETTER YADD -2D3A TIFINAGH LETTER YADDH -2D3B TIFINAGH LETTER YEY -2D3C TIFINAGH LETTER YAF -2D3D TIFINAGH LETTER YAK -2D3E TIFINAGH LETTER TUAREG YAK -2D3F TIFINAGH LETTER YAKHH -2D40 TIFINAGH LETTER YAH (Tuareg yab) - = Tuareg yab -2D41 TIFINAGH LETTER BERBER ACADEMY YAH -2D42 TIFINAGH LETTER TUAREG YAH -2D43 TIFINAGH LETTER YAHH -2D44 TIFINAGH LETTER YAA -2D45 TIFINAGH LETTER YAKH -2D46 TIFINAGH LETTER TUAREG YAKH -2D47 TIFINAGH LETTER YAQ -2D48 TIFINAGH LETTER TUAREG YAQ -2D49 TIFINAGH LETTER YI -2D4A TIFINAGH LETTER YAZH -2D4B TIFINAGH LETTER AHAGGAR YAZH -2D4C TIFINAGH LETTER TUAREG YAZH -2D4D TIFINAGH LETTER YAL -2D4E TIFINAGH LETTER YAM -2D4F TIFINAGH LETTER YAN -2D50 TIFINAGH LETTER TUAREG YAGN -2D51 TIFINAGH LETTER TUAREG YANG -2D52 TIFINAGH LETTER YAP -2D53 TIFINAGH LETTER YU (Tuareg yaw) - = Tuareg yaw -2D54 TIFINAGH LETTER YAR -2D55 TIFINAGH LETTER YARR -2D56 TIFINAGH LETTER YAGH -2D57 TIFINAGH LETTER TUAREG YAGH -2D58 TIFINAGH LETTER AYER YAGH (Adrar yaj) - = Adrar yaj -2D59 TIFINAGH LETTER YAS -2D5A TIFINAGH LETTER YASS -2D5B TIFINAGH LETTER YASH -2D5C TIFINAGH LETTER YAT -2D5D TIFINAGH LETTER YATH -2D5E TIFINAGH LETTER YACH -2D5F TIFINAGH LETTER YATT -2D60 TIFINAGH LETTER YAV -2D61 TIFINAGH LETTER YAW -2D62 TIFINAGH LETTER YAY -2D63 TIFINAGH LETTER YAZ -2D64 TIFINAGH LETTER TAWELLEMET YAZ (harpoon yaz) - = harpoon yaz -2D65 TIFINAGH LETTER YAZZ -@ Modifier letter -2D6F TIFINAGH MODIFIER LETTER LABIALIZATION MARK (tamatart) - = tamatart - # <super> 2D61 -@@ 2D80 Ethiopic Extended 2DDF -@ Syllables for Me'en -2D80 ETHIOPIC SYLLABLE LOA -2D81 ETHIOPIC SYLLABLE MOA -2D82 ETHIOPIC SYLLABLE ROA -2D83 ETHIOPIC SYLLABLE SOA -2D84 ETHIOPIC SYLLABLE SHOA -2D85 ETHIOPIC SYLLABLE BOA -2D86 ETHIOPIC SYLLABLE TOA -2D87 ETHIOPIC SYLLABLE COA -2D88 ETHIOPIC SYLLABLE NOA -2D89 ETHIOPIC SYLLABLE NYOA -2D8A ETHIOPIC SYLLABLE GLOTTAL OA -2D8B ETHIOPIC SYLLABLE ZOA -2D8C ETHIOPIC SYLLABLE DOA -2D8D ETHIOPIC SYLLABLE DDOA -2D8E ETHIOPIC SYLLABLE JOA -2D8F ETHIOPIC SYLLABLE THOA -2D90 ETHIOPIC SYLLABLE CHOA -2D91 ETHIOPIC SYLLABLE PHOA -2D92 ETHIOPIC SYLLABLE POA -@ Syllables for Blin -2D93 ETHIOPIC SYLLABLE GGWA -2D94 ETHIOPIC SYLLABLE GGWI -2D95 ETHIOPIC SYLLABLE GGWEE -2D96 ETHIOPIC SYLLABLE GGWE -@ Syllables for Sebatbeit -2DA0 ETHIOPIC SYLLABLE SSA -2DA1 ETHIOPIC SYLLABLE SSU -2DA2 ETHIOPIC SYLLABLE SSI -2DA3 ETHIOPIC SYLLABLE SSAA -2DA4 ETHIOPIC SYLLABLE SSEE -2DA5 ETHIOPIC SYLLABLE SSE -2DA6 ETHIOPIC SYLLABLE SSO -2DA8 ETHIOPIC SYLLABLE CCA -2DA9 ETHIOPIC SYLLABLE CCU -2DAA ETHIOPIC SYLLABLE CCI -2DAB ETHIOPIC SYLLABLE CCAA -2DAC ETHIOPIC SYLLABLE CCEE -2DAD ETHIOPIC SYLLABLE CCE -2DAE ETHIOPIC SYLLABLE CCO -2DB0 ETHIOPIC SYLLABLE ZZA -2DB1 ETHIOPIC SYLLABLE ZZU -2DB2 ETHIOPIC SYLLABLE ZZI -2DB3 ETHIOPIC SYLLABLE ZZAA -2DB4 ETHIOPIC SYLLABLE ZZEE -2DB5 ETHIOPIC SYLLABLE ZZE -2DB6 ETHIOPIC SYLLABLE ZZO -2DB8 ETHIOPIC SYLLABLE CCHA -2DB9 ETHIOPIC SYLLABLE CCHU -2DBA ETHIOPIC SYLLABLE CCHI -2DBB ETHIOPIC SYLLABLE CCHAA -2DBC ETHIOPIC SYLLABLE CCHEE -2DBD ETHIOPIC SYLLABLE CCHE -2DBE ETHIOPIC SYLLABLE CCHO -2DC0 ETHIOPIC SYLLABLE QYA -2DC1 ETHIOPIC SYLLABLE QYU -2DC2 ETHIOPIC SYLLABLE QYI -2DC3 ETHIOPIC SYLLABLE QYAA -2DC4 ETHIOPIC SYLLABLE QYEE -2DC5 ETHIOPIC SYLLABLE QYE -2DC6 ETHIOPIC SYLLABLE QYO -2DC8 ETHIOPIC SYLLABLE KYA -2DC9 ETHIOPIC SYLLABLE KYU -2DCA ETHIOPIC SYLLABLE KYI -2DCB ETHIOPIC SYLLABLE KYAA -2DCC ETHIOPIC SYLLABLE KYEE -2DCD ETHIOPIC SYLLABLE KYE -2DCE ETHIOPIC SYLLABLE KYO -2DD0 ETHIOPIC SYLLABLE XYA -2DD1 ETHIOPIC SYLLABLE XYU -2DD2 ETHIOPIC SYLLABLE XYI -2DD3 ETHIOPIC SYLLABLE XYAA -2DD4 ETHIOPIC SYLLABLE XYEE -2DD5 ETHIOPIC SYLLABLE XYE -2DD6 ETHIOPIC SYLLABLE XYO -2DD8 ETHIOPIC SYLLABLE GYA -2DD9 ETHIOPIC SYLLABLE GYU -2DDA ETHIOPIC SYLLABLE GYI -2DDB ETHIOPIC SYLLABLE GYAA -2DDC ETHIOPIC SYLLABLE GYEE -2DDD ETHIOPIC SYLLABLE GYE -2DDE ETHIOPIC SYLLABLE GYO -@@ 2E00 Supplemental Punctuation 2E7F -@ New Testament editorial symbols -2E00 RIGHT ANGLE SUBSTITUTION MARKER -2E01 RIGHT ANGLE DOTTED SUBSTITUTION MARKER -2E02 LEFT SUBSTITUTION BRACKET -2E03 RIGHT SUBSTITUTION BRACKET -2E04 LEFT DOTTED SUBSTITUTION BRACKET -2E05 RIGHT DOTTED SUBSTITUTION BRACKET -2E06 RAISED INTERPOLATION MARKER -2E07 RAISED DOTTED INTERPOLATION MARKER -2E08 DOTTED TRANSPOSITION MARKER -2E09 LEFT TRANSPOSITION BRACKET -2E0A RIGHT TRANSPOSITION BRACKET -2E0B RAISED SQUARE - * used as an opening raised omission bracket -2E0C LEFT RAISED OMISSION BRACKET - * used as an opening or closing raised omission bracket -2E0D RIGHT RAISED OMISSION BRACKET - * used as a closing or opening raised omission bracket -@ Ancient Greek textual symbols -2E0E EDITORIAL CORONIS - x (greek koronis - 1FBD) -2E0F PARAGRAPHOS -2E10 FORKED PARAGRAPHOS -2E11 REVERSED FORKED PARAGRAPHOS -2E12 HYPODIASTOLE -2E13 DOTTED OBELOS - * glyph variants may look like '00F7' or '2238' - x (commercial minus sign - 2052) -2E14 DOWNWARDS ANCORA -2E15 UPWARDS ANCORA -2E16 DOTTED RIGHT-POINTING ANGLE - = diple periestigmene -@ Ancient Near-Eastern linguistic symbol -2E17 DOUBLE OBLIQUE HYPHEN - * used in ancient Near-Eastern linguistics - * hyphen in Fraktur text uses 002D or 2010, but with a '2E17' glyph in Fraktur fonts - x (hyphen-minus - 002D) - x (equals sign - 003D) - x (hyphen - 2010) -@ Brackets -2E1C LEFT LOW PARAPHRASE BRACKET -2E1D RIGHT LOW PARAPHRASE BRACKET - * used in N'Ko -@@ 2E80 CJK Radicals Supplement 2EFF -@ CJK radicals supplement -2E80 CJK RADICAL REPEAT -2E81 CJK RADICAL CLIFF - x 5382 -2E82 CJK RADICAL SECOND ONE - x 4E5B -2E83 CJK RADICAL SECOND TWO - x 4E5A -2E84 CJK RADICAL SECOND THREE - x 4E59 -2E85 CJK RADICAL PERSON - * form used on left side - x 4EBB -2E86 CJK RADICAL BOX - x 5182 -2E87 CJK RADICAL TABLE - x 51E0 -2E88 CJK RADICAL KNIFE ONE - * form used at top - x 5200 -2E89 CJK RADICAL KNIFE TWO - * form used on right side - x 5202 -2E8A CJK RADICAL DIVINATION - * form used at top - x 535C -2E8B CJK RADICAL SEAL - * form used at bottom - x 353E -2E8C CJK RADICAL SMALL ONE - * form used at top - x 5C0F -2E8D CJK RADICAL SMALL TWO - * form used at top - x 5C0F -2E8E CJK RADICAL LAME ONE - x 5C22 -2E8F CJK RADICAL LAME TWO - x 5C23 -2E90 CJK RADICAL LAME THREE - x 5C22 -2E91 CJK RADICAL LAME FOUR - x 5C23 -2E92 CJK RADICAL SNAKE - x 5DF3 -2E93 CJK RADICAL THREAD - x 5E7A -2E94 CJK RADICAL SNOUT ONE - x 5F51 -2E95 CJK RADICAL SNOUT TWO - x 5F50 -2E96 CJK RADICAL HEART ONE - * form used on left side - x 5FC4 -2E97 CJK RADICAL HEART TWO - * form used at bottom - x 5FC3 -2E98 CJK RADICAL HAND - * form used on left side - x 624C -2E99 CJK RADICAL RAP - * form used on right side - x 6535 -2E9B CJK RADICAL CHOKE - x 65E1 -2E9C CJK RADICAL SUN - x 65E5 -2E9D CJK RADICAL MOON - x 6708 -2E9E CJK RADICAL DEATH - x 6B7A -2E9F CJK RADICAL MOTHER - # 6BCD -2EA0 CJK RADICAL CIVILIAN - x 6C11 -2EA1 CJK RADICAL WATER ONE - * form used on left side - x 6C35 -2EA2 CJK RADICAL WATER TWO - * form used (rarely) at bottom - x 6C3A -2EA3 CJK RADICAL FIRE - * form used at bottom - x 706C -2EA4 CJK RADICAL PAW ONE - * form used at top - x 722B -2EA5 CJK RADICAL PAW TWO - * form used at top - x 722B -2EA6 CJK RADICAL SIMPLIFIED HALF TREE TRUNK - x 4E2C -2EA7 CJK RADICAL COW - x 725B -2EA8 CJK RADICAL DOG - * form used on left side - x 72AD -2EA9 CJK RADICAL JADE - * form used on left side - x 738B -2EAA CJK RADICAL BOLT OF CLOTH - * form used on left side - x 758B -2EAB CJK RADICAL EYE - * form used at top - x (cjk radical net two - 2EB2) - x 76EE -2EAC CJK RADICAL SPIRIT ONE - x 793A -2EAD CJK RADICAL SPIRIT TWO - x 793B -2EAE CJK RADICAL BAMBOO - x 7AF9 -2EAF CJK RADICAL SILK - * form used on left side - x 7CF9 -2EB0 CJK RADICAL C-SIMPLIFIED SILK - * form used on left side - x 7E9F -2EB1 CJK RADICAL NET ONE - x 7F53 -2EB2 CJK RADICAL NET TWO - x (cjk radical eye - 2EAB) - x 7F52 -2EB3 CJK RADICAL NET THREE - x 7F51 -2EB4 CJK RADICAL NET FOUR - x 7F51 -2EB5 CJK RADICAL MESH - x 2626B -2EB6 CJK RADICAL SHEEP - * form used on left side - x 7F8A -2EB7 CJK RADICAL RAM - * form used at top - x 7F8A -2EB8 CJK RADICAL EWE - x 7F8B -2EB9 CJK RADICAL OLD - x 8002 -2EBA CJK RADICAL BRUSH ONE - x 8080 -2EBB CJK RADICAL BRUSH TWO - x 807F -2EBC CJK RADICAL MEAT - x 8089 -2EBD CJK RADICAL MORTAR - x 81FC -2EBE CJK RADICAL GRASS ONE - x 8279 -2EBF CJK RADICAL GRASS TWO - x 8279 -2EC0 CJK RADICAL GRASS THREE - x 8279 -2EC1 CJK RADICAL TIGER - x 864E -2EC2 CJK RADICAL CLOTHES - * form used on left side - x 8864 -2EC3 CJK RADICAL WEST ONE - * form used at top - x 8980 -2EC4 CJK RADICAL WEST TWO - * form used on left side - x 897F -2EC5 CJK RADICAL C-SIMPLIFIED SEE - x 89C1 -2EC6 CJK RADICAL SIMPLIFIED HORN - x 89D2 -2EC7 CJK RADICAL HORN - x 278B2 -2EC8 CJK RADICAL C-SIMPLIFIED SPEECH - x 8BA0 -2EC9 CJK RADICAL C-SIMPLIFIED SHELL - x 8D1D -2ECA CJK RADICAL FOOT - * form used on left side - x 8DB3 -2ECB CJK RADICAL C-SIMPLIFIED CART - x 8F66 -2ECC CJK RADICAL SIMPLIFIED WALK - x 8FB6 -2ECD CJK RADICAL WALK ONE - x 8FB6 -2ECE CJK RADICAL WALK TWO - x 8FB6 -2ECF CJK RADICAL CITY - * form used on right side - x 9091 -2ED0 CJK RADICAL C-SIMPLIFIED GOLD - x 9485 -2ED1 CJK RADICAL LONG ONE - x 9577 -2ED2 CJK RADICAL LONG TWO - * form used on left side - x 9578 -2ED3 CJK RADICAL C-SIMPLIFIED LONG - x 957F -2ED4 CJK RADICAL C-SIMPLIFIED GATE - x 95E8 -2ED5 CJK RADICAL MOUND ONE - x 961C - x 28E0F -2ED6 CJK RADICAL MOUND TWO - * form used on left side - x 961D -2ED7 CJK RADICAL RAIN - x 96E8 -2ED8 CJK RADICAL BLUE - x 9752 -2ED9 CJK RADICAL C-SIMPLIFIED TANNED LEATHER - x 97E6 -2EDA CJK RADICAL C-SIMPLIFIED LEAF - x 9875 -2EDB CJK RADICAL C-SIMPLIFIED WIND - x 98CE -2EDC CJK RADICAL C-SIMPLIFIED FLY - x 98DE -2EDD CJK RADICAL EAT ONE - * form used at bottom - x 98DF -2EDE CJK RADICAL EAT TWO - * form used on left side - x 2967F -2EDF CJK RADICAL EAT THREE - * form used on left side - x 98E0 -2EE0 CJK RADICAL C-SIMPLIFIED EAT - * form used on left side - x 9963 -2EE1 CJK RADICAL HEAD - x 29810 -2EE2 CJK RADICAL C-SIMPLIFIED HORSE - x 9A6C -2EE3 CJK RADICAL BONE - x 9AA8 -2EE4 CJK RADICAL GHOST - x 9B3C -2EE5 CJK RADICAL C-SIMPLIFIED FISH - x 9C7C -2EE6 CJK RADICAL C-SIMPLIFIED BIRD - x 9E1F -2EE7 CJK RADICAL C-SIMPLIFIED SALT - x 9E75 -2EE8 CJK RADICAL SIMPLIFIED WHEAT - x 9EA6 -2EE9 CJK RADICAL SIMPLIFIED YELLOW - x 9EC4 -2EEA CJK RADICAL C-SIMPLIFIED FROG - x 9EFE -2EEB CJK RADICAL J-SIMPLIFIED EVEN - x 6589 -2EEC CJK RADICAL C-SIMPLIFIED EVEN - x 9F50 -2EED CJK RADICAL J-SIMPLIFIED TOOTH - x 6B6F -2EEE CJK RADICAL C-SIMPLIFIED TOOTH - x 9F7F -2EEF CJK RADICAL J-SIMPLIFIED DRAGON - x 9F8D -2EF0 CJK RADICAL C-SIMPLIFIED DRAGON - x 9F99 -2EF1 CJK RADICAL TURTLE - x 9F9C -2EF2 CJK RADICAL J-SIMPLIFIED TURTLE - x 4E80 -2EF3 CJK RADICAL C-SIMPLIFIED TURTLE - # 9F9F -@@ 2F00 Kangxi Radicals 2FDF -@ Kangxi radicals -2F00 KANGXI RADICAL ONE - # 4E00 -2F01 KANGXI RADICAL LINE - # 4E28 -2F02 KANGXI RADICAL DOT - # 4E36 -2F03 KANGXI RADICAL SLASH - # 4E3F -2F04 KANGXI RADICAL SECOND - # 4E59 -2F05 KANGXI RADICAL HOOK - # 4E85 -2F06 KANGXI RADICAL TWO - # 4E8C -2F07 KANGXI RADICAL LID - # 4EA0 -2F08 KANGXI RADICAL MAN - # 4EBA -2F09 KANGXI RADICAL LEGS - # 513F -2F0A KANGXI RADICAL ENTER - # 5165 -2F0B KANGXI RADICAL EIGHT - # 516B -2F0C KANGXI RADICAL DOWN BOX - # 5182 -2F0D KANGXI RADICAL COVER - # 5196 -2F0E KANGXI RADICAL ICE - # 51AB -2F0F KANGXI RADICAL TABLE - # 51E0 -2F10 KANGXI RADICAL OPEN BOX - # 51F5 -2F11 KANGXI RADICAL KNIFE - # 5200 -2F12 KANGXI RADICAL POWER - # 529B -2F13 KANGXI RADICAL WRAP - # 52F9 -2F14 KANGXI RADICAL SPOON - # 5315 -2F15 KANGXI RADICAL RIGHT OPEN BOX - # 531A -2F16 KANGXI RADICAL HIDING ENCLOSURE - # 5338 -2F17 KANGXI RADICAL TEN - # 5341 -2F18 KANGXI RADICAL DIVINATION - # 535C -2F19 KANGXI RADICAL SEAL - # 5369 -2F1A KANGXI RADICAL CLIFF - # 5382 -2F1B KANGXI RADICAL PRIVATE - # 53B6 -2F1C KANGXI RADICAL AGAIN - # 53C8 -2F1D KANGXI RADICAL MOUTH - # 53E3 -2F1E KANGXI RADICAL ENCLOSURE - # 56D7 -2F1F KANGXI RADICAL EARTH - # 571F -2F20 KANGXI RADICAL SCHOLAR - # 58EB -2F21 KANGXI RADICAL GO - # 5902 -2F22 KANGXI RADICAL GO SLOWLY - # 590A -2F23 KANGXI RADICAL EVENING - # 5915 -2F24 KANGXI RADICAL BIG - # 5927 -2F25 KANGXI RADICAL WOMAN - # 5973 -2F26 KANGXI RADICAL CHILD - # 5B50 -2F27 KANGXI RADICAL ROOF - # 5B80 -2F28 KANGXI RADICAL INCH - # 5BF8 -2F29 KANGXI RADICAL SMALL - # 5C0F -2F2A KANGXI RADICAL LAME - # 5C22 -2F2B KANGXI RADICAL CORPSE - # 5C38 -2F2C KANGXI RADICAL SPROUT - # 5C6E -2F2D KANGXI RADICAL MOUNTAIN - # 5C71 -2F2E KANGXI RADICAL RIVER - # 5DDB -2F2F KANGXI RADICAL WORK - # 5DE5 -2F30 KANGXI RADICAL ONESELF - # 5DF1 -2F31 KANGXI RADICAL TURBAN - # 5DFE -2F32 KANGXI RADICAL DRY - # 5E72 -2F33 KANGXI RADICAL SHORT THREAD - # 5E7A -2F34 KANGXI RADICAL DOTTED CLIFF - # 5E7F -2F35 KANGXI RADICAL LONG STRIDE - # 5EF4 -2F36 KANGXI RADICAL TWO HANDS - # 5EFE -2F37 KANGXI RADICAL SHOOT - # 5F0B -2F38 KANGXI RADICAL BOW - # 5F13 -2F39 KANGXI RADICAL SNOUT - # 5F50 -2F3A KANGXI RADICAL BRISTLE - # 5F61 -2F3B KANGXI RADICAL STEP - # 5F73 -2F3C KANGXI RADICAL HEART - # 5FC3 -2F3D KANGXI RADICAL HALBERD - # 6208 -2F3E KANGXI RADICAL DOOR - # 6236 -2F3F KANGXI RADICAL HAND - # 624B -2F40 KANGXI RADICAL BRANCH - # 652F -2F41 KANGXI RADICAL RAP - # 6534 -2F42 KANGXI RADICAL SCRIPT - # 6587 -2F43 KANGXI RADICAL DIPPER - # 6597 -2F44 KANGXI RADICAL AXE - # 65A4 -2F45 KANGXI RADICAL SQUARE - # 65B9 -2F46 KANGXI RADICAL NOT - # 65E0 -2F47 KANGXI RADICAL SUN - # 65E5 -2F48 KANGXI RADICAL SAY - # 66F0 -2F49 KANGXI RADICAL MOON - # 6708 -2F4A KANGXI RADICAL TREE - # 6728 -2F4B KANGXI RADICAL LACK - # 6B20 -2F4C KANGXI RADICAL STOP - # 6B62 -2F4D KANGXI RADICAL DEATH - # 6B79 -2F4E KANGXI RADICAL WEAPON - # 6BB3 -2F4F KANGXI RADICAL DO NOT - # 6BCB -2F50 KANGXI RADICAL COMPARE - # 6BD4 -2F51 KANGXI RADICAL FUR - # 6BDB -2F52 KANGXI RADICAL CLAN - # 6C0F -2F53 KANGXI RADICAL STEAM - # 6C14 -2F54 KANGXI RADICAL WATER - # 6C34 -2F55 KANGXI RADICAL FIRE - # 706B -2F56 KANGXI RADICAL CLAW - # 722A -2F57 KANGXI RADICAL FATHER - # 7236 -2F58 KANGXI RADICAL DOUBLE X - # 723B -2F59 KANGXI RADICAL HALF TREE TRUNK - # 723F -2F5A KANGXI RADICAL SLICE - # 7247 -2F5B KANGXI RADICAL FANG - # 7259 -2F5C KANGXI RADICAL COW - # 725B -2F5D KANGXI RADICAL DOG - # 72AC -2F5E KANGXI RADICAL PROFOUND - # 7384 -2F5F KANGXI RADICAL JADE - # 7389 -2F60 KANGXI RADICAL MELON - # 74DC -2F61 KANGXI RADICAL TILE - # 74E6 -2F62 KANGXI RADICAL SWEET - # 7518 -2F63 KANGXI RADICAL LIFE - # 751F -2F64 KANGXI RADICAL USE - # 7528 -2F65 KANGXI RADICAL FIELD - # 7530 -2F66 KANGXI RADICAL BOLT OF CLOTH - # 758B -2F67 KANGXI RADICAL SICKNESS - # 7592 -2F68 KANGXI RADICAL DOTTED TENT - # 7676 -2F69 KANGXI RADICAL WHITE - # 767D -2F6A KANGXI RADICAL SKIN - # 76AE -2F6B KANGXI RADICAL DISH - # 76BF -2F6C KANGXI RADICAL EYE - # 76EE -2F6D KANGXI RADICAL SPEAR - # 77DB -2F6E KANGXI RADICAL ARROW - # 77E2 -2F6F KANGXI RADICAL STONE - # 77F3 -2F70 KANGXI RADICAL SPIRIT - # 793A -2F71 KANGXI RADICAL TRACK - # 79B8 -2F72 KANGXI RADICAL GRAIN - # 79BE -2F73 KANGXI RADICAL CAVE - # 7A74 -2F74 KANGXI RADICAL STAND - # 7ACB -2F75 KANGXI RADICAL BAMBOO - # 7AF9 -2F76 KANGXI RADICAL RICE - # 7C73 -2F77 KANGXI RADICAL SILK - # 7CF8 -2F78 KANGXI RADICAL JAR - # 7F36 -2F79 KANGXI RADICAL NET - # 7F51 -2F7A KANGXI RADICAL SHEEP - # 7F8A -2F7B KANGXI RADICAL FEATHER - # 7FBD -2F7C KANGXI RADICAL OLD - # 8001 -2F7D KANGXI RADICAL AND - # 800C -2F7E KANGXI RADICAL PLOW - # 8012 -2F7F KANGXI RADICAL EAR - # 8033 -2F80 KANGXI RADICAL BRUSH - # 807F -2F81 KANGXI RADICAL MEAT - # 8089 -2F82 KANGXI RADICAL MINISTER - # 81E3 -2F83 KANGXI RADICAL SELF - # 81EA -2F84 KANGXI RADICAL ARRIVE - # 81F3 -2F85 KANGXI RADICAL MORTAR - # 81FC -2F86 KANGXI RADICAL TONGUE - # 820C -2F87 KANGXI RADICAL OPPOSE - # 821B -2F88 KANGXI RADICAL BOAT - # 821F -2F89 KANGXI RADICAL STOPPING - # 826E -2F8A KANGXI RADICAL COLOR - # 8272 -2F8B KANGXI RADICAL GRASS - # 8278 -2F8C KANGXI RADICAL TIGER - # 864D -2F8D KANGXI RADICAL INSECT - # 866B -2F8E KANGXI RADICAL BLOOD - # 8840 -2F8F KANGXI RADICAL WALK ENCLOSURE - # 884C -2F90 KANGXI RADICAL CLOTHES - # 8863 -2F91 KANGXI RADICAL WEST - # 897E -2F92 KANGXI RADICAL SEE - # 898B -2F93 KANGXI RADICAL HORN - # 89D2 -2F94 KANGXI RADICAL SPEECH - # 8A00 -2F95 KANGXI RADICAL VALLEY - # 8C37 -2F96 KANGXI RADICAL BEAN - # 8C46 -2F97 KANGXI RADICAL PIG - # 8C55 -2F98 KANGXI RADICAL BADGER - # 8C78 -2F99 KANGXI RADICAL SHELL - # 8C9D -2F9A KANGXI RADICAL RED - # 8D64 -2F9B KANGXI RADICAL RUN - # 8D70 -2F9C KANGXI RADICAL FOOT - # 8DB3 -2F9D KANGXI RADICAL BODY - # 8EAB -2F9E KANGXI RADICAL CART - # 8ECA -2F9F KANGXI RADICAL BITTER - # 8F9B -2FA0 KANGXI RADICAL MORNING - # 8FB0 -2FA1 KANGXI RADICAL WALK - # 8FB5 -2FA2 KANGXI RADICAL CITY - # 9091 -2FA3 KANGXI RADICAL WINE - # 9149 -2FA4 KANGXI RADICAL DISTINGUISH - # 91C6 -2FA5 KANGXI RADICAL VILLAGE - # 91CC -2FA6 KANGXI RADICAL GOLD - # 91D1 -2FA7 KANGXI RADICAL LONG - # 9577 -2FA8 KANGXI RADICAL GATE - # 9580 -2FA9 KANGXI RADICAL MOUND - # 961C -2FAA KANGXI RADICAL SLAVE - # 96B6 -2FAB KANGXI RADICAL SHORT TAILED BIRD - # 96B9 -2FAC KANGXI RADICAL RAIN - # 96E8 -2FAD KANGXI RADICAL BLUE - # 9751 -2FAE KANGXI RADICAL WRONG - # 975E -2FAF KANGXI RADICAL FACE - # 9762 -2FB0 KANGXI RADICAL LEATHER - # 9769 -2FB1 KANGXI RADICAL TANNED LEATHER - # 97CB -2FB2 KANGXI RADICAL LEEK - # 97ED -2FB3 KANGXI RADICAL SOUND - # 97F3 -2FB4 KANGXI RADICAL LEAF - # 9801 -2FB5 KANGXI RADICAL WIND - # 98A8 -2FB6 KANGXI RADICAL FLY - # 98DB -2FB7 KANGXI RADICAL EAT - # 98DF -2FB8 KANGXI RADICAL HEAD - # 9996 -2FB9 KANGXI RADICAL FRAGRANT - # 9999 -2FBA KANGXI RADICAL HORSE - # 99AC -2FBB KANGXI RADICAL BONE - # 9AA8 -2FBC KANGXI RADICAL TALL - # 9AD8 -2FBD KANGXI RADICAL HAIR - # 9ADF -2FBE KANGXI RADICAL FIGHT - # 9B25 -2FBF KANGXI RADICAL SACRIFICIAL WINE - # 9B2F -2FC0 KANGXI RADICAL CAULDRON - # 9B32 -2FC1 KANGXI RADICAL GHOST - # 9B3C -2FC2 KANGXI RADICAL FISH - # 9B5A -2FC3 KANGXI RADICAL BIRD - # 9CE5 -2FC4 KANGXI RADICAL SALT - # 9E75 -2FC5 KANGXI RADICAL DEER - # 9E7F -2FC6 KANGXI RADICAL WHEAT - # 9EA5 -2FC7 KANGXI RADICAL HEMP - # 9EBB -2FC8 KANGXI RADICAL YELLOW - # 9EC3 -2FC9 KANGXI RADICAL MILLET - # 9ECD -2FCA KANGXI RADICAL BLACK - # 9ED1 -2FCB KANGXI RADICAL EMBROIDERY - # 9EF9 -2FCC KANGXI RADICAL FROG - # 9EFD -2FCD KANGXI RADICAL TRIPOD - # 9F0E -2FCE KANGXI RADICAL DRUM - # 9F13 -2FCF KANGXI RADICAL RAT - # 9F20 -2FD0 KANGXI RADICAL NOSE - # 9F3B -2FD1 KANGXI RADICAL EVEN - # 9F4A -2FD2 KANGXI RADICAL TOOTH - # 9F52 -2FD3 KANGXI RADICAL DRAGON - # 9F8D -2FD4 KANGXI RADICAL TURTLE - # 9F9C -2FD5 KANGXI RADICAL FLUTE - # 9FA0 -@@ 2FF0 Ideographic Description Characters 2FFF -@ Ideographic description characters -@+ These are visibly displayed graphic characters, not invisible composition controls. -2FF0 IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT -2FF1 IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW -2FF2 IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT -2FF3 IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW -2FF4 IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND -2FF5 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE -2FF6 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW -2FF7 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT -2FF8 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT -2FF9 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT -2FFA IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT -2FFB IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID -@@ 3000 CJK Symbols and Punctuation 303F -@ CJK symbols and punctuation -3000 IDEOGRAPHIC SPACE - x (space - 0020) - # <wide> 0020 -3001 IDEOGRAPHIC COMMA - x (comma - 002C) -3002 IDEOGRAPHIC FULL STOP - x (full stop - 002E) -3003 DITTO MARK - x (double prime - 2033) -3004 JAPANESE INDUSTRIAL STANDARD SYMBOL -3005 IDEOGRAPHIC ITERATION MARK -3006 IDEOGRAPHIC CLOSING MARK -3007 IDEOGRAPHIC NUMBER ZERO - x (combining enclosing circle - 20DD) - x (white circle - 25CB) - x (large circle - 25EF) -@ CJK angle brackets -3008 LEFT ANGLE BRACKET - x (less-than sign - 003C) - x (single left-pointing angle quotation mark - 2039) - x (left-pointing angle bracket - 2329) - x (mathematical left angle bracket - 27E8) -3009 RIGHT ANGLE BRACKET - x (greater-than sign - 003E) - x (single right-pointing angle quotation mark - 203A) - x (right-pointing angle bracket - 232A) - x (mathematical right angle bracket - 27E9) -300A LEFT DOUBLE ANGLE BRACKET - x (left-pointing double angle quotation mark - 00AB) - x (mathematical left double angle bracket - 27EA) -300B RIGHT DOUBLE ANGLE BRACKET - x (right-pointing double angle quotation mark - 00BB) - x (mathematical right double angle bracket - 27EB) -@ CJK corner brackets -@+ The CJK corner brackets, which function as quotation marks, are not recommended for general-purpose corner brackets. See the ceiling and floor characters, instead. -300C LEFT CORNER BRACKET - x (left ceiling - 2308) -300D RIGHT CORNER BRACKET - * used as quotation marks - x (right floor - 230B) -300E LEFT WHITE CORNER BRACKET -300F RIGHT WHITE CORNER BRACKET - * used as quotation marks -@ CJK brackets -3010 LEFT BLACK LENTICULAR BRACKET -3011 RIGHT BLACK LENTICULAR BRACKET -@ CJK symbols -3012 POSTAL MARK -3013 GETA MARK - * substitute for ideograph not in font -@ CJK brackets -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 - = left abstract syntax bracket - x (mathematical left white square bracket - 27E6) -301B RIGHT WHITE SQUARE BRACKET - = right abstract syntax bracket - x (mathematical right white square bracket - 27E7) -@ CJK symbols and punctuation -301C WAVE DASH -@+ * This character was encoded to match JIS C 6226-1978 1-33 "wave dash". The JIS standards and some industry practice disagree in mapping. - x (wavy dash - 3030) - x (fullwidth tilde - FF5E) -301D REVERSED DOUBLE PRIME QUOTATION MARK - * sometimes depicted as double prime quotation mark - x (left double quotation mark - 201C) - x (reversed double prime - 2036) -301E DOUBLE PRIME QUOTATION MARK - * this is a mistaken analogue to 201D; 301F is preferred - x (right double quotation mark - 201D) - x (double prime - 2033) -301F LOW DOUBLE PRIME QUOTATION MARK - * may be depicted as low inverse double prime quotation mark -3020 POSTAL MARK FACE -@ Suzhou numerals -@+ The Suzhou numerals (Chinese su1zhou1ma3zi) are special numeric forms used by traders to display the prices of goods. The use of "HANGZHOU" in the names is a misnomer. -3021 HANGZHOU NUMERAL ONE -3022 HANGZHOU NUMERAL TWO -3023 HANGZHOU NUMERAL THREE -3024 HANGZHOU NUMERAL FOUR -3025 HANGZHOU NUMERAL FIVE -3026 HANGZHOU NUMERAL SIX -3027 HANGZHOU NUMERAL SEVEN -3028 HANGZHOU NUMERAL EIGHT -3029 HANGZHOU NUMERAL NINE -@ Diacritics -302A IDEOGRAPHIC LEVEL TONE MARK -302B IDEOGRAPHIC RISING TONE MARK -302C IDEOGRAPHIC DEPARTING TONE MARK -302D IDEOGRAPHIC ENTERING TONE MARK -302E HANGUL SINGLE DOT TONE MARK - = single dot Bangjeom -302F HANGUL DOUBLE DOT TONE MARK - = double dot Bangjeom -@ Other CJK symbols -3030 WAVY DASH - x (wavy line - 2307) - x (wave dash - 301C) -3031 VERTICAL KANA REPEAT MARK -3032 VERTICAL KANA REPEAT WITH VOICED SOUND MARK - * the preceding two semantic characters are preferred to the following three glyphic forms -3033 VERTICAL KANA REPEAT MARK UPPER HALF -3034 VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF - * the preceding two are glyphs used in conjunction with the following glyph -3035 VERTICAL KANA REPEAT MARK LOWER HALF -3036 CIRCLED POSTAL MARK - # 3012 postal mark -3037 IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL -@ Additional Suzhou numerals -3038 HANGZHOU NUMERAL TEN - # 5341 -3039 HANGZHOU NUMERAL TWENTY - # 5344 -303A HANGZHOU NUMERAL THIRTY - # 5345 -@ Other CJK punctuation -303B VERTICAL IDEOGRAPHIC ITERATION MARK -303C MASU MARK - * informal abbreviation for Japanese -masu ending - x (squared rising diagonal slash - 29C4) -303D PART ALTERNATION MARK - * marks the start of a song part in Japanese -@ Special CJK indicators -@+ These are visibly displayed graphic characters, not invisible formatting controls. -303E IDEOGRAPHIC VARIATION INDICATOR - * visual indicator that the following ideograph is to be taken as a variant of the intended character -303F IDEOGRAPHIC HALF FILL SPACE - * visual indicator of a screen space for half of an ideograph -@@ 3040 Hiragana 309F -@ Based on JIS X 0208 -3041 HIRAGANA LETTER SMALL A -3042 HIRAGANA LETTER A -3043 HIRAGANA LETTER SMALL I -3044 HIRAGANA LETTER I -3045 HIRAGANA LETTER SMALL U -3046 HIRAGANA LETTER U -3047 HIRAGANA LETTER SMALL E -3048 HIRAGANA LETTER E -3049 HIRAGANA LETTER SMALL O -304A HIRAGANA LETTER O -304B HIRAGANA LETTER KA -304C HIRAGANA LETTER GA - : 304B 3099 -304D HIRAGANA LETTER KI -304E HIRAGANA LETTER GI - : 304D 3099 -304F HIRAGANA LETTER KU -3050 HIRAGANA LETTER GU - : 304F 3099 -3051 HIRAGANA LETTER KE -3052 HIRAGANA LETTER GE - : 3051 3099 -3053 HIRAGANA LETTER KO -3054 HIRAGANA LETTER GO - : 3053 3099 -3055 HIRAGANA LETTER SA -3056 HIRAGANA LETTER ZA - : 3055 3099 -3057 HIRAGANA LETTER SI - = SHI -3058 HIRAGANA LETTER ZI - = JI (not unique) - : 3057 3099 -3059 HIRAGANA LETTER SU -305A HIRAGANA LETTER ZU - : 3059 3099 -305B HIRAGANA LETTER SE -305C HIRAGANA LETTER ZE - : 305B 3099 -305D HIRAGANA LETTER SO -305E HIRAGANA LETTER ZO - : 305D 3099 -305F HIRAGANA LETTER TA -3060 HIRAGANA LETTER DA - : 305F 3099 -3061 HIRAGANA LETTER TI - = CHI -3062 HIRAGANA LETTER DI - = JI (not unique) - : 3061 3099 -3063 HIRAGANA LETTER SMALL TU - = SMALL TSU -3064 HIRAGANA LETTER TU - = TSU -3065 HIRAGANA LETTER DU - = ZU (not unique) - : 3064 3099 -3066 HIRAGANA LETTER TE -3067 HIRAGANA LETTER DE - : 3066 3099 -3068 HIRAGANA LETTER TO -3069 HIRAGANA LETTER DO - : 3068 3099 -306A HIRAGANA LETTER NA -306B HIRAGANA LETTER NI -306C HIRAGANA LETTER NU -306D HIRAGANA LETTER NE -306E HIRAGANA LETTER NO -306F HIRAGANA LETTER HA -3070 HIRAGANA LETTER BA - : 306F 3099 -3071 HIRAGANA LETTER PA - : 306F 309A -3072 HIRAGANA LETTER HI -3073 HIRAGANA LETTER BI - : 3072 3099 -3074 HIRAGANA LETTER PI - : 3072 309A -3075 HIRAGANA LETTER HU - = FU -3076 HIRAGANA LETTER BU - : 3075 3099 -3077 HIRAGANA LETTER PU - : 3075 309A -3078 HIRAGANA LETTER HE -3079 HIRAGANA LETTER BE - : 3078 3099 -307A HIRAGANA LETTER PE - : 3078 309A -307B HIRAGANA LETTER HO -307C HIRAGANA LETTER BO - : 307B 3099 -307D HIRAGANA LETTER PO - : 307B 309A -307E HIRAGANA LETTER MA -307F HIRAGANA LETTER MI -3080 HIRAGANA LETTER MU -3081 HIRAGANA LETTER ME -3082 HIRAGANA LETTER MO -3083 HIRAGANA LETTER SMALL YA -3084 HIRAGANA LETTER YA -3085 HIRAGANA LETTER SMALL YU -3086 HIRAGANA LETTER YU -3087 HIRAGANA LETTER SMALL YO -3088 HIRAGANA LETTER YO -3089 HIRAGANA LETTER RA -308A HIRAGANA LETTER RI -308B HIRAGANA LETTER RU -308C HIRAGANA LETTER RE -308D HIRAGANA LETTER RO -308E HIRAGANA LETTER SMALL WA -308F HIRAGANA LETTER WA -3090 HIRAGANA LETTER WI -3091 HIRAGANA LETTER WE -3092 HIRAGANA LETTER WO -3093 HIRAGANA LETTER N -3094 HIRAGANA LETTER VU - : 3046 3099 -@ Small letters -3095 HIRAGANA LETTER SMALL KA -3096 HIRAGANA LETTER SMALL KE -@ Voicing marks -3099 COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK -309A COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -309B KATAKANA-HIRAGANA VOICED SOUND MARK - # 0020 3099 -309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK - # 0020 309A -@ Iteration marks -309D HIRAGANA ITERATION MARK -309E HIRAGANA VOICED ITERATION MARK - : 309D 3099 -@ Vertical form digraph -309F HIRAGANA DIGRAPH YORI - # <vertical> 3088 308A -@@ 30A0 Katakana 30FF -@ Katakana punctuation -30A0 KATAKANA-HIRAGANA DOUBLE HYPHEN - x (equals sign - 003D) -@ Based on JIS X 0208 -30A1 KATAKANA LETTER SMALL A -30A2 KATAKANA LETTER A -30A3 KATAKANA LETTER SMALL I -30A4 KATAKANA LETTER I -30A5 KATAKANA LETTER SMALL U -30A6 KATAKANA LETTER U -30A7 KATAKANA LETTER SMALL E -30A8 KATAKANA LETTER E -30A9 KATAKANA LETTER SMALL O -30AA KATAKANA LETTER O -30AB KATAKANA LETTER KA -30AC KATAKANA LETTER GA - : 30AB 3099 -30AD KATAKANA LETTER KI -30AE KATAKANA LETTER GI - : 30AD 3099 -30AF KATAKANA LETTER KU -30B0 KATAKANA LETTER GU - : 30AF 3099 -30B1 KATAKANA LETTER KE -30B2 KATAKANA LETTER GE - : 30B1 3099 -30B3 KATAKANA LETTER KO -30B4 KATAKANA LETTER GO - : 30B3 3099 -30B5 KATAKANA LETTER SA -30B6 KATAKANA LETTER ZA - : 30B5 3099 -30B7 KATAKANA LETTER SI - = SHI -30B8 KATAKANA LETTER ZI - = JI (not unique) - : 30B7 3099 -30B9 KATAKANA LETTER SU -30BA KATAKANA LETTER ZU - : 30B9 3099 -30BB KATAKANA LETTER SE -30BC KATAKANA LETTER ZE - : 30BB 3099 -30BD KATAKANA LETTER SO -30BE KATAKANA LETTER ZO - : 30BD 3099 -30BF KATAKANA LETTER TA -30C0 KATAKANA LETTER DA - : 30BF 3099 -30C1 KATAKANA LETTER TI - = CHI -30C2 KATAKANA LETTER DI - = JI (not unique) - : 30C1 3099 -30C3 KATAKANA LETTER SMALL TU - = SMALL TSU -30C4 KATAKANA LETTER TU - = TSU -30C5 KATAKANA LETTER DU - = ZU (not unique) - : 30C4 3099 -30C6 KATAKANA LETTER TE -30C7 KATAKANA LETTER DE - : 30C6 3099 -30C8 KATAKANA LETTER TO -30C9 KATAKANA LETTER DO - : 30C8 3099 -30CA KATAKANA LETTER NA -30CB KATAKANA LETTER NI -30CC KATAKANA LETTER NU -30CD KATAKANA LETTER NE -30CE KATAKANA LETTER NO -30CF KATAKANA LETTER HA -30D0 KATAKANA LETTER BA - : 30CF 3099 -30D1 KATAKANA LETTER PA - : 30CF 309A -30D2 KATAKANA LETTER HI -30D3 KATAKANA LETTER BI - : 30D2 3099 -30D4 KATAKANA LETTER PI - : 30D2 309A -30D5 KATAKANA LETTER HU - = FU -30D6 KATAKANA LETTER BU - : 30D5 3099 -30D7 KATAKANA LETTER PU - : 30D5 309A -30D8 KATAKANA LETTER HE -30D9 KATAKANA LETTER BE - : 30D8 3099 -30DA KATAKANA LETTER PE - : 30D8 309A -30DB KATAKANA LETTER HO -30DC KATAKANA LETTER BO - : 30DB 3099 -30DD KATAKANA LETTER PO - : 30DB 309A -30DE KATAKANA LETTER MA -30DF KATAKANA LETTER MI -30E0 KATAKANA LETTER MU -30E1 KATAKANA LETTER ME -30E2 KATAKANA LETTER MO -30E3 KATAKANA LETTER SMALL YA -30E4 KATAKANA LETTER YA -30E5 KATAKANA LETTER SMALL YU -30E6 KATAKANA LETTER YU -30E7 KATAKANA LETTER SMALL YO -30E8 KATAKANA LETTER YO -30E9 KATAKANA LETTER RA -30EA KATAKANA LETTER RI -30EB KATAKANA LETTER RU -30EC KATAKANA LETTER RE -30ED KATAKANA LETTER RO -30EE KATAKANA LETTER SMALL WA -30EF KATAKANA LETTER WA -30F0 KATAKANA LETTER WI -30F1 KATAKANA LETTER WE -30F2 KATAKANA LETTER WO -30F3 KATAKANA LETTER N -30F4 KATAKANA LETTER VU - : 30A6 3099 -30F5 KATAKANA LETTER SMALL KA -30F6 KATAKANA LETTER SMALL KE -30F7 KATAKANA LETTER VA - : 30EF 3099 -30F8 KATAKANA LETTER VI - : 30F0 3099 -30F9 KATAKANA LETTER VE - : 30F1 3099 -30FA KATAKANA LETTER VO - : 30F2 3099 -@ Conjunction and length marks -30FB KATAKANA MIDDLE DOT - x (middle dot - 00B7) -30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK - x (em dash - 2014) -@ Iteration marks -30FD KATAKANA ITERATION MARK -30FE KATAKANA VOICED ITERATION MARK - : 30FD 3099 -@ Vertical form digraph -30FF KATAKANA DIGRAPH KOTO - # <vertical> 30B3 30C8 -@@ 3100 Bopomofo 312F -@+ See also the Bopomofo Extended block -@ Based on GB 2312 -3105 BOPOMOFO LETTER B -3106 BOPOMOFO LETTER P -3107 BOPOMOFO LETTER M -3108 BOPOMOFO LETTER F -3109 BOPOMOFO LETTER D -310A BOPOMOFO LETTER T -310B BOPOMOFO LETTER N -310C BOPOMOFO LETTER L -310D BOPOMOFO LETTER G -310E BOPOMOFO LETTER K -310F BOPOMOFO LETTER H -3110 BOPOMOFO LETTER J -3111 BOPOMOFO LETTER Q -3112 BOPOMOFO LETTER X -3113 BOPOMOFO LETTER ZH -3114 BOPOMOFO LETTER CH -3115 BOPOMOFO LETTER SH -3116 BOPOMOFO LETTER R -3117 BOPOMOFO LETTER Z -3118 BOPOMOFO LETTER C -3119 BOPOMOFO LETTER S -311A BOPOMOFO LETTER A -311B BOPOMOFO LETTER O -311C BOPOMOFO LETTER E -311D BOPOMOFO LETTER EH -311E BOPOMOFO LETTER AI -311F BOPOMOFO LETTER EI -3120 BOPOMOFO LETTER AU -3121 BOPOMOFO LETTER OU -3122 BOPOMOFO LETTER AN -3123 BOPOMOFO LETTER EN -3124 BOPOMOFO LETTER ANG -3125 BOPOMOFO LETTER ENG -3126 BOPOMOFO LETTER ER -3127 BOPOMOFO LETTER I -3128 BOPOMOFO LETTER U -3129 BOPOMOFO LETTER IU -@ Dialect (non-Mandarin) letters -312A BOPOMOFO LETTER V -312B BOPOMOFO LETTER NG -312C BOPOMOFO LETTER GN -@@ 3130 Hangul Compatibility Jamo 318F -@ Modern letters -3131 HANGUL LETTER KIYEOK - # 1100 hangul choseong kiyeok -3132 HANGUL LETTER SSANGKIYEOK - # 1101 hangul choseong ssangkiyeok -3133 HANGUL LETTER KIYEOK-SIOS - # 11AA hangul jongseong kiyeok-sios -3134 HANGUL LETTER NIEUN - # 1102 hangul choseong nieun -3135 HANGUL LETTER NIEUN-CIEUC - # 11AC hangul jongseong nieun-cieuc -3136 HANGUL LETTER NIEUN-HIEUH - # 11AD hangul jongseong nieun-hieuh -3137 HANGUL LETTER TIKEUT - # 1103 hangul choseong tikeut -3138 HANGUL LETTER SSANGTIKEUT - # 1104 hangul choseong ssangtikeut -3139 HANGUL LETTER RIEUL - # 1105 hangul choseong rieul -313A HANGUL LETTER RIEUL-KIYEOK - # 11B0 hangul jongseong rieul-kiyeok -313B HANGUL LETTER RIEUL-MIEUM - # 11B1 hangul jongseong rieul-mieum -313C HANGUL LETTER RIEUL-PIEUP - # 11B2 hangul jongseong rieul-pieup -313D HANGUL LETTER RIEUL-SIOS - # 11B3 hangul jongseong rieul-sios -313E HANGUL LETTER RIEUL-THIEUTH - # 11B4 hangul jongseong rieul-thieuth -313F HANGUL LETTER RIEUL-PHIEUPH - # 11B5 hangul jongseong rieul-phieuph -3140 HANGUL LETTER RIEUL-HIEUH - # 111A hangul choseong rieul-hieuh -3141 HANGUL LETTER MIEUM - # 1106 hangul choseong mieum -3142 HANGUL LETTER PIEUP - # 1107 hangul choseong pieup -3143 HANGUL LETTER SSANGPIEUP - # 1108 hangul choseong ssangpieup -3144 HANGUL LETTER PIEUP-SIOS - # 1121 hangul choseong pieup-sios -3145 HANGUL LETTER SIOS - # 1109 hangul choseong sios -3146 HANGUL LETTER SSANGSIOS - # 110A hangul choseong ssangsios -3147 HANGUL LETTER IEUNG - # 110B hangul choseong ieung -3148 HANGUL LETTER CIEUC - # 110C hangul choseong cieuc -3149 HANGUL LETTER SSANGCIEUC - # 110D hangul choseong ssangcieuc -314A HANGUL LETTER CHIEUCH - # 110E hangul choseong chieuch -314B HANGUL LETTER KHIEUKH - # 110F hangul choseong khieukh -314C HANGUL LETTER THIEUTH - # 1110 hangul choseong thieuth -314D HANGUL LETTER PHIEUPH - # 1111 hangul choseong phieuph -314E HANGUL LETTER HIEUH - # 1112 hangul choseong hieuh -314F HANGUL LETTER A - # 1161 hangul jungseong a -3150 HANGUL LETTER AE - # 1162 hangul jungseong ae -3151 HANGUL LETTER YA - # 1163 hangul jungseong ya -3152 HANGUL LETTER YAE - # 1164 hangul jungseong yae -3153 HANGUL LETTER EO - # 1165 hangul jungseong eo -3154 HANGUL LETTER E - # 1166 hangul jungseong e -3155 HANGUL LETTER YEO - # 1167 hangul jungseong yeo -3156 HANGUL LETTER YE - # 1168 hangul jungseong ye -3157 HANGUL LETTER O - # 1169 hangul jungseong o -3158 HANGUL LETTER WA - # 116A hangul jungseong wa -3159 HANGUL LETTER WAE - # 116B hangul jungseong wae -315A HANGUL LETTER OE - # 116C hangul jungseong oe -315B HANGUL LETTER YO - # 116D hangul jungseong yo -315C HANGUL LETTER U - # 116E hangul jungseong u -315D HANGUL LETTER WEO - # 116F hangul jungseong weo -315E HANGUL LETTER WE - # 1170 hangul jungseong we -315F HANGUL LETTER WI - # 1171 hangul jungseong wi -3160 HANGUL LETTER YU - # 1172 hangul jungseong yu -3161 HANGUL LETTER EU - # 1173 hangul jungseong eu -3162 HANGUL LETTER YI - # 1174 hangul jungseong yi -3163 HANGUL LETTER I - # 1175 hangul jungseong i -@ Special character -3164 HANGUL FILLER - = HANGUL CAE OM - # 1160 hangul jungseong filler -@ Archaic letters -3165 HANGUL LETTER SSANGNIEUN - # 1114 hangul choseong ssangnieun -3166 HANGUL LETTER NIEUN-TIKEUT - # 1115 hangul choseong nieun-tikeut -3167 HANGUL LETTER NIEUN-SIOS - # 11C7 hangul jongseong nieun-sios -3168 HANGUL LETTER NIEUN-PANSIOS - # 11C8 hangul jongseong nieun-pansios -3169 HANGUL LETTER RIEUL-KIYEOK-SIOS - # 11CC hangul jongseong rieul-kiyeok-sios -316A HANGUL LETTER RIEUL-TIKEUT - # 11CE hangul jongseong rieul-tikeut -316B HANGUL LETTER RIEUL-PIEUP-SIOS - # 11D3 hangul jongseong rieul-pieup-sios -316C HANGUL LETTER RIEUL-PANSIOS - # 11D7 hangul jongseong rieul-pansios -316D HANGUL LETTER RIEUL-YEORINHIEUH - # 11D9 hangul jongseong rieul-yeorinhieuh -316E HANGUL LETTER MIEUM-PIEUP - # 111C hangul choseong mieum-pieup -316F HANGUL LETTER MIEUM-SIOS - # 11DD hangul jongseong mieum-sios -3170 HANGUL LETTER MIEUM-PANSIOS - # 11DF hangul jongseong mieum-pansios -3171 HANGUL LETTER KAPYEOUNMIEUM - # 111D hangul choseong kapyeounmieum -3172 HANGUL LETTER PIEUP-KIYEOK - # 111E hangul choseong pieup-kiyeok -3173 HANGUL LETTER PIEUP-TIKEUT - # 1120 hangul choseong pieup-tikeut -3174 HANGUL LETTER PIEUP-SIOS-KIYEOK - # 1122 hangul choseong pieup-sios-kiyeok -3175 HANGUL LETTER PIEUP-SIOS-TIKEUT - # 1123 hangul choseong pieup-sios-tikeut -3176 HANGUL LETTER PIEUP-CIEUC - # 1127 hangul choseong pieup-cieuc -3177 HANGUL LETTER PIEUP-THIEUTH - # 1129 hangul choseong pieup-thieuth -3178 HANGUL LETTER KAPYEOUNPIEUP - # 112B hangul choseong kapyeounpieup -3179 HANGUL LETTER KAPYEOUNSSANGPIEUP - # 112C hangul choseong kapyeounssangpieup -317A HANGUL LETTER SIOS-KIYEOK - # 112D hangul choseong sios-kiyeok -317B HANGUL LETTER SIOS-NIEUN - # 112E hangul choseong sios-nieun -317C HANGUL LETTER SIOS-TIKEUT - # 112F hangul choseong sios-tikeut -317D HANGUL LETTER SIOS-PIEUP - # 1132 hangul choseong sios-pieup -317E HANGUL LETTER SIOS-CIEUC - # 1136 hangul choseong sios-cieuc -317F HANGUL LETTER PANSIOS - # 1140 hangul choseong pansios -3180 HANGUL LETTER SSANGIEUNG - # 1147 hangul choseong ssangieung -3181 HANGUL LETTER YESIEUNG - * archaic velar nasal - # 114C hangul choseong yesieung -3182 HANGUL LETTER YESIEUNG-SIOS - # 11F1 hangul jongseong yesieung-sios -3183 HANGUL LETTER YESIEUNG-PANSIOS - # 11F2 hangul jongseong yesieung-pansios -3184 HANGUL LETTER KAPYEOUNPHIEUPH - # 1157 hangul choseong kapyeounphieuph -3185 HANGUL LETTER SSANGHIEUH - # 1158 hangul choseong ssanghieuh -3186 HANGUL LETTER YEORINHIEUH - * archaic glottal stop - # 1159 hangul choseong yeorinhieuh -3187 HANGUL LETTER YO-YA - # 1184 hangul jungseong yo-ya -3188 HANGUL LETTER YO-YAE - # 1185 hangul jungseong yo-yae -3189 HANGUL LETTER YO-I - # 1188 hangul jungseong yo-i -318A HANGUL LETTER YU-YEO - # 1191 hangul jungseong yu-yeo -318B HANGUL LETTER YU-YE - # 1192 hangul jungseong yu-ye -318C HANGUL LETTER YU-I - # 1194 hangul jungseong yu-i -318D HANGUL LETTER ARAEA - # 119E hangul jungseong araea -318E HANGUL LETTER ARAEAE - # 11A1 hangul jungseong araea-i -@@ 3190 Kanbun 319F -@ Kanbun -3190 IDEOGRAPHIC ANNOTATION LINKING MARK (Kanbun Tateten) - = KANBUN TATETEN -3191 IDEOGRAPHIC ANNOTATION REVERSE MARK (Kaeriten) - = KAERITEN RE -3192 IDEOGRAPHIC ANNOTATION ONE MARK (Kaeriten) - # <super> 4E00 -3193 IDEOGRAPHIC ANNOTATION TWO MARK (Kaeriten) - # <super> 4E8C -3194 IDEOGRAPHIC ANNOTATION THREE MARK (Kaeriten) - # <super> 4E09 -3195 IDEOGRAPHIC ANNOTATION FOUR MARK (Kaeriten) - # <super> 56DB -3196 IDEOGRAPHIC ANNOTATION TOP MARK (Kaeriten) - # <super> 4E0A -3197 IDEOGRAPHIC ANNOTATION MIDDLE MARK (Kaeriten) - # <super> 4E2D -3198 IDEOGRAPHIC ANNOTATION BOTTOM MARK (Kaeriten) - # <super> 4E0B -3199 IDEOGRAPHIC ANNOTATION FIRST MARK (Kaeriten) - # <super> 7532 -319A IDEOGRAPHIC ANNOTATION SECOND MARK (Kaeriten) - # <super> 4E59 -319B IDEOGRAPHIC ANNOTATION THIRD MARK (Kaeriten) - # <super> 4E19 -319C IDEOGRAPHIC ANNOTATION FOURTH MARK (Kaeriten) - # <super> 4E01 -319D IDEOGRAPHIC ANNOTATION HEAVEN MARK (Kaeriten) - # <super> 5929 -319E IDEOGRAPHIC ANNOTATION EARTH MARK (Kaeriten) - # <super> 5730 -319F IDEOGRAPHIC ANNOTATION MAN MARK (Kaeriten) - # <super> 4EBA -@@ 31A0 Bopomofo Extended 31BF -@+ See also the Bopomofo block -@ Extended Bopomofo for Minnan and Hakka -31A0 BOPOMOFO LETTER BU -31A1 BOPOMOFO LETTER ZI -31A2 BOPOMOFO LETTER JI -31A3 BOPOMOFO LETTER GU -31A4 BOPOMOFO LETTER EE -31A5 BOPOMOFO LETTER ENN -31A6 BOPOMOFO LETTER OO -31A7 BOPOMOFO LETTER ONN -31A8 BOPOMOFO LETTER IR -31A9 BOPOMOFO LETTER ANN -31AA BOPOMOFO LETTER INN -31AB BOPOMOFO LETTER UNN -31AC BOPOMOFO LETTER IM -31AD BOPOMOFO LETTER NGG -31AE BOPOMOFO LETTER AINN -31AF BOPOMOFO LETTER AUNN -31B0 BOPOMOFO LETTER AM -31B1 BOPOMOFO LETTER OM -31B2 BOPOMOFO LETTER ONG -31B3 BOPOMOFO LETTER INNN -31B4 BOPOMOFO FINAL LETTER P -31B5 BOPOMOFO FINAL LETTER T -31B6 BOPOMOFO FINAL LETTER K -31B7 BOPOMOFO FINAL LETTER H -@@ 31C0 CJK Strokes 31EF -@ CJK strokes -31C0 CJK STROKE T -31C1 CJK STROKE WG -31C2 CJK STROKE XG -31C3 CJK STROKE BXG -31C4 CJK STROKE SW -31C5 CJK STROKE HZZ -31C6 CJK STROKE HZG -31C7 CJK STROKE HP -31C8 CJK STROKE HZWG -31C9 CJK STROKE SZWG -31CA CJK STROKE HZT -31CB CJK STROKE HZZP -31CC CJK STROKE HPWG -31CD CJK STROKE HZW -31CE CJK STROKE HZZZ -31CF CJK STROKE N -@@ 31F0 Katakana Phonetic Extensions 31FF -@ Phonetic extensions for Ainu -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 Enclosed CJK Letters and Months 32FF -@ Parenthesized Hangul elements -3200 PARENTHESIZED HANGUL KIYEOK - # 0028 1100 0029 -3201 PARENTHESIZED HANGUL NIEUN - # 0028 1102 0029 -3202 PARENTHESIZED HANGUL TIKEUT - # 0028 1103 0029 -3203 PARENTHESIZED HANGUL RIEUL - # 0028 1105 0029 -3204 PARENTHESIZED HANGUL MIEUM - # 0028 1106 0029 -3205 PARENTHESIZED HANGUL PIEUP - # 0028 1107 0029 -3206 PARENTHESIZED HANGUL SIOS - # 0028 1109 0029 -3207 PARENTHESIZED HANGUL IEUNG - # 0028 110B 0029 -3208 PARENTHESIZED HANGUL CIEUC - # 0028 110C 0029 -3209 PARENTHESIZED HANGUL CHIEUCH - # 0028 110E 0029 -320A PARENTHESIZED HANGUL KHIEUKH - # 0028 110F 0029 -320B PARENTHESIZED HANGUL THIEUTH - # 0028 1110 0029 -320C PARENTHESIZED HANGUL PHIEUPH - # 0028 1111 0029 -320D PARENTHESIZED HANGUL HIEUH - # 0028 1112 0029 -@ Parenthesized Hangul syllables -320E PARENTHESIZED HANGUL KIYEOK A - # 0028 1100 1161 0029 -320F PARENTHESIZED HANGUL NIEUN A - # 0028 1102 1161 0029 -3210 PARENTHESIZED HANGUL TIKEUT A - # 0028 1103 1161 0029 -3211 PARENTHESIZED HANGUL RIEUL A - # 0028 1105 1161 0029 -3212 PARENTHESIZED HANGUL MIEUM A - # 0028 1106 1161 0029 -3213 PARENTHESIZED HANGUL PIEUP A - # 0028 1107 1161 0029 -3214 PARENTHESIZED HANGUL SIOS A - # 0028 1109 1161 0029 -3215 PARENTHESIZED HANGUL IEUNG A - # 0028 110B 1161 0029 -3216 PARENTHESIZED HANGUL CIEUC A - # 0028 110C 1161 0029 -3217 PARENTHESIZED HANGUL CHIEUCH A - # 0028 110E 1161 0029 -3218 PARENTHESIZED HANGUL KHIEUKH A - # 0028 110F 1161 0029 -3219 PARENTHESIZED HANGUL THIEUTH A - # 0028 1110 1161 0029 -321A PARENTHESIZED HANGUL PHIEUPH A - # 0028 1111 1161 0029 -321B PARENTHESIZED HANGUL HIEUH A - # 0028 1112 1161 0029 -321C PARENTHESIZED HANGUL CIEUC U - # 0028 110C 116E 0029 -@ Parenthesized Korean words -321D PARENTHESIZED KOREAN CHARACTER OJEON - # 0028 110B 1169 110C 1165 11AB 0029 -321E PARENTHESIZED KOREAN CHARACTER O HU - # 0028 110B 1169 1112 116E 0029 -@ Parenthesized ideographs -3220 PARENTHESIZED IDEOGRAPH ONE - # 0028 4E00 0029 -3221 PARENTHESIZED IDEOGRAPH TWO - # 0028 4E8C 0029 -3222 PARENTHESIZED IDEOGRAPH THREE - # 0028 4E09 0029 -3223 PARENTHESIZED IDEOGRAPH FOUR - # 0028 56DB 0029 -3224 PARENTHESIZED IDEOGRAPH FIVE - # 0028 4E94 0029 -3225 PARENTHESIZED IDEOGRAPH SIX - # 0028 516D 0029 -3226 PARENTHESIZED IDEOGRAPH SEVEN - # 0028 4E03 0029 -3227 PARENTHESIZED IDEOGRAPH EIGHT - # 0028 516B 0029 -3228 PARENTHESIZED IDEOGRAPH NINE - # 0028 4E5D 0029 -3229 PARENTHESIZED IDEOGRAPH TEN - # 0028 5341 0029 -322A PARENTHESIZED IDEOGRAPH MOON - * Monday - # 0028 6708 0029 -322B PARENTHESIZED IDEOGRAPH FIRE - * Tuesday - # 0028 706B 0029 -322C PARENTHESIZED IDEOGRAPH WATER - * Wednesday - # 0028 6C34 0029 -322D PARENTHESIZED IDEOGRAPH WOOD - * Thursday - # 0028 6728 0029 -322E PARENTHESIZED IDEOGRAPH METAL - * Friday - # 0028 91D1 0029 -322F PARENTHESIZED IDEOGRAPH EARTH - * Saturday - # 0028 571F 0029 -3230 PARENTHESIZED IDEOGRAPH SUN - * Sunday - # 0028 65E5 0029 -3231 PARENTHESIZED IDEOGRAPH STOCK - * incorporated - # 0028 682A 0029 -3232 PARENTHESIZED IDEOGRAPH HAVE - * limited - # 0028 6709 0029 -3233 PARENTHESIZED IDEOGRAPH SOCIETY - * company - # 0028 793E 0029 -3234 PARENTHESIZED IDEOGRAPH NAME - # 0028 540D 0029 -3235 PARENTHESIZED IDEOGRAPH SPECIAL - # 0028 7279 0029 -3236 PARENTHESIZED IDEOGRAPH FINANCIAL - # 0028 8CA1 0029 -3237 PARENTHESIZED IDEOGRAPH CONGRATULATION - # 0028 795D 0029 -3238 PARENTHESIZED IDEOGRAPH LABOR - # 0028 52B4 0029 -3239 PARENTHESIZED IDEOGRAPH REPRESENT - # 0028 4EE3 0029 -323A PARENTHESIZED IDEOGRAPH CALL - # 0028 547C 0029 -323B PARENTHESIZED IDEOGRAPH STUDY - # 0028 5B66 0029 -323C PARENTHESIZED IDEOGRAPH SUPERVISE - # 0028 76E3 0029 -323D PARENTHESIZED IDEOGRAPH ENTERPRISE - # 0028 4F01 0029 -323E PARENTHESIZED IDEOGRAPH RESOURCE - # 0028 8CC7 0029 -323F PARENTHESIZED IDEOGRAPH ALLIANCE - # 0028 5354 0029 -3240 PARENTHESIZED IDEOGRAPH FESTIVAL - # 0028 796D 0029 -3241 PARENTHESIZED IDEOGRAPH REST - # 0028 4F11 0029 -3242 PARENTHESIZED IDEOGRAPH SELF - * from - # 0028 81EA 0029 -3243 PARENTHESIZED IDEOGRAPH REACH - * to - # 0028 81F3 0029 -@ Squared Latin abbreviation -3250 PARTNERSHIP SIGN - # <square> 0050 0054 0045 -@ Circled numbers -3251 CIRCLED NUMBER TWENTY ONE - # <circle> 0032 0031 -3252 CIRCLED NUMBER TWENTY TWO - # <circle> 0032 0032 -3253 CIRCLED NUMBER TWENTY THREE - # <circle> 0032 0033 -3254 CIRCLED NUMBER TWENTY FOUR - # <circle> 0032 0034 -3255 CIRCLED NUMBER TWENTY FIVE - # <circle> 0032 0035 -3256 CIRCLED NUMBER TWENTY SIX - # <circle> 0032 0036 -3257 CIRCLED NUMBER TWENTY SEVEN - # <circle> 0032 0037 -3258 CIRCLED NUMBER TWENTY EIGHT - # <circle> 0032 0038 -3259 CIRCLED NUMBER TWENTY NINE - # <circle> 0032 0039 -325A CIRCLED NUMBER THIRTY - # <circle> 0033 0030 -325B CIRCLED NUMBER THIRTY ONE - # <circle> 0033 0031 -325C CIRCLED NUMBER THIRTY TWO - # <circle> 0033 0032 -325D CIRCLED NUMBER THIRTY THREE - # <circle> 0033 0033 -325E CIRCLED NUMBER THIRTY FOUR - # <circle> 0033 0034 -325F CIRCLED NUMBER THIRTY FIVE - # <circle> 0033 0035 -@ Circled Hangul elements -3260 CIRCLED HANGUL KIYEOK - # <circle> 1100 -3261 CIRCLED HANGUL NIEUN - # <circle> 1102 -3262 CIRCLED HANGUL TIKEUT - # <circle> 1103 -3263 CIRCLED HANGUL RIEUL - # <circle> 1105 -3264 CIRCLED HANGUL MIEUM - # <circle> 1106 -3265 CIRCLED HANGUL PIEUP - # <circle> 1107 -3266 CIRCLED HANGUL SIOS - # <circle> 1109 -3267 CIRCLED HANGUL IEUNG - # <circle> 110B -3268 CIRCLED HANGUL CIEUC - # <circle> 110C -3269 CIRCLED HANGUL CHIEUCH - # <circle> 110E -326A CIRCLED HANGUL KHIEUKH - # <circle> 110F -326B CIRCLED HANGUL THIEUTH - # <circle> 1110 -326C CIRCLED HANGUL PHIEUPH - # <circle> 1111 -326D CIRCLED HANGUL HIEUH - # <circle> 1112 -@ Circled Hangul syllables -326E CIRCLED HANGUL KIYEOK A - # <circle> 1100 1161 -326F CIRCLED HANGUL NIEUN A - # <circle> 1102 1161 -3270 CIRCLED HANGUL TIKEUT A - # <circle> 1103 1161 -3271 CIRCLED HANGUL RIEUL A - # <circle> 1105 1161 -3272 CIRCLED HANGUL MIEUM A - # <circle> 1106 1161 -3273 CIRCLED HANGUL PIEUP A - # <circle> 1107 1161 -3274 CIRCLED HANGUL SIOS A - # <circle> 1109 1161 -3275 CIRCLED HANGUL IEUNG A - # <circle> 110B 1161 -3276 CIRCLED HANGUL CIEUC A - # <circle> 110C 1161 -3277 CIRCLED HANGUL CHIEUCH A - # <circle> 110E 1161 -3278 CIRCLED HANGUL KHIEUKH A - # <circle> 110F 1161 -3279 CIRCLED HANGUL THIEUTH A - # <circle> 1110 1161 -327A CIRCLED HANGUL PHIEUPH A - # <circle> 1111 1161 -327B CIRCLED HANGUL HIEUH A - # <circle> 1112 1161 -@ Circled Korean words -327C CIRCLED KOREAN CHARACTER CHAMKO - # <circle> 110E 1161 11B7 1100 1169 -327D CIRCLED KOREAN CHARACTER JUEUI - # <circle> 110C 116E 110B 1174 -@ Circled Hangul syllable -327E CIRCLED HANGUL IEUNG U - * postal code mark - # <circle> 110B 116E -@ Symbol -327F KOREAN STANDARD SYMBOL -@ Circled ideographs -3280 CIRCLED IDEOGRAPH ONE - = maru-iti, symbol of unification - # <circle> 4E00 -3281 CIRCLED IDEOGRAPH TWO - # <circle> 4E8C -3282 CIRCLED IDEOGRAPH THREE - # <circle> 4E09 -3283 CIRCLED IDEOGRAPH FOUR - # <circle> 56DB -3284 CIRCLED IDEOGRAPH FIVE - # <circle> 4E94 -3285 CIRCLED IDEOGRAPH SIX - # <circle> 516D -3286 CIRCLED IDEOGRAPH SEVEN - # <circle> 4E03 -3287 CIRCLED IDEOGRAPH EIGHT - # <circle> 516B -3288 CIRCLED IDEOGRAPH NINE - # <circle> 4E5D -3289 CIRCLED IDEOGRAPH TEN - # <circle> 5341 -328A CIRCLED IDEOGRAPH MOON - * Monday - # <circle> 6708 -328B CIRCLED IDEOGRAPH FIRE - * Tuesday - # <circle> 706B -328C CIRCLED IDEOGRAPH WATER - * Wednesday - # <circle> 6C34 -328D CIRCLED IDEOGRAPH WOOD - * Thursday - # <circle> 6728 -328E CIRCLED IDEOGRAPH METAL - * Friday - # <circle> 91D1 -328F CIRCLED IDEOGRAPH EARTH - * Saturday - # <circle> 571F -3290 CIRCLED IDEOGRAPH SUN - * Sunday - # <circle> 65E5 -3291 CIRCLED IDEOGRAPH STOCK - * incorporated - # <circle> 682A -3292 CIRCLED IDEOGRAPH HAVE - * limited - # <circle> 6709 -3293 CIRCLED IDEOGRAPH SOCIETY - * company - # <circle> 793E -3294 CIRCLED IDEOGRAPH NAME - # <circle> 540D -3295 CIRCLED IDEOGRAPH SPECIAL - # <circle> 7279 -3296 CIRCLED IDEOGRAPH FINANCIAL - # <circle> 8CA1 -3297 CIRCLED IDEOGRAPH CONGRATULATION - # <circle> 795D -3298 CIRCLED IDEOGRAPH LABOR - # <circle> 52B4 -3299 CIRCLED IDEOGRAPH SECRET - # <circle> 79D8 -329A CIRCLED IDEOGRAPH MALE - # <circle> 7537 -329B CIRCLED IDEOGRAPH FEMALE - # <circle> 5973 -329C CIRCLED IDEOGRAPH SUITABLE - # <circle> 9069 -329D CIRCLED IDEOGRAPH EXCELLENT - # <circle> 512A -329E CIRCLED IDEOGRAPH PRINT - * name seal - # <circle> 5370 -329F CIRCLED IDEOGRAPH ATTENTION - # <circle> 6CE8 -32A0 CIRCLED IDEOGRAPH ITEM - # <circle> 9805 -32A1 CIRCLED IDEOGRAPH REST - * holiday - # <circle> 4F11 -32A2 CIRCLED IDEOGRAPH COPY - # <circle> 5199 -32A3 CIRCLED IDEOGRAPH CORRECT - # <circle> 6B63 -32A4 CIRCLED IDEOGRAPH HIGH - # <circle> 4E0A -32A5 CIRCLED IDEOGRAPH CENTRE - # <circle> 4E2D -32A6 CIRCLED IDEOGRAPH LOW - # <circle> 4E0B -32A7 CIRCLED IDEOGRAPH LEFT - # <circle> 5DE6 -32A8 CIRCLED IDEOGRAPH RIGHT - # <circle> 53F3 -32A9 CIRCLED IDEOGRAPH MEDICINE - # <circle> 533B -32AA CIRCLED IDEOGRAPH RELIGION - # <circle> 5B97 -32AB CIRCLED IDEOGRAPH STUDY - # <circle> 5B66 -32AC CIRCLED IDEOGRAPH SUPERVISE - # <circle> 76E3 -32AD CIRCLED IDEOGRAPH ENTERPRISE - # <circle> 4F01 -32AE CIRCLED IDEOGRAPH RESOURCE - # <circle> 8CC7 -32AF CIRCLED IDEOGRAPH ALLIANCE - # <circle> 5354 -32B0 CIRCLED IDEOGRAPH NIGHT - # <circle> 591C -@ Circled numbers -32B1 CIRCLED NUMBER THIRTY SIX - # <circle> 0033 0036 -32B2 CIRCLED NUMBER THIRTY SEVEN - # <circle> 0033 0037 -32B3 CIRCLED NUMBER THIRTY EIGHT - # <circle> 0033 0038 -32B4 CIRCLED NUMBER THIRTY NINE - # <circle> 0033 0039 -32B5 CIRCLED NUMBER FORTY - # <circle> 0034 0030 -32B6 CIRCLED NUMBER FORTY ONE - # <circle> 0034 0031 -32B7 CIRCLED NUMBER FORTY TWO - # <circle> 0034 0032 -32B8 CIRCLED NUMBER FORTY THREE - # <circle> 0034 0033 -32B9 CIRCLED NUMBER FORTY FOUR - # <circle> 0034 0034 -32BA CIRCLED NUMBER FORTY FIVE - # <circle> 0034 0035 -32BB CIRCLED NUMBER FORTY SIX - # <circle> 0034 0036 -32BC CIRCLED NUMBER FORTY SEVEN - # <circle> 0034 0037 -32BD CIRCLED NUMBER FORTY EIGHT - # <circle> 0034 0038 -32BE CIRCLED NUMBER FORTY NINE - # <circle> 0034 0039 -32BF CIRCLED NUMBER FIFTY - # <circle> 0035 0030 -@ Telegraph symbols for months -32C0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY - # 0031 6708 -32C1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY - # 0032 6708 -32C2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH - # 0033 6708 -32C3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL - # 0034 6708 -32C4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY - # 0035 6708 -32C5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE - # 0036 6708 -32C6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY - # 0037 6708 -32C7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST - # 0038 6708 -32C8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER - # 0039 6708 -32C9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER - # 0031 0030 6708 -32CA IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER - # 0031 0031 6708 -32CB IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER - # 0031 0032 6708 -@ Squared Latin abbreviations -32CC SQUARE HG - # <square> 0048 0067 -32CD SQUARE ERG - # <square> 0065 0072 0067 -32CE SQUARE EV - # <square> 0065 0056 -32CF LIMITED LIABILITY SIGN - # <square> 004C 0054 0044 -@ Circled Katakana -32D0 CIRCLED KATAKANA A - # <circle> 30A2 -32D1 CIRCLED KATAKANA I - # <circle> 30A4 -32D2 CIRCLED KATAKANA U - # <circle> 30A6 -32D3 CIRCLED KATAKANA E - # <circle> 30A8 -32D4 CIRCLED KATAKANA O - # <circle> 30AA -32D5 CIRCLED KATAKANA KA - # <circle> 30AB -32D6 CIRCLED KATAKANA KI - # <circle> 30AD -32D7 CIRCLED KATAKANA KU - # <circle> 30AF -32D8 CIRCLED KATAKANA KE - # <circle> 30B1 -32D9 CIRCLED KATAKANA KO - # <circle> 30B3 -32DA CIRCLED KATAKANA SA - # <circle> 30B5 -32DB CIRCLED KATAKANA SI - # <circle> 30B7 -32DC CIRCLED KATAKANA SU - # <circle> 30B9 -32DD CIRCLED KATAKANA SE - # <circle> 30BB -32DE CIRCLED KATAKANA SO - # <circle> 30BD -32DF CIRCLED KATAKANA TA - # <circle> 30BF -32E0 CIRCLED KATAKANA TI - # <circle> 30C1 -32E1 CIRCLED KATAKANA TU - # <circle> 30C4 -32E2 CIRCLED KATAKANA TE - # <circle> 30C6 -32E3 CIRCLED KATAKANA TO - # <circle> 30C8 -32E4 CIRCLED KATAKANA NA - # <circle> 30CA -32E5 CIRCLED KATAKANA NI - # <circle> 30CB -32E6 CIRCLED KATAKANA NU - # <circle> 30CC -32E7 CIRCLED KATAKANA NE - # <circle> 30CD -32E8 CIRCLED KATAKANA NO - # <circle> 30CE -32E9 CIRCLED KATAKANA HA - # <circle> 30CF -32EA CIRCLED KATAKANA HI - # <circle> 30D2 -32EB CIRCLED KATAKANA HU - # <circle> 30D5 -32EC CIRCLED KATAKANA HE - # <circle> 30D8 -32ED CIRCLED KATAKANA HO - # <circle> 30DB -32EE CIRCLED KATAKANA MA - # <circle> 30DE -32EF CIRCLED KATAKANA MI - # <circle> 30DF -32F0 CIRCLED KATAKANA MU - # <circle> 30E0 -32F1 CIRCLED KATAKANA ME - # <circle> 30E1 -32F2 CIRCLED KATAKANA MO - # <circle> 30E2 -32F3 CIRCLED KATAKANA YA - # <circle> 30E4 -32F4 CIRCLED KATAKANA YU - # <circle> 30E6 -32F5 CIRCLED KATAKANA YO - # <circle> 30E8 -32F6 CIRCLED KATAKANA RA - # <circle> 30E9 -32F7 CIRCLED KATAKANA RI - # <circle> 30EA -32F8 CIRCLED KATAKANA RU - # <circle> 30EB -32F9 CIRCLED KATAKANA RE - # <circle> 30EC -32FA CIRCLED KATAKANA RO - # <circle> 30ED -32FB CIRCLED KATAKANA WA - # <circle> 30EF -32FC CIRCLED KATAKANA WI - # <circle> 30F0 -32FD CIRCLED KATAKANA WE - # <circle> 30F1 -32FE CIRCLED KATAKANA WO - # <circle> 30F2 -@@ 3300 CJK Compatibility 33FF -@ Squared Katakana words -3300 SQUARE APAATO - * apartment - # <square> 30A2 30D1 30FC 30C8 -3301 SQUARE ARUHUA - * alpha - # <square> 30A2 30EB 30D5 30A1 -3302 SQUARE ANPEA - * ampere - # <square> 30A2 30F3 30DA 30A2 -3303 SQUARE AARU - * are (unit of area) - # <square> 30A2 30FC 30EB -3304 SQUARE ININGU - * inning - # <square> 30A4 30CB 30F3 30B0 -3305 SQUARE INTI - * inch - # <square> 30A4 30F3 30C1 -3306 SQUARE UON - * won (Korean currency) - # <square> 30A6 30A9 30F3 -3307 SQUARE ESUKUUDO - * escudo (Portuguese currency) - # <square> 30A8 30B9 30AF 30FC 30C9 -3308 SQUARE EEKAA - * acre - # <square> 30A8 30FC 30AB 30FC -3309 SQUARE ONSU - * ounce - # <square> 30AA 30F3 30B9 -330A SQUARE OOMU - * ohm - # <square> 30AA 30FC 30E0 -330B SQUARE KAIRI - * kai-ri: nautical mile - # <square> 30AB 30A4 30EA -330C SQUARE KARATTO - * carat - # <square> 30AB 30E9 30C3 30C8 -330D SQUARE KARORII - * calorie - # <square> 30AB 30ED 30EA 30FC -330E SQUARE GARON - * gallon - # <square> 30AC 30ED 30F3 -330F SQUARE GANMA - * gamma - # <square> 30AC 30F3 30DE -3310 SQUARE GIGA - * giga- - # <square> 30AE 30AC -3311 SQUARE GINII - * guinea - # <square> 30AE 30CB 30FC -3312 SQUARE KYURII - * curie - # <square> 30AD 30E5 30EA 30FC -3313 SQUARE GIRUDAA - * guilder - # <square> 30AE 30EB 30C0 30FC -3314 SQUARE KIRO - * kilo- - # <square> 30AD 30ED -3315 SQUARE KIROGURAMU - * kilogram - # <square> 30AD 30ED 30B0 30E9 30E0 -3316 SQUARE KIROMEETORU - * kilometer - # <square> 30AD 30ED 30E1 30FC 30C8 30EB -3317 SQUARE KIROWATTO - * kilowatt - # <square> 30AD 30ED 30EF 30C3 30C8 -3318 SQUARE GURAMU - * gram - # <square> 30B0 30E9 30E0 -3319 SQUARE GURAMUTON - * gram ton - # <square> 30B0 30E9 30E0 30C8 30F3 -331A SQUARE KURUZEIRO - * cruzeiro (Brazilian currency) - # <square> 30AF 30EB 30BC 30A4 30ED -331B SQUARE KUROONE - * krone - # <square> 30AF 30ED 30FC 30CD -331C SQUARE KEESU - * case - # <square> 30B1 30FC 30B9 -331D SQUARE KORUNA - * koruna (Czech currency) - # <square> 30B3 30EB 30CA -331E SQUARE KOOPO - * co-op - # <square> 30B3 30FC 30DD -331F SQUARE SAIKURU - * cycle - # <square> 30B5 30A4 30AF 30EB -3320 SQUARE SANTIIMU - * centime - # <square> 30B5 30F3 30C1 30FC 30E0 -3321 SQUARE SIRINGU - * shilling - # <square> 30B7 30EA 30F3 30B0 -3322 SQUARE SENTI - * centi- - # <square> 30BB 30F3 30C1 -3323 SQUARE SENTO - * cent - # <square> 30BB 30F3 30C8 -3324 SQUARE DAASU - * dozen - # <square> 30C0 30FC 30B9 -3325 SQUARE DESI - * deci- - # <square> 30C7 30B7 -3326 SQUARE DORU - * dollar - # <square> 30C9 30EB -3327 SQUARE TON - * ton - # <square> 30C8 30F3 -3328 SQUARE NANO - * nano- - # <square> 30CA 30CE -3329 SQUARE NOTTO - * knot, nautical mile - # <square> 30CE 30C3 30C8 -332A SQUARE HAITU - * heights - # <square> 30CF 30A4 30C4 -332B SQUARE PAASENTO - * percent - # <square> 30D1 30FC 30BB 30F3 30C8 -332C SQUARE PAATU - * parts - # <square> 30D1 30FC 30C4 -332D SQUARE BAARERU - * barrel - # <square> 30D0 30FC 30EC 30EB -332E SQUARE PIASUTORU - * piaster - # <square> 30D4 30A2 30B9 30C8 30EB -332F SQUARE PIKURU - * picul (unit of weight) - # <square> 30D4 30AF 30EB -3330 SQUARE PIKO - * pico- - # <square> 30D4 30B3 -3331 SQUARE BIRU - * building - # <square> 30D3 30EB -3332 SQUARE HUARADDO - * farad - # <square> 30D5 30A1 30E9 30C3 30C9 -3333 SQUARE HUIITO - * feet - # <square> 30D5 30A3 30FC 30C8 -3334 SQUARE BUSSYERU - * bushel - # <square> 30D6 30C3 30B7 30A7 30EB -3335 SQUARE HURAN - * franc - # <square> 30D5 30E9 30F3 -3336 SQUARE HEKUTAARU - * hectare - # <square> 30D8 30AF 30BF 30FC 30EB -3337 SQUARE PESO - * peso - # <square> 30DA 30BD -3338 SQUARE PENIHI - * pfennig - # <square> 30DA 30CB 30D2 -3339 SQUARE HERUTU - * hertz - # <square> 30D8 30EB 30C4 -333A SQUARE PENSU - * pence - # <square> 30DA 30F3 30B9 -333B SQUARE PEEZI - * page - # <square> 30DA 30FC 30B8 -333C SQUARE BEETA - * beta - # <square> 30D9 30FC 30BF -333D SQUARE POINTO - * point - # <square> 30DD 30A4 30F3 30C8 -333E SQUARE BORUTO - * volt, bolt - # <square> 30DC 30EB 30C8 -333F SQUARE HON - * hon: volume - # <square> 30DB 30F3 -3340 SQUARE PONDO - * pound - # <square> 30DD 30F3 30C9 -3341 SQUARE HOORU - * hall - # <square> 30DB 30FC 30EB -3342 SQUARE HOON - * horn - # <square> 30DB 30FC 30F3 -3343 SQUARE MAIKURO - * micro- - # <square> 30DE 30A4 30AF 30ED -3344 SQUARE MAIRU - * mile - # <square> 30DE 30A4 30EB -3345 SQUARE MAHHA - * mach - # <square> 30DE 30C3 30CF -3346 SQUARE MARUKU - * mark - # <square> 30DE 30EB 30AF -3347 SQUARE MANSYON - * mansion (i.e. better quality apartment) - # <square> 30DE 30F3 30B7 30E7 30F3 -3348 SQUARE MIKURON - * micron - # <square> 30DF 30AF 30ED 30F3 -3349 SQUARE MIRI - * milli- - # <square> 30DF 30EA -334A SQUARE MIRIBAARU - * millibar - # <square> 30DF 30EA 30D0 30FC 30EB -334B SQUARE MEGA - * mega- - # <square> 30E1 30AC -334C SQUARE MEGATON - * megaton - # <square> 30E1 30AC 30C8 30F3 -334D SQUARE MEETORU - * meter - # <square> 30E1 30FC 30C8 30EB -334E SQUARE YAADO - * yard - # <square> 30E4 30FC 30C9 -334F SQUARE YAARU - * yard - # <square> 30E4 30FC 30EB -3350 SQUARE YUAN - * yuan (Chinese currency) - # <square> 30E6 30A2 30F3 -3351 SQUARE RITTORU - * liter - # <square> 30EA 30C3 30C8 30EB -3352 SQUARE RIRA - * lira - # <square> 30EA 30E9 -3353 SQUARE RUPII - * rupee - # <square> 30EB 30D4 30FC -3354 SQUARE RUUBURU - * ruble - # <square> 30EB 30FC 30D6 30EB -3355 SQUARE REMU - * rem (unit of radiation) - # <square> 30EC 30E0 -3356 SQUARE RENTOGEN - * roentgen - # <square> 30EC 30F3 30C8 30B2 30F3 -3357 SQUARE WATTO - * watt - # <square> 30EF 30C3 30C8 -@ Telegraph symbols for hours -3358 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO - # 0030 70B9 -3359 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE - # 0031 70B9 -335A IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO - # 0032 70B9 -335B IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE - # 0033 70B9 -335C IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR - # 0034 70B9 -335D IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE - # 0035 70B9 -335E IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX - # 0036 70B9 -335F IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN - # 0037 70B9 -3360 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT - # 0038 70B9 -3361 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE - # 0039 70B9 -3362 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN - # 0031 0030 70B9 -3363 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN - # 0031 0031 70B9 -3364 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE - # 0031 0032 70B9 -3365 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN - # 0031 0033 70B9 -3366 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN - # 0031 0034 70B9 -3367 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN - # 0031 0035 70B9 -3368 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN - # 0031 0036 70B9 -3369 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN - # 0031 0037 70B9 -336A IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN - # 0031 0038 70B9 -336B IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN - # 0031 0039 70B9 -336C IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY - # 0032 0030 70B9 -336D IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE - # 0032 0031 70B9 -336E IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO - # 0032 0032 70B9 -336F IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE - # 0032 0033 70B9 -3370 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR - # 0032 0034 70B9 -@ Squared Latin abbreviations -3371 SQUARE HPA - # <square> 0068 0050 0061 -3372 SQUARE DA - # <square> 0064 0061 -3373 SQUARE AU - # <square> 0041 0055 -3374 SQUARE BAR - # <square> 0062 0061 0072 -3375 SQUARE OV - # <square> 006F 0056 -3376 SQUARE PC - # <square> 0070 0063 -3377 SQUARE DM - # <square> 0064 006D -3378 SQUARE DM SQUARED - # <square> 0064 006D 00B2 -3379 SQUARE DM CUBED - # <square> 0064 006D 00B3 -337A SQUARE IU - # <square> 0049 0055 -@ Japanese era names -337B SQUARE ERA NAME HEISEI - # <square> 5E73 6210 -337C SQUARE ERA NAME SYOUWA - # <square> 662D 548C -337D SQUARE ERA NAME TAISYOU - # <square> 5927 6B63 -337E SQUARE ERA NAME MEIZI - # <square> 660E 6CBB -@ Japanese corporation -337F SQUARE CORPORATION - = kabusiki-gaisya - * incorporated - # <square> 682A 5F0F 4F1A 793E -@ Squared Latin abbreviations -3380 SQUARE PA AMPS - # <square> 0070 0041 -3381 SQUARE NA - # <square> 006E 0041 -3382 SQUARE MU A - # <square> 03BC 0041 -3383 SQUARE MA - # <square> 006D 0041 -3384 SQUARE KA - # <square> 006B 0041 -3385 SQUARE KB - # <square> 004B 0042 -3386 SQUARE MB - # <square> 004D 0042 -3387 SQUARE GB - # <square> 0047 0042 -3388 SQUARE CAL - # <square> 0063 0061 006C -3389 SQUARE KCAL - # <square> 006B 0063 0061 006C -338A SQUARE PF - # <square> 0070 0046 -338B SQUARE NF - # <square> 006E 0046 -338C SQUARE MU F - # <square> 03BC 0046 -338D SQUARE MU G - # <square> 03BC 0067 -338E SQUARE MG - # <square> 006D 0067 -338F SQUARE KG - # <square> 006B 0067 -3390 SQUARE HZ - # <square> 0048 007A -3391 SQUARE KHZ - # <square> 006B 0048 007A -3392 SQUARE MHZ - # <square> 004D 0048 007A -3393 SQUARE GHZ - # <square> 0047 0048 007A -3394 SQUARE THZ - # <square> 0054 0048 007A -3395 SQUARE MU L - # <square> 03BC 2113 -3396 SQUARE ML - # <square> 006D 2113 -3397 SQUARE DL - # <square> 0064 2113 -3398 SQUARE KL - # <square> 006B 2113 -3399 SQUARE FM - # <square> 0066 006D -339A SQUARE NM - # <square> 006E 006D -339B SQUARE MU M - # <square> 03BC 006D -339C SQUARE MM - # <square> 006D 006D -339D SQUARE CM - # <square> 0063 006D -339E SQUARE KM - # <square> 006B 006D -339F SQUARE MM SQUARED - # <square> 006D 006D 00B2 -33A0 SQUARE CM SQUARED - # <square> 0063 006D 00B2 -33A1 SQUARE M SQUARED - # <square> 006D 00B2 -33A2 SQUARE KM SQUARED - # <square> 006B 006D 00B2 -33A3 SQUARE MM CUBED - # <square> 006D 006D 00B3 -33A4 SQUARE CM CUBED - # <square> 0063 006D 00B3 -33A5 SQUARE M CUBED - # <square> 006D 00B3 -33A6 SQUARE KM CUBED - # <square> 006B 006D 00B3 -33A7 SQUARE M OVER S - # <square> 006D 2215 0073 -33A8 SQUARE M OVER S SQUARED - # <square> 006D 2215 0073 00B2 -33A9 SQUARE PA - # <square> 0050 0061 -33AA SQUARE KPA - # <square> 006B 0050 0061 -33AB SQUARE MPA - # <square> 004D 0050 0061 -33AC SQUARE GPA - # <square> 0047 0050 0061 -33AD SQUARE RAD - # <square> 0072 0061 0064 -33AE SQUARE RAD OVER S - # <square> 0072 0061 0064 2215 0073 -33AF SQUARE RAD OVER S SQUARED - # <square> 0072 0061 0064 2215 0073 00B2 -33B0 SQUARE PS - # <square> 0070 0073 -33B1 SQUARE NS - # <square> 006E 0073 -33B2 SQUARE MU S - # <square> 03BC 0073 -33B3 SQUARE MS - # <square> 006D 0073 -33B4 SQUARE PV - # <square> 0070 0056 -33B5 SQUARE NV - # <square> 006E 0056 -33B6 SQUARE MU V - # <square> 03BC 0056 -33B7 SQUARE MV - # <square> 006D 0056 -33B8 SQUARE KV - # <square> 006B 0056 -33B9 SQUARE MV MEGA - # <square> 004D 0056 -33BA SQUARE PW - # <square> 0070 0057 -33BB SQUARE NW - # <square> 006E 0057 -33BC SQUARE MU W - # <square> 03BC 0057 -33BD SQUARE MW - # <square> 006D 0057 -33BE SQUARE KW - # <square> 006B 0057 -33BF SQUARE MW MEGA - # <square> 004D 0057 -33C0 SQUARE K OHM - # <square> 006B 03A9 -33C1 SQUARE M OHM - # <square> 004D 03A9 -33C2 SQUARE AM - # <square> 0061 002E 006D 002E -33C3 SQUARE BQ - # <square> 0042 0071 -33C4 SQUARE CC - # <square> 0063 0063 -33C5 SQUARE CD - # <square> 0063 0064 -33C6 SQUARE C OVER KG - # <square> 0043 2215 006B 0067 -33C7 SQUARE CO - # <square> 0043 006F 002E -33C8 SQUARE DB - # <square> 0064 0042 -33C9 SQUARE GY - # <square> 0047 0079 -33CA SQUARE HA - # <square> 0068 0061 -33CB SQUARE HP - # <square> 0048 0050 -33CC SQUARE IN - # <square> 0069 006E -33CD SQUARE KK - # <square> 004B 004B -33CE SQUARE KM CAPITAL - # <square> 004B 004D -33CF SQUARE KT - # <square> 006B 0074 -33D0 SQUARE LM - # <square> 006C 006D -33D1 SQUARE LN - # <square> 006C 006E -33D2 SQUARE LOG - # <square> 006C 006F 0067 -33D3 SQUARE LX - # <square> 006C 0078 -33D4 SQUARE MB SMALL - # <square> 006D 0062 -33D5 SQUARE MIL - # <square> 006D 0069 006C -33D6 SQUARE MOL - # <square> 006D 006F 006C -33D7 SQUARE PH - # <square> 0050 0048 -33D8 SQUARE PM - # <square> 0070 002E 006D 002E -33D9 SQUARE PPM - # <square> 0050 0050 004D -33DA SQUARE PR - # <square> 0050 0052 -33DB SQUARE SR - # <square> 0073 0072 -33DC SQUARE SV - # <square> 0053 0076 -33DD SQUARE WB - # <square> 0057 0062 -33DE SQUARE V OVER M - # <square> 0056 2215 006D -33DF SQUARE A OVER M - # <square> 0041 2215 006D -@ Telegraph symbols for days -33E0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE - # 0031 65E5 -33E1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO - # 0032 65E5 -33E2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE - # 0033 65E5 -33E3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR - # 0034 65E5 -33E4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE - # 0035 65E5 -33E5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX - # 0036 65E5 -33E6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN - # 0037 65E5 -33E7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT - # 0038 65E5 -33E8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE - # 0039 65E5 -33E9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN - # 0031 0030 65E5 -33EA IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN - # 0031 0031 65E5 -33EB IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE - # 0031 0032 65E5 -33EC IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN - # 0031 0033 65E5 -33ED IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN - # 0031 0034 65E5 -33EE IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN - # 0031 0035 65E5 -33EF IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN - # 0031 0036 65E5 -33F0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN - # 0031 0037 65E5 -33F1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN - # 0031 0038 65E5 -33F2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN - # 0031 0039 65E5 -33F3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY - # 0032 0030 65E5 -33F4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE - # 0032 0031 65E5 -33F5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO - # 0032 0032 65E5 -33F6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE - # 0032 0033 65E5 -33F7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR - # 0032 0034 65E5 -33F8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE - # 0032 0035 65E5 -33F9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX - # 0032 0036 65E5 -33FA IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN - # 0032 0037 65E5 -33FB IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT - # 0032 0038 65E5 -33FC IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE - # 0032 0039 65E5 -33FD IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY - # 0033 0030 65E5 -33FE IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE - # 0033 0031 65E5 -@ Squared Latin abbreviation -33FF SQUARE GAL - # <square> 0067 0061 006C -@@ 3400 CJK Unified Ideographs Extension A 4DB5 -@@ 4DC0 Yijing Hexagram Symbols 4DFF -@ Yijing hexagram symbols -4DC0 HEXAGRAM FOR THE CREATIVE HEAVEN -4DC1 HEXAGRAM FOR THE RECEPTIVE EARTH -4DC2 HEXAGRAM FOR DIFFICULTY AT THE BEGINNING -4DC3 HEXAGRAM FOR YOUTHFUL FOLLY -4DC4 HEXAGRAM FOR WAITING -4DC5 HEXAGRAM FOR CONFLICT -4DC6 HEXAGRAM FOR THE ARMY -4DC7 HEXAGRAM FOR HOLDING TOGETHER -4DC8 HEXAGRAM FOR SMALL TAMING -4DC9 HEXAGRAM FOR TREADING -4DCA HEXAGRAM FOR PEACE -4DCB HEXAGRAM FOR STANDSTILL -4DCC HEXAGRAM FOR FELLOWSHIP -4DCD HEXAGRAM FOR GREAT POSSESSION -4DCE HEXAGRAM FOR MODESTY -4DCF HEXAGRAM FOR ENTHUSIASM -4DD0 HEXAGRAM FOR FOLLOWING -4DD1 HEXAGRAM FOR WORK ON THE DECAYED -4DD2 HEXAGRAM FOR APPROACH -4DD3 HEXAGRAM FOR CONTEMPLATION -4DD4 HEXAGRAM FOR BITING THROUGH -4DD5 HEXAGRAM FOR GRACE -4DD6 HEXAGRAM FOR SPLITTING APART -4DD7 HEXAGRAM FOR RETURN -4DD8 HEXAGRAM FOR INNOCENCE -4DD9 HEXAGRAM FOR GREAT TAMING -4DDA HEXAGRAM FOR MOUTH CORNERS -4DDB HEXAGRAM FOR GREAT PREPONDERANCE -4DDC HEXAGRAM FOR THE ABYSMAL WATER -4DDD HEXAGRAM FOR THE CLINGING FIRE -4DDE HEXAGRAM FOR INFLUENCE -4DDF HEXAGRAM FOR DURATION -4DE0 HEXAGRAM FOR RETREAT -4DE1 HEXAGRAM FOR GREAT POWER -4DE2 HEXAGRAM FOR PROGRESS -4DE3 HEXAGRAM FOR DARKENING OF THE LIGHT -4DE4 HEXAGRAM FOR THE FAMILY -4DE5 HEXAGRAM FOR OPPOSITION -4DE6 HEXAGRAM FOR OBSTRUCTION -4DE7 HEXAGRAM FOR DELIVERANCE -4DE8 HEXAGRAM FOR DECREASE -4DE9 HEXAGRAM FOR INCREASE -4DEA HEXAGRAM FOR BREAKTHROUGH -4DEB HEXAGRAM FOR COMING TO MEET -4DEC HEXAGRAM FOR GATHERING TOGETHER -4DED HEXAGRAM FOR PUSHING UPWARD -4DEE HEXAGRAM FOR OPPRESSION -4DEF HEXAGRAM FOR THE WELL -4DF0 HEXAGRAM FOR REVOLUTION -4DF1 HEXAGRAM FOR THE CAULDRON -4DF2 HEXAGRAM FOR THE AROUSING THUNDER -4DF3 HEXAGRAM FOR THE KEEPING STILL MOUNTAIN -4DF4 HEXAGRAM FOR DEVELOPMENT -4DF5 HEXAGRAM FOR THE MARRYING MAIDEN -4DF6 HEXAGRAM FOR ABUNDANCE -4DF7 HEXAGRAM FOR THE WANDERER -4DF8 HEXAGRAM FOR THE GENTLE WIND -4DF9 HEXAGRAM FOR THE JOYOUS LAKE -4DFA HEXAGRAM FOR DISPERSION -4DFB HEXAGRAM FOR LIMITATION -4DFC HEXAGRAM FOR INNER TRUTH -4DFD HEXAGRAM FOR SMALL PREPONDERANCE -4DFE HEXAGRAM FOR AFTER COMPLETION -4DFF HEXAGRAM FOR BEFORE COMPLETION -@@ 4E00 CJK Unified Ideographs 9FBB -@@ A000 Yi Syllables A48F -@ Syllables -A000 YI SYLLABLE IT -A001 YI SYLLABLE IX -A002 YI SYLLABLE I -A003 YI SYLLABLE IP -A004 YI SYLLABLE IET -A005 YI SYLLABLE IEX -A006 YI SYLLABLE IE -A007 YI SYLLABLE IEP -A008 YI SYLLABLE AT -A009 YI SYLLABLE AX -A00A YI SYLLABLE A -A00B YI SYLLABLE AP -A00C YI SYLLABLE UOX -A00D YI SYLLABLE UO -A00E YI SYLLABLE UOP -A00F YI SYLLABLE OT -A010 YI SYLLABLE OX -A011 YI SYLLABLE O -A012 YI SYLLABLE OP -A013 YI SYLLABLE EX -A014 YI SYLLABLE E -A015 YI SYLLABLE WU -A016 YI SYLLABLE BIT -A017 YI SYLLABLE BIX -A018 YI SYLLABLE BI -A019 YI SYLLABLE BIP -A01A YI SYLLABLE BIET -A01B YI SYLLABLE BIEX -A01C YI SYLLABLE BIE -A01D YI SYLLABLE BIEP -A01E YI SYLLABLE BAT -A01F YI SYLLABLE BAX -A020 YI SYLLABLE BA -A021 YI SYLLABLE BAP -A022 YI SYLLABLE BUOX -A023 YI SYLLABLE BUO -A024 YI SYLLABLE BUOP -A025 YI SYLLABLE BOT -A026 YI SYLLABLE BOX -A027 YI SYLLABLE BO -A028 YI SYLLABLE BOP -A029 YI SYLLABLE BEX -A02A YI SYLLABLE BE -A02B YI SYLLABLE BEP -A02C YI SYLLABLE BUT -A02D YI SYLLABLE BUX -A02E YI SYLLABLE BU -A02F YI SYLLABLE BUP -A030 YI SYLLABLE BURX -A031 YI SYLLABLE BUR -A032 YI SYLLABLE BYT -A033 YI SYLLABLE BYX -A034 YI SYLLABLE BY -A035 YI SYLLABLE BYP -A036 YI SYLLABLE BYRX -A037 YI SYLLABLE BYR -A038 YI SYLLABLE PIT -A039 YI SYLLABLE PIX -A03A YI SYLLABLE PI -A03B YI SYLLABLE PIP -A03C YI SYLLABLE PIEX -A03D YI SYLLABLE PIE -A03E YI SYLLABLE PIEP -A03F YI SYLLABLE PAT -A040 YI SYLLABLE PAX -A041 YI SYLLABLE PA -A042 YI SYLLABLE PAP -A043 YI SYLLABLE PUOX -A044 YI SYLLABLE PUO -A045 YI SYLLABLE PUOP -A046 YI SYLLABLE POT -A047 YI SYLLABLE POX -A048 YI SYLLABLE PO -A049 YI SYLLABLE POP -A04A YI SYLLABLE PUT -A04B YI SYLLABLE PUX -A04C YI SYLLABLE PU -A04D YI SYLLABLE PUP -A04E YI SYLLABLE PURX -A04F YI SYLLABLE PUR -A050 YI SYLLABLE PYT -A051 YI SYLLABLE PYX -A052 YI SYLLABLE PY -A053 YI SYLLABLE PYP -A054 YI SYLLABLE PYRX -A055 YI SYLLABLE PYR -A056 YI SYLLABLE BBIT -A057 YI SYLLABLE BBIX -A058 YI SYLLABLE BBI -A059 YI SYLLABLE BBIP -A05A YI SYLLABLE BBIET -A05B YI SYLLABLE BBIEX -A05C YI SYLLABLE BBIE -A05D YI SYLLABLE BBIEP -A05E YI SYLLABLE BBAT -A05F YI SYLLABLE BBAX -A060 YI SYLLABLE BBA -A061 YI SYLLABLE BBAP -A062 YI SYLLABLE BBUOX -A063 YI SYLLABLE BBUO -A064 YI SYLLABLE BBUOP -A065 YI SYLLABLE BBOT -A066 YI SYLLABLE BBOX -A067 YI SYLLABLE BBO -A068 YI SYLLABLE BBOP -A069 YI SYLLABLE BBEX -A06A YI SYLLABLE BBE -A06B YI SYLLABLE BBEP -A06C YI SYLLABLE BBUT -A06D YI SYLLABLE BBUX -A06E YI SYLLABLE BBU -A06F YI SYLLABLE BBUP -A070 YI SYLLABLE BBURX -A071 YI SYLLABLE BBUR -A072 YI SYLLABLE BBYT -A073 YI SYLLABLE BBYX -A074 YI SYLLABLE BBY -A075 YI SYLLABLE BBYP -A076 YI SYLLABLE NBIT -A077 YI SYLLABLE NBIX -A078 YI SYLLABLE NBI -A079 YI SYLLABLE NBIP -A07A YI SYLLABLE NBIEX -A07B YI SYLLABLE NBIE -A07C YI SYLLABLE NBIEP -A07D YI SYLLABLE NBAT -A07E YI SYLLABLE NBAX -A07F YI SYLLABLE NBA -A080 YI SYLLABLE NBAP -A081 YI SYLLABLE NBOT -A082 YI SYLLABLE NBOX -A083 YI SYLLABLE NBO -A084 YI SYLLABLE NBOP -A085 YI SYLLABLE NBUT -A086 YI SYLLABLE NBUX -A087 YI SYLLABLE NBU -A088 YI SYLLABLE NBUP -A089 YI SYLLABLE NBURX -A08A YI SYLLABLE NBUR -A08B YI SYLLABLE NBYT -A08C YI SYLLABLE NBYX -A08D YI SYLLABLE NBY -A08E YI SYLLABLE NBYP -A08F YI SYLLABLE NBYRX -A090 YI SYLLABLE NBYR -A091 YI SYLLABLE HMIT -A092 YI SYLLABLE HMIX -A093 YI SYLLABLE HMI -A094 YI SYLLABLE HMIP -A095 YI SYLLABLE HMIEX -A096 YI SYLLABLE HMIE -A097 YI SYLLABLE HMIEP -A098 YI SYLLABLE HMAT -A099 YI SYLLABLE HMAX -A09A YI SYLLABLE HMA -A09B YI SYLLABLE HMAP -A09C YI SYLLABLE HMUOX -A09D YI SYLLABLE HMUO -A09E YI SYLLABLE HMUOP -A09F YI SYLLABLE HMOT -A0A0 YI SYLLABLE HMOX -A0A1 YI SYLLABLE HMO -A0A2 YI SYLLABLE HMOP -A0A3 YI SYLLABLE HMUT -A0A4 YI SYLLABLE HMUX -A0A5 YI SYLLABLE HMU -A0A6 YI SYLLABLE HMUP -A0A7 YI SYLLABLE HMURX -A0A8 YI SYLLABLE HMUR -A0A9 YI SYLLABLE HMYX -A0AA YI SYLLABLE HMY -A0AB YI SYLLABLE HMYP -A0AC YI SYLLABLE HMYRX -A0AD YI SYLLABLE HMYR -A0AE YI SYLLABLE MIT -A0AF YI SYLLABLE MIX -A0B0 YI SYLLABLE MI -A0B1 YI SYLLABLE MIP -A0B2 YI SYLLABLE MIEX -A0B3 YI SYLLABLE MIE -A0B4 YI SYLLABLE MIEP -A0B5 YI SYLLABLE MAT -A0B6 YI SYLLABLE MAX -A0B7 YI SYLLABLE MA -A0B8 YI SYLLABLE MAP -A0B9 YI SYLLABLE MUOT -A0BA YI SYLLABLE MUOX -A0BB YI SYLLABLE MUO -A0BC YI SYLLABLE MUOP -A0BD YI SYLLABLE MOT -A0BE YI SYLLABLE MOX -A0BF YI SYLLABLE MO -A0C0 YI SYLLABLE MOP -A0C1 YI SYLLABLE MEX -A0C2 YI SYLLABLE ME -A0C3 YI SYLLABLE MUT -A0C4 YI SYLLABLE MUX -A0C5 YI SYLLABLE MU -A0C6 YI SYLLABLE MUP -A0C7 YI SYLLABLE MURX -A0C8 YI SYLLABLE MUR -A0C9 YI SYLLABLE MYT -A0CA YI SYLLABLE MYX -A0CB YI SYLLABLE MY -A0CC YI SYLLABLE MYP -A0CD YI SYLLABLE FIT -A0CE YI SYLLABLE FIX -A0CF YI SYLLABLE FI -A0D0 YI SYLLABLE FIP -A0D1 YI SYLLABLE FAT -A0D2 YI SYLLABLE FAX -A0D3 YI SYLLABLE FA -A0D4 YI SYLLABLE FAP -A0D5 YI SYLLABLE FOX -A0D6 YI SYLLABLE FO -A0D7 YI SYLLABLE FOP -A0D8 YI SYLLABLE FUT -A0D9 YI SYLLABLE FUX -A0DA YI SYLLABLE FU -A0DB YI SYLLABLE FUP -A0DC YI SYLLABLE FURX -A0DD YI SYLLABLE FUR -A0DE YI SYLLABLE FYT -A0DF YI SYLLABLE FYX -A0E0 YI SYLLABLE FY -A0E1 YI SYLLABLE FYP -A0E2 YI SYLLABLE VIT -A0E3 YI SYLLABLE VIX -A0E4 YI SYLLABLE VI -A0E5 YI SYLLABLE VIP -A0E6 YI SYLLABLE VIET -A0E7 YI SYLLABLE VIEX -A0E8 YI SYLLABLE VIE -A0E9 YI SYLLABLE VIEP -A0EA YI SYLLABLE VAT -A0EB YI SYLLABLE VAX -A0EC YI SYLLABLE VA -A0ED YI SYLLABLE VAP -A0EE YI SYLLABLE VOT -A0EF YI SYLLABLE VOX -A0F0 YI SYLLABLE VO -A0F1 YI SYLLABLE VOP -A0F2 YI SYLLABLE VEX -A0F3 YI SYLLABLE VEP -A0F4 YI SYLLABLE VUT -A0F5 YI SYLLABLE VUX -A0F6 YI SYLLABLE VU -A0F7 YI SYLLABLE VUP -A0F8 YI SYLLABLE VURX -A0F9 YI SYLLABLE VUR -A0FA YI SYLLABLE VYT -A0FB YI SYLLABLE VYX -A0FC YI SYLLABLE VY -A0FD YI SYLLABLE VYP -A0FE YI SYLLABLE VYRX -A0FF YI SYLLABLE VYR -A100 YI SYLLABLE DIT -A101 YI SYLLABLE DIX -A102 YI SYLLABLE DI -A103 YI SYLLABLE DIP -A104 YI SYLLABLE DIEX -A105 YI SYLLABLE DIE -A106 YI SYLLABLE DIEP -A107 YI SYLLABLE DAT -A108 YI SYLLABLE DAX -A109 YI SYLLABLE DA -A10A YI SYLLABLE DAP -A10B YI SYLLABLE DUOX -A10C YI SYLLABLE DUO -A10D YI SYLLABLE DOT -A10E YI SYLLABLE DOX -A10F YI SYLLABLE DO -A110 YI SYLLABLE DOP -A111 YI SYLLABLE DEX -A112 YI SYLLABLE DE -A113 YI SYLLABLE DEP -A114 YI SYLLABLE DUT -A115 YI SYLLABLE DUX -A116 YI SYLLABLE DU -A117 YI SYLLABLE DUP -A118 YI SYLLABLE DURX -A119 YI SYLLABLE DUR -A11A YI SYLLABLE TIT -A11B YI SYLLABLE TIX -A11C YI SYLLABLE TI -A11D YI SYLLABLE TIP -A11E YI SYLLABLE TIEX -A11F YI SYLLABLE TIE -A120 YI SYLLABLE TIEP -A121 YI SYLLABLE TAT -A122 YI SYLLABLE TAX -A123 YI SYLLABLE TA -A124 YI SYLLABLE TAP -A125 YI SYLLABLE TUOT -A126 YI SYLLABLE TUOX -A127 YI SYLLABLE TUO -A128 YI SYLLABLE TUOP -A129 YI SYLLABLE TOT -A12A YI SYLLABLE TOX -A12B YI SYLLABLE TO -A12C YI SYLLABLE TOP -A12D YI SYLLABLE TEX -A12E YI SYLLABLE TE -A12F YI SYLLABLE TEP -A130 YI SYLLABLE TUT -A131 YI SYLLABLE TUX -A132 YI SYLLABLE TU -A133 YI SYLLABLE TUP -A134 YI SYLLABLE TURX -A135 YI SYLLABLE TUR -A136 YI SYLLABLE DDIT -A137 YI SYLLABLE DDIX -A138 YI SYLLABLE DDI -A139 YI SYLLABLE DDIP -A13A YI SYLLABLE DDIEX -A13B YI SYLLABLE DDIE -A13C YI SYLLABLE DDIEP -A13D YI SYLLABLE DDAT -A13E YI SYLLABLE DDAX -A13F YI SYLLABLE DDA -A140 YI SYLLABLE DDAP -A141 YI SYLLABLE DDUOX -A142 YI SYLLABLE DDUO -A143 YI SYLLABLE DDUOP -A144 YI SYLLABLE DDOT -A145 YI SYLLABLE DDOX -A146 YI SYLLABLE DDO -A147 YI SYLLABLE DDOP -A148 YI SYLLABLE DDEX -A149 YI SYLLABLE DDE -A14A YI SYLLABLE DDEP -A14B YI SYLLABLE DDUT -A14C YI SYLLABLE DDUX -A14D YI SYLLABLE DDU -A14E YI SYLLABLE DDUP -A14F YI SYLLABLE DDURX -A150 YI SYLLABLE DDUR -A151 YI SYLLABLE NDIT -A152 YI SYLLABLE NDIX -A153 YI SYLLABLE NDI -A154 YI SYLLABLE NDIP -A155 YI SYLLABLE NDIEX -A156 YI SYLLABLE NDIE -A157 YI SYLLABLE NDAT -A158 YI SYLLABLE NDAX -A159 YI SYLLABLE NDA -A15A YI SYLLABLE NDAP -A15B YI SYLLABLE NDOT -A15C YI SYLLABLE NDOX -A15D YI SYLLABLE NDO -A15E YI SYLLABLE NDOP -A15F YI SYLLABLE NDEX -A160 YI SYLLABLE NDE -A161 YI SYLLABLE NDEP -A162 YI SYLLABLE NDUT -A163 YI SYLLABLE NDUX -A164 YI SYLLABLE NDU -A165 YI SYLLABLE NDUP -A166 YI SYLLABLE NDURX -A167 YI SYLLABLE NDUR -A168 YI SYLLABLE HNIT -A169 YI SYLLABLE HNIX -A16A YI SYLLABLE HNI -A16B YI SYLLABLE HNIP -A16C YI SYLLABLE HNIET -A16D YI SYLLABLE HNIEX -A16E YI SYLLABLE HNIE -A16F YI SYLLABLE HNIEP -A170 YI SYLLABLE HNAT -A171 YI SYLLABLE HNAX -A172 YI SYLLABLE HNA -A173 YI SYLLABLE HNAP -A174 YI SYLLABLE HNUOX -A175 YI SYLLABLE HNUO -A176 YI SYLLABLE HNOT -A177 YI SYLLABLE HNOX -A178 YI SYLLABLE HNOP -A179 YI SYLLABLE HNEX -A17A YI SYLLABLE HNE -A17B YI SYLLABLE HNEP -A17C YI SYLLABLE HNUT -A17D YI SYLLABLE NIT -A17E YI SYLLABLE NIX -A17F YI SYLLABLE NI -A180 YI SYLLABLE NIP -A181 YI SYLLABLE NIEX -A182 YI SYLLABLE NIE -A183 YI SYLLABLE NIEP -A184 YI SYLLABLE NAX -A185 YI SYLLABLE NA -A186 YI SYLLABLE NAP -A187 YI SYLLABLE NUOX -A188 YI SYLLABLE NUO -A189 YI SYLLABLE NUOP -A18A YI SYLLABLE NOT -A18B YI SYLLABLE NOX -A18C YI SYLLABLE NO -A18D YI SYLLABLE NOP -A18E YI SYLLABLE NEX -A18F YI SYLLABLE NE -A190 YI SYLLABLE NEP -A191 YI SYLLABLE NUT -A192 YI SYLLABLE NUX -A193 YI SYLLABLE NU -A194 YI SYLLABLE NUP -A195 YI SYLLABLE NURX -A196 YI SYLLABLE NUR -A197 YI SYLLABLE HLIT -A198 YI SYLLABLE HLIX -A199 YI SYLLABLE HLI -A19A YI SYLLABLE HLIP -A19B YI SYLLABLE HLIEX -A19C YI SYLLABLE HLIE -A19D YI SYLLABLE HLIEP -A19E YI SYLLABLE HLAT -A19F YI SYLLABLE HLAX -A1A0 YI SYLLABLE HLA -A1A1 YI SYLLABLE HLAP -A1A2 YI SYLLABLE HLUOX -A1A3 YI SYLLABLE HLUO -A1A4 YI SYLLABLE HLUOP -A1A5 YI SYLLABLE HLOX -A1A6 YI SYLLABLE HLO -A1A7 YI SYLLABLE HLOP -A1A8 YI SYLLABLE HLEX -A1A9 YI SYLLABLE HLE -A1AA YI SYLLABLE HLEP -A1AB YI SYLLABLE HLUT -A1AC YI SYLLABLE HLUX -A1AD YI SYLLABLE HLU -A1AE YI SYLLABLE HLUP -A1AF YI SYLLABLE HLURX -A1B0 YI SYLLABLE HLUR -A1B1 YI SYLLABLE HLYT -A1B2 YI SYLLABLE HLYX -A1B3 YI SYLLABLE HLY -A1B4 YI SYLLABLE HLYP -A1B5 YI SYLLABLE HLYRX -A1B6 YI SYLLABLE HLYR -A1B7 YI SYLLABLE LIT -A1B8 YI SYLLABLE LIX -A1B9 YI SYLLABLE LI -A1BA YI SYLLABLE LIP -A1BB YI SYLLABLE LIET -A1BC YI SYLLABLE LIEX -A1BD YI SYLLABLE LIE -A1BE YI SYLLABLE LIEP -A1BF YI SYLLABLE LAT -A1C0 YI SYLLABLE LAX -A1C1 YI SYLLABLE LA -A1C2 YI SYLLABLE LAP -A1C3 YI SYLLABLE LUOT -A1C4 YI SYLLABLE LUOX -A1C5 YI SYLLABLE LUO -A1C6 YI SYLLABLE LUOP -A1C7 YI SYLLABLE LOT -A1C8 YI SYLLABLE LOX -A1C9 YI SYLLABLE LO -A1CA YI SYLLABLE LOP -A1CB YI SYLLABLE LEX -A1CC YI SYLLABLE LE -A1CD YI SYLLABLE LEP -A1CE YI SYLLABLE LUT -A1CF YI SYLLABLE LUX -A1D0 YI SYLLABLE LU -A1D1 YI SYLLABLE LUP -A1D2 YI SYLLABLE LURX -A1D3 YI SYLLABLE LUR -A1D4 YI SYLLABLE LYT -A1D5 YI SYLLABLE LYX -A1D6 YI SYLLABLE LY -A1D7 YI SYLLABLE LYP -A1D8 YI SYLLABLE LYRX -A1D9 YI SYLLABLE LYR -A1DA YI SYLLABLE GIT -A1DB YI SYLLABLE GIX -A1DC YI SYLLABLE GI -A1DD YI SYLLABLE GIP -A1DE YI SYLLABLE GIET -A1DF YI SYLLABLE GIEX -A1E0 YI SYLLABLE GIE -A1E1 YI SYLLABLE GIEP -A1E2 YI SYLLABLE GAT -A1E3 YI SYLLABLE GAX -A1E4 YI SYLLABLE GA -A1E5 YI SYLLABLE GAP -A1E6 YI SYLLABLE GUOT -A1E7 YI SYLLABLE GUOX -A1E8 YI SYLLABLE GUO -A1E9 YI SYLLABLE GUOP -A1EA YI SYLLABLE GOT -A1EB YI SYLLABLE GOX -A1EC YI SYLLABLE GO -A1ED YI SYLLABLE GOP -A1EE YI SYLLABLE GET -A1EF YI SYLLABLE GEX -A1F0 YI SYLLABLE GE -A1F1 YI SYLLABLE GEP -A1F2 YI SYLLABLE GUT -A1F3 YI SYLLABLE GUX -A1F4 YI SYLLABLE GU -A1F5 YI SYLLABLE GUP -A1F6 YI SYLLABLE GURX -A1F7 YI SYLLABLE GUR -A1F8 YI SYLLABLE KIT -A1F9 YI SYLLABLE KIX -A1FA YI SYLLABLE KI -A1FB YI SYLLABLE KIP -A1FC YI SYLLABLE KIEX -A1FD YI SYLLABLE KIE -A1FE YI SYLLABLE KIEP -A1FF YI SYLLABLE KAT -A200 YI SYLLABLE KAX -A201 YI SYLLABLE KA -A202 YI SYLLABLE KAP -A203 YI SYLLABLE KUOX -A204 YI SYLLABLE KUO -A205 YI SYLLABLE KUOP -A206 YI SYLLABLE KOT -A207 YI SYLLABLE KOX -A208 YI SYLLABLE KO -A209 YI SYLLABLE KOP -A20A YI SYLLABLE KET -A20B YI SYLLABLE KEX -A20C YI SYLLABLE KE -A20D YI SYLLABLE KEP -A20E YI SYLLABLE KUT -A20F YI SYLLABLE KUX -A210 YI SYLLABLE KU -A211 YI SYLLABLE KUP -A212 YI SYLLABLE KURX -A213 YI SYLLABLE KUR -A214 YI SYLLABLE GGIT -A215 YI SYLLABLE GGIX -A216 YI SYLLABLE GGI -A217 YI SYLLABLE GGIEX -A218 YI SYLLABLE GGIE -A219 YI SYLLABLE GGIEP -A21A YI SYLLABLE GGAT -A21B YI SYLLABLE GGAX -A21C YI SYLLABLE GGA -A21D YI SYLLABLE GGAP -A21E YI SYLLABLE GGUOT -A21F YI SYLLABLE GGUOX -A220 YI SYLLABLE GGUO -A221 YI SYLLABLE GGUOP -A222 YI SYLLABLE GGOT -A223 YI SYLLABLE GGOX -A224 YI SYLLABLE GGO -A225 YI SYLLABLE GGOP -A226 YI SYLLABLE GGET -A227 YI SYLLABLE GGEX -A228 YI SYLLABLE GGE -A229 YI SYLLABLE GGEP -A22A YI SYLLABLE GGUT -A22B YI SYLLABLE GGUX -A22C YI SYLLABLE GGU -A22D YI SYLLABLE GGUP -A22E YI SYLLABLE GGURX -A22F YI SYLLABLE GGUR -A230 YI SYLLABLE MGIEX -A231 YI SYLLABLE MGIE -A232 YI SYLLABLE MGAT -A233 YI SYLLABLE MGAX -A234 YI SYLLABLE MGA -A235 YI SYLLABLE MGAP -A236 YI SYLLABLE MGUOX -A237 YI SYLLABLE MGUO -A238 YI SYLLABLE MGUOP -A239 YI SYLLABLE MGOT -A23A YI SYLLABLE MGOX -A23B YI SYLLABLE MGO -A23C YI SYLLABLE MGOP -A23D YI SYLLABLE MGEX -A23E YI SYLLABLE MGE -A23F YI SYLLABLE MGEP -A240 YI SYLLABLE MGUT -A241 YI SYLLABLE MGUX -A242 YI SYLLABLE MGU -A243 YI SYLLABLE MGUP -A244 YI SYLLABLE MGURX -A245 YI SYLLABLE MGUR -A246 YI SYLLABLE HXIT -A247 YI SYLLABLE HXIX -A248 YI SYLLABLE HXI -A249 YI SYLLABLE HXIP -A24A YI SYLLABLE HXIET -A24B YI SYLLABLE HXIEX -A24C YI SYLLABLE HXIE -A24D YI SYLLABLE HXIEP -A24E YI SYLLABLE HXAT -A24F YI SYLLABLE HXAX -A250 YI SYLLABLE HXA -A251 YI SYLLABLE HXAP -A252 YI SYLLABLE HXUOT -A253 YI SYLLABLE HXUOX -A254 YI SYLLABLE HXUO -A255 YI SYLLABLE HXUOP -A256 YI SYLLABLE HXOT -A257 YI SYLLABLE HXOX -A258 YI SYLLABLE HXO -A259 YI SYLLABLE HXOP -A25A YI SYLLABLE HXEX -A25B YI SYLLABLE HXE -A25C YI SYLLABLE HXEP -A25D YI SYLLABLE NGIEX -A25E YI SYLLABLE NGIE -A25F YI SYLLABLE NGIEP -A260 YI SYLLABLE NGAT -A261 YI SYLLABLE NGAX -A262 YI SYLLABLE NGA -A263 YI SYLLABLE NGAP -A264 YI SYLLABLE NGUOT -A265 YI SYLLABLE NGUOX -A266 YI SYLLABLE NGUO -A267 YI SYLLABLE NGOT -A268 YI SYLLABLE NGOX -A269 YI SYLLABLE NGO -A26A YI SYLLABLE NGOP -A26B YI SYLLABLE NGEX -A26C YI SYLLABLE NGE -A26D YI SYLLABLE NGEP -A26E YI SYLLABLE HIT -A26F YI SYLLABLE HIEX -A270 YI SYLLABLE HIE -A271 YI SYLLABLE HAT -A272 YI SYLLABLE HAX -A273 YI SYLLABLE HA -A274 YI SYLLABLE HAP -A275 YI SYLLABLE HUOT -A276 YI SYLLABLE HUOX -A277 YI SYLLABLE HUO -A278 YI SYLLABLE HUOP -A279 YI SYLLABLE HOT -A27A YI SYLLABLE HOX -A27B YI SYLLABLE HO -A27C YI SYLLABLE HOP -A27D YI SYLLABLE HEX -A27E YI SYLLABLE HE -A27F YI SYLLABLE HEP -A280 YI SYLLABLE WAT -A281 YI SYLLABLE WAX -A282 YI SYLLABLE WA -A283 YI SYLLABLE WAP -A284 YI SYLLABLE WUOX -A285 YI SYLLABLE WUO -A286 YI SYLLABLE WUOP -A287 YI SYLLABLE WOX -A288 YI SYLLABLE WO -A289 YI SYLLABLE WOP -A28A YI SYLLABLE WEX -A28B YI SYLLABLE WE -A28C YI SYLLABLE WEP -A28D YI SYLLABLE ZIT -A28E YI SYLLABLE ZIX -A28F YI SYLLABLE ZI -A290 YI SYLLABLE ZIP -A291 YI SYLLABLE ZIEX -A292 YI SYLLABLE ZIE -A293 YI SYLLABLE ZIEP -A294 YI SYLLABLE ZAT -A295 YI SYLLABLE ZAX -A296 YI SYLLABLE ZA -A297 YI SYLLABLE ZAP -A298 YI SYLLABLE ZUOX -A299 YI SYLLABLE ZUO -A29A YI SYLLABLE ZUOP -A29B YI SYLLABLE ZOT -A29C YI SYLLABLE ZOX -A29D YI SYLLABLE ZO -A29E YI SYLLABLE ZOP -A29F YI SYLLABLE ZEX -A2A0 YI SYLLABLE ZE -A2A1 YI SYLLABLE ZEP -A2A2 YI SYLLABLE ZUT -A2A3 YI SYLLABLE ZUX -A2A4 YI SYLLABLE ZU -A2A5 YI SYLLABLE ZUP -A2A6 YI SYLLABLE ZURX -A2A7 YI SYLLABLE ZUR -A2A8 YI SYLLABLE ZYT -A2A9 YI SYLLABLE ZYX -A2AA YI SYLLABLE ZY -A2AB YI SYLLABLE ZYP -A2AC YI SYLLABLE ZYRX -A2AD YI SYLLABLE ZYR -A2AE YI SYLLABLE CIT -A2AF YI SYLLABLE CIX -A2B0 YI SYLLABLE CI -A2B1 YI SYLLABLE CIP -A2B2 YI SYLLABLE CIET -A2B3 YI SYLLABLE CIEX -A2B4 YI SYLLABLE CIE -A2B5 YI SYLLABLE CIEP -A2B6 YI SYLLABLE CAT -A2B7 YI SYLLABLE CAX -A2B8 YI SYLLABLE CA -A2B9 YI SYLLABLE CAP -A2BA YI SYLLABLE CUOX -A2BB YI SYLLABLE CUO -A2BC YI SYLLABLE CUOP -A2BD YI SYLLABLE COT -A2BE YI SYLLABLE COX -A2BF YI SYLLABLE CO -A2C0 YI SYLLABLE COP -A2C1 YI SYLLABLE CEX -A2C2 YI SYLLABLE CE -A2C3 YI SYLLABLE CEP -A2C4 YI SYLLABLE CUT -A2C5 YI SYLLABLE CUX -A2C6 YI SYLLABLE CU -A2C7 YI SYLLABLE CUP -A2C8 YI SYLLABLE CURX -A2C9 YI SYLLABLE CUR -A2CA YI SYLLABLE CYT -A2CB YI SYLLABLE CYX -A2CC YI SYLLABLE CY -A2CD YI SYLLABLE CYP -A2CE YI SYLLABLE CYRX -A2CF YI SYLLABLE CYR -A2D0 YI SYLLABLE ZZIT -A2D1 YI SYLLABLE ZZIX -A2D2 YI SYLLABLE ZZI -A2D3 YI SYLLABLE ZZIP -A2D4 YI SYLLABLE ZZIET -A2D5 YI SYLLABLE ZZIEX -A2D6 YI SYLLABLE ZZIE -A2D7 YI SYLLABLE ZZIEP -A2D8 YI SYLLABLE ZZAT -A2D9 YI SYLLABLE ZZAX -A2DA YI SYLLABLE ZZA -A2DB YI SYLLABLE ZZAP -A2DC YI SYLLABLE ZZOX -A2DD YI SYLLABLE ZZO -A2DE YI SYLLABLE ZZOP -A2DF YI SYLLABLE ZZEX -A2E0 YI SYLLABLE ZZE -A2E1 YI SYLLABLE ZZEP -A2E2 YI SYLLABLE ZZUX -A2E3 YI SYLLABLE ZZU -A2E4 YI SYLLABLE ZZUP -A2E5 YI SYLLABLE ZZURX -A2E6 YI SYLLABLE ZZUR -A2E7 YI SYLLABLE ZZYT -A2E8 YI SYLLABLE ZZYX -A2E9 YI SYLLABLE ZZY -A2EA YI SYLLABLE ZZYP -A2EB YI SYLLABLE ZZYRX -A2EC YI SYLLABLE ZZYR -A2ED YI SYLLABLE NZIT -A2EE YI SYLLABLE NZIX -A2EF YI SYLLABLE NZI -A2F0 YI SYLLABLE NZIP -A2F1 YI SYLLABLE NZIEX -A2F2 YI SYLLABLE NZIE -A2F3 YI SYLLABLE NZIEP -A2F4 YI SYLLABLE NZAT -A2F5 YI SYLLABLE NZAX -A2F6 YI SYLLABLE NZA -A2F7 YI SYLLABLE NZAP -A2F8 YI SYLLABLE NZUOX -A2F9 YI SYLLABLE NZUO -A2FA YI SYLLABLE NZOX -A2FB YI SYLLABLE NZOP -A2FC YI SYLLABLE NZEX -A2FD YI SYLLABLE NZE -A2FE YI SYLLABLE NZUX -A2FF YI SYLLABLE NZU -A300 YI SYLLABLE NZUP -A301 YI SYLLABLE NZURX -A302 YI SYLLABLE NZUR -A303 YI SYLLABLE NZYT -A304 YI SYLLABLE NZYX -A305 YI SYLLABLE NZY -A306 YI SYLLABLE NZYP -A307 YI SYLLABLE NZYRX -A308 YI SYLLABLE NZYR -A309 YI SYLLABLE SIT -A30A YI SYLLABLE SIX -A30B YI SYLLABLE SI -A30C YI SYLLABLE SIP -A30D YI SYLLABLE SIEX -A30E YI SYLLABLE SIE -A30F YI SYLLABLE SIEP -A310 YI SYLLABLE SAT -A311 YI SYLLABLE SAX -A312 YI SYLLABLE SA -A313 YI SYLLABLE SAP -A314 YI SYLLABLE SUOX -A315 YI SYLLABLE SUO -A316 YI SYLLABLE SUOP -A317 YI SYLLABLE SOT -A318 YI SYLLABLE SOX -A319 YI SYLLABLE SO -A31A YI SYLLABLE SOP -A31B YI SYLLABLE SEX -A31C YI SYLLABLE SE -A31D YI SYLLABLE SEP -A31E YI SYLLABLE SUT -A31F YI SYLLABLE SUX -A320 YI SYLLABLE SU -A321 YI SYLLABLE SUP -A322 YI SYLLABLE SURX -A323 YI SYLLABLE SUR -A324 YI SYLLABLE SYT -A325 YI SYLLABLE SYX -A326 YI SYLLABLE SY -A327 YI SYLLABLE SYP -A328 YI SYLLABLE SYRX -A329 YI SYLLABLE SYR -A32A YI SYLLABLE SSIT -A32B YI SYLLABLE SSIX -A32C YI SYLLABLE SSI -A32D YI SYLLABLE SSIP -A32E YI SYLLABLE SSIEX -A32F YI SYLLABLE SSIE -A330 YI SYLLABLE SSIEP -A331 YI SYLLABLE SSAT -A332 YI SYLLABLE SSAX -A333 YI SYLLABLE SSA -A334 YI SYLLABLE SSAP -A335 YI SYLLABLE SSOT -A336 YI SYLLABLE SSOX -A337 YI SYLLABLE SSO -A338 YI SYLLABLE SSOP -A339 YI SYLLABLE SSEX -A33A YI SYLLABLE SSE -A33B YI SYLLABLE SSEP -A33C YI SYLLABLE SSUT -A33D YI SYLLABLE SSUX -A33E YI SYLLABLE SSU -A33F YI SYLLABLE SSUP -A340 YI SYLLABLE SSYT -A341 YI SYLLABLE SSYX -A342 YI SYLLABLE SSY -A343 YI SYLLABLE SSYP -A344 YI SYLLABLE SSYRX -A345 YI SYLLABLE SSYR -A346 YI SYLLABLE ZHAT -A347 YI SYLLABLE ZHAX -A348 YI SYLLABLE ZHA -A349 YI SYLLABLE ZHAP -A34A YI SYLLABLE ZHUOX -A34B YI SYLLABLE ZHUO -A34C YI SYLLABLE ZHUOP -A34D YI SYLLABLE ZHOT -A34E YI SYLLABLE ZHOX -A34F YI SYLLABLE ZHO -A350 YI SYLLABLE ZHOP -A351 YI SYLLABLE ZHET -A352 YI SYLLABLE ZHEX -A353 YI SYLLABLE ZHE -A354 YI SYLLABLE ZHEP -A355 YI SYLLABLE ZHUT -A356 YI SYLLABLE ZHUX -A357 YI SYLLABLE ZHU -A358 YI SYLLABLE ZHUP -A359 YI SYLLABLE ZHURX -A35A YI SYLLABLE ZHUR -A35B YI SYLLABLE ZHYT -A35C YI SYLLABLE ZHYX -A35D YI SYLLABLE ZHY -A35E YI SYLLABLE ZHYP -A35F YI SYLLABLE ZHYRX -A360 YI SYLLABLE ZHYR -A361 YI SYLLABLE CHAT -A362 YI SYLLABLE CHAX -A363 YI SYLLABLE CHA -A364 YI SYLLABLE CHAP -A365 YI SYLLABLE CHUOT -A366 YI SYLLABLE CHUOX -A367 YI SYLLABLE CHUO -A368 YI SYLLABLE CHUOP -A369 YI SYLLABLE CHOT -A36A YI SYLLABLE CHOX -A36B YI SYLLABLE CHO -A36C YI SYLLABLE CHOP -A36D YI SYLLABLE CHET -A36E YI SYLLABLE CHEX -A36F YI SYLLABLE CHE -A370 YI SYLLABLE CHEP -A371 YI SYLLABLE CHUX -A372 YI SYLLABLE CHU -A373 YI SYLLABLE CHUP -A374 YI SYLLABLE CHURX -A375 YI SYLLABLE CHUR -A376 YI SYLLABLE CHYT -A377 YI SYLLABLE CHYX -A378 YI SYLLABLE CHY -A379 YI SYLLABLE CHYP -A37A YI SYLLABLE CHYRX -A37B YI SYLLABLE CHYR -A37C YI SYLLABLE RRAX -A37D YI SYLLABLE RRA -A37E YI SYLLABLE RRUOX -A37F YI SYLLABLE RRUO -A380 YI SYLLABLE RROT -A381 YI SYLLABLE RROX -A382 YI SYLLABLE RRO -A383 YI SYLLABLE RROP -A384 YI SYLLABLE RRET -A385 YI SYLLABLE RREX -A386 YI SYLLABLE RRE -A387 YI SYLLABLE RREP -A388 YI SYLLABLE RRUT -A389 YI SYLLABLE RRUX -A38A YI SYLLABLE RRU -A38B YI SYLLABLE RRUP -A38C YI SYLLABLE RRURX -A38D YI SYLLABLE RRUR -A38E YI SYLLABLE RRYT -A38F YI SYLLABLE RRYX -A390 YI SYLLABLE RRY -A391 YI SYLLABLE RRYP -A392 YI SYLLABLE RRYRX -A393 YI SYLLABLE RRYR -A394 YI SYLLABLE NRAT -A395 YI SYLLABLE NRAX -A396 YI SYLLABLE NRA -A397 YI SYLLABLE NRAP -A398 YI SYLLABLE NROX -A399 YI SYLLABLE NRO -A39A YI SYLLABLE NROP -A39B YI SYLLABLE NRET -A39C YI SYLLABLE NREX -A39D YI SYLLABLE NRE -A39E YI SYLLABLE NREP -A39F YI SYLLABLE NRUT -A3A0 YI SYLLABLE NRUX -A3A1 YI SYLLABLE NRU -A3A2 YI SYLLABLE NRUP -A3A3 YI SYLLABLE NRURX -A3A4 YI SYLLABLE NRUR -A3A5 YI SYLLABLE NRYT -A3A6 YI SYLLABLE NRYX -A3A7 YI SYLLABLE NRY -A3A8 YI SYLLABLE NRYP -A3A9 YI SYLLABLE NRYRX -A3AA YI SYLLABLE NRYR -A3AB YI SYLLABLE SHAT -A3AC YI SYLLABLE SHAX -A3AD YI SYLLABLE SHA -A3AE YI SYLLABLE SHAP -A3AF YI SYLLABLE SHUOX -A3B0 YI SYLLABLE SHUO -A3B1 YI SYLLABLE SHUOP -A3B2 YI SYLLABLE SHOT -A3B3 YI SYLLABLE SHOX -A3B4 YI SYLLABLE SHO -A3B5 YI SYLLABLE SHOP -A3B6 YI SYLLABLE SHET -A3B7 YI SYLLABLE SHEX -A3B8 YI SYLLABLE SHE -A3B9 YI SYLLABLE SHEP -A3BA YI SYLLABLE SHUT -A3BB YI SYLLABLE SHUX -A3BC YI SYLLABLE SHU -A3BD YI SYLLABLE SHUP -A3BE YI SYLLABLE SHURX -A3BF YI SYLLABLE SHUR -A3C0 YI SYLLABLE SHYT -A3C1 YI SYLLABLE SHYX -A3C2 YI SYLLABLE SHY -A3C3 YI SYLLABLE SHYP -A3C4 YI SYLLABLE SHYRX -A3C5 YI SYLLABLE SHYR -A3C6 YI SYLLABLE RAT -A3C7 YI SYLLABLE RAX -A3C8 YI SYLLABLE RA -A3C9 YI SYLLABLE RAP -A3CA YI SYLLABLE RUOX -A3CB YI SYLLABLE RUO -A3CC YI SYLLABLE RUOP -A3CD YI SYLLABLE ROT -A3CE YI SYLLABLE ROX -A3CF YI SYLLABLE RO -A3D0 YI SYLLABLE ROP -A3D1 YI SYLLABLE REX -A3D2 YI SYLLABLE RE -A3D3 YI SYLLABLE REP -A3D4 YI SYLLABLE RUT -A3D5 YI SYLLABLE RUX -A3D6 YI SYLLABLE RU -A3D7 YI SYLLABLE RUP -A3D8 YI SYLLABLE RURX -A3D9 YI SYLLABLE RUR -A3DA YI SYLLABLE RYT -A3DB YI SYLLABLE RYX -A3DC YI SYLLABLE RY -A3DD YI SYLLABLE RYP -A3DE YI SYLLABLE RYRX -A3DF YI SYLLABLE RYR -A3E0 YI SYLLABLE JIT -A3E1 YI SYLLABLE JIX -A3E2 YI SYLLABLE JI -A3E3 YI SYLLABLE JIP -A3E4 YI SYLLABLE JIET -A3E5 YI SYLLABLE JIEX -A3E6 YI SYLLABLE JIE -A3E7 YI SYLLABLE JIEP -A3E8 YI SYLLABLE JUOT -A3E9 YI SYLLABLE JUOX -A3EA YI SYLLABLE JUO -A3EB YI SYLLABLE JUOP -A3EC YI SYLLABLE JOT -A3ED YI SYLLABLE JOX -A3EE YI SYLLABLE JO -A3EF YI SYLLABLE JOP -A3F0 YI SYLLABLE JUT -A3F1 YI SYLLABLE JUX -A3F2 YI SYLLABLE JU -A3F3 YI SYLLABLE JUP -A3F4 YI SYLLABLE JURX -A3F5 YI SYLLABLE JUR -A3F6 YI SYLLABLE JYT -A3F7 YI SYLLABLE JYX -A3F8 YI SYLLABLE JY -A3F9 YI SYLLABLE JYP -A3FA YI SYLLABLE JYRX -A3FB YI SYLLABLE JYR -A3FC YI SYLLABLE QIT -A3FD YI SYLLABLE QIX -A3FE YI SYLLABLE QI -A3FF YI SYLLABLE QIP -A400 YI SYLLABLE QIET -A401 YI SYLLABLE QIEX -A402 YI SYLLABLE QIE -A403 YI SYLLABLE QIEP -A404 YI SYLLABLE QUOT -A405 YI SYLLABLE QUOX -A406 YI SYLLABLE QUO -A407 YI SYLLABLE QUOP -A408 YI SYLLABLE QOT -A409 YI SYLLABLE QOX -A40A YI SYLLABLE QO -A40B YI SYLLABLE QOP -A40C YI SYLLABLE QUT -A40D YI SYLLABLE QUX -A40E YI SYLLABLE QU -A40F YI SYLLABLE QUP -A410 YI SYLLABLE QURX -A411 YI SYLLABLE QUR -A412 YI SYLLABLE QYT -A413 YI SYLLABLE QYX -A414 YI SYLLABLE QY -A415 YI SYLLABLE QYP -A416 YI SYLLABLE QYRX -A417 YI SYLLABLE QYR -A418 YI SYLLABLE JJIT -A419 YI SYLLABLE JJIX -A41A YI SYLLABLE JJI -A41B YI SYLLABLE JJIP -A41C YI SYLLABLE JJIET -A41D YI SYLLABLE JJIEX -A41E YI SYLLABLE JJIE -A41F YI SYLLABLE JJIEP -A420 YI SYLLABLE JJUOX -A421 YI SYLLABLE JJUO -A422 YI SYLLABLE JJUOP -A423 YI SYLLABLE JJOT -A424 YI SYLLABLE JJOX -A425 YI SYLLABLE JJO -A426 YI SYLLABLE JJOP -A427 YI SYLLABLE JJUT -A428 YI SYLLABLE JJUX -A429 YI SYLLABLE JJU -A42A YI SYLLABLE JJUP -A42B YI SYLLABLE JJURX -A42C YI SYLLABLE JJUR -A42D YI SYLLABLE JJYT -A42E YI SYLLABLE JJYX -A42F YI SYLLABLE JJY -A430 YI SYLLABLE JJYP -A431 YI SYLLABLE NJIT -A432 YI SYLLABLE NJIX -A433 YI SYLLABLE NJI -A434 YI SYLLABLE NJIP -A435 YI SYLLABLE NJIET -A436 YI SYLLABLE NJIEX -A437 YI SYLLABLE NJIE -A438 YI SYLLABLE NJIEP -A439 YI SYLLABLE NJUOX -A43A YI SYLLABLE NJUO -A43B YI SYLLABLE NJOT -A43C YI SYLLABLE NJOX -A43D YI SYLLABLE NJO -A43E YI SYLLABLE NJOP -A43F YI SYLLABLE NJUX -A440 YI SYLLABLE NJU -A441 YI SYLLABLE NJUP -A442 YI SYLLABLE NJURX -A443 YI SYLLABLE NJUR -A444 YI SYLLABLE NJYT -A445 YI SYLLABLE NJYX -A446 YI SYLLABLE NJY -A447 YI SYLLABLE NJYP -A448 YI SYLLABLE NJYRX -A449 YI SYLLABLE NJYR -A44A YI SYLLABLE NYIT -A44B YI SYLLABLE NYIX -A44C YI SYLLABLE NYI -A44D YI SYLLABLE NYIP -A44E YI SYLLABLE NYIET -A44F YI SYLLABLE NYIEX -A450 YI SYLLABLE NYIE -A451 YI SYLLABLE NYIEP -A452 YI SYLLABLE NYUOX -A453 YI SYLLABLE NYUO -A454 YI SYLLABLE NYUOP -A455 YI SYLLABLE NYOT -A456 YI SYLLABLE NYOX -A457 YI SYLLABLE NYO -A458 YI SYLLABLE NYOP -A459 YI SYLLABLE NYUT -A45A YI SYLLABLE NYUX -A45B YI SYLLABLE NYU -A45C YI SYLLABLE NYUP -A45D YI SYLLABLE XIT -A45E YI SYLLABLE XIX -A45F YI SYLLABLE XI -A460 YI SYLLABLE XIP -A461 YI SYLLABLE XIET -A462 YI SYLLABLE XIEX -A463 YI SYLLABLE XIE -A464 YI SYLLABLE XIEP -A465 YI SYLLABLE XUOX -A466 YI SYLLABLE XUO -A467 YI SYLLABLE XOT -A468 YI SYLLABLE XOX -A469 YI SYLLABLE XO -A46A YI SYLLABLE XOP -A46B YI SYLLABLE XYT -A46C YI SYLLABLE XYX -A46D YI SYLLABLE XY -A46E YI SYLLABLE XYP -A46F YI SYLLABLE XYRX -A470 YI SYLLABLE XYR -A471 YI SYLLABLE YIT -A472 YI SYLLABLE YIX -A473 YI SYLLABLE YI -A474 YI SYLLABLE YIP -A475 YI SYLLABLE YIET -A476 YI SYLLABLE YIEX -A477 YI SYLLABLE YIE -A478 YI SYLLABLE YIEP -A479 YI SYLLABLE YUOT -A47A YI SYLLABLE YUOX -A47B YI SYLLABLE YUO -A47C YI SYLLABLE YUOP -A47D YI SYLLABLE YOT -A47E YI SYLLABLE YOX -A47F YI SYLLABLE YO -A480 YI SYLLABLE YOP -A481 YI SYLLABLE YUT -A482 YI SYLLABLE YUX -A483 YI SYLLABLE YU -A484 YI SYLLABLE YUP -A485 YI SYLLABLE YURX -A486 YI SYLLABLE YUR -A487 YI SYLLABLE YYT -A488 YI SYLLABLE YYX -A489 YI SYLLABLE YY -A48A YI SYLLABLE YYP -A48B YI SYLLABLE YYRX -A48C YI SYLLABLE YYR -@@ A490 Yi Radicals A4CF -@ Yi radicals -A490 YI RADICAL QOT -A491 YI RADICAL LI -A492 YI RADICAL KIT -A493 YI RADICAL NYIP -A494 YI RADICAL CYP -A495 YI RADICAL SSI -A496 YI RADICAL GGOP -A497 YI RADICAL GEP -A498 YI RADICAL MI -A499 YI RADICAL HXIT -A49A YI RADICAL LYR -A49B YI RADICAL BBUT -A49C YI RADICAL MOP -A49D YI RADICAL YO -A49E YI RADICAL PUT -A49F YI RADICAL HXUO -A4A0 YI RADICAL TAT -A4A1 YI RADICAL GA -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 -@@ A700 Modifier Tone Letters A71F -@ Corner tone marks for Chinese -A700 MODIFIER LETTER CHINESE TONE YIN PING -A701 MODIFIER LETTER CHINESE TONE YANG PING -A702 MODIFIER LETTER CHINESE TONE YIN SHANG -A703 MODIFIER LETTER CHINESE TONE YANG SHANG -A704 MODIFIER LETTER CHINESE TONE YIN QU -A705 MODIFIER LETTER CHINESE TONE YANG QU -A706 MODIFIER LETTER CHINESE TONE YIN RU -A707 MODIFIER LETTER CHINESE TONE YANG RU -@ Dotted tone letters -A708 MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR -A709 MODIFIER LETTER HIGH DOTTED TONE BAR -A70A MODIFIER LETTER MID DOTTED TONE BAR -A70B MODIFIER LETTER LOW DOTTED TONE BAR -A70C MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR -A70D MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR -A70E MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR -A70F MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR -A710 MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR -A711 MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR -@ Left-stem tone letters -A712 MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR -A713 MODIFIER LETTER HIGH LEFT-STEM TONE BAR -A714 MODIFIER LETTER MID LEFT-STEM TONE BAR -A715 MODIFIER LETTER LOW LEFT-STEM TONE BAR -A716 MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR -@@ A800 Syloti Nagri A82F -@ Independent vowels and dvisvara -A800 SYLOTI NAGRI LETTER A -A801 SYLOTI NAGRI LETTER I -A802 SYLOTI NAGRI SIGN DVISVARA -A803 SYLOTI NAGRI LETTER U -A804 SYLOTI NAGRI LETTER E -A805 SYLOTI NAGRI LETTER O -@ Sign -A806 SYLOTI NAGRI SIGN HASANTA - = halant, virama -@ Consonants and consonant signs -A807 SYLOTI NAGRI LETTER KO -A808 SYLOTI NAGRI LETTER KHO -A809 SYLOTI NAGRI LETTER GO -A80A SYLOTI NAGRI LETTER GHO -A80B SYLOTI NAGRI SIGN ANUSVARA -A80C SYLOTI NAGRI LETTER CO -A80D SYLOTI NAGRI LETTER CHO -A80E SYLOTI NAGRI LETTER JO -A80F SYLOTI NAGRI LETTER JHO -A810 SYLOTI NAGRI LETTER TTO -A811 SYLOTI NAGRI LETTER TTHO -A812 SYLOTI NAGRI LETTER DDO -A813 SYLOTI NAGRI LETTER DDHO -A814 SYLOTI NAGRI LETTER TO -A815 SYLOTI NAGRI LETTER THO -A816 SYLOTI NAGRI LETTER DO -A817 SYLOTI NAGRI LETTER DHO -A818 SYLOTI NAGRI LETTER NO -A819 SYLOTI NAGRI LETTER PO -A81A SYLOTI NAGRI LETTER PHO -A81B SYLOTI NAGRI LETTER BO -A81C SYLOTI NAGRI LETTER BHO -A81D SYLOTI NAGRI LETTER MO -A81E SYLOTI NAGRI LETTER RO -A81F SYLOTI NAGRI LETTER LO -A820 SYLOTI NAGRI LETTER RRO -A821 SYLOTI NAGRI LETTER SO -A822 SYLOTI NAGRI LETTER HO -@ Dependent vowel signs -A823 SYLOTI NAGRI VOWEL SIGN A -A824 SYLOTI NAGRI VOWEL SIGN I -A825 SYLOTI NAGRI VOWEL SIGN U -A826 SYLOTI NAGRI VOWEL SIGN E -A827 SYLOTI NAGRI VOWEL SIGN OO -@ Poetry marks -A828 SYLOTI NAGRI POETRY MARK-1 -A829 SYLOTI NAGRI POETRY MARK-2 -A82A SYLOTI NAGRI POETRY MARK-3 -A82B SYLOTI NAGRI POETRY MARK-4 -@@ AC00 Hangul Syllables D7A3 -@@ D800 High Surrogates DB7F -@@ DB80 High Private Use Surrogates DBFF -@@ DC00 Low Surrogates DFFF -@@ E000 Private Use Area F8FF -@@ F900 CJK Compatibility Ideographs FAFF -@ Pronunciation variants from KS X 1001:1998 -F900 CJK COMPATIBILITY IDEOGRAPH-F900 - : 8C48 -F901 CJK COMPATIBILITY IDEOGRAPH-F901 - : 66F4 -F902 CJK COMPATIBILITY IDEOGRAPH-F902 - : 8ECA -F903 CJK COMPATIBILITY IDEOGRAPH-F903 - : 8CC8 -F904 CJK COMPATIBILITY IDEOGRAPH-F904 - : 6ED1 -F905 CJK COMPATIBILITY IDEOGRAPH-F905 - : 4E32 -F906 CJK COMPATIBILITY IDEOGRAPH-F906 - : 53E5 -F907 CJK COMPATIBILITY IDEOGRAPH-F907 - : 9F9C -F908 CJK COMPATIBILITY IDEOGRAPH-F908 - : 9F9C -F909 CJK COMPATIBILITY IDEOGRAPH-F909 - : 5951 -F90A CJK COMPATIBILITY IDEOGRAPH-F90A - : 91D1 -F90B CJK COMPATIBILITY IDEOGRAPH-F90B - : 5587 -F90C CJK COMPATIBILITY IDEOGRAPH-F90C - : 5948 -F90D CJK COMPATIBILITY IDEOGRAPH-F90D - : 61F6 -F90E CJK COMPATIBILITY IDEOGRAPH-F90E - : 7669 -F90F CJK COMPATIBILITY IDEOGRAPH-F90F - : 7F85 -F910 CJK COMPATIBILITY IDEOGRAPH-F910 - : 863F -F911 CJK COMPATIBILITY IDEOGRAPH-F911 - : 87BA -F912 CJK COMPATIBILITY IDEOGRAPH-F912 - : 88F8 -F913 CJK COMPATIBILITY IDEOGRAPH-F913 - : 908F -F914 CJK COMPATIBILITY IDEOGRAPH-F914 - : 6A02 -F915 CJK COMPATIBILITY IDEOGRAPH-F915 - : 6D1B -F916 CJK COMPATIBILITY IDEOGRAPH-F916 - : 70D9 -F917 CJK COMPATIBILITY IDEOGRAPH-F917 - : 73DE -F918 CJK COMPATIBILITY IDEOGRAPH-F918 - : 843D -F919 CJK COMPATIBILITY IDEOGRAPH-F919 - : 916A -F91A CJK COMPATIBILITY IDEOGRAPH-F91A - : 99F1 -F91B CJK COMPATIBILITY IDEOGRAPH-F91B - : 4E82 -F91C CJK COMPATIBILITY IDEOGRAPH-F91C - : 5375 -F91D CJK COMPATIBILITY IDEOGRAPH-F91D - : 6B04 -F91E CJK COMPATIBILITY IDEOGRAPH-F91E - : 721B -F91F CJK COMPATIBILITY IDEOGRAPH-F91F - : 862D -F920 CJK COMPATIBILITY IDEOGRAPH-F920 - : 9E1E -F921 CJK COMPATIBILITY IDEOGRAPH-F921 - : 5D50 -F922 CJK COMPATIBILITY IDEOGRAPH-F922 - : 6FEB -F923 CJK COMPATIBILITY IDEOGRAPH-F923 - : 85CD -F924 CJK COMPATIBILITY IDEOGRAPH-F924 - : 8964 -F925 CJK COMPATIBILITY IDEOGRAPH-F925 - : 62C9 -F926 CJK COMPATIBILITY IDEOGRAPH-F926 - : 81D8 -F927 CJK COMPATIBILITY IDEOGRAPH-F927 - : 881F -F928 CJK COMPATIBILITY IDEOGRAPH-F928 - : 5ECA -F929 CJK COMPATIBILITY IDEOGRAPH-F929 - : 6717 -F92A CJK COMPATIBILITY IDEOGRAPH-F92A - : 6D6A -F92B CJK COMPATIBILITY IDEOGRAPH-F92B - : 72FC -F92C CJK COMPATIBILITY IDEOGRAPH-F92C - : 90CE -F92D CJK COMPATIBILITY IDEOGRAPH-F92D - : 4F86 -F92E CJK COMPATIBILITY IDEOGRAPH-F92E - : 51B7 -F92F CJK COMPATIBILITY IDEOGRAPH-F92F - : 52DE -F930 CJK COMPATIBILITY IDEOGRAPH-F930 - : 64C4 -F931 CJK COMPATIBILITY IDEOGRAPH-F931 - : 6AD3 -F932 CJK COMPATIBILITY IDEOGRAPH-F932 - : 7210 -F933 CJK COMPATIBILITY IDEOGRAPH-F933 - : 76E7 -F934 CJK COMPATIBILITY IDEOGRAPH-F934 - : 8001 -F935 CJK COMPATIBILITY IDEOGRAPH-F935 - : 8606 -F936 CJK COMPATIBILITY IDEOGRAPH-F936 - : 865C -F937 CJK COMPATIBILITY IDEOGRAPH-F937 - : 8DEF -F938 CJK COMPATIBILITY IDEOGRAPH-F938 - : 9732 -F939 CJK COMPATIBILITY IDEOGRAPH-F939 - : 9B6F -F93A CJK COMPATIBILITY IDEOGRAPH-F93A - : 9DFA -F93B CJK COMPATIBILITY IDEOGRAPH-F93B - : 788C -F93C CJK COMPATIBILITY IDEOGRAPH-F93C - : 797F -F93D CJK COMPATIBILITY IDEOGRAPH-F93D - : 7DA0 -F93E CJK COMPATIBILITY IDEOGRAPH-F93E - : 83C9 -F93F CJK COMPATIBILITY IDEOGRAPH-F93F - : 9304 -F940 CJK COMPATIBILITY IDEOGRAPH-F940 - : 9E7F -F941 CJK COMPATIBILITY IDEOGRAPH-F941 - : 8AD6 -F942 CJK COMPATIBILITY IDEOGRAPH-F942 - : 58DF -F943 CJK COMPATIBILITY IDEOGRAPH-F943 - : 5F04 -F944 CJK COMPATIBILITY IDEOGRAPH-F944 - : 7C60 -F945 CJK COMPATIBILITY IDEOGRAPH-F945 - : 807E -F946 CJK COMPATIBILITY IDEOGRAPH-F946 - : 7262 -F947 CJK COMPATIBILITY IDEOGRAPH-F947 - : 78CA -F948 CJK COMPATIBILITY IDEOGRAPH-F948 - : 8CC2 -F949 CJK COMPATIBILITY IDEOGRAPH-F949 - : 96F7 -F94A CJK COMPATIBILITY IDEOGRAPH-F94A - : 58D8 -F94B CJK COMPATIBILITY IDEOGRAPH-F94B - : 5C62 -F94C CJK COMPATIBILITY IDEOGRAPH-F94C - : 6A13 -F94D CJK COMPATIBILITY IDEOGRAPH-F94D - : 6DDA -F94E CJK COMPATIBILITY IDEOGRAPH-F94E - : 6F0F -F94F CJK COMPATIBILITY IDEOGRAPH-F94F - : 7D2F -F950 CJK COMPATIBILITY IDEOGRAPH-F950 - : 7E37 -F951 CJK COMPATIBILITY IDEOGRAPH-F951 - : 964B -F952 CJK COMPATIBILITY IDEOGRAPH-F952 - : 52D2 -F953 CJK COMPATIBILITY IDEOGRAPH-F953 - : 808B -F954 CJK COMPATIBILITY IDEOGRAPH-F954 - : 51DC -F955 CJK COMPATIBILITY IDEOGRAPH-F955 - : 51CC -F956 CJK COMPATIBILITY IDEOGRAPH-F956 - : 7A1C -F957 CJK COMPATIBILITY IDEOGRAPH-F957 - : 7DBE -F958 CJK COMPATIBILITY IDEOGRAPH-F958 - : 83F1 -F959 CJK COMPATIBILITY IDEOGRAPH-F959 - : 9675 -F95A CJK COMPATIBILITY IDEOGRAPH-F95A - : 8B80 -F95B CJK COMPATIBILITY IDEOGRAPH-F95B - : 62CF -F95C CJK COMPATIBILITY IDEOGRAPH-F95C - : 6A02 -F95D CJK COMPATIBILITY IDEOGRAPH-F95D - : 8AFE -F95E CJK COMPATIBILITY IDEOGRAPH-F95E - : 4E39 -F95F CJK COMPATIBILITY IDEOGRAPH-F95F - : 5BE7 -F960 CJK COMPATIBILITY IDEOGRAPH-F960 - : 6012 -F961 CJK COMPATIBILITY IDEOGRAPH-F961 - : 7387 -F962 CJK COMPATIBILITY IDEOGRAPH-F962 - : 7570 -F963 CJK COMPATIBILITY IDEOGRAPH-F963 - : 5317 -F964 CJK COMPATIBILITY IDEOGRAPH-F964 - : 78FB -F965 CJK COMPATIBILITY IDEOGRAPH-F965 - : 4FBF -F966 CJK COMPATIBILITY IDEOGRAPH-F966 - : 5FA9 -F967 CJK COMPATIBILITY IDEOGRAPH-F967 - : 4E0D -F968 CJK COMPATIBILITY IDEOGRAPH-F968 - : 6CCC -F969 CJK COMPATIBILITY IDEOGRAPH-F969 - : 6578 -F96A CJK COMPATIBILITY IDEOGRAPH-F96A - : 7D22 -F96B CJK COMPATIBILITY IDEOGRAPH-F96B - : 53C3 -F96C CJK COMPATIBILITY IDEOGRAPH-F96C - : 585E -F96D CJK COMPATIBILITY IDEOGRAPH-F96D - : 7701 -F96E CJK COMPATIBILITY IDEOGRAPH-F96E - : 8449 -F96F CJK COMPATIBILITY IDEOGRAPH-F96F - : 8AAA -F970 CJK COMPATIBILITY IDEOGRAPH-F970 - : 6BBA -F971 CJK COMPATIBILITY IDEOGRAPH-F971 - : 8FB0 -F972 CJK COMPATIBILITY IDEOGRAPH-F972 - : 6C88 -F973 CJK COMPATIBILITY IDEOGRAPH-F973 - : 62FE -F974 CJK COMPATIBILITY IDEOGRAPH-F974 - : 82E5 -F975 CJK COMPATIBILITY IDEOGRAPH-F975 - : 63A0 -F976 CJK COMPATIBILITY IDEOGRAPH-F976 - : 7565 -F977 CJK COMPATIBILITY IDEOGRAPH-F977 - : 4EAE -F978 CJK COMPATIBILITY IDEOGRAPH-F978 - : 5169 -F979 CJK COMPATIBILITY IDEOGRAPH-F979 - : 51C9 -F97A CJK COMPATIBILITY IDEOGRAPH-F97A - : 6881 -F97B CJK COMPATIBILITY IDEOGRAPH-F97B - : 7CE7 -F97C CJK COMPATIBILITY IDEOGRAPH-F97C - : 826F -F97D CJK COMPATIBILITY IDEOGRAPH-F97D - : 8AD2 -F97E CJK COMPATIBILITY IDEOGRAPH-F97E - : 91CF -F97F CJK COMPATIBILITY IDEOGRAPH-F97F - : 52F5 -F980 CJK COMPATIBILITY IDEOGRAPH-F980 - : 5442 -F981 CJK COMPATIBILITY IDEOGRAPH-F981 - : 5973 -F982 CJK COMPATIBILITY IDEOGRAPH-F982 - : 5EEC -F983 CJK COMPATIBILITY IDEOGRAPH-F983 - : 65C5 -F984 CJK COMPATIBILITY IDEOGRAPH-F984 - : 6FFE -F985 CJK COMPATIBILITY IDEOGRAPH-F985 - : 792A -F986 CJK COMPATIBILITY IDEOGRAPH-F986 - : 95AD -F987 CJK COMPATIBILITY IDEOGRAPH-F987 - : 9A6A -F988 CJK COMPATIBILITY IDEOGRAPH-F988 - : 9E97 -F989 CJK COMPATIBILITY IDEOGRAPH-F989 - : 9ECE -F98A CJK COMPATIBILITY IDEOGRAPH-F98A - : 529B -F98B CJK COMPATIBILITY IDEOGRAPH-F98B - : 66C6 -F98C CJK COMPATIBILITY IDEOGRAPH-F98C - : 6B77 -F98D CJK COMPATIBILITY IDEOGRAPH-F98D - : 8F62 -F98E CJK COMPATIBILITY IDEOGRAPH-F98E - : 5E74 -F98F CJK COMPATIBILITY IDEOGRAPH-F98F - : 6190 -F990 CJK COMPATIBILITY IDEOGRAPH-F990 - : 6200 -F991 CJK COMPATIBILITY IDEOGRAPH-F991 - : 649A -F992 CJK COMPATIBILITY IDEOGRAPH-F992 - : 6F23 -F993 CJK COMPATIBILITY IDEOGRAPH-F993 - : 7149 -F994 CJK COMPATIBILITY IDEOGRAPH-F994 - : 7489 -F995 CJK COMPATIBILITY IDEOGRAPH-F995 - : 79CA -F996 CJK COMPATIBILITY IDEOGRAPH-F996 - : 7DF4 -F997 CJK COMPATIBILITY IDEOGRAPH-F997 - : 806F -F998 CJK COMPATIBILITY IDEOGRAPH-F998 - : 8F26 -F999 CJK COMPATIBILITY IDEOGRAPH-F999 - : 84EE -F99A CJK COMPATIBILITY IDEOGRAPH-F99A - : 9023 -F99B CJK COMPATIBILITY IDEOGRAPH-F99B - : 934A -F99C CJK COMPATIBILITY IDEOGRAPH-F99C - : 5217 -F99D CJK COMPATIBILITY IDEOGRAPH-F99D - : 52A3 -F99E CJK COMPATIBILITY IDEOGRAPH-F99E - : 54BD -F99F CJK COMPATIBILITY IDEOGRAPH-F99F - : 70C8 -F9A0 CJK COMPATIBILITY IDEOGRAPH-F9A0 - : 88C2 -F9A1 CJK COMPATIBILITY IDEOGRAPH-F9A1 - : 8AAA -F9A2 CJK COMPATIBILITY IDEOGRAPH-F9A2 - : 5EC9 -F9A3 CJK COMPATIBILITY IDEOGRAPH-F9A3 - : 5FF5 -F9A4 CJK COMPATIBILITY IDEOGRAPH-F9A4 - : 637B -F9A5 CJK COMPATIBILITY IDEOGRAPH-F9A5 - : 6BAE -F9A6 CJK COMPATIBILITY IDEOGRAPH-F9A6 - : 7C3E -F9A7 CJK COMPATIBILITY IDEOGRAPH-F9A7 - : 7375 -F9A8 CJK COMPATIBILITY IDEOGRAPH-F9A8 - : 4EE4 -F9A9 CJK COMPATIBILITY IDEOGRAPH-F9A9 - : 56F9 -F9AA CJK COMPATIBILITY IDEOGRAPH-F9AA - : 5BE7 -F9AB CJK COMPATIBILITY IDEOGRAPH-F9AB - : 5DBA -F9AC CJK COMPATIBILITY IDEOGRAPH-F9AC - : 601C -F9AD CJK COMPATIBILITY IDEOGRAPH-F9AD - : 73B2 -F9AE CJK COMPATIBILITY IDEOGRAPH-F9AE - : 7469 -F9AF CJK COMPATIBILITY IDEOGRAPH-F9AF - : 7F9A -F9B0 CJK COMPATIBILITY IDEOGRAPH-F9B0 - : 8046 -F9B1 CJK COMPATIBILITY IDEOGRAPH-F9B1 - : 9234 -F9B2 CJK COMPATIBILITY IDEOGRAPH-F9B2 - : 96F6 -F9B3 CJK COMPATIBILITY IDEOGRAPH-F9B3 - : 9748 -F9B4 CJK COMPATIBILITY IDEOGRAPH-F9B4 - : 9818 -F9B5 CJK COMPATIBILITY IDEOGRAPH-F9B5 - : 4F8B -F9B6 CJK COMPATIBILITY IDEOGRAPH-F9B6 - : 79AE -F9B7 CJK COMPATIBILITY IDEOGRAPH-F9B7 - : 91B4 -F9B8 CJK COMPATIBILITY IDEOGRAPH-F9B8 - x (cjk unified ideograph-96B7 - 96B7) - : 96B8 -F9B9 CJK COMPATIBILITY IDEOGRAPH-F9B9 - : 60E1 -F9BA CJK COMPATIBILITY IDEOGRAPH-F9BA - : 4E86 -F9BB CJK COMPATIBILITY IDEOGRAPH-F9BB - : 50DA -F9BC CJK COMPATIBILITY IDEOGRAPH-F9BC - : 5BEE -F9BD CJK COMPATIBILITY IDEOGRAPH-F9BD - : 5C3F -F9BE CJK COMPATIBILITY IDEOGRAPH-F9BE - : 6599 -F9BF CJK COMPATIBILITY IDEOGRAPH-F9BF - : 6A02 -F9C0 CJK COMPATIBILITY IDEOGRAPH-F9C0 - : 71CE -F9C1 CJK COMPATIBILITY IDEOGRAPH-F9C1 - : 7642 -F9C2 CJK COMPATIBILITY IDEOGRAPH-F9C2 - : 84FC -F9C3 CJK COMPATIBILITY IDEOGRAPH-F9C3 - : 907C -F9C4 CJK COMPATIBILITY IDEOGRAPH-F9C4 - : 9F8D -F9C5 CJK COMPATIBILITY IDEOGRAPH-F9C5 - : 6688 -F9C6 CJK COMPATIBILITY IDEOGRAPH-F9C6 - : 962E -F9C7 CJK COMPATIBILITY IDEOGRAPH-F9C7 - : 5289 -F9C8 CJK COMPATIBILITY IDEOGRAPH-F9C8 - : 677B -F9C9 CJK COMPATIBILITY IDEOGRAPH-F9C9 - : 67F3 -F9CA CJK COMPATIBILITY IDEOGRAPH-F9CA - : 6D41 -F9CB CJK COMPATIBILITY IDEOGRAPH-F9CB - : 6E9C -F9CC CJK COMPATIBILITY IDEOGRAPH-F9CC - : 7409 -F9CD CJK COMPATIBILITY IDEOGRAPH-F9CD - : 7559 -F9CE CJK COMPATIBILITY IDEOGRAPH-F9CE - : 786B -F9CF CJK COMPATIBILITY IDEOGRAPH-F9CF - : 7D10 -F9D0 CJK COMPATIBILITY IDEOGRAPH-F9D0 - : 985E -F9D1 CJK COMPATIBILITY IDEOGRAPH-F9D1 - : 516D -F9D2 CJK COMPATIBILITY IDEOGRAPH-F9D2 - : 622E -F9D3 CJK COMPATIBILITY IDEOGRAPH-F9D3 - : 9678 -F9D4 CJK COMPATIBILITY IDEOGRAPH-F9D4 - : 502B -F9D5 CJK COMPATIBILITY IDEOGRAPH-F9D5 - : 5D19 -F9D6 CJK COMPATIBILITY IDEOGRAPH-F9D6 - : 6DEA -F9D7 CJK COMPATIBILITY IDEOGRAPH-F9D7 - : 8F2A -F9D8 CJK COMPATIBILITY IDEOGRAPH-F9D8 - : 5F8B -F9D9 CJK COMPATIBILITY IDEOGRAPH-F9D9 - : 6144 -F9DA CJK COMPATIBILITY IDEOGRAPH-F9DA - : 6817 -F9DB CJK COMPATIBILITY IDEOGRAPH-F9DB - : 7387 -F9DC CJK COMPATIBILITY IDEOGRAPH-F9DC - : 9686 -F9DD CJK COMPATIBILITY IDEOGRAPH-F9DD - : 5229 -F9DE CJK COMPATIBILITY IDEOGRAPH-F9DE - : 540F -F9DF CJK COMPATIBILITY IDEOGRAPH-F9DF - : 5C65 -F9E0 CJK COMPATIBILITY IDEOGRAPH-F9E0 - : 6613 -F9E1 CJK COMPATIBILITY IDEOGRAPH-F9E1 - : 674E -F9E2 CJK COMPATIBILITY IDEOGRAPH-F9E2 - : 68A8 -F9E3 CJK COMPATIBILITY IDEOGRAPH-F9E3 - : 6CE5 -F9E4 CJK COMPATIBILITY IDEOGRAPH-F9E4 - : 7406 -F9E5 CJK COMPATIBILITY IDEOGRAPH-F9E5 - : 75E2 -F9E6 CJK COMPATIBILITY IDEOGRAPH-F9E6 - : 7F79 -F9E7 CJK COMPATIBILITY IDEOGRAPH-F9E7 - : 88CF -F9E8 CJK COMPATIBILITY IDEOGRAPH-F9E8 - : 88E1 -F9E9 CJK COMPATIBILITY IDEOGRAPH-F9E9 - : 91CC -F9EA CJK COMPATIBILITY IDEOGRAPH-F9EA - : 96E2 -F9EB CJK COMPATIBILITY IDEOGRAPH-F9EB - : 533F -F9EC CJK COMPATIBILITY IDEOGRAPH-F9EC - : 6EBA -F9ED CJK COMPATIBILITY IDEOGRAPH-F9ED - : 541D -F9EE CJK COMPATIBILITY IDEOGRAPH-F9EE - : 71D0 -F9EF CJK COMPATIBILITY IDEOGRAPH-F9EF - : 7498 -F9F0 CJK COMPATIBILITY IDEOGRAPH-F9F0 - : 85FA -F9F1 CJK COMPATIBILITY IDEOGRAPH-F9F1 - : 96A3 -F9F2 CJK COMPATIBILITY IDEOGRAPH-F9F2 - : 9C57 -F9F3 CJK COMPATIBILITY IDEOGRAPH-F9F3 - : 9E9F -F9F4 CJK COMPATIBILITY IDEOGRAPH-F9F4 - : 6797 -F9F5 CJK COMPATIBILITY IDEOGRAPH-F9F5 - : 6DCB -F9F6 CJK COMPATIBILITY IDEOGRAPH-F9F6 - : 81E8 -F9F7 CJK COMPATIBILITY IDEOGRAPH-F9F7 - : 7ACB -F9F8 CJK COMPATIBILITY IDEOGRAPH-F9F8 - : 7B20 -F9F9 CJK COMPATIBILITY IDEOGRAPH-F9F9 - : 7C92 -F9FA CJK COMPATIBILITY IDEOGRAPH-F9FA - : 72C0 -F9FB CJK COMPATIBILITY IDEOGRAPH-F9FB - : 7099 -F9FC CJK COMPATIBILITY IDEOGRAPH-F9FC - : 8B58 -F9FD CJK COMPATIBILITY IDEOGRAPH-F9FD - : 4EC0 -F9FE CJK COMPATIBILITY IDEOGRAPH-F9FE - : 8336 -F9FF CJK COMPATIBILITY IDEOGRAPH-F9FF - : 523A -FA00 CJK COMPATIBILITY IDEOGRAPH-FA00 - : 5207 -FA01 CJK COMPATIBILITY IDEOGRAPH-FA01 - : 5EA6 -FA02 CJK COMPATIBILITY IDEOGRAPH-FA02 - : 62D3 -FA03 CJK COMPATIBILITY IDEOGRAPH-FA03 - : 7CD6 -FA04 CJK COMPATIBILITY IDEOGRAPH-FA04 - : 5B85 -FA05 CJK COMPATIBILITY IDEOGRAPH-FA05 - : 6D1E -FA06 CJK COMPATIBILITY IDEOGRAPH-FA06 - : 66B4 -FA07 CJK COMPATIBILITY IDEOGRAPH-FA07 - : 8F3B -FA08 CJK COMPATIBILITY IDEOGRAPH-FA08 - : 884C -FA09 CJK COMPATIBILITY IDEOGRAPH-FA09 - : 964D -FA0A CJK COMPATIBILITY IDEOGRAPH-FA0A - : 898B -FA0B CJK COMPATIBILITY IDEOGRAPH-FA0B - : 5ED3 -@ Duplicates from Big 5 -FA0C CJK COMPATIBILITY IDEOGRAPH-FA0C - : 5140 -FA0D CJK COMPATIBILITY IDEOGRAPH-FA0D - : 55C0 -@ The IBM 32 compatibility ideographs -FA0E CJK COMPATIBILITY IDEOGRAPH-FA0E - * a unified CJK ideograph, not a compatibility ideograph, despite its name -FA0F CJK COMPATIBILITY IDEOGRAPH-FA0F - * a unified CJK ideograph, not a compatibility ideograph, despite its name -FA10 CJK COMPATIBILITY IDEOGRAPH-FA10 - : 585A -FA11 CJK COMPATIBILITY IDEOGRAPH-FA11 - * a unified CJK ideograph, not a compatibility ideograph, despite its name -FA12 CJK COMPATIBILITY IDEOGRAPH-FA12 - : 6674 -FA13 CJK COMPATIBILITY IDEOGRAPH-FA13 - * a unified CJK ideograph, not a compatibility ideograph, despite its name -FA14 CJK COMPATIBILITY IDEOGRAPH-FA14 - * a unified CJK ideograph, not a compatibility ideograph, despite its name -FA15 CJK COMPATIBILITY IDEOGRAPH-FA15 - : 51DE -FA16 CJK COMPATIBILITY IDEOGRAPH-FA16 - : 732A -FA17 CJK COMPATIBILITY IDEOGRAPH-FA17 - : 76CA -FA18 CJK COMPATIBILITY IDEOGRAPH-FA18 - : 793C -FA19 CJK COMPATIBILITY IDEOGRAPH-FA19 - : 795E -FA1A CJK COMPATIBILITY IDEOGRAPH-FA1A - : 7965 -FA1B CJK COMPATIBILITY IDEOGRAPH-FA1B - : 798F -FA1C CJK COMPATIBILITY IDEOGRAPH-FA1C - : 9756 -FA1D CJK COMPATIBILITY IDEOGRAPH-FA1D - : 7CBE -FA1E CJK COMPATIBILITY IDEOGRAPH-FA1E - : 7FBD -FA1F CJK COMPATIBILITY IDEOGRAPH-FA1F * - * a unified CJK ideograph, not a compatibility ideograph, despite its name -FA20 CJK COMPATIBILITY IDEOGRAPH-FA20 - : 8612 -FA21 CJK COMPATIBILITY IDEOGRAPH-FA21 - * a unified CJK ideograph, not a compatibility ideograph, despite its name -FA22 CJK COMPATIBILITY IDEOGRAPH-FA22 - : 8AF8 -FA23 CJK COMPATIBILITY IDEOGRAPH-FA23 * - * a unified CJK ideograph, not a compatibility ideograph, despite its name -FA24 CJK COMPATIBILITY IDEOGRAPH-FA24 - * a unified CJK ideograph, not a compatibility ideograph, despite its name -FA25 CJK COMPATIBILITY IDEOGRAPH-FA25 - : 9038 -FA26 CJK COMPATIBILITY IDEOGRAPH-FA26 - : 90FD -FA27 CJK COMPATIBILITY IDEOGRAPH-FA27 - * a unified CJK ideograph, not a compatibility ideograph, despite its name -FA28 CJK COMPATIBILITY IDEOGRAPH-FA28 - * a unified CJK ideograph, not a compatibility ideograph, despite its name -FA29 CJK COMPATIBILITY IDEOGRAPH-FA29 - * a unified CJK ideograph, not a compatibility ideograph, despite its name -FA2A CJK COMPATIBILITY IDEOGRAPH-FA2A - : 98EF -FA2B CJK COMPATIBILITY IDEOGRAPH-FA2B - : 98FC -FA2C CJK COMPATIBILITY IDEOGRAPH-FA2C - : 9928 -FA2D CJK COMPATIBILITY IDEOGRAPH-FA2D - : 9DB4 -@ JIS X 0213 compatibility ideographs -FA30 CJK COMPATIBILITY IDEOGRAPH-FA30 - : 4FAE -FA31 CJK COMPATIBILITY IDEOGRAPH-FA31 - : 50E7 -FA32 CJK COMPATIBILITY IDEOGRAPH-FA32 - : 514D -FA33 CJK COMPATIBILITY IDEOGRAPH-FA33 - : 52C9 -FA34 CJK COMPATIBILITY IDEOGRAPH-FA34 - : 52E4 -FA35 CJK COMPATIBILITY IDEOGRAPH-FA35 - : 5351 -FA36 CJK COMPATIBILITY IDEOGRAPH-FA36 - : 559D -FA37 CJK COMPATIBILITY IDEOGRAPH-FA37 - : 5606 -FA38 CJK COMPATIBILITY IDEOGRAPH-FA38 - : 5668 -FA39 CJK COMPATIBILITY IDEOGRAPH-FA39 - : 5840 -FA3A CJK COMPATIBILITY IDEOGRAPH-FA3A - : 58A8 -FA3B CJK COMPATIBILITY IDEOGRAPH-FA3B - : 5C64 -FA3C CJK COMPATIBILITY IDEOGRAPH-FA3C - : 5C6E -FA3D CJK COMPATIBILITY IDEOGRAPH-FA3D - : 6094 -FA3E CJK COMPATIBILITY IDEOGRAPH-FA3E - : 6168 -FA3F CJK COMPATIBILITY IDEOGRAPH-FA3F - : 618E -FA40 CJK COMPATIBILITY IDEOGRAPH-FA40 - : 61F2 -FA41 CJK COMPATIBILITY IDEOGRAPH-FA41 - : 654F -FA42 CJK COMPATIBILITY IDEOGRAPH-FA42 - : 65E2 -FA43 CJK COMPATIBILITY IDEOGRAPH-FA43 - : 6691 -FA44 CJK COMPATIBILITY IDEOGRAPH-FA44 - : 6885 -FA45 CJK COMPATIBILITY IDEOGRAPH-FA45 - : 6D77 -FA46 CJK COMPATIBILITY IDEOGRAPH-FA46 - : 6E1A -FA47 CJK COMPATIBILITY IDEOGRAPH-FA47 - : 6F22 -FA48 CJK COMPATIBILITY IDEOGRAPH-FA48 - : 716E -FA49 CJK COMPATIBILITY IDEOGRAPH-FA49 - : 722B -FA4A CJK COMPATIBILITY IDEOGRAPH-FA4A - : 7422 -FA4B CJK COMPATIBILITY IDEOGRAPH-FA4B - : 7891 -FA4C CJK COMPATIBILITY IDEOGRAPH-FA4C - : 793E -FA4D CJK COMPATIBILITY IDEOGRAPH-FA4D - : 7949 -FA4E CJK COMPATIBILITY IDEOGRAPH-FA4E - : 7948 -FA4F CJK COMPATIBILITY IDEOGRAPH-FA4F - : 7950 -FA50 CJK COMPATIBILITY IDEOGRAPH-FA50 - : 7956 -FA51 CJK COMPATIBILITY IDEOGRAPH-FA51 - : 795D -FA52 CJK COMPATIBILITY IDEOGRAPH-FA52 - : 798D -FA53 CJK COMPATIBILITY IDEOGRAPH-FA53 - : 798E -FA54 CJK COMPATIBILITY IDEOGRAPH-FA54 - : 7A40 -FA55 CJK COMPATIBILITY IDEOGRAPH-FA55 - : 7A81 -FA56 CJK COMPATIBILITY IDEOGRAPH-FA56 - : 7BC0 -FA57 CJK COMPATIBILITY IDEOGRAPH-FA57 - : 7DF4 -FA58 CJK COMPATIBILITY IDEOGRAPH-FA58 - : 7E09 -FA59 CJK COMPATIBILITY IDEOGRAPH-FA59 - : 7E41 -FA5A CJK COMPATIBILITY IDEOGRAPH-FA5A - : 7F72 -FA5B CJK COMPATIBILITY IDEOGRAPH-FA5B - : 8005 -FA5C CJK COMPATIBILITY IDEOGRAPH-FA5C - : 81ED -FA5D CJK COMPATIBILITY IDEOGRAPH-FA5D - : 8279 -FA5E CJK COMPATIBILITY IDEOGRAPH-FA5E - : 8279 -FA5F CJK COMPATIBILITY IDEOGRAPH-FA5F - : 8457 -FA60 CJK COMPATIBILITY IDEOGRAPH-FA60 - : 8910 -FA61 CJK COMPATIBILITY IDEOGRAPH-FA61 - : 8996 -FA62 CJK COMPATIBILITY IDEOGRAPH-FA62 - : 8B01 -FA63 CJK COMPATIBILITY IDEOGRAPH-FA63 - : 8B39 -FA64 CJK COMPATIBILITY IDEOGRAPH-FA64 - : 8CD3 -FA65 CJK COMPATIBILITY IDEOGRAPH-FA65 - : 8D08 -FA66 CJK COMPATIBILITY IDEOGRAPH-FA66 - : 8FB6 -FA67 CJK COMPATIBILITY IDEOGRAPH-FA67 - : 9038 -FA68 CJK COMPATIBILITY IDEOGRAPH-FA68 - : 96E3 -FA69 CJK COMPATIBILITY IDEOGRAPH-FA69 - : 97FF -FA6A CJK COMPATIBILITY IDEOGRAPH-FA6A - : 983B -@ DPRK compatibility ideographs -FA70 CJK COMPATIBILITY IDEOGRAPH-FA70 - : 4E26 -FA71 CJK COMPATIBILITY IDEOGRAPH-FA71 - : 51B5 -FA72 CJK COMPATIBILITY IDEOGRAPH-FA72 - : 5168 -FA73 CJK COMPATIBILITY IDEOGRAPH-FA73 - : 4F80 -FA74 CJK COMPATIBILITY IDEOGRAPH-FA74 - : 5145 -FA75 CJK COMPATIBILITY IDEOGRAPH-FA75 - : 5180 -FA76 CJK COMPATIBILITY IDEOGRAPH-FA76 - : 52C7 -FA77 CJK COMPATIBILITY IDEOGRAPH-FA77 - : 52FA -FA78 CJK COMPATIBILITY IDEOGRAPH-FA78 - : 559D -FA79 CJK COMPATIBILITY IDEOGRAPH-FA79 - : 5555 -FA7A CJK COMPATIBILITY IDEOGRAPH-FA7A - : 5599 -FA7B CJK COMPATIBILITY IDEOGRAPH-FA7B - : 55E2 -FA7C CJK COMPATIBILITY IDEOGRAPH-FA7C - : 585A -FA7D CJK COMPATIBILITY IDEOGRAPH-FA7D - : 58B3 -FA7E CJK COMPATIBILITY IDEOGRAPH-FA7E - : 5944 -FA7F CJK COMPATIBILITY IDEOGRAPH-FA7F - : 5954 -FA80 CJK COMPATIBILITY IDEOGRAPH-FA80 - : 5A62 -FA81 CJK COMPATIBILITY IDEOGRAPH-FA81 - : 5B28 -FA82 CJK COMPATIBILITY IDEOGRAPH-FA82 - : 5ED2 -FA83 CJK COMPATIBILITY IDEOGRAPH-FA83 - : 5ED9 -FA84 CJK COMPATIBILITY IDEOGRAPH-FA84 - : 5F69 -FA85 CJK COMPATIBILITY IDEOGRAPH-FA85 - : 5FAD -FA86 CJK COMPATIBILITY IDEOGRAPH-FA86 - : 60D8 -FA87 CJK COMPATIBILITY IDEOGRAPH-FA87 - : 614E -FA88 CJK COMPATIBILITY IDEOGRAPH-FA88 - : 6108 -FA89 CJK COMPATIBILITY IDEOGRAPH-FA89 - : 618E -FA8A CJK COMPATIBILITY IDEOGRAPH-FA8A - : 6160 -FA8B CJK COMPATIBILITY IDEOGRAPH-FA8B - : 61F2 -FA8C CJK COMPATIBILITY IDEOGRAPH-FA8C - : 6234 -FA8D CJK COMPATIBILITY IDEOGRAPH-FA8D - : 63C4 -FA8E CJK COMPATIBILITY IDEOGRAPH-FA8E - : 641C -FA8F CJK COMPATIBILITY IDEOGRAPH-FA8F - : 6452 -FA90 CJK COMPATIBILITY IDEOGRAPH-FA90 - : 6556 -FA91 CJK COMPATIBILITY IDEOGRAPH-FA91 - : 6674 -FA92 CJK COMPATIBILITY IDEOGRAPH-FA92 - : 6717 -FA93 CJK COMPATIBILITY IDEOGRAPH-FA93 - : 671B -FA94 CJK COMPATIBILITY IDEOGRAPH-FA94 - : 6756 -FA95 CJK COMPATIBILITY IDEOGRAPH-FA95 - : 6B79 -FA96 CJK COMPATIBILITY IDEOGRAPH-FA96 - : 6BBA -FA97 CJK COMPATIBILITY IDEOGRAPH-FA97 - : 6D41 -FA98 CJK COMPATIBILITY IDEOGRAPH-FA98 - : 6EDB -FA99 CJK COMPATIBILITY IDEOGRAPH-FA99 - : 6ECB -FA9A CJK COMPATIBILITY IDEOGRAPH-FA9A - : 6F22 -FA9B CJK COMPATIBILITY IDEOGRAPH-FA9B - : 701E -FA9C CJK COMPATIBILITY IDEOGRAPH-FA9C - : 716E -FA9D CJK COMPATIBILITY IDEOGRAPH-FA9D - : 77A7 -FA9E CJK COMPATIBILITY IDEOGRAPH-FA9E - : 7235 -FA9F CJK COMPATIBILITY IDEOGRAPH-FA9F - : 72AF -FAA0 CJK COMPATIBILITY IDEOGRAPH-FAA0 - : 732A -FAA1 CJK COMPATIBILITY IDEOGRAPH-FAA1 - : 7471 -FAA2 CJK COMPATIBILITY IDEOGRAPH-FAA2 - : 7506 -FAA3 CJK COMPATIBILITY IDEOGRAPH-FAA3 - : 753B -FAA4 CJK COMPATIBILITY IDEOGRAPH-FAA4 - : 761D -FAA5 CJK COMPATIBILITY IDEOGRAPH-FAA5 - : 761F -FAA6 CJK COMPATIBILITY IDEOGRAPH-FAA6 - : 76CA -FAA7 CJK COMPATIBILITY IDEOGRAPH-FAA7 - : 76DB -FAA8 CJK COMPATIBILITY IDEOGRAPH-FAA8 - : 76F4 -FAA9 CJK COMPATIBILITY IDEOGRAPH-FAA9 - : 774A -FAAA CJK COMPATIBILITY IDEOGRAPH-FAAA - : 7740 -FAAB CJK COMPATIBILITY IDEOGRAPH-FAAB - : 78CC -FAAC CJK COMPATIBILITY IDEOGRAPH-FAAC - : 7AB1 -FAAD CJK COMPATIBILITY IDEOGRAPH-FAAD - : 7BC0 -FAAE CJK COMPATIBILITY IDEOGRAPH-FAAE - : 7C7B -FAAF CJK COMPATIBILITY IDEOGRAPH-FAAF - : 7D5B -FAB0 CJK COMPATIBILITY IDEOGRAPH-FAB0 - : 7DF4 -FAB1 CJK COMPATIBILITY IDEOGRAPH-FAB1 - : 7F3E -FAB2 CJK COMPATIBILITY IDEOGRAPH-FAB2 - : 8005 -FAB3 CJK COMPATIBILITY IDEOGRAPH-FAB3 - : 8352 -FAB4 CJK COMPATIBILITY IDEOGRAPH-FAB4 - : 83EF -FAB5 CJK COMPATIBILITY IDEOGRAPH-FAB5 - : 8779 -FAB6 CJK COMPATIBILITY IDEOGRAPH-FAB6 - : 8941 -FAB7 CJK COMPATIBILITY IDEOGRAPH-FAB7 - : 8986 -FAB8 CJK COMPATIBILITY IDEOGRAPH-FAB8 - : 8996 -FAB9 CJK COMPATIBILITY IDEOGRAPH-FAB9 - : 8ABF -FABA CJK COMPATIBILITY IDEOGRAPH-FABA - : 8AF8 -FABB CJK COMPATIBILITY IDEOGRAPH-FABB - : 8ACB -FABC CJK COMPATIBILITY IDEOGRAPH-FABC - : 8B01 -FABD CJK COMPATIBILITY IDEOGRAPH-FABD - : 8AFE -FABE CJK COMPATIBILITY IDEOGRAPH-FABE - : 8AED -FABF CJK COMPATIBILITY IDEOGRAPH-FABF - : 8B39 -FAC0 CJK COMPATIBILITY IDEOGRAPH-FAC0 - : 8B8A -FAC1 CJK COMPATIBILITY IDEOGRAPH-FAC1 - : 8D08 -FAC2 CJK COMPATIBILITY IDEOGRAPH-FAC2 - : 8F38 -FAC3 CJK COMPATIBILITY IDEOGRAPH-FAC3 - : 9072 -FAC4 CJK COMPATIBILITY IDEOGRAPH-FAC4 - : 9199 -FAC5 CJK COMPATIBILITY IDEOGRAPH-FAC5 - : 9276 -FAC6 CJK COMPATIBILITY IDEOGRAPH-FAC6 - : 967C -FAC7 CJK COMPATIBILITY IDEOGRAPH-FAC7 - : 96E3 -FAC8 CJK COMPATIBILITY IDEOGRAPH-FAC8 - : 9756 -FAC9 CJK COMPATIBILITY IDEOGRAPH-FAC9 - : 97DB -FACA CJK COMPATIBILITY IDEOGRAPH-FACA - : 97FF -FACB CJK COMPATIBILITY IDEOGRAPH-FACB - : 980B -FACC CJK COMPATIBILITY IDEOGRAPH-FACC - : 983B -FACD CJK COMPATIBILITY IDEOGRAPH-FACD - : 9B12 -FACE CJK COMPATIBILITY IDEOGRAPH-FACE - : 9F9C -FACF CJK COMPATIBILITY IDEOGRAPH-FACF - : 2284A -FAD0 CJK COMPATIBILITY IDEOGRAPH-FAD0 - : 22844 -FAD1 CJK COMPATIBILITY IDEOGRAPH-FAD1 - : 233D5 -FAD2 CJK COMPATIBILITY IDEOGRAPH-FAD2 - : 3B9D -FAD3 CJK COMPATIBILITY IDEOGRAPH-FAD3 - : 4018 -FAD4 CJK COMPATIBILITY IDEOGRAPH-FAD4 - : 4039 -FAD5 CJK COMPATIBILITY IDEOGRAPH-FAD5 - : 25249 -FAD6 CJK COMPATIBILITY IDEOGRAPH-FAD6 - : 25CD0 -FAD7 CJK COMPATIBILITY IDEOGRAPH-FAD7 - : 27ED3 -FAD8 CJK COMPATIBILITY IDEOGRAPH-FAD8 - : 9F43 -FAD9 CJK COMPATIBILITY IDEOGRAPH-FAD9 - : 9F8E -@@ FB00 Alphabetic Presentation Forms FB4F -@ Latin ligatures -@+ See the Basic Latin block starting at 0020 -FB00 LATIN SMALL LIGATURE FF - # 0066 0066 -FB01 LATIN SMALL LIGATURE FI - # 0066 0069 -FB02 LATIN SMALL LIGATURE FL - # 0066 006C -FB03 LATIN SMALL LIGATURE FFI - # 0066 0066 0069 -FB04 LATIN SMALL LIGATURE FFL - # 0066 0066 006C -FB05 LATIN SMALL LIGATURE LONG S T - # 017F 0074 -FB06 LATIN SMALL LIGATURE ST - # 0073 0074 -@ Armenian ligatures -@+ See the Armenian block starting at 0530 -FB13 ARMENIAN SMALL LIGATURE MEN NOW - # 0574 0576 -FB14 ARMENIAN SMALL LIGATURE MEN ECH - # 0574 0565 -FB15 ARMENIAN SMALL LIGATURE MEN INI - # 0574 056B -FB16 ARMENIAN SMALL LIGATURE VEW NOW - # 057E 0576 -FB17 ARMENIAN SMALL LIGATURE MEN XEH - # 0574 056D -@ Hebrew presentation forms -@+ See the Hebrew block starting at 0590 -FB1D HEBREW LETTER YOD WITH HIRIQ - : 05D9 05B4 -FB1E HEBREW POINT JUDEO-SPANISH VARIKA - * a glyph variant of 05BF -FB1F HEBREW LIGATURE YIDDISH YOD YOD PATAH - : 05F2 05B7 -FB20 HEBREW LETTER ALTERNATIVE AYIN - * this form of AYIN has no descender, for use with marks placed below the letter - # <font> 05E2 hebrew letter ayin -FB21 HEBREW LETTER WIDE ALEF - # <font> 05D0 hebrew letter alef -FB22 HEBREW LETTER WIDE DALET - # <font> 05D3 hebrew letter dalet -FB23 HEBREW LETTER WIDE HE - # <font> 05D4 hebrew letter he -FB24 HEBREW LETTER WIDE KAF - # <font> 05DB hebrew letter kaf -FB25 HEBREW LETTER WIDE LAMED - # <font> 05DC hebrew letter lamed -FB26 HEBREW LETTER WIDE FINAL MEM - # <font> 05DD hebrew letter final mem -FB27 HEBREW LETTER WIDE RESH - # <font> 05E8 hebrew letter resh -FB28 HEBREW LETTER WIDE TAV - # <font> 05EA hebrew letter tav -FB29 HEBREW LETTER ALTERNATIVE PLUS SIGN - # <font> 002B plus sign -FB2A HEBREW LETTER SHIN WITH SHIN DOT - : 05E9 05C1 -FB2B HEBREW LETTER SHIN WITH SIN DOT - : 05E9 05C2 -FB2C HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT - : FB49 05C1 -FB2D HEBREW LETTER SHIN WITH DAGESH AND SIN DOT - : FB49 05C2 -FB2E HEBREW LETTER ALEF WITH PATAH - : 05D0 05B7 -FB2F HEBREW LETTER ALEF WITH QAMATS - : 05D0 05B8 -FB30 HEBREW LETTER ALEF WITH MAPIQ - : 05D0 05BC -FB31 HEBREW LETTER BET WITH DAGESH - : 05D1 05BC -FB32 HEBREW LETTER GIMEL WITH DAGESH - : 05D2 05BC -FB33 HEBREW LETTER DALET WITH DAGESH - : 05D3 05BC -FB34 HEBREW LETTER HE WITH MAPIQ - : 05D4 05BC -FB35 HEBREW LETTER VAV WITH DAGESH - : 05D5 05BC -FB36 HEBREW LETTER ZAYIN WITH DAGESH - : 05D6 05BC -FB38 HEBREW LETTER TET WITH DAGESH - : 05D8 05BC -FB39 HEBREW LETTER YOD WITH DAGESH - : 05D9 05BC -FB3A HEBREW LETTER FINAL KAF WITH DAGESH - : 05DA 05BC -FB3B HEBREW LETTER KAF WITH DAGESH - : 05DB 05BC -FB3C HEBREW LETTER LAMED WITH DAGESH - : 05DC 05BC -FB3E HEBREW LETTER MEM WITH DAGESH - : 05DE 05BC -FB40 HEBREW LETTER NUN WITH DAGESH - : 05E0 05BC -FB41 HEBREW LETTER SAMEKH WITH DAGESH - : 05E1 05BC -FB43 HEBREW LETTER FINAL PE WITH DAGESH - : 05E3 05BC -FB44 HEBREW LETTER PE WITH DAGESH - : 05E4 05BC -FB46 HEBREW LETTER TSADI WITH DAGESH - : 05E6 05BC -FB47 HEBREW LETTER QOF WITH DAGESH - : 05E7 05BC -FB48 HEBREW LETTER RESH WITH DAGESH - : 05E8 05BC -FB49 HEBREW LETTER SHIN WITH DAGESH - : 05E9 05BC -FB4A HEBREW LETTER TAV WITH DAGESH - : 05EA 05BC -FB4B HEBREW LETTER VAV WITH HOLAM - : 05D5 05B9 -FB4C HEBREW LETTER BET WITH RAFE - : 05D1 05BF -FB4D HEBREW LETTER KAF WITH RAFE - : 05DB 05BF -FB4E HEBREW LETTER PE WITH RAFE - : 05E4 05BF -FB4F HEBREW LIGATURE ALEF LAMED - # 05D0 05DC -@@ FB50 Arabic Presentation Forms-A FDFF -@+ Preferred characters are found in the Arabic block 0600 - 06FF. -@ Glyphs for contextual forms of letters for Persian, Urdu, Sindhi, etc. -FB50 ARABIC LETTER ALEF WASLA ISOLATED FORM - # <isolated> 0671 -FB51 ARABIC LETTER ALEF WASLA FINAL FORM - # <final> 0671 -FB52 ARABIC LETTER BEEH ISOLATED FORM - # <isolated> 067B -FB53 ARABIC LETTER BEEH FINAL FORM - # <final> 067B -FB54 ARABIC LETTER BEEH INITIAL FORM - # <initial> 067B -FB55 ARABIC LETTER BEEH MEDIAL FORM - # <medial> 067B -FB56 ARABIC LETTER PEH ISOLATED FORM - # <isolated> 067E -FB57 ARABIC LETTER PEH FINAL FORM - # <final> 067E -FB58 ARABIC LETTER PEH INITIAL FORM - # <initial> 067E -FB59 ARABIC LETTER PEH MEDIAL FORM - # <medial> 067E -FB5A ARABIC LETTER BEHEH ISOLATED FORM - # <isolated> 0680 -FB5B ARABIC LETTER BEHEH FINAL FORM - # <final> 0680 -FB5C ARABIC LETTER BEHEH INITIAL FORM - # <initial> 0680 -FB5D ARABIC LETTER BEHEH MEDIAL FORM - # <medial> 0680 -FB5E ARABIC LETTER TTEHEH ISOLATED FORM - # <isolated> 067A -FB5F ARABIC LETTER TTEHEH FINAL FORM - # <final> 067A -FB60 ARABIC LETTER TTEHEH INITIAL FORM - # <initial> 067A -FB61 ARABIC LETTER TTEHEH MEDIAL FORM - # <medial> 067A -FB62 ARABIC LETTER TEHEH ISOLATED FORM - # <isolated> 067F -FB63 ARABIC LETTER TEHEH FINAL FORM - # <final> 067F -FB64 ARABIC LETTER TEHEH INITIAL FORM - # <initial> 067F -FB65 ARABIC LETTER TEHEH MEDIAL FORM - # <medial> 067F -FB66 ARABIC LETTER TTEH ISOLATED FORM - # <isolated> 0679 -FB67 ARABIC LETTER TTEH FINAL FORM - # <final> 0679 -FB68 ARABIC LETTER TTEH INITIAL FORM - # <initial> 0679 -FB69 ARABIC LETTER TTEH MEDIAL FORM - # <medial> 0679 -FB6A ARABIC LETTER VEH ISOLATED FORM - # <isolated> 06A4 -FB6B ARABIC LETTER VEH FINAL FORM - # <final> 06A4 -FB6C ARABIC LETTER VEH INITIAL FORM - # <initial> 06A4 -FB6D ARABIC LETTER VEH MEDIAL FORM - # <medial> 06A4 -FB6E ARABIC LETTER PEHEH ISOLATED FORM - # <isolated> 06A6 -FB6F ARABIC LETTER PEHEH FINAL FORM - # <final> 06A6 -FB70 ARABIC LETTER PEHEH INITIAL FORM - # <initial> 06A6 -FB71 ARABIC LETTER PEHEH MEDIAL FORM - # <medial> 06A6 -FB72 ARABIC LETTER DYEH ISOLATED FORM - # <isolated> 0684 -FB73 ARABIC LETTER DYEH FINAL FORM - # <final> 0684 -FB74 ARABIC LETTER DYEH INITIAL FORM - # <initial> 0684 -FB75 ARABIC LETTER DYEH MEDIAL FORM - # <medial> 0684 -FB76 ARABIC LETTER NYEH ISOLATED FORM - # <isolated> 0683 -FB77 ARABIC LETTER NYEH FINAL FORM - # <final> 0683 -FB78 ARABIC LETTER NYEH INITIAL FORM - # <initial> 0683 -FB79 ARABIC LETTER NYEH MEDIAL FORM - # <medial> 0683 -FB7A ARABIC LETTER TCHEH ISOLATED FORM - # <isolated> 0686 -FB7B ARABIC LETTER TCHEH FINAL FORM - # <final> 0686 -FB7C ARABIC LETTER TCHEH INITIAL FORM - # <initial> 0686 -FB7D ARABIC LETTER TCHEH MEDIAL FORM - # <medial> 0686 -FB7E ARABIC LETTER TCHEHEH ISOLATED FORM - # <isolated> 0687 -FB7F ARABIC LETTER TCHEHEH FINAL FORM - # <final> 0687 -FB80 ARABIC LETTER TCHEHEH INITIAL FORM - # <initial> 0687 -FB81 ARABIC LETTER TCHEHEH MEDIAL FORM - # <medial> 0687 -FB82 ARABIC LETTER DDAHAL ISOLATED FORM - # <isolated> 068D -FB83 ARABIC LETTER DDAHAL FINAL FORM - # <final> 068D -FB84 ARABIC LETTER DAHAL ISOLATED FORM - # <isolated> 068C -FB85 ARABIC LETTER DAHAL FINAL FORM - # <final> 068C -FB86 ARABIC LETTER DUL ISOLATED FORM - # <isolated> 068E -FB87 ARABIC LETTER DUL FINAL FORM - # <final> 068E -FB88 ARABIC LETTER DDAL ISOLATED FORM - # <isolated> 0688 -FB89 ARABIC LETTER DDAL FINAL FORM - # <final> 0688 -FB8A ARABIC LETTER JEH ISOLATED FORM - # <isolated> 0698 -FB8B ARABIC LETTER JEH FINAL FORM - # <final> 0698 -FB8C ARABIC LETTER RREH ISOLATED FORM - # <isolated> 0691 -FB8D ARABIC LETTER RREH FINAL FORM - # <final> 0691 -FB8E ARABIC LETTER KEHEH ISOLATED FORM - # <isolated> 06A9 -FB8F ARABIC LETTER KEHEH FINAL FORM - # <final> 06A9 -FB90 ARABIC LETTER KEHEH INITIAL FORM - # <initial> 06A9 -FB91 ARABIC LETTER KEHEH MEDIAL FORM - # <medial> 06A9 -FB92 ARABIC LETTER GAF ISOLATED FORM - # <isolated> 06AF -FB93 ARABIC LETTER GAF FINAL FORM - # <final> 06AF -FB94 ARABIC LETTER GAF INITIAL FORM - # <initial> 06AF -FB95 ARABIC LETTER GAF MEDIAL FORM - # <medial> 06AF -FB96 ARABIC LETTER GUEH ISOLATED FORM - # <isolated> 06B3 -FB97 ARABIC LETTER GUEH FINAL FORM - # <final> 06B3 -FB98 ARABIC LETTER GUEH INITIAL FORM - # <initial> 06B3 -FB99 ARABIC LETTER GUEH MEDIAL FORM - # <medial> 06B3 -FB9A ARABIC LETTER NGOEH ISOLATED FORM - # <isolated> 06B1 -FB9B ARABIC LETTER NGOEH FINAL FORM - # <final> 06B1 -FB9C ARABIC LETTER NGOEH INITIAL FORM - # <initial> 06B1 -FB9D ARABIC LETTER NGOEH MEDIAL FORM - # <medial> 06B1 -FB9E ARABIC LETTER NOON GHUNNA ISOLATED FORM - # <isolated> 06BA -FB9F ARABIC LETTER NOON GHUNNA FINAL FORM - # <final> 06BA -FBA0 ARABIC LETTER RNOON ISOLATED FORM - # <isolated> 06BB -FBA1 ARABIC LETTER RNOON FINAL FORM - # <final> 06BB -FBA2 ARABIC LETTER RNOON INITIAL FORM - # <initial> 06BB -FBA3 ARABIC LETTER RNOON MEDIAL FORM - # <medial> 06BB -FBA4 ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM - # <isolated> 06C0 -FBA5 ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM - # <final> 06C0 -FBA6 ARABIC LETTER HEH GOAL ISOLATED FORM - # <isolated> 06C1 -FBA7 ARABIC LETTER HEH GOAL FINAL FORM - # <final> 06C1 -FBA8 ARABIC LETTER HEH GOAL INITIAL FORM - # <initial> 06C1 -FBA9 ARABIC LETTER HEH GOAL MEDIAL FORM - # <medial> 06C1 -FBAA ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM - # <isolated> 06BE -FBAB ARABIC LETTER HEH DOACHASHMEE FINAL FORM - # <final> 06BE -FBAC ARABIC LETTER HEH DOACHASHMEE INITIAL FORM - # <initial> 06BE -FBAD ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM - # <medial> 06BE -FBAE ARABIC LETTER YEH BARREE ISOLATED FORM - # <isolated> 06D2 -FBAF ARABIC LETTER YEH BARREE FINAL FORM - # <final> 06D2 -FBB0 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM - # <isolated> 06D3 -FBB1 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM - # <final> 06D3 -@ Glyphs for contextual forms of letters for Central Asian languages -FBD3 ARABIC LETTER NG ISOLATED FORM - # <isolated> 06AD -FBD4 ARABIC LETTER NG FINAL FORM - # <final> 06AD -FBD5 ARABIC LETTER NG INITIAL FORM - # <initial> 06AD -FBD6 ARABIC LETTER NG MEDIAL FORM - # <medial> 06AD -FBD7 ARABIC LETTER U ISOLATED FORM - # <isolated> 06C7 -FBD8 ARABIC LETTER U FINAL FORM - # <final> 06C7 -FBD9 ARABIC LETTER OE ISOLATED FORM - # <isolated> 06C6 -FBDA ARABIC LETTER OE FINAL FORM - # <final> 06C6 -FBDB ARABIC LETTER YU ISOLATED FORM - # <isolated> 06C8 -FBDC ARABIC LETTER YU FINAL FORM - # <final> 06C8 -FBDD ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM - # <isolated> 0677 -FBDE ARABIC LETTER VE ISOLATED FORM - # <isolated> 06CB -FBDF ARABIC LETTER VE FINAL FORM - # <final> 06CB -FBE0 ARABIC LETTER KIRGHIZ OE ISOLATED FORM - # <isolated> 06C5 -FBE1 ARABIC LETTER KIRGHIZ OE FINAL FORM - # <final> 06C5 -FBE2 ARABIC LETTER KIRGHIZ YU ISOLATED FORM - # <isolated> 06C9 -FBE3 ARABIC LETTER KIRGHIZ YU FINAL FORM - # <final> 06C9 -FBE4 ARABIC LETTER E ISOLATED FORM - # <isolated> 06D0 -FBE5 ARABIC LETTER E FINAL FORM - # <final> 06D0 -FBE6 ARABIC LETTER E INITIAL FORM - # <initial> 06D0 -FBE7 ARABIC LETTER E MEDIAL FORM - # <medial> 06D0 -FBE8 ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM - # <initial> 0649 -FBE9 ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM - # <medial> 0649 -@ Ligatures (two elements) -FBEA ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM - # <isolated> 0626 0627 -FBEB ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM - # <final> 0626 0627 -FBEC ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM - # <isolated> 0626 06D5 -FBED ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM - # <final> 0626 06D5 -FBEE ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM - # <isolated> 0626 0648 -FBEF ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM - # <final> 0626 0648 -FBF0 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM - # <isolated> 0626 06C7 -FBF1 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM - # <final> 0626 06C7 -FBF2 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM - # <isolated> 0626 06C6 -FBF3 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM - # <final> 0626 06C6 -FBF4 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM - # <isolated> 0626 06C8 -FBF5 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM - # <final> 0626 06C8 -FBF6 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM - # <isolated> 0626 06D0 -FBF7 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM - # <final> 0626 06D0 -FBF8 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM - # <initial> 0626 06D0 -FBF9 ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0626 0649 -FBFA ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM - # <final> 0626 0649 -FBFB ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM - # <initial> 0626 0649 -FBFC ARABIC LETTER FARSI YEH ISOLATED FORM - # <isolated> 06CC -FBFD ARABIC LETTER FARSI YEH FINAL FORM - # <final> 06CC -FBFE ARABIC LETTER FARSI YEH INITIAL FORM - # <initial> 06CC -FBFF ARABIC LETTER FARSI YEH MEDIAL FORM - # <medial> 06CC -FC00 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM - # <isolated> 0626 062C -FC01 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM - # <isolated> 0626 062D -FC02 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM - # <isolated> 0626 0645 -FC03 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0626 0649 -FC04 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM - # <isolated> 0626 064A -FC05 ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM - # <isolated> 0628 062C -FC06 ARABIC LIGATURE BEH WITH HAH ISOLATED FORM - # <isolated> 0628 062D -FC07 ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM - # <isolated> 0628 062E -FC08 ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM - # <isolated> 0628 0645 -FC09 ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0628 0649 -FC0A ARABIC LIGATURE BEH WITH YEH ISOLATED FORM - # <isolated> 0628 064A -FC0B ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM - # <isolated> 062A 062C -FC0C ARABIC LIGATURE TEH WITH HAH ISOLATED FORM - # <isolated> 062A 062D -FC0D ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM - # <isolated> 062A 062E -FC0E ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM - # <isolated> 062A 0645 -FC0F ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 062A 0649 -FC10 ARABIC LIGATURE TEH WITH YEH ISOLATED FORM - # <isolated> 062A 064A -FC11 ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM - # <isolated> 062B 062C -FC12 ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM - # <isolated> 062B 0645 -FC13 ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 062B 0649 -FC14 ARABIC LIGATURE THEH WITH YEH ISOLATED FORM - # <isolated> 062B 064A -FC15 ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM - # <isolated> 062C 062D -FC16 ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM - # <isolated> 062C 0645 -FC17 ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM - # <isolated> 062D 062C -FC18 ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM - # <isolated> 062D 0645 -FC19 ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM - # <isolated> 062E 062C -FC1A ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM - # <isolated> 062E 062D -FC1B ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM - # <isolated> 062E 0645 -FC1C ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM - # <isolated> 0633 062C -FC1D ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM - # <isolated> 0633 062D -FC1E ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM - # <isolated> 0633 062E -FC1F ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM - # <isolated> 0633 0645 -FC20 ARABIC LIGATURE SAD WITH HAH ISOLATED FORM - # <isolated> 0635 062D -FC21 ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM - # <isolated> 0635 0645 -FC22 ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM - # <isolated> 0636 062C -FC23 ARABIC LIGATURE DAD WITH HAH ISOLATED FORM - # <isolated> 0636 062D -FC24 ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM - # <isolated> 0636 062E -FC25 ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM - # <isolated> 0636 0645 -FC26 ARABIC LIGATURE TAH WITH HAH ISOLATED FORM - # <isolated> 0637 062D -FC27 ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM - # <isolated> 0637 0645 -FC28 ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM - # <isolated> 0638 0645 -FC29 ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM - # <isolated> 0639 062C -FC2A ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM - # <isolated> 0639 0645 -FC2B ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM - # <isolated> 063A 062C -FC2C ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM - # <isolated> 063A 0645 -FC2D ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM - # <isolated> 0641 062C -FC2E ARABIC LIGATURE FEH WITH HAH ISOLATED FORM - # <isolated> 0641 062D -FC2F ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM - # <isolated> 0641 062E -FC30 ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM - # <isolated> 0641 0645 -FC31 ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0641 0649 -FC32 ARABIC LIGATURE FEH WITH YEH ISOLATED FORM - # <isolated> 0641 064A -FC33 ARABIC LIGATURE QAF WITH HAH ISOLATED FORM - # <isolated> 0642 062D -FC34 ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM - # <isolated> 0642 0645 -FC35 ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0642 0649 -FC36 ARABIC LIGATURE QAF WITH YEH ISOLATED FORM - # <isolated> 0642 064A -FC37 ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM - # <isolated> 0643 0627 -FC38 ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM - # <isolated> 0643 062C -FC39 ARABIC LIGATURE KAF WITH HAH ISOLATED FORM - # <isolated> 0643 062D -FC3A ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM - # <isolated> 0643 062E -FC3B ARABIC LIGATURE KAF WITH LAM ISOLATED FORM - # <isolated> 0643 0644 -FC3C ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM - # <isolated> 0643 0645 -FC3D ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0643 0649 -FC3E ARABIC LIGATURE KAF WITH YEH ISOLATED FORM - # <isolated> 0643 064A -FC3F ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM - # <isolated> 0644 062C -FC40 ARABIC LIGATURE LAM WITH HAH ISOLATED FORM - # <isolated> 0644 062D -FC41 ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM - # <isolated> 0644 062E -FC42 ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM - # <isolated> 0644 0645 -FC43 ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0644 0649 -FC44 ARABIC LIGATURE LAM WITH YEH ISOLATED FORM - # <isolated> 0644 064A -FC45 ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM - # <isolated> 0645 062C -FC46 ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM - # <isolated> 0645 062D -FC47 ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM - # <isolated> 0645 062E -FC48 ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM - # <isolated> 0645 0645 -FC49 ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0645 0649 -FC4A ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM - # <isolated> 0645 064A -FC4B ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM - # <isolated> 0646 062C -FC4C ARABIC LIGATURE NOON WITH HAH ISOLATED FORM - # <isolated> 0646 062D -FC4D ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM - # <isolated> 0646 062E -FC4E ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM - # <isolated> 0646 0645 -FC4F ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0646 0649 -FC50 ARABIC LIGATURE NOON WITH YEH ISOLATED FORM - # <isolated> 0646 064A -FC51 ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM - # <isolated> 0647 062C -FC52 ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM - # <isolated> 0647 0645 -FC53 ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0647 0649 -FC54 ARABIC LIGATURE HEH WITH YEH ISOLATED FORM - # <isolated> 0647 064A -FC55 ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM - # <isolated> 064A 062C -FC56 ARABIC LIGATURE YEH WITH HAH ISOLATED FORM - # <isolated> 064A 062D -FC57 ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM - # <isolated> 064A 062E -FC58 ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM - # <isolated> 064A 0645 -FC59 ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 064A 0649 -FC5A ARABIC LIGATURE YEH WITH YEH ISOLATED FORM - # <isolated> 064A 064A -FC5B ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM - # <isolated> 0630 0670 -FC5C ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM - # <isolated> 0631 0670 -FC5D ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM - # <isolated> 0649 0670 -FC5E ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM - # <isolated> 0020 064C 0651 -FC5F ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM - # <isolated> 0020 064D 0651 -FC60 ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM - # <isolated> 0020 064E 0651 -FC61 ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM - # <isolated> 0020 064F 0651 -FC62 ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM - # <isolated> 0020 0650 0651 -FC63 ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM - # <isolated> 0020 0651 0670 -FC64 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM - # <final> 0626 0631 -FC65 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM - # <final> 0626 0632 -FC66 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM - # <final> 0626 0645 -FC67 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM - # <final> 0626 0646 -FC68 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM - # <final> 0626 0649 -FC69 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM - # <final> 0626 064A -FC6A ARABIC LIGATURE BEH WITH REH FINAL FORM - # <final> 0628 0631 -FC6B ARABIC LIGATURE BEH WITH ZAIN FINAL FORM - # <final> 0628 0632 -FC6C ARABIC LIGATURE BEH WITH MEEM FINAL FORM - # <final> 0628 0645 -FC6D ARABIC LIGATURE BEH WITH NOON FINAL FORM - # <final> 0628 0646 -FC6E ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM - # <final> 0628 0649 -FC6F ARABIC LIGATURE BEH WITH YEH FINAL FORM - # <final> 0628 064A -FC70 ARABIC LIGATURE TEH WITH REH FINAL FORM - # <final> 062A 0631 -FC71 ARABIC LIGATURE TEH WITH ZAIN FINAL FORM - # <final> 062A 0632 -FC72 ARABIC LIGATURE TEH WITH MEEM FINAL FORM - # <final> 062A 0645 -FC73 ARABIC LIGATURE TEH WITH NOON FINAL FORM - # <final> 062A 0646 -FC74 ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM - # <final> 062A 0649 -FC75 ARABIC LIGATURE TEH WITH YEH FINAL FORM - # <final> 062A 064A -FC76 ARABIC LIGATURE THEH WITH REH FINAL FORM - # <final> 062B 0631 -FC77 ARABIC LIGATURE THEH WITH ZAIN FINAL FORM - # <final> 062B 0632 -FC78 ARABIC LIGATURE THEH WITH MEEM FINAL FORM - # <final> 062B 0645 -FC79 ARABIC LIGATURE THEH WITH NOON FINAL FORM - # <final> 062B 0646 -FC7A ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM - # <final> 062B 0649 -FC7B ARABIC LIGATURE THEH WITH YEH FINAL FORM - # <final> 062B 064A -FC7C ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM - # <final> 0641 0649 -FC7D ARABIC LIGATURE FEH WITH YEH FINAL FORM - # <final> 0641 064A -FC7E ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM - # <final> 0642 0649 -FC7F ARABIC LIGATURE QAF WITH YEH FINAL FORM - # <final> 0642 064A -FC80 ARABIC LIGATURE KAF WITH ALEF FINAL FORM - # <final> 0643 0627 -FC81 ARABIC LIGATURE KAF WITH LAM FINAL FORM - # <final> 0643 0644 -FC82 ARABIC LIGATURE KAF WITH MEEM FINAL FORM - # <final> 0643 0645 -FC83 ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM - # <final> 0643 0649 -FC84 ARABIC LIGATURE KAF WITH YEH FINAL FORM - # <final> 0643 064A -FC85 ARABIC LIGATURE LAM WITH MEEM FINAL FORM - # <final> 0644 0645 -FC86 ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM - # <final> 0644 0649 -FC87 ARABIC LIGATURE LAM WITH YEH FINAL FORM - # <final> 0644 064A -FC88 ARABIC LIGATURE MEEM WITH ALEF FINAL FORM - # <final> 0645 0627 -FC89 ARABIC LIGATURE MEEM WITH MEEM FINAL FORM - # <final> 0645 0645 -FC8A ARABIC LIGATURE NOON WITH REH FINAL FORM - # <final> 0646 0631 -FC8B ARABIC LIGATURE NOON WITH ZAIN FINAL FORM - # <final> 0646 0632 -FC8C ARABIC LIGATURE NOON WITH MEEM FINAL FORM - # <final> 0646 0645 -FC8D ARABIC LIGATURE NOON WITH NOON FINAL FORM - # <final> 0646 0646 -FC8E ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM - # <final> 0646 0649 -FC8F ARABIC LIGATURE NOON WITH YEH FINAL FORM - # <final> 0646 064A -FC90 ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM - # <final> 0649 0670 -FC91 ARABIC LIGATURE YEH WITH REH FINAL FORM - # <final> 064A 0631 -FC92 ARABIC LIGATURE YEH WITH ZAIN FINAL FORM - # <final> 064A 0632 -FC93 ARABIC LIGATURE YEH WITH MEEM FINAL FORM - # <final> 064A 0645 -FC94 ARABIC LIGATURE YEH WITH NOON FINAL FORM - # <final> 064A 0646 -FC95 ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM - # <final> 064A 0649 -FC96 ARABIC LIGATURE YEH WITH YEH FINAL FORM - # <final> 064A 064A -FC97 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM - # <initial> 0626 062C -FC98 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM - # <initial> 0626 062D -FC99 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM - # <initial> 0626 062E -FC9A ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM - # <initial> 0626 0645 -FC9B ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM - # <initial> 0626 0647 -FC9C ARABIC LIGATURE BEH WITH JEEM INITIAL FORM - # <initial> 0628 062C -FC9D ARABIC LIGATURE BEH WITH HAH INITIAL FORM - # <initial> 0628 062D -FC9E ARABIC LIGATURE BEH WITH KHAH INITIAL FORM - # <initial> 0628 062E -FC9F ARABIC LIGATURE BEH WITH MEEM INITIAL FORM - # <initial> 0628 0645 -FCA0 ARABIC LIGATURE BEH WITH HEH INITIAL FORM - # <initial> 0628 0647 -FCA1 ARABIC LIGATURE TEH WITH JEEM INITIAL FORM - # <initial> 062A 062C -FCA2 ARABIC LIGATURE TEH WITH HAH INITIAL FORM - # <initial> 062A 062D -FCA3 ARABIC LIGATURE TEH WITH KHAH INITIAL FORM - # <initial> 062A 062E -FCA4 ARABIC LIGATURE TEH WITH MEEM INITIAL FORM - # <initial> 062A 0645 -FCA5 ARABIC LIGATURE TEH WITH HEH INITIAL FORM - # <initial> 062A 0647 -FCA6 ARABIC LIGATURE THEH WITH MEEM INITIAL FORM - # <initial> 062B 0645 -FCA7 ARABIC LIGATURE JEEM WITH HAH INITIAL FORM - # <initial> 062C 062D -FCA8 ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM - # <initial> 062C 0645 -FCA9 ARABIC LIGATURE HAH WITH JEEM INITIAL FORM - # <initial> 062D 062C -FCAA ARABIC LIGATURE HAH WITH MEEM INITIAL FORM - # <initial> 062D 0645 -FCAB ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM - # <initial> 062E 062C -FCAC ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM - # <initial> 062E 0645 -FCAD ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM - # <initial> 0633 062C -FCAE ARABIC LIGATURE SEEN WITH HAH INITIAL FORM - # <initial> 0633 062D -FCAF ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM - # <initial> 0633 062E -FCB0 ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM - # <initial> 0633 0645 -FCB1 ARABIC LIGATURE SAD WITH HAH INITIAL FORM - # <initial> 0635 062D -FCB2 ARABIC LIGATURE SAD WITH KHAH INITIAL FORM - # <initial> 0635 062E -FCB3 ARABIC LIGATURE SAD WITH MEEM INITIAL FORM - # <initial> 0635 0645 -FCB4 ARABIC LIGATURE DAD WITH JEEM INITIAL FORM - # <initial> 0636 062C -FCB5 ARABIC LIGATURE DAD WITH HAH INITIAL FORM - # <initial> 0636 062D -FCB6 ARABIC LIGATURE DAD WITH KHAH INITIAL FORM - # <initial> 0636 062E -FCB7 ARABIC LIGATURE DAD WITH MEEM INITIAL FORM - # <initial> 0636 0645 -FCB8 ARABIC LIGATURE TAH WITH HAH INITIAL FORM - # <initial> 0637 062D -FCB9 ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM - # <initial> 0638 0645 -FCBA ARABIC LIGATURE AIN WITH JEEM INITIAL FORM - # <initial> 0639 062C -FCBB ARABIC LIGATURE AIN WITH MEEM INITIAL FORM - # <initial> 0639 0645 -FCBC ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM - # <initial> 063A 062C -FCBD ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM - # <initial> 063A 0645 -FCBE ARABIC LIGATURE FEH WITH JEEM INITIAL FORM - # <initial> 0641 062C -FCBF ARABIC LIGATURE FEH WITH HAH INITIAL FORM - # <initial> 0641 062D -FCC0 ARABIC LIGATURE FEH WITH KHAH INITIAL FORM - # <initial> 0641 062E -FCC1 ARABIC LIGATURE FEH WITH MEEM INITIAL FORM - # <initial> 0641 0645 -FCC2 ARABIC LIGATURE QAF WITH HAH INITIAL FORM - # <initial> 0642 062D -FCC3 ARABIC LIGATURE QAF WITH MEEM INITIAL FORM - # <initial> 0642 0645 -FCC4 ARABIC LIGATURE KAF WITH JEEM INITIAL FORM - # <initial> 0643 062C -FCC5 ARABIC LIGATURE KAF WITH HAH INITIAL FORM - # <initial> 0643 062D -FCC6 ARABIC LIGATURE KAF WITH KHAH INITIAL FORM - # <initial> 0643 062E -FCC7 ARABIC LIGATURE KAF WITH LAM INITIAL FORM - # <initial> 0643 0644 -FCC8 ARABIC LIGATURE KAF WITH MEEM INITIAL FORM - # <initial> 0643 0645 -FCC9 ARABIC LIGATURE LAM WITH JEEM INITIAL FORM - # <initial> 0644 062C -FCCA ARABIC LIGATURE LAM WITH HAH INITIAL FORM - # <initial> 0644 062D -FCCB ARABIC LIGATURE LAM WITH KHAH INITIAL FORM - # <initial> 0644 062E -FCCC ARABIC LIGATURE LAM WITH MEEM INITIAL FORM - # <initial> 0644 0645 -FCCD ARABIC LIGATURE LAM WITH HEH INITIAL FORM - # <initial> 0644 0647 -FCCE ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM - # <initial> 0645 062C -FCCF ARABIC LIGATURE MEEM WITH HAH INITIAL FORM - # <initial> 0645 062D -FCD0 ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM - # <initial> 0645 062E -FCD1 ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM - # <initial> 0645 0645 -FCD2 ARABIC LIGATURE NOON WITH JEEM INITIAL FORM - # <initial> 0646 062C -FCD3 ARABIC LIGATURE NOON WITH HAH INITIAL FORM - # <initial> 0646 062D -FCD4 ARABIC LIGATURE NOON WITH KHAH INITIAL FORM - # <initial> 0646 062E -FCD5 ARABIC LIGATURE NOON WITH MEEM INITIAL FORM - # <initial> 0646 0645 -FCD6 ARABIC LIGATURE NOON WITH HEH INITIAL FORM - # <initial> 0646 0647 -FCD7 ARABIC LIGATURE HEH WITH JEEM INITIAL FORM - # <initial> 0647 062C -FCD8 ARABIC LIGATURE HEH WITH MEEM INITIAL FORM - # <initial> 0647 0645 -FCD9 ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM - # <initial> 0647 0670 -FCDA ARABIC LIGATURE YEH WITH JEEM INITIAL FORM - # <initial> 064A 062C -FCDB ARABIC LIGATURE YEH WITH HAH INITIAL FORM - # <initial> 064A 062D -FCDC ARABIC LIGATURE YEH WITH KHAH INITIAL FORM - # <initial> 064A 062E -FCDD ARABIC LIGATURE YEH WITH MEEM INITIAL FORM - # <initial> 064A 0645 -FCDE ARABIC LIGATURE YEH WITH HEH INITIAL FORM - # <initial> 064A 0647 -FCDF ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM - # <medial> 0626 0645 -FCE0 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM - # <medial> 0626 0647 -FCE1 ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM - # <medial> 0628 0645 -FCE2 ARABIC LIGATURE BEH WITH HEH MEDIAL FORM - # <medial> 0628 0647 -FCE3 ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM - # <medial> 062A 0645 -FCE4 ARABIC LIGATURE TEH WITH HEH MEDIAL FORM - # <medial> 062A 0647 -FCE5 ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM - # <medial> 062B 0645 -FCE6 ARABIC LIGATURE THEH WITH HEH MEDIAL FORM - # <medial> 062B 0647 -FCE7 ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM - # <medial> 0633 0645 -FCE8 ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM - # <medial> 0633 0647 -FCE9 ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM - # <medial> 0634 0645 -FCEA ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM - # <medial> 0634 0647 -FCEB ARABIC LIGATURE KAF WITH LAM MEDIAL FORM - # <medial> 0643 0644 -FCEC ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM - # <medial> 0643 0645 -FCED ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM - # <medial> 0644 0645 -FCEE ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM - # <medial> 0646 0645 -FCEF ARABIC LIGATURE NOON WITH HEH MEDIAL FORM - # <medial> 0646 0647 -FCF0 ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM - # <medial> 064A 0645 -FCF1 ARABIC LIGATURE YEH WITH HEH MEDIAL FORM - # <medial> 064A 0647 -FCF2 ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM - # <medial> 0640 064E 0651 -FCF3 ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM - # <medial> 0640 064F 0651 -FCF4 ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM - # <medial> 0640 0650 0651 -FCF5 ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0637 0649 -FCF6 ARABIC LIGATURE TAH WITH YEH ISOLATED FORM - # <isolated> 0637 064A -FCF7 ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0639 0649 -FCF8 ARABIC LIGATURE AIN WITH YEH ISOLATED FORM - # <isolated> 0639 064A -FCF9 ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 063A 0649 -FCFA ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM - # <isolated> 063A 064A -FCFB ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0633 0649 -FCFC ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM - # <isolated> 0633 064A -FCFD ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0634 0649 -FCFE ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM - # <isolated> 0634 064A -FCFF ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 062D 0649 -FD00 ARABIC LIGATURE HAH WITH YEH ISOLATED FORM - # <isolated> 062D 064A -FD01 ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 062C 0649 -FD02 ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM - # <isolated> 062C 064A -FD03 ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 062E 0649 -FD04 ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM - # <isolated> 062E 064A -FD05 ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0635 0649 -FD06 ARABIC LIGATURE SAD WITH YEH ISOLATED FORM - # <isolated> 0635 064A -FD07 ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM - # <isolated> 0636 0649 -FD08 ARABIC LIGATURE DAD WITH YEH ISOLATED FORM - # <isolated> 0636 064A -FD09 ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM - # <isolated> 0634 062C -FD0A ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM - # <isolated> 0634 062D -FD0B ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM - # <isolated> 0634 062E -FD0C ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM - # <isolated> 0634 0645 -FD0D ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM - # <isolated> 0634 0631 -FD0E ARABIC LIGATURE SEEN WITH REH ISOLATED FORM - # <isolated> 0633 0631 -FD0F ARABIC LIGATURE SAD WITH REH ISOLATED FORM - # <isolated> 0635 0631 -FD10 ARABIC LIGATURE DAD WITH REH ISOLATED FORM - # <isolated> 0636 0631 -FD11 ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM - # <final> 0637 0649 -FD12 ARABIC LIGATURE TAH WITH YEH FINAL FORM - # <final> 0637 064A -FD13 ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM - # <final> 0639 0649 -FD14 ARABIC LIGATURE AIN WITH YEH FINAL FORM - # <final> 0639 064A -FD15 ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM - # <final> 063A 0649 -FD16 ARABIC LIGATURE GHAIN WITH YEH FINAL FORM - # <final> 063A 064A -FD17 ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM - # <final> 0633 0649 -FD18 ARABIC LIGATURE SEEN WITH YEH FINAL FORM - # <final> 0633 064A -FD19 ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM - # <final> 0634 0649 -FD1A ARABIC LIGATURE SHEEN WITH YEH FINAL FORM - # <final> 0634 064A -FD1B ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM - # <final> 062D 0649 -FD1C ARABIC LIGATURE HAH WITH YEH FINAL FORM - # <final> 062D 064A -FD1D ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM - # <final> 062C 0649 -FD1E ARABIC LIGATURE JEEM WITH YEH FINAL FORM - # <final> 062C 064A -FD1F ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM - # <final> 062E 0649 -FD20 ARABIC LIGATURE KHAH WITH YEH FINAL FORM - # <final> 062E 064A -FD21 ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM - # <final> 0635 0649 -FD22 ARABIC LIGATURE SAD WITH YEH FINAL FORM - # <final> 0635 064A -FD23 ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM - # <final> 0636 0649 -FD24 ARABIC LIGATURE DAD WITH YEH FINAL FORM - # <final> 0636 064A -FD25 ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM - # <final> 0634 062C -FD26 ARABIC LIGATURE SHEEN WITH HAH FINAL FORM - # <final> 0634 062D -FD27 ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM - # <final> 0634 062E -FD28 ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM - # <final> 0634 0645 -FD29 ARABIC LIGATURE SHEEN WITH REH FINAL FORM - # <final> 0634 0631 -FD2A ARABIC LIGATURE SEEN WITH REH FINAL FORM - # <final> 0633 0631 -FD2B ARABIC LIGATURE SAD WITH REH FINAL FORM - # <final> 0635 0631 -FD2C ARABIC LIGATURE DAD WITH REH FINAL FORM - # <final> 0636 0631 -FD2D ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM - # <initial> 0634 062C -FD2E ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM - # <initial> 0634 062D -FD2F ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM - # <initial> 0634 062E -FD30 ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM - # <initial> 0634 0645 -FD31 ARABIC LIGATURE SEEN WITH HEH INITIAL FORM - # <initial> 0633 0647 -FD32 ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM - # <initial> 0634 0647 -FD33 ARABIC LIGATURE TAH WITH MEEM INITIAL FORM - # <initial> 0637 0645 -FD34 ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM - # <medial> 0633 062C -FD35 ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM - # <medial> 0633 062D -FD36 ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM - # <medial> 0633 062E -FD37 ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM - # <medial> 0634 062C -FD38 ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM - # <medial> 0634 062D -FD39 ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM - # <medial> 0634 062E -FD3A ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM - # <medial> 0637 0645 -FD3B ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM - # <medial> 0638 0645 -FD3C ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM - # <final> 0627 064B -FD3D ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM - # <isolated> 0627 064B -@ Punctuation -FD3E ORNATE LEFT PARENTHESIS -FD3F ORNATE RIGHT PARENTHESIS -@ Ligatures (three elements) -FD50 ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM - # <initial> 062A 062C 0645 -FD51 ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM - # <final> 062A 062D 062C -FD52 ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM - # <initial> 062A 062D 062C -FD53 ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM - # <initial> 062A 062D 0645 -FD54 ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM - # <initial> 062A 062E 0645 -FD55 ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM - # <initial> 062A 0645 062C -FD56 ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM - # <initial> 062A 0645 062D -FD57 ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM - # <initial> 062A 0645 062E -FD58 ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM - # <final> 062C 0645 062D -FD59 ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM - # <initial> 062C 0645 062D -FD5A ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM - # <final> 062D 0645 064A -FD5B ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM - # <final> 062D 0645 0649 -FD5C ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM - # <initial> 0633 062D 062C -FD5D ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM - # <initial> 0633 062C 062D -FD5E ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM - # <final> 0633 062C 0649 -FD5F ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM - # <final> 0633 0645 062D -FD60 ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM - # <initial> 0633 0645 062D -FD61 ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM - # <initial> 0633 0645 062C -FD62 ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM - # <final> 0633 0645 0645 -FD63 ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM - # <initial> 0633 0645 0645 -FD64 ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM - # <final> 0635 062D 062D -FD65 ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM - # <initial> 0635 062D 062D -FD66 ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM - # <final> 0635 0645 0645 -FD67 ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM - # <final> 0634 062D 0645 -FD68 ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM - # <initial> 0634 062D 0645 -FD69 ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM - # <final> 0634 062C 064A -FD6A ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM - # <final> 0634 0645 062E -FD6B ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM - # <initial> 0634 0645 062E -FD6C ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM - # <final> 0634 0645 0645 -FD6D ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM - # <initial> 0634 0645 0645 -FD6E ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM - # <final> 0636 062D 0649 -FD6F ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM - # <final> 0636 062E 0645 -FD70 ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM - # <initial> 0636 062E 0645 -FD71 ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM - # <final> 0637 0645 062D -FD72 ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM - # <initial> 0637 0645 062D -FD73 ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM - # <initial> 0637 0645 0645 -FD74 ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM - # <final> 0637 0645 064A -FD75 ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM - # <final> 0639 062C 0645 -FD76 ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM - # <final> 0639 0645 0645 -FD77 ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM - # <initial> 0639 0645 0645 -FD78 ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM - # <final> 0639 0645 0649 -FD79 ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM - # <final> 063A 0645 0645 -FD7A ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM - # <final> 063A 0645 064A -FD7B ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM - # <final> 063A 0645 0649 -FD7C ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM - # <final> 0641 062E 0645 -FD7D ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM - # <initial> 0641 062E 0645 -FD7E ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM - # <final> 0642 0645 062D -FD7F ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM - # <final> 0642 0645 0645 -FD80 ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM - # <final> 0644 062D 0645 -FD81 ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM - # <final> 0644 062D 064A -FD82 ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM - # <final> 0644 062D 0649 -FD83 ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM - # <initial> 0644 062C 062C -FD84 ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM - # <final> 0644 062C 062C -FD85 ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM - # <final> 0644 062E 0645 -FD86 ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM - # <initial> 0644 062E 0645 -FD87 ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM - # <final> 0644 0645 062D -FD88 ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM - # <initial> 0644 0645 062D -FD89 ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM - # <initial> 0645 062D 062C -FD8A ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM - # <initial> 0645 062D 0645 -FD8B ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM - # <final> 0645 062D 064A -FD8C ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM - # <initial> 0645 062C 062D -FD8D ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM - # <initial> 0645 062C 0645 -FD8E ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM - # <initial> 0645 062E 062C -FD8F ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM - # <initial> 0645 062E 0645 -FD92 ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM - # <initial> 0645 062C 062E -FD93 ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM - # <initial> 0647 0645 062C -FD94 ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM - # <initial> 0647 0645 0645 -FD95 ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM - # <initial> 0646 062D 0645 -FD96 ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM - # <final> 0646 062D 0649 -FD97 ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM - # <final> 0646 062C 0645 -FD98 ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM - # <initial> 0646 062C 0645 -FD99 ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM - # <final> 0646 062C 0649 -FD9A ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM - # <final> 0646 0645 064A -FD9B ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM - # <final> 0646 0645 0649 -FD9C ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM - # <final> 064A 0645 0645 -FD9D ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM - # <initial> 064A 0645 0645 -FD9E ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM - # <final> 0628 062E 064A -FD9F ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM - # <final> 062A 062C 064A -FDA0 ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM - # <final> 062A 062C 0649 -FDA1 ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM - # <final> 062A 062E 064A -FDA2 ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM - # <final> 062A 062E 0649 -FDA3 ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM - # <final> 062A 0645 064A -FDA4 ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM - # <final> 062A 0645 0649 -FDA5 ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM - # <final> 062C 0645 064A -FDA6 ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM - # <final> 062C 062D 0649 -FDA7 ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM - # <final> 062C 0645 0649 -FDA8 ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM - # <final> 0633 062E 0649 -FDA9 ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM - # <final> 0635 062D 064A -FDAA ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM - # <final> 0634 062D 064A -FDAB ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM - # <final> 0636 062D 064A -FDAC ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM - # <final> 0644 062C 064A -FDAD ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM - # <final> 0644 0645 064A -FDAE ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM - # <final> 064A 062D 064A -FDAF ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM - # <final> 064A 062C 064A -FDB0 ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM - # <final> 064A 0645 064A -FDB1 ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM - # <final> 0645 0645 064A -FDB2 ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM - # <final> 0642 0645 064A -FDB3 ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM - # <final> 0646 062D 064A -FDB4 ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM - # <initial> 0642 0645 062D -FDB5 ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM - # <initial> 0644 062D 0645 -FDB6 ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM - # <final> 0639 0645 064A -FDB7 ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM - # <final> 0643 0645 064A -FDB8 ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM - # <initial> 0646 062C 062D -FDB9 ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM - # <final> 0645 062E 064A -FDBA ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM - # <initial> 0644 062C 0645 -FDBB ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM - # <final> 0643 0645 0645 -FDBC ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM - # <final> 0644 062C 0645 -FDBD ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM - # <final> 0646 062C 062D -FDBE ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM - # <final> 062C 062D 064A -FDBF ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM - # <final> 062D 062C 064A -FDC0 ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM - # <final> 0645 062C 064A -FDC1 ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM - # <final> 0641 0645 064A -FDC2 ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM - # <final> 0628 062D 064A -FDC3 ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM - # <initial> 0643 0645 0645 -FDC4 ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM - # <initial> 0639 062C 0645 -FDC5 ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM - # <initial> 0635 0645 0645 -FDC6 ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM - # <final> 0633 062E 064A -FDC7 ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM - # <final> 0646 062C 064A -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -FDD0 <not a character> -FDD1 <not a character> -FDD2 <not a character> -FDD3 <not a character> -FDD4 <not a character> -FDD5 <not a character> -FDD6 <not a character> -FDD7 <not a character> -FDD8 <not a character> -FDD9 <not a character> -FDDA <not a character> -FDDB <not a character> -FDDC <not a character> -FDDD <not a character> -FDDE <not a character> -FDDF <not a character> -FDE0 <not a character> -FDE1 <not a character> -FDE2 <not a character> -FDE3 <not a character> -FDE4 <not a character> -FDE5 <not a character> -FDE6 <not a character> -FDE7 <not a character> -FDE8 <not a character> -FDE9 <not a character> -FDEA <not a character> -FDEB <not a character> -FDEC <not a character> -FDED <not a character> -FDEE <not a character> -FDEF <not a character> -@ Word ligatures -FDF0 ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM - # <isolated> 0635 0644 06D2 -FDF1 ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM - # <isolated> 0642 0644 06D2 -FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM - # <isolated> 0627 0644 0644 0647 -FDF3 ARABIC LIGATURE AKBAR ISOLATED FORM - # <isolated> 0627 0643 0628 0631 -FDF4 ARABIC LIGATURE MOHAMMAD ISOLATED FORM - # <isolated> 0645 062D 0645 062F -FDF5 ARABIC LIGATURE SALAM ISOLATED FORM - # <isolated> 0635 0644 0639 0645 -FDF6 ARABIC LIGATURE RASOUL ISOLATED FORM - # <isolated> 0631 0633 0648 0644 -FDF7 ARABIC LIGATURE ALAYHE ISOLATED FORM - # <isolated> 0639 0644 064A 0647 -FDF8 ARABIC LIGATURE WASALLAM ISOLATED FORM - # <isolated> 0648 0633 0644 0645 -FDF9 ARABIC LIGATURE SALLA ISOLATED FORM - # <isolated> 0635 0644 0649 -FDFA ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM - # <isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645 -FDFB ARABIC LIGATURE JALLAJALALOUHOU - # <isolated> 062C 0644 0020 062C 0644 0627 0644 0647 -@ Currency sign -FDFC RIAL SIGN - # <isolated> 0631 06CC 0627 0644 -@ Symbol -FDFD ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM -@@ FE00 Variation Selectors FE0F -@ Variation selectors -@+ Combining characters; in conjunction with the preceding character these indicate a predetermined choice of variant glyph -FE00 VARIATION SELECTOR-1 - * these are abbreviated VS1, and so on -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 -@@ FE10 Vertical forms FE1F -@+ These characters are compatibility characters needed to map to GB 18030. -@ Glyphs for vertical variants -FE10 PRESENTATION FORM FOR VERTICAL COMMA - x (small comma - FE50) - # <vertical> 002C -FE11 PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA - x (sesame dot - FE45) - x (small ideographic comma - FE51) - # <vertical> 3001 -FE12 PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP - # <vertical> 3002 -FE13 PRESENTATION FORM FOR VERTICAL COLON - x (small colon - FE55) - # <vertical> 003A -FE14 PRESENTATION FORM FOR VERTICAL SEMICOLON - x (small semicolon - FE54) - # <vertical> 003B -FE15 PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK - x (small exclamation mark - FE57) - # <vertical> 0021 -FE16 PRESENTATION FORM FOR VERTICAL QUESTION MARK - x (small question mark - FE56) - # <vertical> 003F -FE17 PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET - # <vertical> 3016 -FE18 PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET - # <vertical> 3017 -FE19 PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS - x (vertical ellipsis - 22EE) - # <vertical> 2026 -@@ FE20 Combining Half Marks FE2F -@ Combining half marks -FE20 COMBINING LIGATURE LEFT HALF -FE21 COMBINING LIGATURE RIGHT HALF -FE22 COMBINING DOUBLE TILDE LEFT HALF -FE23 COMBINING DOUBLE TILDE RIGHT HALF -@@ FE30 CJK Compatibility Forms FE4F -@ Glyphs for vertical variants -FE30 PRESENTATION FORM FOR VERTICAL TWO DOT LEADER - # <vertical> 2025 -FE31 PRESENTATION FORM FOR VERTICAL EM DASH - # <vertical> 2014 -FE32 PRESENTATION FORM FOR VERTICAL EN DASH - # <vertical> 2013 -FE33 PRESENTATION FORM FOR VERTICAL LOW LINE - # <vertical> 005F -FE34 PRESENTATION FORM FOR VERTICAL WAVY LOW LINE - # <vertical> 005F -FE35 PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS - # <vertical> 0028 -FE36 PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS - # <vertical> 0029 -FE37 PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET - # <vertical> 007B -FE38 PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET - # <vertical> 007D -FE39 PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET - # <vertical> 3014 -FE3A PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET - # <vertical> 3015 -FE3B PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET - # <vertical> 3010 -FE3C PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET - # <vertical> 3011 -FE3D PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET - # <vertical> 300A -FE3E PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET - # <vertical> 300B -FE3F PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET - # <vertical> 3008 -FE40 PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET - # <vertical> 3009 -FE41 PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET - # <vertical> 300C -FE42 PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET - # <vertical> 300D -FE43 PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET - # <vertical> 300E -FE44 PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET - # <vertical> 300F -@ Sidelining emphasis marks -FE45 SESAME DOT - x (small ideographic comma - FE51) -FE46 WHITE SESAME DOT - * sesame dots are used beside vertical text for emphasis -@ Glyphs for vertical variants -FE47 PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET - x (top square bracket - 23B4) - # <vertical> 005B -FE48 PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET - x (bottom square bracket - 23B5) - # <vertical> 005D -@ Overscores and underscores -FE49 DASHED OVERLINE - # 203E overline -FE4A CENTRELINE OVERLINE - # 203E overline -FE4B WAVY OVERLINE - # 203E overline -FE4C DOUBLE WAVY OVERLINE - # 203E overline -FE4D DASHED LOW LINE - # 005F low line -FE4E CENTRELINE LOW LINE - # 005F low line -FE4F WAVY LOW LINE - # 005F low line -@@ FE50 Small Form Variants FE6F -@+ These characters are compatibility characters needed to map to CNS 11643. -@ Small form variants -FE50 SMALL COMMA - x (presentation form for vertical comma - FE10) - # <small> 002C -FE51 SMALL IDEOGRAPHIC COMMA - x (presentation form for vertical ideographic comma - FE11) - x (black sesame dot - FE45) - # <small> 3001 -FE52 SMALL FULL STOP - # <small> 002E -FE54 SMALL SEMICOLON - x (presentation form for vertical semicolon - FE14) - # <small> 003B -FE55 SMALL COLON - x (presentation form for vertical colon - FE13) - # <small> 003A -FE56 SMALL QUESTION MARK - x (presentation form for vertical question mark - FE16) - # <small> 003F -FE57 SMALL EXCLAMATION MARK - x (presentation form for vertical exclamation mark - FE15) - # <small> 0021 -FE58 SMALL EM DASH - # <small> 2014 -FE59 SMALL LEFT PARENTHESIS - # <small> 0028 -FE5A SMALL RIGHT PARENTHESIS - # <small> 0029 -FE5B SMALL LEFT CURLY BRACKET - # <small> 007B -FE5C SMALL RIGHT CURLY BRACKET - # <small> 007D -FE5D SMALL LEFT TORTOISE SHELL BRACKET - # <small> 3014 -FE5E SMALL RIGHT TORTOISE SHELL BRACKET - # <small> 3015 -FE5F SMALL NUMBER SIGN - # <small> 0023 -FE60 SMALL AMPERSAND - # <small> 0026 -FE61 SMALL ASTERISK - # <small> 002A -FE62 SMALL PLUS SIGN - # <small> 002B -FE63 SMALL HYPHEN-MINUS - # <small> 002D -FE64 SMALL LESS-THAN SIGN - # <small> 003C -FE65 SMALL GREATER-THAN SIGN - # <small> 003E -FE66 SMALL EQUALS SIGN - # <small> 003D -FE68 SMALL REVERSE SOLIDUS - # <small> 005C -FE69 SMALL DOLLAR SIGN - # <small> 0024 -FE6A SMALL PERCENT SIGN - # <small> 0025 -FE6B SMALL COMMERCIAL AT - # <small> 0040 -@@ FE70 Arabic Presentation Forms-B FEFF -@ Glyphs for spacing forms of Arabic points -FE70 ARABIC FATHATAN ISOLATED FORM - # <isolated> 0020 064B -FE71 ARABIC TATWEEL WITH FATHATAN ABOVE - # <medial> 0640 064B -FE72 ARABIC DAMMATAN ISOLATED FORM - # <isolated> 0020 064C -@ Glyph part -FE73 ARABIC TAIL FRAGMENT - * for compatibility with certain legacy character sets -@ Glyphs for spacing forms of Arabic points -FE74 ARABIC KASRATAN ISOLATED FORM - # <isolated> 0020 064D -FE76 ARABIC FATHA ISOLATED FORM - # <isolated> 0020 064E -FE77 ARABIC FATHA MEDIAL FORM - # <medial> 0640 064E -FE78 ARABIC DAMMA ISOLATED FORM - # <isolated> 0020 064F -FE79 ARABIC DAMMA MEDIAL FORM - # <medial> 0640 064F -FE7A ARABIC KASRA ISOLATED FORM - # <isolated> 0020 0650 -FE7B ARABIC KASRA MEDIAL FORM - # <medial> 0640 0650 -FE7C ARABIC SHADDA ISOLATED FORM - # <isolated> 0020 0651 -FE7D ARABIC SHADDA MEDIAL FORM - # <medial> 0640 0651 -FE7E ARABIC SUKUN ISOLATED FORM - # <isolated> 0020 0652 -FE7F ARABIC SUKUN MEDIAL FORM - # <medial> 0640 0652 -@ Basic glyphs for Arabic language contextual forms -FE80 ARABIC LETTER HAMZA ISOLATED FORM - # <isolated> 0621 -FE81 ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM - # <isolated> 0622 -FE82 ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM - # <final> 0622 -FE83 ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM - # <isolated> 0623 -FE84 ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM - # <final> 0623 -FE85 ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM - # <isolated> 0624 -FE86 ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM - # <final> 0624 -FE87 ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM - # <isolated> 0625 -FE88 ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM - # <final> 0625 -FE89 ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM - # <isolated> 0626 -FE8A ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM - # <final> 0626 -FE8B ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM - # <initial> 0626 -FE8C ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM - # <medial> 0626 -FE8D ARABIC LETTER ALEF ISOLATED FORM - # <isolated> 0627 -FE8E ARABIC LETTER ALEF FINAL FORM - # <final> 0627 -FE8F ARABIC LETTER BEH ISOLATED FORM - # <isolated> 0628 -FE90 ARABIC LETTER BEH FINAL FORM - # <final> 0628 -FE91 ARABIC LETTER BEH INITIAL FORM - # <initial> 0628 -FE92 ARABIC LETTER BEH MEDIAL FORM - # <medial> 0628 -FE93 ARABIC LETTER TEH MARBUTA ISOLATED FORM - # <isolated> 0629 -FE94 ARABIC LETTER TEH MARBUTA FINAL FORM - # <final> 0629 -FE95 ARABIC LETTER TEH ISOLATED FORM - # <isolated> 062A -FE96 ARABIC LETTER TEH FINAL FORM - # <final> 062A -FE97 ARABIC LETTER TEH INITIAL FORM - # <initial> 062A -FE98 ARABIC LETTER TEH MEDIAL FORM - # <medial> 062A -FE99 ARABIC LETTER THEH ISOLATED FORM - # <isolated> 062B -FE9A ARABIC LETTER THEH FINAL FORM - # <final> 062B -FE9B ARABIC LETTER THEH INITIAL FORM - # <initial> 062B -FE9C ARABIC LETTER THEH MEDIAL FORM - # <medial> 062B -FE9D ARABIC LETTER JEEM ISOLATED FORM - # <isolated> 062C -FE9E ARABIC LETTER JEEM FINAL FORM - # <final> 062C -FE9F ARABIC LETTER JEEM INITIAL FORM - # <initial> 062C -FEA0 ARABIC LETTER JEEM MEDIAL FORM - # <medial> 062C -FEA1 ARABIC LETTER HAH ISOLATED FORM - # <isolated> 062D -FEA2 ARABIC LETTER HAH FINAL FORM - # <final> 062D -FEA3 ARABIC LETTER HAH INITIAL FORM - # <initial> 062D -FEA4 ARABIC LETTER HAH MEDIAL FORM - # <medial> 062D -FEA5 ARABIC LETTER KHAH ISOLATED FORM - # <isolated> 062E -FEA6 ARABIC LETTER KHAH FINAL FORM - # <final> 062E -FEA7 ARABIC LETTER KHAH INITIAL FORM - # <initial> 062E -FEA8 ARABIC LETTER KHAH MEDIAL FORM - # <medial> 062E -FEA9 ARABIC LETTER DAL ISOLATED FORM - # <isolated> 062F -FEAA ARABIC LETTER DAL FINAL FORM - # <final> 062F -FEAB ARABIC LETTER THAL ISOLATED FORM - # <isolated> 0630 -FEAC ARABIC LETTER THAL FINAL FORM - # <final> 0630 -FEAD ARABIC LETTER REH ISOLATED FORM - # <isolated> 0631 -FEAE ARABIC LETTER REH FINAL FORM - # <final> 0631 -FEAF ARABIC LETTER ZAIN ISOLATED FORM - # <isolated> 0632 -FEB0 ARABIC LETTER ZAIN FINAL FORM - # <final> 0632 -FEB1 ARABIC LETTER SEEN ISOLATED FORM - # <isolated> 0633 -FEB2 ARABIC LETTER SEEN FINAL FORM - # <final> 0633 -FEB3 ARABIC LETTER SEEN INITIAL FORM - # <initial> 0633 -FEB4 ARABIC LETTER SEEN MEDIAL FORM - # <medial> 0633 -FEB5 ARABIC LETTER SHEEN ISOLATED FORM - # <isolated> 0634 -FEB6 ARABIC LETTER SHEEN FINAL FORM - # <final> 0634 -FEB7 ARABIC LETTER SHEEN INITIAL FORM - # <initial> 0634 -FEB8 ARABIC LETTER SHEEN MEDIAL FORM - # <medial> 0634 -FEB9 ARABIC LETTER SAD ISOLATED FORM - # <isolated> 0635 -FEBA ARABIC LETTER SAD FINAL FORM - # <final> 0635 -FEBB ARABIC LETTER SAD INITIAL FORM - # <initial> 0635 -FEBC ARABIC LETTER SAD MEDIAL FORM - # <medial> 0635 -FEBD ARABIC LETTER DAD ISOLATED FORM - # <isolated> 0636 -FEBE ARABIC LETTER DAD FINAL FORM - # <final> 0636 -FEBF ARABIC LETTER DAD INITIAL FORM - # <initial> 0636 -FEC0 ARABIC LETTER DAD MEDIAL FORM - # <medial> 0636 -FEC1 ARABIC LETTER TAH ISOLATED FORM - # <isolated> 0637 -FEC2 ARABIC LETTER TAH FINAL FORM - # <final> 0637 -FEC3 ARABIC LETTER TAH INITIAL FORM - # <initial> 0637 -FEC4 ARABIC LETTER TAH MEDIAL FORM - # <medial> 0637 -FEC5 ARABIC LETTER ZAH ISOLATED FORM - # <isolated> 0638 -FEC6 ARABIC LETTER ZAH FINAL FORM - # <final> 0638 -FEC7 ARABIC LETTER ZAH INITIAL FORM - # <initial> 0638 -FEC8 ARABIC LETTER ZAH MEDIAL FORM - # <medial> 0638 -FEC9 ARABIC LETTER AIN ISOLATED FORM - # <isolated> 0639 -FECA ARABIC LETTER AIN FINAL FORM - # <final> 0639 -FECB ARABIC LETTER AIN INITIAL FORM - # <initial> 0639 -FECC ARABIC LETTER AIN MEDIAL FORM - # <medial> 0639 -FECD ARABIC LETTER GHAIN ISOLATED FORM - # <isolated> 063A -FECE ARABIC LETTER GHAIN FINAL FORM - # <final> 063A -FECF ARABIC LETTER GHAIN INITIAL FORM - # <initial> 063A -FED0 ARABIC LETTER GHAIN MEDIAL FORM - # <medial> 063A -FED1 ARABIC LETTER FEH ISOLATED FORM - # <isolated> 0641 -FED2 ARABIC LETTER FEH FINAL FORM - # <final> 0641 -FED3 ARABIC LETTER FEH INITIAL FORM - # <initial> 0641 -FED4 ARABIC LETTER FEH MEDIAL FORM - # <medial> 0641 -FED5 ARABIC LETTER QAF ISOLATED FORM - # <isolated> 0642 -FED6 ARABIC LETTER QAF FINAL FORM - # <final> 0642 -FED7 ARABIC LETTER QAF INITIAL FORM - # <initial> 0642 -FED8 ARABIC LETTER QAF MEDIAL FORM - # <medial> 0642 -FED9 ARABIC LETTER KAF ISOLATED FORM - # <isolated> 0643 -FEDA ARABIC LETTER KAF FINAL FORM - # <final> 0643 -FEDB ARABIC LETTER KAF INITIAL FORM - # <initial> 0643 -FEDC ARABIC LETTER KAF MEDIAL FORM - # <medial> 0643 -FEDD ARABIC LETTER LAM ISOLATED FORM - # <isolated> 0644 -FEDE ARABIC LETTER LAM FINAL FORM - # <final> 0644 -FEDF ARABIC LETTER LAM INITIAL FORM - # <initial> 0644 -FEE0 ARABIC LETTER LAM MEDIAL FORM - # <medial> 0644 -FEE1 ARABIC LETTER MEEM ISOLATED FORM - # <isolated> 0645 -FEE2 ARABIC LETTER MEEM FINAL FORM - # <final> 0645 -FEE3 ARABIC LETTER MEEM INITIAL FORM - # <initial> 0645 -FEE4 ARABIC LETTER MEEM MEDIAL FORM - # <medial> 0645 -FEE5 ARABIC LETTER NOON ISOLATED FORM - # <isolated> 0646 -FEE6 ARABIC LETTER NOON FINAL FORM - # <final> 0646 -FEE7 ARABIC LETTER NOON INITIAL FORM - # <initial> 0646 -FEE8 ARABIC LETTER NOON MEDIAL FORM - # <medial> 0646 -FEE9 ARABIC LETTER HEH ISOLATED FORM - # <isolated> 0647 -FEEA ARABIC LETTER HEH FINAL FORM - # <final> 0647 -FEEB ARABIC LETTER HEH INITIAL FORM - # <initial> 0647 -FEEC ARABIC LETTER HEH MEDIAL FORM - # <medial> 0647 -FEED ARABIC LETTER WAW ISOLATED FORM - # <isolated> 0648 -FEEE ARABIC LETTER WAW FINAL FORM - # <final> 0648 -FEEF ARABIC LETTER ALEF MAKSURA ISOLATED FORM - # <isolated> 0649 -FEF0 ARABIC LETTER ALEF MAKSURA FINAL FORM - # <final> 0649 -FEF1 ARABIC LETTER YEH ISOLATED FORM - # <isolated> 064A -FEF2 ARABIC LETTER YEH FINAL FORM - # <final> 064A -FEF3 ARABIC LETTER YEH INITIAL FORM - # <initial> 064A -FEF4 ARABIC LETTER YEH MEDIAL FORM - # <medial> 064A -FEF5 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM - # <isolated> 0644 0622 -FEF6 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM - # <final> 0644 0622 -FEF7 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM - # <isolated> 0644 0623 -FEF8 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM - # <final> 0644 0623 -FEF9 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM - # <isolated> 0644 0625 -FEFA ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM - # <final> 0644 0625 -FEFB ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM - # <isolated> 0644 0627 -FEFC ARABIC LIGATURE LAM WITH ALEF FINAL FORM - # <final> 0644 0627 -@ Special -FEFF ZERO WIDTH NO-BREAK SPACE - = BYTE ORDER MARK (BOM), ZWNBSP - * may be used to detect byte order by contrast with the noncharacter code point FFFE - * use as an indication of non-breaking is deprecated; see 2060 instead - x (zero width space - 200B) - x (word joiner - 2060) - x (<not a character> - FFFE) -@@ FF00 Halfwidth and Fullwidth Forms FFEF -@ Fullwidth ASCII variants -@+ See ASCII 0020 - 007E -FF01 FULLWIDTH EXCLAMATION MARK - # <wide> 0021 -FF02 FULLWIDTH QUOTATION MARK - # <wide> 0022 -FF03 FULLWIDTH NUMBER SIGN - # <wide> 0023 -FF04 FULLWIDTH DOLLAR SIGN - # <wide> 0024 -FF05 FULLWIDTH PERCENT SIGN - # <wide> 0025 -FF06 FULLWIDTH AMPERSAND - # <wide> 0026 -FF07 FULLWIDTH APOSTROPHE - # <wide> 0027 -FF08 FULLWIDTH LEFT PARENTHESIS - # <wide> 0028 -FF09 FULLWIDTH RIGHT PARENTHESIS - # <wide> 0029 -FF0A FULLWIDTH ASTERISK - # <wide> 002A -FF0B FULLWIDTH PLUS SIGN - # <wide> 002B -FF0C FULLWIDTH COMMA - # <wide> 002C -FF0D FULLWIDTH HYPHEN-MINUS - # <wide> 002D -FF0E FULLWIDTH FULL STOP - # <wide> 002E -FF0F FULLWIDTH SOLIDUS - # <wide> 002F -FF10 FULLWIDTH DIGIT ZERO - # <wide> 0030 -FF11 FULLWIDTH DIGIT ONE - # <wide> 0031 -FF12 FULLWIDTH DIGIT TWO - # <wide> 0032 -FF13 FULLWIDTH DIGIT THREE - # <wide> 0033 -FF14 FULLWIDTH DIGIT FOUR - # <wide> 0034 -FF15 FULLWIDTH DIGIT FIVE - # <wide> 0035 -FF16 FULLWIDTH DIGIT SIX - # <wide> 0036 -FF17 FULLWIDTH DIGIT SEVEN - # <wide> 0037 -FF18 FULLWIDTH DIGIT EIGHT - # <wide> 0038 -FF19 FULLWIDTH DIGIT NINE - # <wide> 0039 -FF1A FULLWIDTH COLON - # <wide> 003A -FF1B FULLWIDTH SEMICOLON - # <wide> 003B -FF1C FULLWIDTH LESS-THAN SIGN - # <wide> 003C -FF1D FULLWIDTH EQUALS SIGN - # <wide> 003D -FF1E FULLWIDTH GREATER-THAN SIGN - # <wide> 003E -FF1F FULLWIDTH QUESTION MARK - # <wide> 003F -FF20 FULLWIDTH COMMERCIAL AT - # <wide> 0040 -FF21 FULLWIDTH LATIN CAPITAL LETTER A - # <wide> 0041 -FF22 FULLWIDTH LATIN CAPITAL LETTER B - # <wide> 0042 -FF23 FULLWIDTH LATIN CAPITAL LETTER C - # <wide> 0043 -FF24 FULLWIDTH LATIN CAPITAL LETTER D - # <wide> 0044 -FF25 FULLWIDTH LATIN CAPITAL LETTER E - # <wide> 0045 -FF26 FULLWIDTH LATIN CAPITAL LETTER F - # <wide> 0046 -FF27 FULLWIDTH LATIN CAPITAL LETTER G - # <wide> 0047 -FF28 FULLWIDTH LATIN CAPITAL LETTER H - # <wide> 0048 -FF29 FULLWIDTH LATIN CAPITAL LETTER I - # <wide> 0049 -FF2A FULLWIDTH LATIN CAPITAL LETTER J - # <wide> 004A -FF2B FULLWIDTH LATIN CAPITAL LETTER K - # <wide> 004B -FF2C FULLWIDTH LATIN CAPITAL LETTER L - # <wide> 004C -FF2D FULLWIDTH LATIN CAPITAL LETTER M - # <wide> 004D -FF2E FULLWIDTH LATIN CAPITAL LETTER N - # <wide> 004E -FF2F FULLWIDTH LATIN CAPITAL LETTER O - # <wide> 004F -FF30 FULLWIDTH LATIN CAPITAL LETTER P - # <wide> 0050 -FF31 FULLWIDTH LATIN CAPITAL LETTER Q - # <wide> 0051 -FF32 FULLWIDTH LATIN CAPITAL LETTER R - # <wide> 0052 -FF33 FULLWIDTH LATIN CAPITAL LETTER S - # <wide> 0053 -FF34 FULLWIDTH LATIN CAPITAL LETTER T - # <wide> 0054 -FF35 FULLWIDTH LATIN CAPITAL LETTER U - # <wide> 0055 -FF36 FULLWIDTH LATIN CAPITAL LETTER V - # <wide> 0056 -FF37 FULLWIDTH LATIN CAPITAL LETTER W - # <wide> 0057 -FF38 FULLWIDTH LATIN CAPITAL LETTER X - # <wide> 0058 -FF39 FULLWIDTH LATIN CAPITAL LETTER Y - # <wide> 0059 -FF3A FULLWIDTH LATIN CAPITAL LETTER Z - # <wide> 005A -FF3B FULLWIDTH LEFT SQUARE BRACKET - # <wide> 005B -FF3C FULLWIDTH REVERSE SOLIDUS - # <wide> 005C -FF3D FULLWIDTH RIGHT SQUARE BRACKET - # <wide> 005D -FF3E FULLWIDTH CIRCUMFLEX ACCENT - # <wide> 005E -FF3F FULLWIDTH LOW LINE - # <wide> 005F -FF40 FULLWIDTH GRAVE ACCENT - # <wide> 0060 -FF41 FULLWIDTH LATIN SMALL LETTER A - # <wide> 0061 -FF42 FULLWIDTH LATIN SMALL LETTER B - # <wide> 0062 -FF43 FULLWIDTH LATIN SMALL LETTER C - # <wide> 0063 -FF44 FULLWIDTH LATIN SMALL LETTER D - # <wide> 0064 -FF45 FULLWIDTH LATIN SMALL LETTER E - # <wide> 0065 -FF46 FULLWIDTH LATIN SMALL LETTER F - # <wide> 0066 -FF47 FULLWIDTH LATIN SMALL LETTER G - # <wide> 0067 -FF48 FULLWIDTH LATIN SMALL LETTER H - # <wide> 0068 -FF49 FULLWIDTH LATIN SMALL LETTER I - # <wide> 0069 -FF4A FULLWIDTH LATIN SMALL LETTER J - # <wide> 006A -FF4B FULLWIDTH LATIN SMALL LETTER K - # <wide> 006B -FF4C FULLWIDTH LATIN SMALL LETTER L - # <wide> 006C -FF4D FULLWIDTH LATIN SMALL LETTER M - # <wide> 006D -FF4E FULLWIDTH LATIN SMALL LETTER N - # <wide> 006E -FF4F FULLWIDTH LATIN SMALL LETTER O - # <wide> 006F -FF50 FULLWIDTH LATIN SMALL LETTER P - # <wide> 0070 -FF51 FULLWIDTH LATIN SMALL LETTER Q - # <wide> 0071 -FF52 FULLWIDTH LATIN SMALL LETTER R - # <wide> 0072 -FF53 FULLWIDTH LATIN SMALL LETTER S - # <wide> 0073 -FF54 FULLWIDTH LATIN SMALL LETTER T - # <wide> 0074 -FF55 FULLWIDTH LATIN SMALL LETTER U - # <wide> 0075 -FF56 FULLWIDTH LATIN SMALL LETTER V - # <wide> 0076 -FF57 FULLWIDTH LATIN SMALL LETTER W - # <wide> 0077 -FF58 FULLWIDTH LATIN SMALL LETTER X - # <wide> 0078 -FF59 FULLWIDTH LATIN SMALL LETTER Y - # <wide> 0079 -FF5A FULLWIDTH LATIN SMALL LETTER Z - # <wide> 007A -FF5B FULLWIDTH LEFT CURLY BRACKET - # <wide> 007B -FF5C FULLWIDTH VERTICAL LINE - # <wide> 007C -FF5D FULLWIDTH RIGHT CURLY BRACKET - # <wide> 007D -FF5E FULLWIDTH TILDE - # <wide> 007E -@ Fullwidth brackets -FF5F FULLWIDTH LEFT WHITE PARENTHESIS * - # <wide> 2985 -FF60 FULLWIDTH RIGHT WHITE PARENTHESIS * - * the most commonly occurring glyph variant looks like doubled parentheses - # <wide> 2986 -@ Halfwidth CJK punctuation -@+ See CJK punctuation 3000 - 303F -FF61 HALFWIDTH IDEOGRAPHIC FULL STOP - # <narrow> 3002 -FF62 HALFWIDTH LEFT CORNER BRACKET - # <narrow> 300C -FF63 HALFWIDTH RIGHT CORNER BRACKET - # <narrow> 300D -FF64 HALFWIDTH IDEOGRAPHIC COMMA - # <narrow> 3001 -@ Halfwidth Katakana variants -@+ See Katakana 30A0 - 30FF -FF65 HALFWIDTH KATAKANA MIDDLE DOT - # <narrow> 30FB -FF66 HALFWIDTH KATAKANA LETTER WO - # <narrow> 30F2 -FF67 HALFWIDTH KATAKANA LETTER SMALL A - # <narrow> 30A1 -FF68 HALFWIDTH KATAKANA LETTER SMALL I - # <narrow> 30A3 -FF69 HALFWIDTH KATAKANA LETTER SMALL U - # <narrow> 30A5 -FF6A HALFWIDTH KATAKANA LETTER SMALL E - # <narrow> 30A7 -FF6B HALFWIDTH KATAKANA LETTER SMALL O - # <narrow> 30A9 -FF6C HALFWIDTH KATAKANA LETTER SMALL YA - # <narrow> 30E3 -FF6D HALFWIDTH KATAKANA LETTER SMALL YU - # <narrow> 30E5 -FF6E HALFWIDTH KATAKANA LETTER SMALL YO - # <narrow> 30E7 -FF6F HALFWIDTH KATAKANA LETTER SMALL TU - # <narrow> 30C3 -FF70 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK - # <narrow> 30FC -FF71 HALFWIDTH KATAKANA LETTER A - # <narrow> 30A2 -FF72 HALFWIDTH KATAKANA LETTER I - # <narrow> 30A4 -FF73 HALFWIDTH KATAKANA LETTER U - # <narrow> 30A6 -FF74 HALFWIDTH KATAKANA LETTER E - # <narrow> 30A8 -FF75 HALFWIDTH KATAKANA LETTER O - # <narrow> 30AA -FF76 HALFWIDTH KATAKANA LETTER KA - # <narrow> 30AB -FF77 HALFWIDTH KATAKANA LETTER KI - # <narrow> 30AD -FF78 HALFWIDTH KATAKANA LETTER KU - # <narrow> 30AF -FF79 HALFWIDTH KATAKANA LETTER KE - # <narrow> 30B1 -FF7A HALFWIDTH KATAKANA LETTER KO - # <narrow> 30B3 -FF7B HALFWIDTH KATAKANA LETTER SA - # <narrow> 30B5 -FF7C HALFWIDTH KATAKANA LETTER SI - # <narrow> 30B7 -FF7D HALFWIDTH KATAKANA LETTER SU - # <narrow> 30B9 -FF7E HALFWIDTH KATAKANA LETTER SE - # <narrow> 30BB -FF7F HALFWIDTH KATAKANA LETTER SO - # <narrow> 30BD -FF80 HALFWIDTH KATAKANA LETTER TA - # <narrow> 30BF -FF81 HALFWIDTH KATAKANA LETTER TI - # <narrow> 30C1 -FF82 HALFWIDTH KATAKANA LETTER TU - # <narrow> 30C4 -FF83 HALFWIDTH KATAKANA LETTER TE - # <narrow> 30C6 -FF84 HALFWIDTH KATAKANA LETTER TO - # <narrow> 30C8 -FF85 HALFWIDTH KATAKANA LETTER NA - # <narrow> 30CA -FF86 HALFWIDTH KATAKANA LETTER NI - # <narrow> 30CB -FF87 HALFWIDTH KATAKANA LETTER NU - # <narrow> 30CC -FF88 HALFWIDTH KATAKANA LETTER NE - # <narrow> 30CD -FF89 HALFWIDTH KATAKANA LETTER NO - # <narrow> 30CE -FF8A HALFWIDTH KATAKANA LETTER HA - # <narrow> 30CF -FF8B HALFWIDTH KATAKANA LETTER HI - # <narrow> 30D2 -FF8C HALFWIDTH KATAKANA LETTER HU - # <narrow> 30D5 -FF8D HALFWIDTH KATAKANA LETTER HE - # <narrow> 30D8 -FF8E HALFWIDTH KATAKANA LETTER HO - # <narrow> 30DB -FF8F HALFWIDTH KATAKANA LETTER MA - # <narrow> 30DE -FF90 HALFWIDTH KATAKANA LETTER MI - # <narrow> 30DF -FF91 HALFWIDTH KATAKANA LETTER MU - # <narrow> 30E0 -FF92 HALFWIDTH KATAKANA LETTER ME - # <narrow> 30E1 -FF93 HALFWIDTH KATAKANA LETTER MO - # <narrow> 30E2 -FF94 HALFWIDTH KATAKANA LETTER YA - # <narrow> 30E4 -FF95 HALFWIDTH KATAKANA LETTER YU - # <narrow> 30E6 -FF96 HALFWIDTH KATAKANA LETTER YO - # <narrow> 30E8 -FF97 HALFWIDTH KATAKANA LETTER RA - # <narrow> 30E9 -FF98 HALFWIDTH KATAKANA LETTER RI - # <narrow> 30EA -FF99 HALFWIDTH KATAKANA LETTER RU - # <narrow> 30EB -FF9A HALFWIDTH KATAKANA LETTER RE - # <narrow> 30EC -FF9B HALFWIDTH KATAKANA LETTER RO - # <narrow> 30ED -FF9C HALFWIDTH KATAKANA LETTER WA - # <narrow> 30EF -FF9D HALFWIDTH KATAKANA LETTER N - # <narrow> 30F3 -FF9E HALFWIDTH KATAKANA VOICED SOUND MARK (halfwidth katakana-hiragana voiced sound mark) - # <narrow> 3099 -FF9F HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK (halfwidth katakana-hiragana semi-voiced sound mark) - # <narrow> 309A -@ Halfwidth Hangul variants -@+ See Hangul Compatibility Jamo 3130 - 318F -FFA0 HALFWIDTH HANGUL FILLER - # <narrow> 3164 -FFA1 HALFWIDTH HANGUL LETTER KIYEOK - # <narrow> 3131 -FFA2 HALFWIDTH HANGUL LETTER SSANGKIYEOK - # <narrow> 3132 -FFA3 HALFWIDTH HANGUL LETTER KIYEOK-SIOS - # <narrow> 3133 -FFA4 HALFWIDTH HANGUL LETTER NIEUN - # <narrow> 3134 -FFA5 HALFWIDTH HANGUL LETTER NIEUN-CIEUC - # <narrow> 3135 -FFA6 HALFWIDTH HANGUL LETTER NIEUN-HIEUH - # <narrow> 3136 -FFA7 HALFWIDTH HANGUL LETTER TIKEUT - # <narrow> 3137 -FFA8 HALFWIDTH HANGUL LETTER SSANGTIKEUT - # <narrow> 3138 -FFA9 HALFWIDTH HANGUL LETTER RIEUL - # <narrow> 3139 -FFAA HALFWIDTH HANGUL LETTER RIEUL-KIYEOK - # <narrow> 313A -FFAB HALFWIDTH HANGUL LETTER RIEUL-MIEUM - # <narrow> 313B -FFAC HALFWIDTH HANGUL LETTER RIEUL-PIEUP - # <narrow> 313C -FFAD HALFWIDTH HANGUL LETTER RIEUL-SIOS - # <narrow> 313D -FFAE HALFWIDTH HANGUL LETTER RIEUL-THIEUTH - # <narrow> 313E -FFAF HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH - # <narrow> 313F -FFB0 HALFWIDTH HANGUL LETTER RIEUL-HIEUH - # <narrow> 3140 -FFB1 HALFWIDTH HANGUL LETTER MIEUM - # <narrow> 3141 -FFB2 HALFWIDTH HANGUL LETTER PIEUP - # <narrow> 3142 -FFB3 HALFWIDTH HANGUL LETTER SSANGPIEUP - # <narrow> 3143 -FFB4 HALFWIDTH HANGUL LETTER PIEUP-SIOS - # <narrow> 3144 -FFB5 HALFWIDTH HANGUL LETTER SIOS - # <narrow> 3145 -FFB6 HALFWIDTH HANGUL LETTER SSANGSIOS - # <narrow> 3146 -FFB7 HALFWIDTH HANGUL LETTER IEUNG - # <narrow> 3147 -FFB8 HALFWIDTH HANGUL LETTER CIEUC - # <narrow> 3148 -FFB9 HALFWIDTH HANGUL LETTER SSANGCIEUC - # <narrow> 3149 -FFBA HALFWIDTH HANGUL LETTER CHIEUCH - # <narrow> 314A -FFBB HALFWIDTH HANGUL LETTER KHIEUKH - # <narrow> 314B -FFBC HALFWIDTH HANGUL LETTER THIEUTH - # <narrow> 314C -FFBD HALFWIDTH HANGUL LETTER PHIEUPH - # <narrow> 314D -FFBE HALFWIDTH HANGUL LETTER HIEUH - # <narrow> 314E -FFC2 HALFWIDTH HANGUL LETTER A - # <narrow> 314F -FFC3 HALFWIDTH HANGUL LETTER AE - # <narrow> 3150 -FFC4 HALFWIDTH HANGUL LETTER YA - # <narrow> 3151 -FFC5 HALFWIDTH HANGUL LETTER YAE - # <narrow> 3152 -FFC6 HALFWIDTH HANGUL LETTER EO - # <narrow> 3153 -FFC7 HALFWIDTH HANGUL LETTER E - # <narrow> 3154 -FFCA HALFWIDTH HANGUL LETTER YEO - # <narrow> 3155 -FFCB HALFWIDTH HANGUL LETTER YE - # <narrow> 3156 -FFCC HALFWIDTH HANGUL LETTER O - # <narrow> 3157 -FFCD HALFWIDTH HANGUL LETTER WA - # <narrow> 3158 -FFCE HALFWIDTH HANGUL LETTER WAE - # <narrow> 3159 -FFCF HALFWIDTH HANGUL LETTER OE - # <narrow> 315A -FFD2 HALFWIDTH HANGUL LETTER YO - # <narrow> 315B -FFD3 HALFWIDTH HANGUL LETTER U - # <narrow> 315C -FFD4 HALFWIDTH HANGUL LETTER WEO - # <narrow> 315D -FFD5 HALFWIDTH HANGUL LETTER WE - # <narrow> 315E -FFD6 HALFWIDTH HANGUL LETTER WI - # <narrow> 315F -FFD7 HALFWIDTH HANGUL LETTER YU - # <narrow> 3160 -FFDA HALFWIDTH HANGUL LETTER EU - # <narrow> 3161 -FFDB HALFWIDTH HANGUL LETTER YI - # <narrow> 3162 -FFDC HALFWIDTH HANGUL LETTER I - # <narrow> 3163 -@ Fullwidth symbol variants -@+ See Latin-1 00A0 - 00FF -FFE0 FULLWIDTH CENT SIGN - # <wide> 00A2 -FFE1 FULLWIDTH POUND SIGN - # <wide> 00A3 -FFE2 FULLWIDTH NOT SIGN - # <wide> 00AC -FFE3 FULLWIDTH MACRON * - * sometimes treated as fullwidth overline - x (overline - 203E) - # <wide> 00AF -FFE4 FULLWIDTH BROKEN BAR - # <wide> 00A6 -FFE5 FULLWIDTH YEN SIGN - # <wide> 00A5 -FFE6 FULLWIDTH WON SIGN - # <wide> 20A9 -@ Halfwidth symbol variants -FFE8 HALFWIDTH FORMS LIGHT VERTICAL - # <narrow> 2502 -FFE9 HALFWIDTH LEFTWARDS ARROW - # <narrow> 2190 -FFEA HALFWIDTH UPWARDS ARROW - # <narrow> 2191 -FFEB HALFWIDTH RIGHTWARDS ARROW - # <narrow> 2192 -FFEC HALFWIDTH DOWNWARDS ARROW - # <narrow> 2193 -FFED HALFWIDTH BLACK SQUARE - # <narrow> 25A0 -FFEE HALFWIDTH WHITE CIRCLE - # <narrow> 25CB -@@ FFF0 Specials FFFF -@ Interlinear annotation -@+ Used internally for Japanese Ruby (furigana), etc. -FFF9 INTERLINEAR ANNOTATION ANCHOR - * marks start of annotated text -FFFA INTERLINEAR ANNOTATION SEPARATOR - * marks start of annotating character(s) -FFFB INTERLINEAR ANNOTATION TERMINATOR - * marks end of annotation block -@ Replacement characters -FFFC OBJECT REPLACEMENT CHARACTER - * used as placeholder in text for an otherwise unspecified object -FFFD REPLACEMENT CHARACTER - * used to replace an incoming character whose value is unknown or unrepresentable in Unicode - * compare the use of 001A as a control character to indicate the substitute function -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -FFFE <not a character> - * the value FFFE is guaranteed not to be a Unicode character at all - * may be used to detect byte order by contrast with FEFF which is a character - x (zero width no-break space - FEFF) -FFFF <not a character> - * the value FFFF is guaranteed not to be a Unicode character at all -@@ 10000 Linear B Syllabary 1007F -@ Basic syllables -10000 LINEAR B SYLLABLE B008 A -10001 LINEAR B SYLLABLE B038 E -10002 LINEAR B SYLLABLE B028 I -10003 LINEAR B SYLLABLE B061 O -10004 LINEAR B SYLLABLE B010 U -10005 LINEAR B SYLLABLE B001 DA -10006 LINEAR B SYLLABLE B045 DE -10007 LINEAR B SYLLABLE B007 DI -10008 LINEAR B SYLLABLE B014 DO -10009 LINEAR B SYLLABLE B051 DU -1000A LINEAR B SYLLABLE B057 JA -1000B LINEAR B SYLLABLE B046 JE -1000D LINEAR B SYLLABLE B036 JO -1000E LINEAR B SYLLABLE B065 JU - = ideogram B129 flour -1000F LINEAR B SYLLABLE B077 KA -10010 LINEAR B SYLLABLE B044 KE -10011 LINEAR B SYLLABLE B067 KI -10012 LINEAR B SYLLABLE B070 KO -10013 LINEAR B SYLLABLE B081 KU -10014 LINEAR B SYLLABLE B080 MA -10015 LINEAR B SYLLABLE B013 ME -10016 LINEAR B SYLLABLE B073 MI -10017 LINEAR B SYLLABLE B015 MO -10018 LINEAR B SYLLABLE B023 MU - = ideogram B109 ox -10019 LINEAR B SYLLABLE B006 NA -1001A LINEAR B SYLLABLE B024 NE -1001B LINEAR B SYLLABLE B030 NI - = ideogram B030 figs -1001C LINEAR B SYLLABLE B052 NO -1001D LINEAR B SYLLABLE B055 NU -1001E LINEAR B SYLLABLE B003 PA -1001F LINEAR B SYLLABLE B072 PE -10020 LINEAR B SYLLABLE B039 PI -10021 LINEAR B SYLLABLE B011 PO -10022 LINEAR B SYLLABLE B050 PU -10023 LINEAR B SYLLABLE B016 QA -10024 LINEAR B SYLLABLE B078 QE -10025 LINEAR B SYLLABLE B021 QI - = ideogram B106 sheep -10026 LINEAR B SYLLABLE B032 QO -10028 LINEAR B SYLLABLE B060 RA -10029 LINEAR B SYLLABLE B027 RE -1002A LINEAR B SYLLABLE B053 RI -1002B LINEAR B SYLLABLE B002 RO -1002C LINEAR B SYLLABLE B026 RU -1002D LINEAR B SYLLABLE B031 SA - = ideogram B031 flax -1002E LINEAR B SYLLABLE B009 SE -1002F LINEAR B SYLLABLE B041 SI -10030 LINEAR B SYLLABLE B012 SO -10031 LINEAR B SYLLABLE B058 SU -10032 LINEAR B SYLLABLE B059 TA -10033 LINEAR B SYLLABLE B004 TE -10034 LINEAR B SYLLABLE B037 TI -10035 LINEAR B SYLLABLE B005 TO -10036 LINEAR B SYLLABLE B069 TU -10037 LINEAR B SYLLABLE B054 WA -10038 LINEAR B SYLLABLE B075 WE -10039 LINEAR B SYLLABLE B040 WI -1003A LINEAR B SYLLABLE B042 WO -1003C LINEAR B SYLLABLE B017 ZA -1003D LINEAR B SYLLABLE B074 ZE -1003F LINEAR B SYLLABLE B020 ZO -@ Supplementary signs -10040 LINEAR B SYLLABLE B025 A2 -10041 LINEAR B SYLLABLE B043 A3 -10042 LINEAR B SYLLABLE B085 AU - = ideogram B108 pig -10043 LINEAR B SYLLABLE B071 DWE -10044 LINEAR B SYLLABLE B090 DWO -10045 LINEAR B SYLLABLE B048 NWA -10046 LINEAR B SYLLABLE B029 PU2 -10047 LINEAR B SYLLABLE B062 PTE -10048 LINEAR B SYLLABLE B076 RA2 -10049 LINEAR B SYLLABLE B033 RA3 - = ideogram B144 saffron -1004A LINEAR B SYLLABLE B068 RO2 -1004B LINEAR B SYLLABLE B066 TA2 -1004C LINEAR B SYLLABLE B087 TWE -1004D LINEAR B SYLLABLE B091 TWO -@ Symbols -10050 LINEAR B SYMBOL B018 -10051 LINEAR B SYMBOL B019 -10052 LINEAR B SYMBOL B022 - = ideogram B107 goat -10053 LINEAR B SYMBOL B034 -10054 LINEAR B SYMBOL B047 -10055 LINEAR B SYMBOL B049 -10056 LINEAR B SYMBOL B056 -10057 LINEAR B SYMBOL B063 -10058 LINEAR B SYMBOL B064 -10059 LINEAR B SYMBOL B079 -1005A LINEAR B SYMBOL B082 -1005B LINEAR B SYMBOL B083 -1005C LINEAR B SYMBOL B086 -1005D LINEAR B SYMBOL B089 -@@ 10080 Linear B Ideograms 100FF -@+ Some Linear B syllables are also used as Linear B ideograms. - x (linear b syllable b021 qi - 10025) - x (linear b symbol b022 - 10052) - x (linear b syllable b023 mu - 10018) - x (linear b syllable b030 ni - 1001B) - x (linear b syllable b031 sa - 1002D) - x (linear b syllable b033 ra3 - 10049) - x (linear b syllable b065 ju - 1000E) - x (linear b syllable b085 au - 10042) -@ People and animals -10080 LINEAR B IDEOGRAM B100 MAN -10081 LINEAR B IDEOGRAM B102 WOMAN -10082 LINEAR B IDEOGRAM B104 DEER -10083 LINEAR B IDEOGRAM B105 EQUID -10084 LINEAR B IDEOGRAM B105F MARE -10085 LINEAR B IDEOGRAM B105M STALLION -10086 LINEAR B IDEOGRAM B106F EWE -10087 LINEAR B IDEOGRAM B106M RAM -10088 LINEAR B IDEOGRAM B107F SHE-GOAT -10089 LINEAR B IDEOGRAM B107M HE-GOAT -1008A LINEAR B IDEOGRAM B108F SOW -1008B LINEAR B IDEOGRAM B108M BOAR -1008C LINEAR B IDEOGRAM B109F COW -1008D LINEAR B IDEOGRAM B109M BULL -@ Cereals and plants -1008E LINEAR B IDEOGRAM B120 WHEAT -1008F LINEAR B IDEOGRAM B121 BARLEY -10090 LINEAR B IDEOGRAM B122 OLIVE -10091 LINEAR B IDEOGRAM B123 SPICE -10092 LINEAR B IDEOGRAM B125 CYPERUS -10093 LINEAR B MONOGRAM B127 KAPO - = fruit -10094 LINEAR B MONOGRAM B128 KANAKO - = saffron -@ Extracts -10095 LINEAR B IDEOGRAM B130 OIL -10096 LINEAR B IDEOGRAM B131 WINE -10097 LINEAR B IDEOGRAM B132 -10098 LINEAR B MONOGRAM B133 AREPA - = ointment -10099 LINEAR B MONOGRAM B135 MERI - = honey -@ Metals -1009A LINEAR B IDEOGRAM B140 BRONZE -1009B LINEAR B IDEOGRAM B141 GOLD -1009C LINEAR B IDEOGRAM B142 -@ Other materials -1009D LINEAR B IDEOGRAM B145 WOOL -1009E LINEAR B IDEOGRAM B146 -1009F LINEAR B IDEOGRAM B150 -100A0 LINEAR B IDEOGRAM B151 HORN -100A1 LINEAR B IDEOGRAM B152 -100A2 LINEAR B IDEOGRAM B153 -100A3 LINEAR B IDEOGRAM B154 -100A4 LINEAR B MONOGRAM B156 TURO2 - = cheese -100A5 LINEAR B IDEOGRAM B157 -100A6 LINEAR B IDEOGRAM B158 -100A7 LINEAR B IDEOGRAM B159 CLOTH -100A8 LINEAR B IDEOGRAM B160 -100A9 LINEAR B IDEOGRAM B161 -100AA LINEAR B IDEOGRAM B162 GARMENT -100AB LINEAR B IDEOGRAM B163 ARMOUR -100AC LINEAR B IDEOGRAM B164 -100AD LINEAR B IDEOGRAM B165 -100AE LINEAR B IDEOGRAM B166 -100AF LINEAR B IDEOGRAM B167 -100B0 LINEAR B IDEOGRAM B168 -100B1 LINEAR B IDEOGRAM B169 -100B2 LINEAR B IDEOGRAM B170 -100B3 LINEAR B IDEOGRAM B171 -100B4 LINEAR B IDEOGRAM B172 -100B5 LINEAR B IDEOGRAM B173 MONTH -100B6 LINEAR B IDEOGRAM B174 -100B7 LINEAR B IDEOGRAM B176 TREE -100B8 LINEAR B IDEOGRAM B177 -100B9 LINEAR B IDEOGRAM B178 -100BA LINEAR B IDEOGRAM B179 -100BB LINEAR B IDEOGRAM B180 -100BC LINEAR B IDEOGRAM B181 -100BD LINEAR B IDEOGRAM B182 -100BE LINEAR B IDEOGRAM B183 -100BF LINEAR B IDEOGRAM B184 - * the shape of this ideogram is only partially known -100C0 LINEAR B IDEOGRAM B185 -100C1 LINEAR B IDEOGRAM B189 -100C2 LINEAR B IDEOGRAM B190 -100C3 LINEAR B IDEOGRAM B191 HELMET -100C4 LINEAR B IDEOGRAM B220 FOOTSTOOL -100C5 LINEAR B IDEOGRAM B225 BATHTUB -100C6 LINEAR B IDEOGRAM B230 SPEAR -100C7 LINEAR B IDEOGRAM B231 ARROW -100C8 LINEAR B IDEOGRAM B232 -100C9 LINEAR B IDEOGRAM B233 SWORD (pug) - = pugio -100CA LINEAR B IDEOGRAM B234 -100CB LINEAR B IDEOGRAM B236 (gup) - = "gupio", inverted sword -100CC LINEAR B IDEOGRAM B240 WHEELED CHARIOT -100CD LINEAR B IDEOGRAM B241 CHARIOT -100CE LINEAR B IDEOGRAM B242 CHARIOT FRAME -100CF LINEAR B IDEOGRAM B243 WHEEL -100D0 LINEAR B IDEOGRAM B245 -100D1 LINEAR B IDEOGRAM B246 -100D2 LINEAR B MONOGRAM B247 DIPTE -100D3 LINEAR B IDEOGRAM B248 -100D4 LINEAR B IDEOGRAM B249 -100D5 LINEAR B IDEOGRAM B251 - * the shape of this ideogram is only partially known -100D6 LINEAR B IDEOGRAM B252 - * the shape of this ideogram is only partially known -100D7 LINEAR B IDEOGRAM B253 -100D8 LINEAR B IDEOGRAM B254 DART -100D9 LINEAR B IDEOGRAM B255 -100DA LINEAR B IDEOGRAM B256 -100DB LINEAR B IDEOGRAM B257 -100DC LINEAR B IDEOGRAM B258 -100DD LINEAR B IDEOGRAM B259 -@ Vessels -100DE LINEAR B IDEOGRAM VESSEL B155 -100DF LINEAR B IDEOGRAM VESSEL B200 -100E0 LINEAR B IDEOGRAM VESSEL B201 -100E1 LINEAR B IDEOGRAM VESSEL B202 -100E2 LINEAR B IDEOGRAM VESSEL B203 -100E3 LINEAR B IDEOGRAM VESSEL B204 -100E4 LINEAR B IDEOGRAM VESSEL B205 -100E5 LINEAR B IDEOGRAM VESSEL B206 -100E6 LINEAR B IDEOGRAM VESSEL B207 -100E7 LINEAR B IDEOGRAM VESSEL B208 -100E8 LINEAR B IDEOGRAM VESSEL B209 -100E9 LINEAR B IDEOGRAM VESSEL B210 -100EA LINEAR B IDEOGRAM VESSEL B211 -100EB LINEAR B IDEOGRAM VESSEL B212 -100EC LINEAR B IDEOGRAM VESSEL B213 -100ED LINEAR B IDEOGRAM VESSEL B214 -100EE LINEAR B IDEOGRAM VESSEL B215 -100EF LINEAR B IDEOGRAM VESSEL B216 -100F0 LINEAR B IDEOGRAM VESSEL B217 -100F1 LINEAR B IDEOGRAM VESSEL B218 -100F2 LINEAR B IDEOGRAM VESSEL B219 -100F3 LINEAR B IDEOGRAM VESSEL B221 -100F4 LINEAR B IDEOGRAM VESSEL B222 -100F5 LINEAR B IDEOGRAM VESSEL B226 -100F6 LINEAR B IDEOGRAM VESSEL B227 -100F7 LINEAR B IDEOGRAM VESSEL B228 -100F8 LINEAR B IDEOGRAM VESSEL B229 -100F9 LINEAR B IDEOGRAM VESSEL B250 -100FA LINEAR B IDEOGRAM VESSEL B305 - * the shape of this ideogram is only partially known -@@ 10100 Aegean Numbers 1013F -@ Punctuation -10100 AEGEAN WORD SEPARATOR LINE -10101 AEGEAN WORD SEPARATOR DOT -10102 AEGEAN CHECK MARK -@ Numbers -10107 AEGEAN NUMBER ONE -10108 AEGEAN NUMBER TWO -10109 AEGEAN NUMBER THREE -1010A AEGEAN NUMBER FOUR -1010B AEGEAN NUMBER FIVE -1010C AEGEAN NUMBER SIX -1010D AEGEAN NUMBER SEVEN -1010E AEGEAN NUMBER EIGHT -1010F AEGEAN NUMBER NINE -10110 AEGEAN NUMBER TEN -10111 AEGEAN NUMBER TWENTY -10112 AEGEAN NUMBER THIRTY -10113 AEGEAN NUMBER FORTY -10114 AEGEAN NUMBER FIFTY -10115 AEGEAN NUMBER SIXTY -10116 AEGEAN NUMBER SEVENTY -10117 AEGEAN NUMBER EIGHTY -10118 AEGEAN NUMBER NINETY -10119 AEGEAN NUMBER ONE HUNDRED -1011A AEGEAN NUMBER TWO HUNDRED -1011B AEGEAN NUMBER THREE HUNDRED -1011C AEGEAN NUMBER FOUR HUNDRED -1011D AEGEAN NUMBER FIVE HUNDRED -1011E AEGEAN NUMBER SIX HUNDRED -1011F AEGEAN NUMBER SEVEN HUNDRED -10120 AEGEAN NUMBER EIGHT HUNDRED -10121 AEGEAN NUMBER NINE HUNDRED -10122 AEGEAN NUMBER ONE THOUSAND -10123 AEGEAN NUMBER TWO THOUSAND -10124 AEGEAN NUMBER THREE THOUSAND -10125 AEGEAN NUMBER FOUR THOUSAND -10126 AEGEAN NUMBER FIVE THOUSAND -10127 AEGEAN NUMBER SIX THOUSAND -10128 AEGEAN NUMBER SEVEN THOUSAND -10129 AEGEAN NUMBER EIGHT THOUSAND -1012A AEGEAN NUMBER NINE THOUSAND -1012B AEGEAN NUMBER TEN THOUSAND -1012C AEGEAN NUMBER TWENTY THOUSAND -1012D AEGEAN NUMBER THIRTY THOUSAND -1012E AEGEAN NUMBER FORTY THOUSAND -1012F AEGEAN NUMBER FIFTY THOUSAND -10130 AEGEAN NUMBER SIXTY THOUSAND -10131 AEGEAN NUMBER SEVENTY THOUSAND -10132 AEGEAN NUMBER EIGHTY THOUSAND -10133 AEGEAN NUMBER NINETY THOUSAND -@ Measures -10137 AEGEAN WEIGHT BASE UNIT -10138 AEGEAN WEIGHT FIRST SUBUNIT -10139 AEGEAN WEIGHT SECOND SUBUNIT -1013A AEGEAN WEIGHT THIRD SUBUNIT -1013B AEGEAN WEIGHT FOURTH SUBUNIT -1013C AEGEAN DRY MEASURE FIRST SUBUNIT -1013D AEGEAN LIQUID MEASURE FIRST SUBUNIT -1013E AEGEAN MEASURE SECOND SUBUNIT -1013F AEGEAN MEASURE THIRD SUBUNIT -@@ 10140 Ancient Greek Numbers 1018F -@ Ancient Greek acrophonic numerals -@+ These are shown as sans-serif forms because that corresponds more closely to their appearance in ancient texts. -10140 GREEK ACROPHONIC ATTIC ONE QUARTER -10141 GREEK ACROPHONIC ATTIC ONE HALF -10142 GREEK ACROPHONIC ATTIC ONE DRACHMA -10143 GREEK ACROPHONIC ATTIC FIVE -10144 GREEK ACROPHONIC ATTIC FIFTY -10145 GREEK ACROPHONIC ATTIC FIVE HUNDRED -10146 GREEK ACROPHONIC ATTIC FIVE THOUSAND -10147 GREEK ACROPHONIC ATTIC FIFTY THOUSAND -10148 GREEK ACROPHONIC ATTIC FIVE TALENTS -10149 GREEK ACROPHONIC ATTIC TEN TALENTS -1014A GREEK ACROPHONIC ATTIC FIFTY TALENTS -1014B GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS -1014C GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS -1014D GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS -1014E GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS -1014F GREEK ACROPHONIC ATTIC FIVE STATERS -10150 GREEK ACROPHONIC ATTIC TEN STATERS -10151 GREEK ACROPHONIC ATTIC FIFTY STATERS -10152 GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS -10153 GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS -10154 GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS -10155 GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS -10156 GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS -10157 GREEK ACROPHONIC ATTIC TEN MNAS -10158 GREEK ACROPHONIC HERAEUM ONE PLETHRON -10159 GREEK ACROPHONIC THESPIAN ONE -1015A GREEK ACROPHONIC HERMIONIAN ONE -1015B GREEK ACROPHONIC EPIDAUREAN TWO - x (two dot punctuation - 205A) -1015C GREEK ACROPHONIC THESPIAN TWO -1015D GREEK ACROPHONIC CYRENAIC TWO DRACHMAS -1015E GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS - * top line is at cap height, unlike 10111 - x (aegean number twenty - 10111) -1015F GREEK ACROPHONIC TROEZENIAN FIVE -10160 GREEK ACROPHONIC TROEZENIAN TEN -10161 GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM -10162 GREEK ACROPHONIC HERMIONIAN TEN -10163 GREEK ACROPHONIC MESSENIAN TEN -10164 GREEK ACROPHONIC THESPIAN TEN -10165 GREEK ACROPHONIC THESPIAN THIRTY -10166 GREEK ACROPHONIC TROEZENIAN FIFTY -10167 GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM -10168 GREEK ACROPHONIC HERMIONIAN FIFTY -10169 GREEK ACROPHONIC THESPIAN FIFTY -1016A GREEK ACROPHONIC THESPIAN ONE HUNDRED -1016B GREEK ACROPHONIC THESPIAN THREE HUNDRED -1016C GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED -1016D GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED -1016E GREEK ACROPHONIC THESPIAN FIVE HUNDRED -1016F GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED -10170 GREEK ACROPHONIC NAXIAN FIVE HUNDRED -10171 GREEK ACROPHONIC THESPIAN ONE THOUSAND -10172 GREEK ACROPHONIC THESPIAN FIVE THOUSAND -10173 GREEK ACROPHONIC DELPHIC FIVE MNAS -10174 GREEK ACROPHONIC STRATIAN FIFTY MNAS -@ Ancient Greek papyrological numbers -10175 GREEK ONE HALF SIGN -10176 GREEK ONE HALF SIGN ALTERNATE FORM -10177 GREEK TWO THIRDS SIGN -10178 GREEK THREE QUARTERS SIGN -10179 GREEK YEAR SIGN -1017A GREEK TALENT SIGN -1017B GREEK DRACHMA SIGN -1017C GREEK OBOL SIGN -1017D GREEK TWO OBOLS SIGN -1017E GREEK THREE OBOLS SIGN -1017F GREEK FOUR OBOLS SIGN -10180 GREEK FIVE OBOLS SIGN -10181 GREEK METRETES SIGN -10182 GREEK KYATHOS BASE SIGN -10183 GREEK LITRA SIGN -10184 GREEK OUNKIA SIGN -10185 GREEK XESTES SIGN -10186 GREEK ARTABE SIGN -10187 GREEK AROURA SIGN -10188 GREEK GRAMMA SIGN -10189 GREEK TRYBLION BASE SIGN -1018A GREEK ZERO SIGN -@@ 10300 Old Italic 1032F -@ Letters -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 (Faliscan) -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 (Faliscan) -10318 OLD ITALIC LETTER PHE -10319 OLD ITALIC LETTER KHE -1031A OLD ITALIC LETTER EF -1031B OLD ITALIC LETTER ERS (Umbrian) -1031C OLD ITALIC LETTER CHE (Umbrian) -1031D OLD ITALIC LETTER II (Oscan) -1031E OLD ITALIC LETTER UU (Oscan) -@ Numerals -10320 OLD ITALIC NUMERAL ONE -10321 OLD ITALIC NUMERAL FIVE -10322 OLD ITALIC NUMERAL TEN -10323 OLD ITALIC NUMERAL FIFTY -@@ 10330 Gothic 1034F -@ Letters -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 -@@ 10380 Ugaritic 1039F -@ Letters -10380 UGARITIC LETTER ALPA -10381 UGARITIC LETTER BETA -10382 UGARITIC LETTER GAMLA -10383 UGARITIC LETTER KHA -10384 UGARITIC LETTER DELTA -10385 UGARITIC LETTER HO -10386 UGARITIC LETTER WO -10387 UGARITIC LETTER ZETA -10388 UGARITIC LETTER HOTA -10389 UGARITIC LETTER TET -1038A UGARITIC LETTER YOD -1038B UGARITIC LETTER KAF -1038C UGARITIC LETTER SHIN -1038D UGARITIC LETTER LAMDA -1038E UGARITIC LETTER MEM -1038F UGARITIC LETTER DHAL -10390 UGARITIC LETTER NUN -10391 UGARITIC LETTER ZU -10392 UGARITIC LETTER SAMKA -10393 UGARITIC LETTER AIN -10394 UGARITIC LETTER PU -10395 UGARITIC LETTER SADE -10396 UGARITIC LETTER QOPA -10397 UGARITIC LETTER RASHA -10398 UGARITIC LETTER THANNA -10399 UGARITIC LETTER GHAIN -1039A UGARITIC LETTER TO -1039B UGARITIC LETTER I -1039C UGARITIC LETTER U -1039D UGARITIC LETTER SSU -@ Punctuation -1039F UGARITIC WORD DIVIDER -@@ 103A0 Old Persian 103DF -@ Independent vowels -103A0 OLD PERSIAN SIGN A -103A1 OLD PERSIAN SIGN I -103A2 OLD PERSIAN SIGN U -@ Consonants -103A3 OLD PERSIAN SIGN KA -103A4 OLD PERSIAN SIGN KU -103A5 OLD PERSIAN SIGN GA -103A6 OLD PERSIAN SIGN GU -103A7 OLD PERSIAN SIGN XA -103A8 OLD PERSIAN SIGN CA -103A9 OLD PERSIAN SIGN JA -103AA OLD PERSIAN SIGN JI -103AB OLD PERSIAN SIGN TA -103AC OLD PERSIAN SIGN TU -103AD OLD PERSIAN SIGN DA -103AE OLD PERSIAN SIGN DI -103AF OLD PERSIAN SIGN DU -103B0 OLD PERSIAN SIGN THA -103B1 OLD PERSIAN SIGN PA -103B2 OLD PERSIAN SIGN BA -103B3 OLD PERSIAN SIGN FA -103B4 OLD PERSIAN SIGN NA -103B5 OLD PERSIAN SIGN NU -103B6 OLD PERSIAN SIGN MA -103B7 OLD PERSIAN SIGN MI -103B8 OLD PERSIAN SIGN MU -103B9 OLD PERSIAN SIGN YA -103BA OLD PERSIAN SIGN VA -103BB OLD PERSIAN SIGN VI -103BC OLD PERSIAN SIGN RA -103BD OLD PERSIAN SIGN RU -103BE OLD PERSIAN SIGN LA -103BF OLD PERSIAN SIGN SA -103C0 OLD PERSIAN SIGN ZA -103C1 OLD PERSIAN SIGN SHA -103C2 OLD PERSIAN SIGN SSA -103C3 OLD PERSIAN SIGN HA -@ Various signs -103C8 OLD PERSIAN SIGN AURAMAZDAA -103C9 OLD PERSIAN SIGN AURAMAZDAA-2 -103CA OLD PERSIAN SIGN AURAMAZDAAHA -103CB OLD PERSIAN SIGN XSHAAYATHIYA -103CC OLD PERSIAN SIGN DAHYAAUSH -103CD OLD PERSIAN SIGN DAHYAAUSH-2 -103CE OLD PERSIAN SIGN BAGA -103CF OLD PERSIAN SIGN BUUMISH -@ Punctuation -103D0 OLD PERSIAN WORD DIVIDER -@ Numbers -103D1 OLD PERSIAN NUMBER ONE -103D2 OLD PERSIAN NUMBER TWO -103D3 OLD PERSIAN NUMBER TEN -103D4 OLD PERSIAN NUMBER TWENTY -103D5 OLD PERSIAN NUMBER HUNDRED -@@ 10400 Deseret 1044F -@ Uppercase letters -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 -10426 DESERET CAPITAL LETTER OI -10427 DESERET CAPITAL LETTER EW -@ Lowercase letters -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 -1044E DESERET SMALL LETTER OI -1044F DESERET SMALL LETTER EW -@@ 10450 Shavian 1047F -@ Consonants -10450 SHAVIAN LETTER PEEP -10451 SHAVIAN LETTER TOT -10452 SHAVIAN LETTER KICK -10453 SHAVIAN LETTER FEE -10454 SHAVIAN LETTER THIGH -10455 SHAVIAN LETTER SO -10456 SHAVIAN LETTER SURE -10457 SHAVIAN LETTER CHURCH -10458 SHAVIAN LETTER YEA -10459 SHAVIAN LETTER HUNG -1045A SHAVIAN LETTER BIB -1045B SHAVIAN LETTER DEAD -1045C SHAVIAN LETTER GAG -1045D SHAVIAN LETTER VOW -1045E SHAVIAN LETTER THEY -1045F SHAVIAN LETTER ZOO -10460 SHAVIAN LETTER MEASURE -10461 SHAVIAN LETTER JUDGE -10462 SHAVIAN LETTER WOE -10463 SHAVIAN LETTER HA-HA -10464 SHAVIAN LETTER LOLL -10465 SHAVIAN LETTER MIME -@ Vowels -10466 SHAVIAN LETTER IF -10467 SHAVIAN LETTER EGG -10468 SHAVIAN LETTER ASH -10469 SHAVIAN LETTER ADO -1046A SHAVIAN LETTER ON -1046B SHAVIAN LETTER WOOL -1046C SHAVIAN LETTER OUT -1046D SHAVIAN LETTER AH -1046E SHAVIAN LETTER ROAR -1046F SHAVIAN LETTER NUN -10470 SHAVIAN LETTER EAT -10471 SHAVIAN LETTER AGE -10472 SHAVIAN LETTER ICE -10473 SHAVIAN LETTER UP -10474 SHAVIAN LETTER OAK -10475 SHAVIAN LETTER OOZE -10476 SHAVIAN LETTER OIL -10477 SHAVIAN LETTER AWE -10478 SHAVIAN LETTER ARE -10479 SHAVIAN LETTER OR -1047A SHAVIAN LETTER AIR -1047B SHAVIAN LETTER ERR -1047C SHAVIAN LETTER ARRAY -1047D SHAVIAN LETTER EAR -1047E SHAVIAN LETTER IAN -1047F SHAVIAN LETTER YEW -@@ 10480 Osmanya 104AF -@ Letters -10480 OSMANYA LETTER ALEF -10481 OSMANYA LETTER BA -10482 OSMANYA LETTER TA -10483 OSMANYA LETTER JA -10484 OSMANYA LETTER XA -10485 OSMANYA LETTER KHA -10486 OSMANYA LETTER DEEL -10487 OSMANYA LETTER RA -10488 OSMANYA LETTER SA -10489 OSMANYA LETTER SHIIN -1048A OSMANYA LETTER DHA -1048B OSMANYA LETTER CAYN -1048C OSMANYA LETTER GA -1048D OSMANYA LETTER FA -1048E OSMANYA LETTER QAAF -1048F OSMANYA LETTER KAAF -10490 OSMANYA LETTER LAAN -10491 OSMANYA LETTER MIIN -10492 OSMANYA LETTER NUUN -10493 OSMANYA LETTER WAW -10494 OSMANYA LETTER HA -10495 OSMANYA LETTER YA -10496 OSMANYA LETTER A -10497 OSMANYA LETTER E -10498 OSMANYA LETTER I -10499 OSMANYA LETTER O -1049A OSMANYA LETTER U -1049B OSMANYA LETTER AA -1049C OSMANYA LETTER EE -1049D OSMANYA LETTER OO -@ Digits -104A0 OSMANYA DIGIT ZERO -104A1 OSMANYA DIGIT ONE -104A2 OSMANYA DIGIT TWO -104A3 OSMANYA DIGIT THREE -104A4 OSMANYA DIGIT FOUR -104A5 OSMANYA DIGIT FIVE -104A6 OSMANYA DIGIT SIX -104A7 OSMANYA DIGIT SEVEN -104A8 OSMANYA DIGIT EIGHT -104A9 OSMANYA DIGIT NINE -@@ 10800 Cypriot Syllabary 1083F -@ Syllables -10800 CYPRIOT SYLLABLE A -10801 CYPRIOT SYLLABLE E -10802 CYPRIOT SYLLABLE I -10803 CYPRIOT SYLLABLE O -10804 CYPRIOT SYLLABLE U -10805 CYPRIOT SYLLABLE JA -10808 CYPRIOT SYLLABLE JO -1080A CYPRIOT SYLLABLE KA -1080B CYPRIOT SYLLABLE KE -1080C CYPRIOT SYLLABLE KI -1080D CYPRIOT SYLLABLE KO -1080E CYPRIOT SYLLABLE KU -1080F CYPRIOT SYLLABLE LA -10810 CYPRIOT SYLLABLE LE -10811 CYPRIOT SYLLABLE LI -10812 CYPRIOT SYLLABLE LO -10813 CYPRIOT SYLLABLE LU -10814 CYPRIOT SYLLABLE MA -10815 CYPRIOT SYLLABLE ME -10816 CYPRIOT SYLLABLE MI -10817 CYPRIOT SYLLABLE MO -10818 CYPRIOT SYLLABLE MU -10819 CYPRIOT SYLLABLE NA -1081A CYPRIOT SYLLABLE NE -1081B CYPRIOT SYLLABLE NI -1081C CYPRIOT SYLLABLE NO -1081D CYPRIOT SYLLABLE NU -1081E CYPRIOT SYLLABLE PA -1081F CYPRIOT SYLLABLE PE -10820 CYPRIOT SYLLABLE PI -10821 CYPRIOT SYLLABLE PO -10822 CYPRIOT SYLLABLE PU -10823 CYPRIOT SYLLABLE RA -10824 CYPRIOT SYLLABLE RE -10825 CYPRIOT SYLLABLE RI -10826 CYPRIOT SYLLABLE RO -10827 CYPRIOT SYLLABLE RU -10828 CYPRIOT SYLLABLE SA -10829 CYPRIOT SYLLABLE SE -1082A CYPRIOT SYLLABLE SI -1082B CYPRIOT SYLLABLE SO -1082C CYPRIOT SYLLABLE SU -1082D CYPRIOT SYLLABLE TA -1082E CYPRIOT SYLLABLE TE -1082F CYPRIOT SYLLABLE TI -10830 CYPRIOT SYLLABLE TO -10831 CYPRIOT SYLLABLE TU -10832 CYPRIOT SYLLABLE WA -10833 CYPRIOT SYLLABLE WE -10834 CYPRIOT SYLLABLE WI -10835 CYPRIOT SYLLABLE WO -10837 CYPRIOT SYLLABLE XA -10838 CYPRIOT SYLLABLE XE -1083C CYPRIOT SYLLABLE ZA -1083F CYPRIOT SYLLABLE ZO -@@ 10A00 Kharoshthi 10A5F -@ Vowels -10A00 KHAROSHTHI LETTER A -10A01 KHAROSHTHI VOWEL SIGN I -10A02 KHAROSHTHI VOWEL SIGN U -10A03 KHAROSHTHI VOWEL SIGN VOCALIC R -10A05 KHAROSHTHI VOWEL SIGN E -10A06 KHAROSHTHI VOWEL SIGN O -@ Length mark -10A0C KHAROSHTHI VOWEL LENGTH MARK -@ Various signs -10A0D KHAROSHTHI SIGN DOUBLE RING BELOW -10A0E KHAROSHTHI SIGN ANUSVARA -10A0F KHAROSHTHI SIGN VISARGA -@ Consonants -10A10 KHAROSHTHI LETTER KA -10A11 KHAROSHTHI LETTER KHA -10A12 KHAROSHTHI LETTER GA -10A13 KHAROSHTHI LETTER GHA -10A15 KHAROSHTHI LETTER CA -10A16 KHAROSHTHI LETTER CHA -10A17 KHAROSHTHI LETTER JA -10A19 KHAROSHTHI LETTER NYA -10A1A KHAROSHTHI LETTER TTA -10A1B KHAROSHTHI LETTER TTHA -10A1C KHAROSHTHI LETTER DDA -10A1D KHAROSHTHI LETTER DDHA -10A1E KHAROSHTHI LETTER NNA -10A1F KHAROSHTHI LETTER TA -10A20 KHAROSHTHI LETTER THA -10A21 KHAROSHTHI LETTER DA -10A22 KHAROSHTHI LETTER DHA -10A23 KHAROSHTHI LETTER NA -10A24 KHAROSHTHI LETTER PA -10A25 KHAROSHTHI LETTER PHA -10A26 KHAROSHTHI LETTER BA -10A27 KHAROSHTHI LETTER BHA -10A28 KHAROSHTHI LETTER MA -10A29 KHAROSHTHI LETTER YA -10A2A KHAROSHTHI LETTER RA -10A2B KHAROSHTHI LETTER LA -10A2C KHAROSHTHI LETTER VA -10A2D KHAROSHTHI LETTER SHA -10A2E KHAROSHTHI LETTER SSA -10A2F KHAROSHTHI LETTER SA -10A30 KHAROSHTHI LETTER ZA -10A31 KHAROSHTHI LETTER HA -10A32 KHAROSHTHI LETTER KKA -10A33 KHAROSHTHI LETTER TTTHA -@ Various signs -10A38 KHAROSHTHI SIGN BAR ABOVE -10A39 KHAROSHTHI SIGN CAUDA -10A3A KHAROSHTHI SIGN DOT BELOW -@ Virama -10A3F KHAROSHTHI VIRAMA - = halant - * suppresses inherent vowel -@ Digits -10A40 KHAROSHTHI DIGIT ONE -10A41 KHAROSHTHI DIGIT TWO -10A42 KHAROSHTHI DIGIT THREE -10A43 KHAROSHTHI DIGIT FOUR -@ Numbers -10A44 KHAROSHTHI NUMBER TEN -10A45 KHAROSHTHI NUMBER TWENTY -10A46 KHAROSHTHI NUMBER ONE HUNDRED -10A47 KHAROSHTHI NUMBER ONE THOUSAND -@ Punctuation -10A50 KHAROSHTHI PUNCTUATION DOT -10A51 KHAROSHTHI PUNCTUATION SMALL CIRCLE -10A52 KHAROSHTHI PUNCTUATION CIRCLE -10A53 KHAROSHTHI PUNCTUATION CRESCENT BAR -10A54 KHAROSHTHI PUNCTUATION MANGALAM -10A55 KHAROSHTHI PUNCTUATION LOTUS -10A56 KHAROSHTHI PUNCTUATION DANDA -10A57 KHAROSHTHI PUNCTUATION DOUBLE DANDA -10A58 KHAROSHTHI PUNCTUATION LINES -@@ 1D000 Byzantine Musical Symbols 1D0FF -@ Prosodies (Prosodics) -1D000 BYZANTINE MUSICAL SYMBOL PSILI -1D001 BYZANTINE MUSICAL SYMBOL DASEIA -1D002 BYZANTINE MUSICAL SYMBOL PERISPOMENI -@ Ekfonetika -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 -@ Melodimata (Melodics) -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 -@ Fonitika (Vocals) -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 -@ Afona or Ypostaseis (Mutes or Hypostases) -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 -@ Argies (Retards) -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 -@ Leimmata or Siopes (Leimmas or Silencers) -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 -@ Synagmata or Gorgotites (Synagmas or Quickeners) -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 -@ Agogika (Conduits) -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 -@ Ichimata and Martyrika (Ichimas and Evidentials) -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 -@ Fthores (Destroyers) -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 - * misspelling of "FTHORA" in character name is a known defect -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 -@ Alloioseis (Differentiators) -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 -@ Rythmika (Rhythmics) -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 -@ Grammata (Letters) -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 -@ Specials -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 Symbols 1D1FF -@ Bars -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 -@ Codas -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 -@ Figure repetitions -1D10D MUSICAL SYMBOL REPEATED FIGURE-1 -1D10E MUSICAL SYMBOL REPEATED FIGURE-2 -1D10F MUSICAL SYMBOL REPEATED FIGURE-3 -@ Holds and pauses -1D110 MUSICAL SYMBOL FERMATA -1D111 MUSICAL SYMBOL FERMATA BELOW -1D112 MUSICAL SYMBOL BREATH MARK -1D113 MUSICAL SYMBOL CAESURA -@ Staff brackets -1D114 MUSICAL SYMBOL BRACE -1D115 MUSICAL SYMBOL BRACKET -@ Staves -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 -@ Tablature -1D11C MUSICAL SYMBOL SIX-STRING FRETBOARD -1D11D MUSICAL SYMBOL FOUR-STRING FRETBOARD -@ Clefs -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 -@ Accidentals -1D127 <reserved> - x (music flat sign - 266D) -1D128 <reserved> - x (music natural sign - 266E) -1D129 <reserved> - x (music sharp sign - 266F) -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 -@ Time signatures -1D134 MUSICAL SYMBOL COMMON TIME -1D135 MUSICAL SYMBOL CUT TIME -@ Octaves -1D136 MUSICAL SYMBOL OTTAVA ALTA -1D137 MUSICAL SYMBOL OTTAVA BASSA -1D138 MUSICAL SYMBOL QUINDICESIMA ALTA -1D139 MUSICAL SYMBOL QUINDICESIMA BASSA -@ Rests -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 -@ Noteheads -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 -@ Notes -1D15C MUSICAL SYMBOL BREVE -1D15D MUSICAL SYMBOL WHOLE NOTE -1D15E MUSICAL SYMBOL HALF NOTE - : 1D157 1D165 -1D15F MUSICAL SYMBOL QUARTER NOTE - : 1D158 1D165 -1D160 MUSICAL SYMBOL EIGHTH NOTE - : 1D15F 1D16E -1D161 MUSICAL SYMBOL SIXTEENTH NOTE - : 1D15F 1D16F -1D162 MUSICAL SYMBOL THIRTY-SECOND NOTE - : 1D15F 1D170 -1D163 MUSICAL SYMBOL SIXTY-FOURTH NOTE - : 1D15F 1D171 -1D164 MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE - : 1D15F 1D172 -@ Stems -1D165 MUSICAL SYMBOL COMBINING STEM -1D166 MUSICAL SYMBOL COMBINING SPRECHGESANG STEM -@ Tremolos -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 -@ Augmentation dot -1D16D MUSICAL SYMBOL COMBINING AUGMENTATION DOT -@ Flags -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 -@ Beams and slurs -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 -@ Articulation -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 -@ Dynamics -1D18F MUSICAL SYMBOL PIANO -1D190 MUSICAL SYMBOL MEZZO -1D191 MUSICAL SYMBOL FORTE -1D192 MUSICAL SYMBOL CRESCENDO -1D193 MUSICAL SYMBOL DECRESCENDO -@ Ornaments -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 -@ Analytics -1D1A6 MUSICAL SYMBOL HAUPTSTIMME -1D1A7 MUSICAL SYMBOL NEBENSTIMME -1D1A8 MUSICAL SYMBOL END OF STIMME -1D1A9 MUSICAL SYMBOL DEGREE SLASH -@ Instrumentation -1D1AA MUSICAL SYMBOL COMBINING DOWN BOW -1D1AB MUSICAL SYMBOL COMBINING UP BOW -1D1AC MUSICAL SYMBOL COMBINING HARMONIC -1D1AD MUSICAL SYMBOL COMBINING SNAP PIZZICATO -@ Pedals -1D1AE MUSICAL SYMBOL PEDAL MARK -1D1AF MUSICAL SYMBOL PEDAL UP MARK -1D1B0 MUSICAL SYMBOL HALF PEDAL MARK -@ Miscellaneous symbols -1D1B1 MUSICAL SYMBOL GLISSANDO UP -1D1B2 MUSICAL SYMBOL GLISSANDO DOWN -1D1B3 MUSICAL SYMBOL WITH FINGERNAILS -1D1B4 MUSICAL SYMBOL DAMP -1D1B5 MUSICAL SYMBOL DAMP ALL -@ Mensural notation -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 - : 1D1B9 1D165 -1D1BC MUSICAL SYMBOL MINIMA BLACK - : 1D1BA 1D165 -1D1BD MUSICAL SYMBOL SEMIMINIMA WHITE - : 1D1BB 1D16E -1D1BE MUSICAL SYMBOL SEMIMINIMA BLACK - : 1D1BC 1D16E -1D1BF MUSICAL SYMBOL FUSA WHITE - : 1D1BB 1D16F -1D1C0 MUSICAL SYMBOL FUSA BLACK - : 1D1BC 1D16F -@ Mensural rests -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 -@ Mensural prolations -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 -@ Miscellaneous symbol -1D1CF MUSICAL SYMBOL CROIX -@ Gregorian notation -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 -@@ 1D200 Ancient Greek Musical Notation 1D24F -@ Ancient Greek vocalic notation -@+ In a few instances vocalic and instrumental symbols have been unified with each other. In other instances they have been unified with regular Greek letters. -1D200 GREEK VOCAL NOTATION SYMBOL-1 - * vocal E -1D201 GREEK VOCAL NOTATION SYMBOL-2 - * vocal first sharp of E -1D202 GREEK VOCAL NOTATION SYMBOL-3 - = Greek instrumental notation symbol-3 - * vocal or instrumental second sharp of E -1D203 GREEK VOCAL NOTATION SYMBOL-4 - * vocal F -1D204 GREEK VOCAL NOTATION SYMBOL-5 - * vocal first sharp of F -1D205 GREEK VOCAL NOTATION SYMBOL-6 - = Greek instrumental notation symbol-21 - * vocal second sharp of F - * instrumental second sharp of d -1D206 GREEK VOCAL NOTATION SYMBOL-7 - = Greek instrumental notation symbol-9 - * vocal G - * instrumental second sharp of G -1D207 GREEK VOCAL NOTATION SYMBOL-8 - * vocal first sharp of G -1D208 GREEK VOCAL NOTATION SYMBOL-9 - = Greek instrumental notation symbol-44 - * vocal second sharp of G - * instrumental first sharp of e´ -1D209 GREEK VOCAL NOTATION SYMBOL-10 - * vocal A - * this is a modification of 039F and is therefore not the same as 03D8 -1D20A GREEK VOCAL NOTATION SYMBOL-11 - * vocal first sharp of A -1D20B GREEK VOCAL NOTATION SYMBOL-12 - * vocal second sharp of A -1D20C GREEK VOCAL NOTATION SYMBOL-13 - * vocal B -1D20D GREEK VOCAL NOTATION SYMBOL-14 - = Greek instrumental notation symbol-41 - * vocal first sharp of B - * instrumental first sharp of d´ - x (latin capital letter v - 0056) -1D20E GREEK VOCAL NOTATION SYMBOL-15 - = Greek instrumental notation symbol-35 - * vocal second sharp of B - * instrumental first sharp of b -1D20F GREEK VOCAL NOTATION SYMBOL-16 - * vocal c - * unlike 1D23B this character has a glyph variant that looks like a horizontal line -1D210 GREEK VOCAL NOTATION SYMBOL-17 - * vocal first sharp of c -1D211 GREEK VOCAL NOTATION SYMBOL-18 - = Greek instrumental notation symbol-15 - * vocal second sharp of c - * instrumental second sharp of B -1D212 GREEK VOCAL NOTATION SYMBOL-19 - * vocal d -1D213 GREEK VOCAL NOTATION SYMBOL-20 - = Greek instrumental notation symbol-28 - * vocal first sharp of d - * instrumental g - * this is a modification of 0395 and is therefore not the same as 0046 -1D214 GREEK VOCAL NOTATION SYMBOL-21 - * vocal second sharp of d -1D215 GREEK VOCAL NOTATION SYMBOL-22 - * vocal e -1D216 GREEK VOCAL NOTATION SYMBOL-23 - * vocal first sharp of e - * this is a modification of 0392 and is therefore not the same as 0052 -1D217 GREEK VOCAL NOTATION SYMBOL-24 - * vocal second sharp of e -1D218 GREEK VOCAL NOTATION SYMBOL-50 - * vocal first sharp of g´ -1D219 GREEK VOCAL NOTATION SYMBOL-51 - * vocal second sharp of g´ -1D21A GREEK VOCAL NOTATION SYMBOL-52 - * vocal a´ -1D21B GREEK VOCAL NOTATION SYMBOL-53 - * vocal first sharp of a´ -1D21C GREEK VOCAL NOTATION SYMBOL-54 - = Greek instrumental notation symbol-20 - * vocal second sharp of a´ - * instrumental first sharp of d -@ Ancient Greek instrumental notation -1D21D GREEK INSTRUMENTAL NOTATION SYMBOL-1 - * instrumental E -1D21E GREEK INSTRUMENTAL NOTATION SYMBOL-2 - * instrumental first sharp of e -1D21F GREEK INSTRUMENTAL NOTATION SYMBOL-4 - * instrumental F -1D220 GREEK INSTRUMENTAL NOTATION SYMBOL-5 - * instrumental first sharp of F -1D221 GREEK INSTRUMENTAL NOTATION SYMBOL-7 - * instrumental G -1D222 GREEK INSTRUMENTAL NOTATION SYMBOL-8 - * instrumental first sharp of G -1D223 GREEK INSTRUMENTAL NOTATION SYMBOL-11 - * instrumental first sharp of A -1D224 GREEK INSTRUMENTAL NOTATION SYMBOL-12 - * instrumental second sharp of A -1D225 GREEK INSTRUMENTAL NOTATION SYMBOL-13 - * instrumental B -1D226 GREEK INSTRUMENTAL NOTATION SYMBOL-14 - * instrumental first sharp of B -1D227 GREEK INSTRUMENTAL NOTATION SYMBOL-17 - * instrumental first sharp of c -1D228 GREEK INSTRUMENTAL NOTATION SYMBOL-18 - * instrumental second sharp of c -1D229 GREEK INSTRUMENTAL NOTATION SYMBOL-19 - * instrumental d -1D22A GREEK INSTRUMENTAL NOTATION SYMBOL-23 - * instrumental first sharp of e -1D22B GREEK INSTRUMENTAL NOTATION SYMBOL-24 - * instrumental second sharp of e -1D22C GREEK INSTRUMENTAL NOTATION SYMBOL-25 - * instrumental f -1D22D GREEK INSTRUMENTAL NOTATION SYMBOL-26 - * instrumental first sharp of f -1D22E GREEK INSTRUMENTAL NOTATION SYMBOL-27 - * instrumental second sharp of f -1D22F GREEK INSTRUMENTAL NOTATION SYMBOL-29 - * instrumental first sharp of g -1D230 GREEK INSTRUMENTAL NOTATION SYMBOL-30 - * instrumental second sharp of g -1D231 GREEK INSTRUMENTAL NOTATION SYMBOL-32 - * instrumental first sharp of a -1D232 GREEK INSTRUMENTAL NOTATION SYMBOL-36 - * instrumental second sharp of b -1D233 GREEK INSTRUMENTAL NOTATION SYMBOL-37 - * instrumental c´ -1D234 GREEK INSTRUMENTAL NOTATION SYMBOL-38 - * instrumental first sharp of c´ -1D235 GREEK INSTRUMENTAL NOTATION SYMBOL-39 - * instrumental second sharp of c´ -1D236 GREEK INSTRUMENTAL NOTATION SYMBOL-40 - * instrumental d´ -1D237 GREEK INSTRUMENTAL NOTATION SYMBOL-42 - * instrumental second sharp of d´ -1D238 GREEK INSTRUMENTAL NOTATION SYMBOL-43 - * instrumental e´ -1D239 GREEK INSTRUMENTAL NOTATION SYMBOL-45 - * instrumental second sharp of e´ -1D23A GREEK INSTRUMENTAL NOTATION SYMBOL-47 - * instrumental first sharp of f´ - * similar but not identical to 002F -1D23B GREEK INSTRUMENTAL NOTATION SYMBOL-48 - * instrumental second sharp of f´ - * similar but not identical to 005C -1D23C GREEK INSTRUMENTAL NOTATION SYMBOL-49 - * instrumental g´ -1D23D GREEK INSTRUMENTAL NOTATION SYMBOL-50 - * instrumental first sharp of g´ -1D23E GREEK INSTRUMENTAL NOTATION SYMBOL-51 - * instrumental second sharp of g´ -1D23F GREEK INSTRUMENTAL NOTATION SYMBOL-52 - * instrumental a´ -1D240 GREEK INSTRUMENTAL NOTATION SYMBOL-53 - * instrumental first sharp of a´ -1D241 GREEK INSTRUMENTAL NOTATION SYMBOL-54 - * instrumental second sharp of a´ -@ Further Greek musical notation symbols -1D242 COMBINING GREEK MUSICAL TRISEME - x (metrical triseme - 23D7) -1D243 COMBINING GREEK MUSICAL TETRASEME - x (metrical tetraseme - 23D8) -1D244 COMBINING GREEK MUSICAL PENTASEME - x (metrical pentaseme - 23D9) -1D245 GREEK MUSICAL LEIMMA -@@ 1D300 Tai Xuan Jing Symbols 1D35F -@ Monogram -1D300 MONOGRAM FOR EARTH -@ Digrams -1D301 DIGRAM FOR HEAVENLY EARTH -1D302 DIGRAM FOR HUMAN EARTH -1D303 DIGRAM FOR EARTHLY HEAVEN -1D304 DIGRAM FOR EARTHLY HUMAN -1D305 DIGRAM FOR EARTH -@ Tetragrams -1D306 TETRAGRAM FOR CENTRE -1D307 TETRAGRAM FOR FULL CIRCLE -1D308 TETRAGRAM FOR MIRED -1D309 TETRAGRAM FOR BARRIER -1D30A TETRAGRAM FOR KEEPING SMALL -1D30B TETRAGRAM FOR CONTRARIETY -1D30C TETRAGRAM FOR ASCENT -1D30D TETRAGRAM FOR OPPOSITION -1D30E TETRAGRAM FOR BRANCHING OUT -1D30F TETRAGRAM FOR DEFECTIVENESS OR DISTORTION -1D310 TETRAGRAM FOR DIVERGENCE -1D311 TETRAGRAM FOR YOUTHFULNESS -1D312 TETRAGRAM FOR INCREASE -1D313 TETRAGRAM FOR PENETRATION -1D314 TETRAGRAM FOR REACH -1D315 TETRAGRAM FOR CONTACT -1D316 TETRAGRAM FOR HOLDING BACK -1D317 TETRAGRAM FOR WAITING -1D318 TETRAGRAM FOR FOLLOWING -1D319 TETRAGRAM FOR ADVANCE -1D31A TETRAGRAM FOR RELEASE -1D31B TETRAGRAM FOR RESISTANCE -1D31C TETRAGRAM FOR EASE -1D31D TETRAGRAM FOR JOY -1D31E TETRAGRAM FOR CONTENTION -1D31F TETRAGRAM FOR ENDEAVOUR -1D320 TETRAGRAM FOR DUTIES -1D321 TETRAGRAM FOR CHANGE -1D322 TETRAGRAM FOR DECISIVENESS -1D323 TETRAGRAM FOR BOLD RESOLUTION -1D324 TETRAGRAM FOR PACKING -1D325 TETRAGRAM FOR LEGION -1D326 TETRAGRAM FOR CLOSENESS -1D327 TETRAGRAM FOR KINSHIP -1D328 TETRAGRAM FOR GATHERING -1D329 TETRAGRAM FOR STRENGTH -1D32A TETRAGRAM FOR PURITY -1D32B TETRAGRAM FOR FULLNESS -1D32C TETRAGRAM FOR RESIDENCE -1D32D TETRAGRAM FOR LAW OR MODEL -1D32E TETRAGRAM FOR RESPONSE -1D32F TETRAGRAM FOR GOING TO MEET -1D330 TETRAGRAM FOR ENCOUNTERS -1D331 TETRAGRAM FOR STOVE -1D332 TETRAGRAM FOR GREATNESS -1D333 TETRAGRAM FOR ENLARGEMENT -1D334 TETRAGRAM FOR PATTERN -1D335 TETRAGRAM FOR RITUAL -1D336 TETRAGRAM FOR FLIGHT -1D337 TETRAGRAM FOR VASTNESS OR WASTING -1D338 TETRAGRAM FOR CONSTANCY -1D339 TETRAGRAM FOR MEASURE -1D33A TETRAGRAM FOR ETERNITY -1D33B TETRAGRAM FOR UNITY -1D33C TETRAGRAM FOR DIMINISHMENT -1D33D TETRAGRAM FOR CLOSED MOUTH -1D33E TETRAGRAM FOR GUARDEDNESS -1D33F TETRAGRAM FOR GATHERING IN -1D340 TETRAGRAM FOR MASSING -1D341 TETRAGRAM FOR ACCUMULATION -1D342 TETRAGRAM FOR EMBELLISHMENT -1D343 TETRAGRAM FOR DOUBT -1D344 TETRAGRAM FOR WATCH -1D345 TETRAGRAM FOR SINKING -1D346 TETRAGRAM FOR INNER -1D347 TETRAGRAM FOR DEPARTURE -1D348 TETRAGRAM FOR DARKENING -1D349 TETRAGRAM FOR DIMMING -1D34A TETRAGRAM FOR EXHAUSTION -1D34B TETRAGRAM FOR SEVERANCE -1D34C TETRAGRAM FOR STOPPAGE -1D34D TETRAGRAM FOR HARDNESS -1D34E TETRAGRAM FOR COMPLETION -1D34F TETRAGRAM FOR CLOSURE -1D350 TETRAGRAM FOR FAILURE -1D351 TETRAGRAM FOR AGGRAVATION -1D352 TETRAGRAM FOR COMPLIANCE -1D353 TETRAGRAM FOR ON THE VERGE -1D354 TETRAGRAM FOR DIFFICULTIES -1D355 TETRAGRAM FOR LABOURING -1D356 TETRAGRAM FOR FOSTERING -@@ 1D400 Mathematical Alphanumeric Symbols 1D7FF -@+ To be used for mathematical variables where style variations are important semantically. For general text, use standard Latin and Greek letters with markup. -@ Bold symbols -1D400 MATHEMATICAL BOLD CAPITAL A - # <font> 0041 latin capital letter a -1D401 MATHEMATICAL BOLD CAPITAL B - # <font> 0042 latin capital letter b -1D402 MATHEMATICAL BOLD CAPITAL C - # <font> 0043 latin capital letter c -1D403 MATHEMATICAL BOLD CAPITAL D - # <font> 0044 latin capital letter d -1D404 MATHEMATICAL BOLD CAPITAL E - # <font> 0045 latin capital letter e -1D405 MATHEMATICAL BOLD CAPITAL F - # <font> 0046 latin capital letter f -1D406 MATHEMATICAL BOLD CAPITAL G - # <font> 0047 latin capital letter g -1D407 MATHEMATICAL BOLD CAPITAL H - # <font> 0048 latin capital letter h -1D408 MATHEMATICAL BOLD CAPITAL I - # <font> 0049 latin capital letter i -1D409 MATHEMATICAL BOLD CAPITAL J - # <font> 004A latin capital letter j -1D40A MATHEMATICAL BOLD CAPITAL K - # <font> 004B latin capital letter k -1D40B MATHEMATICAL BOLD CAPITAL L - # <font> 004C latin capital letter l -1D40C MATHEMATICAL BOLD CAPITAL M - # <font> 004D latin capital letter m -1D40D MATHEMATICAL BOLD CAPITAL N - # <font> 004E latin capital letter n -1D40E MATHEMATICAL BOLD CAPITAL O - # <font> 004F latin capital letter o -1D40F MATHEMATICAL BOLD CAPITAL P - # <font> 0050 latin capital letter p -1D410 MATHEMATICAL BOLD CAPITAL Q - # <font> 0051 latin capital letter q -1D411 MATHEMATICAL BOLD CAPITAL R - # <font> 0052 latin capital letter r -1D412 MATHEMATICAL BOLD CAPITAL S - # <font> 0053 latin capital letter s -1D413 MATHEMATICAL BOLD CAPITAL T - # <font> 0054 latin capital letter t -1D414 MATHEMATICAL BOLD CAPITAL U - # <font> 0055 latin capital letter u -1D415 MATHEMATICAL BOLD CAPITAL V - # <font> 0056 latin capital letter v -1D416 MATHEMATICAL BOLD CAPITAL W - # <font> 0057 latin capital letter w -1D417 MATHEMATICAL BOLD CAPITAL X - # <font> 0058 latin capital letter x -1D418 MATHEMATICAL BOLD CAPITAL Y - # <font> 0059 latin capital letter y -1D419 MATHEMATICAL BOLD CAPITAL Z - # <font> 005A latin capital letter z -1D41A MATHEMATICAL BOLD SMALL A - # <font> 0061 latin small letter a -1D41B MATHEMATICAL BOLD SMALL B - # <font> 0062 latin small letter b -1D41C MATHEMATICAL BOLD SMALL C - # <font> 0063 latin small letter c -1D41D MATHEMATICAL BOLD SMALL D - # <font> 0064 latin small letter d -1D41E MATHEMATICAL BOLD SMALL E - # <font> 0065 latin small letter e -1D41F MATHEMATICAL BOLD SMALL F - # <font> 0066 latin small letter f -1D420 MATHEMATICAL BOLD SMALL G - # <font> 0067 latin small letter g -1D421 MATHEMATICAL BOLD SMALL H - # <font> 0068 latin small letter h -1D422 MATHEMATICAL BOLD SMALL I - # <font> 0069 latin small letter i -1D423 MATHEMATICAL BOLD SMALL J - # <font> 006A latin small letter j -1D424 MATHEMATICAL BOLD SMALL K - # <font> 006B latin small letter k -1D425 MATHEMATICAL BOLD SMALL L - # <font> 006C latin small letter l -1D426 MATHEMATICAL BOLD SMALL M - # <font> 006D latin small letter m -1D427 MATHEMATICAL BOLD SMALL N - # <font> 006E latin small letter n -1D428 MATHEMATICAL BOLD SMALL O - # <font> 006F latin small letter o -1D429 MATHEMATICAL BOLD SMALL P - # <font> 0070 latin small letter p -1D42A MATHEMATICAL BOLD SMALL Q - # <font> 0071 latin small letter q -1D42B MATHEMATICAL BOLD SMALL R - # <font> 0072 latin small letter r -1D42C MATHEMATICAL BOLD SMALL S - # <font> 0073 latin small letter s -1D42D MATHEMATICAL BOLD SMALL T - # <font> 0074 latin small letter t -1D42E MATHEMATICAL BOLD SMALL U - # <font> 0075 latin small letter u -1D42F MATHEMATICAL BOLD SMALL V - # <font> 0076 latin small letter v -1D430 MATHEMATICAL BOLD SMALL W - # <font> 0077 latin small letter w -1D431 MATHEMATICAL BOLD SMALL X - # <font> 0078 latin small letter x -1D432 MATHEMATICAL BOLD SMALL Y - # <font> 0079 latin small letter y -1D433 MATHEMATICAL BOLD SMALL Z - # <font> 007A latin small letter z -@ Italic symbols -@+ Several italic symbols have been previously coded in the Letterlike Symbols block and are retained there to ensure unambiguous representation. -1D434 MATHEMATICAL ITALIC CAPITAL A - # <font> 0041 latin capital letter a -1D435 MATHEMATICAL ITALIC CAPITAL B - # <font> 0042 latin capital letter b -1D436 MATHEMATICAL ITALIC CAPITAL C - # <font> 0043 latin capital letter c -1D437 MATHEMATICAL ITALIC CAPITAL D - # <font> 0044 latin capital letter d -1D438 MATHEMATICAL ITALIC CAPITAL E - # <font> 0045 latin capital letter e -1D439 MATHEMATICAL ITALIC CAPITAL F - # <font> 0046 latin capital letter f -1D43A MATHEMATICAL ITALIC CAPITAL G - # <font> 0047 latin capital letter g -1D43B MATHEMATICAL ITALIC CAPITAL H - # <font> 0048 latin capital letter h -1D43C MATHEMATICAL ITALIC CAPITAL I - # <font> 0049 latin capital letter i -1D43D MATHEMATICAL ITALIC CAPITAL J - # <font> 004A latin capital letter j -1D43E MATHEMATICAL ITALIC CAPITAL K - # <font> 004B latin capital letter k -1D43F MATHEMATICAL ITALIC CAPITAL L - # <font> 004C latin capital letter l -1D440 MATHEMATICAL ITALIC CAPITAL M - # <font> 004D latin capital letter m -1D441 MATHEMATICAL ITALIC CAPITAL N - # <font> 004E latin capital letter n -1D442 MATHEMATICAL ITALIC CAPITAL O - # <font> 004F latin capital letter o -1D443 MATHEMATICAL ITALIC CAPITAL P - # <font> 0050 latin capital letter p -1D444 MATHEMATICAL ITALIC CAPITAL Q - # <font> 0051 latin capital letter q -1D445 MATHEMATICAL ITALIC CAPITAL R - # <font> 0052 latin capital letter r -1D446 MATHEMATICAL ITALIC CAPITAL S - # <font> 0053 latin capital letter s -1D447 MATHEMATICAL ITALIC CAPITAL T - # <font> 0054 latin capital letter t -1D448 MATHEMATICAL ITALIC CAPITAL U - # <font> 0055 latin capital letter u -1D449 MATHEMATICAL ITALIC CAPITAL V - # <font> 0056 latin capital letter v -1D44A MATHEMATICAL ITALIC CAPITAL W - # <font> 0057 latin capital letter w -1D44B MATHEMATICAL ITALIC CAPITAL X - # <font> 0058 latin capital letter x -1D44C MATHEMATICAL ITALIC CAPITAL Y - # <font> 0059 latin capital letter y -1D44D MATHEMATICAL ITALIC CAPITAL Z - # <font> 005A latin capital letter z -1D44E MATHEMATICAL ITALIC SMALL A - # <font> 0061 latin small letter a -1D44F MATHEMATICAL ITALIC SMALL B - # <font> 0062 latin small letter b -1D450 MATHEMATICAL ITALIC SMALL C - # <font> 0063 latin small letter c -1D451 MATHEMATICAL ITALIC SMALL D - # <font> 0064 latin small letter d -1D452 MATHEMATICAL ITALIC SMALL E - # <font> 0065 latin small letter e -1D453 MATHEMATICAL ITALIC SMALL F - # <font> 0066 latin small letter f -1D454 MATHEMATICAL ITALIC SMALL G - # <font> 0067 latin small letter g -1D455 <reserved> - x (planck constant - 210E) -1D456 MATHEMATICAL ITALIC SMALL I - # <font> 0069 latin small letter i -1D457 MATHEMATICAL ITALIC SMALL J - # <font> 006A latin small letter j -1D458 MATHEMATICAL ITALIC SMALL K - # <font> 006B latin small letter k -1D459 MATHEMATICAL ITALIC SMALL L - # <font> 006C latin small letter l -1D45A MATHEMATICAL ITALIC SMALL M - # <font> 006D latin small letter m -1D45B MATHEMATICAL ITALIC SMALL N - # <font> 006E latin small letter n -1D45C MATHEMATICAL ITALIC SMALL O - # <font> 006F latin small letter o -1D45D MATHEMATICAL ITALIC SMALL P - # <font> 0070 latin small letter p -1D45E MATHEMATICAL ITALIC SMALL Q - # <font> 0071 latin small letter q -1D45F MATHEMATICAL ITALIC SMALL R - # <font> 0072 latin small letter r -1D460 MATHEMATICAL ITALIC SMALL S - # <font> 0073 latin small letter s -1D461 MATHEMATICAL ITALIC SMALL T - # <font> 0074 latin small letter t -1D462 MATHEMATICAL ITALIC SMALL U - # <font> 0075 latin small letter u -1D463 MATHEMATICAL ITALIC SMALL V - # <font> 0076 latin small letter v -1D464 MATHEMATICAL ITALIC SMALL W - # <font> 0077 latin small letter w -1D465 MATHEMATICAL ITALIC SMALL X - # <font> 0078 latin small letter x -1D466 MATHEMATICAL ITALIC SMALL Y - # <font> 0079 latin small letter y -1D467 MATHEMATICAL ITALIC SMALL Z - # <font> 007A latin small letter z -@ Bold italic symbols -1D468 MATHEMATICAL BOLD ITALIC CAPITAL A - # <font> 0041 latin capital letter a -1D469 MATHEMATICAL BOLD ITALIC CAPITAL B - # <font> 0042 latin capital letter b -1D46A MATHEMATICAL BOLD ITALIC CAPITAL C - # <font> 0043 latin capital letter c -1D46B MATHEMATICAL BOLD ITALIC CAPITAL D - # <font> 0044 latin capital letter d -1D46C MATHEMATICAL BOLD ITALIC CAPITAL E - # <font> 0045 latin capital letter e -1D46D MATHEMATICAL BOLD ITALIC CAPITAL F - # <font> 0046 latin capital letter f -1D46E MATHEMATICAL BOLD ITALIC CAPITAL G - # <font> 0047 latin capital letter g -1D46F MATHEMATICAL BOLD ITALIC CAPITAL H - # <font> 0048 latin capital letter h -1D470 MATHEMATICAL BOLD ITALIC CAPITAL I - # <font> 0049 latin capital letter i -1D471 MATHEMATICAL BOLD ITALIC CAPITAL J - # <font> 004A latin capital letter j -1D472 MATHEMATICAL BOLD ITALIC CAPITAL K - # <font> 004B latin capital letter k -1D473 MATHEMATICAL BOLD ITALIC CAPITAL L - # <font> 004C latin capital letter l -1D474 MATHEMATICAL BOLD ITALIC CAPITAL M - # <font> 004D latin capital letter m -1D475 MATHEMATICAL BOLD ITALIC CAPITAL N - # <font> 004E latin capital letter n -1D476 MATHEMATICAL BOLD ITALIC CAPITAL O - # <font> 004F latin capital letter o -1D477 MATHEMATICAL BOLD ITALIC CAPITAL P - # <font> 0050 latin capital letter p -1D478 MATHEMATICAL BOLD ITALIC CAPITAL Q - # <font> 0051 latin capital letter q -1D479 MATHEMATICAL BOLD ITALIC CAPITAL R - # <font> 0052 latin capital letter r -1D47A MATHEMATICAL BOLD ITALIC CAPITAL S - # <font> 0053 latin capital letter s -1D47B MATHEMATICAL BOLD ITALIC CAPITAL T - # <font> 0054 latin capital letter t -1D47C MATHEMATICAL BOLD ITALIC CAPITAL U - # <font> 0055 latin capital letter u -1D47D MATHEMATICAL BOLD ITALIC CAPITAL V - # <font> 0056 latin capital letter v -1D47E MATHEMATICAL BOLD ITALIC CAPITAL W - # <font> 0057 latin capital letter w -1D47F MATHEMATICAL BOLD ITALIC CAPITAL X - # <font> 0058 latin capital letter x -1D480 MATHEMATICAL BOLD ITALIC CAPITAL Y - # <font> 0059 latin capital letter y -1D481 MATHEMATICAL BOLD ITALIC CAPITAL Z - # <font> 005A latin capital letter z -1D482 MATHEMATICAL BOLD ITALIC SMALL A - # <font> 0061 latin small letter a -1D483 MATHEMATICAL BOLD ITALIC SMALL B - # <font> 0062 latin small letter b -1D484 MATHEMATICAL BOLD ITALIC SMALL C - # <font> 0063 latin small letter c -1D485 MATHEMATICAL BOLD ITALIC SMALL D - # <font> 0064 latin small letter d -1D486 MATHEMATICAL BOLD ITALIC SMALL E - # <font> 0065 latin small letter e -1D487 MATHEMATICAL BOLD ITALIC SMALL F - # <font> 0066 latin small letter f -1D488 MATHEMATICAL BOLD ITALIC SMALL G - # <font> 0067 latin small letter g -1D489 MATHEMATICAL BOLD ITALIC SMALL H - # <font> 0068 latin small letter h -1D48A MATHEMATICAL BOLD ITALIC SMALL I - # <font> 0069 latin small letter i -1D48B MATHEMATICAL BOLD ITALIC SMALL J - # <font> 006A latin small letter j -1D48C MATHEMATICAL BOLD ITALIC SMALL K - # <font> 006B latin small letter k -1D48D MATHEMATICAL BOLD ITALIC SMALL L - # <font> 006C latin small letter l -1D48E MATHEMATICAL BOLD ITALIC SMALL M - # <font> 006D latin small letter m -1D48F MATHEMATICAL BOLD ITALIC SMALL N - # <font> 006E latin small letter n -1D490 MATHEMATICAL BOLD ITALIC SMALL O - # <font> 006F latin small letter o -1D491 MATHEMATICAL BOLD ITALIC SMALL P - # <font> 0070 latin small letter p -1D492 MATHEMATICAL BOLD ITALIC SMALL Q - # <font> 0071 latin small letter q -1D493 MATHEMATICAL BOLD ITALIC SMALL R - # <font> 0072 latin small letter r -1D494 MATHEMATICAL BOLD ITALIC SMALL S - # <font> 0073 latin small letter s -1D495 MATHEMATICAL BOLD ITALIC SMALL T - # <font> 0074 latin small letter t -1D496 MATHEMATICAL BOLD ITALIC SMALL U - # <font> 0075 latin small letter u -1D497 MATHEMATICAL BOLD ITALIC SMALL V - # <font> 0076 latin small letter v -1D498 MATHEMATICAL BOLD ITALIC SMALL W - # <font> 0077 latin small letter w -1D499 MATHEMATICAL BOLD ITALIC SMALL X - # <font> 0078 latin small letter x -1D49A MATHEMATICAL BOLD ITALIC SMALL Y - # <font> 0079 latin small letter y -1D49B MATHEMATICAL BOLD ITALIC SMALL Z - # <font> 007A latin small letter z -@ Script symbols -@+ Several script symbols have been previously coded in the Letterlike Symbols block and are retained there to ensure unambiguous representation. -1D49C MATHEMATICAL SCRIPT CAPITAL A - # <font> 0041 latin capital letter a -1D49D <reserved> - x (script capital b - 212C) -1D49E MATHEMATICAL SCRIPT CAPITAL C - # <font> 0043 latin capital letter c -1D49F MATHEMATICAL SCRIPT CAPITAL D - # <font> 0044 latin capital letter d -1D4A0 <reserved> - x (script capital e - 2130) -1D4A1 <reserved> - x (script capital f - 2131) -1D4A2 MATHEMATICAL SCRIPT CAPITAL G - # <font> 0047 latin capital letter g -1D4A3 <reserved> - x (script capital h - 210B) -1D4A4 <reserved> - x (script capital i - 2110) -1D4A5 MATHEMATICAL SCRIPT CAPITAL J - # <font> 004A latin capital letter j -1D4A6 MATHEMATICAL SCRIPT CAPITAL K - # <font> 004B latin capital letter k -1D4A7 <reserved> - x (script capital l - 2112) -1D4A8 <reserved> - x (script capital m - 2133) -1D4A9 MATHEMATICAL SCRIPT CAPITAL N - # <font> 004E latin capital letter n -1D4AA MATHEMATICAL SCRIPT CAPITAL O - # <font> 004F latin capital letter o -1D4AB MATHEMATICAL SCRIPT CAPITAL P - = power set - # <font> 0050 latin capital letter p -1D4AC MATHEMATICAL SCRIPT CAPITAL Q - # <font> 0051 latin capital letter q -1D4AD <reserved> - x (script capital r - 211B) -1D4AE MATHEMATICAL SCRIPT CAPITAL S - # <font> 0053 latin capital letter s -1D4AF MATHEMATICAL SCRIPT CAPITAL T - # <font> 0054 latin capital letter t -1D4B0 MATHEMATICAL SCRIPT CAPITAL U - # <font> 0055 latin capital letter u -1D4B1 MATHEMATICAL SCRIPT CAPITAL V - # <font> 0056 latin capital letter v -1D4B2 MATHEMATICAL SCRIPT CAPITAL W - # <font> 0057 latin capital letter w -1D4B3 MATHEMATICAL SCRIPT CAPITAL X - # <font> 0058 latin capital letter x -1D4B4 MATHEMATICAL SCRIPT CAPITAL Y - # <font> 0059 latin capital letter y -1D4B5 MATHEMATICAL SCRIPT CAPITAL Z - # <font> 005A latin capital letter z -1D4B6 MATHEMATICAL SCRIPT SMALL A - # <font> 0061 latin small letter a -1D4B7 MATHEMATICAL SCRIPT SMALL B - # <font> 0062 latin small letter b -1D4B8 MATHEMATICAL SCRIPT SMALL C - # <font> 0063 latin small letter c -1D4B9 MATHEMATICAL SCRIPT SMALL D - # <font> 0064 latin small letter d -1D4BA <reserved> - x (script small e - 212F) -1D4BB MATHEMATICAL SCRIPT SMALL F - # <font> 0066 latin small letter f -1D4BC <reserved> - x (script small g - 210A) -1D4BD MATHEMATICAL SCRIPT SMALL H - # <font> 0068 latin small letter h -1D4BE MATHEMATICAL SCRIPT SMALL I - # <font> 0069 latin small letter i -1D4BF MATHEMATICAL SCRIPT SMALL J - # <font> 006A latin small letter j -1D4C0 MATHEMATICAL SCRIPT SMALL K - # <font> 006B latin small letter k -1D4C1 MATHEMATICAL SCRIPT SMALL L - x (script small l - 2113) - # <font> 006C latin small letter l -1D4C2 MATHEMATICAL SCRIPT SMALL M - # <font> 006D latin small letter m -1D4C3 MATHEMATICAL SCRIPT SMALL N - # <font> 006E latin small letter n -1D4C4 <reserved> - x (script small o - 2134) -1D4C5 MATHEMATICAL SCRIPT SMALL P - # <font> 0070 latin small letter p -1D4C6 MATHEMATICAL SCRIPT SMALL Q - # <font> 0071 latin small letter q -1D4C7 MATHEMATICAL SCRIPT SMALL R - # <font> 0072 latin small letter r -1D4C8 MATHEMATICAL SCRIPT SMALL S - # <font> 0073 latin small letter s -1D4C9 MATHEMATICAL SCRIPT SMALL T - # <font> 0074 latin small letter t -1D4CA MATHEMATICAL SCRIPT SMALL U - # <font> 0075 latin small letter u -1D4CB MATHEMATICAL SCRIPT SMALL V - # <font> 0076 latin small letter v -1D4CC MATHEMATICAL SCRIPT SMALL W - # <font> 0077 latin small letter w -1D4CD MATHEMATICAL SCRIPT SMALL X - # <font> 0078 latin small letter x -1D4CE MATHEMATICAL SCRIPT SMALL Y - # <font> 0079 latin small letter y -1D4CF MATHEMATICAL SCRIPT SMALL Z - # <font> 007A latin small letter z -@ Bold script symbols -1D4D0 MATHEMATICAL BOLD SCRIPT CAPITAL A - # <font> 0041 latin capital letter a -1D4D1 MATHEMATICAL BOLD SCRIPT CAPITAL B - # <font> 0042 latin capital letter b -1D4D2 MATHEMATICAL BOLD SCRIPT CAPITAL C - # <font> 0043 latin capital letter c -1D4D3 MATHEMATICAL BOLD SCRIPT CAPITAL D - # <font> 0044 latin capital letter d -1D4D4 MATHEMATICAL BOLD SCRIPT CAPITAL E - # <font> 0045 latin capital letter e -1D4D5 MATHEMATICAL BOLD SCRIPT CAPITAL F - # <font> 0046 latin capital letter f -1D4D6 MATHEMATICAL BOLD SCRIPT CAPITAL G - # <font> 0047 latin capital letter g -1D4D7 MATHEMATICAL BOLD SCRIPT CAPITAL H - # <font> 0048 latin capital letter h -1D4D8 MATHEMATICAL BOLD SCRIPT CAPITAL I - # <font> 0049 latin capital letter i -1D4D9 MATHEMATICAL BOLD SCRIPT CAPITAL J - # <font> 004A latin capital letter j -1D4DA MATHEMATICAL BOLD SCRIPT CAPITAL K - # <font> 004B latin capital letter k -1D4DB MATHEMATICAL BOLD SCRIPT CAPITAL L - # <font> 004C latin capital letter l -1D4DC MATHEMATICAL BOLD SCRIPT CAPITAL M - # <font> 004D latin capital letter m -1D4DD MATHEMATICAL BOLD SCRIPT CAPITAL N - # <font> 004E latin capital letter n -1D4DE MATHEMATICAL BOLD SCRIPT CAPITAL O - # <font> 004F latin capital letter o -1D4DF MATHEMATICAL BOLD SCRIPT CAPITAL P - # <font> 0050 latin capital letter p -1D4E0 MATHEMATICAL BOLD SCRIPT CAPITAL Q - # <font> 0051 latin capital letter q -1D4E1 MATHEMATICAL BOLD SCRIPT CAPITAL R - # <font> 0052 latin capital letter r -1D4E2 MATHEMATICAL BOLD SCRIPT CAPITAL S - # <font> 0053 latin capital letter s -1D4E3 MATHEMATICAL BOLD SCRIPT CAPITAL T - # <font> 0054 latin capital letter t -1D4E4 MATHEMATICAL BOLD SCRIPT CAPITAL U - # <font> 0055 latin capital letter u -1D4E5 MATHEMATICAL BOLD SCRIPT CAPITAL V - # <font> 0056 latin capital letter v -1D4E6 MATHEMATICAL BOLD SCRIPT CAPITAL W - # <font> 0057 latin capital letter w -1D4E7 MATHEMATICAL BOLD SCRIPT CAPITAL X - # <font> 0058 latin capital letter x -1D4E8 MATHEMATICAL BOLD SCRIPT CAPITAL Y - # <font> 0059 latin capital letter y -1D4E9 MATHEMATICAL BOLD SCRIPT CAPITAL Z - # <font> 005A latin capital letter z -1D4EA MATHEMATICAL BOLD SCRIPT SMALL A - # <font> 0061 latin small letter a -1D4EB MATHEMATICAL BOLD SCRIPT SMALL B - # <font> 0062 latin small letter b -1D4EC MATHEMATICAL BOLD SCRIPT SMALL C - # <font> 0063 latin small letter c -1D4ED MATHEMATICAL BOLD SCRIPT SMALL D - # <font> 0064 latin small letter d -1D4EE MATHEMATICAL BOLD SCRIPT SMALL E - # <font> 0065 latin small letter e -1D4EF MATHEMATICAL BOLD SCRIPT SMALL F - # <font> 0066 latin small letter f -1D4F0 MATHEMATICAL BOLD SCRIPT SMALL G - # <font> 0067 latin small letter g -1D4F1 MATHEMATICAL BOLD SCRIPT SMALL H - # <font> 0068 latin small letter h -1D4F2 MATHEMATICAL BOLD SCRIPT SMALL I - # <font> 0069 latin small letter i -1D4F3 MATHEMATICAL BOLD SCRIPT SMALL J - # <font> 006A latin small letter j -1D4F4 MATHEMATICAL BOLD SCRIPT SMALL K - # <font> 006B latin small letter k -1D4F5 MATHEMATICAL BOLD SCRIPT SMALL L - # <font> 006C latin small letter l -1D4F6 MATHEMATICAL BOLD SCRIPT SMALL M - # <font> 006D latin small letter m -1D4F7 MATHEMATICAL BOLD SCRIPT SMALL N - # <font> 006E latin small letter n -1D4F8 MATHEMATICAL BOLD SCRIPT SMALL O - # <font> 006F latin small letter o -1D4F9 MATHEMATICAL BOLD SCRIPT SMALL P - # <font> 0070 latin small letter p -1D4FA MATHEMATICAL BOLD SCRIPT SMALL Q - # <font> 0071 latin small letter q -1D4FB MATHEMATICAL BOLD SCRIPT SMALL R - # <font> 0072 latin small letter r -1D4FC MATHEMATICAL BOLD SCRIPT SMALL S - # <font> 0073 latin small letter s -1D4FD MATHEMATICAL BOLD SCRIPT SMALL T - # <font> 0074 latin small letter t -1D4FE MATHEMATICAL BOLD SCRIPT SMALL U - # <font> 0075 latin small letter u -1D4FF MATHEMATICAL BOLD SCRIPT SMALL V - # <font> 0076 latin small letter v -1D500 MATHEMATICAL BOLD SCRIPT SMALL W - # <font> 0077 latin small letter w -1D501 MATHEMATICAL BOLD SCRIPT SMALL X - # <font> 0078 latin small letter x -1D502 MATHEMATICAL BOLD SCRIPT SMALL Y - # <font> 0079 latin small letter y -1D503 MATHEMATICAL BOLD SCRIPT SMALL Z - # <font> 007A latin small letter z -@ Fraktur symbols -@+ This style is sometimes known as black-letter. Several black-letter symbols have been previously coded in the Letterlike Symbols block and are retained there to ensure unambiguous representation. -1D504 MATHEMATICAL FRAKTUR CAPITAL A - # <font> 0041 latin capital letter a -1D505 MATHEMATICAL FRAKTUR CAPITAL B - # <font> 0042 latin capital letter b -1D506 <reserved> - x (black-letter capital c - 212D) -1D507 MATHEMATICAL FRAKTUR CAPITAL D - # <font> 0044 latin capital letter d -1D508 MATHEMATICAL FRAKTUR CAPITAL E - # <font> 0045 latin capital letter e -1D509 MATHEMATICAL FRAKTUR CAPITAL F - # <font> 0046 latin capital letter f -1D50A MATHEMATICAL FRAKTUR CAPITAL G - # <font> 0047 latin capital letter g -1D50B <reserved> - x (black-letter capital h - 210C) -1D50C <reserved> - x (black-letter capital i - 2111) -1D50D MATHEMATICAL FRAKTUR CAPITAL J - # <font> 004A latin capital letter j -1D50E MATHEMATICAL FRAKTUR CAPITAL K - # <font> 004B latin capital letter k -1D50F MATHEMATICAL FRAKTUR CAPITAL L - # <font> 004C latin capital letter l -1D510 MATHEMATICAL FRAKTUR CAPITAL M - = New Testament majority text - # <font> 004D latin capital letter m -1D511 MATHEMATICAL FRAKTUR CAPITAL N - # <font> 004E latin capital letter n -1D512 MATHEMATICAL FRAKTUR CAPITAL O - # <font> 004F latin capital letter o -1D513 MATHEMATICAL FRAKTUR CAPITAL P - # <font> 0050 latin capital letter p -1D514 MATHEMATICAL FRAKTUR CAPITAL Q - # <font> 0051 latin capital letter q -1D515 <reserved> - x (black-letter capital r - 211C) -1D516 MATHEMATICAL FRAKTUR CAPITAL S - = Septuagint, Greek Old Testament - # <font> 0053 latin capital letter s -1D517 MATHEMATICAL FRAKTUR CAPITAL T - # <font> 0054 latin capital letter t -1D518 MATHEMATICAL FRAKTUR CAPITAL U - # <font> 0055 latin capital letter u -1D519 MATHEMATICAL FRAKTUR CAPITAL V - # <font> 0056 latin capital letter v -1D51A MATHEMATICAL FRAKTUR CAPITAL W - # <font> 0057 latin capital letter w -1D51B MATHEMATICAL FRAKTUR CAPITAL X - # <font> 0058 latin capital letter x -1D51C MATHEMATICAL FRAKTUR CAPITAL Y - # <font> 0059 latin capital letter y -1D51D <reserved> - x (black-letter capital z - 2128) -1D51E MATHEMATICAL FRAKTUR SMALL A - # <font> 0061 latin small letter a -1D51F MATHEMATICAL FRAKTUR SMALL B - # <font> 0062 latin small letter b -1D520 MATHEMATICAL FRAKTUR SMALL C - # <font> 0063 latin small letter c -1D521 MATHEMATICAL FRAKTUR SMALL D - # <font> 0064 latin small letter d -1D522 MATHEMATICAL FRAKTUR SMALL E - # <font> 0065 latin small letter e -1D523 MATHEMATICAL FRAKTUR SMALL F - # <font> 0066 latin small letter f -1D524 MATHEMATICAL FRAKTUR SMALL G - # <font> 0067 latin small letter g -1D525 MATHEMATICAL FRAKTUR SMALL H - # <font> 0068 latin small letter h -1D526 MATHEMATICAL FRAKTUR SMALL I - # <font> 0069 latin small letter i -1D527 MATHEMATICAL FRAKTUR SMALL J - # <font> 006A latin small letter j -1D528 MATHEMATICAL FRAKTUR SMALL K - # <font> 006B latin small letter k -1D529 MATHEMATICAL FRAKTUR SMALL L - # <font> 006C latin small letter l -1D52A MATHEMATICAL FRAKTUR SMALL M - # <font> 006D latin small letter m -1D52B MATHEMATICAL FRAKTUR SMALL N - # <font> 006E latin small letter n -1D52C MATHEMATICAL FRAKTUR SMALL O - # <font> 006F latin small letter o -1D52D MATHEMATICAL FRAKTUR SMALL P - # <font> 0070 latin small letter p -1D52E MATHEMATICAL FRAKTUR SMALL Q - # <font> 0071 latin small letter q -1D52F MATHEMATICAL FRAKTUR SMALL R - # <font> 0072 latin small letter r -1D530 MATHEMATICAL FRAKTUR SMALL S - # <font> 0073 latin small letter s -1D531 MATHEMATICAL FRAKTUR SMALL T - # <font> 0074 latin small letter t -1D532 MATHEMATICAL FRAKTUR SMALL U - # <font> 0075 latin small letter u -1D533 MATHEMATICAL FRAKTUR SMALL V - # <font> 0076 latin small letter v -1D534 MATHEMATICAL FRAKTUR SMALL W - # <font> 0077 latin small letter w -1D535 MATHEMATICAL FRAKTUR SMALL X - # <font> 0078 latin small letter x -1D536 MATHEMATICAL FRAKTUR SMALL Y - # <font> 0079 latin small letter y -1D537 MATHEMATICAL FRAKTUR SMALL Z - # <font> 007A latin small letter z -@ Double-struck symbols -@+ This style is sometimes known as open-face or blackboard-bold. Several double-struck symbols have been previously coded in the Letterlike Symbols block and are retained there to ensure unambiguous representation. -1D538 MATHEMATICAL DOUBLE-STRUCK CAPITAL A - # <font> 0041 latin capital letter a -1D539 MATHEMATICAL DOUBLE-STRUCK CAPITAL B - # <font> 0042 latin capital letter b -1D53A <reserved> - x (double-struck capital c - 2102) -1D53B MATHEMATICAL DOUBLE-STRUCK CAPITAL D - # <font> 0044 latin capital letter d -1D53C MATHEMATICAL DOUBLE-STRUCK CAPITAL E - # <font> 0045 latin capital letter e -1D53D MATHEMATICAL DOUBLE-STRUCK CAPITAL F - # <font> 0046 latin capital letter f -1D53E MATHEMATICAL DOUBLE-STRUCK CAPITAL G - # <font> 0047 latin capital letter g -1D53F <reserved> - x (double-struck capital h - 210D) -1D540 MATHEMATICAL DOUBLE-STRUCK CAPITAL I - # <font> 0049 latin capital letter i -1D541 MATHEMATICAL DOUBLE-STRUCK CAPITAL J - # <font> 004A latin capital letter j -1D542 MATHEMATICAL DOUBLE-STRUCK CAPITAL K - # <font> 004B latin capital letter k -1D543 MATHEMATICAL DOUBLE-STRUCK CAPITAL L - # <font> 004C latin capital letter l -1D544 MATHEMATICAL DOUBLE-STRUCK CAPITAL M - # <font> 004D latin capital letter m -1D545 <reserved> - x (double-struck capital n - 2115) -1D546 MATHEMATICAL DOUBLE-STRUCK CAPITAL O - # <font> 004F latin capital letter o -1D547 <reserved> - x (double-struck capital p - 2119) -1D548 <reserved> - x (double-struck capital q - 211A) -1D549 <reserved> - x (double-struck capital r - 211D) -1D54A MATHEMATICAL DOUBLE-STRUCK CAPITAL S - # <font> 0053 latin capital letter s -1D54B MATHEMATICAL DOUBLE-STRUCK CAPITAL T - # <font> 0054 latin capital letter t -1D54C MATHEMATICAL DOUBLE-STRUCK CAPITAL U - # <font> 0055 latin capital letter u -1D54D MATHEMATICAL DOUBLE-STRUCK CAPITAL V - # <font> 0056 latin capital letter v -1D54E MATHEMATICAL DOUBLE-STRUCK CAPITAL W - # <font> 0057 latin capital letter w -1D54F MATHEMATICAL DOUBLE-STRUCK CAPITAL X - # <font> 0058 latin capital letter x -1D550 MATHEMATICAL DOUBLE-STRUCK CAPITAL Y - # <font> 0059 latin capital letter y -1D551 <reserved> - x (double-struck capital z - 2124) -1D552 MATHEMATICAL DOUBLE-STRUCK SMALL A - # <font> 0061 latin small letter a -1D553 MATHEMATICAL DOUBLE-STRUCK SMALL B - # <font> 0062 latin small letter b -1D554 MATHEMATICAL DOUBLE-STRUCK SMALL C - # <font> 0063 latin small letter c -1D555 MATHEMATICAL DOUBLE-STRUCK SMALL D - # <font> 0064 latin small letter d -1D556 MATHEMATICAL DOUBLE-STRUCK SMALL E - # <font> 0065 latin small letter e -1D557 MATHEMATICAL DOUBLE-STRUCK SMALL F - # <font> 0066 latin small letter f -1D558 MATHEMATICAL DOUBLE-STRUCK SMALL G - # <font> 0067 latin small letter g -1D559 MATHEMATICAL DOUBLE-STRUCK SMALL H - # <font> 0068 latin small letter h -1D55A MATHEMATICAL DOUBLE-STRUCK SMALL I - # <font> 0069 latin small letter i -1D55B MATHEMATICAL DOUBLE-STRUCK SMALL J - # <font> 006A latin small letter j -1D55C MATHEMATICAL DOUBLE-STRUCK SMALL K - # <font> 006B latin small letter k -1D55D MATHEMATICAL DOUBLE-STRUCK SMALL L - # <font> 006C latin small letter l -1D55E MATHEMATICAL DOUBLE-STRUCK SMALL M - # <font> 006D latin small letter m -1D55F MATHEMATICAL DOUBLE-STRUCK SMALL N - # <font> 006E latin small letter n -1D560 MATHEMATICAL DOUBLE-STRUCK SMALL O - # <font> 006F latin small letter o -1D561 MATHEMATICAL DOUBLE-STRUCK SMALL P - # <font> 0070 latin small letter p -1D562 MATHEMATICAL DOUBLE-STRUCK SMALL Q - # <font> 0071 latin small letter q -1D563 MATHEMATICAL DOUBLE-STRUCK SMALL R - # <font> 0072 latin small letter r -1D564 MATHEMATICAL DOUBLE-STRUCK SMALL S - # <font> 0073 latin small letter s -1D565 MATHEMATICAL DOUBLE-STRUCK SMALL T - # <font> 0074 latin small letter t -1D566 MATHEMATICAL DOUBLE-STRUCK SMALL U - # <font> 0075 latin small letter u -1D567 MATHEMATICAL DOUBLE-STRUCK SMALL V - # <font> 0076 latin small letter v -1D568 MATHEMATICAL DOUBLE-STRUCK SMALL W - # <font> 0077 latin small letter w -1D569 MATHEMATICAL DOUBLE-STRUCK SMALL X - # <font> 0078 latin small letter x -1D56A MATHEMATICAL DOUBLE-STRUCK SMALL Y - # <font> 0079 latin small letter y -1D56B MATHEMATICAL DOUBLE-STRUCK SMALL Z - # <font> 007A latin small letter z -@ Bold Fraktur symbols -1D56C MATHEMATICAL BOLD FRAKTUR CAPITAL A - # <font> 0041 latin capital letter a -1D56D MATHEMATICAL BOLD FRAKTUR CAPITAL B - # <font> 0042 latin capital letter b -1D56E MATHEMATICAL BOLD FRAKTUR CAPITAL C - # <font> 0043 latin capital letter c -1D56F MATHEMATICAL BOLD FRAKTUR CAPITAL D - # <font> 0044 latin capital letter d -1D570 MATHEMATICAL BOLD FRAKTUR CAPITAL E - # <font> 0045 latin capital letter e -1D571 MATHEMATICAL BOLD FRAKTUR CAPITAL F - # <font> 0046 latin capital letter f -1D572 MATHEMATICAL BOLD FRAKTUR CAPITAL G - # <font> 0047 latin capital letter g -1D573 MATHEMATICAL BOLD FRAKTUR CAPITAL H - # <font> 0048 latin capital letter h -1D574 MATHEMATICAL BOLD FRAKTUR CAPITAL I - # <font> 0049 latin capital letter i -1D575 MATHEMATICAL BOLD FRAKTUR CAPITAL J - # <font> 004A latin capital letter j -1D576 MATHEMATICAL BOLD FRAKTUR CAPITAL K - # <font> 004B latin capital letter k -1D577 MATHEMATICAL BOLD FRAKTUR CAPITAL L - # <font> 004C latin capital letter l -1D578 MATHEMATICAL BOLD FRAKTUR CAPITAL M - # <font> 004D latin capital letter m -1D579 MATHEMATICAL BOLD FRAKTUR CAPITAL N - # <font> 004E latin capital letter n -1D57A MATHEMATICAL BOLD FRAKTUR CAPITAL O - # <font> 004F latin capital letter o -1D57B MATHEMATICAL BOLD FRAKTUR CAPITAL P - # <font> 0050 latin capital letter p -1D57C MATHEMATICAL BOLD FRAKTUR CAPITAL Q - # <font> 0051 latin capital letter q -1D57D MATHEMATICAL BOLD FRAKTUR CAPITAL R - # <font> 0052 latin capital letter r -1D57E MATHEMATICAL BOLD FRAKTUR CAPITAL S - # <font> 0053 latin capital letter s -1D57F MATHEMATICAL BOLD FRAKTUR CAPITAL T - # <font> 0054 latin capital letter t -1D580 MATHEMATICAL BOLD FRAKTUR CAPITAL U - # <font> 0055 latin capital letter u -1D581 MATHEMATICAL BOLD FRAKTUR CAPITAL V - # <font> 0056 latin capital letter v -1D582 MATHEMATICAL BOLD FRAKTUR CAPITAL W - # <font> 0057 latin capital letter w -1D583 MATHEMATICAL BOLD FRAKTUR CAPITAL X - # <font> 0058 latin capital letter x -1D584 MATHEMATICAL BOLD FRAKTUR CAPITAL Y - # <font> 0059 latin capital letter y -1D585 MATHEMATICAL BOLD FRAKTUR CAPITAL Z - # <font> 005A latin capital letter z -1D586 MATHEMATICAL BOLD FRAKTUR SMALL A - # <font> 0061 latin small letter a -1D587 MATHEMATICAL BOLD FRAKTUR SMALL B - # <font> 0062 latin small letter b -1D588 MATHEMATICAL BOLD FRAKTUR SMALL C - # <font> 0063 latin small letter c -1D589 MATHEMATICAL BOLD FRAKTUR SMALL D - # <font> 0064 latin small letter d -1D58A MATHEMATICAL BOLD FRAKTUR SMALL E - # <font> 0065 latin small letter e -1D58B MATHEMATICAL BOLD FRAKTUR SMALL F - # <font> 0066 latin small letter f -1D58C MATHEMATICAL BOLD FRAKTUR SMALL G - # <font> 0067 latin small letter g -1D58D MATHEMATICAL BOLD FRAKTUR SMALL H - # <font> 0068 latin small letter h -1D58E MATHEMATICAL BOLD FRAKTUR SMALL I - # <font> 0069 latin small letter i -1D58F MATHEMATICAL BOLD FRAKTUR SMALL J - # <font> 006A latin small letter j -1D590 MATHEMATICAL BOLD FRAKTUR SMALL K - # <font> 006B latin small letter k -1D591 MATHEMATICAL BOLD FRAKTUR SMALL L - # <font> 006C latin small letter l -1D592 MATHEMATICAL BOLD FRAKTUR SMALL M - # <font> 006D latin small letter m -1D593 MATHEMATICAL BOLD FRAKTUR SMALL N - # <font> 006E latin small letter n -1D594 MATHEMATICAL BOLD FRAKTUR SMALL O - # <font> 006F latin small letter o -1D595 MATHEMATICAL BOLD FRAKTUR SMALL P - # <font> 0070 latin small letter p -1D596 MATHEMATICAL BOLD FRAKTUR SMALL Q - # <font> 0071 latin small letter q -1D597 MATHEMATICAL BOLD FRAKTUR SMALL R - # <font> 0072 latin small letter r -1D598 MATHEMATICAL BOLD FRAKTUR SMALL S - # <font> 0073 latin small letter s -1D599 MATHEMATICAL BOLD FRAKTUR SMALL T - # <font> 0074 latin small letter t -1D59A MATHEMATICAL BOLD FRAKTUR SMALL U - # <font> 0075 latin small letter u -1D59B MATHEMATICAL BOLD FRAKTUR SMALL V - # <font> 0076 latin small letter v -1D59C MATHEMATICAL BOLD FRAKTUR SMALL W - # <font> 0077 latin small letter w -1D59D MATHEMATICAL BOLD FRAKTUR SMALL X - # <font> 0078 latin small letter x -1D59E MATHEMATICAL BOLD FRAKTUR SMALL Y - # <font> 0079 latin small letter y -1D59F MATHEMATICAL BOLD FRAKTUR SMALL Z - # <font> 007A latin small letter z -@ Sans-serif symbols -1D5A0 MATHEMATICAL SANS-SERIF CAPITAL A - # <font> 0041 latin capital letter a -1D5A1 MATHEMATICAL SANS-SERIF CAPITAL B - # <font> 0042 latin capital letter b -1D5A2 MATHEMATICAL SANS-SERIF CAPITAL C - # <font> 0043 latin capital letter c -1D5A3 MATHEMATICAL SANS-SERIF CAPITAL D - # <font> 0044 latin capital letter d -1D5A4 MATHEMATICAL SANS-SERIF CAPITAL E - # <font> 0045 latin capital letter e -1D5A5 MATHEMATICAL SANS-SERIF CAPITAL F - # <font> 0046 latin capital letter f -1D5A6 MATHEMATICAL SANS-SERIF CAPITAL G - # <font> 0047 latin capital letter g -1D5A7 MATHEMATICAL SANS-SERIF CAPITAL H - # <font> 0048 latin capital letter h -1D5A8 MATHEMATICAL SANS-SERIF CAPITAL I - # <font> 0049 latin capital letter i -1D5A9 MATHEMATICAL SANS-SERIF CAPITAL J - # <font> 004A latin capital letter j -1D5AA MATHEMATICAL SANS-SERIF CAPITAL K - # <font> 004B latin capital letter k -1D5AB MATHEMATICAL SANS-SERIF CAPITAL L - # <font> 004C latin capital letter l -1D5AC MATHEMATICAL SANS-SERIF CAPITAL M - # <font> 004D latin capital letter m -1D5AD MATHEMATICAL SANS-SERIF CAPITAL N - # <font> 004E latin capital letter n -1D5AE MATHEMATICAL SANS-SERIF CAPITAL O - # <font> 004F latin capital letter o -1D5AF MATHEMATICAL SANS-SERIF CAPITAL P - # <font> 0050 latin capital letter p -1D5B0 MATHEMATICAL SANS-SERIF CAPITAL Q - # <font> 0051 latin capital letter q -1D5B1 MATHEMATICAL SANS-SERIF CAPITAL R - # <font> 0052 latin capital letter r -1D5B2 MATHEMATICAL SANS-SERIF CAPITAL S - # <font> 0053 latin capital letter s -1D5B3 MATHEMATICAL SANS-SERIF CAPITAL T - # <font> 0054 latin capital letter t -1D5B4 MATHEMATICAL SANS-SERIF CAPITAL U - # <font> 0055 latin capital letter u -1D5B5 MATHEMATICAL SANS-SERIF CAPITAL V - # <font> 0056 latin capital letter v -1D5B6 MATHEMATICAL SANS-SERIF CAPITAL W - # <font> 0057 latin capital letter w -1D5B7 MATHEMATICAL SANS-SERIF CAPITAL X - # <font> 0058 latin capital letter x -1D5B8 MATHEMATICAL SANS-SERIF CAPITAL Y - # <font> 0059 latin capital letter y -1D5B9 MATHEMATICAL SANS-SERIF CAPITAL Z - # <font> 005A latin capital letter z -1D5BA MATHEMATICAL SANS-SERIF SMALL A - # <font> 0061 latin small letter a -1D5BB MATHEMATICAL SANS-SERIF SMALL B - # <font> 0062 latin small letter b -1D5BC MATHEMATICAL SANS-SERIF SMALL C - # <font> 0063 latin small letter c -1D5BD MATHEMATICAL SANS-SERIF SMALL D - # <font> 0064 latin small letter d -1D5BE MATHEMATICAL SANS-SERIF SMALL E - # <font> 0065 latin small letter e -1D5BF MATHEMATICAL SANS-SERIF SMALL F - # <font> 0066 latin small letter f -1D5C0 MATHEMATICAL SANS-SERIF SMALL G - # <font> 0067 latin small letter g -1D5C1 MATHEMATICAL SANS-SERIF SMALL H - # <font> 0068 latin small letter h -1D5C2 MATHEMATICAL SANS-SERIF SMALL I - # <font> 0069 latin small letter i -1D5C3 MATHEMATICAL SANS-SERIF SMALL J - # <font> 006A latin small letter j -1D5C4 MATHEMATICAL SANS-SERIF SMALL K - # <font> 006B latin small letter k -1D5C5 MATHEMATICAL SANS-SERIF SMALL L - # <font> 006C latin small letter l -1D5C6 MATHEMATICAL SANS-SERIF SMALL M - # <font> 006D latin small letter m -1D5C7 MATHEMATICAL SANS-SERIF SMALL N - # <font> 006E latin small letter n -1D5C8 MATHEMATICAL SANS-SERIF SMALL O - # <font> 006F latin small letter o -1D5C9 MATHEMATICAL SANS-SERIF SMALL P - # <font> 0070 latin small letter p -1D5CA MATHEMATICAL SANS-SERIF SMALL Q - # <font> 0071 latin small letter q -1D5CB MATHEMATICAL SANS-SERIF SMALL R - # <font> 0072 latin small letter r -1D5CC MATHEMATICAL SANS-SERIF SMALL S - # <font> 0073 latin small letter s -1D5CD MATHEMATICAL SANS-SERIF SMALL T - # <font> 0074 latin small letter t -1D5CE MATHEMATICAL SANS-SERIF SMALL U - # <font> 0075 latin small letter u -1D5CF MATHEMATICAL SANS-SERIF SMALL V - # <font> 0076 latin small letter v -1D5D0 MATHEMATICAL SANS-SERIF SMALL W - # <font> 0077 latin small letter w -1D5D1 MATHEMATICAL SANS-SERIF SMALL X - # <font> 0078 latin small letter x -1D5D2 MATHEMATICAL SANS-SERIF SMALL Y - # <font> 0079 latin small letter y -1D5D3 MATHEMATICAL SANS-SERIF SMALL Z - # <font> 007A latin small letter z -@ Sans-serif bold symbols -1D5D4 MATHEMATICAL SANS-SERIF BOLD CAPITAL A - # <font> 0041 latin capital letter a -1D5D5 MATHEMATICAL SANS-SERIF BOLD CAPITAL B - # <font> 0042 latin capital letter b -1D5D6 MATHEMATICAL SANS-SERIF BOLD CAPITAL C - # <font> 0043 latin capital letter c -1D5D7 MATHEMATICAL SANS-SERIF BOLD CAPITAL D - # <font> 0044 latin capital letter d -1D5D8 MATHEMATICAL SANS-SERIF BOLD CAPITAL E - # <font> 0045 latin capital letter e -1D5D9 MATHEMATICAL SANS-SERIF BOLD CAPITAL F - # <font> 0046 latin capital letter f -1D5DA MATHEMATICAL SANS-SERIF BOLD CAPITAL G - # <font> 0047 latin capital letter g -1D5DB MATHEMATICAL SANS-SERIF BOLD CAPITAL H - # <font> 0048 latin capital letter h -1D5DC MATHEMATICAL SANS-SERIF BOLD CAPITAL I - # <font> 0049 latin capital letter i -1D5DD MATHEMATICAL SANS-SERIF BOLD CAPITAL J - # <font> 004A latin capital letter j -1D5DE MATHEMATICAL SANS-SERIF BOLD CAPITAL K - # <font> 004B latin capital letter k -1D5DF MATHEMATICAL SANS-SERIF BOLD CAPITAL L - # <font> 004C latin capital letter l -1D5E0 MATHEMATICAL SANS-SERIF BOLD CAPITAL M - # <font> 004D latin capital letter m -1D5E1 MATHEMATICAL SANS-SERIF BOLD CAPITAL N - # <font> 004E latin capital letter n -1D5E2 MATHEMATICAL SANS-SERIF BOLD CAPITAL O - # <font> 004F latin capital letter o -1D5E3 MATHEMATICAL SANS-SERIF BOLD CAPITAL P - # <font> 0050 latin capital letter p -1D5E4 MATHEMATICAL SANS-SERIF BOLD CAPITAL Q - # <font> 0051 latin capital letter q -1D5E5 MATHEMATICAL SANS-SERIF BOLD CAPITAL R - # <font> 0052 latin capital letter r -1D5E6 MATHEMATICAL SANS-SERIF BOLD CAPITAL S - # <font> 0053 latin capital letter s -1D5E7 MATHEMATICAL SANS-SERIF BOLD CAPITAL T - # <font> 0054 latin capital letter t -1D5E8 MATHEMATICAL SANS-SERIF BOLD CAPITAL U - # <font> 0055 latin capital letter u -1D5E9 MATHEMATICAL SANS-SERIF BOLD CAPITAL V - # <font> 0056 latin capital letter v -1D5EA MATHEMATICAL SANS-SERIF BOLD CAPITAL W - # <font> 0057 latin capital letter w -1D5EB MATHEMATICAL SANS-SERIF BOLD CAPITAL X - # <font> 0058 latin capital letter x -1D5EC MATHEMATICAL SANS-SERIF BOLD CAPITAL Y - # <font> 0059 latin capital letter y -1D5ED MATHEMATICAL SANS-SERIF BOLD CAPITAL Z - # <font> 005A latin capital letter z -1D5EE MATHEMATICAL SANS-SERIF BOLD SMALL A - # <font> 0061 latin small letter a -1D5EF MATHEMATICAL SANS-SERIF BOLD SMALL B - # <font> 0062 latin small letter b -1D5F0 MATHEMATICAL SANS-SERIF BOLD SMALL C - # <font> 0063 latin small letter c -1D5F1 MATHEMATICAL SANS-SERIF BOLD SMALL D - # <font> 0064 latin small letter d -1D5F2 MATHEMATICAL SANS-SERIF BOLD SMALL E - # <font> 0065 latin small letter e -1D5F3 MATHEMATICAL SANS-SERIF BOLD SMALL F - # <font> 0066 latin small letter f -1D5F4 MATHEMATICAL SANS-SERIF BOLD SMALL G - # <font> 0067 latin small letter g -1D5F5 MATHEMATICAL SANS-SERIF BOLD SMALL H - # <font> 0068 latin small letter h -1D5F6 MATHEMATICAL SANS-SERIF BOLD SMALL I - # <font> 0069 latin small letter i -1D5F7 MATHEMATICAL SANS-SERIF BOLD SMALL J - # <font> 006A latin small letter j -1D5F8 MATHEMATICAL SANS-SERIF BOLD SMALL K - # <font> 006B latin small letter k -1D5F9 MATHEMATICAL SANS-SERIF BOLD SMALL L - # <font> 006C latin small letter l -1D5FA MATHEMATICAL SANS-SERIF BOLD SMALL M - # <font> 006D latin small letter m -1D5FB MATHEMATICAL SANS-SERIF BOLD SMALL N - # <font> 006E latin small letter n -1D5FC MATHEMATICAL SANS-SERIF BOLD SMALL O - # <font> 006F latin small letter o -1D5FD MATHEMATICAL SANS-SERIF BOLD SMALL P - # <font> 0070 latin small letter p -1D5FE MATHEMATICAL SANS-SERIF BOLD SMALL Q - # <font> 0071 latin small letter q -1D5FF MATHEMATICAL SANS-SERIF BOLD SMALL R - # <font> 0072 latin small letter r -1D600 MATHEMATICAL SANS-SERIF BOLD SMALL S - # <font> 0073 latin small letter s -1D601 MATHEMATICAL SANS-SERIF BOLD SMALL T - # <font> 0074 latin small letter t -1D602 MATHEMATICAL SANS-SERIF BOLD SMALL U - # <font> 0075 latin small letter u -1D603 MATHEMATICAL SANS-SERIF BOLD SMALL V - # <font> 0076 latin small letter v -1D604 MATHEMATICAL SANS-SERIF BOLD SMALL W - # <font> 0077 latin small letter w -1D605 MATHEMATICAL SANS-SERIF BOLD SMALL X - # <font> 0078 latin small letter x -1D606 MATHEMATICAL SANS-SERIF BOLD SMALL Y - # <font> 0079 latin small letter y -1D607 MATHEMATICAL SANS-SERIF BOLD SMALL Z - # <font> 007A latin small letter z -@ Sans-serif italic symbols -1D608 MATHEMATICAL SANS-SERIF ITALIC CAPITAL A - # <font> 0041 latin capital letter a -1D609 MATHEMATICAL SANS-SERIF ITALIC CAPITAL B - # <font> 0042 latin capital letter b -1D60A MATHEMATICAL SANS-SERIF ITALIC CAPITAL C - # <font> 0043 latin capital letter c -1D60B MATHEMATICAL SANS-SERIF ITALIC CAPITAL D - # <font> 0044 latin capital letter d -1D60C MATHEMATICAL SANS-SERIF ITALIC CAPITAL E - # <font> 0045 latin capital letter e -1D60D MATHEMATICAL SANS-SERIF ITALIC CAPITAL F - # <font> 0046 latin capital letter f -1D60E MATHEMATICAL SANS-SERIF ITALIC CAPITAL G - # <font> 0047 latin capital letter g -1D60F MATHEMATICAL SANS-SERIF ITALIC CAPITAL H - # <font> 0048 latin capital letter h -1D610 MATHEMATICAL SANS-SERIF ITALIC CAPITAL I - # <font> 0049 latin capital letter i -1D611 MATHEMATICAL SANS-SERIF ITALIC CAPITAL J - # <font> 004A latin capital letter j -1D612 MATHEMATICAL SANS-SERIF ITALIC CAPITAL K - # <font> 004B latin capital letter k -1D613 MATHEMATICAL SANS-SERIF ITALIC CAPITAL L - # <font> 004C latin capital letter l -1D614 MATHEMATICAL SANS-SERIF ITALIC CAPITAL M - # <font> 004D latin capital letter m -1D615 MATHEMATICAL SANS-SERIF ITALIC CAPITAL N - # <font> 004E latin capital letter n -1D616 MATHEMATICAL SANS-SERIF ITALIC CAPITAL O - # <font> 004F latin capital letter o -1D617 MATHEMATICAL SANS-SERIF ITALIC CAPITAL P - # <font> 0050 latin capital letter p -1D618 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q - # <font> 0051 latin capital letter q -1D619 MATHEMATICAL SANS-SERIF ITALIC CAPITAL R - # <font> 0052 latin capital letter r -1D61A MATHEMATICAL SANS-SERIF ITALIC CAPITAL S - # <font> 0053 latin capital letter s -1D61B MATHEMATICAL SANS-SERIF ITALIC CAPITAL T - # <font> 0054 latin capital letter t -1D61C MATHEMATICAL SANS-SERIF ITALIC CAPITAL U - # <font> 0055 latin capital letter u -1D61D MATHEMATICAL SANS-SERIF ITALIC CAPITAL V - # <font> 0056 latin capital letter v -1D61E MATHEMATICAL SANS-SERIF ITALIC CAPITAL W - # <font> 0057 latin capital letter w -1D61F MATHEMATICAL SANS-SERIF ITALIC CAPITAL X - # <font> 0058 latin capital letter x -1D620 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y - # <font> 0059 latin capital letter y -1D621 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z - # <font> 005A latin capital letter z -1D622 MATHEMATICAL SANS-SERIF ITALIC SMALL A - # <font> 0061 latin small letter a -1D623 MATHEMATICAL SANS-SERIF ITALIC SMALL B - # <font> 0062 latin small letter b -1D624 MATHEMATICAL SANS-SERIF ITALIC SMALL C - # <font> 0063 latin small letter c -1D625 MATHEMATICAL SANS-SERIF ITALIC SMALL D - # <font> 0064 latin small letter d -1D626 MATHEMATICAL SANS-SERIF ITALIC SMALL E - # <font> 0065 latin small letter e -1D627 MATHEMATICAL SANS-SERIF ITALIC SMALL F - # <font> 0066 latin small letter f -1D628 MATHEMATICAL SANS-SERIF ITALIC SMALL G - # <font> 0067 latin small letter g -1D629 MATHEMATICAL SANS-SERIF ITALIC SMALL H - # <font> 0068 latin small letter h -1D62A MATHEMATICAL SANS-SERIF ITALIC SMALL I - # <font> 0069 latin small letter i -1D62B MATHEMATICAL SANS-SERIF ITALIC SMALL J - # <font> 006A latin small letter j -1D62C MATHEMATICAL SANS-SERIF ITALIC SMALL K - # <font> 006B latin small letter k -1D62D MATHEMATICAL SANS-SERIF ITALIC SMALL L - # <font> 006C latin small letter l -1D62E MATHEMATICAL SANS-SERIF ITALIC SMALL M - # <font> 006D latin small letter m -1D62F MATHEMATICAL SANS-SERIF ITALIC SMALL N - # <font> 006E latin small letter n -1D630 MATHEMATICAL SANS-SERIF ITALIC SMALL O - # <font> 006F latin small letter o -1D631 MATHEMATICAL SANS-SERIF ITALIC SMALL P - # <font> 0070 latin small letter p -1D632 MATHEMATICAL SANS-SERIF ITALIC SMALL Q - # <font> 0071 latin small letter q -1D633 MATHEMATICAL SANS-SERIF ITALIC SMALL R - # <font> 0072 latin small letter r -1D634 MATHEMATICAL SANS-SERIF ITALIC SMALL S - # <font> 0073 latin small letter s -1D635 MATHEMATICAL SANS-SERIF ITALIC SMALL T - # <font> 0074 latin small letter t -1D636 MATHEMATICAL SANS-SERIF ITALIC SMALL U - # <font> 0075 latin small letter u -1D637 MATHEMATICAL SANS-SERIF ITALIC SMALL V - # <font> 0076 latin small letter v -1D638 MATHEMATICAL SANS-SERIF ITALIC SMALL W - # <font> 0077 latin small letter w -1D639 MATHEMATICAL SANS-SERIF ITALIC SMALL X - # <font> 0078 latin small letter x -1D63A MATHEMATICAL SANS-SERIF ITALIC SMALL Y - # <font> 0079 latin small letter y -1D63B MATHEMATICAL SANS-SERIF ITALIC SMALL Z - # <font> 007A latin small letter z -@ Sans-serif bold italic symbols -1D63C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A - # <font> 0041 latin capital letter a -1D63D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B - # <font> 0042 latin capital letter b -1D63E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C - # <font> 0043 latin capital letter c -1D63F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D - # <font> 0044 latin capital letter d -1D640 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E - # <font> 0045 latin capital letter e -1D641 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F - # <font> 0046 latin capital letter f -1D642 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G - # <font> 0047 latin capital letter g -1D643 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H - # <font> 0048 latin capital letter h -1D644 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I - # <font> 0049 latin capital letter i -1D645 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J - # <font> 004A latin capital letter j -1D646 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K - # <font> 004B latin capital letter k -1D647 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L - # <font> 004C latin capital letter l -1D648 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M - # <font> 004D latin capital letter m -1D649 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N - # <font> 004E latin capital letter n -1D64A MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O - # <font> 004F latin capital letter o -1D64B MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P - # <font> 0050 latin capital letter p -1D64C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q - # <font> 0051 latin capital letter q -1D64D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R - # <font> 0052 latin capital letter r -1D64E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S - # <font> 0053 latin capital letter s -1D64F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T - # <font> 0054 latin capital letter t -1D650 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U - # <font> 0055 latin capital letter u -1D651 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V - # <font> 0056 latin capital letter v -1D652 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W - # <font> 0057 latin capital letter w -1D653 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X - # <font> 0058 latin capital letter x -1D654 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y - # <font> 0059 latin capital letter y -1D655 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z - # <font> 005A latin capital letter z -1D656 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A - # <font> 0061 latin small letter a -1D657 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B - # <font> 0062 latin small letter b -1D658 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C - # <font> 0063 latin small letter c -1D659 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D - # <font> 0064 latin small letter d -1D65A MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E - # <font> 0065 latin small letter e -1D65B MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F - # <font> 0066 latin small letter f -1D65C MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G - # <font> 0067 latin small letter g -1D65D MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H - # <font> 0068 latin small letter h -1D65E MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I - # <font> 0069 latin small letter i -1D65F MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J - # <font> 006A latin small letter j -1D660 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K - # <font> 006B latin small letter k -1D661 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L - # <font> 006C latin small letter l -1D662 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M - # <font> 006D latin small letter m -1D663 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N - # <font> 006E latin small letter n -1D664 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O - # <font> 006F latin small letter o -1D665 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P - # <font> 0070 latin small letter p -1D666 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q - # <font> 0071 latin small letter q -1D667 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R - # <font> 0072 latin small letter r -1D668 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S - # <font> 0073 latin small letter s -1D669 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T - # <font> 0074 latin small letter t -1D66A MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U - # <font> 0075 latin small letter u -1D66B MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V - # <font> 0076 latin small letter v -1D66C MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W - # <font> 0077 latin small letter w -1D66D MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X - # <font> 0078 latin small letter x -1D66E MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y - # <font> 0079 latin small letter y -1D66F MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z - # <font> 007A latin small letter z -@ Monospace symbols -1D670 MATHEMATICAL MONOSPACE CAPITAL A - # <font> 0041 latin capital letter a -1D671 MATHEMATICAL MONOSPACE CAPITAL B - # <font> 0042 latin capital letter b -1D672 MATHEMATICAL MONOSPACE CAPITAL C - # <font> 0043 latin capital letter c -1D673 MATHEMATICAL MONOSPACE CAPITAL D - # <font> 0044 latin capital letter d -1D674 MATHEMATICAL MONOSPACE CAPITAL E - # <font> 0045 latin capital letter e -1D675 MATHEMATICAL MONOSPACE CAPITAL F - # <font> 0046 latin capital letter f -1D676 MATHEMATICAL MONOSPACE CAPITAL G - # <font> 0047 latin capital letter g -1D677 MATHEMATICAL MONOSPACE CAPITAL H - # <font> 0048 latin capital letter h -1D678 MATHEMATICAL MONOSPACE CAPITAL I - # <font> 0049 latin capital letter i -1D679 MATHEMATICAL MONOSPACE CAPITAL J - # <font> 004A latin capital letter j -1D67A MATHEMATICAL MONOSPACE CAPITAL K - # <font> 004B latin capital letter k -1D67B MATHEMATICAL MONOSPACE CAPITAL L - # <font> 004C latin capital letter l -1D67C MATHEMATICAL MONOSPACE CAPITAL M - # <font> 004D latin capital letter m -1D67D MATHEMATICAL MONOSPACE CAPITAL N - # <font> 004E latin capital letter n -1D67E MATHEMATICAL MONOSPACE CAPITAL O - # <font> 004F latin capital letter o -1D67F MATHEMATICAL MONOSPACE CAPITAL P - # <font> 0050 latin capital letter p -1D680 MATHEMATICAL MONOSPACE CAPITAL Q - # <font> 0051 latin capital letter q -1D681 MATHEMATICAL MONOSPACE CAPITAL R - # <font> 0052 latin capital letter r -1D682 MATHEMATICAL MONOSPACE CAPITAL S - # <font> 0053 latin capital letter s -1D683 MATHEMATICAL MONOSPACE CAPITAL T - # <font> 0054 latin capital letter t -1D684 MATHEMATICAL MONOSPACE CAPITAL U - # <font> 0055 latin capital letter u -1D685 MATHEMATICAL MONOSPACE CAPITAL V - # <font> 0056 latin capital letter v -1D686 MATHEMATICAL MONOSPACE CAPITAL W - # <font> 0057 latin capital letter w -1D687 MATHEMATICAL MONOSPACE CAPITAL X - # <font> 0058 latin capital letter x -1D688 MATHEMATICAL MONOSPACE CAPITAL Y - # <font> 0059 latin capital letter y -1D689 MATHEMATICAL MONOSPACE CAPITAL Z - # <font> 005A latin capital letter z -1D68A MATHEMATICAL MONOSPACE SMALL A - # <font> 0061 latin small letter a -1D68B MATHEMATICAL MONOSPACE SMALL B - # <font> 0062 latin small letter b -1D68C MATHEMATICAL MONOSPACE SMALL C - # <font> 0063 latin small letter c -1D68D MATHEMATICAL MONOSPACE SMALL D - # <font> 0064 latin small letter d -1D68E MATHEMATICAL MONOSPACE SMALL E - # <font> 0065 latin small letter e -1D68F MATHEMATICAL MONOSPACE SMALL F - # <font> 0066 latin small letter f -1D690 MATHEMATICAL MONOSPACE SMALL G - # <font> 0067 latin small letter g -1D691 MATHEMATICAL MONOSPACE SMALL H - # <font> 0068 latin small letter h -1D692 MATHEMATICAL MONOSPACE SMALL I - # <font> 0069 latin small letter i -1D693 MATHEMATICAL MONOSPACE SMALL J - # <font> 006A latin small letter j -1D694 MATHEMATICAL MONOSPACE SMALL K - # <font> 006B latin small letter k -1D695 MATHEMATICAL MONOSPACE SMALL L - # <font> 006C latin small letter l -1D696 MATHEMATICAL MONOSPACE SMALL M - # <font> 006D latin small letter m -1D697 MATHEMATICAL MONOSPACE SMALL N - # <font> 006E latin small letter n -1D698 MATHEMATICAL MONOSPACE SMALL O - # <font> 006F latin small letter o -1D699 MATHEMATICAL MONOSPACE SMALL P - # <font> 0070 latin small letter p -1D69A MATHEMATICAL MONOSPACE SMALL Q - # <font> 0071 latin small letter q -1D69B MATHEMATICAL MONOSPACE SMALL R - # <font> 0072 latin small letter r -1D69C MATHEMATICAL MONOSPACE SMALL S - # <font> 0073 latin small letter s -1D69D MATHEMATICAL MONOSPACE SMALL T - # <font> 0074 latin small letter t -1D69E MATHEMATICAL MONOSPACE SMALL U - # <font> 0075 latin small letter u -1D69F MATHEMATICAL MONOSPACE SMALL V - # <font> 0076 latin small letter v -1D6A0 MATHEMATICAL MONOSPACE SMALL W - # <font> 0077 latin small letter w -1D6A1 MATHEMATICAL MONOSPACE SMALL X - # <font> 0078 latin small letter x -1D6A2 MATHEMATICAL MONOSPACE SMALL Y - # <font> 0079 latin small letter y -1D6A3 MATHEMATICAL MONOSPACE SMALL Z - # <font> 007A latin small letter z -@ Dotless symbols -@+ For use as independent symbols. These are not required as base characters for accents since regular i and j are soft-dotted in Unicode. -1D6A4 MATHEMATICAL ITALIC SMALL DOTLESS I - = \imath - x (latin small letter dotless i - 0131) - x (mathematical italic small i - 1D456) - # <font> 0131 latin small letter dotless i -1D6A5 MATHEMATICAL ITALIC SMALL DOTLESS J - = \jmath - x (latin small letter dotless j - 0237) - x (mathematical italic small j - 1D457) - # <font> 0237 latin small letter dotless j -@ Bold Greek symbols -1D6A8 MATHEMATICAL BOLD CAPITAL ALPHA - # <font> 0391 greek capital letter alpha -1D6A9 MATHEMATICAL BOLD CAPITAL BETA - # <font> 0392 greek capital letter beta -1D6AA MATHEMATICAL BOLD CAPITAL GAMMA - # <font> 0393 greek capital letter gamma -1D6AB MATHEMATICAL BOLD CAPITAL DELTA - # <font> 0394 greek capital letter delta -1D6AC MATHEMATICAL BOLD CAPITAL EPSILON - # <font> 0395 greek capital letter epsilon -1D6AD MATHEMATICAL BOLD CAPITAL ZETA - # <font> 0396 greek capital letter zeta -1D6AE MATHEMATICAL BOLD CAPITAL ETA - # <font> 0397 greek capital letter eta -1D6AF MATHEMATICAL BOLD CAPITAL THETA - # <font> 0398 greek capital letter theta -1D6B0 MATHEMATICAL BOLD CAPITAL IOTA - # <font> 0399 greek capital letter iota -1D6B1 MATHEMATICAL BOLD CAPITAL KAPPA - # <font> 039A greek capital letter kappa -1D6B2 MATHEMATICAL BOLD CAPITAL LAMDA - # <font> 039B greek capital letter lamda -1D6B3 MATHEMATICAL BOLD CAPITAL MU - # <font> 039C greek capital letter mu -1D6B4 MATHEMATICAL BOLD CAPITAL NU - # <font> 039D greek capital letter nu -1D6B5 MATHEMATICAL BOLD CAPITAL XI - # <font> 039E greek capital letter xi -1D6B6 MATHEMATICAL BOLD CAPITAL OMICRON - # <font> 039F greek capital letter omicron -1D6B7 MATHEMATICAL BOLD CAPITAL PI - # <font> 03A0 greek capital letter pi -1D6B8 MATHEMATICAL BOLD CAPITAL RHO - # <font> 03A1 greek capital letter rho -1D6B9 MATHEMATICAL BOLD CAPITAL THETA SYMBOL - # <font> 03F4 greek capital theta symbol -1D6BA MATHEMATICAL BOLD CAPITAL SIGMA - # <font> 03A3 greek capital letter sigma -1D6BB MATHEMATICAL BOLD CAPITAL TAU - # <font> 03A4 greek capital letter tau -1D6BC MATHEMATICAL BOLD CAPITAL UPSILON - # <font> 03A5 greek capital letter upsilon -1D6BD MATHEMATICAL BOLD CAPITAL PHI - # <font> 03A6 greek capital letter phi -1D6BE MATHEMATICAL BOLD CAPITAL CHI - # <font> 03A7 greek capital letter chi -1D6BF MATHEMATICAL BOLD CAPITAL PSI - # <font> 03A8 greek capital letter psi -1D6C0 MATHEMATICAL BOLD CAPITAL OMEGA - # <font> 03A9 greek capital letter omega -1D6C1 MATHEMATICAL BOLD NABLA - # <font> 2207 nabla -1D6C2 MATHEMATICAL BOLD SMALL ALPHA - # <font> 03B1 greek small letter alpha -1D6C3 MATHEMATICAL BOLD SMALL BETA - # <font> 03B2 greek small letter beta -1D6C4 MATHEMATICAL BOLD SMALL GAMMA - # <font> 03B3 greek small letter gamma -1D6C5 MATHEMATICAL BOLD SMALL DELTA - # <font> 03B4 greek small letter delta -1D6C6 MATHEMATICAL BOLD SMALL EPSILON - # <font> 03B5 greek small letter epsilon -1D6C7 MATHEMATICAL BOLD SMALL ZETA - # <font> 03B6 greek small letter zeta -1D6C8 MATHEMATICAL BOLD SMALL ETA - # <font> 03B7 greek small letter eta -1D6C9 MATHEMATICAL BOLD SMALL THETA - # <font> 03B8 greek small letter theta -1D6CA MATHEMATICAL BOLD SMALL IOTA - # <font> 03B9 greek small letter iota -1D6CB MATHEMATICAL BOLD SMALL KAPPA - # <font> 03BA greek small letter kappa -1D6CC MATHEMATICAL BOLD SMALL LAMDA - # <font> 03BB greek small letter lamda -1D6CD MATHEMATICAL BOLD SMALL MU - # <font> 03BC greek small letter mu -1D6CE MATHEMATICAL BOLD SMALL NU - # <font> 03BD greek small letter nu -1D6CF MATHEMATICAL BOLD SMALL XI - # <font> 03BE greek small letter xi -1D6D0 MATHEMATICAL BOLD SMALL OMICRON - # <font> 03BF greek small letter omicron -1D6D1 MATHEMATICAL BOLD SMALL PI - # <font> 03C0 greek small letter pi -1D6D2 MATHEMATICAL BOLD SMALL RHO - # <font> 03C1 greek small letter rho -1D6D3 MATHEMATICAL BOLD SMALL FINAL SIGMA - # <font> 03C2 greek small letter final sigma -1D6D4 MATHEMATICAL BOLD SMALL SIGMA - # <font> 03C3 greek small letter sigma -1D6D5 MATHEMATICAL BOLD SMALL TAU - # <font> 03C4 greek small letter tau -1D6D6 MATHEMATICAL BOLD SMALL UPSILON - # <font> 03C5 greek small letter upsilon -1D6D7 MATHEMATICAL BOLD SMALL PHI - # <font> 03C6 greek small letter phi -1D6D8 MATHEMATICAL BOLD SMALL CHI - # <font> 03C7 greek small letter chi -1D6D9 MATHEMATICAL BOLD SMALL PSI - # <font> 03C8 greek small letter psi -1D6DA MATHEMATICAL BOLD SMALL OMEGA - # <font> 03C9 greek small letter omega -@ Additional bold Greek symbols -1D6DB MATHEMATICAL BOLD PARTIAL DIFFERENTIAL - # <font> 2202 partial differential -1D6DC MATHEMATICAL BOLD EPSILON SYMBOL - # <font> 03F5 greek lunate epsilon symbol -1D6DD MATHEMATICAL BOLD THETA SYMBOL - # <font> 03D1 greek theta symbol -1D6DE MATHEMATICAL BOLD KAPPA SYMBOL - # <font> 03F0 greek kappa symbol -1D6DF MATHEMATICAL BOLD PHI SYMBOL - # <font> 03D5 greek phi symbol -1D6E0 MATHEMATICAL BOLD RHO SYMBOL - # <font> 03F1 greek rho symbol -1D6E1 MATHEMATICAL BOLD PI SYMBOL - # <font> 03D6 greek pi symbol -@ Italic Greek symbols -1D6E2 MATHEMATICAL ITALIC CAPITAL ALPHA - # <font> 0391 greek capital letter alpha -1D6E3 MATHEMATICAL ITALIC CAPITAL BETA - # <font> 0392 greek capital letter beta -1D6E4 MATHEMATICAL ITALIC CAPITAL GAMMA - # <font> 0393 greek capital letter gamma -1D6E5 MATHEMATICAL ITALIC CAPITAL DELTA - # <font> 0394 greek capital letter delta -1D6E6 MATHEMATICAL ITALIC CAPITAL EPSILON - # <font> 0395 greek capital letter epsilon -1D6E7 MATHEMATICAL ITALIC CAPITAL ZETA - # <font> 0396 greek capital letter zeta -1D6E8 MATHEMATICAL ITALIC CAPITAL ETA - # <font> 0397 greek capital letter eta -1D6E9 MATHEMATICAL ITALIC CAPITAL THETA - # <font> 0398 greek capital letter theta -1D6EA MATHEMATICAL ITALIC CAPITAL IOTA - # <font> 0399 greek capital letter iota -1D6EB MATHEMATICAL ITALIC CAPITAL KAPPA - # <font> 039A greek capital letter kappa -1D6EC MATHEMATICAL ITALIC CAPITAL LAMDA - # <font> 039B greek capital letter lamda -1D6ED MATHEMATICAL ITALIC CAPITAL MU - # <font> 039C greek capital letter mu -1D6EE MATHEMATICAL ITALIC CAPITAL NU - # <font> 039D greek capital letter nu -1D6EF MATHEMATICAL ITALIC CAPITAL XI - # <font> 039E greek capital letter xi -1D6F0 MATHEMATICAL ITALIC CAPITAL OMICRON - # <font> 039F greek capital letter omicron -1D6F1 MATHEMATICAL ITALIC CAPITAL PI - # <font> 03A0 greek capital letter pi -1D6F2 MATHEMATICAL ITALIC CAPITAL RHO - # <font> 03A1 greek capital letter rho -1D6F3 MATHEMATICAL ITALIC CAPITAL THETA SYMBOL - # <font> 03F4 greek capital theta symbol -1D6F4 MATHEMATICAL ITALIC CAPITAL SIGMA - # <font> 03A3 greek capital letter sigma -1D6F5 MATHEMATICAL ITALIC CAPITAL TAU - # <font> 03A4 greek capital letter tau -1D6F6 MATHEMATICAL ITALIC CAPITAL UPSILON - # <font> 03A5 greek capital letter upsilon -1D6F7 MATHEMATICAL ITALIC CAPITAL PHI - # <font> 03A6 greek capital letter phi -1D6F8 MATHEMATICAL ITALIC CAPITAL CHI - # <font> 03A7 greek capital letter chi -1D6F9 MATHEMATICAL ITALIC CAPITAL PSI - # <font> 03A8 greek capital letter psi -1D6FA MATHEMATICAL ITALIC CAPITAL OMEGA - # <font> 03A9 greek capital letter omega -1D6FB MATHEMATICAL ITALIC NABLA - # <font> 2207 nabla -1D6FC MATHEMATICAL ITALIC SMALL ALPHA - # <font> 03B1 greek small letter alpha -1D6FD MATHEMATICAL ITALIC SMALL BETA - # <font> 03B2 greek small letter beta -1D6FE MATHEMATICAL ITALIC SMALL GAMMA - # <font> 03B3 greek small letter gamma -1D6FF MATHEMATICAL ITALIC SMALL DELTA - # <font> 03B4 greek small letter delta -1D700 MATHEMATICAL ITALIC SMALL EPSILON - # <font> 03B5 greek small letter epsilon -1D701 MATHEMATICAL ITALIC SMALL ZETA - # <font> 03B6 greek small letter zeta -1D702 MATHEMATICAL ITALIC SMALL ETA - # <font> 03B7 greek small letter eta -1D703 MATHEMATICAL ITALIC SMALL THETA - # <font> 03B8 greek small letter theta -1D704 MATHEMATICAL ITALIC SMALL IOTA - # <font> 03B9 greek small letter iota -1D705 MATHEMATICAL ITALIC SMALL KAPPA - # <font> 03BA greek small letter kappa -1D706 MATHEMATICAL ITALIC SMALL LAMDA - # <font> 03BB greek small letter lamda -1D707 MATHEMATICAL ITALIC SMALL MU - # <font> 03BC greek small letter mu -1D708 MATHEMATICAL ITALIC SMALL NU - # <font> 03BD greek small letter nu -1D709 MATHEMATICAL ITALIC SMALL XI - # <font> 03BE greek small letter xi -1D70A MATHEMATICAL ITALIC SMALL OMICRON - # <font> 03BF greek small letter omicron -1D70B MATHEMATICAL ITALIC SMALL PI - # <font> 03C0 greek small letter pi -1D70C MATHEMATICAL ITALIC SMALL RHO - # <font> 03C1 greek small letter rho -1D70D MATHEMATICAL ITALIC SMALL FINAL SIGMA - # <font> 03C2 greek small letter final sigma -1D70E MATHEMATICAL ITALIC SMALL SIGMA - # <font> 03C3 greek small letter sigma -1D70F MATHEMATICAL ITALIC SMALL TAU - # <font> 03C4 greek small letter tau -1D710 MATHEMATICAL ITALIC SMALL UPSILON - # <font> 03C5 greek small letter upsilon -1D711 MATHEMATICAL ITALIC SMALL PHI - # <font> 03C6 greek small letter phi -1D712 MATHEMATICAL ITALIC SMALL CHI - # <font> 03C7 greek small letter chi -1D713 MATHEMATICAL ITALIC SMALL PSI - # <font> 03C8 greek small letter psi -1D714 MATHEMATICAL ITALIC SMALL OMEGA - # <font> 03C9 greek small letter omega -@ Additional italic Greek symbols -1D715 MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL - # <font> 2202 partial differential -1D716 MATHEMATICAL ITALIC EPSILON SYMBOL - # <font> 03F5 greek lunate epsilon symbol -1D717 MATHEMATICAL ITALIC THETA SYMBOL - # <font> 03D1 greek theta symbol -1D718 MATHEMATICAL ITALIC KAPPA SYMBOL - # <font> 03F0 greek kappa symbol -1D719 MATHEMATICAL ITALIC PHI SYMBOL - # <font> 03D5 greek phi symbol -1D71A MATHEMATICAL ITALIC RHO SYMBOL - # <font> 03F1 greek rho symbol -1D71B MATHEMATICAL ITALIC PI SYMBOL - # <font> 03D6 greek pi symbol -@ Bold italic Greek symbols -1D71C MATHEMATICAL BOLD ITALIC CAPITAL ALPHA - # <font> 0391 greek capital letter alpha -1D71D MATHEMATICAL BOLD ITALIC CAPITAL BETA - # <font> 0392 greek capital letter beta -1D71E MATHEMATICAL BOLD ITALIC CAPITAL GAMMA - # <font> 0393 greek capital letter gamma -1D71F MATHEMATICAL BOLD ITALIC CAPITAL DELTA - # <font> 0394 greek capital letter delta -1D720 MATHEMATICAL BOLD ITALIC CAPITAL EPSILON - # <font> 0395 greek capital letter epsilon -1D721 MATHEMATICAL BOLD ITALIC CAPITAL ZETA - # <font> 0396 greek capital letter zeta -1D722 MATHEMATICAL BOLD ITALIC CAPITAL ETA - # <font> 0397 greek capital letter eta -1D723 MATHEMATICAL BOLD ITALIC CAPITAL THETA - # <font> 0398 greek capital letter theta -1D724 MATHEMATICAL BOLD ITALIC CAPITAL IOTA - # <font> 0399 greek capital letter iota -1D725 MATHEMATICAL BOLD ITALIC CAPITAL KAPPA - # <font> 039A greek capital letter kappa -1D726 MATHEMATICAL BOLD ITALIC CAPITAL LAMDA - # <font> 039B greek capital letter lamda -1D727 MATHEMATICAL BOLD ITALIC CAPITAL MU - # <font> 039C greek capital letter mu -1D728 MATHEMATICAL BOLD ITALIC CAPITAL NU - # <font> 039D greek capital letter nu -1D729 MATHEMATICAL BOLD ITALIC CAPITAL XI - # <font> 039E greek capital letter xi -1D72A MATHEMATICAL BOLD ITALIC CAPITAL OMICRON - # <font> 039F greek capital letter omicron -1D72B MATHEMATICAL BOLD ITALIC CAPITAL PI - # <font> 03A0 greek capital letter pi -1D72C MATHEMATICAL BOLD ITALIC CAPITAL RHO - # <font> 03A1 greek capital letter rho -1D72D MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL - # <font> 03F4 greek capital theta symbol -1D72E MATHEMATICAL BOLD ITALIC CAPITAL SIGMA - # <font> 03A3 greek capital letter sigma -1D72F MATHEMATICAL BOLD ITALIC CAPITAL TAU - # <font> 03A4 greek capital letter tau -1D730 MATHEMATICAL BOLD ITALIC CAPITAL UPSILON - # <font> 03A5 greek capital letter upsilon -1D731 MATHEMATICAL BOLD ITALIC CAPITAL PHI - # <font> 03A6 greek capital letter phi -1D732 MATHEMATICAL BOLD ITALIC CAPITAL CHI - # <font> 03A7 greek capital letter chi -1D733 MATHEMATICAL BOLD ITALIC CAPITAL PSI - # <font> 03A8 greek capital letter psi -1D734 MATHEMATICAL BOLD ITALIC CAPITAL OMEGA - # <font> 03A9 greek capital letter omega -1D735 MATHEMATICAL BOLD ITALIC NABLA - # <font> 2207 nabla -1D736 MATHEMATICAL BOLD ITALIC SMALL ALPHA - # <font> 03B1 greek small letter alpha -1D737 MATHEMATICAL BOLD ITALIC SMALL BETA - # <font> 03B2 greek small letter beta -1D738 MATHEMATICAL BOLD ITALIC SMALL GAMMA - # <font> 03B3 greek small letter gamma -1D739 MATHEMATICAL BOLD ITALIC SMALL DELTA - # <font> 03B4 greek small letter delta -1D73A MATHEMATICAL BOLD ITALIC SMALL EPSILON - # <font> 03B5 greek small letter epsilon -1D73B MATHEMATICAL BOLD ITALIC SMALL ZETA - # <font> 03B6 greek small letter zeta -1D73C MATHEMATICAL BOLD ITALIC SMALL ETA - # <font> 03B7 greek small letter eta -1D73D MATHEMATICAL BOLD ITALIC SMALL THETA - # <font> 03B8 greek small letter theta -1D73E MATHEMATICAL BOLD ITALIC SMALL IOTA - # <font> 03B9 greek small letter iota -1D73F MATHEMATICAL BOLD ITALIC SMALL KAPPA - # <font> 03BA greek small letter kappa -1D740 MATHEMATICAL BOLD ITALIC SMALL LAMDA - # <font> 03BB greek small letter lamda -1D741 MATHEMATICAL BOLD ITALIC SMALL MU - # <font> 03BC greek small letter mu -1D742 MATHEMATICAL BOLD ITALIC SMALL NU - # <font> 03BD greek small letter nu -1D743 MATHEMATICAL BOLD ITALIC SMALL XI - # <font> 03BE greek small letter xi -1D744 MATHEMATICAL BOLD ITALIC SMALL OMICRON - # <font> 03BF greek small letter omicron -1D745 MATHEMATICAL BOLD ITALIC SMALL PI - # <font> 03C0 greek small letter pi -1D746 MATHEMATICAL BOLD ITALIC SMALL RHO - # <font> 03C1 greek small letter rho -1D747 MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA - # <font> 03C2 greek small letter final sigma -1D748 MATHEMATICAL BOLD ITALIC SMALL SIGMA - # <font> 03C3 greek small letter sigma -1D749 MATHEMATICAL BOLD ITALIC SMALL TAU - # <font> 03C4 greek small letter tau -1D74A MATHEMATICAL BOLD ITALIC SMALL UPSILON - # <font> 03C5 greek small letter upsilon -1D74B MATHEMATICAL BOLD ITALIC SMALL PHI - # <font> 03C6 greek small letter phi -1D74C MATHEMATICAL BOLD ITALIC SMALL CHI - # <font> 03C7 greek small letter chi -1D74D MATHEMATICAL BOLD ITALIC SMALL PSI - # <font> 03C8 greek small letter psi -1D74E MATHEMATICAL BOLD ITALIC SMALL OMEGA - # <font> 03C9 greek small letter omega -@ Additional bold italic Greek symbols -1D74F MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL - # <font> 2202 partial differential -1D750 MATHEMATICAL BOLD ITALIC EPSILON SYMBOL - # <font> 03F5 greek lunate epsilon symbol -1D751 MATHEMATICAL BOLD ITALIC THETA SYMBOL - # <font> 03D1 greek theta symbol -1D752 MATHEMATICAL BOLD ITALIC KAPPA SYMBOL - # <font> 03F0 greek kappa symbol -1D753 MATHEMATICAL BOLD ITALIC PHI SYMBOL - # <font> 03D5 greek phi symbol -1D754 MATHEMATICAL BOLD ITALIC RHO SYMBOL - # <font> 03F1 greek rho symbol -1D755 MATHEMATICAL BOLD ITALIC PI SYMBOL - # <font> 03D6 greek pi symbol -@ Sans-serif bold Greek symbols -1D756 MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA - # <font> 0391 greek capital letter alpha -1D757 MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA - # <font> 0392 greek capital letter beta -1D758 MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA - # <font> 0393 greek capital letter gamma -1D759 MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA - # <font> 0394 greek capital letter delta -1D75A MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON - # <font> 0395 greek capital letter epsilon -1D75B MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA - # <font> 0396 greek capital letter zeta -1D75C MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA - # <font> 0397 greek capital letter eta -1D75D MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA - # <font> 0398 greek capital letter theta -1D75E MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA - # <font> 0399 greek capital letter iota -1D75F MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA - # <font> 039A greek capital letter kappa -1D760 MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA - # <font> 039B greek capital letter lamda -1D761 MATHEMATICAL SANS-SERIF BOLD CAPITAL MU - # <font> 039C greek capital letter mu -1D762 MATHEMATICAL SANS-SERIF BOLD CAPITAL NU - # <font> 039D greek capital letter nu -1D763 MATHEMATICAL SANS-SERIF BOLD CAPITAL XI - # <font> 039E greek capital letter xi -1D764 MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON - # <font> 039F greek capital letter omicron -1D765 MATHEMATICAL SANS-SERIF BOLD CAPITAL PI - # <font> 03A0 greek capital letter pi -1D766 MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO - # <font> 03A1 greek capital letter rho -1D767 MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL - # <font> 03F4 greek capital theta symbol -1D768 MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA - # <font> 03A3 greek capital letter sigma -1D769 MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU - # <font> 03A4 greek capital letter tau -1D76A MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON - # <font> 03A5 greek capital letter upsilon -1D76B MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI - # <font> 03A6 greek capital letter phi -1D76C MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI - # <font> 03A7 greek capital letter chi -1D76D MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI - # <font> 03A8 greek capital letter psi -1D76E MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA - # <font> 03A9 greek capital letter omega -1D76F MATHEMATICAL SANS-SERIF BOLD NABLA - # <font> 2207 nabla -1D770 MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA - # <font> 03B1 greek small letter alpha -1D771 MATHEMATICAL SANS-SERIF BOLD SMALL BETA - # <font> 03B2 greek small letter beta -1D772 MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA - # <font> 03B3 greek small letter gamma -1D773 MATHEMATICAL SANS-SERIF BOLD SMALL DELTA - # <font> 03B4 greek small letter delta -1D774 MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON - # <font> 03B5 greek small letter epsilon -1D775 MATHEMATICAL SANS-SERIF BOLD SMALL ZETA - # <font> 03B6 greek small letter zeta -1D776 MATHEMATICAL SANS-SERIF BOLD SMALL ETA - # <font> 03B7 greek small letter eta -1D777 MATHEMATICAL SANS-SERIF BOLD SMALL THETA - # <font> 03B8 greek small letter theta -1D778 MATHEMATICAL SANS-SERIF BOLD SMALL IOTA - # <font> 03B9 greek small letter iota -1D779 MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA - # <font> 03BA greek small letter kappa -1D77A MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA - # <font> 03BB greek small letter lamda -1D77B MATHEMATICAL SANS-SERIF BOLD SMALL MU - # <font> 03BC greek small letter mu -1D77C MATHEMATICAL SANS-SERIF BOLD SMALL NU - # <font> 03BD greek small letter nu -1D77D MATHEMATICAL SANS-SERIF BOLD SMALL XI - # <font> 03BE greek small letter xi -1D77E MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON - # <font> 03BF greek small letter omicron -1D77F MATHEMATICAL SANS-SERIF BOLD SMALL PI - # <font> 03C0 greek small letter pi -1D780 MATHEMATICAL SANS-SERIF BOLD SMALL RHO - # <font> 03C1 greek small letter rho -1D781 MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA - # <font> 03C2 greek small letter final sigma -1D782 MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA - # <font> 03C3 greek small letter sigma -1D783 MATHEMATICAL SANS-SERIF BOLD SMALL TAU - # <font> 03C4 greek small letter tau -1D784 MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON - # <font> 03C5 greek small letter upsilon -1D785 MATHEMATICAL SANS-SERIF BOLD SMALL PHI - # <font> 03C6 greek small letter phi -1D786 MATHEMATICAL SANS-SERIF BOLD SMALL CHI - # <font> 03C7 greek small letter chi -1D787 MATHEMATICAL SANS-SERIF BOLD SMALL PSI - # <font> 03C8 greek small letter psi -1D788 MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA - # <font> 03C9 greek small letter omega -@ Additional sans-serif bold Greek symbols -1D789 MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL - # <font> 2202 partial differential -1D78A MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL - # <font> 03F5 greek lunate epsilon symbol -1D78B MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL - # <font> 03D1 greek theta symbol -1D78C MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL - # <font> 03F0 greek kappa symbol -1D78D MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL - # <font> 03D5 greek phi symbol -1D78E MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL - # <font> 03F1 greek rho symbol -1D78F MATHEMATICAL SANS-SERIF BOLD PI SYMBOL - # <font> 03D6 greek pi symbol -@ Sans-serif bold italic Greek symbols -1D790 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA - # <font> 0391 greek capital letter alpha -1D791 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA - # <font> 0392 greek capital letter beta -1D792 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA - # <font> 0393 greek capital letter gamma -1D793 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA - # <font> 0394 greek capital letter delta -1D794 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON - # <font> 0395 greek capital letter epsilon -1D795 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA - # <font> 0396 greek capital letter zeta -1D796 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA - # <font> 0397 greek capital letter eta -1D797 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA - # <font> 0398 greek capital letter theta -1D798 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA - # <font> 0399 greek capital letter iota -1D799 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA - # <font> 039A greek capital letter kappa -1D79A MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA - # <font> 039B greek capital letter lamda -1D79B MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU - # <font> 039C greek capital letter mu -1D79C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU - # <font> 039D greek capital letter nu -1D79D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI - # <font> 039E greek capital letter xi -1D79E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON - # <font> 039F greek capital letter omicron -1D79F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI - # <font> 03A0 greek capital letter pi -1D7A0 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO - # <font> 03A1 greek capital letter rho -1D7A1 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL - # <font> 03F4 greek capital theta symbol -1D7A2 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA - # <font> 03A3 greek capital letter sigma -1D7A3 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU - # <font> 03A4 greek capital letter tau -1D7A4 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON - # <font> 03A5 greek capital letter upsilon -1D7A5 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI - # <font> 03A6 greek capital letter phi -1D7A6 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI - # <font> 03A7 greek capital letter chi -1D7A7 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI - # <font> 03A8 greek capital letter psi -1D7A8 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA - # <font> 03A9 greek capital letter omega -1D7A9 MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA - # <font> 2207 nabla -1D7AA MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA - # <font> 03B1 greek small letter alpha -1D7AB MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA - # <font> 03B2 greek small letter beta -1D7AC MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA - # <font> 03B3 greek small letter gamma -1D7AD MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA - # <font> 03B4 greek small letter delta -1D7AE MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON - # <font> 03B5 greek small letter epsilon -1D7AF MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA - # <font> 03B6 greek small letter zeta -1D7B0 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA - # <font> 03B7 greek small letter eta -1D7B1 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA - # <font> 03B8 greek small letter theta -1D7B2 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA - # <font> 03B9 greek small letter iota -1D7B3 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA - # <font> 03BA greek small letter kappa -1D7B4 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA - # <font> 03BB greek small letter lamda -1D7B5 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU - # <font> 03BC greek small letter mu -1D7B6 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU - # <font> 03BD greek small letter nu -1D7B7 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI - # <font> 03BE greek small letter xi -1D7B8 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON - # <font> 03BF greek small letter omicron -1D7B9 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI - # <font> 03C0 greek small letter pi -1D7BA MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO - # <font> 03C1 greek small letter rho -1D7BB MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA - # <font> 03C2 greek small letter final sigma -1D7BC MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA - # <font> 03C3 greek small letter sigma -1D7BD MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU - # <font> 03C4 greek small letter tau -1D7BE MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON - # <font> 03C5 greek small letter upsilon -1D7BF MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI - # <font> 03C6 greek small letter phi -1D7C0 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI - # <font> 03C7 greek small letter chi -1D7C1 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI - # <font> 03C8 greek small letter psi -1D7C2 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA - # <font> 03C9 greek small letter omega -@ Additional sans-serif bold italic Greek symbols -1D7C3 MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL - # <font> 2202 partial differential -1D7C4 MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL - # <font> 03F5 greek lunate epsilon symbol -1D7C5 MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL - # <font> 03D1 greek theta symbol -1D7C6 MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL - # <font> 03F0 greek kappa symbol -1D7C7 MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL - # <font> 03D5 greek phi symbol -1D7C8 MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL - # <font> 03F1 greek rho symbol -1D7C9 MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL - # <font> 03D6 greek pi symbol -@ Bold digits -1D7CE MATHEMATICAL BOLD DIGIT ZERO - # <font> 0030 digit zero -1D7CF MATHEMATICAL BOLD DIGIT ONE - # <font> 0031 digit one -1D7D0 MATHEMATICAL BOLD DIGIT TWO - # <font> 0032 digit two -1D7D1 MATHEMATICAL BOLD DIGIT THREE - # <font> 0033 digit three -1D7D2 MATHEMATICAL BOLD DIGIT FOUR - # <font> 0034 digit four -1D7D3 MATHEMATICAL BOLD DIGIT FIVE - # <font> 0035 digit five -1D7D4 MATHEMATICAL BOLD DIGIT SIX - # <font> 0036 digit six -1D7D5 MATHEMATICAL BOLD DIGIT SEVEN - # <font> 0037 digit seven -1D7D6 MATHEMATICAL BOLD DIGIT EIGHT - # <font> 0038 digit eight -1D7D7 MATHEMATICAL BOLD DIGIT NINE - # <font> 0039 digit nine -@ Double-struck digits -1D7D8 MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO - # <font> 0030 digit zero -1D7D9 MATHEMATICAL DOUBLE-STRUCK DIGIT ONE - # <font> 0031 digit one -1D7DA MATHEMATICAL DOUBLE-STRUCK DIGIT TWO - # <font> 0032 digit two -1D7DB MATHEMATICAL DOUBLE-STRUCK DIGIT THREE - # <font> 0033 digit three -1D7DC MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR - # <font> 0034 digit four -1D7DD MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE - # <font> 0035 digit five -1D7DE MATHEMATICAL DOUBLE-STRUCK DIGIT SIX - # <font> 0036 digit six -1D7DF MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN - # <font> 0037 digit seven -1D7E0 MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT - # <font> 0038 digit eight -1D7E1 MATHEMATICAL DOUBLE-STRUCK DIGIT NINE - # <font> 0039 digit nine -@ Sans-serif digits -1D7E2 MATHEMATICAL SANS-SERIF DIGIT ZERO - # <font> 0030 digit zero -1D7E3 MATHEMATICAL SANS-SERIF DIGIT ONE - # <font> 0031 digit one -1D7E4 MATHEMATICAL SANS-SERIF DIGIT TWO - # <font> 0032 digit two -1D7E5 MATHEMATICAL SANS-SERIF DIGIT THREE - # <font> 0033 digit three -1D7E6 MATHEMATICAL SANS-SERIF DIGIT FOUR - # <font> 0034 digit four -1D7E7 MATHEMATICAL SANS-SERIF DIGIT FIVE - # <font> 0035 digit five -1D7E8 MATHEMATICAL SANS-SERIF DIGIT SIX - # <font> 0036 digit six -1D7E9 MATHEMATICAL SANS-SERIF DIGIT SEVEN - # <font> 0037 digit seven -1D7EA MATHEMATICAL SANS-SERIF DIGIT EIGHT - # <font> 0038 digit eight -1D7EB MATHEMATICAL SANS-SERIF DIGIT NINE - # <font> 0039 digit nine -@ Sans-serif bold digits -1D7EC MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO - # <font> 0030 digit zero -1D7ED MATHEMATICAL SANS-SERIF BOLD DIGIT ONE - # <font> 0031 digit one -1D7EE MATHEMATICAL SANS-SERIF BOLD DIGIT TWO - # <font> 0032 digit two -1D7EF MATHEMATICAL SANS-SERIF BOLD DIGIT THREE - # <font> 0033 digit three -1D7F0 MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR - # <font> 0034 digit four -1D7F1 MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE - # <font> 0035 digit five -1D7F2 MATHEMATICAL SANS-SERIF BOLD DIGIT SIX - # <font> 0036 digit six -1D7F3 MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN - # <font> 0037 digit seven -1D7F4 MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT - # <font> 0038 digit eight -1D7F5 MATHEMATICAL SANS-SERIF BOLD DIGIT NINE - # <font> 0039 digit nine -@ Monospace digits -1D7F6 MATHEMATICAL MONOSPACE DIGIT ZERO - # <font> 0030 digit zero -1D7F7 MATHEMATICAL MONOSPACE DIGIT ONE - # <font> 0031 digit one -1D7F8 MATHEMATICAL MONOSPACE DIGIT TWO - # <font> 0032 digit two -1D7F9 MATHEMATICAL MONOSPACE DIGIT THREE - # <font> 0033 digit three -1D7FA MATHEMATICAL MONOSPACE DIGIT FOUR - # <font> 0034 digit four -1D7FB MATHEMATICAL MONOSPACE DIGIT FIVE - # <font> 0035 digit five -1D7FC MATHEMATICAL MONOSPACE DIGIT SIX - # <font> 0036 digit six -1D7FD MATHEMATICAL MONOSPACE DIGIT SEVEN - # <font> 0037 digit seven -1D7FE MATHEMATICAL MONOSPACE DIGIT EIGHT - # <font> 0038 digit eight -1D7FF MATHEMATICAL MONOSPACE DIGIT NINE - # <font> 0039 digit nine -@@ 1FF80 Unassigned 1FFFF -@ Not character codes -@+ These codes are intended for process internal uses, but are not permitted for interchange. -1FFFE <not a character> - * the value 1FFFE is guaranteed not to be a Unicode character at all -1FFFF <not a character> - * the value 1FFFF is guaranteed not to be a Unicode character at all -@@ 20000 CJK Unified Ideographs Extension B 2A6D6 -@@ 2F800 CJK Compatibility Ideographs Supplement 2FA1F -@ Duplicate characters from CNS 11643-1992 -2F800 CJK COMPATIBILITY IDEOGRAPH-2F800 - : 4E3D -2F801 CJK COMPATIBILITY IDEOGRAPH-2F801 - : 4E38 -2F802 CJK COMPATIBILITY IDEOGRAPH-2F802 - : 4E41 -2F803 CJK COMPATIBILITY IDEOGRAPH-2F803 - : 20122 -2F804 CJK COMPATIBILITY IDEOGRAPH-2F804 - : 4F60 -2F805 CJK COMPATIBILITY IDEOGRAPH-2F805 - : 4FAE -2F806 CJK COMPATIBILITY IDEOGRAPH-2F806 - : 4FBB -2F807 CJK COMPATIBILITY IDEOGRAPH-2F807 - : 5002 -2F808 CJK COMPATIBILITY IDEOGRAPH-2F808 - : 507A -2F809 CJK COMPATIBILITY IDEOGRAPH-2F809 - : 5099 -2F80A CJK COMPATIBILITY IDEOGRAPH-2F80A - : 50E7 -2F80B CJK COMPATIBILITY IDEOGRAPH-2F80B - : 50CF -2F80C CJK COMPATIBILITY IDEOGRAPH-2F80C - : 349E -2F80D CJK COMPATIBILITY IDEOGRAPH-2F80D - x 5145 - : 2063A -2F80E CJK COMPATIBILITY IDEOGRAPH-2F80E - : 514D -2F80F CJK COMPATIBILITY IDEOGRAPH-2F80F - : 5154 -2F810 CJK COMPATIBILITY IDEOGRAPH-2F810 - : 5164 -2F811 CJK COMPATIBILITY IDEOGRAPH-2F811 - : 5177 -2F812 CJK COMPATIBILITY IDEOGRAPH-2F812 - : 2051C -2F813 CJK COMPATIBILITY IDEOGRAPH-2F813 - : 34B9 -2F814 CJK COMPATIBILITY IDEOGRAPH-2F814 - x 5185 - : 5167 -2F815 CJK COMPATIBILITY IDEOGRAPH-2F815 - : 518D -2F816 CJK COMPATIBILITY IDEOGRAPH-2F816 - : 2054B -2F817 CJK COMPATIBILITY IDEOGRAPH-2F817 - : 5197 -2F818 CJK COMPATIBILITY IDEOGRAPH-2F818 - : 51A4 -2F819 CJK COMPATIBILITY IDEOGRAPH-2F819 - : 4ECC -2F81A CJK COMPATIBILITY IDEOGRAPH-2F81A - : 51AC -2F81B CJK COMPATIBILITY IDEOGRAPH-2F81B - : 51B5 -2F81C CJK COMPATIBILITY IDEOGRAPH-2F81C - : 291DF -2F81D CJK COMPATIBILITY IDEOGRAPH-2F81D - : 51F5 -2F81E CJK COMPATIBILITY IDEOGRAPH-2F81E - : 5203 -2F81F CJK COMPATIBILITY IDEOGRAPH-2F81F - : 34DF -2F820 CJK COMPATIBILITY IDEOGRAPH-2F820 - : 523B -2F821 CJK COMPATIBILITY IDEOGRAPH-2F821 - : 5246 -2F822 CJK COMPATIBILITY IDEOGRAPH-2F822 - : 5272 -2F823 CJK COMPATIBILITY IDEOGRAPH-2F823 - : 5277 -2F824 CJK COMPATIBILITY IDEOGRAPH-2F824 - : 3515 -2F825 CJK COMPATIBILITY IDEOGRAPH-2F825 - : 52C7 -2F826 CJK COMPATIBILITY IDEOGRAPH-2F826 - : 52C9 -2F827 CJK COMPATIBILITY IDEOGRAPH-2F827 - : 52E4 -2F828 CJK COMPATIBILITY IDEOGRAPH-2F828 - : 52FA -2F829 CJK COMPATIBILITY IDEOGRAPH-2F829 - : 5305 -2F82A CJK COMPATIBILITY IDEOGRAPH-2F82A - : 5306 -2F82B CJK COMPATIBILITY IDEOGRAPH-2F82B - : 5317 -2F82C CJK COMPATIBILITY IDEOGRAPH-2F82C - : 5349 -2F82D CJK COMPATIBILITY IDEOGRAPH-2F82D - : 5351 -2F82E CJK COMPATIBILITY IDEOGRAPH-2F82E - : 535A -2F82F CJK COMPATIBILITY IDEOGRAPH-2F82F - : 5373 -2F830 CJK COMPATIBILITY IDEOGRAPH-2F830 - : 537D -2F831 CJK COMPATIBILITY IDEOGRAPH-2F831 - : 537F -2F832 CJK COMPATIBILITY IDEOGRAPH-2F832 - : 537F -2F833 CJK COMPATIBILITY IDEOGRAPH-2F833 - : 537F -2F834 CJK COMPATIBILITY IDEOGRAPH-2F834 - : 20A2C -2F835 CJK COMPATIBILITY IDEOGRAPH-2F835 - : 7070 -2F836 CJK COMPATIBILITY IDEOGRAPH-2F836 - : 53CA -2F837 CJK COMPATIBILITY IDEOGRAPH-2F837 - : 53DF -2F838 CJK COMPATIBILITY IDEOGRAPH-2F838 - : 20B63 -2F839 CJK COMPATIBILITY IDEOGRAPH-2F839 - : 53EB -2F83A CJK COMPATIBILITY IDEOGRAPH-2F83A - : 53F1 -2F83B CJK COMPATIBILITY IDEOGRAPH-2F83B - : 5406 -2F83C CJK COMPATIBILITY IDEOGRAPH-2F83C - : 549E -2F83D CJK COMPATIBILITY IDEOGRAPH-2F83D - : 5438 -2F83E CJK COMPATIBILITY IDEOGRAPH-2F83E - : 5448 -2F83F CJK COMPATIBILITY IDEOGRAPH-2F83F - : 5468 -2F840 CJK COMPATIBILITY IDEOGRAPH-2F840 - : 54A2 -2F841 CJK COMPATIBILITY IDEOGRAPH-2F841 - : 54F6 -2F842 CJK COMPATIBILITY IDEOGRAPH-2F842 - : 5510 -2F843 CJK COMPATIBILITY IDEOGRAPH-2F843 - : 5553 -2F844 CJK COMPATIBILITY IDEOGRAPH-2F844 - : 5563 -2F845 CJK COMPATIBILITY IDEOGRAPH-2F845 - : 5584 -2F846 CJK COMPATIBILITY IDEOGRAPH-2F846 - : 5584 -2F847 CJK COMPATIBILITY IDEOGRAPH-2F847 - : 5599 -2F848 CJK COMPATIBILITY IDEOGRAPH-2F848 - : 55AB -2F849 CJK COMPATIBILITY IDEOGRAPH-2F849 - : 55B3 -2F84A CJK COMPATIBILITY IDEOGRAPH-2F84A - : 55C2 -2F84B CJK COMPATIBILITY IDEOGRAPH-2F84B - : 5716 -2F84C CJK COMPATIBILITY IDEOGRAPH-2F84C - : 5606 -2F84D CJK COMPATIBILITY IDEOGRAPH-2F84D - : 5717 -2F84E CJK COMPATIBILITY IDEOGRAPH-2F84E - : 5651 -2F84F CJK COMPATIBILITY IDEOGRAPH-2F84F - : 5674 -2F850 CJK COMPATIBILITY IDEOGRAPH-2F850 - : 5207 -2F851 CJK COMPATIBILITY IDEOGRAPH-2F851 - : 58EE -2F852 CJK COMPATIBILITY IDEOGRAPH-2F852 - : 57CE -2F853 CJK COMPATIBILITY IDEOGRAPH-2F853 - : 57F4 -2F854 CJK COMPATIBILITY IDEOGRAPH-2F854 - : 580D -2F855 CJK COMPATIBILITY IDEOGRAPH-2F855 - : 578B -2F856 CJK COMPATIBILITY IDEOGRAPH-2F856 - : 5832 -2F857 CJK COMPATIBILITY IDEOGRAPH-2F857 - : 5831 -2F858 CJK COMPATIBILITY IDEOGRAPH-2F858 - : 58AC -2F859 CJK COMPATIBILITY IDEOGRAPH-2F859 - : 214E4 -2F85A CJK COMPATIBILITY IDEOGRAPH-2F85A - x 58F3 - : 58F2 -2F85B CJK COMPATIBILITY IDEOGRAPH-2F85B - x 21533 - : 58F7 -2F85C CJK COMPATIBILITY IDEOGRAPH-2F85C - : 5906 -2F85D CJK COMPATIBILITY IDEOGRAPH-2F85D - : 591A -2F85E CJK COMPATIBILITY IDEOGRAPH-2F85E - : 5922 -2F85F CJK COMPATIBILITY IDEOGRAPH-2F85F - : 5962 -2F860 CJK COMPATIBILITY IDEOGRAPH-2F860 - : 216A8 -2F861 CJK COMPATIBILITY IDEOGRAPH-2F861 - : 216EA -2F862 CJK COMPATIBILITY IDEOGRAPH-2F862 - : 59EC -2F863 CJK COMPATIBILITY IDEOGRAPH-2F863 - : 5A1B -2F864 CJK COMPATIBILITY IDEOGRAPH-2F864 - : 5A27 -2F865 CJK COMPATIBILITY IDEOGRAPH-2F865 - : 59D8 -2F866 CJK COMPATIBILITY IDEOGRAPH-2F866 - : 5A66 -2F867 CJK COMPATIBILITY IDEOGRAPH-2F867 - : 36EE -2F868 CJK COMPATIBILITY IDEOGRAPH-2F868 - : 36FC -2F869 CJK COMPATIBILITY IDEOGRAPH-2F869 - : 5B08 -2F86A CJK COMPATIBILITY IDEOGRAPH-2F86A - : 5B3E -2F86B CJK COMPATIBILITY IDEOGRAPH-2F86B - : 5B3E -2F86C CJK COMPATIBILITY IDEOGRAPH-2F86C - : 219C8 -2F86D CJK COMPATIBILITY IDEOGRAPH-2F86D - : 5BC3 -2F86E CJK COMPATIBILITY IDEOGRAPH-2F86E - : 5BD8 -2F86F CJK COMPATIBILITY IDEOGRAPH-2F86F - : 5BE7 -2F870 CJK COMPATIBILITY IDEOGRAPH-2F870 - : 5BF3 -2F871 CJK COMPATIBILITY IDEOGRAPH-2F871 - : 21B18 -2F872 CJK COMPATIBILITY IDEOGRAPH-2F872 - : 5BFF -2F873 CJK COMPATIBILITY IDEOGRAPH-2F873 - : 5C06 -2F874 CJK COMPATIBILITY IDEOGRAPH-2F874 - : 5F53 -2F875 CJK COMPATIBILITY IDEOGRAPH-2F875 - : 5C22 -2F876 CJK COMPATIBILITY IDEOGRAPH-2F876 - : 3781 -2F877 CJK COMPATIBILITY IDEOGRAPH-2F877 - : 5C60 -2F878 CJK COMPATIBILITY IDEOGRAPH-2F878 - : 5C6E -2F879 CJK COMPATIBILITY IDEOGRAPH-2F879 - : 5CC0 -2F87A CJK COMPATIBILITY IDEOGRAPH-2F87A - : 5C8D -2F87B CJK COMPATIBILITY IDEOGRAPH-2F87B - : 21DE4 -2F87C CJK COMPATIBILITY IDEOGRAPH-2F87C - : 5D43 -2F87D CJK COMPATIBILITY IDEOGRAPH-2F87D - : 21DE6 -2F87E CJK COMPATIBILITY IDEOGRAPH-2F87E - : 5D6E -2F87F CJK COMPATIBILITY IDEOGRAPH-2F87F - : 5D6B -2F880 CJK COMPATIBILITY IDEOGRAPH-2F880 - : 5D7C -2F881 CJK COMPATIBILITY IDEOGRAPH-2F881 - : 5DE1 -2F882 CJK COMPATIBILITY IDEOGRAPH-2F882 - : 5DE2 -2F883 CJK COMPATIBILITY IDEOGRAPH-2F883 - : 382F -2F884 CJK COMPATIBILITY IDEOGRAPH-2F884 - : 5DFD -2F885 CJK COMPATIBILITY IDEOGRAPH-2F885 - : 5E28 -2F886 CJK COMPATIBILITY IDEOGRAPH-2F886 - : 5E3D -2F887 CJK COMPATIBILITY IDEOGRAPH-2F887 - : 5E69 -2F888 CJK COMPATIBILITY IDEOGRAPH-2F888 - : 3862 -2F889 CJK COMPATIBILITY IDEOGRAPH-2F889 - : 22183 -2F88A CJK COMPATIBILITY IDEOGRAPH-2F88A - : 387C -2F88B CJK COMPATIBILITY IDEOGRAPH-2F88B - : 5EB0 -2F88C CJK COMPATIBILITY IDEOGRAPH-2F88C - : 5EB3 -2F88D CJK COMPATIBILITY IDEOGRAPH-2F88D - : 5EB6 -2F88E CJK COMPATIBILITY IDEOGRAPH-2F88E - : 5ECA -2F88F CJK COMPATIBILITY IDEOGRAPH-2F88F - : 2A392 -2F890 CJK COMPATIBILITY IDEOGRAPH-2F890 - : 5EFE -2F891 CJK COMPATIBILITY IDEOGRAPH-2F891 - : 22331 -2F892 CJK COMPATIBILITY IDEOGRAPH-2F892 - : 22331 -2F893 CJK COMPATIBILITY IDEOGRAPH-2F893 - : 8201 -2F894 CJK COMPATIBILITY IDEOGRAPH-2F894 - : 5F22 -2F895 CJK COMPATIBILITY IDEOGRAPH-2F895 - : 5F22 -2F896 CJK COMPATIBILITY IDEOGRAPH-2F896 - : 38C7 -2F897 CJK COMPATIBILITY IDEOGRAPH-2F897 - : 232B8 -2F898 CJK COMPATIBILITY IDEOGRAPH-2F898 - : 261DA -2F899 CJK COMPATIBILITY IDEOGRAPH-2F899 - : 5F62 -2F89A CJK COMPATIBILITY IDEOGRAPH-2F89A - : 5F6B -2F89B CJK COMPATIBILITY IDEOGRAPH-2F89B - : 38E3 -2F89C CJK COMPATIBILITY IDEOGRAPH-2F89C - x 22505 - : 5F9A -2F89D CJK COMPATIBILITY IDEOGRAPH-2F89D - : 5FCD -2F89E CJK COMPATIBILITY IDEOGRAPH-2F89E - : 5FD7 -2F89F CJK COMPATIBILITY IDEOGRAPH-2F89F - : 5FF9 -2F8A0 CJK COMPATIBILITY IDEOGRAPH-2F8A0 - : 6081 -2F8A1 CJK COMPATIBILITY IDEOGRAPH-2F8A1 - : 393A -2F8A2 CJK COMPATIBILITY IDEOGRAPH-2F8A2 - : 391C -2F8A3 CJK COMPATIBILITY IDEOGRAPH-2F8A3 - : 6094 -2F8A4 CJK COMPATIBILITY IDEOGRAPH-2F8A4 - : 226D4 -2F8A5 CJK COMPATIBILITY IDEOGRAPH-2F8A5 - : 60C7 -2F8A6 CJK COMPATIBILITY IDEOGRAPH-2F8A6 - : 6148 -2F8A7 CJK COMPATIBILITY IDEOGRAPH-2F8A7 - : 614C -2F8A8 CJK COMPATIBILITY IDEOGRAPH-2F8A8 - : 614E -2F8A9 CJK COMPATIBILITY IDEOGRAPH-2F8A9 - : 614C -2F8AA CJK COMPATIBILITY IDEOGRAPH-2F8AA - : 617A -2F8AB CJK COMPATIBILITY IDEOGRAPH-2F8AB - : 618E -2F8AC CJK COMPATIBILITY IDEOGRAPH-2F8AC - : 61B2 -2F8AD CJK COMPATIBILITY IDEOGRAPH-2F8AD - : 61A4 -2F8AE CJK COMPATIBILITY IDEOGRAPH-2F8AE - : 61AF -2F8AF CJK COMPATIBILITY IDEOGRAPH-2F8AF - : 61DE -2F8B0 CJK COMPATIBILITY IDEOGRAPH-2F8B0 - : 61F2 -2F8B1 CJK COMPATIBILITY IDEOGRAPH-2F8B1 - : 61F6 -2F8B2 CJK COMPATIBILITY IDEOGRAPH-2F8B2 - : 6210 -2F8B3 CJK COMPATIBILITY IDEOGRAPH-2F8B3 - : 621B -2F8B4 CJK COMPATIBILITY IDEOGRAPH-2F8B4 - : 625D -2F8B5 CJK COMPATIBILITY IDEOGRAPH-2F8B5 - : 62B1 -2F8B6 CJK COMPATIBILITY IDEOGRAPH-2F8B6 - : 62D4 -2F8B7 CJK COMPATIBILITY IDEOGRAPH-2F8B7 - : 6350 -2F8B8 CJK COMPATIBILITY IDEOGRAPH-2F8B8 - : 22B0C -2F8B9 CJK COMPATIBILITY IDEOGRAPH-2F8B9 - : 633D -2F8BA CJK COMPATIBILITY IDEOGRAPH-2F8BA - : 62FC -2F8BB CJK COMPATIBILITY IDEOGRAPH-2F8BB - : 6368 -2F8BC CJK COMPATIBILITY IDEOGRAPH-2F8BC - : 6383 -2F8BD CJK COMPATIBILITY IDEOGRAPH-2F8BD - : 63E4 -2F8BE CJK COMPATIBILITY IDEOGRAPH-2F8BE - : 22BF1 -2F8BF CJK COMPATIBILITY IDEOGRAPH-2F8BF - : 6422 -2F8C0 CJK COMPATIBILITY IDEOGRAPH-2F8C0 - : 63C5 -2F8C1 CJK COMPATIBILITY IDEOGRAPH-2F8C1 - : 63A9 -2F8C2 CJK COMPATIBILITY IDEOGRAPH-2F8C2 - : 3A2E -2F8C3 CJK COMPATIBILITY IDEOGRAPH-2F8C3 - : 6469 -2F8C4 CJK COMPATIBILITY IDEOGRAPH-2F8C4 - : 647E -2F8C5 CJK COMPATIBILITY IDEOGRAPH-2F8C5 - : 649D -2F8C6 CJK COMPATIBILITY IDEOGRAPH-2F8C6 - : 6477 -2F8C7 CJK COMPATIBILITY IDEOGRAPH-2F8C7 - : 3A6C -2F8C8 CJK COMPATIBILITY IDEOGRAPH-2F8C8 - : 654F -2F8C9 CJK COMPATIBILITY IDEOGRAPH-2F8C9 - : 656C -2F8CA CJK COMPATIBILITY IDEOGRAPH-2F8CA - : 2300A -2F8CB CJK COMPATIBILITY IDEOGRAPH-2F8CB - : 65E3 -2F8CC CJK COMPATIBILITY IDEOGRAPH-2F8CC - : 66F8 -2F8CD CJK COMPATIBILITY IDEOGRAPH-2F8CD - : 6649 -2F8CE CJK COMPATIBILITY IDEOGRAPH-2F8CE - : 3B19 -2F8CF CJK COMPATIBILITY IDEOGRAPH-2F8CF - : 6691 -2F8D0 CJK COMPATIBILITY IDEOGRAPH-2F8D0 - : 3B08 -2F8D1 CJK COMPATIBILITY IDEOGRAPH-2F8D1 - : 3AE4 -2F8D2 CJK COMPATIBILITY IDEOGRAPH-2F8D2 - : 5192 -2F8D3 CJK COMPATIBILITY IDEOGRAPH-2F8D3 - : 5195 -2F8D4 CJK COMPATIBILITY IDEOGRAPH-2F8D4 - : 6700 -2F8D5 CJK COMPATIBILITY IDEOGRAPH-2F8D5 - : 669C -2F8D6 CJK COMPATIBILITY IDEOGRAPH-2F8D6 - : 80AD -2F8D7 CJK COMPATIBILITY IDEOGRAPH-2F8D7 - : 43D9 -2F8D8 CJK COMPATIBILITY IDEOGRAPH-2F8D8 - : 6717 -2F8D9 CJK COMPATIBILITY IDEOGRAPH-2F8D9 - : 671B -2F8DA CJK COMPATIBILITY IDEOGRAPH-2F8DA - : 6721 -2F8DB CJK COMPATIBILITY IDEOGRAPH-2F8DB - : 675E -2F8DC CJK COMPATIBILITY IDEOGRAPH-2F8DC - : 6753 -2F8DD CJK COMPATIBILITY IDEOGRAPH-2F8DD - : 233C3 -2F8DE CJK COMPATIBILITY IDEOGRAPH-2F8DE - : 3B49 -2F8DF CJK COMPATIBILITY IDEOGRAPH-2F8DF - : 67FA -2F8E0 CJK COMPATIBILITY IDEOGRAPH-2F8E0 - : 6785 -2F8E1 CJK COMPATIBILITY IDEOGRAPH-2F8E1 - : 6852 -2F8E2 CJK COMPATIBILITY IDEOGRAPH-2F8E2 - : 6885 -2F8E3 CJK COMPATIBILITY IDEOGRAPH-2F8E3 - : 2346D -2F8E4 CJK COMPATIBILITY IDEOGRAPH-2F8E4 - : 688E -2F8E5 CJK COMPATIBILITY IDEOGRAPH-2F8E5 - : 681F -2F8E6 CJK COMPATIBILITY IDEOGRAPH-2F8E6 - : 6914 -2F8E7 CJK COMPATIBILITY IDEOGRAPH-2F8E7 - : 3B9D -2F8E8 CJK COMPATIBILITY IDEOGRAPH-2F8E8 - : 6942 -2F8E9 CJK COMPATIBILITY IDEOGRAPH-2F8E9 - : 69A3 -2F8EA CJK COMPATIBILITY IDEOGRAPH-2F8EA - : 69EA -2F8EB CJK COMPATIBILITY IDEOGRAPH-2F8EB - : 6AA8 -2F8EC CJK COMPATIBILITY IDEOGRAPH-2F8EC - : 236A3 -2F8ED CJK COMPATIBILITY IDEOGRAPH-2F8ED - : 6ADB -2F8EE CJK COMPATIBILITY IDEOGRAPH-2F8EE - : 3C18 -2F8EF CJK COMPATIBILITY IDEOGRAPH-2F8EF - : 6B21 -2F8F0 CJK COMPATIBILITY IDEOGRAPH-2F8F0 - : 238A7 -2F8F1 CJK COMPATIBILITY IDEOGRAPH-2F8F1 - : 6B54 -2F8F2 CJK COMPATIBILITY IDEOGRAPH-2F8F2 - : 3C4E -2F8F3 CJK COMPATIBILITY IDEOGRAPH-2F8F3 - : 6B72 -2F8F4 CJK COMPATIBILITY IDEOGRAPH-2F8F4 - : 6B9F -2F8F5 CJK COMPATIBILITY IDEOGRAPH-2F8F5 - : 6BBA -2F8F6 CJK COMPATIBILITY IDEOGRAPH-2F8F6 - : 6BBB -2F8F7 CJK COMPATIBILITY IDEOGRAPH-2F8F7 - : 23A8D -2F8F8 CJK COMPATIBILITY IDEOGRAPH-2F8F8 - : 21D0B -2F8F9 CJK COMPATIBILITY IDEOGRAPH-2F8F9 - : 23AFA -2F8FA CJK COMPATIBILITY IDEOGRAPH-2F8FA - : 6C4E -2F8FB CJK COMPATIBILITY IDEOGRAPH-2F8FB - : 23CBC -2F8FC CJK COMPATIBILITY IDEOGRAPH-2F8FC - : 6CBF -2F8FD CJK COMPATIBILITY IDEOGRAPH-2F8FD - : 6CCD -2F8FE CJK COMPATIBILITY IDEOGRAPH-2F8FE - : 6C67 -2F8FF CJK COMPATIBILITY IDEOGRAPH-2F8FF - : 6D16 -2F900 CJK COMPATIBILITY IDEOGRAPH-2F900 - : 6D3E -2F901 CJK COMPATIBILITY IDEOGRAPH-2F901 - : 6D77 -2F902 CJK COMPATIBILITY IDEOGRAPH-2F902 - : 6D41 -2F903 CJK COMPATIBILITY IDEOGRAPH-2F903 - : 6D69 -2F904 CJK COMPATIBILITY IDEOGRAPH-2F904 - : 6D78 -2F905 CJK COMPATIBILITY IDEOGRAPH-2F905 - : 6D85 -2F906 CJK COMPATIBILITY IDEOGRAPH-2F906 - : 23D1E -2F907 CJK COMPATIBILITY IDEOGRAPH-2F907 - : 6D34 -2F908 CJK COMPATIBILITY IDEOGRAPH-2F908 - : 6E2F -2F909 CJK COMPATIBILITY IDEOGRAPH-2F909 - : 6E6E -2F90A CJK COMPATIBILITY IDEOGRAPH-2F90A - : 3D33 -2F90B CJK COMPATIBILITY IDEOGRAPH-2F90B - : 6ECB -2F90C CJK COMPATIBILITY IDEOGRAPH-2F90C - : 6EC7 -2F90D CJK COMPATIBILITY IDEOGRAPH-2F90D - : 23ED1 -2F90E CJK COMPATIBILITY IDEOGRAPH-2F90E - : 6DF9 -2F90F CJK COMPATIBILITY IDEOGRAPH-2F90F - : 6F6E -2F910 CJK COMPATIBILITY IDEOGRAPH-2F910 - : 23F5E -2F911 CJK COMPATIBILITY IDEOGRAPH-2F911 - : 23F8E -2F912 CJK COMPATIBILITY IDEOGRAPH-2F912 - : 6FC6 -2F913 CJK COMPATIBILITY IDEOGRAPH-2F913 - : 7039 -2F914 CJK COMPATIBILITY IDEOGRAPH-2F914 - : 701E -2F915 CJK COMPATIBILITY IDEOGRAPH-2F915 - : 701B -2F916 CJK COMPATIBILITY IDEOGRAPH-2F916 - : 3D96 -2F917 CJK COMPATIBILITY IDEOGRAPH-2F917 - : 704A -2F918 CJK COMPATIBILITY IDEOGRAPH-2F918 - : 707D -2F919 CJK COMPATIBILITY IDEOGRAPH-2F919 - : 7077 -2F91A CJK COMPATIBILITY IDEOGRAPH-2F91A - : 70AD -2F91B CJK COMPATIBILITY IDEOGRAPH-2F91B - : 20525 -2F91C CJK COMPATIBILITY IDEOGRAPH-2F91C - : 7145 -2F91D CJK COMPATIBILITY IDEOGRAPH-2F91D - : 24263 -2F91E CJK COMPATIBILITY IDEOGRAPH-2F91E - : 719C -2F91F CJK COMPATIBILITY IDEOGRAPH-2F91F - : 243AB -2F920 CJK COMPATIBILITY IDEOGRAPH-2F920 - : 7228 -2F921 CJK COMPATIBILITY IDEOGRAPH-2F921 - : 7235 -2F922 CJK COMPATIBILITY IDEOGRAPH-2F922 - : 7250 -2F923 CJK COMPATIBILITY IDEOGRAPH-2F923 - : 24608 -2F924 CJK COMPATIBILITY IDEOGRAPH-2F924 - : 7280 -2F925 CJK COMPATIBILITY IDEOGRAPH-2F925 - : 7295 -2F926 CJK COMPATIBILITY IDEOGRAPH-2F926 - : 24735 -2F927 CJK COMPATIBILITY IDEOGRAPH-2F927 - : 24814 -2F928 CJK COMPATIBILITY IDEOGRAPH-2F928 - : 737A -2F929 CJK COMPATIBILITY IDEOGRAPH-2F929 - : 738B -2F92A CJK COMPATIBILITY IDEOGRAPH-2F92A - : 3EAC -2F92B CJK COMPATIBILITY IDEOGRAPH-2F92B - : 73A5 -2F92C CJK COMPATIBILITY IDEOGRAPH-2F92C - : 3EB8 -2F92D CJK COMPATIBILITY IDEOGRAPH-2F92D - : 3EB8 -2F92E CJK COMPATIBILITY IDEOGRAPH-2F92E - : 7447 -2F92F CJK COMPATIBILITY IDEOGRAPH-2F92F - : 745C -2F930 CJK COMPATIBILITY IDEOGRAPH-2F930 - : 7471 -2F931 CJK COMPATIBILITY IDEOGRAPH-2F931 - : 7485 -2F932 CJK COMPATIBILITY IDEOGRAPH-2F932 - : 74CA -2F933 CJK COMPATIBILITY IDEOGRAPH-2F933 - : 3F1B -2F934 CJK COMPATIBILITY IDEOGRAPH-2F934 - : 7524 -2F935 CJK COMPATIBILITY IDEOGRAPH-2F935 - : 24C36 -2F936 CJK COMPATIBILITY IDEOGRAPH-2F936 - : 753E -2F937 CJK COMPATIBILITY IDEOGRAPH-2F937 - : 24C92 -2F938 CJK COMPATIBILITY IDEOGRAPH-2F938 - : 7570 -2F939 CJK COMPATIBILITY IDEOGRAPH-2F939 - : 2219F -2F93A CJK COMPATIBILITY IDEOGRAPH-2F93A - : 7610 -2F93B CJK COMPATIBILITY IDEOGRAPH-2F93B - : 24FA1 -2F93C CJK COMPATIBILITY IDEOGRAPH-2F93C - : 24FB8 -2F93D CJK COMPATIBILITY IDEOGRAPH-2F93D - : 25044 -2F93E CJK COMPATIBILITY IDEOGRAPH-2F93E - : 3FFC -2F93F CJK COMPATIBILITY IDEOGRAPH-2F93F - : 4008 -2F940 CJK COMPATIBILITY IDEOGRAPH-2F940 - : 76F4 -2F941 CJK COMPATIBILITY IDEOGRAPH-2F941 - : 250F3 -2F942 CJK COMPATIBILITY IDEOGRAPH-2F942 - : 250F2 -2F943 CJK COMPATIBILITY IDEOGRAPH-2F943 - : 25119 -2F944 CJK COMPATIBILITY IDEOGRAPH-2F944 - : 25133 -2F945 CJK COMPATIBILITY IDEOGRAPH-2F945 - : 771E -2F946 CJK COMPATIBILITY IDEOGRAPH-2F946 - : 771F -2F947 CJK COMPATIBILITY IDEOGRAPH-2F947 - : 771F -2F948 CJK COMPATIBILITY IDEOGRAPH-2F948 - : 774A -2F949 CJK COMPATIBILITY IDEOGRAPH-2F949 - : 4039 -2F94A CJK COMPATIBILITY IDEOGRAPH-2F94A - : 778B -2F94B CJK COMPATIBILITY IDEOGRAPH-2F94B - : 4046 -2F94C CJK COMPATIBILITY IDEOGRAPH-2F94C - : 4096 -2F94D CJK COMPATIBILITY IDEOGRAPH-2F94D - : 2541D -2F94E CJK COMPATIBILITY IDEOGRAPH-2F94E - : 784E -2F94F CJK COMPATIBILITY IDEOGRAPH-2F94F - : 788C -2F950 CJK COMPATIBILITY IDEOGRAPH-2F950 - : 78CC -2F951 CJK COMPATIBILITY IDEOGRAPH-2F951 - : 40E3 -2F952 CJK COMPATIBILITY IDEOGRAPH-2F952 - : 25626 -2F953 CJK COMPATIBILITY IDEOGRAPH-2F953 - : 7956 -2F954 CJK COMPATIBILITY IDEOGRAPH-2F954 - : 2569A -2F955 CJK COMPATIBILITY IDEOGRAPH-2F955 - : 256C5 -2F956 CJK COMPATIBILITY IDEOGRAPH-2F956 - : 798F -2F957 CJK COMPATIBILITY IDEOGRAPH-2F957 - : 79EB -2F958 CJK COMPATIBILITY IDEOGRAPH-2F958 - : 412F -2F959 CJK COMPATIBILITY IDEOGRAPH-2F959 - : 7A40 -2F95A CJK COMPATIBILITY IDEOGRAPH-2F95A - : 7A4A -2F95B CJK COMPATIBILITY IDEOGRAPH-2F95B - : 7A4F -2F95C CJK COMPATIBILITY IDEOGRAPH-2F95C - : 2597C -2F95D CJK COMPATIBILITY IDEOGRAPH-2F95D - : 25AA7 -2F95E CJK COMPATIBILITY IDEOGRAPH-2F95E - : 25AA7 -2F95F CJK COMPATIBILITY IDEOGRAPH-2F95F - : 7AEE -2F960 CJK COMPATIBILITY IDEOGRAPH-2F960 - : 4202 -2F961 CJK COMPATIBILITY IDEOGRAPH-2F961 - : 25BAB -2F962 CJK COMPATIBILITY IDEOGRAPH-2F962 - : 7BC6 -2F963 CJK COMPATIBILITY IDEOGRAPH-2F963 - : 7BC9 -2F964 CJK COMPATIBILITY IDEOGRAPH-2F964 - : 4227 -2F965 CJK COMPATIBILITY IDEOGRAPH-2F965 - : 25C80 -2F966 CJK COMPATIBILITY IDEOGRAPH-2F966 - : 7CD2 -2F967 CJK COMPATIBILITY IDEOGRAPH-2F967 - : 42A0 -2F968 CJK COMPATIBILITY IDEOGRAPH-2F968 - : 7CE8 -2F969 CJK COMPATIBILITY IDEOGRAPH-2F969 - : 7CE3 -2F96A CJK COMPATIBILITY IDEOGRAPH-2F96A - : 7D00 -2F96B CJK COMPATIBILITY IDEOGRAPH-2F96B - : 25F86 -2F96C CJK COMPATIBILITY IDEOGRAPH-2F96C - : 7D63 -2F96D CJK COMPATIBILITY IDEOGRAPH-2F96D - : 4301 -2F96E CJK COMPATIBILITY IDEOGRAPH-2F96E - : 7DC7 -2F96F CJK COMPATIBILITY IDEOGRAPH-2F96F - : 7E02 -2F970 CJK COMPATIBILITY IDEOGRAPH-2F970 - : 7E45 -2F971 CJK COMPATIBILITY IDEOGRAPH-2F971 - : 4334 -2F972 CJK COMPATIBILITY IDEOGRAPH-2F972 - : 26228 -2F973 CJK COMPATIBILITY IDEOGRAPH-2F973 - : 26247 -2F974 CJK COMPATIBILITY IDEOGRAPH-2F974 - : 4359 -2F975 CJK COMPATIBILITY IDEOGRAPH-2F975 - : 262D9 -2F976 CJK COMPATIBILITY IDEOGRAPH-2F976 - : 7F7A -2F977 CJK COMPATIBILITY IDEOGRAPH-2F977 - : 2633E -2F978 CJK COMPATIBILITY IDEOGRAPH-2F978 - : 7F95 -2F979 CJK COMPATIBILITY IDEOGRAPH-2F979 - : 7FFA -2F97A CJK COMPATIBILITY IDEOGRAPH-2F97A - : 8005 -2F97B CJK COMPATIBILITY IDEOGRAPH-2F97B - : 264DA -2F97C CJK COMPATIBILITY IDEOGRAPH-2F97C - : 26523 -2F97D CJK COMPATIBILITY IDEOGRAPH-2F97D - : 8060 -2F97E CJK COMPATIBILITY IDEOGRAPH-2F97E - : 265A8 -2F97F CJK COMPATIBILITY IDEOGRAPH-2F97F - : 8070 -2F980 CJK COMPATIBILITY IDEOGRAPH-2F980 - : 2335F -2F981 CJK COMPATIBILITY IDEOGRAPH-2F981 - : 43D5 -2F982 CJK COMPATIBILITY IDEOGRAPH-2F982 - : 80B2 -2F983 CJK COMPATIBILITY IDEOGRAPH-2F983 - : 8103 -2F984 CJK COMPATIBILITY IDEOGRAPH-2F984 - : 440B -2F985 CJK COMPATIBILITY IDEOGRAPH-2F985 - : 813E -2F986 CJK COMPATIBILITY IDEOGRAPH-2F986 - : 5AB5 -2F987 CJK COMPATIBILITY IDEOGRAPH-2F987 - : 267A7 -2F988 CJK COMPATIBILITY IDEOGRAPH-2F988 - : 267B5 -2F989 CJK COMPATIBILITY IDEOGRAPH-2F989 - : 23393 -2F98A CJK COMPATIBILITY IDEOGRAPH-2F98A - : 2339C -2F98B CJK COMPATIBILITY IDEOGRAPH-2F98B - : 8201 -2F98C CJK COMPATIBILITY IDEOGRAPH-2F98C - : 8204 -2F98D CJK COMPATIBILITY IDEOGRAPH-2F98D - : 8F9E -2F98E CJK COMPATIBILITY IDEOGRAPH-2F98E - : 446B -2F98F CJK COMPATIBILITY IDEOGRAPH-2F98F - : 8291 -2F990 CJK COMPATIBILITY IDEOGRAPH-2F990 - : 828B -2F991 CJK COMPATIBILITY IDEOGRAPH-2F991 - : 829D -2F992 CJK COMPATIBILITY IDEOGRAPH-2F992 - : 52B3 -2F993 CJK COMPATIBILITY IDEOGRAPH-2F993 - : 82B1 -2F994 CJK COMPATIBILITY IDEOGRAPH-2F994 - : 82B3 -2F995 CJK COMPATIBILITY IDEOGRAPH-2F995 - : 82BD -2F996 CJK COMPATIBILITY IDEOGRAPH-2F996 - : 82E6 -2F997 CJK COMPATIBILITY IDEOGRAPH-2F997 - : 26B3C -2F998 CJK COMPATIBILITY IDEOGRAPH-2F998 - : 82E5 -2F999 CJK COMPATIBILITY IDEOGRAPH-2F999 - : 831D -2F99A CJK COMPATIBILITY IDEOGRAPH-2F99A - : 8363 -2F99B CJK COMPATIBILITY IDEOGRAPH-2F99B - : 83AD -2F99C CJK COMPATIBILITY IDEOGRAPH-2F99C - : 8323 -2F99D CJK COMPATIBILITY IDEOGRAPH-2F99D - : 83BD -2F99E CJK COMPATIBILITY IDEOGRAPH-2F99E - : 83E7 -2F99F CJK COMPATIBILITY IDEOGRAPH-2F99F - : 8457 -2F9A0 CJK COMPATIBILITY IDEOGRAPH-2F9A0 - : 8353 -2F9A1 CJK COMPATIBILITY IDEOGRAPH-2F9A1 - : 83CA -2F9A2 CJK COMPATIBILITY IDEOGRAPH-2F9A2 - : 83CC -2F9A3 CJK COMPATIBILITY IDEOGRAPH-2F9A3 - : 83DC -2F9A4 CJK COMPATIBILITY IDEOGRAPH-2F9A4 - : 26C36 -2F9A5 CJK COMPATIBILITY IDEOGRAPH-2F9A5 - : 26D6B -2F9A6 CJK COMPATIBILITY IDEOGRAPH-2F9A6 - : 26CD5 -2F9A7 CJK COMPATIBILITY IDEOGRAPH-2F9A7 - : 452B -2F9A8 CJK COMPATIBILITY IDEOGRAPH-2F9A8 - : 84F1 -2F9A9 CJK COMPATIBILITY IDEOGRAPH-2F9A9 - : 84F3 -2F9AA CJK COMPATIBILITY IDEOGRAPH-2F9AA - : 8516 -2F9AB CJK COMPATIBILITY IDEOGRAPH-2F9AB - : 273CA -2F9AC CJK COMPATIBILITY IDEOGRAPH-2F9AC - : 8564 -2F9AD CJK COMPATIBILITY IDEOGRAPH-2F9AD - : 26F2C -2F9AE CJK COMPATIBILITY IDEOGRAPH-2F9AE - : 455D -2F9AF CJK COMPATIBILITY IDEOGRAPH-2F9AF - : 4561 -2F9B0 CJK COMPATIBILITY IDEOGRAPH-2F9B0 - : 26FB1 -2F9B1 CJK COMPATIBILITY IDEOGRAPH-2F9B1 - : 270D2 -2F9B2 CJK COMPATIBILITY IDEOGRAPH-2F9B2 - x 5914 - x 270CD - x 270F0 - : 456B -2F9B3 CJK COMPATIBILITY IDEOGRAPH-2F9B3 - : 8650 -2F9B4 CJK COMPATIBILITY IDEOGRAPH-2F9B4 - : 865C -2F9B5 CJK COMPATIBILITY IDEOGRAPH-2F9B5 - : 8667 -2F9B6 CJK COMPATIBILITY IDEOGRAPH-2F9B6 - x 27205 - : 8669 -2F9B7 CJK COMPATIBILITY IDEOGRAPH-2F9B7 - : 86A9 -2F9B8 CJK COMPATIBILITY IDEOGRAPH-2F9B8 - : 8688 -2F9B9 CJK COMPATIBILITY IDEOGRAPH-2F9B9 - : 870E -2F9BA CJK COMPATIBILITY IDEOGRAPH-2F9BA - : 86E2 -2F9BB CJK COMPATIBILITY IDEOGRAPH-2F9BB - : 8779 -2F9BC CJK COMPATIBILITY IDEOGRAPH-2F9BC - : 8728 -2F9BD CJK COMPATIBILITY IDEOGRAPH-2F9BD - : 876B -2F9BE CJK COMPATIBILITY IDEOGRAPH-2F9BE - : 8786 -2F9BF CJK COMPATIBILITY IDEOGRAPH-2F9BF - : 45D7 -2F9C0 CJK COMPATIBILITY IDEOGRAPH-2F9C0 - : 87E1 -2F9C1 CJK COMPATIBILITY IDEOGRAPH-2F9C1 - : 8801 -2F9C2 CJK COMPATIBILITY IDEOGRAPH-2F9C2 - : 45F9 -2F9C3 CJK COMPATIBILITY IDEOGRAPH-2F9C3 - : 8860 -2F9C4 CJK COMPATIBILITY IDEOGRAPH-2F9C4 - : 8863 -2F9C5 CJK COMPATIBILITY IDEOGRAPH-2F9C5 - : 27667 -2F9C6 CJK COMPATIBILITY IDEOGRAPH-2F9C6 - : 88D7 -2F9C7 CJK COMPATIBILITY IDEOGRAPH-2F9C7 - : 88DE -2F9C8 CJK COMPATIBILITY IDEOGRAPH-2F9C8 - : 4635 -2F9C9 CJK COMPATIBILITY IDEOGRAPH-2F9C9 - : 88FA -2F9CA CJK COMPATIBILITY IDEOGRAPH-2F9CA - : 34BB -2F9CB CJK COMPATIBILITY IDEOGRAPH-2F9CB - x 4695 - : 278AE -2F9CC CJK COMPATIBILITY IDEOGRAPH-2F9CC - : 27966 -2F9CD CJK COMPATIBILITY IDEOGRAPH-2F9CD - : 46BE -2F9CE CJK COMPATIBILITY IDEOGRAPH-2F9CE - : 46C7 -2F9CF CJK COMPATIBILITY IDEOGRAPH-2F9CF - : 8AA0 -2F9D0 CJK COMPATIBILITY IDEOGRAPH-2F9D0 - : 8AED -2F9D1 CJK COMPATIBILITY IDEOGRAPH-2F9D1 - : 8B8A -2F9D2 CJK COMPATIBILITY IDEOGRAPH-2F9D2 - : 8C55 -2F9D3 CJK COMPATIBILITY IDEOGRAPH-2F9D3 - : 27CA8 -2F9D4 CJK COMPATIBILITY IDEOGRAPH-2F9D4 - : 8CAB -2F9D5 CJK COMPATIBILITY IDEOGRAPH-2F9D5 - : 8CC1 -2F9D6 CJK COMPATIBILITY IDEOGRAPH-2F9D6 - x 25AD4 - : 8D1B -2F9D7 CJK COMPATIBILITY IDEOGRAPH-2F9D7 - : 8D77 -2F9D8 CJK COMPATIBILITY IDEOGRAPH-2F9D8 - : 27F2F -2F9D9 CJK COMPATIBILITY IDEOGRAPH-2F9D9 - : 20804 -2F9DA CJK COMPATIBILITY IDEOGRAPH-2F9DA - : 8DCB -2F9DB CJK COMPATIBILITY IDEOGRAPH-2F9DB - : 8DBC -2F9DC CJK COMPATIBILITY IDEOGRAPH-2F9DC - : 8DF0 -2F9DD CJK COMPATIBILITY IDEOGRAPH-2F9DD - : 208DE -2F9DE CJK COMPATIBILITY IDEOGRAPH-2F9DE - : 8ED4 -2F9DF CJK COMPATIBILITY IDEOGRAPH-2F9DF - : 8F38 -2F9E0 CJK COMPATIBILITY IDEOGRAPH-2F9E0 - : 285D2 -2F9E1 CJK COMPATIBILITY IDEOGRAPH-2F9E1 - : 285ED -2F9E2 CJK COMPATIBILITY IDEOGRAPH-2F9E2 - : 9094 -2F9E3 CJK COMPATIBILITY IDEOGRAPH-2F9E3 - : 90F1 -2F9E4 CJK COMPATIBILITY IDEOGRAPH-2F9E4 - : 9111 -2F9E5 CJK COMPATIBILITY IDEOGRAPH-2F9E5 - : 2872E -2F9E6 CJK COMPATIBILITY IDEOGRAPH-2F9E6 - : 911B -2F9E7 CJK COMPATIBILITY IDEOGRAPH-2F9E7 - : 9238 -2F9E8 CJK COMPATIBILITY IDEOGRAPH-2F9E8 - : 92D7 -2F9E9 CJK COMPATIBILITY IDEOGRAPH-2F9E9 - : 92D8 -2F9EA CJK COMPATIBILITY IDEOGRAPH-2F9EA - : 927C -2F9EB CJK COMPATIBILITY IDEOGRAPH-2F9EB - : 93F9 -2F9EC CJK COMPATIBILITY IDEOGRAPH-2F9EC - : 9415 -2F9ED CJK COMPATIBILITY IDEOGRAPH-2F9ED - : 28BFA -2F9EE CJK COMPATIBILITY IDEOGRAPH-2F9EE - : 958B -2F9EF CJK COMPATIBILITY IDEOGRAPH-2F9EF - : 4995 -2F9F0 CJK COMPATIBILITY IDEOGRAPH-2F9F0 - : 95B7 -2F9F1 CJK COMPATIBILITY IDEOGRAPH-2F9F1 - : 28D77 -2F9F2 CJK COMPATIBILITY IDEOGRAPH-2F9F2 - : 49E6 -2F9F3 CJK COMPATIBILITY IDEOGRAPH-2F9F3 - : 96C3 -2F9F4 CJK COMPATIBILITY IDEOGRAPH-2F9F4 - : 5DB2 -2F9F5 CJK COMPATIBILITY IDEOGRAPH-2F9F5 - : 9723 -2F9F6 CJK COMPATIBILITY IDEOGRAPH-2F9F6 - : 29145 -2F9F7 CJK COMPATIBILITY IDEOGRAPH-2F9F7 - : 2921A -2F9F8 CJK COMPATIBILITY IDEOGRAPH-2F9F8 - : 4A6E -2F9F9 CJK COMPATIBILITY IDEOGRAPH-2F9F9 - : 4A76 -2F9FA CJK COMPATIBILITY IDEOGRAPH-2F9FA - : 97E0 -2F9FB CJK COMPATIBILITY IDEOGRAPH-2F9FB - : 2940A -2F9FC CJK COMPATIBILITY IDEOGRAPH-2F9FC - : 4AB2 -2F9FD CJK COMPATIBILITY IDEOGRAPH-2F9FD - : 29496 -2F9FE CJK COMPATIBILITY IDEOGRAPH-2F9FE - : 980B -2F9FF CJK COMPATIBILITY IDEOGRAPH-2F9FF - : 980B -2FA00 CJK COMPATIBILITY IDEOGRAPH-2FA00 - : 9829 -2FA01 CJK COMPATIBILITY IDEOGRAPH-2FA01 - : 295B6 -2FA02 CJK COMPATIBILITY IDEOGRAPH-2FA02 - : 98E2 -2FA03 CJK COMPATIBILITY IDEOGRAPH-2FA03 - : 4B33 -2FA04 CJK COMPATIBILITY IDEOGRAPH-2FA04 - : 9929 -2FA05 CJK COMPATIBILITY IDEOGRAPH-2FA05 - : 99A7 -2FA06 CJK COMPATIBILITY IDEOGRAPH-2FA06 - : 99C2 -2FA07 CJK COMPATIBILITY IDEOGRAPH-2FA07 - : 99FE -2FA08 CJK COMPATIBILITY IDEOGRAPH-2FA08 - : 4BCE -2FA09 CJK COMPATIBILITY IDEOGRAPH-2FA09 - : 29B30 -2FA0A CJK COMPATIBILITY IDEOGRAPH-2FA0A - : 9B12 -2FA0B CJK COMPATIBILITY IDEOGRAPH-2FA0B - : 9C40 -2FA0C CJK COMPATIBILITY IDEOGRAPH-2FA0C - : 9CFD -2FA0D CJK COMPATIBILITY IDEOGRAPH-2FA0D - : 4CCE -2FA0E CJK COMPATIBILITY IDEOGRAPH-2FA0E - : 4CED -2FA0F CJK COMPATIBILITY IDEOGRAPH-2FA0F - : 9D67 -2FA10 CJK COMPATIBILITY IDEOGRAPH-2FA10 - : 2A0CE -2FA11 CJK COMPATIBILITY IDEOGRAPH-2FA11 - : 4CF8 -2FA12 CJK COMPATIBILITY IDEOGRAPH-2FA12 - : 2A105 -2FA13 CJK COMPATIBILITY IDEOGRAPH-2FA13 - : 2A20E -2FA14 CJK COMPATIBILITY IDEOGRAPH-2FA14 - : 2A291 -2FA15 CJK COMPATIBILITY IDEOGRAPH-2FA15 - : 9EBB -2FA16 CJK COMPATIBILITY IDEOGRAPH-2FA16 - : 4D56 -2FA17 CJK COMPATIBILITY IDEOGRAPH-2FA17 - : 9EF9 -2FA18 CJK COMPATIBILITY IDEOGRAPH-2FA18 - : 9EFE -2FA19 CJK COMPATIBILITY IDEOGRAPH-2FA19 - : 9F05 -2FA1A CJK COMPATIBILITY IDEOGRAPH-2FA1A - : 9F0F -2FA1B CJK COMPATIBILITY IDEOGRAPH-2FA1B - : 9F16 -2FA1C CJK COMPATIBILITY IDEOGRAPH-2FA1C - : 9F3B -2FA1D CJK COMPATIBILITY IDEOGRAPH-2FA1D - : 2A600 -@@ 2FF80 Unassigned 2FFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -2FFFE <not a character> - * the value 2FFFE is guaranteed not to be a Unicode character at all -2FFFF <not a character> - * the value 2FFFF is guaranteed not to be a Unicode character at all -@@ 3FF80 Unassigned 3FFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -3FFFE <not a character> - * the value 3FFFE is guaranteed not to be a Unicode character at all -3FFFF <not a character> - * the value 3FFFF is guaranteed not to be a Unicode character at all -@@ 4FF80 Unassigned 4FFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -4FFFE <not a character> - * the value 4FFFE is guaranteed not to be a Unicode character at all -4FFFF <not a character> - * the value 4FFFF is guaranteed not to be a Unicode character at all -@@ 5FF80 Unassigned 5FFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -5FFFE <not a character> - * the value 5FFFE is guaranteed not to be a Unicode character at all -5FFFF <not a character> - * the value 5FFFF is guaranteed not to be a Unicode character at all -@@ 6FF80 Unassigned 6FFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -6FFFE <not a character> - * the value 6FFFE is guaranteed not to be a Unicode character at all -6FFFF <not a character> - * the value 6FFFF is guaranteed not to be a Unicode character at all -@@ 7FF80 Unassigned 7FFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -7FFFE <not a character> - * the value 7FFFE is guaranteed not to be a Unicode character at all -7FFFF <not a character> - * the value 7FFFF is guaranteed not to be a Unicode character at all -@@ 8FF80 Unassigned 8FFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -8FFFE <not a character> - * the value 8FFFE is guaranteed not to be a Unicode character at all -8FFFF <not a character> - * the value 8FFFF is guaranteed not to be a Unicode character at all -@@ 9FF80 Unassigned 9FFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -9FFFE <not a character> - * the value 9FFFE is guaranteed not to be a Unicode character at all -9FFFF <not a character> - * the value 9FFFF is guaranteed not to be a Unicode character at all -@@ AFF80 Unassigned AFFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -AFFFE <not a character> - * the value AFFFE is guaranteed not to be a Unicode character at all -AFFFF <not a character> - * the value AFFFF is guaranteed not to be a Unicode character at all -@@ BFF80 Unassigned BFFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -BFFFE <not a character> - * the value BFFFE is guaranteed not to be a Unicode character at all -BFFFF <not a character> - * the value BFFFF is guaranteed not to be a Unicode character at all -@@ CFF80 Unassigned CFFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -CFFFE <not a character> - * the value CFFFE is guaranteed not to be a Unicode character at all -CFFFF <not a character> - * the value CFFFF is guaranteed not to be a Unicode character at all -@@ DFF80 Unassigned DFFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -DFFFE <not a character> - * the value DFFFE is guaranteed not to be a Unicode character at all -DFFFF <not a character> - * the value DFFFF is guaranteed not to be a Unicode character at all -@@ E0000 Tags E007F -@ Tag identifiers -E0001 LANGUAGE TAG -@ Tag components -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 -@@ E0100 Variation Selectors Supplement E01EF -@+ These complete the set started at FE00 to FE0F -@ Variation selectors -E0100 VARIATION SELECTOR-17 - * these are abbreviated VS17, and so on -E0101 VARIATION SELECTOR-18 -E0102 VARIATION SELECTOR-19 -E0103 VARIATION SELECTOR-20 -E0104 VARIATION SELECTOR-21 -E0105 VARIATION SELECTOR-22 -E0106 VARIATION SELECTOR-23 -E0107 VARIATION SELECTOR-24 -E0108 VARIATION SELECTOR-25 -E0109 VARIATION SELECTOR-26 -E010A VARIATION SELECTOR-27 -E010B VARIATION SELECTOR-28 -E010C VARIATION SELECTOR-29 -E010D VARIATION SELECTOR-30 -E010E VARIATION SELECTOR-31 -E010F VARIATION SELECTOR-32 -E0110 VARIATION SELECTOR-33 -E0111 VARIATION SELECTOR-34 -E0112 VARIATION SELECTOR-35 -E0113 VARIATION SELECTOR-36 -E0114 VARIATION SELECTOR-37 -E0115 VARIATION SELECTOR-38 -E0116 VARIATION SELECTOR-39 -E0117 VARIATION SELECTOR-40 -E0118 VARIATION SELECTOR-41 -E0119 VARIATION SELECTOR-42 -E011A VARIATION SELECTOR-43 -E011B VARIATION SELECTOR-44 -E011C VARIATION SELECTOR-45 -E011D VARIATION SELECTOR-46 -E011E VARIATION SELECTOR-47 -E011F VARIATION SELECTOR-48 -E0120 VARIATION SELECTOR-49 -E0121 VARIATION SELECTOR-50 -E0122 VARIATION SELECTOR-51 -E0123 VARIATION SELECTOR-52 -E0124 VARIATION SELECTOR-53 -E0125 VARIATION SELECTOR-54 -E0126 VARIATION SELECTOR-55 -E0127 VARIATION SELECTOR-56 -E0128 VARIATION SELECTOR-57 -E0129 VARIATION SELECTOR-58 -E012A VARIATION SELECTOR-59 -E012B VARIATION SELECTOR-60 -E012C VARIATION SELECTOR-61 -E012D VARIATION SELECTOR-62 -E012E VARIATION SELECTOR-63 -E012F VARIATION SELECTOR-64 -E0130 VARIATION SELECTOR-65 -E0131 VARIATION SELECTOR-66 -E0132 VARIATION SELECTOR-67 -E0133 VARIATION SELECTOR-68 -E0134 VARIATION SELECTOR-69 -E0135 VARIATION SELECTOR-70 -E0136 VARIATION SELECTOR-71 -E0137 VARIATION SELECTOR-72 -E0138 VARIATION SELECTOR-73 -E0139 VARIATION SELECTOR-74 -E013A VARIATION SELECTOR-75 -E013B VARIATION SELECTOR-76 -E013C VARIATION SELECTOR-77 -E013D VARIATION SELECTOR-78 -E013E VARIATION SELECTOR-79 -E013F VARIATION SELECTOR-80 -E0140 VARIATION SELECTOR-81 -E0141 VARIATION SELECTOR-82 -E0142 VARIATION SELECTOR-83 -E0143 VARIATION SELECTOR-84 -E0144 VARIATION SELECTOR-85 -E0145 VARIATION SELECTOR-86 -E0146 VARIATION SELECTOR-87 -E0147 VARIATION SELECTOR-88 -E0148 VARIATION SELECTOR-89 -E0149 VARIATION SELECTOR-90 -E014A VARIATION SELECTOR-91 -E014B VARIATION SELECTOR-92 -E014C VARIATION SELECTOR-93 -E014D VARIATION SELECTOR-94 -E014E VARIATION SELECTOR-95 -E014F VARIATION SELECTOR-96 -E0150 VARIATION SELECTOR-97 -E0151 VARIATION SELECTOR-98 -E0152 VARIATION SELECTOR-99 -E0153 VARIATION SELECTOR-100 -E0154 VARIATION SELECTOR-101 -E0155 VARIATION SELECTOR-102 -E0156 VARIATION SELECTOR-103 -E0157 VARIATION SELECTOR-104 -E0158 VARIATION SELECTOR-105 -E0159 VARIATION SELECTOR-106 -E015A VARIATION SELECTOR-107 -E015B VARIATION SELECTOR-108 -E015C VARIATION SELECTOR-109 -E015D VARIATION SELECTOR-110 -E015E VARIATION SELECTOR-111 -E015F VARIATION SELECTOR-112 -E0160 VARIATION SELECTOR-113 -E0161 VARIATION SELECTOR-114 -E0162 VARIATION SELECTOR-115 -E0163 VARIATION SELECTOR-116 -E0164 VARIATION SELECTOR-117 -E0165 VARIATION SELECTOR-118 -E0166 VARIATION SELECTOR-119 -E0167 VARIATION SELECTOR-120 -E0168 VARIATION SELECTOR-121 -E0169 VARIATION SELECTOR-122 -E016A VARIATION SELECTOR-123 -E016B VARIATION SELECTOR-124 -E016C VARIATION SELECTOR-125 -E016D VARIATION SELECTOR-126 -E016E VARIATION SELECTOR-127 -E016F VARIATION SELECTOR-128 -E0170 VARIATION SELECTOR-129 -E0171 VARIATION SELECTOR-130 -E0172 VARIATION SELECTOR-131 -E0173 VARIATION SELECTOR-132 -E0174 VARIATION SELECTOR-133 -E0175 VARIATION SELECTOR-134 -E0176 VARIATION SELECTOR-135 -E0177 VARIATION SELECTOR-136 -E0178 VARIATION SELECTOR-137 -E0179 VARIATION SELECTOR-138 -E017A VARIATION SELECTOR-139 -E017B VARIATION SELECTOR-140 -E017C VARIATION SELECTOR-141 -E017D VARIATION SELECTOR-142 -E017E VARIATION SELECTOR-143 -E017F VARIATION SELECTOR-144 -E0180 VARIATION SELECTOR-145 -E0181 VARIATION SELECTOR-146 -E0182 VARIATION SELECTOR-147 -E0183 VARIATION SELECTOR-148 -E0184 VARIATION SELECTOR-149 -E0185 VARIATION SELECTOR-150 -E0186 VARIATION SELECTOR-151 -E0187 VARIATION SELECTOR-152 -E0188 VARIATION SELECTOR-153 -E0189 VARIATION SELECTOR-154 -E018A VARIATION SELECTOR-155 -E018B VARIATION SELECTOR-156 -E018C VARIATION SELECTOR-157 -E018D VARIATION SELECTOR-158 -E018E VARIATION SELECTOR-159 -E018F VARIATION SELECTOR-160 -E0190 VARIATION SELECTOR-161 -E0191 VARIATION SELECTOR-162 -E0192 VARIATION SELECTOR-163 -E0193 VARIATION SELECTOR-164 -E0194 VARIATION SELECTOR-165 -E0195 VARIATION SELECTOR-166 -E0196 VARIATION SELECTOR-167 -E0197 VARIATION SELECTOR-168 -E0198 VARIATION SELECTOR-169 -E0199 VARIATION SELECTOR-170 -E019A VARIATION SELECTOR-171 -E019B VARIATION SELECTOR-172 -E019C VARIATION SELECTOR-173 -E019D VARIATION SELECTOR-174 -E019E VARIATION SELECTOR-175 -E019F VARIATION SELECTOR-176 -E01A0 VARIATION SELECTOR-177 -E01A1 VARIATION SELECTOR-178 -E01A2 VARIATION SELECTOR-179 -E01A3 VARIATION SELECTOR-180 -E01A4 VARIATION SELECTOR-181 -E01A5 VARIATION SELECTOR-182 -E01A6 VARIATION SELECTOR-183 -E01A7 VARIATION SELECTOR-184 -E01A8 VARIATION SELECTOR-185 -E01A9 VARIATION SELECTOR-186 -E01AA VARIATION SELECTOR-187 -E01AB VARIATION SELECTOR-188 -E01AC VARIATION SELECTOR-189 -E01AD VARIATION SELECTOR-190 -E01AE VARIATION SELECTOR-191 -E01AF VARIATION SELECTOR-192 -E01B0 VARIATION SELECTOR-193 -E01B1 VARIATION SELECTOR-194 -E01B2 VARIATION SELECTOR-195 -E01B3 VARIATION SELECTOR-196 -E01B4 VARIATION SELECTOR-197 -E01B5 VARIATION SELECTOR-198 -E01B6 VARIATION SELECTOR-199 -E01B7 VARIATION SELECTOR-200 -E01B8 VARIATION SELECTOR-201 -E01B9 VARIATION SELECTOR-202 -E01BA VARIATION SELECTOR-203 -E01BB VARIATION SELECTOR-204 -E01BC VARIATION SELECTOR-205 -E01BD VARIATION SELECTOR-206 -E01BE VARIATION SELECTOR-207 -E01BF VARIATION SELECTOR-208 -E01C0 VARIATION SELECTOR-209 -E01C1 VARIATION SELECTOR-210 -E01C2 VARIATION SELECTOR-211 -E01C3 VARIATION SELECTOR-212 -E01C4 VARIATION SELECTOR-213 -E01C5 VARIATION SELECTOR-214 -E01C6 VARIATION SELECTOR-215 -E01C7 VARIATION SELECTOR-216 -E01C8 VARIATION SELECTOR-217 -E01C9 VARIATION SELECTOR-218 -E01CA VARIATION SELECTOR-219 -E01CB VARIATION SELECTOR-220 -E01CC VARIATION SELECTOR-221 -E01CD VARIATION SELECTOR-222 -E01CE VARIATION SELECTOR-223 -E01CF VARIATION SELECTOR-224 -E01D0 VARIATION SELECTOR-225 -E01D1 VARIATION SELECTOR-226 -E01D2 VARIATION SELECTOR-227 -E01D3 VARIATION SELECTOR-228 -E01D4 VARIATION SELECTOR-229 -E01D5 VARIATION SELECTOR-230 -E01D6 VARIATION SELECTOR-231 -E01D7 VARIATION SELECTOR-232 -E01D8 VARIATION SELECTOR-233 -E01D9 VARIATION SELECTOR-234 -E01DA VARIATION SELECTOR-235 -E01DB VARIATION SELECTOR-236 -E01DC VARIATION SELECTOR-237 -E01DD VARIATION SELECTOR-238 -E01DE VARIATION SELECTOR-239 -E01DF VARIATION SELECTOR-240 -E01E0 VARIATION SELECTOR-241 -E01E1 VARIATION SELECTOR-242 -E01E2 VARIATION SELECTOR-243 -E01E3 VARIATION SELECTOR-244 -E01E4 VARIATION SELECTOR-245 -E01E5 VARIATION SELECTOR-246 -E01E6 VARIATION SELECTOR-247 -E01E7 VARIATION SELECTOR-248 -E01E8 VARIATION SELECTOR-249 -E01E9 VARIATION SELECTOR-250 -E01EA VARIATION SELECTOR-251 -E01EB VARIATION SELECTOR-252 -E01EC VARIATION SELECTOR-253 -E01ED VARIATION SELECTOR-254 -E01EE VARIATION SELECTOR-255 -E01EF VARIATION SELECTOR-256 -@@ EFF80 Unassigned EFFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -EFFFE <not a character> - * the value EFFFE is guaranteed not to be a Unicode character at all -EFFFF <not a character> - * the value EFFFF is guaranteed not to be a Unicode character at all -@@ FFF80 Supplementary Private Use Area-A FFFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -FFFFE <not a character> - * the value FFFFE is guaranteed not to be a Unicode character at all -FFFFF <not a character> - * the value FFFFF is guaranteed not to be a Unicode character at all -@@ 10FF80 Supplementary Private Use Area-B 10FFFF -@ Noncharacters -@+ These codes are intended for process internal uses, but are not permitted for interchange. -10FFFE <not a character> - * the value 10FFFE is guaranteed not to be a Unicode character at all -10FFFF <not a character> - * the value 10FFFF is guaranteed not to be a Unicode character at all diff --git a/Master/tlpkg/tlperl.old/lib/unicore/NormalizationCorrections.txt b/Master/tlpkg/tlperl.old/lib/unicore/NormalizationCorrections.txt deleted file mode 100644 index 9391acefbb7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/NormalizationCorrections.txt +++ /dev/null @@ -1,48 +0,0 @@ -# NormalizationCorrections-4.1.0.txt -# Date: 2005-03-17, 15:21:00 PST [KW] -# -# This file is a normative contributory data file in the -# Unicode Character Database. -# -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# -# The normalization stabilization policy of the Unicode -# Consortium ordinarily precludes any change to the decomposition -# for any character, once established in a relevant version -# of the UnicodeData.txt data file. However, under certain -# exceptional (and rare) conditions, an error in a decomposition -# mapping may be discovered that is truly just an unintended -# typo in the data, and not a matter of dubious interpretation. -# -# Whenever such an error may be found, and if it meets the -# requirements for possible exceptions to normalization -# stability, the correction is entered in this data file, -# so that any implementation depending on absolute stability -# of normalization, *including* any errors in the data, can -# safely reconstruct the exact state of the data tables at -# any given version of Unicode. -# -# Currently this list has exactly six entries in it, one for the -# typo found and corrected in Corrigendum #3, and five for -# the typos and misidentifications found and corrected in -# Corrigendum #4. All efforts -# will be made to keep the entries limited to just those fixes. -# -# Interpretation of the fields: -# Field 1: Unicode code point -# Field 2: Original (erroneous) decomposition -# Field 3: Corrected decomposition -# Field 4: Version of Unicode for which the correction was -# entered into UnicodeData.txt, in n.n.n format. -# Comment: Indicates the Unicode Corrigendum which documents -# the correction -# -# For more information, see UAX #15, Unicode Normalization Forms. -# -F951;96FB;964B;3.2.0 # Corrigendum 3 -2F868;2136A;36FC;4.0.0 # Corrigendum 4 -2F874;5F33;5F53;4.0.0 # Corrigendum 4 -2F91F;43AB;243AB;4.0.0 # Corrigendum 4 -2F95F;7AAE;7AEE;4.0.0 # Corrigendum 4 -2F9BF;4D57;45D7;4.0.0 # Corrigendum 4 diff --git a/Master/tlpkg/tlperl.old/lib/unicore/PVA.pl b/Master/tlpkg/tlperl.old/lib/unicore/PVA.pl deleted file mode 100644 index d836bdb7549..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/PVA.pl +++ /dev/null @@ -1,2044 +0,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::PropertyAlias = ( -'sc', -'Script', -'xonfkd', -'ExpandsOnNFKD', -'patsyn', -'PatternSyntax', -'nfkcqc', -'NFKCQuickCheck', -'oalpha', -'OtherAlphabetic', -'gcb', -'GraphemeClusterBreak', -'nfcqc', -'NFCQuickCheck', -'ids', -'IDStart', -'lb', -'LineBreak', -'stc', -'SimpleTitlecaseMapping', -'xonfkc', -'ExpandsOnNFKC', -'patws', -'PatternWhiteSpace', -'tc', -'TitlecaseMapping', -'lower', -'Lowercase', -'idst', -'IDSTrinaryOperator', -'radical', -'Radical', -'fcnfkc', -'FCNFKCClosure', -'dm', -'DecompositionMapping', -'slc', -'SimpleLowercaseMapping', -'wspace', -'WhiteSpace', -'di', -'DefaultIgnorableCodePoint', -'nt', -'NumericType', -'ea', -'EastAsianWidth', -'ahex', -'ASCIIHexDigit', -'alpha', -'Alphabetic', -'uc', -'UppercaseMapping', -'dia', -'Diacritic', -'gc', -'GeneralCategory', -'xids', -'XIDStart', -'oupper', -'OtherUppercase', -'wb', -'WordBreak', -'math', -'Math', -'sb', -'SentenceBreak', -'qmark', -'QuotationMark', -'nfdqc', -'NFDQuickCheck', -'ideo', -'Ideographic', -'blk', -'Block', -'odi', -'OtherDefaultIgnorableCodePoint', -'hst', -'HangulSyllableType', -'bidim', -'BidiMirrored', -'olower', -'OtherLowercase', -'na', -'Name', -'hyphen', -'Hyphen', -'xidc', -'XIDContinue', -'oidc', -'OtherIDContinue', -'bidic', -'BidiControl', -'na1', -'Unicode1Name', -'compex', -'FullCompositionExclusion', -'ext', -'Extender', -'cf', -'CaseFolding', -'grlink', -'GraphemeLink', -'xonfc', -'ExpandsOnNFC', -'sd', -'SoftDotted', -'ccc', -'CanonicalCombiningClass', -'dash', -'Dash', -'hex', -'HexDigit', -'grbase', -'GraphemeBase', -'dt', -'DecompositionType', -'xonfd', -'ExpandsOnNFD', -'scc', -'SpecialCaseCondition', -'idsb', -'IDSBinaryOperator', -'age', -'Age', -'loe', -'LogicalOrderException', -'term', -'TerminalPunctuation', -'ce', -'CompositionExclusion', -'isc', -'ISOComment', -'dep', -'Deprecated', -'sfc', -'SimpleCaseFolding', -'bc', -'BidiClass', -'nchar', -'NoncharacterCodePoint', -'jt', -'JoiningType', -'upper', -'Uppercase', -'uideo', -'UnifiedIdeograph', -'sterm', -'STerm', -'nfkdqc', -'NFKDQuickCheck', -'oids', -'OtherIDStart', -'joinc', -'JoinControl', -'nv', -'NumericValue', -'suc', -'SimpleUppercaseMapping', -'urs', -'UnicodeRadicalStroke', -'bmg', -'BidiMirroringGlyph', -'grext', -'GraphemeExtend', -'idc', -'IDContinue', -'vs', -'VariationSelector', -'omath', -'OtherMath', -'lc', -'LowercaseMapping', -'ogrext', -'OtherGraphemeExtend', -'jg', -'JoiningGroup', -); - -%utf8::PA_reverse = ( -'linebreak', -'lb', -'bidiclass', -'bc', -'terminalpunctuation', -'Term', -'expandsonnfkc', -'XONFKC', -'extender', -'Ext', -'simplecasefolding', -'sfc', -'patternsyntax', -'PatSyn', -'sentencebreak', -'SB', -'numericvalue', -'nv', -'patternwhitespace', -'PatWS', -'softdotted', -'SD', -'logicalorderexception', -'LOE', -'idstart', -'IDS', -'generalcategory', -'gc', -'decompositiontype', -'dt', -'name', -'na', -'numerictype', -'nt', -'otherlowercase', -'OLower', -'joininggroup', -'jg', -'expandsonnfkd', -'XONFKD', -'deprecated', -'Dep', -'radical', -'Radical', -'idstrinaryoperator', -'IDST', -'xidstart', -'XIDS', -'lowercase', -'Lower', -'unifiedideograph', -'UIdeo', -'othergraphemeextend', -'OGrExt', -'eastasianwidth', -'ea', -'math', -'Math', -'graphemelink', -'GrLink', -'noncharactercodepoint', -'NChar', -'graphemebase', -'GrBase', -'bidimirrored', -'BidiM', -'casefolding', -'cf', -'simpleuppercasemapping', -'suc', -'fullcompositionexclusion', -'CompEx', -'compositionexclusion', -'CE', -'uppercasemapping', -'uc', -'decompositionmapping', -'dm', -'whitespace', -'WSpace', -'hyphen', -'Hyphen', -'ideographic', -'Ideo', -'idcontinue', -'IDC', -'idsbinaryoperator', -'IDSB', -'hangulsyllabletype', -'hst', -'asciihexdigit', -'AHex', -'otheruppercase', -'OUpper', -'nfkdquickcheck', -'NFKDQC', -'simpletitlecasemapping', -'stc', -'nfcquickcheck', -'NFCQC', -'bidicontrol', -'BidiC', -'diacritic', -'Dia', -'joiningtype', -'jt', -'otheralphabetic', -'OAlpha', -'canonicalcombiningclass', -'ccc', -'alphabetic', -'Alpha', -'titlecasemapping', -'tc', -'unicoderadicalstroke', -'URS', -'hexdigit', -'Hex', -'unicode1name', -'na1', -'dash', -'Dash', -'fcnfkcclosure', -'FCNFKC', -'graphemeextend', -'GrExt', -'joincontrol', -'JoinC', -'xidcontinue', -'XIDC', -'quotationmark', -'QMark', -'expandsonnfd', -'XONFD', -'age', -'age', -'otheridcontinue', -'OIDC', -'uppercase', -'Upper', -'expandsonnfc', -'XONFC', -'defaultignorablecodepoint', -'DI', -'nfdquickcheck', -'NFDQC', -'isocomment', -'isc', -'otherdefaultignorablecodepoint', -'ODI', -'variationselector', -'VS', -'specialcasecondition', -'scc', -'script', -'sc', -'otheridstart', -'OIDS', -'sterm', -'STerm', -'graphemeclusterbreak', -'GCB', -'nfkcquickcheck', -'NFKCQC', -'bidimirroringglyph', -'bmg', -'othermath', -'OMath', -'block', -'blk', -'wordbreak', -'WB', -'lowercasemapping', -'lc', -'simplelowercasemapping', -'slc', -); - -%utf8::PropValueAlias = ( -'sc', -{ -'tglg', -'Tagalog', -'runr', -'Runic', -'osma', -'Osmanya', -'hano', -'Hanunoo', -'cans', -'CanadianAboriginal', -'tagb', -'Tagbanwa', -'mlym', -'Malayalam', -'knda', -'Kannada', -'grek', -'Greek', -'ethi', -'Ethiopic', -'orya', -'Oriya', -'cher', -'Cherokee', -'mong', -'Mongolian', -'khmr', -'Khmer', -'ogam', -'Ogham', -'hrkt', -'KatakanaOrHiragana', -'armn', -'Armenian', -'ital', -'OldItalic', -'hani', -'Han', -'shaw', -'Shavian', -'taml', -'Tamil', -'tibt', -'Tibetan', -'guru', -'Gurmukhi', -'ugar', -'Ugaritic', -'qaai', -'Inherited', -'kana', -'Katakana', -'gujr', -'Gujarati', -'thaa', -'Thaana', -'cyrl', -'Cyrillic', -'copt', -'Coptic', -'sylo', -'SylotiNagri', -'thai', -'Thai', -'talu', -'NewTaiLue', -'laoo', -'Lao', -'sinh', -'Sinhala', -'beng', -'Bengali', -'hira', -'Hiragana', -'brai', -'Braille', -'telu', -'Telugu', -'limb', -'Limbu', -'geor', -'Georgian', -'mymr', -'Myanmar', -'glag', -'Glagolitic', -'hang', -'Hangul', -'syrc', -'Syriac', -'tfng', -'Tifinagh', -'dsrt', -'Deseret', -'buhd', -'Buhid', -'yiii', -'Yi', -'arab', -'Arabic', -'bopo', -'Bopomofo', -'khar', -'Kharoshthi', -'linb', -'LinearB', -'deva', -'Devanagari', -'xpeo', -'OldPersian', -'goth', -'Gothic', -'cprt', -'Cypriot', -'tale', -'TaiLe', -'zyyy', -'Common', -'latn', -'Latin', -'bugi', -'Buginese', -'hebr', -'Hebrew', -}, -'dt', -{ -'fra', -'Fraction', -'none', -'None', -'sml', -'Small', -'enc', -'Circle', -'font', -'Font', -'init', -'Initial', -'nb', -'Nobreak', -'iso', -'Isolated', -'sup', -'Super', -'fin', -'Final', -'wide', -'Wide', -'nar', -'Narrow', -'can', -'Canonical', -'med', -'Medial', -'sub', -'Sub', -'vert', -'Vertical', -'sqr', -'Square', -'com', -'Compat', -}, -'nt', -{ -'none', -'None', -'di', -'Digit', -'de', -'Decimal', -'nu', -'Numeric', -}, -'ea', -{ -'w', -'Wide', -'n', -'Neutral', -'h', -'Halfwidth', -'a', -'Ambiguous', -'f', -'Fullwidth', -'na', -'Narrow', -}, -'NFKC_QC', -{ -'y', -'Yes', -'n', -'No', -'m', -'Maybe', -}, -'bc', -{ -'r', -'RightToLeft', -'rlo', -'RightToLeftOverride', -'es', -'EuropeanSeparator', -'ws', -'WhiteSpace', -'rle', -'RightToLeftEmbedding', -'on', -'OtherNeutral', -'bn', -'BoundaryNeutral', -'et', -'EuropeanTerminator', -'pdf', -'PopDirectionalFormat', -'lro', -'LeftToRightOverride', -'s', -'SegmentSeparator', -'al', -'ArabicLetter', -'en', -'EuropeanNumber', -'l', -'LeftToRight', -'b', -'ParagraphSeparator', -'lre', -'LeftToRightEmbedding', -'cs', -'CommonSeparator', -'nsm', -'NonspacingMark', -'an', -'ArabicNumber', -}, -'gc', -{ -'sc', -'CurrencySymbol', -'mc', -'SpacingMark', -'lm', -'ModifierLetter', -'cn', -'Unassigned', -'pf', -'FinalPunctuation', -'no', -'OtherNumber', -'cc', -'Control', -'lo', -'OtherLetter', -'po', -'OtherPunctuation', -'zs', -'SpaceSeparator', -'co', -'PrivateUse', -'so', -'OtherSymbol', -'ll', -'LowercaseLetter', -'nd', -'DecimalNumber', -'cf', -'Format', -'me', -'EnclosingMark', -'s', -'Symbol', -'zp', -'ParagraphSeparator', -'pd', -'DashPunctuation', -'c', -'Other', -'lt', -'TitlecaseLetter', -'cs', -'Surrogate', -'l&', -'CasedLetter', -'z', -'Separator', -'ps', -'OpenPunctuation', -'zl', -'LineSeparator', -'pc', -'ConnectorPunctuation', -'pi', -'InitialPunctuation', -'n', -'Number', -'m', -'Mark', -'nl', -'LetterNumber', -'sm', -'MathSymbol', -'l', -'Letter', -'mn', -'NonspacingMark', -'p', -'Punctuation', -'lc', -'CasedLetter', -'sk', -'ModifierSymbol', -'lu', -'UppercaseLetter', -'pe', -'ClosePunctuation', -}, -'GCB', -{ -'cn', -'Control', -'ex', -'Extend', -'v', -'V', -'lv', -'LV', -'xx', -'Other', -'l', -'L', -'lvt', -'LVT', -'cr', -'CR', -'lf', -'LF', -'t', -'T', -}, -'lb', -{ -'sp', -'Space', -'ba', -'BreakAfter', -'gl', -'Glue', -'xx', -'Unknown', -'nu', -'Numeric', -'cb', -'ContingentBreak', -'sy', -'BreakSymbols', -'cr', -'CarriageReturn', -'in', -'Inseparable', -'bb', -'BreakBefore', -'sg', -'Surrogate', -'sa', -'ComplexContext', -'po', -'PostfixNumeric', -'jl', -'JL', -'id', -'Ideographic', -'al', -'Alphabetic', -'bk', -'MandatoryBreak', -'pr', -'PrefixNumeric', -'b2', -'BreakBoth', -'op', -'OpenPunctuation', -'cl', -'ClosePunctuation', -'is', -'InfixNumeric', -'qu', -'Quotation', -'hy', -'Hyphen', -'wj', -'WordJoiner', -'zw', -'ZWSpace', -'jt', -'JT', -'ex', -'Exclamation', -'cm', -'CombiningMark', -'h2', -'H2', -'nl', -'NextLine', -'ns', -'Nonstarter', -'h3', -'H3', -'ai', -'Ambiguous', -'lf', -'LineFeed', -'jv', -'JV', -}, -'jt', -{ -'l', -'LeftJoining', -'u', -'NonJoining', -'c', -'JoinCausing', -'r', -'RightJoining', -'d', -'DualJoining', -'t', -'Transparent', -}, -'NFKD_QC', -{ -'y', -'Yes', -'n', -'No', -}, -'NFC_QC', -{ -'y', -'Yes', -'n', -'No', -'m', -'Maybe', -}, -'hst', -{ -'l', -'LeadingJamo', -'lvt', -'LVTSyllable', -'v', -'VowelJamo', -'lv', -'LVSyllable', -'t', -'TrailingJamo', -'na', -'NotApplicable', -}, -'NFD_QC', -{ -'y', -'Yes', -'n', -'No', -}, -'WB', -{ -'ml', -'MidLetter', -'le', -'ALetter', -'ex', -'ExtendNumLet', -'xx', -'Other', -'nu', -'Numeric', -'fo', -'Format', -'mn', -'MidNum', -'ka', -'Katakana', -}, -'SB', -{ -'sp', -'Sp', -'cl', -'Close', -'le', -'OLetter', -'up', -'Upper', -'st', -'STerm', -'xx', -'Other', -'nu', -'Numeric', -'fo', -'Format', -'se', -'Sep', -'lo', -'Lower', -'at', -'ATerm', -}, -'ccc', -{ -'atb', -'AttachedBelow', -'db', -'DoubleBelow', -'a', -'Above', -'r', -'Right', -'da', -'DoubleAbove', -'is', -'IotaSubscript', -'nr', -'NotReordered', -'ov', -'Overlay', -'br', -'BelowRight', -'nk', -'Nukta', -'atbl', -'AttachedBelowLeft', -'al', -'AboveLeft', -'ar', -'AboveRight', -'atar', -'AttachedAboveRight', -'l', -'Left', -'b', -'Below', -'vr', -'Virama', -'kv', -'KanaVoicing', -'bl', -'BelowLeft', -}, -); - -%utf8::PVA_reverse = ( -'sc', -{ -'newtailue', -'Talu', -'canadianaboriginal', -'Cans', -'gujarati', -'Gujr', -'latin', -'Latn', -'hangul', -'Hang', -'deseret', -'Dsrt', -'hebrew', -'Hebr', -'inherited', -'Qaai', -'linearb', -'Linb', -'ugaritic', -'Ugar', -'taile', -'Tale', -'armenian', -'Armn', -'tifinagh', -'Tfng', -'myanmar', -'Mymr', -'gurmukhi', -'Guru', -'greek', -'Grek', -'coptic', -'Copt', -'cyrillic', -'Cyrl', -'thaana', -'Thaa', -'lao', -'Laoo', -'katakana', -'Kana', -'khmer', -'Khmr', -'tibetan', -'Tibt', -'hiragana', -'Hira', -'mongolian', -'Mong', -'thai', -'Thai', -'yi', -'Yiii', -'sylotinagri', -'Sylo', -'bopomofo', -'Bopo', -'malayalam', -'Mlym', -'telugu', -'Telu', -'limbu', -'Limb', -'oriya', -'Orya', -'buhid', -'Buhd', -'cypriot', -'Cprt', -'bengali', -'Beng', -'katakanaorhiragana', -'Hrkt', -'oldpersian', -'Xpeo', -'tagalog', -'Tglg', -'syriac', -'Syrc', -'cherokee', -'Cher', -'ogham', -'Ogam', -'hanunoo', -'Hano', -'braille', -'Brai', -'tamil', -'Taml', -'common', -'Zyyy', -'runic', -'Runr', -'georgian', -'Geor', -'ethiopic', -'Ethi', -'glagolitic', -'Glag', -'han', -'Hani', -'kharoshthi', -'Khar', -'kannada', -'Knda', -'tagbanwa', -'Tagb', -'arabic', -'Arab', -'sinhala', -'Sinh', -'gothic', -'Goth', -'osmanya', -'Osma', -'olditalic', -'Ital', -'devanagari', -'Deva', -'buginese', -'Bugi', -'shavian', -'Shaw', -}, -'dt', -{ -'small', -'sml', -'none', -'none', -'isolated', -'iso', -'narrow', -'nar', -'square', -'sqr', -'nobreak', -'nb', -'fraction', -'fra', -'font', -'font', -'medial', -'med', -'wide', -'wide', -'canonical', -'can', -'circle', -'enc', -'super', -'sup', -'vertical', -'vert', -'final', -'fin', -'compat', -'com', -'sub', -'sub', -'initial', -'init', -}, -'nt', -{ -'none', -'None', -'digit', -'Di', -'numeric', -'Nu', -'decimal', -'De', -}, -'ea', -{ -'halfwidth', -'H', -'fullwidth', -'F', -'ambiguous', -'A', -'narrow', -'Na', -'wide', -'W', -'neutral', -'N', -}, -'NFKC_QC', -{ -'yes', -'Y', -'maybe', -'M', -'no', -'N', -}, -'bc', -{ -'nonspacingmark', -'NSM', -'whitespace', -'WS', -'righttoleft', -'R', -'lefttoright', -'L', -'boundaryneutral', -'BN', -'segmentseparator', -'S', -'lefttorightembedding', -'LRE', -'europeanterminator', -'ET', -'righttoleftembedding', -'RLE', -'righttoleftoverride', -'RLO', -'lefttorightoverride', -'LRO', -'europeanseparator', -'ES', -'europeannumber', -'EN', -'commonseparator', -'CS', -'arabicletter', -'AL', -'paragraphseparator', -'B', -'otherneutral', -'ON', -'popdirectionalformat', -'PDF', -'arabicnumber', -'AN', -}, -'gc', -{ -'modifiersymbol', -'Sk', -'letternumber', -'Nl', -'connectorpunctuation', -'Pc', -'spacingmark', -'Mc', -'mark', -'M', -'unassigned', -'Cn', -'enclosingmark', -'Me', -'lineseparator', -'Zl', -'lowercaseletter', -'Ll', -'symbol', -'S', -'letter', -'L', -'othernumber', -'No', -'paragraphseparator', -'Zp', -'modifierletter', -'Lm', -'titlecaseletter', -'Lt', -'decimalnumber', -'Nd', -'other', -'C', -'mathsymbol', -'Sm', -'surrogate', -'Cs', -'otherletter', -'Lo', -'nonspacingmark', -'Mn', -'number', -'N', -'uppercaseletter', -'Lu', -'spaceseparator', -'Zs', -'privateuse', -'Co', -'openpunctuation', -'Ps', -'punctuation', -'P', -'control', -'Cc', -'casedletter', -'LC', -'closepunctuation', -'Pe', -'otherpunctuation', -'Po', -'finalpunctuation', -'Pf', -'format', -'Cf', -'initialpunctuation', -'Pi', -'separator', -'Z', -'othersymbol', -'So', -'dashpunctuation', -'Pd', -'currencysymbol', -'Sc', -}, -'GCB', -{ -'extend', -'EX', -'v', -'V', -'lv', -'LV', -'l', -'L', -'lvt', -'LVT', -'cr', -'CR', -'other', -'XX', -'lf', -'LF', -'control', -'CN', -'t', -'T', -}, -'lb', -{ -'carriagereturn', -'CR', -'ideographic', -'ID', -'hyphen', -'HY', -'ambiguous', -'AI', -'contingentbreak', -'CB', -'complexcontext', -'SA', -'prefixnumeric', -'PR', -'jl', -'JL', -'inseparable', -'IN', -'breaksymbols', -'SY', -'breakafter', -'BA', -'breakbefore', -'BB', -'postfixnumeric', -'PO', -'glue', -'GL', -'wordjoiner', -'WJ', -'breakboth', -'B2', -'quotation', -'QU', -'combiningmark', -'CM', -'nonstarter', -'NS', -'linefeed', -'LF', -'alphabetic', -'AL', -'surrogate', -'SG', -'mandatorybreak', -'BK', -'unknown', -'XX', -'exclamation', -'EX', -'openpunctuation', -'OP', -'jt', -'JT', -'closepunctuation', -'CL', -'space', -'SP', -'zwspace', -'ZW', -'h2', -'H2', -'infixnumeric', -'IS', -'nextline', -'NL', -'numeric', -'NU', -'h3', -'H3', -'jv', -'JV', -}, -'jt', -{ -'leftjoining', -'L', -'transparent', -'T', -'nonjoining', -'U', -'rightjoining', -'R', -'dualjoining', -'D', -'joincausing', -'C', -}, -'NFKD_QC', -{ -'yes', -'Y', -'no', -'N', -}, -'NFC_QC', -{ -'yes', -'Y', -'maybe', -'M', -'no', -'N', -}, -'hst', -{ -'lvtsyllable', -'LVT', -'lvsyllable', -'LV', -'leadingjamo', -'L', -'notapplicable', -'NA', -'voweljamo', -'V', -'trailingjamo', -'T', -}, -'NFD_QC', -{ -'yes', -'Y', -'no', -'N', -}, -'WB', -{ -'midletter', -'ML', -'format', -'FO', -'katakana', -'KA', -'other', -'XX', -'midnum', -'MN', -'numeric', -'NU', -'extendnumlet', -'EX', -'aletter', -'LE', -}, -'SB', -{ -'sp', -'SP', -'upper', -'UP', -'sterm', -'ST', -'aterm', -'AT', -'close', -'CL', -'oletter', -'LE', -'sep', -'SE', -'format', -'FO', -'other', -'XX', -'lower', -'LO', -'numeric', -'NU', -}, -'ccc', -{ -'left', -'L', -'attachedbelowleft', -'ATBL', -'belowleft', -'BL', -'aboveright', -'AR', -'kanavoicing', -'KV', -'above', -'A', -'aboveleft', -'AL', -'nukta', -'NK', -'below', -'B', -'doublebelow', -'DB', -'virama', -'VR', -'belowright', -'BR', -'notreordered', -'NR', -'attachedbelow', -'ATB', -'right', -'R', -'iotasubscript', -'IS', -'doubleabove', -'DA', -'attachedaboveright', -'ATAR', -'overlay', -'OV', -}, -); - -%utf8::PVA_abbr_map = ( -'jt', -{ -'l', -'L', -'u', -'U', -'c', -'C', -'r', -'R', -'d', -'D', -'t', -'T', -}, -'dt', -{ -'fra', -'fra', -'none', -'none', -'sml', -'sml', -'enc', -'enc', -'font', -'font', -'init', -'init', -'nb', -'nb', -'iso', -'iso', -'sup', -'sup', -'fin', -'fin', -'wide', -'wide', -'nar', -'nar', -'can', -'can', -'med', -'med', -'sub', -'sub', -'vert', -'vert', -'sqr', -'sqr', -'com', -'com', -}, -'nt', -{ -'none', -'None', -'di', -'Di', -'de', -'De', -'nu', -'Nu', -}, -'NFKD_QC', -{ -'y', -'Y', -'n', -'N', -}, -'ea', -{ -'w', -'W', -'n', -'N', -'h', -'H', -'a', -'A', -'f', -'F', -'na', -'Na', -}, -'gc_sc', -{ -'runr', -'Runr', -'osma', -'Osma', -'sc', -'Sc', -'mc', -'Mc', -'hano', -'Hano', -'cans', -'Cans', -'lm', -'Lm', -'cn', -'Cn', -'knda', -'Knda', -'orya', -'Orya', -'cher', -'Cher', -'khmr', -'Khmr', -'ogam', -'Ogam', -'lo', -'Lo', -'po', -'Po', -'co', -'Co', -'ital', -'Ital', -'ll', -'Ll', -'tibt', -'Tibt', -'kana', -'Kana', -'zp', -'Zp', -'gujr', -'Gujr', -'thaa', -'Thaa', -'cs', -'Cs', -'copt', -'Copt', -'z', -'Z', -'ps', -'Ps', -'sylo', -'Sylo', -'talu', -'Talu', -'laoo', -'Laoo', -'sinh', -'Sinh', -'zl', -'Zl', -'pc', -'Pc', -'hira', -'Hira', -'limb', -'Limb', -'mymr', -'Mymr', -'yiii', -'Yiii', -'arab', -'Arab', -'deva', -'Deva', -'xpeo', -'Xpeo', -'cprt', -'Cprt', -'bugi', -'Bugi', -'sk', -'Sk', -'hebr', -'Hebr', -'lu', -'Lu', -'pe', -'Pe', -'tglg', -'Tglg', -'tagb', -'Tagb', -'mlym', -'Mlym', -'pf', -'Pf', -'no', -'No', -'grek', -'Grek', -'ethi', -'Ethi', -'mong', -'Mong', -'cc', -'Cc', -'hrkt', -'Hrkt', -'armn', -'Armn', -'zs', -'Zs', -'so', -'So', -'hani', -'Hani', -'shaw', -'Shaw', -'taml', -'Taml', -'me', -'Me', -'cf', -'Cf', -'nd', -'Nd', -'s', -'S', -'guru', -'Guru', -'ugar', -'Ugar', -'qaai', -'Qaai', -'lt', -'Lt', -'c', -'C', -'pd', -'Pd', -'cyrl', -'Cyrl', -'l&', -'LC', -'thai', -'Thai', -'beng', -'Beng', -'brai', -'Brai', -'telu', -'Telu', -'pi', -'Pi', -'geor', -'Geor', -'glag', -'Glag', -'hang', -'Hang', -'syrc', -'Syrc', -'tfng', -'Tfng', -'n', -'N', -'dsrt', -'Dsrt', -'buhd', -'Buhd', -'m', -'M', -'khar', -'Khar', -'sm', -'Sm', -'nl', -'Nl', -'bopo', -'Bopo', -'linb', -'Linb', -'mn', -'Mn', -'l', -'L', -'p', -'P', -'goth', -'Goth', -'tale', -'Tale', -'lc', -'LC', -'zyyy', -'Zyyy', -'latn', -'Latn', -}, -'NFC_QC', -{ -'y', -'Y', -'n', -'N', -'m', -'M', -}, -'NFD_QC', -{ -'y', -'Y', -'n', -'N', -}, -'hst', -{ -'l', -'L', -'lvt', -'LVT', -'v', -'V', -'lv', -'LV', -'t', -'T', -'na', -'NA', -}, -'NFKC_QC', -{ -'y', -'Y', -'n', -'N', -'m', -'M', -}, -'WB', -{ -'ml', -'ML', -'le', -'LE', -'ex', -'EX', -'xx', -'XX', -'nu', -'NU', -'fo', -'FO', -'mn', -'MN', -'ka', -'KA', -}, -'SB', -{ -'sp', -'SP', -'cl', -'CL', -'le', -'LE', -'up', -'UP', -'st', -'ST', -'xx', -'XX', -'nu', -'NU', -'fo', -'FO', -'se', -'SE', -'lo', -'LO', -'at', -'AT', -}, -'bc', -{ -'r', -'R', -'rlo', -'RLO', -'es', -'ES', -'ws', -'WS', -'rle', -'RLE', -'on', -'ON', -'bn', -'BN', -'et', -'ET', -'pdf', -'PDF', -'lro', -'LRO', -'s', -'S', -'al', -'AL', -'en', -'EN', -'l', -'L', -'b', -'B', -'lre', -'LRE', -'cs', -'CS', -'nsm', -'NSM', -'an', -'AN', -}, -'GCB', -{ -'cn', -'CN', -'ex', -'EX', -'v', -'V', -'lv', -'LV', -'xx', -'XX', -'l', -'L', -'lvt', -'LVT', -'cr', -'CR', -'lf', -'LF', -'t', -'T', -}, -'ccc', -{ -'atb', -'ATB', -'db', -'DB', -'a', -'A', -'r', -'R', -'da', -'DA', -'is', -'IS', -'nr', -'NR', -'ov', -'OV', -'br', -'BR', -'nk', -'NK', -'atbl', -'ATBL', -'al', -'AL', -'ar', -'AR', -'atar', -'ATAR', -'l', -'L', -'b', -'B', -'vr', -'VR', -'kv', -'KV', -'bl', -'BL', -}, -'lb', -{ -'sp', -'SP', -'ba', -'BA', -'gl', -'GL', -'xx', -'XX', -'nu', -'NU', -'cb', -'CB', -'sy', -'SY', -'cr', -'CR', -'in', -'IN', -'bb', -'BB', -'sg', -'SG', -'sa', -'SA', -'po', -'PO', -'jl', -'JL', -'id', -'ID', -'al', -'AL', -'bk', -'BK', -'pr', -'PR', -'b2', -'B2', -'op', -'OP', -'cl', -'CL', -'is', -'IS', -'qu', -'QU', -'hy', -'HY', -'wj', -'WJ', -'zw', -'ZW', -'jt', -'JT', -'ex', -'EX', -'cm', -'CM', -'h2', -'H2', -'nl', -'NL', -'ns', -'NS', -'h3', -'H3', -'ai', -'AI', -'lf', -'LF', -'jv', -'JV', -}, -); -1; diff --git a/Master/tlpkg/tlperl.old/lib/unicore/PropList.txt b/Master/tlpkg/tlperl.old/lib/unicore/PropList.txt deleted file mode 100644 index befc49e8e64..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/PropList.txt +++ /dev/null @@ -1,1049 +0,0 @@ -# PropList-4.1.0.txt -# Date: 2005-03-26, 00:34:40 GMT [MD] -# -# Unicode Character Database -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# For documentation, see UCD.html - -# ================================================ - -0009..000D ; White_Space # Cc [5] <control-0009>..<control-000D> -0020 ; White_Space # Zs SPACE -0085 ; White_Space # Cc <control-0085> -00A0 ; White_Space # Zs NO-BREAK SPACE -1680 ; White_Space # Zs OGHAM SPACE MARK -180E ; White_Space # Zs MONGOLIAN VOWEL SEPARATOR -2000..200A ; White_Space # Zs [11] EN QUAD..HAIR SPACE -2028 ; White_Space # Zl LINE SEPARATOR -2029 ; White_Space # Zp PARAGRAPH SEPARATOR -202F ; White_Space # Zs NARROW NO-BREAK SPACE -205F ; White_Space # Zs MEDIUM MATHEMATICAL SPACE -3000 ; White_Space # Zs IDEOGRAPHIC SPACE - -# Total code points: 26 - -# ================================================ - -200E..200F ; Bidi_Control # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK -202A..202E ; Bidi_Control # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE - -# Total code points: 7 - -# ================================================ - -200C..200D ; Join_Control # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER - -# Total code points: 2 - -# ================================================ - -002D ; Dash # Pd HYPHEN-MINUS -058A ; Dash # Pd ARMENIAN HYPHEN -1806 ; Dash # Pd MONGOLIAN TODO SOFT HYPHEN -2010..2015 ; Dash # Pd [6] HYPHEN..HORIZONTAL BAR -2053 ; Dash # Po SWUNG DASH -207B ; Dash # Sm SUPERSCRIPT MINUS -208B ; Dash # Sm SUBSCRIPT MINUS -2212 ; Dash # Sm MINUS SIGN -2E17 ; Dash # Pd DOUBLE OBLIQUE HYPHEN -301C ; Dash # Pd WAVE DASH -3030 ; Dash # Pd WAVY DASH -30A0 ; Dash # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN -FE31..FE32 ; Dash # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH -FE58 ; Dash # Pd SMALL EM DASH -FE63 ; Dash # Pd SMALL HYPHEN-MINUS -FF0D ; Dash # Pd FULLWIDTH HYPHEN-MINUS - -# Total code points: 22 - -# ================================================ - -002D ; Hyphen # Pd HYPHEN-MINUS -00AD ; Hyphen # Cf SOFT HYPHEN -058A ; Hyphen # Pd ARMENIAN HYPHEN -1806 ; Hyphen # Pd MONGOLIAN TODO SOFT HYPHEN -2010..2011 ; Hyphen # Pd [2] HYPHEN..NON-BREAKING HYPHEN -2E17 ; Hyphen # Pd DOUBLE OBLIQUE HYPHEN -30FB ; Hyphen # Po KATAKANA MIDDLE DOT -FE63 ; Hyphen # Pd SMALL HYPHEN-MINUS -FF0D ; Hyphen # Pd FULLWIDTH HYPHEN-MINUS -FF65 ; Hyphen # Po HALFWIDTH KATAKANA MIDDLE DOT - -# Total code points: 11 - -# ================================================ - -0022 ; Quotation_Mark # Po QUOTATION MARK -0027 ; Quotation_Mark # Po APOSTROPHE -00AB ; Quotation_Mark # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -00BB ; Quotation_Mark # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -2018 ; Quotation_Mark # Pi LEFT SINGLE QUOTATION MARK -2019 ; Quotation_Mark # Pf RIGHT SINGLE QUOTATION MARK -201A ; Quotation_Mark # Ps SINGLE LOW-9 QUOTATION MARK -201B..201C ; Quotation_Mark # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK -201D ; Quotation_Mark # Pf RIGHT DOUBLE QUOTATION MARK -201E ; Quotation_Mark # Ps DOUBLE LOW-9 QUOTATION MARK -201F ; Quotation_Mark # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK -2039 ; Quotation_Mark # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK -203A ; Quotation_Mark # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -300C ; Quotation_Mark # Ps LEFT CORNER BRACKET -300D ; Quotation_Mark # Pe RIGHT CORNER BRACKET -300E ; Quotation_Mark # Ps LEFT WHITE CORNER BRACKET -300F ; Quotation_Mark # Pe RIGHT WHITE CORNER BRACKET -301D ; Quotation_Mark # Ps REVERSED DOUBLE PRIME QUOTATION MARK -301E..301F ; Quotation_Mark # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK -FE41 ; Quotation_Mark # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET -FE42 ; Quotation_Mark # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET -FE43 ; Quotation_Mark # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET -FE44 ; Quotation_Mark # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET -FF02 ; Quotation_Mark # Po FULLWIDTH QUOTATION MARK -FF07 ; Quotation_Mark # Po FULLWIDTH APOSTROPHE -FF62 ; Quotation_Mark # Ps HALFWIDTH LEFT CORNER BRACKET -FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET - -# Total code points: 29 - -# ================================================ - -0021 ; Terminal_Punctuation # Po EXCLAMATION MARK -002C ; Terminal_Punctuation # Po COMMA -002E ; Terminal_Punctuation # Po FULL STOP -003A..003B ; Terminal_Punctuation # Po [2] COLON..SEMICOLON -003F ; Terminal_Punctuation # Po QUESTION MARK -037E ; Terminal_Punctuation # Po GREEK QUESTION MARK -0387 ; Terminal_Punctuation # Po GREEK ANO TELEIA -0589 ; Terminal_Punctuation # Po ARMENIAN FULL STOP -05C3 ; Terminal_Punctuation # Po HEBREW PUNCTUATION SOF PASUQ -060C ; Terminal_Punctuation # Po ARABIC COMMA -061B ; Terminal_Punctuation # Po ARABIC SEMICOLON -061F ; Terminal_Punctuation # Po ARABIC QUESTION MARK -06D4 ; Terminal_Punctuation # Po ARABIC FULL STOP -0700..070A ; Terminal_Punctuation # Po [11] SYRIAC END OF PARAGRAPH..SYRIAC CONTRACTION -070C ; Terminal_Punctuation # Po SYRIAC HARKLEAN METOBELUS -0964..0965 ; Terminal_Punctuation # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA -0E5A..0E5B ; Terminal_Punctuation # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT -0F08 ; Terminal_Punctuation # Po TIBETAN MARK SBRUL SHAD -0F0D..0F12 ; Terminal_Punctuation # Po [6] TIBETAN MARK SHAD..TIBETAN MARK RGYA GRAM SHAD -104A..104B ; Terminal_Punctuation # Po [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION -1361..1368 ; Terminal_Punctuation # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR -166D..166E ; Terminal_Punctuation # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP -16EB..16ED ; Terminal_Punctuation # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION -17D4..17D6 ; Terminal_Punctuation # Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH -17DA ; Terminal_Punctuation # Po KHMER SIGN KOOMUUT -1802..1805 ; Terminal_Punctuation # Po [4] MONGOLIAN COMMA..MONGOLIAN FOUR DOTS -1808..1809 ; Terminal_Punctuation # Po [2] MONGOLIAN MANCHU COMMA..MONGOLIAN MANCHU FULL STOP -1944..1945 ; Terminal_Punctuation # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK -203C..203D ; Terminal_Punctuation # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG -2047..2049 ; Terminal_Punctuation # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK -3001..3002 ; Terminal_Punctuation # Po [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP -FE50..FE52 ; Terminal_Punctuation # Po [3] SMALL COMMA..SMALL FULL STOP -FE54..FE57 ; Terminal_Punctuation # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK -FF01 ; Terminal_Punctuation # Po FULLWIDTH EXCLAMATION MARK -FF0C ; Terminal_Punctuation # Po FULLWIDTH COMMA -FF0E ; Terminal_Punctuation # Po FULLWIDTH FULL STOP -FF1A..FF1B ; Terminal_Punctuation # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON -FF1F ; Terminal_Punctuation # Po FULLWIDTH QUESTION MARK -FF61 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC FULL STOP -FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA - -# Total code points: 86 - -# ================================================ - -005E ; Other_Math # Sk CIRCUMFLEX ACCENT -03D0..03D2 ; Other_Math # L& [3] GREEK BETA SYMBOL..GREEK UPSILON WITH HOOK SYMBOL -03D5 ; Other_Math # L& GREEK PHI SYMBOL -03F0..03F1 ; Other_Math # L& [2] GREEK KAPPA SYMBOL..GREEK RHO SYMBOL -03F4..03F5 ; Other_Math # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL -2016 ; Other_Math # Po DOUBLE VERTICAL LINE -2032..2034 ; Other_Math # Po [3] PRIME..TRIPLE PRIME -2040 ; Other_Math # Pc CHARACTER TIE -2061..2063 ; Other_Math # Cf [3] FUNCTION APPLICATION..INVISIBLE SEPARATOR -207D ; Other_Math # Ps SUPERSCRIPT LEFT PARENTHESIS -207E ; Other_Math # Pe SUPERSCRIPT RIGHT PARENTHESIS -208D ; Other_Math # Ps SUBSCRIPT LEFT PARENTHESIS -208E ; Other_Math # Pe SUBSCRIPT RIGHT PARENTHESIS -20D0..20DC ; Other_Math # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE -20E1 ; Other_Math # Mn COMBINING LEFT RIGHT ARROW ABOVE -20E5..20E6 ; Other_Math # Mn [2] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING DOUBLE VERTICAL STROKE OVERLAY -2102 ; Other_Math # L& DOUBLE-STRUCK CAPITAL C -210A..2113 ; Other_Math # L& [10] SCRIPT SMALL G..SCRIPT SMALL L -2115 ; Other_Math # L& DOUBLE-STRUCK CAPITAL N -2119..211D ; Other_Math # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R -2124 ; Other_Math # L& DOUBLE-STRUCK CAPITAL Z -2128 ; Other_Math # L& BLACK-LETTER CAPITAL Z -2129 ; Other_Math # So TURNED GREEK SMALL LETTER IOTA -212C..212D ; Other_Math # L& [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C -212F..2131 ; Other_Math # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F -2133..2134 ; Other_Math # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O -2135..2138 ; Other_Math # Lo [4] ALEF SYMBOL..DALET SYMBOL -213C..213F ; Other_Math # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI -2145..2149 ; Other_Math # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J -23B7 ; Other_Math # So RADICAL SYMBOL BOTTOM -23D0 ; Other_Math # So VERTICAL LINE EXTENSION -27C5 ; Other_Math # Ps LEFT S-SHAPED BAG DELIMITER -27C6 ; Other_Math # Pe RIGHT S-SHAPED BAG DELIMITER -27E6 ; Other_Math # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET -27E7 ; Other_Math # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET -27E8 ; Other_Math # Ps MATHEMATICAL LEFT ANGLE BRACKET -27E9 ; Other_Math # Pe MATHEMATICAL RIGHT ANGLE BRACKET -27EA ; Other_Math # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET -27EB ; Other_Math # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET -2983 ; Other_Math # Ps LEFT WHITE CURLY BRACKET -2984 ; Other_Math # Pe RIGHT WHITE CURLY BRACKET -2985 ; Other_Math # Ps LEFT WHITE PARENTHESIS -2986 ; Other_Math # Pe RIGHT WHITE PARENTHESIS -2987 ; Other_Math # Ps Z NOTATION LEFT IMAGE BRACKET -2988 ; Other_Math # Pe Z NOTATION RIGHT IMAGE BRACKET -2989 ; Other_Math # Ps Z NOTATION LEFT BINDING BRACKET -298A ; Other_Math # Pe Z NOTATION RIGHT BINDING BRACKET -298B ; Other_Math # Ps LEFT SQUARE BRACKET WITH UNDERBAR -298C ; Other_Math # Pe RIGHT SQUARE BRACKET WITH UNDERBAR -298D ; Other_Math # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER -298E ; Other_Math # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -298F ; Other_Math # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -2990 ; Other_Math # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER -2991 ; Other_Math # Ps LEFT ANGLE BRACKET WITH DOT -2992 ; Other_Math # Pe RIGHT ANGLE BRACKET WITH DOT -2993 ; Other_Math # Ps LEFT ARC LESS-THAN BRACKET -2994 ; Other_Math # Pe RIGHT ARC GREATER-THAN BRACKET -2995 ; Other_Math # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET -2996 ; Other_Math # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET -2997 ; Other_Math # Ps LEFT BLACK TORTOISE SHELL BRACKET -2998 ; Other_Math # Pe RIGHT BLACK TORTOISE SHELL BRACKET -29D8 ; Other_Math # Ps LEFT WIGGLY FENCE -29D9 ; Other_Math # Pe RIGHT WIGGLY FENCE -29DA ; Other_Math # Ps LEFT DOUBLE WIGGLY FENCE -29DB ; Other_Math # Pe RIGHT DOUBLE WIGGLY FENCE -29FC ; Other_Math # Ps LEFT-POINTING CURVED ANGLE BRACKET -29FD ; Other_Math # Pe RIGHT-POINTING CURVED ANGLE BRACKET -FE61 ; Other_Math # Po SMALL ASTERISK -FE63 ; Other_Math # Pd SMALL HYPHEN-MINUS -FE68 ; Other_Math # Po SMALL REVERSE SOLIDUS -FF3C ; Other_Math # Po FULLWIDTH REVERSE SOLIDUS -FF3E ; Other_Math # Sk FULLWIDTH CIRCUMFLEX ACCENT -1D400..1D454 ; Other_Math # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G -1D456..1D49C ; Other_Math # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A -1D49E..1D49F ; Other_Math # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D -1D4A2 ; Other_Math # L& MATHEMATICAL SCRIPT CAPITAL G -1D4A5..1D4A6 ; Other_Math # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K -1D4A9..1D4AC ; Other_Math # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q -1D4AE..1D4B9 ; Other_Math # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D -1D4BB ; Other_Math # L& MATHEMATICAL SCRIPT SMALL F -1D4BD..1D4C3 ; Other_Math # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N -1D4C5..1D505 ; Other_Math # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B -1D507..1D50A ; Other_Math # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G -1D50D..1D514 ; Other_Math # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q -1D516..1D51C ; Other_Math # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y -1D51E..1D539 ; Other_Math # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B -1D53B..1D53E ; Other_Math # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G -1D540..1D544 ; Other_Math # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M -1D546 ; Other_Math # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O -1D54A..1D550 ; Other_Math # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y -1D552..1D6A3 ; Other_Math # L& [338] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL MONOSPACE SMALL Z -1D6A8..1D6C0 ; Other_Math # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA -1D6C2..1D6DA ; Other_Math # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA -1D6DC..1D6FA ; Other_Math # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA -1D6FC..1D714 ; Other_Math # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA -1D716..1D734 ; Other_Math # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA -1D736..1D74E ; Other_Math # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA -1D750..1D76E ; Other_Math # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA -1D770..1D788 ; Other_Math # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA -1D78A..1D7A8 ; Other_Math # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA -1D7AA..1D7C2 ; Other_Math # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA -1D7C4..1D7C9 ; Other_Math # L& [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL -1D7CE..1D7FF ; Other_Math # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE - -# Total code points: 1102 - -# ================================================ - -0030..0039 ; Hex_Digit # Nd [10] DIGIT ZERO..DIGIT NINE -0041..0046 ; Hex_Digit # L& [6] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER F -0061..0066 ; Hex_Digit # L& [6] LATIN SMALL LETTER A..LATIN SMALL LETTER F -FF10..FF19 ; Hex_Digit # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE -FF21..FF26 ; Hex_Digit # L& [6] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER F -FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER F - -# Total code points: 44 - -# ================================================ - -0030..0039 ; ASCII_Hex_Digit # Nd [10] DIGIT ZERO..DIGIT NINE -0041..0046 ; ASCII_Hex_Digit # L& [6] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER F -0061..0066 ; ASCII_Hex_Digit # L& [6] LATIN SMALL LETTER A..LATIN SMALL LETTER F - -# Total code points: 22 - -# ================================================ - -0345 ; Other_Alphabetic # Mn COMBINING GREEK YPOGEGRAMMENI -05B0..05B9 ; Other_Alphabetic # Mn [10] HEBREW POINT SHEVA..HEBREW POINT HOLAM -05BB..05BD ; Other_Alphabetic # Mn [3] HEBREW POINT QUBUTS..HEBREW POINT METEG -05BF ; Other_Alphabetic # Mn HEBREW POINT RAFE -05C1..05C2 ; Other_Alphabetic # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT -05C4..05C5 ; Other_Alphabetic # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT -05C7 ; Other_Alphabetic # Mn HEBREW POINT QAMATS QATAN -0610..0615 ; Other_Alphabetic # Mn [6] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL HIGH TAH -064B..0657 ; Other_Alphabetic # Mn [13] ARABIC FATHATAN..ARABIC INVERTED DAMMA -0659..065E ; Other_Alphabetic # Mn [6] ARABIC ZWARAKAY..ARABIC FATHA WITH TWO DOTS -0670 ; Other_Alphabetic # Mn ARABIC LETTER SUPERSCRIPT ALEF -06D6..06DC ; Other_Alphabetic # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN -06E1..06E4 ; Other_Alphabetic # Mn [4] ARABIC SMALL HIGH DOTLESS HEAD OF KHAH..ARABIC SMALL HIGH MADDA -06E7..06E8 ; Other_Alphabetic # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON -06ED ; Other_Alphabetic # Mn ARABIC SMALL LOW MEEM -0711 ; Other_Alphabetic # Mn SYRIAC LETTER SUPERSCRIPT ALAPH -0730..073F ; Other_Alphabetic # Mn [16] SYRIAC PTHAHA ABOVE..SYRIAC RWAHA -07A6..07B0 ; Other_Alphabetic # Mn [11] THAANA ABAFILI..THAANA SUKUN -0901..0902 ; Other_Alphabetic # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA -0903 ; Other_Alphabetic # Mc DEVANAGARI SIGN VISARGA -093E..0940 ; Other_Alphabetic # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II -0941..0948 ; Other_Alphabetic # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI -0949..094C ; Other_Alphabetic # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU -0962..0963 ; Other_Alphabetic # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL -0981 ; Other_Alphabetic # Mn BENGALI SIGN CANDRABINDU -0982..0983 ; Other_Alphabetic # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA -09BE..09C0 ; Other_Alphabetic # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II -09C1..09C4 ; Other_Alphabetic # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR -09C7..09C8 ; Other_Alphabetic # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI -09CB..09CC ; Other_Alphabetic # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU -09D7 ; Other_Alphabetic # Mc BENGALI AU LENGTH MARK -09E2..09E3 ; Other_Alphabetic # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL -0A01..0A02 ; Other_Alphabetic # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI -0A03 ; Other_Alphabetic # Mc GURMUKHI SIGN VISARGA -0A3E..0A40 ; Other_Alphabetic # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II -0A41..0A42 ; Other_Alphabetic # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU -0A47..0A48 ; Other_Alphabetic # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI -0A4B..0A4C ; Other_Alphabetic # Mn [2] GURMUKHI VOWEL SIGN OO..GURMUKHI VOWEL SIGN AU -0A70..0A71 ; Other_Alphabetic # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK -0A81..0A82 ; Other_Alphabetic # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA -0A83 ; Other_Alphabetic # Mc GUJARATI SIGN VISARGA -0ABE..0AC0 ; Other_Alphabetic # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II -0AC1..0AC5 ; Other_Alphabetic # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E -0AC7..0AC8 ; Other_Alphabetic # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI -0AC9 ; Other_Alphabetic # Mc GUJARATI VOWEL SIGN CANDRA O -0ACB..0ACC ; Other_Alphabetic # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU -0AE2..0AE3 ; Other_Alphabetic # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL -0B01 ; Other_Alphabetic # Mn ORIYA SIGN CANDRABINDU -0B02..0B03 ; Other_Alphabetic # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA -0B3E ; Other_Alphabetic # Mc ORIYA VOWEL SIGN AA -0B3F ; Other_Alphabetic # Mn ORIYA VOWEL SIGN I -0B40 ; Other_Alphabetic # Mc ORIYA VOWEL SIGN II -0B41..0B43 ; Other_Alphabetic # Mn [3] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC R -0B47..0B48 ; Other_Alphabetic # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI -0B4B..0B4C ; Other_Alphabetic # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU -0B56 ; Other_Alphabetic # Mn ORIYA AI LENGTH MARK -0B57 ; Other_Alphabetic # Mc ORIYA AU LENGTH MARK -0B82 ; Other_Alphabetic # Mn TAMIL SIGN ANUSVARA -0BBE..0BBF ; Other_Alphabetic # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I -0BC0 ; Other_Alphabetic # Mn TAMIL VOWEL SIGN II -0BC1..0BC2 ; Other_Alphabetic # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU -0BC6..0BC8 ; Other_Alphabetic # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI -0BCA..0BCC ; Other_Alphabetic # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU -0BD7 ; Other_Alphabetic # Mc TAMIL AU LENGTH MARK -0C01..0C03 ; Other_Alphabetic # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA -0C3E..0C40 ; Other_Alphabetic # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II -0C41..0C44 ; Other_Alphabetic # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR -0C46..0C48 ; Other_Alphabetic # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI -0C4A..0C4C ; Other_Alphabetic # Mn [3] TELUGU VOWEL SIGN O..TELUGU VOWEL SIGN AU -0C55..0C56 ; Other_Alphabetic # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK -0C82..0C83 ; Other_Alphabetic # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA -0CBE ; Other_Alphabetic # Mc KANNADA VOWEL SIGN AA -0CBF ; Other_Alphabetic # Mn KANNADA VOWEL SIGN I -0CC0..0CC4 ; Other_Alphabetic # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR -0CC6 ; Other_Alphabetic # Mn KANNADA VOWEL SIGN E -0CC7..0CC8 ; Other_Alphabetic # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI -0CCA..0CCB ; Other_Alphabetic # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO -0CCC ; Other_Alphabetic # Mn KANNADA VOWEL SIGN AU -0CD5..0CD6 ; Other_Alphabetic # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK -0D02..0D03 ; Other_Alphabetic # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA -0D3E..0D40 ; Other_Alphabetic # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II -0D41..0D43 ; Other_Alphabetic # Mn [3] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC R -0D46..0D48 ; Other_Alphabetic # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI -0D4A..0D4C ; Other_Alphabetic # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU -0D57 ; Other_Alphabetic # Mc MALAYALAM AU LENGTH MARK -0D82..0D83 ; Other_Alphabetic # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA -0DCF..0DD1 ; Other_Alphabetic # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA -0DD2..0DD4 ; Other_Alphabetic # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA -0DD6 ; Other_Alphabetic # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA -0DD8..0DDF ; Other_Alphabetic # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA -0DF2..0DF3 ; Other_Alphabetic # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA -0E31 ; Other_Alphabetic # Mn THAI CHARACTER MAI HAN-AKAT -0E34..0E3A ; Other_Alphabetic # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU -0E4D ; Other_Alphabetic # Mn THAI CHARACTER NIKHAHIT -0EB1 ; Other_Alphabetic # Mn LAO VOWEL SIGN MAI KAN -0EB4..0EB9 ; Other_Alphabetic # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU -0EBB..0EBC ; Other_Alphabetic # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO -0ECD ; Other_Alphabetic # Mn LAO NIGGAHITA -0F71..0F7E ; Other_Alphabetic # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO -0F7F ; Other_Alphabetic # Mc TIBETAN SIGN RNAM BCAD -0F80..0F81 ; Other_Alphabetic # Mn [2] TIBETAN VOWEL SIGN REVERSED I..TIBETAN VOWEL SIGN REVERSED II -0F90..0F97 ; Other_Alphabetic # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA -0F99..0FBC ; Other_Alphabetic # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA -102C ; Other_Alphabetic # Mc MYANMAR VOWEL SIGN AA -102D..1030 ; Other_Alphabetic # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU -1031 ; Other_Alphabetic # Mc MYANMAR VOWEL SIGN E -1032 ; Other_Alphabetic # Mn MYANMAR VOWEL SIGN AI -1036 ; Other_Alphabetic # Mn MYANMAR SIGN ANUSVARA -1038 ; Other_Alphabetic # Mc MYANMAR SIGN VISARGA -1056..1057 ; Other_Alphabetic # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR -1058..1059 ; Other_Alphabetic # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL -135F ; Other_Alphabetic # Mn ETHIOPIC COMBINING GEMINATION MARK -1712..1713 ; Other_Alphabetic # Mn [2] TAGALOG VOWEL SIGN I..TAGALOG VOWEL SIGN U -1732..1733 ; Other_Alphabetic # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U -1752..1753 ; Other_Alphabetic # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U -1772..1773 ; Other_Alphabetic # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U -17B6 ; Other_Alphabetic # Mc KHMER VOWEL SIGN AA -17B7..17BD ; Other_Alphabetic # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA -17BE..17C5 ; Other_Alphabetic # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU -17C6 ; Other_Alphabetic # Mn KHMER SIGN NIKAHIT -17C7..17C8 ; Other_Alphabetic # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU -18A9 ; Other_Alphabetic # Mn MONGOLIAN LETTER ALI GALI DAGALGA -1920..1922 ; Other_Alphabetic # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U -1923..1926 ; Other_Alphabetic # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU -1927..1928 ; Other_Alphabetic # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O -1929..192B ; Other_Alphabetic # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA -1930..1931 ; Other_Alphabetic # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA -1932 ; Other_Alphabetic # Mn LIMBU SMALL LETTER ANUSVARA -1933..1938 ; Other_Alphabetic # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA -19B0..19C0 ; Other_Alphabetic # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY -19C8..19C9 ; Other_Alphabetic # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2 -1A17..1A18 ; Other_Alphabetic # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U -1A19..1A1B ; Other_Alphabetic # Mc [3] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN AE -24B6..24E9 ; Other_Alphabetic # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z -A823..A824 ; Other_Alphabetic # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I -A825..A826 ; Other_Alphabetic # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E -A827 ; Other_Alphabetic # Mc SYLOTI NAGRI VOWEL SIGN OO -FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA -10A01..10A03 ; Other_Alphabetic # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R -10A05..10A06 ; Other_Alphabetic # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O -10A0C..10A0F ; Other_Alphabetic # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA - -# Total code points: 488 - -# ================================================ - -3006 ; Ideographic # Lo IDEOGRAPHIC CLOSING MARK -3007 ; Ideographic # Nl IDEOGRAPHIC NUMBER ZERO -3021..3029 ; Ideographic # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE -3038..303A ; Ideographic # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY -3400..4DB5 ; Ideographic # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FBB ; Ideographic # Lo [20924] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FBB -F900..FA2D ; Ideographic # Lo [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D -FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 -20000..2A6D6 ; Ideographic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 -2F800..2FA1D ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - -# Total code points: 71181 - -# ================================================ - -005E ; Diacritic # Sk CIRCUMFLEX ACCENT -0060 ; Diacritic # Sk GRAVE ACCENT -00A8 ; Diacritic # Sk DIAERESIS -00AF ; Diacritic # Sk MACRON -00B4 ; Diacritic # Sk ACUTE ACCENT -00B7 ; Diacritic # Po MIDDLE DOT -00B8 ; Diacritic # Sk CEDILLA -02B0..02C1 ; Diacritic # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP -02C2..02C5 ; Diacritic # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD -02C6..02D1 ; Diacritic # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON -02D2..02DF ; Diacritic # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT -02E0..02E4 ; Diacritic # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP -02E5..02ED ; Diacritic # Sk [9] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER UNASPIRATED -02EE ; Diacritic # Lm MODIFIER LETTER DOUBLE APOSTROPHE -02EF..02FF ; Diacritic # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW -0300..034E ; Diacritic # Mn [79] COMBINING GRAVE ACCENT..COMBINING UPWARDS ARROW BELOW -0350..0357 ; Diacritic # Mn [8] COMBINING RIGHT ARROWHEAD ABOVE..COMBINING RIGHT HALF RING ABOVE -035D..0362 ; Diacritic # Mn [6] COMBINING DOUBLE BREVE..COMBINING DOUBLE RIGHTWARDS ARROW BELOW -0374..0375 ; Diacritic # Sk [2] GREEK NUMERAL SIGN..GREEK LOWER NUMERAL SIGN -037A ; Diacritic # Lm GREEK YPOGEGRAMMENI -0384..0385 ; Diacritic # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS -0483..0486 ; Diacritic # Mn [4] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PSILI PNEUMATA -0559 ; Diacritic # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING -0591..05A1 ; Diacritic # Mn [17] HEBREW ACCENT ETNAHTA..HEBREW ACCENT PAZER -05A3..05B9 ; Diacritic # Mn [23] HEBREW ACCENT MUNAH..HEBREW POINT HOLAM -05BB..05BD ; Diacritic # Mn [3] HEBREW POINT QUBUTS..HEBREW POINT METEG -05BF ; Diacritic # Mn HEBREW POINT RAFE -05C1..05C2 ; Diacritic # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT -05C4 ; Diacritic # Mn HEBREW MARK UPPER DOT -064B..0652 ; Diacritic # Mn [8] ARABIC FATHATAN..ARABIC SUKUN -0657..0658 ; Diacritic # Mn [2] ARABIC INVERTED DAMMA..ARABIC MARK NOON GHUNNA -06DF..06E0 ; Diacritic # Mn [2] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO -06E5..06E6 ; Diacritic # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH -06EA..06EC ; Diacritic # Mn [3] ARABIC EMPTY CENTRE LOW STOP..ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE -0730..074A ; Diacritic # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH -07A6..07B0 ; Diacritic # Mn [11] THAANA ABAFILI..THAANA SUKUN -093C ; Diacritic # Mn DEVANAGARI SIGN NUKTA -094D ; Diacritic # Mn DEVANAGARI SIGN VIRAMA -0951..0954 ; Diacritic # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT -09BC ; Diacritic # Mn BENGALI SIGN NUKTA -09CD ; Diacritic # Mn BENGALI SIGN VIRAMA -0A3C ; Diacritic # Mn GURMUKHI SIGN NUKTA -0A4D ; Diacritic # Mn GURMUKHI SIGN VIRAMA -0ABC ; Diacritic # Mn GUJARATI SIGN NUKTA -0ACD ; Diacritic # Mn GUJARATI SIGN VIRAMA -0B3C ; Diacritic # Mn ORIYA SIGN NUKTA -0B4D ; Diacritic # Mn ORIYA SIGN VIRAMA -0BCD ; Diacritic # Mn TAMIL SIGN VIRAMA -0C4D ; Diacritic # Mn TELUGU SIGN VIRAMA -0CBC ; Diacritic # Mn KANNADA SIGN NUKTA -0CCD ; Diacritic # Mn KANNADA SIGN VIRAMA -0D4D ; Diacritic # Mn MALAYALAM SIGN VIRAMA -0DCA ; Diacritic # Mn SINHALA SIGN AL-LAKUNA -0E47..0E4C ; Diacritic # Mn [6] THAI CHARACTER MAITAIKHU..THAI CHARACTER THANTHAKHAT -0E4E ; Diacritic # Mn THAI CHARACTER YAMAKKAN -0EC8..0ECC ; Diacritic # Mn [5] LAO TONE MAI EK..LAO CANCELLATION MARK -0F18..0F19 ; Diacritic # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS -0F35 ; Diacritic # Mn TIBETAN MARK NGAS BZUNG NYI ZLA -0F37 ; Diacritic # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS -0F39 ; Diacritic # Mn TIBETAN MARK TSA -PHRU -0F3E..0F3F ; Diacritic # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES -0F82..0F84 ; Diacritic # Mn [3] TIBETAN SIGN NYI ZLA NAA DA..TIBETAN MARK HALANTA -0F86..0F87 ; Diacritic # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS -0FC6 ; Diacritic # Mn TIBETAN SYMBOL PADMA GDAN -1037 ; Diacritic # Mn MYANMAR SIGN DOT BELOW -1039 ; Diacritic # Mn MYANMAR SIGN VIRAMA -17C9..17D3 ; Diacritic # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT -17DD ; Diacritic # Mn KHMER SIGN ATTHACAN -1939..193B ; Diacritic # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I -1D2C..1D61 ; Diacritic # Lm [54] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL CHI -1D62..1D6A ; Diacritic # L& [9] LATIN SUBSCRIPT SMALL LETTER I..GREEK SUBSCRIPT SMALL LETTER CHI -1FBD ; Diacritic # Sk GREEK KORONIS -1FBF..1FC1 ; Diacritic # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI -1FCD..1FCF ; Diacritic # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI -1FDD..1FDF ; Diacritic # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI -1FED..1FEF ; Diacritic # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA -1FFD..1FFE ; Diacritic # Sk [2] GREEK OXIA..GREEK DASIA -302A..302F ; Diacritic # Mn [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK -3099..309A ; Diacritic # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -309B..309C ; Diacritic # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -30FC ; Diacritic # Lm KATAKANA-HIRAGANA PROLONGED SOUND MARK -FB1E ; Diacritic # Mn HEBREW POINT JUDEO-SPANISH VARIKA -FE20..FE23 ; Diacritic # Mn [4] COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF -FF3E ; Diacritic # Sk FULLWIDTH CIRCUMFLEX ACCENT -FF40 ; Diacritic # Sk FULLWIDTH GRAVE ACCENT -FF70 ; Diacritic # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK -FF9E..FF9F ; Diacritic # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK -FFE3 ; Diacritic # Sk FULLWIDTH MACRON -1D167..1D169 ; Diacritic # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 -1D16D..1D172 ; Diacritic # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 -1D17B..1D182 ; Diacritic # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE -1D185..1D18B ; Diacritic # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE -1D1AA..1D1AD ; Diacritic # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO - -# Total code points: 482 - -# ================================================ - -00B7 ; Extender # Po MIDDLE DOT -02D0..02D1 ; Extender # Lm [2] MODIFIER LETTER TRIANGULAR COLON..MODIFIER LETTER HALF TRIANGULAR COLON -0640 ; Extender # Lm ARABIC TATWEEL -0E46 ; Extender # Lm THAI CHARACTER MAIYAMOK -0EC6 ; Extender # Lm LAO KO LA -1843 ; Extender # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN -3005 ; Extender # Lm IDEOGRAPHIC ITERATION MARK -3031..3035 ; Extender # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF -309D..309E ; Extender # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK -30FC..30FE ; Extender # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK -A015 ; Extender # Lm YI SYLLABLE WU -FF70 ; Extender # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK - -# Total code points: 20 - -# ================================================ - -02B0..02B8 ; Other_Lowercase # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y -02C0..02C1 ; Other_Lowercase # Lm [2] MODIFIER LETTER GLOTTAL STOP..MODIFIER LETTER REVERSED GLOTTAL STOP -02E0..02E4 ; Other_Lowercase # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP -0345 ; Other_Lowercase # Mn COMBINING GREEK YPOGEGRAMMENI -037A ; Other_Lowercase # Lm GREEK YPOGEGRAMMENI -1D2C..1D61 ; Other_Lowercase # Lm [54] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL CHI -1D78 ; Other_Lowercase # Lm MODIFIER LETTER CYRILLIC EN -1D9B..1DBF ; Other_Lowercase # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA -2090..2094 ; Other_Lowercase # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA -2170..217F ; Other_Lowercase # Nl [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND -24D0..24E9 ; Other_Lowercase # So [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z - -# Total code points: 157 - -# ================================================ - -2160..216F ; Other_Uppercase # Nl [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND -24B6..24CF ; Other_Uppercase # So [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z - -# Total code points: 42 - -# ================================================ - -FDD0..FDEF ; Noncharacter_Code_Point # Cn [32] <noncharacter-FDD0>..<noncharacter-FDEF> -FFFE..FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-FFFE>..<noncharacter-FFFF> -1FFFE..1FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-1FFFE>..<noncharacter-1FFFF> -2FFFE..2FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-2FFFE>..<noncharacter-2FFFF> -3FFFE..3FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-3FFFE>..<noncharacter-3FFFF> -4FFFE..4FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-4FFFE>..<noncharacter-4FFFF> -5FFFE..5FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-5FFFE>..<noncharacter-5FFFF> -6FFFE..6FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-6FFFE>..<noncharacter-6FFFF> -7FFFE..7FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-7FFFE>..<noncharacter-7FFFF> -8FFFE..8FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-8FFFE>..<noncharacter-8FFFF> -9FFFE..9FFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-9FFFE>..<noncharacter-9FFFF> -AFFFE..AFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-AFFFE>..<noncharacter-AFFFF> -BFFFE..BFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-BFFFE>..<noncharacter-BFFFF> -CFFFE..CFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-CFFFE>..<noncharacter-CFFFF> -DFFFE..DFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-DFFFE>..<noncharacter-DFFFF> -EFFFE..EFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-EFFFE>..<noncharacter-EFFFF> -FFFFE..FFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-FFFFE>..<noncharacter-FFFFF> -10FFFE..10FFFF; Noncharacter_Code_Point # Cn [2] <noncharacter-10FFFE>..<noncharacter-10FFFF> - -# Total code points: 66 - -# ================================================ - -09BE ; Other_Grapheme_Extend # Mc BENGALI VOWEL SIGN AA -09D7 ; Other_Grapheme_Extend # Mc BENGALI AU LENGTH MARK -0B3E ; Other_Grapheme_Extend # Mc ORIYA VOWEL SIGN AA -0B57 ; Other_Grapheme_Extend # Mc ORIYA AU LENGTH MARK -0BBE ; Other_Grapheme_Extend # Mc TAMIL VOWEL SIGN AA -0BD7 ; Other_Grapheme_Extend # Mc TAMIL AU LENGTH MARK -0CC2 ; Other_Grapheme_Extend # Mc KANNADA VOWEL SIGN UU -0CD5..0CD6 ; Other_Grapheme_Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK -0D3E ; Other_Grapheme_Extend # Mc MALAYALAM VOWEL SIGN AA -0D57 ; Other_Grapheme_Extend # Mc MALAYALAM AU LENGTH MARK -0DCF ; Other_Grapheme_Extend # Mc SINHALA VOWEL SIGN AELA-PILLA -0DDF ; Other_Grapheme_Extend # Mc SINHALA VOWEL SIGN GAYANUKITTA -200C..200D ; Other_Grapheme_Extend # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER -1D165 ; Other_Grapheme_Extend # Mc MUSICAL SYMBOL COMBINING STEM -1D16E..1D172 ; Other_Grapheme_Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5 - -# Total code points: 21 - -# ================================================ - -034F ; Grapheme_Link # Mn COMBINING GRAPHEME JOINER -094D ; Grapheme_Link # Mn DEVANAGARI SIGN VIRAMA -09CD ; Grapheme_Link # Mn BENGALI SIGN VIRAMA -0A4D ; Grapheme_Link # Mn GURMUKHI SIGN VIRAMA -0ACD ; Grapheme_Link # Mn GUJARATI SIGN VIRAMA -0B4D ; Grapheme_Link # Mn ORIYA SIGN VIRAMA -0BCD ; Grapheme_Link # Mn TAMIL SIGN VIRAMA -0C4D ; Grapheme_Link # Mn TELUGU SIGN VIRAMA -0CCD ; Grapheme_Link # Mn KANNADA SIGN VIRAMA -0D4D ; Grapheme_Link # Mn MALAYALAM SIGN VIRAMA -0DCA ; Grapheme_Link # Mn SINHALA SIGN AL-LAKUNA -0E3A ; Grapheme_Link # Mn THAI CHARACTER PHINTHU -1039 ; Grapheme_Link # Mn MYANMAR SIGN VIRAMA -17D2 ; Grapheme_Link # Mn KHMER SIGN COENG -A806 ; Grapheme_Link # Mn SYLOTI NAGRI SIGN HASANTA -10A3F ; Grapheme_Link # Mn KHAROSHTHI VIRAMA - -# Total code points: 16 - -# ================================================ - -2FF0..2FF1 ; IDS_Binary_Operator # So [2] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW -2FF4..2FFB ; IDS_Binary_Operator # So [8] IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID - -# Total code points: 10 - -# ================================================ - -2FF2..2FF3 ; IDS_Trinary_Operator # So [2] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW - -# Total code points: 2 - -# ================================================ - -2E80..2E99 ; Radical # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP -2E9B..2EF3 ; Radical # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE -2F00..2FD5 ; Radical # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE - -# Total code points: 329 - -# ================================================ - -3400..4DB5 ; Unified_Ideograph # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FBB ; Unified_Ideograph # Lo [20924] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FBB -FA0E..FA0F ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F -FA11 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA11 -FA13..FA14 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14 -FA1F ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA1F -FA21 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA21 -FA23..FA24 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24 -FA27..FA29 ; Unified_Ideograph # Lo [3] CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29 -20000..2A6D6 ; Unified_Ideograph # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 - -# Total code points: 70229 - -# ================================================ - -034F ; Other_Default_Ignorable_Code_Point # Mn COMBINING GRAPHEME JOINER -115F..1160 ; Other_Default_Ignorable_Code_Point # Lo [2] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER -2064..2069 ; Other_Default_Ignorable_Code_Point # Cn [6] <reserved-2064>..<reserved-2069> -3164 ; Other_Default_Ignorable_Code_Point # Lo HANGUL FILLER -FFA0 ; Other_Default_Ignorable_Code_Point # Lo HALFWIDTH HANGUL FILLER -FFF0..FFF8 ; Other_Default_Ignorable_Code_Point # Cn [9] <reserved-FFF0>..<reserved-FFF8> -E0000 ; Other_Default_Ignorable_Code_Point # Cn <reserved-E0000> -E0002..E001F ; Other_Default_Ignorable_Code_Point # Cn [30] <reserved-E0002>..<reserved-E001F> -E0080..E00FF ; Other_Default_Ignorable_Code_Point # Cn [128] <reserved-E0080>..<reserved-E00FF> -E01F0..E0FFF ; Other_Default_Ignorable_Code_Point # Cn [3600] <reserved-E01F0>..<reserved-E0FFF> - -# Total code points: 3779 - -# ================================================ - -0340..0341 ; Deprecated # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK -17A3 ; Deprecated # Lo KHMER INDEPENDENT VOWEL QAQ -17D3 ; Deprecated # Mn KHMER SIGN BATHAMASAT -206A..206F ; Deprecated # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES - -# Total code points: 10 - -# ================================================ - -0069..006A ; Soft_Dotted # L& [2] LATIN SMALL LETTER I..LATIN SMALL LETTER J -012F ; Soft_Dotted # L& LATIN SMALL LETTER I WITH OGONEK -0268 ; Soft_Dotted # L& LATIN SMALL LETTER I WITH STROKE -029D ; Soft_Dotted # L& LATIN SMALL LETTER J WITH CROSSED-TAIL -02B2 ; Soft_Dotted # Lm MODIFIER LETTER SMALL J -03F3 ; Soft_Dotted # L& GREEK LETTER YOT -0456 ; Soft_Dotted # L& CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -0458 ; Soft_Dotted # L& CYRILLIC SMALL LETTER JE -1D62 ; Soft_Dotted # L& LATIN SUBSCRIPT SMALL LETTER I -1D96 ; Soft_Dotted # L& LATIN SMALL LETTER I WITH RETROFLEX HOOK -1DA4 ; Soft_Dotted # Lm MODIFIER LETTER SMALL I WITH STROKE -1DA8 ; Soft_Dotted # Lm MODIFIER LETTER SMALL J WITH CROSSED-TAIL -1E2D ; Soft_Dotted # L& LATIN SMALL LETTER I WITH TILDE BELOW -1ECB ; Soft_Dotted # L& LATIN SMALL LETTER I WITH DOT BELOW -2071 ; Soft_Dotted # L& SUPERSCRIPT LATIN SMALL LETTER I -2148..2149 ; Soft_Dotted # L& [2] DOUBLE-STRUCK ITALIC SMALL I..DOUBLE-STRUCK ITALIC SMALL J -1D422..1D423 ; Soft_Dotted # L& [2] MATHEMATICAL BOLD SMALL I..MATHEMATICAL BOLD SMALL J -1D456..1D457 ; Soft_Dotted # L& [2] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL J -1D48A..1D48B ; Soft_Dotted # L& [2] MATHEMATICAL BOLD ITALIC SMALL I..MATHEMATICAL BOLD ITALIC SMALL J -1D4BE..1D4BF ; Soft_Dotted # L& [2] MATHEMATICAL SCRIPT SMALL I..MATHEMATICAL SCRIPT SMALL J -1D4F2..1D4F3 ; Soft_Dotted # L& [2] MATHEMATICAL BOLD SCRIPT SMALL I..MATHEMATICAL BOLD SCRIPT SMALL J -1D526..1D527 ; Soft_Dotted # L& [2] MATHEMATICAL FRAKTUR SMALL I..MATHEMATICAL FRAKTUR SMALL J -1D55A..1D55B ; Soft_Dotted # L& [2] MATHEMATICAL DOUBLE-STRUCK SMALL I..MATHEMATICAL DOUBLE-STRUCK SMALL J -1D58E..1D58F ; Soft_Dotted # L& [2] MATHEMATICAL BOLD FRAKTUR SMALL I..MATHEMATICAL BOLD FRAKTUR SMALL J -1D5C2..1D5C3 ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF SMALL I..MATHEMATICAL SANS-SERIF SMALL J -1D5F6..1D5F7 ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF BOLD SMALL I..MATHEMATICAL SANS-SERIF BOLD SMALL J -1D62A..1D62B ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF ITALIC SMALL I..MATHEMATICAL SANS-SERIF ITALIC SMALL J -1D65E..1D65F ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J -1D692..1D693 ; Soft_Dotted # L& [2] MATHEMATICAL MONOSPACE SMALL I..MATHEMATICAL MONOSPACE SMALL J - -# Total code points: 44 - -# ================================================ - -0E40..0E44 ; Logical_Order_Exception # Lo [5] THAI CHARACTER SARA E..THAI CHARACTER SARA AI MAIMALAI -0EC0..0EC4 ; Logical_Order_Exception # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI - -# Total code points: 10 - -# ================================================ - -2118 ; Other_ID_Start # So SCRIPT CAPITAL P -212E ; Other_ID_Start # So ESTIMATED SYMBOL -309B..309C ; Other_ID_Start # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK - -# Total code points: 4 - -# ================================================ - -1369..1371 ; Other_ID_Continue # No [9] ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE - -# Total code points: 9 - -# ================================================ - -0021 ; STerm # Po EXCLAMATION MARK -002E ; STerm # Po FULL STOP -003F ; STerm # Po QUESTION MARK -055C ; STerm # Po ARMENIAN EXCLAMATION MARK -055E ; STerm # Po ARMENIAN QUESTION MARK -0589 ; STerm # Po ARMENIAN FULL STOP -061F ; STerm # Po ARABIC QUESTION MARK -06D4 ; STerm # Po ARABIC FULL STOP -0700..0702 ; STerm # Po [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP -0964..0965 ; STerm # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA -104A..104B ; STerm # Po [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION -1362 ; STerm # Po ETHIOPIC FULL STOP -1367..1368 ; STerm # Po [2] ETHIOPIC QUESTION MARK..ETHIOPIC PARAGRAPH SEPARATOR -166E ; STerm # Po CANADIAN SYLLABICS FULL STOP -1803 ; STerm # Po MONGOLIAN FULL STOP -1809 ; STerm # Po MONGOLIAN MANCHU FULL STOP -1944..1945 ; STerm # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK -203C..203D ; STerm # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG -2047..2049 ; STerm # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK -3002 ; STerm # Po IDEOGRAPHIC FULL STOP -FE52 ; STerm # Po SMALL FULL STOP -FE56..FE57 ; STerm # Po [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK -FF01 ; STerm # Po FULLWIDTH EXCLAMATION MARK -FF0E ; STerm # Po FULLWIDTH FULL STOP -FF1F ; STerm # Po FULLWIDTH QUESTION MARK -FF61 ; STerm # Po HALFWIDTH IDEOGRAPHIC FULL STOP - -# Total code points: 36 - -# ================================================ - -180B..180D ; Variation_Selector # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE -FE00..FE0F ; Variation_Selector # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 -E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 - -# Total code points: 259 - -# ================================================ - -0009..000D ; Pattern_White_Space # Cc [5] <control-0009>..<control-000D> -0020 ; Pattern_White_Space # Zs SPACE -0085 ; Pattern_White_Space # Cc <control-0085> -200E..200F ; Pattern_White_Space # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK -2028 ; Pattern_White_Space # Zl LINE SEPARATOR -2029 ; Pattern_White_Space # Zp PARAGRAPH SEPARATOR - -# Total code points: 11 - -# ================================================ - -0021..0023 ; Pattern_Syntax # Po [3] EXCLAMATION MARK..NUMBER SIGN -0024 ; Pattern_Syntax # Sc DOLLAR SIGN -0025..0027 ; Pattern_Syntax # Po [3] PERCENT SIGN..APOSTROPHE -0028 ; Pattern_Syntax # Ps LEFT PARENTHESIS -0029 ; Pattern_Syntax # Pe RIGHT PARENTHESIS -002A ; Pattern_Syntax # Po ASTERISK -002B ; Pattern_Syntax # Sm PLUS SIGN -002C ; Pattern_Syntax # Po COMMA -002D ; Pattern_Syntax # Pd HYPHEN-MINUS -002E..002F ; Pattern_Syntax # Po [2] FULL STOP..SOLIDUS -003A..003B ; Pattern_Syntax # Po [2] COLON..SEMICOLON -003C..003E ; Pattern_Syntax # Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN -003F..0040 ; Pattern_Syntax # Po [2] QUESTION MARK..COMMERCIAL AT -005B ; Pattern_Syntax # Ps LEFT SQUARE BRACKET -005C ; Pattern_Syntax # Po REVERSE SOLIDUS -005D ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET -005E ; Pattern_Syntax # Sk CIRCUMFLEX ACCENT -0060 ; Pattern_Syntax # Sk GRAVE ACCENT -007B ; Pattern_Syntax # Ps LEFT CURLY BRACKET -007C ; Pattern_Syntax # Sm VERTICAL LINE -007D ; Pattern_Syntax # Pe RIGHT CURLY BRACKET -007E ; Pattern_Syntax # Sm TILDE -00A1 ; Pattern_Syntax # Po INVERTED EXCLAMATION MARK -00A2..00A5 ; Pattern_Syntax # Sc [4] CENT SIGN..YEN SIGN -00A6..00A7 ; Pattern_Syntax # So [2] BROKEN BAR..SECTION SIGN -00A9 ; Pattern_Syntax # So COPYRIGHT SIGN -00AB ; Pattern_Syntax # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -00AC ; Pattern_Syntax # Sm NOT SIGN -00AE ; Pattern_Syntax # So REGISTERED SIGN -00B0 ; Pattern_Syntax # So DEGREE SIGN -00B1 ; Pattern_Syntax # Sm PLUS-MINUS SIGN -00B6 ; Pattern_Syntax # So PILCROW SIGN -00BB ; Pattern_Syntax # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -00BF ; Pattern_Syntax # Po INVERTED QUESTION MARK -00D7 ; Pattern_Syntax # Sm MULTIPLICATION SIGN -00F7 ; Pattern_Syntax # Sm DIVISION SIGN -2010..2015 ; Pattern_Syntax # Pd [6] HYPHEN..HORIZONTAL BAR -2016..2017 ; Pattern_Syntax # Po [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE -2018 ; Pattern_Syntax # Pi LEFT SINGLE QUOTATION MARK -2019 ; Pattern_Syntax # Pf RIGHT SINGLE QUOTATION MARK -201A ; Pattern_Syntax # Ps SINGLE LOW-9 QUOTATION MARK -201B..201C ; Pattern_Syntax # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK -201D ; Pattern_Syntax # Pf RIGHT DOUBLE QUOTATION MARK -201E ; Pattern_Syntax # Ps DOUBLE LOW-9 QUOTATION MARK -201F ; Pattern_Syntax # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK -2020..2027 ; Pattern_Syntax # Po [8] DAGGER..HYPHENATION POINT -2030..2038 ; Pattern_Syntax # Po [9] PER MILLE SIGN..CARET -2039 ; Pattern_Syntax # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK -203A ; Pattern_Syntax # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -203B..203E ; Pattern_Syntax # Po [4] REFERENCE MARK..OVERLINE -2041..2043 ; Pattern_Syntax # Po [3] CARET INSERTION POINT..HYPHEN BULLET -2044 ; Pattern_Syntax # Sm FRACTION SLASH -2045 ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH QUILL -2046 ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH QUILL -2047..2051 ; Pattern_Syntax # Po [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY -2052 ; Pattern_Syntax # Sm COMMERCIAL MINUS SIGN -2053 ; Pattern_Syntax # Po SWUNG DASH -2055..205E ; Pattern_Syntax # Po [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS -2190..2194 ; Pattern_Syntax # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW -2195..2199 ; Pattern_Syntax # So [5] UP DOWN ARROW..SOUTH WEST ARROW -219A..219B ; Pattern_Syntax # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE -219C..219F ; Pattern_Syntax # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW -21A0 ; Pattern_Syntax # Sm RIGHTWARDS TWO HEADED ARROW -21A1..21A2 ; Pattern_Syntax # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL -21A3 ; Pattern_Syntax # Sm RIGHTWARDS ARROW WITH TAIL -21A4..21A5 ; Pattern_Syntax # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR -21A6 ; Pattern_Syntax # Sm RIGHTWARDS ARROW FROM BAR -21A7..21AD ; Pattern_Syntax # So [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW -21AE ; Pattern_Syntax # Sm LEFT RIGHT ARROW WITH STROKE -21AF..21CD ; Pattern_Syntax # So [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE -21CE..21CF ; Pattern_Syntax # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE -21D0..21D1 ; Pattern_Syntax # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW -21D2 ; Pattern_Syntax # Sm RIGHTWARDS DOUBLE ARROW -21D3 ; Pattern_Syntax # So DOWNWARDS DOUBLE ARROW -21D4 ; Pattern_Syntax # Sm LEFT RIGHT DOUBLE ARROW -21D5..21F3 ; Pattern_Syntax # So [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW -21F4..22FF ; Pattern_Syntax # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP -2300..2307 ; Pattern_Syntax # So [8] DIAMETER SIGN..WAVY LINE -2308..230B ; Pattern_Syntax # Sm [4] LEFT CEILING..RIGHT FLOOR -230C..231F ; Pattern_Syntax # So [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER -2320..2321 ; Pattern_Syntax # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL -2322..2328 ; Pattern_Syntax # So [7] FROWN..KEYBOARD -2329 ; Pattern_Syntax # Ps LEFT-POINTING ANGLE BRACKET -232A ; Pattern_Syntax # Pe RIGHT-POINTING ANGLE BRACKET -232B..237B ; Pattern_Syntax # So [81] ERASE TO THE LEFT..NOT CHECK MARK -237C ; Pattern_Syntax # Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW -237D..239A ; Pattern_Syntax # So [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL -239B..23B3 ; Pattern_Syntax # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM -23B4 ; Pattern_Syntax # Ps TOP SQUARE BRACKET -23B5 ; Pattern_Syntax # Pe BOTTOM SQUARE BRACKET -23B6 ; Pattern_Syntax # Po BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET -23B7..23DB ; Pattern_Syntax # So [37] RADICAL SYMBOL BOTTOM..FUSE -23DC..23FF ; Pattern_Syntax # Cn [36] <reserved-23DC>..<reserved-23FF> -2400..2426 ; Pattern_Syntax # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO -2427..243F ; Pattern_Syntax # Cn [25] <reserved-2427>..<reserved-243F> -2440..244A ; Pattern_Syntax # So [11] OCR HOOK..OCR DOUBLE BACKSLASH -244B..245F ; Pattern_Syntax # Cn [21] <reserved-244B>..<reserved-245F> -2500..25B6 ; Pattern_Syntax # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE -25B7 ; Pattern_Syntax # Sm WHITE RIGHT-POINTING TRIANGLE -25B8..25C0 ; Pattern_Syntax # So [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE -25C1 ; Pattern_Syntax # Sm WHITE LEFT-POINTING TRIANGLE -25C2..25F7 ; Pattern_Syntax # So [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT -25F8..25FF ; Pattern_Syntax # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE -2600..266E ; Pattern_Syntax # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN -266F ; Pattern_Syntax # Sm MUSIC SHARP SIGN -2670..269C ; Pattern_Syntax # So [45] WEST SYRIAC CROSS..FLEUR-DE-LIS -269D..269F ; Pattern_Syntax # Cn [3] <reserved-269D>..<reserved-269F> -26A0..26B1 ; Pattern_Syntax # So [18] WARNING SIGN..FUNERAL URN -26B2..2700 ; Pattern_Syntax # Cn [79] <reserved-26B2>..<reserved-2700> -2701..2704 ; Pattern_Syntax # So [4] UPPER BLADE SCISSORS..WHITE SCISSORS -2705 ; Pattern_Syntax # Cn <reserved-2705> -2706..2709 ; Pattern_Syntax # So [4] TELEPHONE LOCATION SIGN..ENVELOPE -270A..270B ; Pattern_Syntax # Cn [2] <reserved-270A>..<reserved-270B> -270C..2727 ; Pattern_Syntax # So [28] VICTORY HAND..WHITE FOUR POINTED STAR -2728 ; Pattern_Syntax # Cn <reserved-2728> -2729..274B ; Pattern_Syntax # So [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -274C ; Pattern_Syntax # Cn <reserved-274C> -274D ; Pattern_Syntax # So SHADOWED WHITE CIRCLE -274E ; Pattern_Syntax # Cn <reserved-274E> -274F..2752 ; Pattern_Syntax # So [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE -2753..2755 ; Pattern_Syntax # Cn [3] <reserved-2753>..<reserved-2755> -2756 ; Pattern_Syntax # So BLACK DIAMOND MINUS WHITE X -2757 ; Pattern_Syntax # Cn <reserved-2757> -2758..275E ; Pattern_Syntax # So [7] LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT -275F..2760 ; Pattern_Syntax # Cn [2] <reserved-275F>..<reserved-2760> -2761..2767 ; Pattern_Syntax # So [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET -2768 ; Pattern_Syntax # Ps MEDIUM LEFT PARENTHESIS ORNAMENT -2769 ; Pattern_Syntax # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT -276A ; Pattern_Syntax # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT -276B ; Pattern_Syntax # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT -276C ; Pattern_Syntax # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT -276D ; Pattern_Syntax # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT -276E ; Pattern_Syntax # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT -276F ; Pattern_Syntax # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT -2770 ; Pattern_Syntax # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT -2771 ; Pattern_Syntax # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT -2772 ; Pattern_Syntax # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT -2773 ; Pattern_Syntax # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT -2774 ; Pattern_Syntax # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT -2775 ; Pattern_Syntax # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT -2794 ; Pattern_Syntax # So HEAVY WIDE-HEADED RIGHTWARDS ARROW -2795..2797 ; Pattern_Syntax # Cn [3] <reserved-2795>..<reserved-2797> -2798..27AF ; Pattern_Syntax # So [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27B0 ; Pattern_Syntax # Cn <reserved-27B0> -27B1..27BE ; Pattern_Syntax # So [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW -27BF ; Pattern_Syntax # Cn <reserved-27BF> -27C0..27C4 ; Pattern_Syntax # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET -27C5 ; Pattern_Syntax # Ps LEFT S-SHAPED BAG DELIMITER -27C6 ; Pattern_Syntax # Pe RIGHT S-SHAPED BAG DELIMITER -27C7..27CF ; Pattern_Syntax # Cn [9] <reserved-27C7>..<reserved-27CF> -27D0..27E5 ; Pattern_Syntax # Sm [22] WHITE DIAMOND WITH CENTRED DOT..WHITE SQUARE WITH RIGHTWARDS TICK -27E6 ; Pattern_Syntax # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET -27E7 ; Pattern_Syntax # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET -27E8 ; Pattern_Syntax # Ps MATHEMATICAL LEFT ANGLE BRACKET -27E9 ; Pattern_Syntax # Pe MATHEMATICAL RIGHT ANGLE BRACKET -27EA ; Pattern_Syntax # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET -27EB ; Pattern_Syntax # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET -27EC..27EF ; Pattern_Syntax # Cn [4] <reserved-27EC>..<reserved-27EF> -27F0..27FF ; Pattern_Syntax # Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW -2800..28FF ; Pattern_Syntax # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678 -2900..2982 ; Pattern_Syntax # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON -2983 ; Pattern_Syntax # Ps LEFT WHITE CURLY BRACKET -2984 ; Pattern_Syntax # Pe RIGHT WHITE CURLY BRACKET -2985 ; Pattern_Syntax # Ps LEFT WHITE PARENTHESIS -2986 ; Pattern_Syntax # Pe RIGHT WHITE PARENTHESIS -2987 ; Pattern_Syntax # Ps Z NOTATION LEFT IMAGE BRACKET -2988 ; Pattern_Syntax # Pe Z NOTATION RIGHT IMAGE BRACKET -2989 ; Pattern_Syntax # Ps Z NOTATION LEFT BINDING BRACKET -298A ; Pattern_Syntax # Pe Z NOTATION RIGHT BINDING BRACKET -298B ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH UNDERBAR -298C ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH UNDERBAR -298D ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER -298E ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -298F ; Pattern_Syntax # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -2990 ; Pattern_Syntax # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER -2991 ; Pattern_Syntax # Ps LEFT ANGLE BRACKET WITH DOT -2992 ; Pattern_Syntax # Pe RIGHT ANGLE BRACKET WITH DOT -2993 ; Pattern_Syntax # Ps LEFT ARC LESS-THAN BRACKET -2994 ; Pattern_Syntax # Pe RIGHT ARC GREATER-THAN BRACKET -2995 ; Pattern_Syntax # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET -2996 ; Pattern_Syntax # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET -2997 ; Pattern_Syntax # Ps LEFT BLACK TORTOISE SHELL BRACKET -2998 ; Pattern_Syntax # Pe RIGHT BLACK TORTOISE SHELL BRACKET -2999..29D7 ; Pattern_Syntax # Sm [63] DOTTED FENCE..BLACK HOURGLASS -29D8 ; Pattern_Syntax # Ps LEFT WIGGLY FENCE -29D9 ; Pattern_Syntax # Pe RIGHT WIGGLY FENCE -29DA ; Pattern_Syntax # Ps LEFT DOUBLE WIGGLY FENCE -29DB ; Pattern_Syntax # Pe RIGHT DOUBLE WIGGLY FENCE -29DC..29FB ; Pattern_Syntax # Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS -29FC ; Pattern_Syntax # Ps LEFT-POINTING CURVED ANGLE BRACKET -29FD ; Pattern_Syntax # Pe RIGHT-POINTING CURVED ANGLE BRACKET -29FE..2AFF ; Pattern_Syntax # Sm [258] TINY..N-ARY WHITE VERTICAL BAR -2B00..2B13 ; Pattern_Syntax # So [20] NORTH EAST WHITE ARROW..SQUARE WITH BOTTOM HALF BLACK -2B14..2BFF ; Pattern_Syntax # Cn [236] <reserved-2B14>..<reserved-2BFF> -2E00..2E01 ; Pattern_Syntax # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER -2E02 ; Pattern_Syntax # Pi LEFT SUBSTITUTION BRACKET -2E03 ; Pattern_Syntax # Pf RIGHT SUBSTITUTION BRACKET -2E04 ; Pattern_Syntax # Pi LEFT DOTTED SUBSTITUTION BRACKET -2E05 ; Pattern_Syntax # Pf RIGHT DOTTED SUBSTITUTION BRACKET -2E06..2E08 ; Pattern_Syntax # Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER -2E09 ; Pattern_Syntax # Pi LEFT TRANSPOSITION BRACKET -2E0A ; Pattern_Syntax # Pf RIGHT TRANSPOSITION BRACKET -2E0B ; Pattern_Syntax # Po RAISED SQUARE -2E0C ; Pattern_Syntax # Pi LEFT RAISED OMISSION BRACKET -2E0D ; Pattern_Syntax # Pf RIGHT RAISED OMISSION BRACKET -2E0E..2E16 ; Pattern_Syntax # Po [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE -2E17 ; Pattern_Syntax # Pd DOUBLE OBLIQUE HYPHEN -2E18..2E1B ; Pattern_Syntax # Cn [4] <reserved-2E18>..<reserved-2E1B> -2E1C ; Pattern_Syntax # Pi LEFT LOW PARAPHRASE BRACKET -2E1D ; Pattern_Syntax # Pf RIGHT LOW PARAPHRASE BRACKET -2E1E..2E7F ; Pattern_Syntax # Cn [98] <reserved-2E1E>..<reserved-2E7F> -3001..3003 ; Pattern_Syntax # Po [3] IDEOGRAPHIC COMMA..DITTO MARK -3008 ; Pattern_Syntax # Ps LEFT ANGLE BRACKET -3009 ; Pattern_Syntax # Pe RIGHT ANGLE BRACKET -300A ; Pattern_Syntax # Ps LEFT DOUBLE ANGLE BRACKET -300B ; Pattern_Syntax # Pe RIGHT DOUBLE ANGLE BRACKET -300C ; Pattern_Syntax # Ps LEFT CORNER BRACKET -300D ; Pattern_Syntax # Pe RIGHT CORNER BRACKET -300E ; Pattern_Syntax # Ps LEFT WHITE CORNER BRACKET -300F ; Pattern_Syntax # Pe RIGHT WHITE CORNER BRACKET -3010 ; Pattern_Syntax # Ps LEFT BLACK LENTICULAR BRACKET -3011 ; Pattern_Syntax # Pe RIGHT BLACK LENTICULAR BRACKET -3012..3013 ; Pattern_Syntax # So [2] POSTAL MARK..GETA MARK -3014 ; Pattern_Syntax # Ps LEFT TORTOISE SHELL BRACKET -3015 ; Pattern_Syntax # Pe RIGHT TORTOISE SHELL BRACKET -3016 ; Pattern_Syntax # Ps LEFT WHITE LENTICULAR BRACKET -3017 ; Pattern_Syntax # Pe RIGHT WHITE LENTICULAR BRACKET -3018 ; Pattern_Syntax # Ps LEFT WHITE TORTOISE SHELL BRACKET -3019 ; Pattern_Syntax # Pe RIGHT WHITE TORTOISE SHELL BRACKET -301A ; Pattern_Syntax # Ps LEFT WHITE SQUARE BRACKET -301B ; Pattern_Syntax # Pe RIGHT WHITE SQUARE BRACKET -301C ; Pattern_Syntax # Pd WAVE DASH -301D ; Pattern_Syntax # Ps REVERSED DOUBLE PRIME QUOTATION MARK -301E..301F ; Pattern_Syntax # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK -3020 ; Pattern_Syntax # So POSTAL MARK FACE -3030 ; Pattern_Syntax # Pd WAVY DASH -FD3E ; Pattern_Syntax # Ps ORNATE LEFT PARENTHESIS -FD3F ; Pattern_Syntax # Pe ORNATE RIGHT PARENTHESIS -FE45..FE46 ; Pattern_Syntax # Po [2] SESAME DOT..WHITE SESAME DOT - -# Total code points: 2760 diff --git a/Master/tlpkg/tlperl.old/lib/unicore/PropValueAliases.txt b/Master/tlpkg/tlperl.old/lib/unicore/PropValueAliases.txt deleted file mode 100644 index 3f7aad206e5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/PropValueAliases.txt +++ /dev/null @@ -1,578 +0,0 @@ -# PropertyValueAliases-4.1.0.txt -# Date: 2005-03-28, 17:21:48 GMT [MD] -# -# Unicode Character Database -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# For documentation, see UCD.html -# -# This file contains aliases for property values used in the UCD. -# These names can be used for XML formats of UCD data, for regular-expression -# property tests, and other programmatic textual descriptions of Unicode data. -# For information on which properties are normative, see UCD.html. -# -# The names may be translated in appropriate environments, and additional -# aliases may be useful. -# -# FORMAT -# -# Each line describes a property value name. -# This consists of three or more fields, separated by semicolons. -# -# First Field: The first field describes the property for which that -# property value name is used. -# -# Second Field: The second field is an abbreviated name. -# If there is no abbreviated name available, the field is marked with "n/a". -# -# Third Field: The third field is a long name. -# -# In the case of ccc, there are 4 fields. The second field is numeric, third -# is abbreviated, and fourth is long. -# -# The above are the preferred aliases. Other aliases may be listed in additional fields. -# -# Loose matching should be applied to all property names and property values, with -# the exception of String Property values. With loose matching of property names and -# values, the case distinctions, whitespace, and '_' are ignored. For Numeric Property -# values, numeric equivalencies are applied: thus "01.00" is equivalent to "1". -# -# NOTE: Property value names are NOT unique across properties. For example: -# -# AL means Arabic Letter for the Bidi_Class property, and -# AL means Alpha_Left for the Combining_Class property, and -# AL means Alphabetic for the Line_Break property. -# -# In addition, some property names may be the same as some property value names. -# For example: -# -# sc means the Script property, and -# Sc means the General_Category property value Currency_Symbol (Sc) -# -# The combination of property value and property name is, however, unique. -# -# For more information, see UTS #18: Regular Expression Guidelines -# ================================================ - - -# Age (age) - -age; n/a ; 1.1 -age; n/a ; 2.0 -age; n/a ; 2.1 -age; n/a ; 3.0 -age; n/a ; 3.1 -age; n/a ; 3.2 -age; n/a ; 4.0 -age; n/a ; 4.1 -age; n/a ; unassigned - -# Bidi_Class (bc) - -bc ; AL ; Arabic_Letter -bc ; AN ; Arabic_Number -bc ; B ; Paragraph_Separator -bc ; BN ; Boundary_Neutral -bc ; CS ; Common_Separator -bc ; EN ; European_Number -bc ; ES ; European_Separator -bc ; ET ; European_Terminator -bc ; L ; Left_To_Right -bc ; LRE ; Left_To_Right_Embedding -bc ; LRO ; Left_To_Right_Override -bc ; NSM ; Nonspacing_Mark -bc ; ON ; Other_Neutral -bc ; PDF ; Pop_Directional_Format -bc ; R ; Right_To_Left -bc ; RLE ; Right_To_Left_Embedding -bc ; RLO ; Right_To_Left_Override -bc ; S ; Segment_Separator -bc ; WS ; White_Space - -# Block (blk) - -blk; n/a ; Aegean_Numbers -blk; n/a ; Alphabetic_Presentation_Forms -blk; n/a ; Ancient_Greek_Musical_Notation -blk; n/a ; Ancient_Greek_Numbers -blk; n/a ; Arabic -blk; n/a ; Arabic_Presentation_Forms-A -blk; n/a ; Arabic_Presentation_Forms-B -blk; n/a ; Arabic_Supplement -blk; n/a ; Armenian -blk; n/a ; Arrows -blk; n/a ; Basic_Latin -blk; n/a ; Bengali -blk; n/a ; Block_Elements -blk; n/a ; Bopomofo -blk; n/a ; Bopomofo_Extended -blk; n/a ; Box_Drawing -blk; n/a ; Braille_Patterns -blk; n/a ; Buginese -blk; n/a ; Buhid -blk; n/a ; Byzantine_Musical_Symbols -blk; n/a ; Cherokee -blk; n/a ; CJK_Compatibility -blk; n/a ; CJK_Compatibility_Forms -blk; n/a ; CJK_Compatibility_Ideographs -blk; n/a ; CJK_Compatibility_Ideographs_Supplement -blk; n/a ; CJK_Radicals_Supplement -blk; n/a ; CJK_Strokes -blk; n/a ; CJK_Symbols_and_Punctuation -blk; n/a ; CJK_Unified_Ideographs -blk; n/a ; CJK_Unified_Ideographs_Extension_A -blk; n/a ; CJK_Unified_Ideographs_Extension_B -blk; n/a ; Combining_Diacritical_Marks -blk; n/a ; Combining_Diacritical_Marks_for_Symbols -blk; n/a ; Combining_Diacritical_Marks_Supplement -blk; n/a ; Combining_Half_Marks -blk; n/a ; Control_Pictures -blk; n/a ; Coptic -blk; n/a ; Currency_Symbols -blk; n/a ; Cypriot_Syllabary -blk; n/a ; Cyrillic -blk; n/a ; Cyrillic_Supplement ; Cyrillic_Supplementary -blk; n/a ; Deseret -blk; n/a ; Devanagari -blk; n/a ; Dingbats -blk; n/a ; Enclosed_Alphanumerics -blk; n/a ; Enclosed_CJK_Letters_and_Months -blk; n/a ; Ethiopic -blk; n/a ; Ethiopic_Extended -blk; n/a ; Ethiopic_Supplement -blk; n/a ; General_Punctuation -blk; n/a ; Geometric_Shapes -blk; n/a ; Georgian -blk; n/a ; Georgian_Supplement -blk; n/a ; Glagolitic -blk; n/a ; Gothic -blk; n/a ; Greek_and_Coptic -blk; n/a ; Greek_Extended -blk; n/a ; Gujarati -blk; n/a ; Gurmukhi -blk; n/a ; Halfwidth_and_Fullwidth_Forms -blk; n/a ; Hangul_Compatibility_Jamo -blk; n/a ; Hangul_Jamo -blk; n/a ; Hangul_Syllables -blk; n/a ; Hanunoo -blk; n/a ; Hebrew -blk; n/a ; High_Private_Use_Surrogates -blk; n/a ; High_Surrogates -blk; n/a ; Hiragana -blk; n/a ; Ideographic_Description_Characters -blk; n/a ; IPA_Extensions -blk; n/a ; Kanbun -blk; n/a ; Kangxi_Radicals -blk; n/a ; Kannada -blk; n/a ; Katakana -blk; n/a ; Katakana_Phonetic_Extensions -blk; n/a ; Kharoshthi -blk; n/a ; Khmer -blk; n/a ; Khmer_Symbols -blk; n/a ; Lao -blk; n/a ; Latin-1_Supplement -blk; n/a ; Latin_Extended-A -blk; n/a ; Latin_Extended-B -blk; n/a ; Latin_Extended_Additional -blk; n/a ; Letterlike_Symbols -blk; n/a ; Limbu -blk; n/a ; Linear_B_Ideograms -blk; n/a ; Linear_B_Syllabary -blk; n/a ; Low_Surrogates -blk; n/a ; Malayalam -blk; n/a ; Mathematical_Alphanumeric_Symbols -blk; n/a ; Mathematical_Operators -blk; n/a ; Miscellaneous_Mathematical_Symbols-A -blk; n/a ; Miscellaneous_Mathematical_Symbols-B -blk; n/a ; Miscellaneous_Symbols -blk; n/a ; Miscellaneous_Symbols_and_Arrows -blk; n/a ; Miscellaneous_Technical -blk; n/a ; Modifier_Tone_Letters -blk; n/a ; Mongolian -blk; n/a ; Musical_Symbols -blk; n/a ; Myanmar -blk; n/a ; New_Tai_Lue -blk; n/a ; No_Block -blk; n/a ; Number_Forms -blk; n/a ; Ogham -blk; n/a ; Old_Italic -blk; n/a ; Old_Persian -blk; n/a ; Optical_Character_Recognition -blk; n/a ; Oriya -blk; n/a ; Osmanya -blk; n/a ; Phonetic_Extensions -blk; n/a ; Phonetic_Extensions_Supplement -blk; n/a ; Private_Use_Area -blk; n/a ; Runic -blk; n/a ; Shavian -blk; n/a ; Sinhala -blk; n/a ; Small_Form_Variants -blk; n/a ; Spacing_Modifier_Letters -blk; n/a ; Specials -blk; n/a ; Superscripts_and_Subscripts -blk; n/a ; Supplemental_Arrows-A -blk; n/a ; Supplemental_Arrows-B -blk; n/a ; Supplemental_Mathematical_Operators -blk; n/a ; Supplemental_Punctuation -blk; n/a ; Supplementary_Private_Use_Area-A -blk; n/a ; Supplementary_Private_Use_Area-B -blk; n/a ; Syloti_Nagri -blk; n/a ; Syriac -blk; n/a ; Tagalog -blk; n/a ; Tagbanwa -blk; n/a ; Tags -blk; n/a ; Tai_Le -blk; n/a ; Tai_Xuan_Jing_Symbols -blk; n/a ; Tamil -blk; n/a ; Telugu -blk; n/a ; Thaana -blk; n/a ; Thai -blk; n/a ; Tibetan -blk; n/a ; Tifinagh -blk; n/a ; Ugaritic -blk; n/a ; Unified_Canadian_Aboriginal_Syllabics -blk; n/a ; Variation_Selectors -blk; n/a ; Variation_Selectors_Supplement -blk; n/a ; Vertical_Forms -blk; n/a ; Yi_Radicals -blk; n/a ; Yi_Syllables -blk; n/a ; Yijing_Hexagram_Symbols - -# Canonical_Combining_Class (ccc) - -ccc; 0; NR ; Not_Reordered -ccc; 1; OV ; Overlay -ccc; 7; NK ; Nukta -ccc; 8; KV ; Kana_Voicing -ccc; 9; VR ; Virama -ccc; 200; ATBL ; Attached_Below_Left -ccc; 202; ATB ; Attached_Below -ccc; 216; ATAR ; Attached_Above_Right -ccc; 218; BL ; Below_Left -ccc; 220; B ; Below -ccc; 222; BR ; Below_Right -ccc; 224; L ; Left -ccc; 226; R ; Right -ccc; 228; AL ; Above_Left -ccc; 230; A ; Above -ccc; 232; AR ; Above_Right -ccc; 233; DB ; Double_Below -ccc; 234; DA ; Double_Above -ccc; 240; IS ; Iota_Subscript - -# Decomposition_Type (dt) - -dt ; can ; Canonical -dt ; com ; Compat -dt ; enc ; Circle -dt ; fin ; Final -dt ; font ; Font -dt ; fra ; Fraction -dt ; init ; Initial -dt ; iso ; Isolated -dt ; med ; Medial -dt ; nar ; Narrow -dt ; nb ; Nobreak -dt ; none ; None -dt ; sml ; Small -dt ; sqr ; Square -dt ; sub ; Sub -dt ; sup ; Super -dt ; vert ; Vertical -dt ; wide ; Wide - -# East_Asian_Width (ea) - -ea ; A ; Ambiguous -ea ; F ; Fullwidth -ea ; H ; Halfwidth -ea ; N ; Neutral -ea ; Na ; Narrow -ea ; W ; Wide - -# General_Category (gc) - -gc ; C ; Other # Cc | Cf | Cn | Co | Cs -gc ; Cc ; Control ; cntrl -gc ; Cf ; Format -gc ; Cn ; Unassigned -gc ; Co ; Private_Use -gc ; Cs ; Surrogate -gc ; L ; Letter # Ll | Lm | Lo | Lt | Lu -gc ; LC ; Cased_Letter # Ll | Lt | Lu -gc ; Ll ; Lowercase_Letter -gc ; Lm ; Modifier_Letter -gc ; Lo ; Other_Letter -gc ; Lt ; Titlecase_Letter -gc ; Lu ; Uppercase_Letter -gc ; M ; Mark # Mc | Me | Mn -gc ; Mc ; Spacing_Mark -gc ; Me ; Enclosing_Mark -gc ; Mn ; Nonspacing_Mark -gc ; N ; Number # Nd | Nl | No -gc ; Nd ; Decimal_Number ; digit -gc ; Nl ; Letter_Number -gc ; No ; Other_Number -gc ; P ; Punctuation ; punct # Pc | Pd | Pe | Pf | Pi | Po | Ps -gc ; Pc ; Connector_Punctuation -gc ; Pd ; Dash_Punctuation -gc ; Pe ; Close_Punctuation -gc ; Pf ; Final_Punctuation -gc ; Pi ; Initial_Punctuation -gc ; Po ; Other_Punctuation -gc ; Ps ; Open_Punctuation -gc ; S ; Symbol # Sc | Sk | Sm | So -gc ; Sc ; Currency_Symbol -gc ; Sk ; Modifier_Symbol -gc ; Sm ; Math_Symbol -gc ; So ; Other_Symbol -gc ; Z ; Separator # Zl | Zp | Zs -gc ; Zl ; Line_Separator -gc ; Zp ; Paragraph_Separator -gc ; Zs ; Space_Separator - -# Grapheme_Cluster_Break (GCB) - -GCB; CN ; Control -GCB; CR ; CR -GCB; EX ; Extend -GCB; L ; L -GCB; LF ; LF -GCB; LV ; LV -GCB; LVT ; LVT -GCB; T ; T -GCB; V ; V -GCB; XX ; Other - -# Hangul_Syllable_Type (hst) - -hst; L ; Leading_Jamo -hst; LV ; LV_Syllable -hst; LVT ; LVT_Syllable -hst; NA ; Not_Applicable -hst; T ; Trailing_Jamo -hst; V ; Vowel_Jamo - -# Joining_Group (jg) - -jg ; n/a ; Ain -jg ; n/a ; Alaph -jg ; n/a ; Alef -jg ; n/a ; Beh -jg ; n/a ; Beth -jg ; n/a ; Dal -jg ; n/a ; Dalath_Rish -jg ; n/a ; E -jg ; n/a ; Fe -jg ; n/a ; Feh -jg ; n/a ; Final_Semkath -jg ; n/a ; Gaf -jg ; n/a ; Gamal -jg ; n/a ; Hah -jg ; n/a ; Hamza_On_Heh_Goal -jg ; n/a ; He -jg ; n/a ; Heh -jg ; n/a ; Heh_Goal -jg ; n/a ; Heth -jg ; n/a ; Kaf -jg ; n/a ; Kaph -jg ; n/a ; Khaph -jg ; n/a ; Knotted_Heh -jg ; n/a ; Lam -jg ; n/a ; Lamadh -jg ; n/a ; Meem -jg ; n/a ; Mim -jg ; n/a ; No_Joining_Group -jg ; n/a ; Noon -jg ; n/a ; Nun -jg ; n/a ; Pe -jg ; n/a ; Qaf -jg ; n/a ; Qaph -jg ; n/a ; Reh -jg ; n/a ; Reversed_Pe -jg ; n/a ; Sad -jg ; n/a ; Sadhe -jg ; n/a ; Seen -jg ; n/a ; Semkath -jg ; n/a ; Shin -jg ; n/a ; Swash_Kaf -jg ; n/a ; Syriac_Waw -jg ; n/a ; Tah -jg ; n/a ; Taw -jg ; n/a ; Teh_Marbuta -jg ; n/a ; Teth -jg ; n/a ; Waw -jg ; n/a ; Yeh -jg ; n/a ; Yeh_Barree -jg ; n/a ; Yeh_With_Tail -jg ; n/a ; Yudh -jg ; n/a ; Yudh_He -jg ; n/a ; Zain -jg ; n/a ; Zhain - -# Joining_Type (jt) - -jt ; C ; Join_Causing -jt ; D ; Dual_Joining -jt ; L ; Left_Joining -jt ; R ; Right_Joining -jt ; T ; Transparent -jt ; U ; Non_Joining - -# Line_Break (lb) - -lb ; AI ; Ambiguous -lb ; AL ; Alphabetic -lb ; B2 ; Break_Both -lb ; BA ; Break_After -lb ; BB ; Break_Before -lb ; BK ; Mandatory_Break -lb ; CB ; Contingent_Break -lb ; CL ; Close_Punctuation -lb ; CM ; Combining_Mark -lb ; CR ; Carriage_Return -lb ; EX ; Exclamation -lb ; GL ; Glue -lb ; H2 ; H2 -lb ; H3 ; H3 -lb ; HY ; Hyphen -lb ; ID ; Ideographic -lb ; IN ; Inseparable ; Inseperable -lb ; IS ; Infix_Numeric -lb ; JL ; JL -lb ; JT ; JT -lb ; JV ; JV -lb ; LF ; Line_Feed -lb ; NL ; Next_Line -lb ; NS ; Nonstarter -lb ; NU ; Numeric -lb ; OP ; Open_Punctuation -lb ; PO ; Postfix_Numeric -lb ; PR ; Prefix_Numeric -lb ; QU ; Quotation -lb ; SA ; Complex_Context -lb ; SG ; Surrogate -lb ; SP ; Space -lb ; SY ; Break_Symbols -lb ; WJ ; Word_Joiner -lb ; XX ; Unknown -lb ; ZW ; ZWSpace - -# NFC_Quick_Check (NFC_QC) - -NFC_QC; M ; Maybe -NFC_QC; N ; No -NFC_QC; Y ; Yes - -# NFD_Quick_Check (NFD_QC) - -NFD_QC; N ; No -NFD_QC; Y ; Yes - -# NFKC_Quick_Check (NFKC_QC) - -NFKC_QC; M ; Maybe -NFKC_QC; N ; No -NFKC_QC; Y ; Yes - -# NFKD_Quick_Check (NFKD_QC) - -NFKD_QC; N ; No -NFKD_QC; Y ; Yes - -# Numeric_Type (nt) - -nt ; De ; Decimal -nt ; Di ; Digit -nt ; None ; None -nt ; Nu ; Numeric - -# Script (sc) - -sc ; Arab ; Arabic -sc ; Armn ; Armenian -sc ; Beng ; Bengali -sc ; Bopo ; Bopomofo -sc ; Brai ; Braille -sc ; Bugi ; Buginese -sc ; Buhd ; Buhid -sc ; Cans ; Canadian_Aboriginal -sc ; Cher ; Cherokee -sc ; Copt ; Coptic ; Qaac -sc ; Cprt ; Cypriot -sc ; Cyrl ; Cyrillic -sc ; Deva ; Devanagari -sc ; Dsrt ; Deseret -sc ; Ethi ; Ethiopic -sc ; Geor ; Georgian -sc ; Glag ; Glagolitic -sc ; Goth ; Gothic -sc ; Grek ; Greek -sc ; Gujr ; Gujarati -sc ; Guru ; Gurmukhi -sc ; Hang ; Hangul -sc ; Hani ; Han -sc ; Hano ; Hanunoo -sc ; Hebr ; Hebrew -sc ; Hira ; Hiragana -sc ; Hrkt ; Katakana_Or_Hiragana -sc ; Ital ; Old_Italic -sc ; Kana ; Katakana -sc ; Khar ; Kharoshthi -sc ; Khmr ; Khmer -sc ; Knda ; Kannada -sc ; Laoo ; Lao -sc ; Latn ; Latin -sc ; Limb ; Limbu -sc ; Linb ; Linear_B -sc ; Mlym ; Malayalam -sc ; Mong ; Mongolian -sc ; Mymr ; Myanmar -sc ; Ogam ; Ogham -sc ; Orya ; Oriya -sc ; Osma ; Osmanya -sc ; Qaai ; Inherited -sc ; Runr ; Runic -sc ; Shaw ; Shavian -sc ; Sinh ; Sinhala -sc ; Sylo ; Syloti_Nagri -sc ; Syrc ; Syriac -sc ; Tagb ; Tagbanwa -sc ; Tale ; Tai_Le -sc ; Talu ; New_Tai_Lue -sc ; Taml ; Tamil -sc ; Telu ; Telugu -sc ; Tfng ; Tifinagh -sc ; Tglg ; Tagalog -sc ; Thaa ; Thaana -sc ; Thai ; Thai -sc ; Tibt ; Tibetan -sc ; Ugar ; Ugaritic -sc ; Xpeo ; Old_Persian -sc ; Yiii ; Yi -sc ; Zyyy ; Common - -# Sentence_Break (SB) - -SB ; AT ; ATerm -SB ; CL ; Close -SB ; FO ; Format -SB ; LE ; OLetter -SB ; LO ; Lower -SB ; NU ; Numeric -SB ; SE ; Sep -SB ; SP ; Sp -SB ; ST ; STerm -SB ; UP ; Upper -SB ; XX ; Other - -# Word_Break (WB) - -WB ; EX ; ExtendNumLet -WB ; FO ; Format -WB ; KA ; Katakana -WB ; LE ; ALetter -WB ; ML ; MidLetter -WB ; MN ; MidNum -WB ; NU ; Numeric -WB ; XX ; Other diff --git a/Master/tlpkg/tlperl.old/lib/unicore/Properties b/Master/tlpkg/tlperl.old/lib/unicore/Properties deleted file mode 100644 index 274db8f58f4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/Properties +++ /dev/null @@ -1,350 +0,0 @@ -##
-## This file created by mktables
-## List of built-in \p{...}/\P{...} properties.
-##
-## '*' means name may be 'fuzzy'
-##
-
- \p{ASCII} [[:ASCII:]]
- \p{Alnum} [[:Alnum:]]
-* \p{Alphabetic} [\p{L}\p{OtherAlphabetic}]
- \p{Alpha} [[:Alpha:]]
- \p{Any} Alias for \p{Any} ([\x{0000}-\x{10FFFF}])
- \p{Any} [\x{0000}-\x{10FFFF}]
-* \p{Arabic} Script 'Arabic'
-* \p{Armenian} Script 'Armenian'
-* \p{AsciiHexDigit} Extended property 'ASCII_Hex_Digit'
- \p{Assigned} All assigned code points
-* \p{Bengali} Script 'Bengali'
-* \p{BidiControl} Extended property 'Bidi_Control'
- \p{Blank} [[:Blank:]]
-* \p{Bopomofo} Script 'Bopomofo'
-* \p{Braille} Script 'Braille'
-* \p{Buginese} Script 'Buginese'
-* \p{Buhid} Script 'Buhid'
-* \p{CanadianAboriginal} Script 'Canadian_Aboriginal'
-* \p{Cc} Alias for \p{Cc} (General Category 'Cc')
- \p{Cc} General Category 'Cc'
-* \p{Cf} Alias for \p{Cf} (General Category 'Cf')
- \p{Cf} General Category 'Cf'
-* \p{Cherokee} Script 'Cherokee'
- \p{Cntrl} [[:Cntrl:]]
-* \p{Cn} Alias for \p{Cn} (General Category 'Cn' [not functional in Perl])
- \p{Cn} General Category 'Cn' [not functional in Perl]
-* \p{Common} Script 'Common'
-* \p{Coptic} Script 'Coptic'
-* \p{Co} Alias for \p{Co} (General Category 'Co')
- \p{Co} General Category 'Co'
-* \p{Cs} Alias for \p{Cs} (General Category 'Cs')
- \p{Cs} General Category 'Cs'
-* \p{Cypriot} Script 'Cypriot'
-* \p{Cyrillic} Script 'Cyrillic'
-* \p{C} Alias for \p{C} (Major Category 'C')
- \p{C} Major Category 'C'
-* \p{Dash} Extended property 'Dash'
-* \p{Deprecated} Extended property 'Deprecated'
-* \p{Deseret} Script 'Deseret'
-* \p{Devanagari} Script 'Devanagari'
-* \p{Diacritic} Extended property 'Diacritic'
- \p{Digit} [[:Digit:]]
-* \p{Ethiopic} Script 'Ethiopic'
-* \p{Extender} Extended property 'Extender'
-* \p{Georgian} Script 'Georgian'
-* \p{Glagolitic} Script 'Glagolitic'
-* \p{Gothic} Script 'Gothic'
-* \p{GraphemeLink} Extended property 'Grapheme_Link'
- \p{Graph} [[:Graph:]]
-* \p{Greek} Script 'Greek'
-* \p{Gujarati} Script 'Gujarati'
-* \p{Gurmukhi} Script 'Gurmukhi'
-* \p{Hangul} Script 'Hangul'
-* \p{Hanunoo} Script 'Hanunoo'
-* \p{Han} Script 'Han'
-* \p{Hebrew} Script 'Hebrew'
-* \p{HexDigit} Extended property 'Hex_Digit'
-* \p{Hiragana} Script 'Hiragana'
-* \p{Hyphen} Extended property 'Hyphen'
-* \p{IdContinue} [\p{ID_Start}\p{Mn}\p{Mc}\p{Nd}\p{Pc}]
-* \p{IdStart} [\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{Nl}]
-* \p{Ideographic} Extended property 'Ideographic'
-* \p{IdsBinaryOperator} Extended property 'IDS_Binary_Operator'
-* \p{IdsTrinaryOperator} Extended property 'IDS_Trinary_Operator'
-* \p{InAegeanNumbers} Block 'Aegean Numbers'
-* \p{InAlphabeticPresentationForms} Block 'Alphabetic Presentation Forms'
-* \p{InAncientGreekMusicalNotation} Block 'Ancient Greek Musical Notation'
-* \p{InAncientGreekNumbers} Block 'Ancient Greek Numbers'
-* \p{InArabicPresentationFormsA} Block 'Arabic Presentation Forms-A'
-* \p{InArabicPresentationFormsB} Block 'Arabic Presentation Forms-B'
-* \p{InArabicSupplement} Block 'Arabic Supplement'
-* \p{InArabic} Block 'Arabic'
-* \p{InArmenian} Block 'Armenian'
-* \p{InArrows} Block 'Arrows'
-* \p{InBasicLatin} Block 'Basic Latin'
-* \p{InBengali} Block 'Bengali'
-* \p{InBlockElements} Block 'Block Elements'
-* \p{InBopomofoExtended} Block 'Bopomofo Extended'
-* \p{InBopomofo} Block 'Bopomofo'
-* \p{InBoxDrawing} Block 'Box Drawing'
-* \p{InBraillePatterns} Block 'Braille Patterns'
-* \p{InBuginese} Block 'Buginese'
-* \p{InBuhid} Block 'Buhid'
-* \p{InByzantineMusicalSymbols} Block 'Byzantine Musical Symbols'
-* \p{InCherokee} Block 'Cherokee'
-* \p{InCjkCompatibilityForms} Block 'CJK Compatibility Forms'
-* \p{InCjkCompatibilityIdeographsSupplement} Block 'CJK Compatibility Ideographs Supplement'
-* \p{InCjkCompatibilityIdeographs} Block 'CJK Compatibility Ideographs'
-* \p{InCjkCompatibility} Block 'CJK Compatibility'
-* \p{InCjkRadicalsSupplement} Block 'CJK Radicals Supplement'
-* \p{InCjkStrokes} Block 'CJK Strokes'
-* \p{InCjkSymbolsAndPunctuation} Block 'CJK Symbols and Punctuation'
-* \p{InCjkUnifiedIdeographsExtensionA} Block 'CJK Unified Ideographs Extension A'
-* \p{InCjkUnifiedIdeographsExtensionB} Block 'CJK Unified Ideographs Extension B'
-* \p{InCjkUnifiedIdeographs} Block 'CJK Unified Ideographs'
-* \p{InCombiningDiacriticalMarksForSymbols} Block 'Combining Diacritical Marks for Symbols'
-* \p{InCombiningDiacriticalMarksSupplement} Block 'Combining Diacritical Marks Supplement'
-* \p{InCombiningDiacriticalMarks} Block 'Combining Diacritical Marks'
-* \p{InCombiningHalfMarks} Block 'Combining Half Marks'
-* \p{InControlPictures} Block 'Control Pictures'
-* \p{InCoptic} Block 'Coptic'
-* \p{InCurrencySymbols} Block 'Currency Symbols'
-* \p{InCypriotSyllabary} Block 'Cypriot Syllabary'
-* \p{InCyrillicSupplement} Block 'Cyrillic Supplement'
-* \p{InCyrillic} Block 'Cyrillic'
-* \p{InDeseret} Block 'Deseret'
-* \p{InDevanagari} Block 'Devanagari'
-* \p{InDingbats} Block 'Dingbats'
-* \p{InEnclosedAlphanumerics} Block 'Enclosed Alphanumerics'
-* \p{InEnclosedCjkLettersAndMonths} Block 'Enclosed CJK Letters and Months'
-* \p{InEthiopicExtended} Block 'Ethiopic Extended'
-* \p{InEthiopicSupplement} Block 'Ethiopic Supplement'
-* \p{InEthiopic} Block 'Ethiopic'
-* \p{InGeneralPunctuation} Block 'General Punctuation'
-* \p{InGeometricShapes} Block 'Geometric Shapes'
-* \p{InGeorgianSupplement} Block 'Georgian Supplement'
-* \p{InGeorgian} Block 'Georgian'
-* \p{InGlagolitic} Block 'Glagolitic'
-* \p{InGothic} Block 'Gothic'
-* \p{InGreekAndCoptic} Block 'Greek and Coptic'
-* \p{InGreekExtended} Block 'Greek Extended'
-* \p{InGujarati} Block 'Gujarati'
-* \p{InGurmukhi} Block 'Gurmukhi'
-* \p{InHalfwidthAndFullwidthForms} Block 'Halfwidth and Fullwidth Forms'
-* \p{InHangulCompatibilityJamo} Block 'Hangul Compatibility Jamo'
-* \p{InHangulJamo} Block 'Hangul Jamo'
-* \p{InHangulSyllables} Block 'Hangul Syllables'
-* \p{InHanunoo} Block 'Hanunoo'
-* \p{InHebrew} Block 'Hebrew'
-* \p{InHighPrivateUseSurrogates} Block 'High Private Use Surrogates'
-* \p{InHighSurrogates} Block 'High Surrogates'
-* \p{InHiragana} Block 'Hiragana'
-* \p{InIdeographicDescriptionCharacters} Block 'Ideographic Description Characters'
-* \p{InIpaExtensions} Block 'IPA Extensions'
-* \p{InKanbun} Block 'Kanbun'
-* \p{InKangxiRadicals} Block 'Kangxi Radicals'
-* \p{InKannada} Block 'Kannada'
-* \p{InKatakanaPhoneticExtensions} Block 'Katakana Phonetic Extensions'
-* \p{InKatakana} Block 'Katakana'
-* \p{InKharoshthi} Block 'Kharoshthi'
-* \p{InKhmerSymbols} Block 'Khmer Symbols'
-* \p{InKhmer} Block 'Khmer'
-* \p{InLao} Block 'Lao'
-* \p{InLatin1Supplement} Block 'Latin-1 Supplement'
-* \p{InLatinExtendedAdditional} Block 'Latin Extended Additional'
-* \p{InLatinExtendedA} Block 'Latin Extended-A'
-* \p{InLatinExtendedB} Block 'Latin Extended-B'
-* \p{InLetterlikeSymbols} Block 'Letterlike Symbols'
-* \p{InLimbu} Block 'Limbu'
-* \p{InLinearBIdeograms} Block 'Linear B Ideograms'
-* \p{InLinearBSyllabary} Block 'Linear B Syllabary'
-* \p{InLowSurrogates} Block 'Low Surrogates'
-* \p{InMalayalam} Block 'Malayalam'
-* \p{InMathematicalAlphanumericSymbols} Block 'Mathematical Alphanumeric Symbols'
-* \p{InMathematicalOperators} Block 'Mathematical Operators'
-* \p{InMiscellaneousMathematicalSymbolsA} Block 'Miscellaneous Mathematical Symbols-A'
-* \p{InMiscellaneousMathematicalSymbolsB} Block 'Miscellaneous Mathematical Symbols-B'
-* \p{InMiscellaneousSymbolsAndArrows} Block 'Miscellaneous Symbols and Arrows'
-* \p{InMiscellaneousSymbols} Block 'Miscellaneous Symbols'
-* \p{InMiscellaneousTechnical} Block 'Miscellaneous Technical'
-* \p{InModifierToneLetters} Block 'Modifier Tone Letters'
-* \p{InMongolian} Block 'Mongolian'
-* \p{InMusicalSymbols} Block 'Musical Symbols'
-* \p{InMyanmar} Block 'Myanmar'
-* \p{InNewTaiLue} Block 'New Tai Lue'
-* \p{InNumberForms} Block 'Number Forms'
-* \p{InOgham} Block 'Ogham'
-* \p{InOldItalic} Block 'Old Italic'
-* \p{InOldPersian} Block 'Old Persian'
-* \p{InOpticalCharacterRecognition} Block 'Optical Character Recognition'
-* \p{InOriya} Block 'Oriya'
-* \p{InOsmanya} Block 'Osmanya'
-* \p{InPhoneticExtensionsSupplement} Block 'Phonetic Extensions Supplement'
-* \p{InPhoneticExtensions} Block 'Phonetic Extensions'
-* \p{InPrivateUseArea} Block 'Private Use Area'
-* \p{InRunic} Block 'Runic'
-* \p{InShavian} Block 'Shavian'
-* \p{InSinhala} Block 'Sinhala'
-* \p{InSmallFormVariants} Block 'Small Form Variants'
-* \p{InSpacingModifierLetters} Block 'Spacing Modifier Letters'
-* \p{InSpecials} Block 'Specials'
-* \p{InSuperscriptsAndSubscripts} Block 'Superscripts and Subscripts'
-* \p{InSupplementalArrowsA} Block 'Supplemental Arrows-A'
-* \p{InSupplementalArrowsB} Block 'Supplemental Arrows-B'
-* \p{InSupplementalMathematicalOperators} Block 'Supplemental Mathematical Operators'
-* \p{InSupplementalPunctuation} Block 'Supplemental Punctuation'
-* \p{InSupplementaryPrivateUseAreaA} Block 'Supplementary Private Use Area-A'
-* \p{InSupplementaryPrivateUseAreaB} Block 'Supplementary Private Use Area-B'
-* \p{InSylotiNagri} Block 'Syloti Nagri'
-* \p{InSyriac} Block 'Syriac'
-* \p{InTagalog} Block 'Tagalog'
-* \p{InTagbanwa} Block 'Tagbanwa'
-* \p{InTags} Block 'Tags'
-* \p{InTaiLe} Block 'Tai Le'
-* \p{InTaiXuanJingSymbols} Block 'Tai Xuan Jing Symbols'
-* \p{InTamil} Block 'Tamil'
-* \p{InTelugu} Block 'Telugu'
-* \p{InThaana} Block 'Thaana'
-* \p{InThai} Block 'Thai'
-* \p{InTibetan} Block 'Tibetan'
-* \p{InTifinagh} Block 'Tifinagh'
-* \p{InUgaritic} Block 'Ugaritic'
-* \p{InUnifiedCanadianAboriginalSyllabics} Block 'Unified Canadian Aboriginal Syllabics'
-* \p{InVariationSelectorsSupplement} Block 'Variation Selectors Supplement'
-* \p{InVariationSelectors} Block 'Variation Selectors'
-* \p{InVerticalForms} Block 'Vertical Forms'
-* \p{InYiRadicals} Block 'Yi Radicals'
-* \p{InYiSyllables} Block 'Yi Syllables'
-* \p{InYijingHexagramSymbols} Block 'Yijing Hexagram Symbols'
-* \p{Inherited} Script 'Inherited'
-* \p{JoinControl} Extended property 'Join_Control'
-* \p{Kannada} Script 'Kannada'
-* \p{Katakana} Script 'Katakana'
-* \p{Kharoshthi} Script 'Kharoshthi'
-* \p{Khmer} Script 'Khmer'
-* \p{LC} Alias for \p{LC} ([\p{Ll}\p{Lu}\p{Lt}])
- \p{LC} [\p{Ll}\p{Lu}\p{Lt}]
-* \p{Lao} Script 'Lao'
-* \p{Latin} Script 'Latin'
-* \p{Limbu} Script 'Limbu'
-* \p{LinearB} Script 'Linear_B'
-* \p{Ll} Alias for \p{Ll} (General Category 'Ll')
- \p{Ll} General Category 'Ll'
-* \p{Lm} Alias for \p{Lm} (General Category 'Lm')
- \p{Lm} General Category 'Lm'
-* \p{LogicalOrderException} Extended property 'Logical_Order_Exception'
-* \p{Lowercase} [\p{Ll}\p{OtherLowercase}]
- \p{Lower} [[:Lower:]]
-* \p{Lo} Alias for \p{Lo} (General Category 'Lo')
- \p{Lo} General Category 'Lo'
-* \p{Lt} Alias for \p{Lt} (General Category 'Lt')
- \p{Lt} General Category 'Lt'
-* \p{Lu} Alias for \p{Lu} (General Category 'Lu')
- \p{Lu} General Category 'Lu'
-* \p{L} Alias for \p{L} (Major Category 'L')
- \p{L} Major Category 'L'
-* \p{Malayalam} Script 'Malayalam'
-* \p{Math} [\p{Sm}\p{OtherMath}]
-* \p{Mc} Alias for \p{Mc} (General Category 'Mc')
- \p{Mc} General Category 'Mc'
-* \p{Me} Alias for \p{Me} (General Category 'Me')
- \p{Me} General Category 'Me'
-* \p{Mn} Alias for \p{Mn} (General Category 'Mn')
- \p{Mn} General Category 'Mn'
-* \p{Mongolian} Script 'Mongolian'
-* \p{Myanmar} Script 'Myanmar'
-* \p{M} Alias for \p{M} (Major Category 'M')
- \p{M} Major Category 'M'
-* \p{Nd} Alias for \p{Nd} (General Category 'Nd')
- \p{Nd} General Category 'Nd'
-* \p{NewTaiLue} Script 'New_Tai_Lue'
-* \p{Nl} Alias for \p{Nl} (General Category 'Nl')
- \p{Nl} General Category 'Nl'
-* \p{NoncharacterCodePoint} Extended property 'Noncharacter_Code_Point'
-* \p{No} Alias for \p{No} (General Category 'No')
- \p{No} General Category 'No'
-* \p{N} Alias for \p{N} (Major Category 'N')
- \p{N} Major Category 'N'
-* \p{Ogham} Script 'Ogham'
-* \p{OldItalic} Script 'Old_Italic'
-* \p{OldPersian} Script 'Old_Persian'
-* \p{Oriya} Script 'Oriya'
-* \p{Osmanya} Script 'Osmanya'
-* \p{OtherAlphabetic} Extended property 'Other_Alphabetic'
-* \p{OtherDefaultIgnorableCodePoint} Extended property 'Other_Default_Ignorable_Code_Point'
-* \p{OtherGraphemeExtend} Extended property 'Other_Grapheme_Extend'
-* \p{OtherIdContinue} Extended property 'Other_ID_Continue'
-* \p{OtherIdStart} Extended property 'Other_ID_Start'
-* \p{OtherLowercase} Extended property 'Other_Lowercase'
-* \p{OtherMath} Extended property 'Other_Math'
-* \p{OtherUppercase} Extended property 'Other_Uppercase'
-* \p{PatternSyntax} Extended property 'Pattern_Syntax'
-* \p{PatternWhiteSpace} Extended property 'Pattern_White_Space'
-* \p{Pc} Alias for \p{Pc} (General Category 'Pc')
- \p{Pc} General Category 'Pc'
-* \p{Pd} Alias for \p{Pd} (General Category 'Pd')
- \p{Pd} General Category 'Pd'
-* \p{Pe} Alias for \p{Pe} (General Category 'Pe')
- \p{Pe} General Category 'Pe'
-* \p{Pf} Alias for \p{Pf} (General Category 'Pf')
- \p{Pf} General Category 'Pf'
-* \p{Pi} Alias for \p{Pi} (General Category 'Pi')
- \p{Pi} General Category 'Pi'
-* \p{Po} Alias for \p{Po} (General Category 'Po')
- \p{Po} General Category 'Po'
- \p{Print} [[:Print:]]
-* \p{Ps} Alias for \p{Ps} (General Category 'Ps')
- \p{Ps} General Category 'Ps'
- \p{Punct} [[:Punct:]]
-* \p{P} Alias for \p{P} (Major Category 'P')
- \p{P} Major Category 'P'
-* \p{QuotationMark} Extended property 'Quotation_Mark'
-* \p{Radical} Extended property 'Radical'
-* \p{Runic} Script 'Runic'
-* \p{Sc} Alias for \p{Sc} (General Category 'Sc')
- \p{Sc} General Category 'Sc'
-* \p{Shavian} Script 'Shavian'
-* \p{Sinhala} Script 'Sinhala'
-* \p{Sk} Alias for \p{Sk} (General Category 'Sk')
- \p{Sk} General Category 'Sk'
-* \p{Sm} Alias for \p{Sm} (General Category 'Sm')
- \p{Sm} General Category 'Sm'
-* \p{SoftDotted} Extended property 'Soft_Dotted'
-* \p{So} Alias for \p{So} (General Category 'So')
- \p{So} General Category 'So'
- \p{SpacePerl} \s
- \p{Space} [[:Space:]]
-* \p{Sterm} Extended property 'STerm'
-* \p{SylotiNagri} Script 'Syloti_Nagri'
-* \p{Syriac} Script 'Syriac'
-* \p{S} Alias for \p{S} (Major Category 'S')
- \p{S} Major Category 'S'
-* \p{Tagalog} Script 'Tagalog'
-* \p{Tagbanwa} Script 'Tagbanwa'
-* \p{TaiLe} Script 'Tai_Le'
-* \p{Tamil} Script 'Tamil'
-* \p{Telugu} Script 'Telugu'
-* \p{TerminalPunctuation} Extended property 'Terminal_Punctuation'
-* \p{Thaana} Script 'Thaana'
-* \p{Thai} Script 'Thai'
-* \p{Tibetan} Script 'Tibetan'
-* \p{Tifinagh} Script 'Tifinagh'
- \p{Title} [[:Title:]]
-* \p{Ugaritic} Script 'Ugaritic'
-* \p{UnifiedIdeograph} Extended property 'Unified_Ideograph'
-* \p{Uppercase} [\p{Lu}\p{Other_Uppercase}]
- \p{Upper} [[:Upper:]]
-* \p{VariationSelector} Extended property 'Variation_Selector'
-* \p{WhiteSpace} Extended property 'White_Space'
- \p{Word} [[:Word:]]
- \p{XDigit} [[:XDigit:]]
-* \p{Yi} Script 'Yi'
-* \p{Zl} Alias for \p{Zl} (General Category 'Zl')
- \p{Zl} General Category 'Zl'
-* \p{Zp} Alias for \p{Zp} (General Category 'Zp')
- \p{Zp} General Category 'Zp'
-* \p{Zs} Alias for \p{Zs} (General Category 'Zs')
- \p{Zs} General Category 'Zs'
-* \p{Z} Alias for \p{Z} (Major Category 'Z')
- \p{Z} Major Category 'Z'
- \p{_CanonDCIJ} (for internal casefolding use)
- \p{_CaseIgnorable} (for internal casefolding use)
- \p{_CombAbove} (for internal casefolding use)
diff --git a/Master/tlpkg/tlperl.old/lib/unicore/PropertyAliases.txt b/Master/tlpkg/tlperl.old/lib/unicore/PropertyAliases.txt deleted file mode 100644 index 39b14e5e6f3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/PropertyAliases.txt +++ /dev/null @@ -1,163 +0,0 @@ -# PropertyAliases-4.1.0.txt -# Date: 2005-02-26, 11:13:41 GMT [MD] -# -# Unicode Character Database -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# For documentation, see UCD.html -# This file contains aliases for properties used in the UCD. -# These names can be used for XML formats of UCD data, for regular-expression -# property tests, and other programmatic textual descriptions of Unicode data. -# For information on which properties are normative, see UCD.html. -# -# The names may be translated in appropriate environments, and additional -# aliases may be useful. -# -# FORMAT -# -# Each line has two or more fields, separated by semicolons. -# -# First Field: The first field is an abbreviated name for the property. -# -# Second Field: The second field is a long name -# -# The above are the preferred aliases. Other aliases may be listed in additional fields. -# -# Loose matching should be applied to all property names and property values, with -# the exception of String Property values. With loose matching of property names and -# values, the case distinctions, whitespace, and '_' are ignored. For Numeric Property -# values, numeric equivalencies are applied: thus "01.00" is equivalent to "1". -# -# NOTE: Property value names are NOT unique across properties. For example: -# -# AL means Arabic Letter for the Bidi_Class property, and -# AL means Alpha_Left for the Combining_Class property, and -# AL means Alphabetic for the Line_Break property. -# -# In addition, some property names may be the same as some property value names. -# For example: -# -# sc means the Script property, and -# Sc means the General_Category property value Currency_Symbol (Sc) -# -# The combination of property value and property name is, however, unique. -# -# For more information, see UTS #18: Regular Expression Guidelines -# ================================================ - - -# ================================================ -# Numeric Properties -# ================================================ -nv ; Numeric_Value - -# ================================================ -# String Properties -# ================================================ -bmg ; Bidi_Mirroring_Glyph -cf ; Case_Folding -dm ; Decomposition_Mapping -FC_NFKC ; FC_NFKC_Closure -lc ; Lowercase_Mapping -scc ; Special_Case_Condition -sfc ; Simple_Case_Folding -slc ; Simple_Lowercase_Mapping -stc ; Simple_Titlecase_Mapping -suc ; Simple_Uppercase_Mapping -tc ; Titlecase_Mapping -uc ; Uppercase_Mapping - -# ================================================ -# Miscellaneous Properties -# ================================================ -isc ; ISO_Comment -na ; Name -na1 ; Unicode_1_Name -URS ; Unicode_Radical_Stroke - -# ================================================ -# Catalog Properties -# ================================================ -age ; Age -blk ; Block -sc ; Script - -# ================================================ -# Enumerated Properties -# ================================================ -bc ; Bidi_Class -ccc ; Canonical_Combining_Class -dt ; Decomposition_Type -ea ; East_Asian_Width -gc ; General_Category -GCB ; Grapheme_Cluster_Break -hst ; Hangul_Syllable_Type -jg ; Joining_Group -jt ; Joining_Type -lb ; Line_Break -NFC_QC ; NFC_Quick_Check -NFD_QC ; NFD_Quick_Check -NFKC_QC ; NFKC_Quick_Check -NFKD_QC ; NFKD_Quick_Check -nt ; Numeric_Type -SB ; Sentence_Break -WB ; Word_Break - -# ================================================ -# Binary Properties -# ================================================ -AHex ; ASCII_Hex_Digit -Alpha ; Alphabetic -Bidi_C ; Bidi_Control -Bidi_M ; Bidi_Mirrored -CE ; Composition_Exclusion -Comp_Ex ; Full_Composition_Exclusion -Dash ; Dash -Dep ; Deprecated -DI ; Default_Ignorable_Code_Point -Dia ; Diacritic -Ext ; Extender -Gr_Base ; Grapheme_Base -Gr_Ext ; Grapheme_Extend -Gr_Link ; Grapheme_Link -Hex ; Hex_Digit -Hyphen ; Hyphen -IDC ; ID_Continue -Ideo ; Ideographic -IDS ; ID_Start -IDSB ; IDS_Binary_Operator -IDST ; IDS_Trinary_Operator -Join_C ; Join_Control -LOE ; Logical_Order_Exception -Lower ; Lowercase -Math ; Math -NChar ; Noncharacter_Code_Point -OAlpha ; Other_Alphabetic -ODI ; Other_Default_Ignorable_Code_Point -OGr_Ext ; Other_Grapheme_Extend -OIDC ; Other_ID_Continue -OIDS ; Other_ID_Start -OLower ; Other_Lowercase -OMath ; Other_Math -OUpper ; Other_Uppercase -Pat_Syn ; Pattern_Syntax -Pat_WS ; Pattern_White_Space -QMark ; Quotation_Mark -Radical ; Radical -SD ; Soft_Dotted -STerm ; STerm -Term ; Terminal_Punctuation -UIdeo ; Unified_Ideograph -Upper ; Uppercase -VS ; Variation_Selector -WSpace ; White_Space ; space -XIDC ; XID_Continue -XIDS ; XID_Start -XO_NFC ; Expands_On_NFC -XO_NFD ; Expands_On_NFD -XO_NFKC ; Expands_On_NFKC -XO_NFKD ; Expands_On_NFKD - -# ================================================ -# Total: 88 - diff --git a/Master/tlpkg/tlperl.old/lib/unicore/ReadMe.txt b/Master/tlpkg/tlperl.old/lib/unicore/ReadMe.txt deleted file mode 100644 index 0ad5623c830..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/ReadMe.txt +++ /dev/null @@ -1,24 +0,0 @@ -2005 March 30 - -Welcome to the Unicode Character Database - -This directory contains contributory data files -for the Unicode Character Database of the Unicode Standard. - -Copyright (c) 1991-2005 Unicode, Inc. -For terms of use, see http://www.unicode.org/terms_of_use.html - -For an overview of how to access a specific version of -the Unicode Character Database (UCD) and other information, see: - -http://www.unicode.org/ucd/ - -If you accessed this file via the URL: - -http://www.unicode.org/Public/UNIDATA/ReadMe.txt - -then you are looking at the most current version of the UCD. -Otherwise the version number of the UCD is part of the path name. - -The file UCD.html in this directory, as well as any file -headers, where present, also identify the version of the UCD. diff --git a/Master/tlpkg/tlperl.old/lib/unicore/Scripts.txt b/Master/tlpkg/tlperl.old/lib/unicore/Scripts.txt deleted file mode 100644 index 8e2bae372ad..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/Scripts.txt +++ /dev/null @@ -1,1464 +0,0 @@ -# Scripts-4.1.0.txt -# Date: 2005-03-10, 01:56:19 GMT [MD] -# -# Unicode Character Database -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# For documentation, see UCD.html - -# ================================================ - -# Property: Script - -# All code points not explicitly listed for Script -# have the value Common (Zyyy). - -# ================================================ - -0000..001F ; Common # Cc [32] <control-0000>..<control-001F> -0020 ; Common # Zs SPACE -0021..0023 ; Common # Po [3] EXCLAMATION MARK..NUMBER SIGN -0024 ; Common # Sc DOLLAR SIGN -0025..0027 ; Common # Po [3] PERCENT SIGN..APOSTROPHE -0028 ; Common # Ps LEFT PARENTHESIS -0029 ; Common # Pe RIGHT PARENTHESIS -002A ; Common # Po ASTERISK -002B ; Common # Sm PLUS SIGN -002C ; Common # Po COMMA -002D ; Common # Pd HYPHEN-MINUS -002E..002F ; Common # Po [2] FULL STOP..SOLIDUS -0030..0039 ; Common # Nd [10] DIGIT ZERO..DIGIT NINE -003A..003B ; Common # Po [2] COLON..SEMICOLON -003C..003E ; Common # Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN -003F..0040 ; Common # Po [2] QUESTION MARK..COMMERCIAL AT -005B ; Common # Ps LEFT SQUARE BRACKET -005C ; Common # Po REVERSE SOLIDUS -005D ; Common # Pe RIGHT SQUARE BRACKET -005E ; Common # Sk CIRCUMFLEX ACCENT -005F ; Common # Pc LOW LINE -0060 ; Common # Sk GRAVE ACCENT -007B ; Common # Ps LEFT CURLY BRACKET -007C ; Common # Sm VERTICAL LINE -007D ; Common # Pe RIGHT CURLY BRACKET -007E ; Common # Sm TILDE -007F..009F ; Common # Cc [33] <control-007F>..<control-009F> -00A0 ; Common # Zs NO-BREAK SPACE -00A1 ; Common # Po INVERTED EXCLAMATION MARK -00A2..00A5 ; Common # Sc [4] CENT SIGN..YEN SIGN -00A6..00A7 ; Common # So [2] BROKEN BAR..SECTION SIGN -00A8 ; Common # Sk DIAERESIS -00A9 ; Common # So COPYRIGHT SIGN -00AB ; Common # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -00AC ; Common # Sm NOT SIGN -00AD ; Common # Cf SOFT HYPHEN -00AE ; Common # So REGISTERED SIGN -00AF ; Common # Sk MACRON -00B0 ; Common # So DEGREE SIGN -00B1 ; Common # Sm PLUS-MINUS SIGN -00B2..00B3 ; Common # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE -00B4 ; Common # Sk ACUTE ACCENT -00B5 ; Common # L& MICRO SIGN -00B6 ; Common # So PILCROW SIGN -00B7 ; Common # Po MIDDLE DOT -00B8 ; Common # Sk CEDILLA -00B9 ; Common # No SUPERSCRIPT ONE -00BB ; Common # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -00BC..00BE ; Common # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS -00BF ; Common # Po INVERTED QUESTION MARK -00D7 ; Common # Sm MULTIPLICATION SIGN -00F7 ; Common # Sm DIVISION SIGN -02B9..02C1 ; Common # Lm [9] MODIFIER LETTER PRIME..MODIFIER LETTER REVERSED GLOTTAL STOP -02C2..02C5 ; Common # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD -02C6..02D1 ; Common # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON -02D2..02DF ; Common # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT -02E5..02ED ; Common # Sk [9] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER UNASPIRATED -02EE ; Common # Lm MODIFIER LETTER DOUBLE APOSTROPHE -02EF..02FF ; Common # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW -037E ; Common # Po GREEK QUESTION MARK -0387 ; Common # Po GREEK ANO TELEIA -0589 ; Common # Po ARMENIAN FULL STOP -0600..0603 ; Common # Cf [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA -060C ; Common # Po ARABIC COMMA -061B ; Common # Po ARABIC SEMICOLON -061F ; Common # Po ARABIC QUESTION MARK -0640 ; Common # Lm ARABIC TATWEEL -0660..0669 ; Common # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE -06DD ; Common # Cf ARABIC END OF AYAH -0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA -0970 ; Common # Po DEVANAGARI ABBREVIATION SIGN -0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT -10FB ; Common # Po GEORGIAN PARAGRAPH SEPARATOR -16EB..16ED ; Common # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION -1735..1736 ; Common # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION -2000..200A ; Common # Zs [11] EN QUAD..HAIR SPACE -200B ; Common # Cf ZERO WIDTH SPACE -200E..200F ; Common # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK -2010..2015 ; Common # Pd [6] HYPHEN..HORIZONTAL BAR -2016..2017 ; Common # Po [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE -2018 ; Common # Pi LEFT SINGLE QUOTATION MARK -2019 ; Common # Pf RIGHT SINGLE QUOTATION MARK -201A ; Common # Ps SINGLE LOW-9 QUOTATION MARK -201B..201C ; Common # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK -201D ; Common # Pf RIGHT DOUBLE QUOTATION MARK -201E ; Common # Ps DOUBLE LOW-9 QUOTATION MARK -201F ; Common # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK -2020..2027 ; Common # Po [8] DAGGER..HYPHENATION POINT -2028 ; Common # Zl LINE SEPARATOR -2029 ; Common # Zp PARAGRAPH SEPARATOR -202A..202E ; Common # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE -202F ; Common # Zs NARROW NO-BREAK SPACE -2030..2038 ; Common # Po [9] PER MILLE SIGN..CARET -2039 ; Common # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK -203A ; Common # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -203B..203E ; Common # Po [4] REFERENCE MARK..OVERLINE -203F..2040 ; Common # Pc [2] UNDERTIE..CHARACTER TIE -2041..2043 ; Common # Po [3] CARET INSERTION POINT..HYPHEN BULLET -2044 ; Common # Sm FRACTION SLASH -2045 ; Common # Ps LEFT SQUARE BRACKET WITH QUILL -2046 ; Common # Pe RIGHT SQUARE BRACKET WITH QUILL -2047..2051 ; Common # Po [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY -2052 ; Common # Sm COMMERCIAL MINUS SIGN -2053 ; Common # Po SWUNG DASH -2054 ; Common # Pc INVERTED UNDERTIE -2055..205E ; Common # Po [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS -205F ; Common # Zs MEDIUM MATHEMATICAL SPACE -2060..2063 ; Common # Cf [4] WORD JOINER..INVISIBLE SEPARATOR -206A..206F ; Common # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES -2070 ; Common # No SUPERSCRIPT ZERO -2074..2079 ; Common # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE -207A..207C ; Common # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN -207D ; Common # Ps SUPERSCRIPT LEFT PARENTHESIS -207E ; Common # Pe SUPERSCRIPT RIGHT PARENTHESIS -2080..2089 ; Common # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE -208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN -208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS -208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS -20A0..20B5 ; Common # Sc [22] EURO-CURRENCY SIGN..CEDI SIGN -2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT -2102 ; Common # L& DOUBLE-STRUCK CAPITAL C -2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA -2107 ; Common # L& EULER CONSTANT -2108..2109 ; Common # So [2] SCRUPLE..DEGREE FAHRENHEIT -210A..2113 ; Common # L& [10] SCRIPT SMALL G..SCRIPT SMALL L -2114 ; Common # So L B BAR SYMBOL -2115 ; Common # L& DOUBLE-STRUCK CAPITAL N -2116..2118 ; Common # So [3] NUMERO SIGN..SCRIPT CAPITAL P -2119..211D ; Common # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R -211E..2123 ; Common # So [6] PRESCRIPTION TAKE..VERSICLE -2124 ; Common # L& DOUBLE-STRUCK CAPITAL Z -2125 ; Common # So OUNCE SIGN -2127 ; Common # So INVERTED OHM SIGN -2128 ; Common # L& BLACK-LETTER CAPITAL Z -2129 ; Common # So TURNED GREEK SMALL LETTER IOTA -212C..212D ; Common # L& [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C -212E ; Common # So ESTIMATED SYMBOL -212F..2131 ; Common # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F -2132 ; Common # So TURNED CAPITAL F -2133..2134 ; Common # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O -2135..2138 ; Common # Lo [4] ALEF SYMBOL..DALET SYMBOL -2139 ; Common # L& INFORMATION SOURCE -213A..213B ; Common # So [2] ROTATED CAPITAL Q..FACSIMILE SIGN -213C..213F ; Common # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI -2140..2144 ; Common # Sm [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y -2145..2149 ; Common # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J -214A ; Common # So PROPERTY LINE -214B ; Common # Sm TURNED AMPERSAND -214C ; Common # So PER SIGN -2153..215F ; Common # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE -2160..2183 ; Common # Nl [36] ROMAN NUMERAL ONE..ROMAN NUMERAL REVERSED ONE HUNDRED -2190..2194 ; Common # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW -2195..2199 ; Common # So [5] UP DOWN ARROW..SOUTH WEST ARROW -219A..219B ; Common # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE -219C..219F ; Common # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW -21A0 ; Common # Sm RIGHTWARDS TWO HEADED ARROW -21A1..21A2 ; Common # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL -21A3 ; Common # Sm RIGHTWARDS ARROW WITH TAIL -21A4..21A5 ; Common # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR -21A6 ; Common # Sm RIGHTWARDS ARROW FROM BAR -21A7..21AD ; Common # So [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW -21AE ; Common # Sm LEFT RIGHT ARROW WITH STROKE -21AF..21CD ; Common # So [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE -21CE..21CF ; Common # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE -21D0..21D1 ; Common # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW -21D2 ; Common # Sm RIGHTWARDS DOUBLE ARROW -21D3 ; Common # So DOWNWARDS DOUBLE ARROW -21D4 ; Common # Sm LEFT RIGHT DOUBLE ARROW -21D5..21F3 ; Common # So [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW -21F4..22FF ; Common # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP -2300..2307 ; Common # So [8] DIAMETER SIGN..WAVY LINE -2308..230B ; Common # Sm [4] LEFT CEILING..RIGHT FLOOR -230C..231F ; Common # So [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER -2320..2321 ; Common # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL -2322..2328 ; Common # So [7] FROWN..KEYBOARD -2329 ; Common # Ps LEFT-POINTING ANGLE BRACKET -232A ; Common # Pe RIGHT-POINTING ANGLE BRACKET -232B..237B ; Common # So [81] ERASE TO THE LEFT..NOT CHECK MARK -237C ; Common # Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW -237D..239A ; Common # So [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL -239B..23B3 ; Common # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM -23B4 ; Common # Ps TOP SQUARE BRACKET -23B5 ; Common # Pe BOTTOM SQUARE BRACKET -23B6 ; Common # Po BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET -23B7..23DB ; Common # So [37] RADICAL SYMBOL BOTTOM..FUSE -2400..2426 ; Common # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO -2440..244A ; Common # So [11] OCR HOOK..OCR DOUBLE BACKSLASH -2460..249B ; Common # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP -249C..24E9 ; Common # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z -24EA..24FF ; Common # No [22] CIRCLED DIGIT ZERO..NEGATIVE CIRCLED DIGIT ZERO -2500..25B6 ; Common # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE -25B7 ; Common # Sm WHITE RIGHT-POINTING TRIANGLE -25B8..25C0 ; Common # So [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE -25C1 ; Common # Sm WHITE LEFT-POINTING TRIANGLE -25C2..25F7 ; Common # So [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT -25F8..25FF ; Common # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE -2600..266E ; Common # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN -266F ; Common # Sm MUSIC SHARP SIGN -2670..269C ; Common # So [45] WEST SYRIAC CROSS..FLEUR-DE-LIS -26A0..26B1 ; Common # So [18] WARNING SIGN..FUNERAL URN -2701..2704 ; Common # So [4] UPPER BLADE SCISSORS..WHITE SCISSORS -2706..2709 ; Common # So [4] TELEPHONE LOCATION SIGN..ENVELOPE -270C..2727 ; Common # So [28] VICTORY HAND..WHITE FOUR POINTED STAR -2729..274B ; Common # So [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK -274D ; Common # So SHADOWED WHITE CIRCLE -274F..2752 ; Common # So [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE -2756 ; Common # So BLACK DIAMOND MINUS WHITE X -2758..275E ; Common # So [7] LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT -2761..2767 ; Common # So [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET -2768 ; Common # Ps MEDIUM LEFT PARENTHESIS ORNAMENT -2769 ; Common # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT -276A ; Common # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT -276B ; Common # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT -276C ; Common # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT -276D ; Common # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT -276E ; Common # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT -276F ; Common # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT -2770 ; Common # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT -2771 ; Common # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT -2772 ; Common # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT -2773 ; Common # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT -2774 ; Common # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT -2775 ; Common # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT -2776..2793 ; Common # No [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN -2794 ; Common # So HEAVY WIDE-HEADED RIGHTWARDS ARROW -2798..27AF ; Common # So [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW -27B1..27BE ; Common # So [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW -27C0..27C4 ; Common # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET -27C5 ; Common # Ps LEFT S-SHAPED BAG DELIMITER -27C6 ; Common # Pe RIGHT S-SHAPED BAG DELIMITER -27D0..27E5 ; Common # Sm [22] WHITE DIAMOND WITH CENTRED DOT..WHITE SQUARE WITH RIGHTWARDS TICK -27E6 ; Common # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET -27E7 ; Common # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET -27E8 ; Common # Ps MATHEMATICAL LEFT ANGLE BRACKET -27E9 ; Common # Pe MATHEMATICAL RIGHT ANGLE BRACKET -27EA ; Common # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET -27EB ; Common # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET -27F0..27FF ; Common # Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW -2900..2982 ; Common # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON -2983 ; Common # Ps LEFT WHITE CURLY BRACKET -2984 ; Common # Pe RIGHT WHITE CURLY BRACKET -2985 ; Common # Ps LEFT WHITE PARENTHESIS -2986 ; Common # Pe RIGHT WHITE PARENTHESIS -2987 ; Common # Ps Z NOTATION LEFT IMAGE BRACKET -2988 ; Common # Pe Z NOTATION RIGHT IMAGE BRACKET -2989 ; Common # Ps Z NOTATION LEFT BINDING BRACKET -298A ; Common # Pe Z NOTATION RIGHT BINDING BRACKET -298B ; Common # Ps LEFT SQUARE BRACKET WITH UNDERBAR -298C ; Common # Pe RIGHT SQUARE BRACKET WITH UNDERBAR -298D ; Common # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER -298E ; Common # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -298F ; Common # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER -2990 ; Common # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER -2991 ; Common # Ps LEFT ANGLE BRACKET WITH DOT -2992 ; Common # Pe RIGHT ANGLE BRACKET WITH DOT -2993 ; Common # Ps LEFT ARC LESS-THAN BRACKET -2994 ; Common # Pe RIGHT ARC GREATER-THAN BRACKET -2995 ; Common # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET -2996 ; Common # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET -2997 ; Common # Ps LEFT BLACK TORTOISE SHELL BRACKET -2998 ; Common # Pe RIGHT BLACK TORTOISE SHELL BRACKET -2999..29D7 ; Common # Sm [63] DOTTED FENCE..BLACK HOURGLASS -29D8 ; Common # Ps LEFT WIGGLY FENCE -29D9 ; Common # Pe RIGHT WIGGLY FENCE -29DA ; Common # Ps LEFT DOUBLE WIGGLY FENCE -29DB ; Common # Pe RIGHT DOUBLE WIGGLY FENCE -29DC..29FB ; Common # Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS -29FC ; Common # Ps LEFT-POINTING CURVED ANGLE BRACKET -29FD ; Common # Pe RIGHT-POINTING CURVED ANGLE BRACKET -29FE..2AFF ; Common # Sm [258] TINY..N-ARY WHITE VERTICAL BAR -2B00..2B13 ; Common # So [20] NORTH EAST WHITE ARROW..SQUARE WITH BOTTOM HALF BLACK -2E00..2E01 ; Common # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER -2E02 ; Common # Pi LEFT SUBSTITUTION BRACKET -2E03 ; Common # Pf RIGHT SUBSTITUTION BRACKET -2E04 ; Common # Pi LEFT DOTTED SUBSTITUTION BRACKET -2E05 ; Common # Pf RIGHT DOTTED SUBSTITUTION BRACKET -2E06..2E08 ; Common # Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER -2E09 ; Common # Pi LEFT TRANSPOSITION BRACKET -2E0A ; Common # Pf RIGHT TRANSPOSITION BRACKET -2E0B ; Common # Po RAISED SQUARE -2E0C ; Common # Pi LEFT RAISED OMISSION BRACKET -2E0D ; Common # Pf RIGHT RAISED OMISSION BRACKET -2E0E..2E16 ; Common # Po [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE -2E17 ; Common # Pd DOUBLE OBLIQUE HYPHEN -2E1C ; Common # Pi LEFT LOW PARAPHRASE BRACKET -2E1D ; Common # Pf RIGHT LOW PARAPHRASE BRACKET -2FF0..2FFB ; Common # So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID -3000 ; Common # Zs IDEOGRAPHIC SPACE -3001..3003 ; Common # Po [3] IDEOGRAPHIC COMMA..DITTO MARK -3004 ; Common # So JAPANESE INDUSTRIAL STANDARD SYMBOL -3006 ; Common # Lo IDEOGRAPHIC CLOSING MARK -3008 ; Common # Ps LEFT ANGLE BRACKET -3009 ; Common # Pe RIGHT ANGLE BRACKET -300A ; Common # Ps LEFT DOUBLE ANGLE BRACKET -300B ; Common # Pe RIGHT DOUBLE ANGLE BRACKET -300C ; Common # Ps LEFT CORNER BRACKET -300D ; Common # Pe RIGHT CORNER BRACKET -300E ; Common # Ps LEFT WHITE CORNER BRACKET -300F ; Common # Pe RIGHT WHITE CORNER BRACKET -3010 ; Common # Ps LEFT BLACK LENTICULAR BRACKET -3011 ; Common # Pe RIGHT BLACK LENTICULAR BRACKET -3012..3013 ; Common # So [2] POSTAL MARK..GETA MARK -3014 ; Common # Ps LEFT TORTOISE SHELL BRACKET -3015 ; Common # Pe RIGHT TORTOISE SHELL BRACKET -3016 ; Common # Ps LEFT WHITE LENTICULAR BRACKET -3017 ; Common # Pe RIGHT WHITE LENTICULAR BRACKET -3018 ; Common # Ps LEFT WHITE TORTOISE SHELL BRACKET -3019 ; Common # Pe RIGHT WHITE TORTOISE SHELL BRACKET -301A ; Common # Ps LEFT WHITE SQUARE BRACKET -301B ; Common # Pe RIGHT WHITE SQUARE BRACKET -301C ; Common # Pd WAVE DASH -301D ; Common # Ps REVERSED DOUBLE PRIME QUOTATION MARK -301E..301F ; Common # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK -3020 ; Common # So POSTAL MARK FACE -3030 ; Common # Pd WAVY DASH -3031..3035 ; Common # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF -3036..3037 ; Common # So [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL -303C ; Common # Lo MASU MARK -303D ; Common # Po PART ALTERNATION MARK -303E..303F ; Common # So [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE -309B..309C ; Common # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -30A0 ; Common # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN -30FB ; Common # Po KATAKANA MIDDLE DOT -30FC ; Common # Lm KATAKANA-HIRAGANA PROLONGED SOUND MARK -3190..3191 ; Common # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK -3192..3195 ; Common # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK -3196..319F ; Common # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK -31C0..31CF ; Common # So [16] CJK STROKE T..CJK STROKE N -3220..3229 ; Common # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN -322A..3243 ; Common # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH -3250 ; Common # So PARTNERSHIP SIGN -3251..325F ; Common # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE -327E..327F ; Common # So [2] CIRCLED HANGUL IEUNG U..KOREAN STANDARD SYMBOL -3280..3289 ; Common # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN -328A..32B0 ; Common # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT -32B1..32BF ; Common # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY -32C0..32FE ; Common # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO -3300..33FF ; Common # So [256] SQUARE APAATO..SQUARE GAL -4DC0..4DFF ; Common # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION -A700..A716 ; Common # Sk [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR -E000..F8FF ; Common # Co [6400] <private-use-E000>..<private-use-F8FF> -FD3E ; Common # Ps ORNATE LEFT PARENTHESIS -FD3F ; Common # Pe ORNATE RIGHT PARENTHESIS -FDFD ; Common # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM -FE10..FE16 ; Common # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK -FE17 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET -FE18 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET -FE19 ; Common # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS -FE30 ; Common # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER -FE31..FE32 ; Common # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH -FE33..FE34 ; Common # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE -FE35 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS -FE36 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS -FE37 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET -FE38 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET -FE39 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET -FE3A ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET -FE3B ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET -FE3C ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET -FE3D ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET -FE3E ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET -FE3F ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET -FE40 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET -FE41 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET -FE42 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET -FE43 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET -FE44 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET -FE45..FE46 ; Common # Po [2] SESAME DOT..WHITE SESAME DOT -FE47 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET -FE48 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET -FE49..FE4C ; Common # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE -FE4D..FE4F ; Common # Pc [3] DASHED LOW LINE..WAVY LOW LINE -FE50..FE52 ; Common # Po [3] SMALL COMMA..SMALL FULL STOP -FE54..FE57 ; Common # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK -FE58 ; Common # Pd SMALL EM DASH -FE59 ; Common # Ps SMALL LEFT PARENTHESIS -FE5A ; Common # Pe SMALL RIGHT PARENTHESIS -FE5B ; Common # Ps SMALL LEFT CURLY BRACKET -FE5C ; Common # Pe SMALL RIGHT CURLY BRACKET -FE5D ; Common # Ps SMALL LEFT TORTOISE SHELL BRACKET -FE5E ; Common # Pe SMALL RIGHT TORTOISE SHELL BRACKET -FE5F..FE61 ; Common # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK -FE62 ; Common # Sm SMALL PLUS SIGN -FE63 ; Common # Pd SMALL HYPHEN-MINUS -FE64..FE66 ; Common # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN -FE68 ; Common # Po SMALL REVERSE SOLIDUS -FE69 ; Common # Sc SMALL DOLLAR SIGN -FE6A..FE6B ; Common # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT -FEFF ; Common # Cf ZERO WIDTH NO-BREAK SPACE -FF01..FF03 ; Common # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN -FF04 ; Common # Sc FULLWIDTH DOLLAR SIGN -FF05..FF07 ; Common # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE -FF08 ; Common # Ps FULLWIDTH LEFT PARENTHESIS -FF09 ; Common # Pe FULLWIDTH RIGHT PARENTHESIS -FF0A ; Common # Po FULLWIDTH ASTERISK -FF0B ; Common # Sm FULLWIDTH PLUS SIGN -FF0C ; Common # Po FULLWIDTH COMMA -FF0D ; Common # Pd FULLWIDTH HYPHEN-MINUS -FF0E..FF0F ; Common # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS -FF10..FF19 ; Common # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE -FF1A..FF1B ; Common # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON -FF1C..FF1E ; Common # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN -FF1F..FF20 ; Common # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT -FF3B ; Common # Ps FULLWIDTH LEFT SQUARE BRACKET -FF3C ; Common # Po FULLWIDTH REVERSE SOLIDUS -FF3D ; Common # Pe FULLWIDTH RIGHT SQUARE BRACKET -FF3E ; Common # Sk FULLWIDTH CIRCUMFLEX ACCENT -FF3F ; Common # Pc FULLWIDTH LOW LINE -FF40 ; Common # Sk FULLWIDTH GRAVE ACCENT -FF5B ; Common # Ps FULLWIDTH LEFT CURLY BRACKET -FF5C ; Common # Sm FULLWIDTH VERTICAL LINE -FF5D ; Common # Pe FULLWIDTH RIGHT CURLY BRACKET -FF5E ; Common # Sm FULLWIDTH TILDE -FF5F ; Common # Ps FULLWIDTH LEFT WHITE PARENTHESIS -FF60 ; Common # Pe FULLWIDTH RIGHT WHITE PARENTHESIS -FF61 ; Common # Po HALFWIDTH IDEOGRAPHIC FULL STOP -FF62 ; Common # Ps HALFWIDTH LEFT CORNER BRACKET -FF63 ; Common # Pe HALFWIDTH RIGHT CORNER BRACKET -FF64..FF65 ; Common # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT -FF70 ; Common # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK -FF9E..FF9F ; Common # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK -FFE0..FFE1 ; Common # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN -FFE2 ; Common # Sm FULLWIDTH NOT SIGN -FFE3 ; Common # Sk FULLWIDTH MACRON -FFE4 ; Common # So FULLWIDTH BROKEN BAR -FFE5..FFE6 ; Common # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN -FFE8 ; Common # So HALFWIDTH FORMS LIGHT VERTICAL -FFE9..FFEC ; Common # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW -FFED..FFEE ; Common # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE -FFF9..FFFB ; Common # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR -FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER -10100..10101 ; Common # Po [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT -10102 ; Common # So AEGEAN CHECK MARK -10107..10133 ; Common # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND -10137..1013F ; Common # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT -1D000..1D0F5 ; Common # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO -1D100..1D126 ; Common # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2 -1D12A..1D164 ; Common # So [59] MUSICAL SYMBOL DOUBLE SHARP..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE -1D165..1D166 ; Common # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM -1D16A..1D16C ; Common # So [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3 -1D16D..1D172 ; Common # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 -1D173..1D17A ; Common # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE -1D183..1D184 ; Common # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN -1D18C..1D1A9 ; Common # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH -1D1AE..1D1DD ; Common # So [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS -1D300..1D356 ; Common # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING -1D400..1D454 ; Common # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G -1D456..1D49C ; Common # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A -1D49E..1D49F ; Common # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D -1D4A2 ; Common # L& MATHEMATICAL SCRIPT CAPITAL G -1D4A5..1D4A6 ; Common # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K -1D4A9..1D4AC ; Common # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q -1D4AE..1D4B9 ; Common # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D -1D4BB ; Common # L& MATHEMATICAL SCRIPT SMALL F -1D4BD..1D4C3 ; Common # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N -1D4C5..1D505 ; Common # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B -1D507..1D50A ; Common # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G -1D50D..1D514 ; Common # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q -1D516..1D51C ; Common # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y -1D51E..1D539 ; Common # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B -1D53B..1D53E ; Common # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G -1D540..1D544 ; Common # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M -1D546 ; Common # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O -1D54A..1D550 ; Common # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y -1D552..1D6A5 ; Common # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J -1D6A8..1D6C0 ; Common # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA -1D6C1 ; Common # Sm MATHEMATICAL BOLD NABLA -1D6C2..1D6DA ; Common # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA -1D6DB ; Common # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL -1D6DC..1D6FA ; Common # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA -1D6FB ; Common # Sm MATHEMATICAL ITALIC NABLA -1D6FC..1D714 ; Common # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA -1D715 ; Common # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL -1D716..1D734 ; Common # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA -1D735 ; Common # Sm MATHEMATICAL BOLD ITALIC NABLA -1D736..1D74E ; Common # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA -1D74F ; Common # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL -1D750..1D76E ; Common # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA -1D76F ; Common # Sm MATHEMATICAL SANS-SERIF BOLD NABLA -1D770..1D788 ; Common # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA -1D789 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL -1D78A..1D7A8 ; Common # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA -1D7A9 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA -1D7AA..1D7C2 ; Common # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA -1D7C3 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL -1D7C4..1D7C9 ; Common # L& [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL -1D7CE..1D7FF ; Common # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE -E0001 ; Common # Cf LANGUAGE TAG -E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG -F0000..FFFFD ; Common # Co [65534] <private-use-F0000>..<private-use-FFFFD> -100000..10FFFD; Common # Co [65534] <private-use-100000>..<private-use-10FFFD> - -# The above property value applies to 878924 code points not listed here. -# Total code points: 1021355 - -# ================================================ - -0041..005A ; Latin # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z -0061..007A ; Latin # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z -00AA ; Latin # L& FEMININE ORDINAL INDICATOR -00BA ; Latin # L& MASCULINE ORDINAL INDICATOR -00C0..00D6 ; Latin # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS -00D8..00F6 ; Latin # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS -00F8..01BA ; Latin # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL -01BB ; Latin # Lo LATIN LETTER TWO WITH STROKE -01BC..01BF ; Latin # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN -01C0..01C3 ; Latin # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK -01C4..0241 ; Latin # L& [126] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER GLOTTAL STOP -0250..02AF ; Latin # L& [96] LATIN SMALL LETTER TURNED A..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL -02B0..02B8 ; Latin # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y -02E0..02E4 ; Latin # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP -1D00..1D25 ; Latin # L& [38] LATIN LETTER SMALL CAPITAL A..LATIN LETTER AIN -1D2C..1D5C ; Latin # Lm [49] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL AIN -1D62..1D65 ; Latin # L& [4] LATIN SUBSCRIPT SMALL LETTER I..LATIN SUBSCRIPT SMALL LETTER V -1D6B..1D77 ; Latin # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G -1D79..1D9A ; Latin # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK -1D9B..1DBF ; Latin # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA -1E00..1E9B ; Latin # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE -1EA0..1EF9 ; Latin # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE -2071 ; Latin # L& SUPERSCRIPT LATIN SMALL LETTER I -207F ; Latin # L& SUPERSCRIPT LATIN SMALL LETTER N -2090..2094 ; Latin # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA -212A..212B ; Latin # L& [2] KELVIN SIGN..ANGSTROM SIGN -FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST -FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z -FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z - -# Total code points: 1037 - -# ================================================ - -0374..0375 ; Greek # Sk [2] GREEK NUMERAL SIGN..GREEK LOWER NUMERAL SIGN -037A ; Greek # Lm GREEK YPOGEGRAMMENI -0384..0385 ; Greek # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS -0386 ; Greek # L& GREEK CAPITAL LETTER ALPHA WITH TONOS -0388..038A ; Greek # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS -038C ; Greek # L& GREEK CAPITAL LETTER OMICRON WITH TONOS -038E..03A1 ; Greek # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO -03A3..03CE ; Greek # L& [44] GREEK CAPITAL LETTER SIGMA..GREEK SMALL LETTER OMEGA WITH TONOS -03D0..03E1 ; Greek # L& [18] GREEK BETA SYMBOL..GREEK SMALL LETTER SAMPI -03F0..03F5 ; Greek # L& [6] GREEK KAPPA SYMBOL..GREEK LUNATE EPSILON SYMBOL -03F6 ; Greek # Sm GREEK REVERSED LUNATE EPSILON SYMBOL -03F7..03FF ; Greek # L& [9] GREEK CAPITAL LETTER SHO..GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL -1D26..1D2A ; Greek # L& [5] GREEK LETTER SMALL CAPITAL GAMMA..GREEK LETTER SMALL CAPITAL PSI -1D5D..1D61 ; Greek # Lm [5] MODIFIER LETTER SMALL BETA..MODIFIER LETTER SMALL CHI -1D66..1D6A ; Greek # L& [5] GREEK SUBSCRIPT SMALL LETTER BETA..GREEK SUBSCRIPT SMALL LETTER CHI -1F00..1F15 ; Greek # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA -1F18..1F1D ; Greek # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA -1F20..1F45 ; Greek # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA -1F48..1F4D ; Greek # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA -1F50..1F57 ; Greek # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI -1F59 ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA -1F5B ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA -1F5D ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA -1F5F..1F7D ; Greek # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA -1F80..1FB4 ; Greek # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -1FB6..1FBC ; Greek # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -1FBD ; Greek # Sk GREEK KORONIS -1FBE ; Greek # L& GREEK PROSGEGRAMMENI -1FBF..1FC1 ; Greek # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI -1FC2..1FC4 ; Greek # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -1FC6..1FCC ; Greek # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -1FCD..1FCF ; Greek # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI -1FD0..1FD3 ; Greek # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -1FD6..1FDB ; Greek # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA -1FDD..1FDF ; Greek # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI -1FE0..1FEC ; Greek # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA -1FED..1FEF ; Greek # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA -1FF2..1FF4 ; Greek # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI -1FF6..1FFC ; Greek # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -1FFD..1FFE ; Greek # Sk [2] GREEK OXIA..GREEK DASIA -2126 ; Greek # L& OHM SIGN -10140..10174 ; Greek # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS -10175..10178 ; Greek # No [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN -10179..10189 ; Greek # So [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN -1018A ; Greek # No GREEK ZERO SIGN -1D200..1D241 ; Greek # So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 -1D242..1D244 ; Greek # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME -1D245 ; Greek # So GREEK MUSICAL LEIMMA - -# Total code points: 502 - -# ================================================ - -0400..0481 ; Cyrillic # L& [130] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER KOPPA -0482 ; Cyrillic # So CYRILLIC THOUSANDS SIGN -0483..0486 ; Cyrillic # Mn [4] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PSILI PNEUMATA -0488..0489 ; Cyrillic # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN -048A..04CE ; Cyrillic # L& [69] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EM WITH TAIL -04D0..04F9 ; Cyrillic # L& [42] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER YERU WITH DIAERESIS -0500..050F ; Cyrillic # L& [16] CYRILLIC CAPITAL LETTER KOMI DE..CYRILLIC SMALL LETTER KOMI TJE -1D2B ; Cyrillic # L& CYRILLIC LETTER SMALL CAPITAL EL -1D78 ; Cyrillic # Lm MODIFIER LETTER CYRILLIC EN - -# Total code points: 266 - -# ================================================ - -0531..0556 ; Armenian # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH -0559 ; Armenian # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING -055A..055F ; Armenian # Po [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK -0561..0587 ; Armenian # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN -058A ; Armenian # Pd ARMENIAN HYPHEN -FB13..FB17 ; Armenian # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH - -# Total code points: 90 - -# ================================================ - -0591..05B9 ; Hebrew # Mn [41] HEBREW ACCENT ETNAHTA..HEBREW POINT HOLAM -05BB..05BD ; Hebrew # Mn [3] HEBREW POINT QUBUTS..HEBREW POINT METEG -05BE ; Hebrew # Po HEBREW PUNCTUATION MAQAF -05BF ; Hebrew # Mn HEBREW POINT RAFE -05C0 ; Hebrew # Po HEBREW PUNCTUATION PASEQ -05C1..05C2 ; Hebrew # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT -05C3 ; Hebrew # Po HEBREW PUNCTUATION SOF PASUQ -05C4..05C5 ; Hebrew # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT -05C6 ; Hebrew # Po HEBREW PUNCTUATION NUN HAFUKHA -05C7 ; Hebrew # Mn HEBREW POINT QAMATS QATAN -05D0..05EA ; Hebrew # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV -05F0..05F2 ; Hebrew # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD -05F3..05F4 ; Hebrew # Po [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM -FB1D ; Hebrew # Lo HEBREW LETTER YOD WITH HIRIQ -FB1E ; Hebrew # Mn HEBREW POINT JUDEO-SPANISH VARIKA -FB1F..FB28 ; Hebrew # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV -FB29 ; Hebrew # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN -FB2A..FB36 ; Hebrew # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH -FB38..FB3C ; Hebrew # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH -FB3E ; Hebrew # Lo HEBREW LETTER MEM WITH DAGESH -FB40..FB41 ; Hebrew # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH -FB43..FB44 ; Hebrew # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH -FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED - -# Total code points: 132 - -# ================================================ - -060B ; Arabic # Sc AFGHANI SIGN -060D ; Arabic # Po ARABIC DATE SEPARATOR -060E..060F ; Arabic # So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA -0610..0615 ; Arabic # Mn [6] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL HIGH TAH -061E ; Arabic # Po ARABIC TRIPLE DOT PUNCTUATION MARK -0621..063A ; Arabic # Lo [26] ARABIC LETTER HAMZA..ARABIC LETTER GHAIN -0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH -0656..065E ; Arabic # Mn [9] ARABIC SUBSCRIPT ALEF..ARABIC FATHA WITH TWO DOTS -066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR -066E..066F ; Arabic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF -0671..06D3 ; Arabic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -06D4 ; Arabic # Po ARABIC FULL STOP -06D5 ; Arabic # Lo ARABIC LETTER AE -06D6..06DC ; Arabic # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN -06DE ; Arabic # Me ARABIC START OF RUB EL HIZB -06DF..06E4 ; Arabic # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA -06E5..06E6 ; Arabic # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH -06E7..06E8 ; Arabic # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON -06E9 ; Arabic # So ARABIC PLACE OF SAJDAH -06EA..06ED ; Arabic # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM -06EE..06EF ; Arabic # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V -06F0..06F9 ; Arabic # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE -06FA..06FC ; Arabic # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW -06FD..06FE ; Arabic # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN -06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V -0750..076D ; Arabic # Lo [30] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE -FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM -FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM -FD50..FD8F ; Arabic # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM -FD92..FDC7 ; Arabic # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM -FDF0..FDFB ; Arabic # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU -FDFC ; Arabic # Sc RIAL SIGN -FE70..FE74 ; Arabic # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM -FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM - -# Total code points: 966 - -# ================================================ - -0700..070D ; Syriac # Po [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS -070F ; Syriac # Cf SYRIAC ABBREVIATION MARK -0710 ; Syriac # Lo SYRIAC LETTER ALAPH -0711 ; Syriac # Mn SYRIAC LETTER SUPERSCRIPT ALAPH -0712..072F ; Syriac # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH -0730..074A ; Syriac # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH -074D..074F ; Syriac # Lo [3] SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE - -# Total code points: 77 - -# ================================================ - -0780..07A5 ; Thaana # Lo [38] THAANA LETTER HAA..THAANA LETTER WAAVU -07A6..07B0 ; Thaana # Mn [11] THAANA ABAFILI..THAANA SUKUN -07B1 ; Thaana # Lo THAANA LETTER NAA - -# Total code points: 50 - -# ================================================ - -0901..0902 ; Devanagari # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA -0903 ; Devanagari # Mc DEVANAGARI SIGN VISARGA -0904..0939 ; Devanagari # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA -093C ; Devanagari # Mn DEVANAGARI SIGN NUKTA -093D ; Devanagari # Lo DEVANAGARI SIGN AVAGRAHA -093E..0940 ; Devanagari # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II -0941..0948 ; Devanagari # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI -0949..094C ; Devanagari # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU -094D ; Devanagari # Mn DEVANAGARI SIGN VIRAMA -0950 ; Devanagari # Lo DEVANAGARI OM -0951..0954 ; Devanagari # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT -0958..0961 ; Devanagari # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL -0962..0963 ; Devanagari # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL -0966..096F ; Devanagari # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE -097D ; Devanagari # Lo DEVANAGARI LETTER GLOTTAL STOP - -# Total code points: 103 - -# ================================================ - -0981 ; Bengali # Mn BENGALI SIGN CANDRABINDU -0982..0983 ; Bengali # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA -0985..098C ; Bengali # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L -098F..0990 ; Bengali # Lo [2] BENGALI LETTER E..BENGALI LETTER AI -0993..09A8 ; Bengali # Lo [22] BENGALI LETTER O..BENGALI LETTER NA -09AA..09B0 ; Bengali # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA -09B2 ; Bengali # Lo BENGALI LETTER LA -09B6..09B9 ; Bengali # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA -09BC ; Bengali # Mn BENGALI SIGN NUKTA -09BD ; Bengali # Lo BENGALI SIGN AVAGRAHA -09BE..09C0 ; Bengali # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II -09C1..09C4 ; Bengali # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR -09C7..09C8 ; Bengali # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI -09CB..09CC ; Bengali # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU -09CD ; Bengali # Mn BENGALI SIGN VIRAMA -09CE ; Bengali # Lo BENGALI LETTER KHANDA TA -09D7 ; Bengali # Mc BENGALI AU LENGTH MARK -09DC..09DD ; Bengali # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA -09DF..09E1 ; Bengali # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL -09E2..09E3 ; Bengali # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL -09E6..09EF ; Bengali # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE -09F0..09F1 ; Bengali # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL -09F2..09F3 ; Bengali # Sc [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN -09F4..09F9 ; Bengali # No [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN -09FA ; Bengali # So BENGALI ISSHAR - -# Total code points: 91 - -# ================================================ - -0A01..0A02 ; Gurmukhi # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI -0A03 ; Gurmukhi # Mc GURMUKHI SIGN VISARGA -0A05..0A0A ; Gurmukhi # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU -0A0F..0A10 ; Gurmukhi # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI -0A13..0A28 ; Gurmukhi # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA -0A2A..0A30 ; Gurmukhi # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA -0A32..0A33 ; Gurmukhi # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA -0A35..0A36 ; Gurmukhi # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA -0A38..0A39 ; Gurmukhi # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA -0A3C ; Gurmukhi # Mn GURMUKHI SIGN NUKTA -0A3E..0A40 ; Gurmukhi # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II -0A41..0A42 ; Gurmukhi # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU -0A47..0A48 ; Gurmukhi # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI -0A4B..0A4D ; Gurmukhi # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA -0A59..0A5C ; Gurmukhi # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA -0A5E ; Gurmukhi # Lo GURMUKHI LETTER FA -0A66..0A6F ; Gurmukhi # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE -0A70..0A71 ; Gurmukhi # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK -0A72..0A74 ; Gurmukhi # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR - -# Total code points: 77 - -# ================================================ - -0A81..0A82 ; Gujarati # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA -0A83 ; Gujarati # Mc GUJARATI SIGN VISARGA -0A85..0A8D ; Gujarati # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E -0A8F..0A91 ; Gujarati # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O -0A93..0AA8 ; Gujarati # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA -0AAA..0AB0 ; Gujarati # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA -0AB2..0AB3 ; Gujarati # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA -0AB5..0AB9 ; Gujarati # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA -0ABC ; Gujarati # Mn GUJARATI SIGN NUKTA -0ABD ; Gujarati # Lo GUJARATI SIGN AVAGRAHA -0ABE..0AC0 ; Gujarati # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II -0AC1..0AC5 ; Gujarati # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E -0AC7..0AC8 ; Gujarati # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI -0AC9 ; Gujarati # Mc GUJARATI VOWEL SIGN CANDRA O -0ACB..0ACC ; Gujarati # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU -0ACD ; Gujarati # Mn GUJARATI SIGN VIRAMA -0AD0 ; Gujarati # Lo GUJARATI OM -0AE0..0AE1 ; Gujarati # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL -0AE2..0AE3 ; Gujarati # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL -0AE6..0AEF ; Gujarati # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE -0AF1 ; Gujarati # Sc GUJARATI RUPEE SIGN - -# Total code points: 83 - -# ================================================ - -0B01 ; Oriya # Mn ORIYA SIGN CANDRABINDU -0B02..0B03 ; Oriya # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA -0B05..0B0C ; Oriya # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L -0B0F..0B10 ; Oriya # Lo [2] ORIYA LETTER E..ORIYA LETTER AI -0B13..0B28 ; Oriya # Lo [22] ORIYA LETTER O..ORIYA LETTER NA -0B2A..0B30 ; Oriya # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA -0B32..0B33 ; Oriya # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA -0B35..0B39 ; Oriya # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA -0B3C ; Oriya # Mn ORIYA SIGN NUKTA -0B3D ; Oriya # Lo ORIYA SIGN AVAGRAHA -0B3E ; Oriya # Mc ORIYA VOWEL SIGN AA -0B3F ; Oriya # Mn ORIYA VOWEL SIGN I -0B40 ; Oriya # Mc ORIYA VOWEL SIGN II -0B41..0B43 ; Oriya # Mn [3] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC R -0B47..0B48 ; Oriya # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI -0B4B..0B4C ; Oriya # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU -0B4D ; Oriya # Mn ORIYA SIGN VIRAMA -0B56 ; Oriya # Mn ORIYA AI LENGTH MARK -0B57 ; Oriya # Mc ORIYA AU LENGTH MARK -0B5C..0B5D ; Oriya # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA -0B5F..0B61 ; Oriya # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL -0B66..0B6F ; Oriya # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE -0B70 ; Oriya # So ORIYA ISSHAR -0B71 ; Oriya # Lo ORIYA LETTER WA - -# Total code points: 81 - -# ================================================ - -0B82 ; Tamil # Mn TAMIL SIGN ANUSVARA -0B83 ; Tamil # Lo TAMIL SIGN VISARGA -0B85..0B8A ; Tamil # Lo [6] TAMIL LETTER A..TAMIL LETTER UU -0B8E..0B90 ; Tamil # Lo [3] TAMIL LETTER E..TAMIL LETTER AI -0B92..0B95 ; Tamil # Lo [4] TAMIL LETTER O..TAMIL LETTER KA -0B99..0B9A ; Tamil # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA -0B9C ; Tamil # Lo TAMIL LETTER JA -0B9E..0B9F ; Tamil # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA -0BA3..0BA4 ; Tamil # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA -0BA8..0BAA ; Tamil # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA -0BAE..0BB9 ; Tamil # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA -0BBE..0BBF ; Tamil # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I -0BC0 ; Tamil # Mn TAMIL VOWEL SIGN II -0BC1..0BC2 ; Tamil # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU -0BC6..0BC8 ; Tamil # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI -0BCA..0BCC ; Tamil # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU -0BCD ; Tamil # Mn TAMIL SIGN VIRAMA -0BD7 ; Tamil # Mc TAMIL AU LENGTH MARK -0BE6..0BEF ; Tamil # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE -0BF0..0BF2 ; Tamil # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND -0BF3..0BF8 ; Tamil # So [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN -0BF9 ; Tamil # Sc TAMIL RUPEE SIGN -0BFA ; Tamil # So TAMIL NUMBER SIGN - -# Total code points: 71 - -# ================================================ - -0C01..0C03 ; Telugu # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA -0C05..0C0C ; Telugu # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L -0C0E..0C10 ; Telugu # Lo [3] TELUGU LETTER E..TELUGU LETTER AI -0C12..0C28 ; Telugu # Lo [23] TELUGU LETTER O..TELUGU LETTER NA -0C2A..0C33 ; Telugu # Lo [10] TELUGU LETTER PA..TELUGU LETTER LLA -0C35..0C39 ; Telugu # Lo [5] TELUGU LETTER VA..TELUGU LETTER HA -0C3E..0C40 ; Telugu # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II -0C41..0C44 ; Telugu # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR -0C46..0C48 ; Telugu # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI -0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA -0C55..0C56 ; Telugu # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK -0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL -0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE - -# Total code points: 80 - -# ================================================ - -0C82..0C83 ; Kannada # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA -0C85..0C8C ; Kannada # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L -0C8E..0C90 ; Kannada # Lo [3] KANNADA LETTER E..KANNADA LETTER AI -0C92..0CA8 ; Kannada # Lo [23] KANNADA LETTER O..KANNADA LETTER NA -0CAA..0CB3 ; Kannada # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA -0CB5..0CB9 ; Kannada # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA -0CBC ; Kannada # Mn KANNADA SIGN NUKTA -0CBD ; Kannada # Lo KANNADA SIGN AVAGRAHA -0CBE ; Kannada # Mc KANNADA VOWEL SIGN AA -0CBF ; Kannada # Mn KANNADA VOWEL SIGN I -0CC0..0CC4 ; Kannada # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR -0CC6 ; Kannada # Mn KANNADA VOWEL SIGN E -0CC7..0CC8 ; Kannada # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI -0CCA..0CCB ; Kannada # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO -0CCC..0CCD ; Kannada # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA -0CD5..0CD6 ; Kannada # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK -0CDE ; Kannada # Lo KANNADA LETTER FA -0CE0..0CE1 ; Kannada # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL -0CE6..0CEF ; Kannada # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE - -# Total code points: 82 - -# ================================================ - -0D02..0D03 ; Malayalam # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA -0D05..0D0C ; Malayalam # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L -0D0E..0D10 ; Malayalam # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI -0D12..0D28 ; Malayalam # Lo [23] MALAYALAM LETTER O..MALAYALAM LETTER NA -0D2A..0D39 ; Malayalam # Lo [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA -0D3E..0D40 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II -0D41..0D43 ; Malayalam # Mn [3] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC R -0D46..0D48 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI -0D4A..0D4C ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU -0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA -0D57 ; Malayalam # Mc MALAYALAM AU LENGTH MARK -0D60..0D61 ; Malayalam # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL -0D66..0D6F ; Malayalam # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE - -# Total code points: 78 - -# ================================================ - -0D82..0D83 ; Sinhala # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA -0D85..0D96 ; Sinhala # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA -0D9A..0DB1 ; Sinhala # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA -0DB3..0DBB ; Sinhala # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA -0DBD ; Sinhala # Lo SINHALA LETTER DANTAJA LAYANNA -0DC0..0DC6 ; Sinhala # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA -0DCA ; Sinhala # Mn SINHALA SIGN AL-LAKUNA -0DCF..0DD1 ; Sinhala # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA -0DD2..0DD4 ; Sinhala # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA -0DD6 ; Sinhala # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA -0DD8..0DDF ; Sinhala # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA -0DF2..0DF3 ; Sinhala # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA -0DF4 ; Sinhala # Po SINHALA PUNCTUATION KUNDDALIYA - -# Total code points: 80 - -# ================================================ - -0E01..0E30 ; Thai # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A -0E31 ; Thai # Mn THAI CHARACTER MAI HAN-AKAT -0E32..0E33 ; Thai # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM -0E34..0E3A ; Thai # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU -0E40..0E45 ; Thai # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO -0E46 ; Thai # Lm THAI CHARACTER MAIYAMOK -0E47..0E4E ; Thai # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN -0E4F ; Thai # Po THAI CHARACTER FONGMAN -0E50..0E59 ; Thai # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE -0E5A..0E5B ; Thai # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT - -# Total code points: 86 - -# ================================================ - -0E81..0E82 ; Lao # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG -0E84 ; Lao # Lo LAO LETTER KHO TAM -0E87..0E88 ; Lao # Lo [2] LAO LETTER NGO..LAO LETTER CO -0E8A ; Lao # Lo LAO LETTER SO TAM -0E8D ; Lao # Lo LAO LETTER NYO -0E94..0E97 ; Lao # Lo [4] LAO LETTER DO..LAO LETTER THO TAM -0E99..0E9F ; Lao # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG -0EA1..0EA3 ; Lao # Lo [3] LAO LETTER MO..LAO LETTER LO LING -0EA5 ; Lao # Lo LAO LETTER LO LOOT -0EA7 ; Lao # Lo LAO LETTER WO -0EAA..0EAB ; Lao # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG -0EAD..0EB0 ; Lao # Lo [4] LAO LETTER O..LAO VOWEL SIGN A -0EB1 ; Lao # Mn LAO VOWEL SIGN MAI KAN -0EB2..0EB3 ; Lao # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM -0EB4..0EB9 ; Lao # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU -0EBB..0EBC ; Lao # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO -0EBD ; Lao # Lo LAO SEMIVOWEL SIGN NYO -0EC0..0EC4 ; Lao # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI -0EC6 ; Lao # Lm LAO KO LA -0EC8..0ECD ; Lao # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA -0ED0..0ED9 ; Lao # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE -0EDC..0EDD ; Lao # Lo [2] LAO HO NO..LAO HO MO - -# Total code points: 65 - -# ================================================ - -0F00 ; Tibetan # Lo TIBETAN SYLLABLE OM -0F01..0F03 ; Tibetan # So [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA -0F04..0F12 ; Tibetan # Po [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD -0F13..0F17 ; Tibetan # So [5] TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS -0F18..0F19 ; Tibetan # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS -0F1A..0F1F ; Tibetan # So [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG -0F20..0F29 ; Tibetan # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE -0F2A..0F33 ; Tibetan # No [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO -0F34 ; Tibetan # So TIBETAN MARK BSDUS RTAGS -0F35 ; Tibetan # Mn TIBETAN MARK NGAS BZUNG NYI ZLA -0F36 ; Tibetan # So TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN -0F37 ; Tibetan # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS -0F38 ; Tibetan # So TIBETAN MARK CHE MGO -0F39 ; Tibetan # Mn TIBETAN MARK TSA -PHRU -0F3A ; Tibetan # Ps TIBETAN MARK GUG RTAGS GYON -0F3B ; Tibetan # Pe TIBETAN MARK GUG RTAGS GYAS -0F3C ; Tibetan # Ps TIBETAN MARK ANG KHANG GYON -0F3D ; Tibetan # Pe TIBETAN MARK ANG KHANG GYAS -0F3E..0F3F ; Tibetan # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES -0F40..0F47 ; Tibetan # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA -0F49..0F6A ; Tibetan # Lo [34] TIBETAN LETTER NYA..TIBETAN LETTER FIXED-FORM RA -0F71..0F7E ; Tibetan # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO -0F7F ; Tibetan # Mc TIBETAN SIGN RNAM BCAD -0F80..0F84 ; Tibetan # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA -0F85 ; Tibetan # Po TIBETAN MARK PALUTA -0F86..0F87 ; Tibetan # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS -0F88..0F8B ; Tibetan # Lo [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS -0F90..0F97 ; Tibetan # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA -0F99..0FBC ; Tibetan # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA -0FBE..0FC5 ; Tibetan # So [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE -0FC6 ; Tibetan # Mn TIBETAN SYMBOL PADMA GDAN -0FC7..0FCC ; Tibetan # So [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL -0FCF ; Tibetan # So TIBETAN SIGN RDEL NAG GSUM -0FD0..0FD1 ; Tibetan # Po [2] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK MNYAM YIG GI MGO RGYAN - -# Total code points: 195 - -# ================================================ - -1000..1021 ; Myanmar # Lo [34] MYANMAR LETTER KA..MYANMAR LETTER A -1023..1027 ; Myanmar # Lo [5] MYANMAR LETTER I..MYANMAR LETTER E -1029..102A ; Myanmar # Lo [2] MYANMAR LETTER O..MYANMAR LETTER AU -102C ; Myanmar # Mc MYANMAR VOWEL SIGN AA -102D..1030 ; Myanmar # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU -1031 ; Myanmar # Mc MYANMAR VOWEL SIGN E -1032 ; Myanmar # Mn MYANMAR VOWEL SIGN AI -1036..1037 ; Myanmar # Mn [2] MYANMAR SIGN ANUSVARA..MYANMAR SIGN DOT BELOW -1038 ; Myanmar # Mc MYANMAR SIGN VISARGA -1039 ; Myanmar # Mn MYANMAR SIGN VIRAMA -1040..1049 ; Myanmar # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE -104A..104F ; Myanmar # Po [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE -1050..1055 ; Myanmar # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL -1056..1057 ; Myanmar # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR -1058..1059 ; Myanmar # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL - -# Total code points: 78 - -# ================================================ - -10A0..10C5 ; Georgian # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE -10D0..10FA ; Georgian # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN -10FC ; Georgian # Lm MODIFIER LETTER GEORGIAN NAR -2D00..2D25 ; Georgian # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE - -# Total code points: 120 - -# ================================================ - -1100..1159 ; Hangul # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH -115F..11A2 ; Hangul # Lo [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA -11A8..11F9 ; Hangul # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH -3131..318E ; Hangul # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE -3200..321E ; Hangul # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU -3260..327D ; Hangul # So [30] CIRCLED HANGUL KIYEOK..CIRCLED KOREAN CHARACTER JUEUI -AC00..D7A3 ; Hangul # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH -FFA0..FFBE ; Hangul # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH -FFC2..FFC7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E -FFCA..FFCF ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE -FFD2..FFD7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU -FFDA..FFDC ; Hangul # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I - -# Total code points: 11619 - -# ================================================ - -1200..1248 ; Ethiopic # Lo [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA -124A..124D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE -1250..1256 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO -1258 ; Ethiopic # Lo ETHIOPIC SYLLABLE QHWA -125A..125D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE -1260..1288 ; Ethiopic # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA -128A..128D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE -1290..12B0 ; Ethiopic # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA -12B2..12B5 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE -12B8..12BE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO -12C0 ; Ethiopic # Lo ETHIOPIC SYLLABLE KXWA -12C2..12C5 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE -12C8..12D6 ; Ethiopic # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O -12D8..1310 ; Ethiopic # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA -1312..1315 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE -1318..135A ; Ethiopic # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA -135F ; Ethiopic # Mn ETHIOPIC COMBINING GEMINATION MARK -1360 ; Ethiopic # So ETHIOPIC SECTION MARK -1361..1368 ; Ethiopic # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR -1369..137C ; Ethiopic # No [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND -1380..138F ; Ethiopic # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE -1390..1399 ; Ethiopic # So [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT -2D80..2D96 ; Ethiopic # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE -2DA0..2DA6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO -2DA8..2DAE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO -2DB0..2DB6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO -2DB8..2DBE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO -2DC0..2DC6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO -2DC8..2DCE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO -2DD0..2DD6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO -2DD8..2DDE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO - -# Total code points: 461 - -# ================================================ - -13A0..13F4 ; Cherokee # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV - -# Total code points: 85 - -# ================================================ - -1401..166C ; Canadian_Aboriginal # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA -166D..166E ; Canadian_Aboriginal # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP -166F..1676 ; Canadian_Aboriginal # Lo [8] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA - -# Total code points: 630 - -# ================================================ - -1680 ; Ogham # Zs OGHAM SPACE MARK -1681..169A ; Ogham # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH -169B ; Ogham # Ps OGHAM FEATHER MARK -169C ; Ogham # Pe OGHAM REVERSED FEATHER MARK - -# Total code points: 29 - -# ================================================ - -16A0..16EA ; Runic # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X -16EE..16F0 ; Runic # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL - -# Total code points: 78 - -# ================================================ - -1780..17B3 ; Khmer # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU -17B4..17B5 ; Khmer # Cf [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA -17B6 ; Khmer # Mc KHMER VOWEL SIGN AA -17B7..17BD ; Khmer # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA -17BE..17C5 ; Khmer # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU -17C6 ; Khmer # Mn KHMER SIGN NIKAHIT -17C7..17C8 ; Khmer # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU -17C9..17D3 ; Khmer # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT -17D4..17D6 ; Khmer # Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH -17D7 ; Khmer # Lm KHMER SIGN LEK TOO -17D8..17DA ; Khmer # Po [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT -17DB ; Khmer # Sc KHMER CURRENCY SYMBOL RIEL -17DC ; Khmer # Lo KHMER SIGN AVAKRAHASANYA -17DD ; Khmer # Mn KHMER SIGN ATTHACAN -17E0..17E9 ; Khmer # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE -17F0..17F9 ; Khmer # No [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON -19E0..19FF ; Khmer # So [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC - -# Total code points: 146 - -# ================================================ - -1800..1805 ; Mongolian # Po [6] MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS -1806 ; Mongolian # Pd MONGOLIAN TODO SOFT HYPHEN -1807..180A ; Mongolian # Po [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU -180B..180D ; Mongolian # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE -180E ; Mongolian # Zs MONGOLIAN VOWEL SEPARATOR -1810..1819 ; Mongolian # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE -1820..1842 ; Mongolian # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI -1843 ; Mongolian # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN -1844..1877 ; Mongolian # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA -1880..18A8 ; Mongolian # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA -18A9 ; Mongolian # Mn MONGOLIAN LETTER ALI GALI DAGALGA - -# Total code points: 155 - -# ================================================ - -3041..3096 ; Hiragana # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE -309D..309E ; Hiragana # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK -309F ; Hiragana # Lo HIRAGANA DIGRAPH YORI - -# Total code points: 89 - -# ================================================ - -30A1..30FA ; Katakana # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO -30FD..30FE ; Katakana # Lm [2] KATAKANA ITERATION MARK..KATAKANA VOICED ITERATION MARK -30FF ; Katakana # Lo KATAKANA DIGRAPH KOTO -31F0..31FF ; Katakana # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO -FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU -FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N - -# Total code points: 164 - -# ================================================ - -3105..312C ; Bopomofo # Lo [40] BOPOMOFO LETTER B..BOPOMOFO LETTER GN -31A0..31B7 ; Bopomofo # Lo [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H - -# Total code points: 64 - -# ================================================ - -2E80..2E99 ; Han # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP -2E9B..2EF3 ; Han # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE -2F00..2FD5 ; Han # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE -3005 ; Han # Lm IDEOGRAPHIC ITERATION MARK -3007 ; Han # Nl IDEOGRAPHIC NUMBER ZERO -3021..3029 ; Han # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE -3038..303A ; Han # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY -303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK -3400..4DB5 ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FBB ; Han # Lo [20924] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FBB -F900..FA2D ; Han # Lo [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D -FA30..FA6A ; Han # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A -FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 -20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 -2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D - -# Total code points: 71570 - -# ================================================ - -A000..A014 ; Yi # Lo [21] YI SYLLABLE IT..YI SYLLABLE E -A015 ; Yi # Lm YI SYLLABLE WU -A016..A48C ; Yi # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR -A490..A4C6 ; Yi # So [55] YI RADICAL QOT..YI RADICAL KE - -# Total code points: 1220 - -# ================================================ - -10300..1031E ; Old_Italic # Lo [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU -10320..10323 ; Old_Italic # No [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY - -# Total code points: 35 - -# ================================================ - -10330..10349 ; Gothic # Lo [26] GOTHIC LETTER AHSA..GOTHIC LETTER OTHAL -1034A ; Gothic # Nl GOTHIC LETTER NINE HUNDRED - -# Total code points: 27 - -# ================================================ - -10400..1044F ; Deseret # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW - -# Total code points: 80 - -# ================================================ - -0300..036F ; Inherited # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X -064B..0655 ; Inherited # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW -0670 ; Inherited # Mn ARABIC LETTER SUPERSCRIPT ALEF -1DC0..1DC3 ; Inherited # Mn [4] COMBINING DOTTED GRAVE ACCENT..COMBINING SUSPENSION MARK -200C..200D ; Inherited # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER -20D0..20DC ; Inherited # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE -20DD..20E0 ; Inherited # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH -20E1 ; Inherited # Mn COMBINING LEFT RIGHT ARROW ABOVE -20E2..20E4 ; Inherited # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE -20E5..20EB ; Inherited # Mn [7] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING LONG DOUBLE SOLIDUS OVERLAY -302A..302F ; Inherited # Mn [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK -3099..309A ; Inherited # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -FE00..FE0F ; Inherited # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 -FE20..FE23 ; Inherited # Mn [4] COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF -1D167..1D169 ; Inherited # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 -1D17B..1D182 ; Inherited # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE -1D185..1D18B ; Inherited # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE -1D1AA..1D1AD ; Inherited # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO -E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 - -# Total code points: 448 - -# ================================================ - -1700..170C ; Tagalog # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA -170E..1711 ; Tagalog # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA -1712..1714 ; Tagalog # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA - -# Total code points: 20 - -# ================================================ - -1720..1731 ; Hanunoo # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA -1732..1734 ; Hanunoo # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD - -# Total code points: 21 - -# ================================================ - -1740..1751 ; Buhid # Lo [18] BUHID LETTER A..BUHID LETTER HA -1752..1753 ; Buhid # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U - -# Total code points: 20 - -# ================================================ - -1760..176C ; Tagbanwa # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA -176E..1770 ; Tagbanwa # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA -1772..1773 ; Tagbanwa # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U - -# Total code points: 18 - -# ================================================ - -1900..191C ; Limbu # Lo [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA -1920..1922 ; Limbu # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U -1923..1926 ; Limbu # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU -1927..1928 ; Limbu # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O -1929..192B ; Limbu # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA -1930..1931 ; Limbu # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA -1932 ; Limbu # Mn LIMBU SMALL LETTER ANUSVARA -1933..1938 ; Limbu # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA -1939..193B ; Limbu # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I -1940 ; Limbu # So LIMBU SIGN LOO -1944..1945 ; Limbu # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK -1946..194F ; Limbu # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE - -# Total code points: 66 - -# ================================================ - -1950..196D ; Tai_Le # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI -1970..1974 ; Tai_Le # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 - -# Total code points: 35 - -# ================================================ - -10000..1000B ; Linear_B # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE -1000D..10026 ; Linear_B # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO -10028..1003A ; Linear_B # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO -1003C..1003D ; Linear_B # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE -1003F..1004D ; Linear_B # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO -10050..1005D ; Linear_B # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 -10080..100FA ; Linear_B # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 - -# Total code points: 211 - -# ================================================ - -10380..1039D ; Ugaritic # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU -1039F ; Ugaritic # Po UGARITIC WORD DIVIDER - -# Total code points: 31 - -# ================================================ - -10450..1047F ; Shavian # Lo [48] SHAVIAN LETTER PEEP..SHAVIAN LETTER YEW - -# Total code points: 48 - -# ================================================ - -10480..1049D ; Osmanya # Lo [30] OSMANYA LETTER ALEF..OSMANYA LETTER OO -104A0..104A9 ; Osmanya # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE - -# Total code points: 40 - -# ================================================ - -10800..10805 ; Cypriot # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA -10808 ; Cypriot # Lo CYPRIOT SYLLABLE JO -1080A..10835 ; Cypriot # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO -10837..10838 ; Cypriot # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE -1083C ; Cypriot # Lo CYPRIOT SYLLABLE ZA -1083F ; Cypriot # Lo CYPRIOT SYLLABLE ZO - -# Total code points: 55 - -# ================================================ - -2800..28FF ; Braille # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678 - -# Total code points: 256 - -# ================================================ - -1A00..1A16 ; Buginese # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA -1A17..1A18 ; Buginese # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U -1A19..1A1B ; Buginese # Mc [3] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN AE -1A1E..1A1F ; Buginese # Po [2] BUGINESE PALLAWA..BUGINESE END OF SECTION - -# Total code points: 30 - -# ================================================ - -03E2..03EF ; Coptic # L& [14] COPTIC CAPITAL LETTER SHEI..COPTIC SMALL LETTER DEI -2C80..2CE4 ; Coptic # L& [101] COPTIC CAPITAL LETTER ALFA..COPTIC SYMBOL KAI -2CE5..2CEA ; Coptic # So [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA -2CF9..2CFC ; Coptic # Po [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER -2CFD ; Coptic # No COPTIC FRACTION ONE HALF -2CFE..2CFF ; Coptic # Po [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER - -# Total code points: 128 - -# ================================================ - -1980..19A9 ; New_Tai_Lue # Lo [42] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW XVA -19B0..19C0 ; New_Tai_Lue # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY -19C1..19C7 ; New_Tai_Lue # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B -19C8..19C9 ; New_Tai_Lue # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2 -19D0..19D9 ; New_Tai_Lue # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE -19DE..19DF ; New_Tai_Lue # Po [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV - -# Total code points: 80 - -# ================================================ - -2C00..2C2E ; Glagolitic # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C30..2C5E ; Glagolitic # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE - -# Total code points: 94 - -# ================================================ - -2D30..2D65 ; Tifinagh # Lo [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ -2D6F ; Tifinagh # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK - -# Total code points: 55 - -# ================================================ - -A800..A801 ; Syloti_Nagri # Lo [2] SYLOTI NAGRI LETTER A..SYLOTI NAGRI LETTER I -A802 ; Syloti_Nagri # Mc SYLOTI NAGRI SIGN DVISVARA -A803..A805 ; Syloti_Nagri # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O -A806 ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN HASANTA -A807..A80A ; Syloti_Nagri # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO -A80B ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN ANUSVARA -A80C..A822 ; Syloti_Nagri # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO -A823..A824 ; Syloti_Nagri # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I -A825..A826 ; Syloti_Nagri # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E -A827 ; Syloti_Nagri # Mc SYLOTI NAGRI VOWEL SIGN OO -A828..A82B ; Syloti_Nagri # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4 - -# Total code points: 44 - -# ================================================ - -103A0..103C3 ; Old_Persian # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA -103C8..103CF ; Old_Persian # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH -103D0 ; Old_Persian # So OLD PERSIAN WORD DIVIDER -103D1..103D5 ; Old_Persian # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED - -# Total code points: 50 - -# ================================================ - -10A00 ; Kharoshthi # Lo KHAROSHTHI LETTER A -10A01..10A03 ; Kharoshthi # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R -10A05..10A06 ; Kharoshthi # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O -10A0C..10A0F ; Kharoshthi # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA -10A10..10A13 ; Kharoshthi # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA -10A15..10A17 ; Kharoshthi # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA -10A19..10A33 ; Kharoshthi # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA -10A38..10A3A ; Kharoshthi # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW -10A3F ; Kharoshthi # Mn KHAROSHTHI VIRAMA -10A40..10A47 ; Kharoshthi # No [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND -10A50..10A58 ; Kharoshthi # Po [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES - -# Total code points: 65 diff --git a/Master/tlpkg/tlperl.old/lib/unicore/SpecialCasing.txt b/Master/tlpkg/tlperl.old/lib/unicore/SpecialCasing.txt deleted file mode 100644 index 11a5b1d69e1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/SpecialCasing.txt +++ /dev/null @@ -1,260 +0,0 @@ -# SpecialCasing-4.1.0.txt -# Date: 2005-03-26, 00:35:45 GMT [MD] -# -# Unicode Character Database -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# For documentation, see UCD.html -# -# Special Casing Properties -# -# This file is a supplement to the UnicodeData file. -# It contains additional information about the casing of Unicode characters. -# (For compatibility, the UnicodeData.txt file only contains case mappings for -# characters where they are 1-1, and does not have locale-specific mappings.) -# For more information, see the discussion of Case Mappings in the Unicode Standard. -# -# All code points not listed in this file that do not have a simple case mappings -# in UnicodeData.txt map to themselves. -# ================================================================================ -# Format -# ================================================================================ -# The entries in this file are in the following machine-readable format: -# -# <code>; <lower> ; <title> ; <upper> ; (<condition_list> ;)? # <comment> -# -# <code>, <lower>, <title>, and <upper> provide character values in hex. If there is more -# than one character, they are separated by spaces. Other than as used to separate -# elements, spaces are to be ignored. -# -# The <condition_list> is optional. Where present, it consists of one or more locale IDs -# or contexts, separated by spaces. In these conditions: -# - A condition list overrides the normal behavior if all of the listed conditions are true. -# - The context is always the context of the characters in the original string, -# NOT in the resulting string. -# - Case distinctions in the condition list are not significant. -# - Conditions preceded by "Not_" represent the negation of the condition. -# -# A locale ID is defined by taking any language tag as defined by -# RFC 3066 (or its successor), and replacing '-' by '_'. -# -# A context for a character C is defined by Section 3.13 Default Case Operations, -# on p. 89-90 of The Unicode Standard, Version 4.0, as amended by Unicode 4.1.0, -# as specified in http://www.unicode.org/versions/Unicode4.1.0/ -# -# Parsers of this file must be prepared to deal with future additions to this format: -# * Additional contexts -# * Additional fields -# ================================================================================ - -# ================================================================================ -# Unconditional mappings -# ================================================================================ - -# The German es-zed is special--the normal mapping is to SS. -# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>)) - -00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S - -# Preserve canonical equivalence for I with dot. Turkic is handled below. - -0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE - -# Ligatures - -FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF -FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI -FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL -FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI -FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL -FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T -FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST - -0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN -FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW -FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH -FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI -FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW -FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH - -# No corresponding uppercase precomposed character - -0149; 0149; 02BC 004E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON -1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW -1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS -1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE -1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE -1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING -1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI -1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA -1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA -1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI -1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI -1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI -1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA -1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI -1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI -1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA -1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA -1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI -1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI -1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI -1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI - -# IMPORTANT-when capitalizing iota-subscript (0345) -# It MUST be in normalized form--moved to the end of any sequence of combining marks. -# This is because logically it represents a following base character! -# E.g. <iota_subscript> (<Mn> | <Mc> | <Me>)+ => (<Mn> | <Mc> | <Me>)+ <iota_subscript> -# It should never be the first character in a word, so in titlecasing it can be left as is. - -# The following cases are already in the UnicodeData file, so are only commented here. - -# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI - -# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript) -# have special uppercases. -# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase! - -1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI -1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI -1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI -1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI -1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI -1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI -1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI -1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI -1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI -1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI -1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI -1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI -1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI -1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI -1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI -1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI - -# Some characters with YPOGEGRAMMENI also have no corresponding titlecases - -1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI -1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI -1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI -1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI - -1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI -1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI -1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI - -# ================================================================================ -# Conditional mappings -# ================================================================================ - -# Special case for final form of sigma - -03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA - -# Note: the following cases for non-final are already in the UnicodeData file. - -# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA -# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA -# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA - -# Note: the following cases are not included, since they would case-fold in lowercasing - -# 03C3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK SMALL LETTER SIGMA -# 03C2; 03C3; 03A3; 03A3; Not_Final_Sigma; # GREEK SMALL LETTER FINAL SIGMA - -# ================================================================================ -# Locale-sensitive mappings -# ================================================================================ - -# Lithuanian - -# Lithuanian retains the dot in a lowercase i when followed by accents. - -# Remove DOT ABOVE after "i" with upper or titlecase - -0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE - -# Introduce an explicit dot above when lowercasing capital I's and J's -# whenever there are more accents above. -# (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek) - -0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I -004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J -012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK -00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE -00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE -0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE - -# ================================================================================ - -# Turkish and Azeri - -# I and i-dotless; I-dot and i are case pairs in Turkish and Azeri -# The following rules handle those cases. - -0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE -0130; 0069; 0130; 0130; az; # LATIN CAPITAL LETTER I WITH DOT ABOVE - -# When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i. -# This matches the behavior of the canonically equivalent I-dot_above - -0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE -0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE - -# When lowercasing, unless an I is before a dot_above, it turns into a dotless i. - -0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I -0049; 0131; 0049; 0049; az Not_Before_Dot; # LATIN CAPITAL LETTER I - -# When uppercasing, i turns into a dotted capital I - -0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I -0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I - -# Note: the following case is already in the UnicodeData file. - -# 0131; 0131; 0049; 0049; tr; # LATIN SMALL LETTER DOTLESS I diff --git a/Master/tlpkg/tlperl.old/lib/unicore/StandardizedVariants.txt b/Master/tlpkg/tlperl.old/lib/unicore/StandardizedVariants.txt deleted file mode 100644 index f049159dd3f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/StandardizedVariants.txt +++ /dev/null @@ -1,122 +0,0 @@ -# StandardizedVariants-4.1.0.txt -# Date: 2005-03-17, 15:21:00 PST [KW] -# -# Specification of the variant sequences that are defined in the -# Unicode Standard. -# -# This file is a normative contributory data file in the -# Unicode Character Database. -# -# Copyright (c) 1991-2005 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# -# Warning: Only the variation sequences specifically defined in this file -# are sanctioned for standard use. In all other cases the variation selector -# cannot change the visual appearance of the preceding base character from -# what it would have had in the absence of the variation selector. -# -# For more information, see Section 15.6, Variation Selectors, -# in The Unicode Standard, Version 4.0. -# -# Format: -# Field 0: the variation sequence -# Field 1: the description of the desired appearance -# Field 2: where the appearance is only different in in particular shaping environments -# this field lists them. The possible values are: isolate, initial, medial, final. -# If more than one is present, there are spaces between them. -# ============================= - -# Mathematical - -2229 FE00; with serifs; # INTERSECTION -222A FE00; with serifs; # UNION -2268 FE00; with vertical stroke; # LESS-THAN BUT NOT EQUAL TO -2269 FE00; with vertical stroke; # GREATER-THAN AND NOT DOUBLE EQUAL -2272 FE00; following the slant of the lower leg; # LESS-THAN OR EQUIVALENT TO -2273 FE00; following the slant of the lower leg; # GREATER-THAN OR EQUIVALENT TO -#2278 FE00; with vertical stroke; # NEITHER LESS-THAN NOR GREATER-THAN -#2279 FE00; with vertical stroke; # NEITHER GREATER-THAN NOR LESS-THAN -228A FE00; with stroke through bottom members; # SUBSET OF WITH NOT EQUAL TO -228B FE00; with stroke through bottom members; # SUPERSET OF WITH NOT EQUAL TO -2293 FE00; with serifs; # SQUARE CAP -2294 FE00; with serifs; # SQUARE CUP -2295 FE00; with white rim; # CIRCLED PLUS -2297 FE00; with white rim; # CIRCLED TIMES -229C FE00; with equal sign touching the circle; # CIRCLED EQUALS -22DA FE00; with slanted equal; # LESS-THAN EQUAL TO OR GREATER-THAN -22DB FE00; with slanted equal; # GREATER-THAN EQUAL TO OR LESS-THAN -2A3C FE00; tall variant with narrow foot; # INTERIOR PRODUCT -2A3D FE00; tall variant with narrow foot; # RIGHTHAND INTERIOR PRODUCT -2A9D FE00; with similar following the slant of the upper leg; # SIMILAR OR LESS-THAN -2A9E FE00; with similar following the slant of the upper leg; # SIMILAR OR GREATER-THAN -2AAC FE00; with slanted equal; # SMALLER THAN OR EQUAL TO -2AAD FE00; with slanted equal; # LARGER THAN OR EQUAL TO -2ACB FE00; with stroke through bottom members; # SUBSET OF ABOVE NOT EQUAL TO -2ACC FE00; with stroke through bottom members; # SUPERSET OF ABOVE NOT EQUAL TO - -#Mongolian - -1820 180B; second form; isolate medial final # MONGOLIAN LETTER A -1820 180C; third form; medial # MONGOLIAN LETTER A -1821 180B; second form; initial final # MONGOLIAN LETTER E -1822 180B; second form; medial # MONGOLIAN LETTER I -1823 180B; second form; medial final # MONGOLIAN LETTER O -1824 180B; second form; medial # MONGOLIAN LETTER U -1825 180B; second form; medial final # MONGOLIAN LETTER OE -1825 180C; third form; medial # MONGOLIAN LETTER OE -1826 180B; second form; isolate medial final # MONGOLIAN LETTER UE -1826 180C; third form; medial # MONGOLIAN LETTER UE -1828 180B; second form; initial medial # MONGOLIAN LETTER NA -1828 180C; third form; medial # MONGOLIAN LETTER NA -1828 180D; separate form; medial # MONGOLIAN LETTER NA -182A 180B; alternative form; final # MONGOLIAN LETTER BA -182C 180B; second form; initial medial # MONGOLIAN LETTER QA -182C 180B; feminine second form; isolate # MONGOLIAN LETTER QA -182C 180C; third form; medial # MONGOLIAN LETTER QA -182C 180D; fourth form; medial # MONGOLIAN LETTER QA -182D 180B; second form; initial medial # MONGOLIAN LETTER GA -182D 180B; feminine form; final # MONGOLIAN LETTER GA -182D 180C; third form; medial # MONGOLIAN LETTER GA -182D 180D; feminine form; medial # MONGOLIAN LETTER GA -1830 180B; second form; final # MONGOLIAN LETTER SA -1830 180C; third form; final # MONGOLIAN LETTER SA -1832 180B; second form; medial # MONGOLIAN LETTER TA -1833 180B; second form; initial medial final # MONGOLIAN LETTER DA -1835 180B; second form; medial # MONGOLIAN LETTER JA -1836 180B; second form; initial medial # # MONGOLIAN LETTER YA -1836 180C; third form; medial # MONGOLIAN LETTER YA -1838 180B; second form; final # MONGOLIAN LETTER WA -1844 180B; second form; medial # MONGOLIAN LETTER TODO E -1845 180B; second form; medial # MONGOLIAN LETTER TODO I -1846 180B; second form; medial # MONGOLIAN LETTER TODO O -1847 180B; second form; isolate medial final # MONGOLIAN LETTER TODO U -1847 180C; third form; medial # MONGOLIAN LETTER TODO U -1848 180B; second form; medial # MONGOLIAN LETTER TODO OE -1849 180B; second form; isolate medial # MONGOLIAN LETTER TODO UE -184D 180B; feminine form; initial medial # MONGOLIAN LETTER TODO QA -184E 180B; second form; medial # MONGOLIAN LETTER TODO GA -185D 180B; second form; medial final # MONGOLIAN LETTER SIBE E -185E 180B; second form; medial final # MONGOLIAN LETTER SIBE I -185E 180C; third form; medial final # MONGOLIAN LETTER SIBE I -1860 180B; second form; medial final # MONGOLIAN LETTER SIBE UE -1863 180B; second form; medial # MONGOLIAN LETTER SIBE KA -1868 180B; second form; initial medial # MONGOLIAN LETTER SIBE TA -1868 180C; third form; medial # MONGOLIAN LETTER SIBE TA -1869 180B; second form; initial medial # MONGOLIAN LETTER SIBE DA -186F 180B; second form; initial medial # MONGOLIAN LETTER SIBE ZA -1873 180B; second form; medial final # MONGOLIAN LETTER MANCHU I -1873 180C; third form; medial final # MONGOLIAN LETTER MANCHU I -1873 180D; fourth form; medial # MONGOLIAN LETTER MANCHU I -1874 180B; second form; medial # MONGOLIAN LETTER MANCHU KA -1874 180B; feminine first final form; final # MONGOLIAN LETTER MANCHU KA -1874 180C; feminine first medial form; medial # MONGOLIAN LETTER MANCHU KA -1874 180C; feminine second final form; final # MONGOLIAN LETTER MANCHU KA -1874 180D; feminine second medial form; medial # MONGOLIAN LETTER MANCHU KA -1876 180B; second form; initial medial # MONGOLIAN LETTER MANCHU FA -1880 180B; second form; # MONGOLIAN LETTER ALI GALI ANUSVARA ONE -1881 180B; second form; # MONGOLIAN LETTER ALI GALI VISARGA ONE -1887 180B; second form; isolate final # MONGOLIAN LETTER ALI GALI A -1887 180C; third form; final # MONGOLIAN LETTER ALI GALI A -1887 180D; fourth form; final # MONGOLIAN LETTER ALI GALI A -1888 180B; second form; final # MONGOLIAN LETTER ALI GALI I -188A 180B; second form; initial medial # MONGOLIAN LETTER ALI GALI NGA diff --git a/Master/tlpkg/tlperl.old/lib/unicore/To/Digit.pl b/Master/tlpkg/tlperl.old/lib/unicore/To/Digit.pl deleted file mode 100644 index 25af374eadf..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/To/Digit.pl +++ /dev/null @@ -1,276 +0,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 -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 -0BE6 0 -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 -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 -1946 0 -1947 1 -1948 2 -1949 3 -194A 4 -194B 5 -194C 6 -194D 7 -194E 8 -194F 9 -19D0 0 -19D1 1 -19D2 2 -19D3 3 -19D4 4 -19D5 5 -19D6 6 -19D7 7 -19D8 8 -19D9 9 -FF10 0 -FF11 1 -FF12 2 -FF13 3 -FF14 4 -FF15 5 -FF16 6 -FF17 7 -FF18 8 -FF19 9 -104A0 0 -104A1 1 -104A2 2 -104A3 3 -104A4 4 -104A5 5 -104A6 6 -104A7 7 -104A8 8 -104A9 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/tlpkg/tlperl.old/lib/unicore/To/Fold.pl b/Master/tlpkg/tlperl.old/lib/unicore/To/Fold.pl deleted file mode 100644 index 4555e9fd5bd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/To/Fold.pl +++ /dev/null @@ -1,993 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - - -# The ke UTF-8 _bytes_, the value UTF-8 (speed hack) -%utf8::ToSpecFold = -( -"\xC3\x9F" => "\x{0073}\x{0073}", -"\xC4\xB0" => "\x{0069}\x{0307}", -"\xC5\x89" => "\x{02BC}\x{006E}", -"\xC7\xB0" => "\x{006A}\x{030C}", -"\xCE\x90" => "\x{03B9}\x{0308}\x{0301}", -"\xCE\xB0" => "\x{03C5}\x{0308}\x{0301}", -"\xD6\x87" => "\x{0565}\x{0582}", -"\xE1\xBA\x96" => "\x{0068}\x{0331}", -"\xE1\xBA\x97" => "\x{0074}\x{0308}", -"\xE1\xBA\x98" => "\x{0077}\x{030A}", -"\xE1\xBA\x99" => "\x{0079}\x{030A}", -"\xE1\xBA\x9A" => "\x{0061}\x{02BE}", -"\xE1\xBD\x90" => "\x{03C5}\x{0313}", -"\xE1\xBD\x92" => "\x{03C5}\x{0313}\x{0300}", -"\xE1\xBD\x94" => "\x{03C5}\x{0313}\x{0301}", -"\xE1\xBD\x96" => "\x{03C5}\x{0313}\x{0342}", -"\xE1\xBE\x80" => "\x{1F00}\x{03B9}", -"\xE1\xBE\x81" => "\x{1F01}\x{03B9}", -"\xE1\xBE\x82" => "\x{1F02}\x{03B9}", -"\xE1\xBE\x83" => "\x{1F03}\x{03B9}", -"\xE1\xBE\x84" => "\x{1F04}\x{03B9}", -"\xE1\xBE\x85" => "\x{1F05}\x{03B9}", -"\xE1\xBE\x86" => "\x{1F06}\x{03B9}", -"\xE1\xBE\x87" => "\x{1F07}\x{03B9}", -"\xE1\xBE\x88" => "\x{1F00}\x{03B9}", -"\xE1\xBE\x89" => "\x{1F01}\x{03B9}", -"\xE1\xBE\x8A" => "\x{1F02}\x{03B9}", -"\xE1\xBE\x8B" => "\x{1F03}\x{03B9}", -"\xE1\xBE\x8C" => "\x{1F04}\x{03B9}", -"\xE1\xBE\x8D" => "\x{1F05}\x{03B9}", -"\xE1\xBE\x8E" => "\x{1F06}\x{03B9}", -"\xE1\xBE\x8F" => "\x{1F07}\x{03B9}", -"\xE1\xBE\x90" => "\x{1F20}\x{03B9}", -"\xE1\xBE\x91" => "\x{1F21}\x{03B9}", -"\xE1\xBE\x92" => "\x{1F22}\x{03B9}", -"\xE1\xBE\x93" => "\x{1F23}\x{03B9}", -"\xE1\xBE\x94" => "\x{1F24}\x{03B9}", -"\xE1\xBE\x95" => "\x{1F25}\x{03B9}", -"\xE1\xBE\x96" => "\x{1F26}\x{03B9}", -"\xE1\xBE\x97" => "\x{1F27}\x{03B9}", -"\xE1\xBE\x98" => "\x{1F20}\x{03B9}", -"\xE1\xBE\x99" => "\x{1F21}\x{03B9}", -"\xE1\xBE\x9A" => "\x{1F22}\x{03B9}", -"\xE1\xBE\x9B" => "\x{1F23}\x{03B9}", -"\xE1\xBE\x9C" => "\x{1F24}\x{03B9}", -"\xE1\xBE\x9D" => "\x{1F25}\x{03B9}", -"\xE1\xBE\x9E" => "\x{1F26}\x{03B9}", -"\xE1\xBE\x9F" => "\x{1F27}\x{03B9}", -"\xE1\xBE\xA0" => "\x{1F60}\x{03B9}", -"\xE1\xBE\xA1" => "\x{1F61}\x{03B9}", -"\xE1\xBE\xA2" => "\x{1F62}\x{03B9}", -"\xE1\xBE\xA3" => "\x{1F63}\x{03B9}", -"\xE1\xBE\xA4" => "\x{1F64}\x{03B9}", -"\xE1\xBE\xA5" => "\x{1F65}\x{03B9}", -"\xE1\xBE\xA6" => "\x{1F66}\x{03B9}", -"\xE1\xBE\xA7" => "\x{1F67}\x{03B9}", -"\xE1\xBE\xA8" => "\x{1F60}\x{03B9}", -"\xE1\xBE\xA9" => "\x{1F61}\x{03B9}", -"\xE1\xBE\xAA" => "\x{1F62}\x{03B9}", -"\xE1\xBE\xAB" => "\x{1F63}\x{03B9}", -"\xE1\xBE\xAC" => "\x{1F64}\x{03B9}", -"\xE1\xBE\xAD" => "\x{1F65}\x{03B9}", -"\xE1\xBE\xAE" => "\x{1F66}\x{03B9}", -"\xE1\xBE\xAF" => "\x{1F67}\x{03B9}", -"\xE1\xBE\xB2" => "\x{1F70}\x{03B9}", -"\xE1\xBE\xB3" => "\x{03B1}\x{03B9}", -"\xE1\xBE\xB4" => "\x{03AC}\x{03B9}", -"\xE1\xBE\xB6" => "\x{03B1}\x{0342}", -"\xE1\xBE\xB7" => "\x{03B1}\x{0342}\x{03B9}", -"\xE1\xBE\xBC" => "\x{03B1}\x{03B9}", -"\xE1\xBF\x82" => "\x{1F74}\x{03B9}", -"\xE1\xBF\x83" => "\x{03B7}\x{03B9}", -"\xE1\xBF\x84" => "\x{03AE}\x{03B9}", -"\xE1\xBF\x86" => "\x{03B7}\x{0342}", -"\xE1\xBF\x87" => "\x{03B7}\x{0342}\x{03B9}", -"\xE1\xBF\x8C" => "\x{03B7}\x{03B9}", -"\xE1\xBF\x92" => "\x{03B9}\x{0308}\x{0300}", -"\xE1\xBF\x93" => "\x{03B9}\x{0308}\x{0301}", -"\xE1\xBF\x96" => "\x{03B9}\x{0342}", -"\xE1\xBF\x97" => "\x{03B9}\x{0308}\x{0342}", -"\xE1\xBF\xA2" => "\x{03C5}\x{0308}\x{0300}", -"\xE1\xBF\xA3" => "\x{03C5}\x{0308}\x{0301}", -"\xE1\xBF\xA4" => "\x{03C1}\x{0313}", -"\xE1\xBF\xA6" => "\x{03C5}\x{0342}", -"\xE1\xBF\xA7" => "\x{03C5}\x{0308}\x{0342}", -"\xE1\xBF\xB2" => "\x{1F7C}\x{03B9}", -"\xE1\xBF\xB3" => "\x{03C9}\x{03B9}", -"\xE1\xBF\xB4" => "\x{03CE}\x{03B9}", -"\xE1\xBF\xB6" => "\x{03C9}\x{0342}", -"\xE1\xBF\xB7" => "\x{03C9}\x{0342}\x{03B9}", -"\xE1\xBF\xBC" => "\x{03C9}\x{03B9}", -"\xEF\xAC\x80" => "\x{0066}\x{0066}", -"\xEF\xAC\x81" => "\x{0066}\x{0069}", -"\xEF\xAC\x82" => "\x{0066}\x{006C}", -"\xEF\xAC\x83" => "\x{0066}\x{0066}\x{0069}", -"\xEF\xAC\x84" => "\x{0066}\x{0066}\x{006C}", -"\xEF\xAC\x85" => "\x{0073}\x{0074}", -"\xEF\xAC\x86" => "\x{0073}\x{0074}", -"\xEF\xAC\x93" => "\x{0574}\x{0576}", -"\xEF\xAC\x94" => "\x{0574}\x{0565}", -"\xEF\xAC\x95" => "\x{0574}\x{056B}", -"\xEF\xAC\x96" => "\x{057E}\x{0576}", -"\xEF\xAC\x97" => "\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 -023B 023C -023D 019A -0241 0294 -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 -03F4 03B8 -03F5 03B5 -03F7 03F8 -03F9 03F2 -03FA 03FB -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 -04F6 04F7 -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 -10A0 2D00 -10A1 2D01 -10A2 2D02 -10A3 2D03 -10A4 2D04 -10A5 2D05 -10A6 2D06 -10A7 2D07 -10A8 2D08 -10A9 2D09 -10AA 2D0A -10AB 2D0B -10AC 2D0C -10AD 2D0D -10AE 2D0E -10AF 2D0F -10B0 2D10 -10B1 2D11 -10B2 2D12 -10B3 2D13 -10B4 2D14 -10B5 2D15 -10B6 2D16 -10B7 2D17 -10B8 2D18 -10B9 2D19 -10BA 2D1A -10BB 2D1B -10BC 2D1C -10BD 2D1D -10BE 2D1E -10BF 2D1F -10C0 2D20 -10C1 2D21 -10C2 2D22 -10C3 2D23 -10C4 2D24 -10C5 2D25 -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 -2C00 2C30 -2C01 2C31 -2C02 2C32 -2C03 2C33 -2C04 2C34 -2C05 2C35 -2C06 2C36 -2C07 2C37 -2C08 2C38 -2C09 2C39 -2C0A 2C3A -2C0B 2C3B -2C0C 2C3C -2C0D 2C3D -2C0E 2C3E -2C0F 2C3F -2C10 2C40 -2C11 2C41 -2C12 2C42 -2C13 2C43 -2C14 2C44 -2C15 2C45 -2C16 2C46 -2C17 2C47 -2C18 2C48 -2C19 2C49 -2C1A 2C4A -2C1B 2C4B -2C1C 2C4C -2C1D 2C4D -2C1E 2C4E -2C1F 2C4F -2C20 2C50 -2C21 2C51 -2C22 2C52 -2C23 2C53 -2C24 2C54 -2C25 2C55 -2C26 2C56 -2C27 2C57 -2C28 2C58 -2C29 2C59 -2C2A 2C5A -2C2B 2C5B -2C2C 2C5C -2C2D 2C5D -2C2E 2C5E -2C80 2C81 -2C82 2C83 -2C84 2C85 -2C86 2C87 -2C88 2C89 -2C8A 2C8B -2C8C 2C8D -2C8E 2C8F -2C90 2C91 -2C92 2C93 -2C94 2C95 -2C96 2C97 -2C98 2C99 -2C9A 2C9B -2C9C 2C9D -2C9E 2C9F -2CA0 2CA1 -2CA2 2CA3 -2CA4 2CA5 -2CA6 2CA7 -2CA8 2CA9 -2CAA 2CAB -2CAC 2CAD -2CAE 2CAF -2CB0 2CB1 -2CB2 2CB3 -2CB4 2CB5 -2CB6 2CB7 -2CB8 2CB9 -2CBA 2CBB -2CBC 2CBD -2CBE 2CBF -2CC0 2CC1 -2CC2 2CC3 -2CC4 2CC5 -2CC6 2CC7 -2CC8 2CC9 -2CCA 2CCB -2CCC 2CCD -2CCE 2CCF -2CD0 2CD1 -2CD2 2CD3 -2CD4 2CD5 -2CD6 2CD7 -2CD8 2CD9 -2CDA 2CDB -2CDC 2CDD -2CDE 2CDF -2CE0 2CE1 -2CE2 2CE3 -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 -10426 1044E -10427 1044F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/To/Lower.pl b/Master/tlpkg/tlperl.old/lib/unicore/To/Lower.pl deleted file mode 100644 index 77a7a7fb0e0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/To/Lower.pl +++ /dev/null @@ -1,905 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - - -# The key UTF-8 _bytes_, the value UTF-8 (speed hack) -%utf8::ToSpecLower = -( -"\xC4\xB0" => "\x{0069}\x{0307}", -"\xE1\xBE\x88" => "\x{1F80}", -"\xE1\xBE\x89" => "\x{1F81}", -"\xE1\xBE\x8A" => "\x{1F82}", -"\xE1\xBE\x8B" => "\x{1F83}", -"\xE1\xBE\x8C" => "\x{1F84}", -"\xE1\xBE\x8D" => "\x{1F85}", -"\xE1\xBE\x8E" => "\x{1F86}", -"\xE1\xBE\x8F" => "\x{1F87}", -"\xE1\xBE\x98" => "\x{1F90}", -"\xE1\xBE\x99" => "\x{1F91}", -"\xE1\xBE\x9A" => "\x{1F92}", -"\xE1\xBE\x9B" => "\x{1F93}", -"\xE1\xBE\x9C" => "\x{1F94}", -"\xE1\xBE\x9D" => "\x{1F95}", -"\xE1\xBE\x9E" => "\x{1F96}", -"\xE1\xBE\x9F" => "\x{1F97}", -"\xE1\xBE\xA8" => "\x{1FA0}", -"\xE1\xBE\xA9" => "\x{1FA1}", -"\xE1\xBE\xAA" => "\x{1FA2}", -"\xE1\xBE\xAB" => "\x{1FA3}", -"\xE1\xBE\xAC" => "\x{1FA4}", -"\xE1\xBE\xAD" => "\x{1FA5}", -"\xE1\xBE\xAE" => "\x{1FA6}", -"\xE1\xBE\xAF" => "\x{1FA7}", -"\xE1\xBE\xBC" => "\x{1FB3}", -"\xE1\xBF\x8C" => "\x{1FC3}", -"\xE1\xBF\xBC" => "\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 -023B 023C -023D 019A -0241 0294 -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 -03F7 03F8 -03F9 03F2 -03FA 03FB -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 -04F6 04F7 -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 -10A0 2D00 -10A1 2D01 -10A2 2D02 -10A3 2D03 -10A4 2D04 -10A5 2D05 -10A6 2D06 -10A7 2D07 -10A8 2D08 -10A9 2D09 -10AA 2D0A -10AB 2D0B -10AC 2D0C -10AD 2D0D -10AE 2D0E -10AF 2D0F -10B0 2D10 -10B1 2D11 -10B2 2D12 -10B3 2D13 -10B4 2D14 -10B5 2D15 -10B6 2D16 -10B7 2D17 -10B8 2D18 -10B9 2D19 -10BA 2D1A -10BB 2D1B -10BC 2D1C -10BD 2D1D -10BE 2D1E -10BF 2D1F -10C0 2D20 -10C1 2D21 -10C2 2D22 -10C3 2D23 -10C4 2D24 -10C5 2D25 -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 -2C00 2C30 -2C01 2C31 -2C02 2C32 -2C03 2C33 -2C04 2C34 -2C05 2C35 -2C06 2C36 -2C07 2C37 -2C08 2C38 -2C09 2C39 -2C0A 2C3A -2C0B 2C3B -2C0C 2C3C -2C0D 2C3D -2C0E 2C3E -2C0F 2C3F -2C10 2C40 -2C11 2C41 -2C12 2C42 -2C13 2C43 -2C14 2C44 -2C15 2C45 -2C16 2C46 -2C17 2C47 -2C18 2C48 -2C19 2C49 -2C1A 2C4A -2C1B 2C4B -2C1C 2C4C -2C1D 2C4D -2C1E 2C4E -2C1F 2C4F -2C20 2C50 -2C21 2C51 -2C22 2C52 -2C23 2C53 -2C24 2C54 -2C25 2C55 -2C26 2C56 -2C27 2C57 -2C28 2C58 -2C29 2C59 -2C2A 2C5A -2C2B 2C5B -2C2C 2C5C -2C2D 2C5D -2C2E 2C5E -2C80 2C81 -2C82 2C83 -2C84 2C85 -2C86 2C87 -2C88 2C89 -2C8A 2C8B -2C8C 2C8D -2C8E 2C8F -2C90 2C91 -2C92 2C93 -2C94 2C95 -2C96 2C97 -2C98 2C99 -2C9A 2C9B -2C9C 2C9D -2C9E 2C9F -2CA0 2CA1 -2CA2 2CA3 -2CA4 2CA5 -2CA6 2CA7 -2CA8 2CA9 -2CAA 2CAB -2CAC 2CAD -2CAE 2CAF -2CB0 2CB1 -2CB2 2CB3 -2CB4 2CB5 -2CB6 2CB7 -2CB8 2CB9 -2CBA 2CBB -2CBC 2CBD -2CBE 2CBF -2CC0 2CC1 -2CC2 2CC3 -2CC4 2CC5 -2CC6 2CC7 -2CC8 2CC9 -2CCA 2CCB -2CCC 2CCD -2CCE 2CCF -2CD0 2CD1 -2CD2 2CD3 -2CD4 2CD5 -2CD6 2CD7 -2CD8 2CD9 -2CDA 2CDB -2CDC 2CDD -2CDE 2CDF -2CE0 2CE1 -2CE2 2CE3 -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 -10426 1044E -10427 1044F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/To/Title.pl b/Master/tlpkg/tlperl.old/lib/unicore/To/Title.pl deleted file mode 100644 index 761767520c2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/To/Title.pl +++ /dev/null @@ -1,966 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - - -# The key UTF-8 _bytes_, the value UTF-8 (speed hack) -%utf8::ToSpecTitle = -( -"\xC3\x9F" => "\x{0053}\x{0073}", -"\xC5\x89" => "\x{02BC}\x{004E}", -"\xC7\xB0" => "\x{004A}\x{030C}", -"\xCE\x90" => "\x{0399}\x{0308}\x{0301}", -"\xCE\xB0" => "\x{03A5}\x{0308}\x{0301}", -"\xD6\x87" => "\x{0535}\x{0582}", -"\xE1\xBA\x96" => "\x{0048}\x{0331}", -"\xE1\xBA\x97" => "\x{0054}\x{0308}", -"\xE1\xBA\x98" => "\x{0057}\x{030A}", -"\xE1\xBA\x99" => "\x{0059}\x{030A}", -"\xE1\xBA\x9A" => "\x{0041}\x{02BE}", -"\xE1\xBD\x90" => "\x{03A5}\x{0313}", -"\xE1\xBD\x92" => "\x{03A5}\x{0313}\x{0300}", -"\xE1\xBD\x94" => "\x{03A5}\x{0313}\x{0301}", -"\xE1\xBD\x96" => "\x{03A5}\x{0313}\x{0342}", -"\xE1\xBE\x80" => "\x{1F88}", -"\xE1\xBE\x81" => "\x{1F89}", -"\xE1\xBE\x82" => "\x{1F8A}", -"\xE1\xBE\x83" => "\x{1F8B}", -"\xE1\xBE\x84" => "\x{1F8C}", -"\xE1\xBE\x85" => "\x{1F8D}", -"\xE1\xBE\x86" => "\x{1F8E}", -"\xE1\xBE\x87" => "\x{1F8F}", -"\xE1\xBE\x90" => "\x{1F98}", -"\xE1\xBE\x91" => "\x{1F99}", -"\xE1\xBE\x92" => "\x{1F9A}", -"\xE1\xBE\x93" => "\x{1F9B}", -"\xE1\xBE\x94" => "\x{1F9C}", -"\xE1\xBE\x95" => "\x{1F9D}", -"\xE1\xBE\x96" => "\x{1F9E}", -"\xE1\xBE\x97" => "\x{1F9F}", -"\xE1\xBE\xA0" => "\x{1FA8}", -"\xE1\xBE\xA1" => "\x{1FA9}", -"\xE1\xBE\xA2" => "\x{1FAA}", -"\xE1\xBE\xA3" => "\x{1FAB}", -"\xE1\xBE\xA4" => "\x{1FAC}", -"\xE1\xBE\xA5" => "\x{1FAD}", -"\xE1\xBE\xA6" => "\x{1FAE}", -"\xE1\xBE\xA7" => "\x{1FAF}", -"\xE1\xBE\xB2" => "\x{1FBA}\x{0345}", -"\xE1\xBE\xB3" => "\x{1FBC}", -"\xE1\xBE\xB4" => "\x{0386}\x{0345}", -"\xE1\xBE\xB6" => "\x{0391}\x{0342}", -"\xE1\xBE\xB7" => "\x{0391}\x{0342}\x{0345}", -"\xE1\xBF\x82" => "\x{1FCA}\x{0345}", -"\xE1\xBF\x83" => "\x{1FCC}", -"\xE1\xBF\x84" => "\x{0389}\x{0345}", -"\xE1\xBF\x86" => "\x{0397}\x{0342}", -"\xE1\xBF\x87" => "\x{0397}\x{0342}\x{0345}", -"\xE1\xBF\x92" => "\x{0399}\x{0308}\x{0300}", -"\xE1\xBF\x93" => "\x{0399}\x{0308}\x{0301}", -"\xE1\xBF\x96" => "\x{0399}\x{0342}", -"\xE1\xBF\x97" => "\x{0399}\x{0308}\x{0342}", -"\xE1\xBF\xA2" => "\x{03A5}\x{0308}\x{0300}", -"\xE1\xBF\xA3" => "\x{03A5}\x{0308}\x{0301}", -"\xE1\xBF\xA4" => "\x{03A1}\x{0313}", -"\xE1\xBF\xA6" => "\x{03A5}\x{0342}", -"\xE1\xBF\xA7" => "\x{03A5}\x{0308}\x{0342}", -"\xE1\xBF\xB2" => "\x{1FFA}\x{0345}", -"\xE1\xBF\xB3" => "\x{1FFC}", -"\xE1\xBF\xB4" => "\x{038F}\x{0345}", -"\xE1\xBF\xB6" => "\x{03A9}\x{0342}", -"\xE1\xBF\xB7" => "\x{03A9}\x{0342}\x{0345}", -"\xEF\xAC\x80" => "\x{0046}\x{0066}", -"\xEF\xAC\x81" => "\x{0046}\x{0069}", -"\xEF\xAC\x82" => "\x{0046}\x{006C}", -"\xEF\xAC\x83" => "\x{0046}\x{0066}\x{0069}", -"\xEF\xAC\x84" => "\x{0046}\x{0066}\x{006C}", -"\xEF\xAC\x85" => "\x{0053}\x{0074}", -"\xEF\xAC\x86" => "\x{0053}\x{0074}", -"\xEF\xAC\x93" => "\x{0544}\x{0576}", -"\xEF\xAC\x94" => "\x{0544}\x{0565}", -"\xEF\xAC\x95" => "\x{0544}\x{056B}", -"\xEF\xAC\x96" => "\x{054E}\x{0576}", -"\xEF\xAC\x97" => "\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 -019A 023D -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 -01C5 01C5 -01C6 01C5 -01C7 01C8 -01C8 01C8 -01C9 01C8 -01CA 01CB -01CB 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 -01F2 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 -023C 023B -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 -0294 0241 -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 03F9 -03F5 0395 -03F8 03F7 -03FB 03FA -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 -04F7 04F6 -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 -2C30 2C00 -2C31 2C01 -2C32 2C02 -2C33 2C03 -2C34 2C04 -2C35 2C05 -2C36 2C06 -2C37 2C07 -2C38 2C08 -2C39 2C09 -2C3A 2C0A -2C3B 2C0B -2C3C 2C0C -2C3D 2C0D -2C3E 2C0E -2C3F 2C0F -2C40 2C10 -2C41 2C11 -2C42 2C12 -2C43 2C13 -2C44 2C14 -2C45 2C15 -2C46 2C16 -2C47 2C17 -2C48 2C18 -2C49 2C19 -2C4A 2C1A -2C4B 2C1B -2C4C 2C1C -2C4D 2C1D -2C4E 2C1E -2C4F 2C1F -2C50 2C20 -2C51 2C21 -2C52 2C22 -2C53 2C23 -2C54 2C24 -2C55 2C25 -2C56 2C26 -2C57 2C27 -2C58 2C28 -2C59 2C29 -2C5A 2C2A -2C5B 2C2B -2C5C 2C2C -2C5D 2C2D -2C5E 2C2E -2C81 2C80 -2C83 2C82 -2C85 2C84 -2C87 2C86 -2C89 2C88 -2C8B 2C8A -2C8D 2C8C -2C8F 2C8E -2C91 2C90 -2C93 2C92 -2C95 2C94 -2C97 2C96 -2C99 2C98 -2C9B 2C9A -2C9D 2C9C -2C9F 2C9E -2CA1 2CA0 -2CA3 2CA2 -2CA5 2CA4 -2CA7 2CA6 -2CA9 2CA8 -2CAB 2CAA -2CAD 2CAC -2CAF 2CAE -2CB1 2CB0 -2CB3 2CB2 -2CB5 2CB4 -2CB7 2CB6 -2CB9 2CB8 -2CBB 2CBA -2CBD 2CBC -2CBF 2CBE -2CC1 2CC0 -2CC3 2CC2 -2CC5 2CC4 -2CC7 2CC6 -2CC9 2CC8 -2CCB 2CCA -2CCD 2CCC -2CCF 2CCE -2CD1 2CD0 -2CD3 2CD2 -2CD5 2CD4 -2CD7 2CD6 -2CD9 2CD8 -2CDB 2CDA -2CDD 2CDC -2CDF 2CDE -2CE1 2CE0 -2CE3 2CE2 -2D00 10A0 -2D01 10A1 -2D02 10A2 -2D03 10A3 -2D04 10A4 -2D05 10A5 -2D06 10A6 -2D07 10A7 -2D08 10A8 -2D09 10A9 -2D0A 10AA -2D0B 10AB -2D0C 10AC -2D0D 10AD -2D0E 10AE -2D0F 10AF -2D10 10B0 -2D11 10B1 -2D12 10B2 -2D13 10B3 -2D14 10B4 -2D15 10B5 -2D16 10B6 -2D17 10B7 -2D18 10B8 -2D19 10B9 -2D1A 10BA -2D1B 10BB -2D1C 10BC -2D1D 10BD -2D1E 10BE -2D1F 10BF -2D20 10C0 -2D21 10C1 -2D22 10C2 -2D23 10C3 -2D24 10C4 -2D25 10C5 -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 -1044E 10426 -1044F 10427 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/To/Upper.pl b/Master/tlpkg/tlperl.old/lib/unicore/To/Upper.pl deleted file mode 100644 index 6b1f3e29c47..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/To/Upper.pl +++ /dev/null @@ -1,989 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - - -# The key UTF-8 _bytes_, the value UTF-8 (speed hack) -%utf8::ToSpecUpper = -( -"\xC3\x9F" => "\x{0053}\x{0053}", -"\xC5\x89" => "\x{02BC}\x{004E}", -"\xC7\xB0" => "\x{004A}\x{030C}", -"\xCE\x90" => "\x{0399}\x{0308}\x{0301}", -"\xCE\xB0" => "\x{03A5}\x{0308}\x{0301}", -"\xD6\x87" => "\x{0535}\x{0552}", -"\xE1\xBA\x96" => "\x{0048}\x{0331}", -"\xE1\xBA\x97" => "\x{0054}\x{0308}", -"\xE1\xBA\x98" => "\x{0057}\x{030A}", -"\xE1\xBA\x99" => "\x{0059}\x{030A}", -"\xE1\xBA\x9A" => "\x{0041}\x{02BE}", -"\xE1\xBD\x90" => "\x{03A5}\x{0313}", -"\xE1\xBD\x92" => "\x{03A5}\x{0313}\x{0300}", -"\xE1\xBD\x94" => "\x{03A5}\x{0313}\x{0301}", -"\xE1\xBD\x96" => "\x{03A5}\x{0313}\x{0342}", -"\xE1\xBE\x80" => "\x{1F08}\x{0399}", -"\xE1\xBE\x81" => "\x{1F09}\x{0399}", -"\xE1\xBE\x82" => "\x{1F0A}\x{0399}", -"\xE1\xBE\x83" => "\x{1F0B}\x{0399}", -"\xE1\xBE\x84" => "\x{1F0C}\x{0399}", -"\xE1\xBE\x85" => "\x{1F0D}\x{0399}", -"\xE1\xBE\x86" => "\x{1F0E}\x{0399}", -"\xE1\xBE\x87" => "\x{1F0F}\x{0399}", -"\xE1\xBE\x88" => "\x{1F08}\x{0399}", -"\xE1\xBE\x89" => "\x{1F09}\x{0399}", -"\xE1\xBE\x8A" => "\x{1F0A}\x{0399}", -"\xE1\xBE\x8B" => "\x{1F0B}\x{0399}", -"\xE1\xBE\x8C" => "\x{1F0C}\x{0399}", -"\xE1\xBE\x8D" => "\x{1F0D}\x{0399}", -"\xE1\xBE\x8E" => "\x{1F0E}\x{0399}", -"\xE1\xBE\x8F" => "\x{1F0F}\x{0399}", -"\xE1\xBE\x90" => "\x{1F28}\x{0399}", -"\xE1\xBE\x91" => "\x{1F29}\x{0399}", -"\xE1\xBE\x92" => "\x{1F2A}\x{0399}", -"\xE1\xBE\x93" => "\x{1F2B}\x{0399}", -"\xE1\xBE\x94" => "\x{1F2C}\x{0399}", -"\xE1\xBE\x95" => "\x{1F2D}\x{0399}", -"\xE1\xBE\x96" => "\x{1F2E}\x{0399}", -"\xE1\xBE\x97" => "\x{1F2F}\x{0399}", -"\xE1\xBE\x98" => "\x{1F28}\x{0399}", -"\xE1\xBE\x99" => "\x{1F29}\x{0399}", -"\xE1\xBE\x9A" => "\x{1F2A}\x{0399}", -"\xE1\xBE\x9B" => "\x{1F2B}\x{0399}", -"\xE1\xBE\x9C" => "\x{1F2C}\x{0399}", -"\xE1\xBE\x9D" => "\x{1F2D}\x{0399}", -"\xE1\xBE\x9E" => "\x{1F2E}\x{0399}", -"\xE1\xBE\x9F" => "\x{1F2F}\x{0399}", -"\xE1\xBE\xA0" => "\x{1F68}\x{0399}", -"\xE1\xBE\xA1" => "\x{1F69}\x{0399}", -"\xE1\xBE\xA2" => "\x{1F6A}\x{0399}", -"\xE1\xBE\xA3" => "\x{1F6B}\x{0399}", -"\xE1\xBE\xA4" => "\x{1F6C}\x{0399}", -"\xE1\xBE\xA5" => "\x{1F6D}\x{0399}", -"\xE1\xBE\xA6" => "\x{1F6E}\x{0399}", -"\xE1\xBE\xA7" => "\x{1F6F}\x{0399}", -"\xE1\xBE\xA8" => "\x{1F68}\x{0399}", -"\xE1\xBE\xA9" => "\x{1F69}\x{0399}", -"\xE1\xBE\xAA" => "\x{1F6A}\x{0399}", -"\xE1\xBE\xAB" => "\x{1F6B}\x{0399}", -"\xE1\xBE\xAC" => "\x{1F6C}\x{0399}", -"\xE1\xBE\xAD" => "\x{1F6D}\x{0399}", -"\xE1\xBE\xAE" => "\x{1F6E}\x{0399}", -"\xE1\xBE\xAF" => "\x{1F6F}\x{0399}", -"\xE1\xBE\xB2" => "\x{1FBA}\x{0399}", -"\xE1\xBE\xB3" => "\x{0391}\x{0399}", -"\xE1\xBE\xB4" => "\x{0386}\x{0399}", -"\xE1\xBE\xB6" => "\x{0391}\x{0342}", -"\xE1\xBE\xB7" => "\x{0391}\x{0342}\x{0399}", -"\xE1\xBE\xBC" => "\x{0391}\x{0399}", -"\xE1\xBF\x82" => "\x{1FCA}\x{0399}", -"\xE1\xBF\x83" => "\x{0397}\x{0399}", -"\xE1\xBF\x84" => "\x{0389}\x{0399}", -"\xE1\xBF\x86" => "\x{0397}\x{0342}", -"\xE1\xBF\x87" => "\x{0397}\x{0342}\x{0399}", -"\xE1\xBF\x8C" => "\x{0397}\x{0399}", -"\xE1\xBF\x92" => "\x{0399}\x{0308}\x{0300}", -"\xE1\xBF\x93" => "\x{0399}\x{0308}\x{0301}", -"\xE1\xBF\x96" => "\x{0399}\x{0342}", -"\xE1\xBF\x97" => "\x{0399}\x{0308}\x{0342}", -"\xE1\xBF\xA2" => "\x{03A5}\x{0308}\x{0300}", -"\xE1\xBF\xA3" => "\x{03A5}\x{0308}\x{0301}", -"\xE1\xBF\xA4" => "\x{03A1}\x{0313}", -"\xE1\xBF\xA6" => "\x{03A5}\x{0342}", -"\xE1\xBF\xA7" => "\x{03A5}\x{0308}\x{0342}", -"\xE1\xBF\xB2" => "\x{1FFA}\x{0399}", -"\xE1\xBF\xB3" => "\x{03A9}\x{0399}", -"\xE1\xBF\xB4" => "\x{038F}\x{0399}", -"\xE1\xBF\xB6" => "\x{03A9}\x{0342}", -"\xE1\xBF\xB7" => "\x{03A9}\x{0342}\x{0399}", -"\xE1\xBF\xBC" => "\x{03A9}\x{0399}", -"\xEF\xAC\x80" => "\x{0046}\x{0046}", -"\xEF\xAC\x81" => "\x{0046}\x{0049}", -"\xEF\xAC\x82" => "\x{0046}\x{004C}", -"\xEF\xAC\x83" => "\x{0046}\x{0046}\x{0049}", -"\xEF\xAC\x84" => "\x{0046}\x{0046}\x{004C}", -"\xEF\xAC\x85" => "\x{0053}\x{0054}", -"\xEF\xAC\x86" => "\x{0053}\x{0054}", -"\xEF\xAC\x93" => "\x{0544}\x{0546}", -"\xEF\xAC\x94" => "\x{0544}\x{0535}", -"\xEF\xAC\x95" => "\x{0544}\x{053B}", -"\xEF\xAC\x96" => "\x{054E}\x{0546}", -"\xEF\xAC\x97" => "\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 -019A 023D -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 -023C 023B -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 -0294 0241 -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 03F9 -03F5 0395 -03F8 03F7 -03FB 03FA -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 -04F7 04F6 -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 -2C30 2C00 -2C31 2C01 -2C32 2C02 -2C33 2C03 -2C34 2C04 -2C35 2C05 -2C36 2C06 -2C37 2C07 -2C38 2C08 -2C39 2C09 -2C3A 2C0A -2C3B 2C0B -2C3C 2C0C -2C3D 2C0D -2C3E 2C0E -2C3F 2C0F -2C40 2C10 -2C41 2C11 -2C42 2C12 -2C43 2C13 -2C44 2C14 -2C45 2C15 -2C46 2C16 -2C47 2C17 -2C48 2C18 -2C49 2C19 -2C4A 2C1A -2C4B 2C1B -2C4C 2C1C -2C4D 2C1D -2C4E 2C1E -2C4F 2C1F -2C50 2C20 -2C51 2C21 -2C52 2C22 -2C53 2C23 -2C54 2C24 -2C55 2C25 -2C56 2C26 -2C57 2C27 -2C58 2C28 -2C59 2C29 -2C5A 2C2A -2C5B 2C2B -2C5C 2C2C -2C5D 2C2D -2C5E 2C2E -2C81 2C80 -2C83 2C82 -2C85 2C84 -2C87 2C86 -2C89 2C88 -2C8B 2C8A -2C8D 2C8C -2C8F 2C8E -2C91 2C90 -2C93 2C92 -2C95 2C94 -2C97 2C96 -2C99 2C98 -2C9B 2C9A -2C9D 2C9C -2C9F 2C9E -2CA1 2CA0 -2CA3 2CA2 -2CA5 2CA4 -2CA7 2CA6 -2CA9 2CA8 -2CAB 2CAA -2CAD 2CAC -2CAF 2CAE -2CB1 2CB0 -2CB3 2CB2 -2CB5 2CB4 -2CB7 2CB6 -2CB9 2CB8 -2CBB 2CBA -2CBD 2CBC -2CBF 2CBE -2CC1 2CC0 -2CC3 2CC2 -2CC5 2CC4 -2CC7 2CC6 -2CC9 2CC8 -2CCB 2CCA -2CCD 2CCC -2CCF 2CCE -2CD1 2CD0 -2CD3 2CD2 -2CD5 2CD4 -2CD7 2CD6 -2CD9 2CD8 -2CDB 2CDA -2CDD 2CDC -2CDF 2CDE -2CE1 2CE0 -2CE3 2CE2 -2D00 10A0 -2D01 10A1 -2D02 10A2 -2D03 10A3 -2D04 10A4 -2D05 10A5 -2D06 10A6 -2D07 10A7 -2D08 10A8 -2D09 10A9 -2D0A 10AA -2D0B 10AB -2D0C 10AC -2D0D 10AD -2D0E 10AE -2D0F 10AF -2D10 10B0 -2D11 10B1 -2D12 10B2 -2D13 10B3 -2D14 10B4 -2D15 10B5 -2D16 10B6 -2D17 10B7 -2D18 10B8 -2D19 10B9 -2D1A 10BA -2D1B 10BB -2D1C 10BC -2D1D 10BD -2D1E 10BE -2D1F 10BF -2D20 10C0 -2D21 10C1 -2D22 10C2 -2D23 10C3 -2D24 10C4 -2D25 10C5 -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 -1044E 10426 -1044F 10427 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/UnicodeData.txt b/Master/tlpkg/tlperl.old/lib/unicore/UnicodeData.txt deleted file mode 100644 index f314186b29c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/UnicodeData.txt +++ /dev/null @@ -1,16351 +0,0 @@ -0000;<control>;Cc;0;BN;;;;;N;NULL;;;; -0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;; -0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;; -0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;; -0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;; -0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;; -0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;; -0007;<control>;Cc;0;BN;;;;;N;BELL;;;; -0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;; -0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;; -000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;; -000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;; -000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;; -000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;; -000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;; -000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;; -0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;; -0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;; -0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;; -0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;; -0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;; -0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;; -0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;; -0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;; -0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;; -0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;; -001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;; -001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;; -001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;; -001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;; -001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;; -001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;; -0020;SPACE;Zs;0;WS;;;;;N;;;;; -0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;; -0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;; -0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;; -0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;; -0026;AMPERSAND;Po;0;ON;;;;;N;;;;; -0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;; -0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;; -0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;; -002A;ASTERISK;Po;0;ON;;;;;N;;;;; -002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;; -002C;COMMA;Po;0;CS;;;;;N;;;;; -002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;; -002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;; -002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;; -0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;; -0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;; -0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;; -0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;; -0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;; -0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;; -0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;; -0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;; -0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;; -0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;; -003A;COLON;Po;0;CS;;;;;N;;;;; -003B;SEMICOLON;Po;0;ON;;;;;N;;;;; -003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;; -003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;; -003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;; -003F;QUESTION MARK;Po;0;ON;;;;;N;;;;; -0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;; -0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061; -0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062; -0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063; -0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064; -0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065; -0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066; -0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067; -0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068; -0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069; -004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A; -004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B; -004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C; -004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D; -004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E; -004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F; -0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070; -0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071; -0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072; -0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073; -0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074; -0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075; -0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076; -0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077; -0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078; -0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079; -005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A; -005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;; -005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;; -005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;; -005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;; -005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;; -0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;; -0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041 -0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042 -0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043 -0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044 -0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045 -0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046 -0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047 -0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048 -0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049 -006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A -006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B -006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C -006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D -006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E -006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F -0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050 -0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051 -0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052 -0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053 -0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054 -0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055 -0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056 -0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057 -0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058 -0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059 -007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A -007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;; -007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;; -007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;; -007E;TILDE;Sm;0;ON;;;;;N;;;;; -007F;<control>;Cc;0;BN;;;;;N;DELETE;;;; -0080;<control>;Cc;0;BN;;;;;N;;;;; -0081;<control>;Cc;0;BN;;;;;N;;;;; -0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;; -0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;; -0084;<control>;Cc;0;BN;;;;;N;;;;; -0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;; -0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;; -0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;; -0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;; -0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;; -008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;; -008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;; -008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;; -008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;; -008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;; -008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;; -0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;; -0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;; -0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;; -0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;; -0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;; -0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;; -0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;; -0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;; -0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;; -0099;<control>;Cc;0;BN;;;;;N;;;;; -009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;; -009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;; -009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;; -009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;; -009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;; -009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;; -00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;; -00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;; -00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;; -00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; -00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;; -00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;; -00A7;SECTION SIGN;So;0;ON;;;;;N;;;;; -00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;; -00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;; -00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;; -00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;; -00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;; -00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;; -00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;; -00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;; -00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;; -00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;; -00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;; -00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;; -00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;; -00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C -00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;; -00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;; -00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;; -00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;; -00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;; -00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;; -00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;; -00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;; -00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;; -00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;; -00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0; -00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1; -00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2; -00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3; -00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4; -00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5; -00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6; -00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7; -00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8; -00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9; -00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA; -00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB; -00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC; -00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED; -00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE; -00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF; -00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0; -00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1; -00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2; -00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3; -00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4; -00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5; -00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6; -00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;; -00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8; -00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9; -00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA; -00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB; -00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC; -00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD; -00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE; -00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;; -00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0 -00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1 -00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2 -00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3 -00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4 -00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5 -00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6 -00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7 -00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8 -00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9 -00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA -00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB -00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC -00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD -00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE -00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF -00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0 -00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1 -00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2 -00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3 -00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4 -00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5 -00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6 -00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;; -00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8 -00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9 -00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA -00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB -00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC -00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD -00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE -00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178 -0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101; -0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100 -0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103; -0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102 -0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105; -0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104 -0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107; -0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106 -0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109; -0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108 -010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B; -010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A -010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D; -010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C -010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F; -010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E -0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111; -0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110 -0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113; -0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112 -0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115; -0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114 -0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117; -0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116 -0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119; -0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118 -011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B; -011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A -011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D; -011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C -011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F; -011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E -0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121; -0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120 -0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123; -0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122 -0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125; -0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124 -0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127; -0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126 -0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129; -0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128 -012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B; -012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A -012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D; -012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C -012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F; -012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E -0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069; -0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049 -0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133; -0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132 -0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135; -0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134 -0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137; -0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136 -0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;; -0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A; -013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139 -013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C; -013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B -013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E; -013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D -013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140; -0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F -0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142; -0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141 -0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144; -0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143 -0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146; -0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145 -0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148; -0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147 -0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;; -014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B; -014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A -014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D; -014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C -014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F; -014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E -0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151; -0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150 -0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153; -0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152 -0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155; -0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154 -0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157; -0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156 -0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159; -0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158 -015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B; -015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A -015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D; -015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C -015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F; -015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E -0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161; -0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160 -0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163; -0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162 -0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165; -0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164 -0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167; -0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166 -0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169; -0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168 -016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B; -016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A -016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D; -016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C -016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F; -016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E -0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171; -0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170 -0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173; -0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172 -0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175; -0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174 -0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177; -0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176 -0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF; -0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A; -017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179 -017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C; -017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B -017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E; -017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D -017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053 -0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;;; -0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253; -0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183; -0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182 -0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185; -0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184 -0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254; -0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188; -0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187 -0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256; -018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257; -018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C; -018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B -018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;; -018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD; -018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259; -0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B; -0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192; -0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191 -0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260; -0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263; -0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6 -0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269; -0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268; -0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199; -0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198 -019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D -019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;; -019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F; -019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272; -019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220 -019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275; -01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1; -01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0 -01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3; -01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2 -01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5; -01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4 -01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280; -01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8; -01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7 -01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283; -01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;; -01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;; -01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD; -01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC -01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288; -01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0; -01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF -01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A; -01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B; -01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4; -01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3 -01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6; -01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5 -01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292; -01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9; -01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8 -01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;; -01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;; -01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD; -01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC -01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;; -01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7 -01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;; -01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;; -01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;; -01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;; -01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5 -01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5 -01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5 -01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8 -01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8 -01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8 -01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB -01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB -01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB -01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE; -01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD -01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0; -01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF -01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2; -01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1 -01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4; -01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3 -01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6; -01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5 -01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8; -01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7 -01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA; -01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9 -01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC; -01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB -01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E -01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF; -01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE -01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1; -01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0 -01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3; -01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2 -01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5; -01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4 -01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7; -01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6 -01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9; -01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8 -01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB; -01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA -01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED; -01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC -01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF; -01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE -01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;; -01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2 -01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;01F2 -01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2 -01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5; -01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4 -01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195; -01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF; -01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9; -01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8 -01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB; -01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA -01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD; -01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC -01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF; -01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE -0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201; -0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200 -0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203; -0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202 -0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205; -0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204 -0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207; -0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206 -0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209; -0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208 -020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B; -020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A -020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D; -020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C -020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F; -020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E -0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211; -0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210 -0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213; -0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212 -0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215; -0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214 -0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217; -0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216 -0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219; -0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218 -021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B; -021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A -021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D; -021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C -021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F; -021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E -0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E; -0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;; -0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223; -0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222 -0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225; -0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224 -0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227; -0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226 -0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229; -0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228 -022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B; -022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A -022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D; -022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C -022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F; -022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E -0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231; -0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230 -0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233; -0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232 -0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;; -0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;; -0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;; -0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;; -0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;; -0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;; -023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;; -023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C; -023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B -023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A; -023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;; -023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;;; -0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;;; -0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0294; -0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;; -0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;; -0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;; -0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181 -0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186 -0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;; -0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189 -0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A -0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;; -0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F -025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;; -025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190 -025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;; -025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;; -025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;; -025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;; -0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193 -0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;; -0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;; -0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194 -0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;; -0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;; -0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;; -0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;; -0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197 -0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196 -026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;; -026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;; -026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;; -026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;; -026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C -0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;; -0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;; -0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D -0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;; -0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;; -0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F -0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;; -0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;; -0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;; -0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;; -027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;; -027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;; -027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;; -027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;;; -027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;; -027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;; -0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6 -0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;; -0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;; -0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9 -0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;; -0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;; -0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;; -0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;; -0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE -0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;;; -028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1 -028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2 -028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;;; -028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;; -028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;; -028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;; -0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;; -0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;; -0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7 -0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;; -0294;LATIN LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241 -0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;; -0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;; -0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;; -0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;; -0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;; -029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;; -029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;; -029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;; -029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;; -029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;; -029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;; -02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;; -02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;; -02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;; -02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;; -02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;; -02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;; -02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;; -02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;; -02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;; -02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;; -02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;; -02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;; -02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; -02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; -02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;; -02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;; -02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;; -02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;; -02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;; -02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;; -02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;; -02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;; -02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;; -02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;; -02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;; -02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;; -02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;; -02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;; -02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;; -02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;; -02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;; -02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; -02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;; -02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;; -02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;; -02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;; -02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;; -02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;Mandarin Chinese first tone;;; -02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;; -02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;; -02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;; -02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;; -02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;; -02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;; -02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; -02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; -02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;; -02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;; -02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;; -02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;; -02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;; -02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;; -02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;; -02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;; -02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;; -02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;; -02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;; -02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;; -02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;; -02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;; -02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;; -02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;; -02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;; -02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;; -02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;; -02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; -02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; -02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;; -02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;; -02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;; -02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; -02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; -02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;; -02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;; -02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;; -02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;; -02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; -02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; -02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;; -02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;; -02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;; -02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;; -02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;; -02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;; -02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;; -02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;; -02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;; -02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;; -0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;; -0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;; -0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;; -0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;; -0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;; -0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;; -0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;; -0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;; -0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;; -0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;; -030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;; -030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;; -030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;; -030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;; -030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;; -030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;; -0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;; -0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;; -0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;; -0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;; -0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;; -0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;; -0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;; -0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;; -0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;; -0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;; -031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;; -031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;; -031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;; -031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;; -031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;; -031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;; -0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;; -0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;; -0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;; -0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;; -0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;; -0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;; -0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;; -0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;; -0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;; -0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;; -032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;; -032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;; -032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;; -032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;; -032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;; -032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;; -0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;; -0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;; -0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;; -0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;; -0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;; -0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;; -0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;; -0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;; -0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;; -0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;; -033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;; -033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;; -033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;; -033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;; -033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;; -033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;; -0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;; -0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;; -0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;; -0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;; -0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;; -0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399 -0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; -0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;; -0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;; -0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;; -034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;; -034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;; -034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;; -034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;; -0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; -0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; -0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;; -0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;; -0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; -0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;; -0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;; -035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; -035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;; -035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;; -035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;; -035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;; -035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;; -0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;; -0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;; -0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;; -0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;; -0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;; -0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;; -0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;; -0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;; -0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;; -0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;; -036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;; -036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;; -036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;; -036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;; -036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;; -036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;; -0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;; -0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;; -037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;; -037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;; -0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;; -0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;; -0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC; -0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;; -0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD; -0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE; -038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF; -038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC; -038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD; -038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE; -0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;; -0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1; -0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2; -0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3; -0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4; -0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5; -0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6; -0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7; -0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8; -0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9; -039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA; -039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB; -039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC; -039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD; -039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE; -039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF; -03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0; -03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1; -03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3; -03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4; -03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5; -03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6; -03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7; -03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8; -03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9; -03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA; -03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB; -03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386 -03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388 -03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389 -03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A -03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;; -03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391 -03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392 -03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393 -03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394 -03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395 -03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396 -03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397 -03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398 -03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399 -03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A -03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B -03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C -03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D -03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E -03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F -03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0 -03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1 -03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 -03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 -03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4 -03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5 -03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6 -03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7 -03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8 -03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9 -03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA -03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB -03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C -03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E -03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F -03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392 -03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398 -03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;; -03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;; -03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;; -03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6 -03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0 -03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;; -03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9; -03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8 -03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB; -03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA -03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD; -03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC -03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF; -03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE -03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1; -03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0 -03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3; -03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2 -03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5; -03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4 -03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7; -03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6 -03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9; -03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8 -03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB; -03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA -03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED; -03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC -03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF; -03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE -03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A -03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1 -03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9 -03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;; -03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8; -03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395 -03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;; -03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8; -03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7 -03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L;<compat> 03A3;;;;N;;;;03F2; -03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB; -03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA -03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;; -03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;; -03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;; -03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;; -0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450; -0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451; -0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452; -0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453; -0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454; -0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455; -0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456; -0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457; -0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458; -0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459; -040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A; -040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B; -040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C; -040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D; -040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E; -040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F; -0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430; -0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431; -0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432; -0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433; -0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434; -0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435; -0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436; -0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437; -0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438; -0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439; -041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A; -041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B; -041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C; -041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D; -041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E; -041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F; -0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440; -0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441; -0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442; -0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443; -0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444; -0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445; -0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446; -0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447; -0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448; -0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449; -042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A; -042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B; -042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C; -042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D; -042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E; -042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F; -0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410 -0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411 -0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412 -0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413 -0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414 -0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415 -0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416 -0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417 -0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418 -0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419 -043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A -043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B -043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C -043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D -043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E -043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F -0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420 -0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421 -0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422 -0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423 -0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424 -0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425 -0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426 -0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427 -0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428 -0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429 -044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A -044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B -044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C -044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D -044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E -044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F -0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400 -0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401 -0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402 -0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403 -0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404 -0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405 -0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406 -0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407 -0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408 -0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409 -045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A -045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B -045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C -045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D -045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E -045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F -0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461; -0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460 -0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463; -0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462 -0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465; -0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464 -0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467; -0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466 -0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469; -0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468 -046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B; -046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A -046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D; -046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C -046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F; -046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E -0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471; -0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470 -0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473; -0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472 -0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475; -0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474 -0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477; -0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476 -0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479; -0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478 -047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B; -047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A -047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D; -047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C -047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F; -047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E -0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481; -0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480 -0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;; -0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;; -0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;; -0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;; -0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;; -0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;; -0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; -048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B; -048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A -048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D; -048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C -048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F; -048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E -0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491; -0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490 -0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493; -0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492 -0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495; -0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494 -0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497; -0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496 -0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499; -0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498 -049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B; -049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A -049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D; -049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C -049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F; -049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E -04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1; -04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0 -04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3; -04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2 -04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5; -04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4 -04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7; -04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6 -04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9; -04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8 -04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB; -04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA -04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD; -04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC -04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF; -04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE -04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1; -04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0 -04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3; -04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2 -04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5; -04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4 -04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7; -04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6 -04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9; -04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8 -04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB; -04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA -04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD; -04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC -04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF; -04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE -04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;; -04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2; -04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1 -04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4; -04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3 -04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6; -04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5 -04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8; -04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7 -04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA; -04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9 -04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC; -04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB -04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE; -04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD -04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1; -04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0 -04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3; -04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2 -04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5; -04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4 -04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7; -04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6 -04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9; -04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8 -04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB; -04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA -04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD; -04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC -04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF; -04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE -04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1; -04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0 -04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3; -04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2 -04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5; -04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4 -04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7; -04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6 -04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9; -04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8 -04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB; -04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA -04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED; -04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC -04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF; -04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE -04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1; -04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0 -04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3; -04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2 -04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5; -04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4 -04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7; -04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6 -04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9; -04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8 -0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501; -0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500 -0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503; -0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502 -0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505; -0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504 -0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507; -0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506 -0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509; -0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508 -050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B; -050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A -050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D; -050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C -050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F; -050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E -0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561; -0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562; -0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563; -0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564; -0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565; -0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566; -0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567; -0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568; -0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569; -053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A; -053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B; -053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C; -053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D; -053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E; -053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F; -0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570; -0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571; -0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572; -0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573; -0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574; -0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575; -0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576; -0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577; -0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578; -0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579; -054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A; -054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B; -054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C; -054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D; -054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E; -054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F; -0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580; -0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581; -0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582; -0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583; -0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584; -0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585; -0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586; -0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; -055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;; -055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;; -055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;; -055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;; -055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;; -055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;; -0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531 -0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532 -0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533 -0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534 -0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535 -0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536 -0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537 -0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538 -0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539 -056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A -056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B -056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C -056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D -056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E -056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F -0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540 -0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541 -0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542 -0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543 -0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544 -0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545 -0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546 -0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547 -0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548 -0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549 -057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A -057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B -057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C -057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D -057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E -057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F -0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550 -0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551 -0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552 -0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553 -0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554 -0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555 -0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556 -0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;; -0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;; -058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;; -0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;; -0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;; -0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;; -0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;; -0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;; -0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;; -0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;; -0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;; -0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;; -059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;; -059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;; -059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;; -059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;; -059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;; -059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;; -05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;; -05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;; -05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;; -05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;; -05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;; -05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;; -05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;; -05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;; -05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;; -05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;; -05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;; -05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;; -05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;; -05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;; -05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;; -05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;; -05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;; -05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;; -05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;; -05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;; -05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;; -05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;; -05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;; -05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;; -05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;; -05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;; -05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;; -05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;; -05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;; -05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;; -05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;; -05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;; -05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;; -05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;; -05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;; -05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;; -05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;; -05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;; -05C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;; -05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;; -05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;; -05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;; -05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;; -05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;; -05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;; -05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;; -05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;; -05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;; -05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;; -05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;; -05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;; -05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;; -05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;; -05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;; -05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;; -05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;; -05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;; -05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;; -05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;; -05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;; -05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;; -05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;; -05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;; -05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;; -05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;; -05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;; -05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;; -05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;; -05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;; -05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;; -05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;; -0600;ARABIC NUMBER SIGN;Cf;0;AL;;;;;N;;;;; -0601;ARABIC SIGN SANAH;Cf;0;AL;;;;;N;;;;; -0602;ARABIC FOOTNOTE MARKER;Cf;0;AL;;;;;N;;;;; -0603;ARABIC SIGN SAFHA;Cf;0;AL;;;;;N;;;;; -060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;; -060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;; -060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;; -060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;; -060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;; -0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;; -0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;; -0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;; -0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;; -0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;; -0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;; -061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; -061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;; -061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; -0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;; -0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;; -0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;; -0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;; -0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;; -0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;; -0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;; -0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;; -0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;; -062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;; -062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;; -062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;; -062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;; -062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;; -062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;; -0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;; -0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;; -0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; -0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;; -0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;; -0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;; -0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;; -0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;; -0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;; -0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;; -063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;; -0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;; -0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;; -0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;; -0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;; -0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;; -0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;; -0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;; -0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;; -0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;; -0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;; -064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;; -064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;; -064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;; -064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;; -064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;; -064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;; -0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;; -0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;; -0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;; -0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;; -0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;; -0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;; -0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;; -0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;; -0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;; -0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;; -065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; -065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; -065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; -065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;; -065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;; -0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;; -0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;; -0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;; -0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;; -0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;; -0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;; -0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;; -0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;; -0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;; -0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;; -066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;; -066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;; -066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;; -066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;; -066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;; -066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;; -0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;; -0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;; -0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;; -0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;; -0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;; -0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;; -0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;; -0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;; -0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;; -0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;; -067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;; -067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;; -067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;; -067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;; -067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;; -067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;; -0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;; -0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;; -0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;; -0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;; -0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;; -0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;; -0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;; -0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;; -0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;; -0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;; -068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; -068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;; -068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;; -068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;; -068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;; -0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;; -0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;; -0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;; -0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;; -0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;; -0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;; -0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;; -0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;; -0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;; -069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; -069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; -069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;; -06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;; -06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;; -06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;; -06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;; -06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;; -06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;; -06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;; -06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;; -06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;; -06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;; -06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;; -06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;; -06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;; -06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;; -06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;; -06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;; -06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; -06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;; -06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;; -06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;; -06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;; -06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;; -06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;; -06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;; -06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;; -06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;; -06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;; -06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;; -06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;; -06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;; -06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;; -06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;; -06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;; -06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;; -06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;; -06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;; -06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;; -06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;; -06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;; -06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;; -06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;; -06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; -06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; -06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;; -06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;; -06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;; -06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;; -06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;; -06DD;ARABIC END OF AYAH;Cf;0;AL;;;;;N;;;;; -06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;; -06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;; -06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;; -06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;; -06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;; -06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;; -06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;; -06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;; -06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;; -06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;; -06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;; -06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;; -06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;; -06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;; -06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;; -06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;; -06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;; -06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;; -06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;; -06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;; -06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;; -06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;; -06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;; -06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;; -06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;; -06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;; -06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;; -06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;; -06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;; -0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;; -0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;; -0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;; -0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;; -0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;; -0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; -0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; -0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; -0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; -070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;; -070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;; -070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;; -070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;; -070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;; -0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;; -0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;; -0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;; -0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;; -0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;; -0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;; -0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;; -0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;; -0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;; -0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; -071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;; -071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;; -071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;; -071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;; -071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;; -071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;; -0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;; -0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;; -0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;; -0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;; -0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;; -0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;; -0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;; -0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;; -0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;; -0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;; -072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;; -072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;; -072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;; -072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;; -072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;; -072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;; -0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;; -0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;; -0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;; -0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;; -0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;; -0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;; -0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;; -0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;; -0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;; -0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;; -073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;; -073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;; -073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;; -073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;; -073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;; -073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;; -0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;; -0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;; -0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;; -0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; -0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;; -0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; -0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;; -0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;; -0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;; -0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;; -074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;; -074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;; -074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;; -074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;; -0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;; -0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; -0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; -0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; -0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; -075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; -075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;; -075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;; -075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; -0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;; -0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;; -076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;; -076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; -076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;; -076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; -0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;; -0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;; -0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;; -0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;; -0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;; -0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;; -0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;; -0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;; -0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;; -0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;; -078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;; -078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;; -078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;; -078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;; -078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;; -078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;; -0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;; -0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;; -0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;; -0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;; -0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;; -0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;; -0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;; -0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;; -0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;; -0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;; -079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;; -079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;; -079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;; -079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;; -079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;; -079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;; -07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;; -07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;; -07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;; -07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;; -07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;; -07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;; -07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;; -07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;; -07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;; -07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;; -07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;; -07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;; -07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;; -07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;; -07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;; -07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;; -07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;; -07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;; -0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;; -0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;; -0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;; -0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;; -0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;; -0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;; -090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;; -090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;; -090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;; -090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;; -0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;; -0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;; -0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;; -0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;; -0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;; -0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;; -0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;; -0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;; -0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;; -0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;; -091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;; -091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;; -091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;; -091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;; -091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;; -091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;; -0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;; -0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;; -0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;; -0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;; -0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;; -0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;; -0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;; -0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;; -0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;; -0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;; -092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;; -092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;; -092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;; -092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;; -092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;; -092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;; -0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;; -0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;; -0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;; -0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;; -0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;; -0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;; -0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;; -0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;; -0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;; -0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;; -093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; -0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;; -0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; -094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;; -094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;; -0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;; -0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;; -0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; -0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; -0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;; -0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;; -095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;; -095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;; -095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;; -095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;; -095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;; -095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;; -0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;; -0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;; -0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; -097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; -0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;; -0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;; -0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;; -0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;; -0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;; -098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;; -098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;; -0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;; -0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;; -0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;; -0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;; -0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;; -0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;; -0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;; -0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;; -099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;; -099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;; -099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;; -099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;; -099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;; -099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;; -09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;; -09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;; -09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;; -09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;; -09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;; -09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;; -09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;; -09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;; -09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;; -09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;; -09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;; -09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;; -09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;; -09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;; -09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;; -09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;; -09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;; -09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;; -09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;; -09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;; -09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;; -09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;; -09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;; -09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;; -09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;; -09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;; -09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;; -09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;; -09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;; -09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;; -09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; -09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;; -09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;; -09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;; -09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;; -09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;; -09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;; -09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;; -0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;; -0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;; -0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;; -0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;; -0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;; -0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;; -0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;; -0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;; -0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;; -0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;; -0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;; -0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;; -0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;; -0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;; -0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;; -0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;; -0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;; -0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;; -0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;; -0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;; -0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;; -0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;; -0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;; -0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;; -0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;; -0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;; -0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;; -0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;; -0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;; -0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;; -0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;; -0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;; -0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;; -0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;; -0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;; -0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;; -0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;; -0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;; -0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;; -0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;; -0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;; -0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;; -0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;; -0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;; -0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;; -0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; -0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; -0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;; -0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;; -0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;; -0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;; -0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;; -0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;; -0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;; -0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;; -0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;; -0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;; -0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;; -0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;; -0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;; -0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;; -0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;; -0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;; -0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;; -0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;; -0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;; -0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;; -0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;; -0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;; -0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;; -0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;; -0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;; -0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;; -0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;; -0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;; -0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;; -0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;; -0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;; -0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;; -0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;; -0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;; -0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;; -0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;; -0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;; -0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;; -0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;; -0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;; -0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;; -0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;; -0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;; -0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;; -0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;; -0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;; -0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;; -0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;; -0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;; -0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;; -0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;; -0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;; -0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;; -0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;; -0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;; -0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;; -0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; -0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; -0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;; -0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; -0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;; -0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;; -0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;; -0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;; -0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;; -0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;; -0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;; -0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;; -0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;; -0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;; -0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;; -0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;; -0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;; -0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;; -0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;; -0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;; -0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;; -0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;; -0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;; -0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;; -0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;; -0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;; -0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;; -0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;; -0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;; -0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;; -0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;; -0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;; -0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;; -0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;; -0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;; -0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;; -0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;; -0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;; -0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;; -0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;; -0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;; -0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;; -0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;; -0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;; -0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;; -0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;; -0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;; -0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;; -0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;; -0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;; -0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;; -0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;; -0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;; -0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;; -0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;; -0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;; -0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;; -0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;; -0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;; -0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;; -0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;; -0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;; -0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;; -0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;; -0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;; -0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;; -0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;; -0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;; -0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;; -0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;; -0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;; -0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;; -0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;; -0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;; -0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;; -0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;; -0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;; -0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;; -0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;; -0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;; -0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;; -0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;; -0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;; -0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;; -0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;; -0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;; -0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;; -0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;; -0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;; -0BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;; -0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;; -0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;; -0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;; -0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;; -0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;; -0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;; -0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;; -0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; -0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; -0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;Naal;;; -0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;Maatham;;; -0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;Varudam;;; -0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;Patru;;; -0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;Varavu;;; -0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;Merpadi;;; -0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;Rupai;;; -0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;Enn;;; -0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;; -0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;; -0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;; -0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;; -0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;; -0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;; -0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;; -0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;; -0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;; -0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;; -0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;; -0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;; -0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;; -0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;; -0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;; -0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;; -0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;; -0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;; -0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;; -0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;; -0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;; -0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;; -0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;; -0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;; -0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;; -0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;; -0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;; -0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;; -0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;; -0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;; -0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;; -0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;; -0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;; -0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;; -0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;; -0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;; -0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;; -0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;; -0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;; -0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;; -0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;; -0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;; -0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;; -0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;; -0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;; -0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;; -0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;; -0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;; -0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; -0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; -0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;; -0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; -0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;; -0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;; -0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;; -0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;; -0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;; -0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;; -0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;; -0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;; -0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;; -0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;; -0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;; -0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;; -0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;; -0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;; -0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;; -0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;; -0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;; -0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;; -0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;; -0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;; -0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;; -0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;; -0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;; -0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;; -0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;; -0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;; -0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;; -0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;; -0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;; -0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;; -0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;; -0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;; -0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;; -0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;; -0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;; -0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;; -0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;; -0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;; -0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;; -0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;; -0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;; -0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;; -0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;; -0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;; -0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;; -0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;; -0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;; -0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;; -0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;; -0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;; -0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;; -0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;; -0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;; -0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;; -0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;; -0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;; -0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;; -0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;; -0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;; -0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;; -0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;; -0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;; -0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;; -0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;; -0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;; -0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;; -0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;; -0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;; -0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;; -0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;; -0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;; -0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;; -0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;; -0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;; -0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;; -0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;; -0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;; -0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;; -0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;; -0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;; -0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;; -0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;; -0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;; -0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;; -0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;; -0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;; -0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;; -0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;; -0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;; -0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;; -0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;; -0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;; -0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;; -0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;; -0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;; -0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;; -0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;; -0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;; -0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;; -0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;; -0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;; -0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;; -0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;; -0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;; -0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;; -0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;; -0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;; -0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;; -0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;; -0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;; -0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;; -0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;; -0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;; -0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;; -0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;; -0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;; -0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;; -0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;; -0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;; -0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;; -0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;; -0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;; -0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;; -0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;; -0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;; -0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;; -0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;; -0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;; -0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;; -0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;; -0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; -0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; -0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; -0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; -0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; -0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;; -0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; -0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; -0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; -0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; -0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; -0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;; -0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;; -0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; -0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; -0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; -0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; -0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;; -0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;; -0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; -0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; -0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; -0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; -0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;; -0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;; -0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; -0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; -0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; -0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; -0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;; -0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;; -0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;; -0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;; -0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;; -0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;; -0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;; -0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;; -0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;; -0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;; -0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;; -0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;; -0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;; -0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;; -0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;; -0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;; -0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;; -0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;; -0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;; -0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;; -0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;; -0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;; -0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;; -0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;; -0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;; -0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;; -0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;; -0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;; -0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;; -0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;; -0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;; -0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;; -0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;; -0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;; -0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;; -0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;; -0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;; -0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;; -0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;; -0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;; -0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;; -0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;; -0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;; -0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;; -0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;; -0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;; -0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;; -0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;; -0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;; -0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;; -0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;; -0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;; -0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;; -0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;; -0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;; -0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;; -0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;; -0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;; -0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;; -0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;; -0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;; -0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;; -0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;; -0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;; -0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;; -0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;; -0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;; -0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;; -0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;; -0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;; -0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;; -0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;; -0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;; -0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;; -0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;; -0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;; -0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;; -0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;; -0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;; -0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;; -0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;; -0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;; -0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;; -0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;; -0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;; -0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;; -0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;; -0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;; -0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;; -0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;; -0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;; -0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;; -0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;; -0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;; -0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;; -0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;; -0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;; -0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;; -0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;; -0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;; -0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;; -0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;; -0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;; -0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;; -0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;; -0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;; -0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;; -0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;; -0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;; -0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;; -0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;; -0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;; -0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;; -0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;; -0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;; -0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;; -0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;; -0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;; -0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;; -0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;; -0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;; -0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;; -0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;; -0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;; -0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;; -0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;; -0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;; -0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;; -0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;; -0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;; -0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;; -0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;; -0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;; -0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;; -0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;; -0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;; -0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; -0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; -0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;; -0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;; -0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;; -0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;; -0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;; -0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;; -0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;; -0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;; -0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;; -0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;; -0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;; -0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;; -0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;; -0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;; -0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;; -0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;; -0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;; -0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;; -0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;; -0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;; -0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;; -0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;; -0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;; -0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;; -0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;; -0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;; -0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;; -0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;; -0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;; -0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;; -0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;; -0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;; -0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;; -0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;; -0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;; -0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;; -0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;; -0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;; -0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;; -0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;; -0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;; -0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;; -0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;; -0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;; -0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;; -0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;; -0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;; -0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;; -0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;; -0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;; -0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;; -0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;; -0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;; -0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;; -0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;; -0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;; -0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;; -0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;; -0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;; -0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;; -0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;; -0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;; -0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;; -0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;; -0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;; -0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;; -0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;; -0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;; -0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;; -0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;; -0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;TIBETAN RIGHT BRACE;ang kang ye;;; -0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;; -0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;; -0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;; -0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;; -0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;; -0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;; -0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;; -0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;; -0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;; -0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;; -0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;; -0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;; -0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;; -0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;; -0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;; -0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;; -0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;; -0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;; -0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;; -0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;; -0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;; -0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;; -0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;; -0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;; -0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;; -0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;; -0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;; -0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;; -0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;; -0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;; -0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;; -0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;; -0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;; -0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;; -0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;; -0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;; -0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;; -0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;; -0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;; -0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;; -0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;; -0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;; -0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;; -0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;; -0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;; -0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;; -0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;; -0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;; -0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;; -0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;; -0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;; -0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;; -0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;; -0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;; -0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;; -0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;; -0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;; -0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;; -0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;; -0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;; -0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;; -0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;; -0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;; -0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;; -0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;; -0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;; -0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;; -0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;; -0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;; -0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;; -0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;; -0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;; -0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;; -0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;; -0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;; -0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;; -0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;; -0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;; -0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;; -0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;; -0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;; -0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;; -0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;; -0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;; -0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;; -0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;; -0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;; -0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;; -0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;; -0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;; -0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;; -0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;; -0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;; -0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;; -0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;; -0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;; -0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;; -0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;; -0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;; -0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;; -0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;; -0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;; -0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;; -0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;; -0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;; -0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;; -0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;; -0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;; -0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;; -0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;; -0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;; -0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;; -0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;; -0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;; -0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;; -0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;; -0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;; -0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;; -0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;; -0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;; -0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;; -0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;; -0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;; -0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;; -0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;; -0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;; -0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;; -0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;; -0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;; -0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;; -0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;; -0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;ka shog gi go gyen;;; -0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;nyam yig gi go gyen;;; -1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;; -1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;; -1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;; -1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;; -1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;; -1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;; -1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;; -1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;; -1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;; -1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;; -100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;; -100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;; -100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;; -100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;; -100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;; -100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;; -1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;; -1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;; -1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;; -1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;; -1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;; -1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;; -1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;; -1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;; -1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;; -1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;; -101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;; -101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;; -101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;; -101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;; -101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;; -101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;; -1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;; -1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;; -1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;; -1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;; -1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;; -1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;; -1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;; -1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;; -102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;; -102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;; -1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;; -1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;; -104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;; -104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;; -104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;; -104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;; -104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;; -1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;; -1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;; -1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;2D00; -10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;2D01; -10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;2D02; -10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;2D03; -10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;2D04; -10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;2D05; -10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;2D06; -10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;2D07; -10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;2D08; -10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;2D09; -10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;2D0A; -10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;2D0B; -10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;2D0C; -10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;2D0D; -10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;2D0E; -10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;2D0F; -10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;2D10; -10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;2D11; -10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;2D12; -10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;2D13; -10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;2D14; -10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;2D15; -10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;2D16; -10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;2D17; -10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;2D18; -10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;2D19; -10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;2D1A; -10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;2D1B; -10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;2D1C; -10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;2D1D; -10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;2D1E; -10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;2D1F; -10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;2D20; -10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;2D21; -10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;2D22; -10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;2D23; -10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;2D24; -10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;2D25; -10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;; -10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;; -10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;; -10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;; -10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;; -10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;; -10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;; -10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;; -10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;; -10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;; -10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;; -10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;; -10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;; -10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;; -10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;; -10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;; -10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;; -10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;; -10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;; -10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;; -10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;; -10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;; -10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;; -10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;; -10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;; -10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;; -10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;; -10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;; -10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;; -10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;; -10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;; -10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;; -10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;; -10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;; -10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;; -10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;; -10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;; -10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;; -10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;; -10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;; -10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;; -10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;; -10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;; -10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; -10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;N;;;;; -1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; -1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; -1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; -1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; -1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;; -1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;; -1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; -1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; -1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;; -1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;; -110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; -110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;; -110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; -110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;; -110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; -110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; -1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; -1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; -1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; -1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; -1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;; -1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; -1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;; -1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; -1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; -1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; -111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;; -111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;; -111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; -111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; -111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; -111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;; -1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; -1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;; -1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;; -1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;; -1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;; -1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;; -1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;; -1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;; -112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; -112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;; -112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;; -112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; -1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;; -1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; -1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; -1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;; -1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;; -1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;; -1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;; -1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;; -1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; -113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;; -113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;; -113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;; -113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; -113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;; -113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; -1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;; -1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; -1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;; -1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;; -1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;; -1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;; -1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; -1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; -1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;; -1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;; -114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;; -114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;; -114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; -114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;; -114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;; -114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; -1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;; -1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; -1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;; -1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;; -1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;; -1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;; -1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; -1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; -1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;; -1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; -115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;; -1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;; -1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;; -1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;; -1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;; -1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;; -1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;; -1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;; -1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;; -1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;; -1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;; -116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;; -116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;; -116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;; -116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;; -116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;; -116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;; -1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;; -1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;; -1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;; -1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;; -1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;; -1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;; -1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;; -1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;; -1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;; -1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;; -117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;; -117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;; -117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;; -117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;; -117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;; -117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;; -1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;; -1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;; -1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;; -1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;; -1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;; -1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;; -1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;; -1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;; -1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;; -1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;; -118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;; -118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;; -118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;; -118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;; -118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;; -118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;; -1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;; -1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;; -1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;; -1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;; -1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;; -1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;; -1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;; -1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;; -1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;; -1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;; -119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;; -119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;; -119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;; -119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;; -119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;; -119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;; -11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;; -11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;; -11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;; -11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; -11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; -11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;; -11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; -11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;; -11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;; -11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; -11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;; -11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;; -11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;; -11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;; -11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;; -11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;; -11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;; -11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;; -11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; -11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; -11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;; -11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;; -11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; -11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;; -11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; -11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; -11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; -11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; -11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; -11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; -11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;; -11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; -11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; -11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;; -11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;; -11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;; -11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; -11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;; -11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;; -11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; -11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;; -11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;; -11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; -11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; -11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;; -11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;; -11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; -11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;; -11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;; -11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; -11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;; -11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; -11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;; -11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; -11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;; -11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;; -11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;; -11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;; -11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;; -11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; -11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;; -11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; -11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; -11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; -11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; -11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;; -11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; -11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; -11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; -11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;; -11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; -11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;; -11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; -11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; -11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; -11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;; -11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;; -11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;; -11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;; -11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; -1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;; -1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;; -1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;; -1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;; -1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;; -1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;; -1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;; -1207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;; -1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;; -1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;; -120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;; -120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;; -120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;; -120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;; -120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;; -120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;; -1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;; -1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;; -1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;; -1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;; -1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;; -1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;; -1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;; -1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;; -1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;; -1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;; -121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;; -121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;; -121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;; -121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;; -121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;; -121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;; -1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;; -1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;; -1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;; -1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;; -1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;; -1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;; -1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;; -1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;; -1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;; -1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;; -122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;; -122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;; -122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;; -122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;; -122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;; -122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;; -1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;; -1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;; -1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;; -1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;; -1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;; -1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;; -1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;; -1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;; -1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;; -1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;; -123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;; -123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;; -123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; -123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;; -123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;; -123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;; -1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;; -1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;; -1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;; -1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;; -1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;; -1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;; -1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;; -1247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;; -1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;; -124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;; -124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;; -124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;; -124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;; -1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;; -1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;; -1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;; -1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;; -1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;; -1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;; -1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;; -1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;; -125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;; -125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;; -125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;; -125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;; -1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;; -1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;; -1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;; -1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;; -1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;; -1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;; -1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;; -1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;; -1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;; -1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;; -126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;; -126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;; -126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;; -126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;; -126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;; -126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;; -1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;; -1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;; -1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;; -1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;; -1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;; -1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;; -1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;; -1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;; -1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;; -1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;; -127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;; -127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;; -127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;; -127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;; -127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;; -127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;; -1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;; -1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;; -1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;; -1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;; -1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;; -1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;; -1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;; -1287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;; -1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;; -128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;; -128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;; -128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;; -128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;; -1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;; -1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;; -1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;; -1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;; -1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;; -1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;; -1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;; -1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;; -1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;; -1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;; -129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;; -129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;; -129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; -129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;; -129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;; -129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;; -12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;; -12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;; -12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;; -12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;; -12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;; -12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;; -12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;; -12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;; -12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;; -12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;; -12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;; -12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;; -12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;; -12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;; -12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;; -12AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;; -12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;; -12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;; -12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;; -12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;; -12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;; -12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;; -12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;; -12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;; -12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;; -12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;; -12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;; -12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;; -12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;; -12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;; -12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;; -12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;; -12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;; -12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;; -12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;; -12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;; -12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;; -12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;; -12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;; -12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;; -12CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;; -12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;; -12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;; -12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;; -12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;; -12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;; -12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;; -12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;; -12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;; -12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;; -12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;; -12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;; -12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; -12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;; -12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;; -12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;; -12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; -12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; -12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; -12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;; -12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; -12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; -12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; -12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;; -12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;; -12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;; -12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;; -12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;; -12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;; -12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;; -12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;; -12EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;; -12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;; -12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;; -12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;; -12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;; -12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;; -12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;; -12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;; -12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;; -12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;; -12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;; -12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;; -12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;; -12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;; -12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;; -12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;; -12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;; -1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;; -1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;; -1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;; -1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;; -1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;; -1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;; -1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;; -1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;; -1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;; -1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;; -130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;; -130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;; -130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;; -130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;; -130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;; -130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;; -1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;; -1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;; -1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;; -1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;; -1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;; -1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;; -1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;; -131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;; -131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;; -131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;; -131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;; -131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;; -131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;; -1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;; -1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;; -1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;; -1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;; -1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;; -1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;; -1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;; -1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;; -1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;; -1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;; -132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;; -132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;; -132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;; -132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;; -132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;; -132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;; -1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;; -1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;; -1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;; -1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;; -1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;; -1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;; -1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;; -1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;; -1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;; -1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;; -133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;; -133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;; -133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;; -133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;; -133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;; -133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;; -1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;; -1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;; -1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;; -1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;; -1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;; -1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;; -1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;; -1347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;; -1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;; -1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;; -134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;; -134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;; -134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;; -134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;; -134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;; -134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;; -1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;; -1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;; -1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;; -1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;; -1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;; -1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;; -1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;; -1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;; -1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;; -1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;; -135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;; -135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;; -1360;ETHIOPIC SECTION MARK;So;0;L;;;;;N;;;;; -1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;; -1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;; -1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;; -1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;; -1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;; -1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;; -1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;; -1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; -1369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;; -136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;; -136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;; -136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;; -136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;; -136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;; -136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;; -1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;; -1371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;; -1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;; -1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;; -1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;; -1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;; -1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;; -1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;; -1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;; -1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;; -137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;; -137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;; -137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; -1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;; -1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;; -1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;; -1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;; -1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;; -1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;; -1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;; -1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;; -1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;; -1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;; -138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;; -138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;; -138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;; -138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;; -138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;; -138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;; -1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;; -1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;; -1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;; -1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;; -1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;; -1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;; -1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;; -1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;; -1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;; -1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;; -13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;; -13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;; -13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;; -13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;; -13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;; -13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;; -13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;; -13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;; -13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;; -13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;; -13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;; -13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;; -13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;; -13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;; -13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;; -13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;; -13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;; -13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;; -13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;; -13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;; -13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;; -13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;; -13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;; -13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;; -13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;; -13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;; -13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;; -13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;; -13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;; -13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;; -13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;; -13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;; -13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;; -13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;; -13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;; -13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;; -13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;; -13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;; -13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;; -13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;; -13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;; -13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;; -13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;; -13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;; -13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;; -13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;; -13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;; -13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;; -13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;; -13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;; -13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;; -13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;; -13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;; -13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;; -13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;; -13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;; -13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;; -13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;; -13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;; -13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;; -13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;; -13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;; -13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;; -13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;; -13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;; -13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;; -13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;; -13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;; -13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;; -13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;; -13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;; -13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;; -13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;; -13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;; -13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;; -13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;; -13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;; -13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;; -13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;; -13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;; -13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;; -13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;; -13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;; -13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;; -13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;; -1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;; -1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;; -1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;; -1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;; -1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;; -1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;; -1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;; -1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;; -1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;; -140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;; -140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;; -140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;; -140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;; -140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;; -140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;; -1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;; -1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;; -1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;; -1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;; -1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;; -1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;; -1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;; -1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;; -1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;; -1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;; -141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;; -141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;; -141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;; -141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;; -141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;; -141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;; -1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;; -1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;; -1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;; -1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;; -1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;; -1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;; -1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;; -1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;; -1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;; -1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;; -142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;; -142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;; -142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;; -142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;; -142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;; -142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;; -1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;; -1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;; -1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;; -1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;; -1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;; -1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;; -1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;; -1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;; -1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;; -1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;; -143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;; -143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;; -143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;; -143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;; -143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;; -143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;; -1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;; -1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;; -1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;; -1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;; -1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;; -1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;; -1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;; -1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;; -1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;; -1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;; -144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;; -144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;; -144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;; -144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;; -144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;; -144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;; -1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;; -1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;; -1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;; -1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;; -1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;; -1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;; -1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;; -1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;; -1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;; -1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;; -145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;; -145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;; -145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;; -145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;; -145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;; -145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;; -1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;; -1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;; -1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;; -1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;; -1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;; -1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;; -1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;; -1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;; -1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;; -1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;; -146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;; -146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;; -146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;; -146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;; -146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;; -146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;; -1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;; -1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;; -1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;; -1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;; -1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;; -1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;; -1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;; -1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;; -1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;; -1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;; -147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;; -147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;; -147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;; -147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;; -147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;; -147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;; -1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;; -1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;; -1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;; -1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;; -1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;; -1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;; -1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;; -1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;; -1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;; -1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;; -148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;; -148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;; -148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;; -148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;; -148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;; -148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;; -1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;; -1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;; -1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;; -1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;; -1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;; -1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;; -1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;; -1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;; -1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;; -1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;; -149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;; -149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;; -149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;; -149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;; -149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;; -149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;; -14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;; -14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;; -14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;; -14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;; -14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;; -14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;; -14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;; -14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;; -14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;; -14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;; -14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;; -14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;; -14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;; -14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;; -14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;; -14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;; -14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;; -14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;; -14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;; -14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;; -14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;; -14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;; -14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;; -14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;; -14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;; -14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;; -14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;; -14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;; -14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;; -14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;; -14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;; -14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;; -14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;; -14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;; -14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;; -14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;; -14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;; -14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;; -14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;; -14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;; -14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;; -14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;; -14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;; -14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;; -14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;; -14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;; -14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;; -14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;; -14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;; -14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;; -14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;; -14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;; -14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;; -14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;; -14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;; -14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;; -14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;; -14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;; -14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;; -14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;; -14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;; -14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;; -14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;; -14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;; -14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;; -14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;; -14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;; -14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;; -14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;; -14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;; -14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;; -14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;; -14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;; -14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;; -14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;; -14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;; -14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;; -14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;; -14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;; -14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;; -14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;; -14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;; -14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;; -14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;; -14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;; -14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;; -14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;; -14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;; -14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;; -14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;; -14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;; -14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;; -14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;; -14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;; -14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;; -14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;; -1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;; -1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;; -1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;; -1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;; -1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;; -1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;; -1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;; -1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;; -1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;; -1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;; -150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;; -150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;; -150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;; -150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;; -150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;; -150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;; -1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;; -1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;; -1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;; -1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;; -1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;; -1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;; -1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;; -1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;; -1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;; -1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;; -151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;; -151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;; -151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;; -151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;; -151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;; -151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;; -1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;; -1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;; -1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;; -1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;; -1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;; -1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;; -1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;; -1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;; -1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;; -1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;; -152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;; -152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;; -152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;; -152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;; -152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;; -152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;; -1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;; -1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;; -1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;; -1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;; -1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;; -1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;; -1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;; -1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;; -1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;; -1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;; -153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;; -153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;; -153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;; -153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;; -153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;; -153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;; -1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;; -1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;; -1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;; -1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;; -1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;; -1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;; -1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;; -1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;; -1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;; -1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;; -154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;; -154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;; -154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;; -154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;; -154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;; -154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;; -1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;; -1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;; -1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;; -1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;; -1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;; -1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;; -1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;; -1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;; -1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;; -1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;; -155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;; -155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;; -155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;; -155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;; -155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;; -155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;; -1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;; -1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;; -1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;; -1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;; -1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;; -1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;; -1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;; -1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;; -1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;; -1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;; -156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;; -156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;; -156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;; -156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;; -156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;; -156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;; -1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;; -1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;; -1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;; -1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;; -1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;; -1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;; -1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;; -1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;; -1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;; -1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;; -157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;; -157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;; -157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;; -157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;; -157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;; -157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;; -1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;; -1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;; -1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;; -1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;; -1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;; -1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;; -1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;; -1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;; -1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;; -1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;; -158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;; -158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;; -158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;; -158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;; -158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;; -158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;; -1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;; -1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;; -1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;; -1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;; -1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;; -1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;; -1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;; -1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;; -1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;; -1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;; -159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;; -159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;; -159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;; -159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;; -159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;; -159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;; -15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;; -15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;; -15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;; -15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;; -15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;; -15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;; -15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;; -15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;; -15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;; -15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;; -15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;; -15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;; -15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;; -15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;; -15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;; -15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;; -15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;; -15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;; -15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;; -15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;; -15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;; -15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;; -15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;; -15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;; -15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;; -15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;; -15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;; -15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;; -15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;; -15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;; -15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;; -15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;; -15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;; -15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;; -15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;; -15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;; -15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;; -15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;; -15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;; -15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;; -15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;; -15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;; -15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;; -15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;; -15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;; -15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;; -15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;; -15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;; -15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;; -15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;; -15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;; -15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;; -15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;; -15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;; -15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;; -15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;; -15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;; -15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;; -15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;; -15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;; -15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;; -15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;; -15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;; -15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;; -15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;; -15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;; -15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;; -15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;; -15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;; -15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;; -15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;; -15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;; -15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;; -15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;; -15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;; -15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;; -15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;; -15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;; -15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;; -15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;; -15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;; -15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;; -15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;; -15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;; -15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;; -15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;; -15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;; -15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;; -15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;; -15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;; -15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;; -15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;; -15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;; -15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;; -15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;; -15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;; -1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;; -1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;; -1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;; -1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;; -1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;; -1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;; -1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;; -1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;; -1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;; -1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;; -160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;; -160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;; -160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;; -160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;; -160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;; -160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;; -1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;; -1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;; -1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;; -1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;; -1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;; -1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;; -1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;; -1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;; -1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;; -1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;; -161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;; -161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;; -161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;; -161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;; -161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;; -161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;; -1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;; -1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;; -1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;; -1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;; -1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;; -1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;; -1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;; -1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;; -1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;; -1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;; -162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;; -162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;; -162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;; -162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;; -162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;; -162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;; -1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;; -1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;; -1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;; -1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;; -1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;; -1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;; -1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;; -1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;; -1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;; -1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;; -163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;; -163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;; -163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;; -163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;; -163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;; -163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;; -1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;; -1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;; -1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;; -1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;; -1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;; -1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;; -1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;; -1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;; -1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;; -1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;; -164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;; -164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;; -164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;; -164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;; -164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;; -164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;; -1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;; -1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;; -1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;; -1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;; -1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;; -1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;; -1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;; -1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;; -1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;; -1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;; -165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;; -165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;; -165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;; -165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;; -165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;; -165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;; -1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;; -1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;; -1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;; -1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;; -1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;; -1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;; -1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;; -1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;; -1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;; -1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;; -166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;; -166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;; -166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;; -166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;; -166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;; -166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;; -1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;; -1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;; -1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;; -1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;; -1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;; -1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;; -1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;; -1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;; -1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;; -1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;; -1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;; -1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;; -1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;; -1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;; -1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;; -1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;; -1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;; -168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;; -168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;; -168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;; -168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;; -168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;; -168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;; -1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;; -1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;; -1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;; -1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;; -1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;; -1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;; -1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;; -1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;; -1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;; -1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;; -169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;; -169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;N;;;;; -169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;; -16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;; -16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;; -16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;; -16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;; -16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;; -16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;; -16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;; -16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;; -16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;; -16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;; -16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;; -16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;; -16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;; -16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;; -16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;; -16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;; -16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;; -16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;; -16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;; -16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;; -16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;; -16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;; -16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;; -16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;; -16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;; -16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;; -16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;; -16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;; -16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;; -16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;; -16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;; -16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;; -16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;; -16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;; -16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;; -16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;; -16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;; -16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;; -16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;; -16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;; -16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;; -16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;; -16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;; -16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;; -16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;; -16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;; -16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;; -16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;; -16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;; -16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;; -16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;; -16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;; -16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;; -16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;; -16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;; -16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;; -16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;; -16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;; -16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;; -16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;; -16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;; -16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;; -16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;; -16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;; -16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;; -16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;; -16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;; -16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;; -16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;; -16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;; -16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;; -16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;; -16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;; -16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;; -16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;; -16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; -16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;; -16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;; -16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;; -16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;; -16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;; -1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;; -1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;; -1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;; -1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;; -1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;; -1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;; -1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;; -1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;; -1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;; -1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;; -170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; -170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; -170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; -170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;; -170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;; -1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;; -1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;; -1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;; -1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;; -1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;; -1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;; -1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;; -1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;; -1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;; -1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;; -1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;; -1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;; -172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;; -172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;; -172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;; -172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;; -172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;; -172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;; -1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;; -1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;; -1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;; -1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; -1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;; -1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;; -1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;; -1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;; -1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;; -1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;; -1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;; -1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;; -1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;; -1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;; -1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;; -174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;; -174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;; -174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;; -174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;; -174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;; -174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;; -1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;; -1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;; -1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;; -1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;; -1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;; -1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;; -1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;; -1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;; -1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;; -1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;; -1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;; -1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;; -176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;; -176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;; -176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;; -176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;; -176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;; -1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;; -1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;; -1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;; -1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;; -1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;; -1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;; -1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;; -1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;; -1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;; -1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;; -1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;; -178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;; -178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;; -178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;; -178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;; -178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;; -178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;; -1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;; -1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;; -1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;; -1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;; -1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;; -1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;; -1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;; -1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;; -1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;; -1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;; -179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;; -179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;; -179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;; -179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;; -179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;; -179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;; -17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;; -17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;; -17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;; -17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;*;;; -17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;*;;; -17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;; -17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;; -17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;; -17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;; -17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;; -17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;; -17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;; -17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;; -17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;; -17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;; -17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;; -17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;; -17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;; -17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;; -17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;; -17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;*;;; -17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;*;;; -17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; -17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; -17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;; -17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;; -17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;; -17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;; -17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;; -17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;; -17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;; -17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;; -17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;; -17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;; -17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;; -17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;; -17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;; -17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;; -17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;; -17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;; -17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;; -17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;*;;; -17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;; -17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;; -17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;; -17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;; -17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;*;;; -17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;; -17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;; -17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;; -17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;; -17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;; -17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;; -17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;; -17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;; -17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;; -17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;; -17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;; -17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;; -17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;; -17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;; -17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;; -1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;; -1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;; -1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;; -1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;; -1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;; -1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;; -1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;; -1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;; -1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;; -1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;; -180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;; -180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;; -180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; -180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; -180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;; -1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;; -1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;; -1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;; -1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;; -1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;; -1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;; -1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;; -1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;; -1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;; -1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;; -182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;; -182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;; -182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;; -182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;; -182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;; -182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;; -1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;; -1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;; -1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;; -1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;; -1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;; -1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;; -1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;; -1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;; -1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;; -1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;; -183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;; -183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;; -183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;; -183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;; -183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;; -183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;; -1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;; -1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;; -1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;; -1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;; -1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;; -1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;; -1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;; -1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;; -1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;; -1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;; -184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;; -184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;; -184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;; -184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;; -184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;; -184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;; -1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;; -1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;; -1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;; -1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;; -1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;; -1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;; -1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;; -1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;; -1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;; -1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;; -185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;; -185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;; -185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;; -185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;; -185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;; -185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;; -1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;; -1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;; -1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;; -1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;; -1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;; -1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;; -1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;; -1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;; -1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;; -1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;; -186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;; -186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;; -186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;; -186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;; -186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;; -186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;; -1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;; -1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;; -1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;; -1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;; -1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;; -1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;; -1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;; -1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;; -1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;; -1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;; -1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;; -1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;; -1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;; -1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;; -1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;; -1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;; -1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;; -1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;; -188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;; -188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;; -188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;; -188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;; -188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;; -188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;; -1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;; -1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;; -1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;; -1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;; -1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;; -1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;; -1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;; -1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;; -1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;; -1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;; -189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;; -189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;; -189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;; -189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;; -189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;; -189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;; -18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;; -18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;; -18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;; -18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;; -18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;; -18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;; -18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;; -18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;; -18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;; -18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;; -1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;; -1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;; -1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;; -1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;; -1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;; -1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;; -1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;; -1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;; -1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;; -1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;; -190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;; -190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;; -190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;; -190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;; -190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;; -190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;; -1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;; -1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;; -1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;; -1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;; -1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;; -1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;; -1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;; -1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;; -1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;; -1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;; -191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;; -191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;; -191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;; -1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;; -1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -1929;LIMBU SUBJOINED LETTER YA;Mc;0;NSM;;;;;N;;;;; -192A;LIMBU SUBJOINED LETTER RA;Mc;0;NSM;;;;;N;;;;; -192B;LIMBU SUBJOINED LETTER WA;Mc;0;NSM;;;;;N;;;;; -1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;; -1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;; -1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;; -1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;; -1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;; -1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;; -1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;; -1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;; -1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;; -1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;; -193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;; -193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;; -1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;; -1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;; -1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;; -1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;; -1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;; -1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;; -1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;; -1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;; -1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;; -1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;; -1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;; -1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;; -195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;; -195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;; -195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;; -195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;; -195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;; -195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;; -1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;; -1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;; -1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;; -1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;; -1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;; -1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;; -1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;; -1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;; -1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;; -1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;; -196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;; -196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;; -196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;; -196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;; -1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;; -1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;; -1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;; -1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;; -1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;; -1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;; -1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;; -1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;; -1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;; -1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;; -1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;; -1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;; -1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;; -1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;; -1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;; -198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;; -198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;; -198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;; -198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;; -198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;; -198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;; -1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;; -1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;; -1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;; -1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;; -1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;; -1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;; -1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;; -1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;; -1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;; -1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;; -199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;; -199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;; -199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;; -199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;; -199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;; -199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;; -19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;; -19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;; -19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;; -19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;; -19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;; -19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;; -19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;; -19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;; -19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;; -19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;; -19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;; -19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;; -19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;; -19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;; -19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;; -19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;; -19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; -19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;; -19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;; -19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;; -19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;; -19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;; -19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;; -19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;; -19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;; -19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;; -19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;; -19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;; -19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;; -19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;; -19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;; -19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;; -19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;; -19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;; -19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;; -19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;; -19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;; -19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;; -19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;; -19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;; -19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;; -19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;; -19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;; -19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;; -19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;; -19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;; -19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;; -19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;; -19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;; -19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;; -19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;; -19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;; -19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;; -19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;; -19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;; -19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;; -19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;; -19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;; -19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;; -19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;; -19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;; -19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;; -19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;; -1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;; -1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;; -1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;; -1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;; -1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;; -1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;; -1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;; -1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;; -1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;; -1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;; -1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;; -1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;; -1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;; -1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;; -1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;; -1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;; -1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;; -1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;; -1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;; -1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;; -1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;; -1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;; -1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;; -1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;; -1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;; -1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;; -1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;; -1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;; -1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;; -1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;; -1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;; -1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;; -1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;; -1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;; -1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;; -1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;; -1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;; -1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;; -1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;; -1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;; -1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;; -1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;; -1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;; -1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;; -1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;; -1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;; -1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;; -1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;; -1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;; -1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;; -1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;; -1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;; -1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;; -1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;; -1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;; -1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;; -1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;; -1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;; -1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;; -1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;; -1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;; -1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;; -1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;; -1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;; -1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;; -1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;; -1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;; -1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;; -1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;; -1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;; -1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;; -1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;; -1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;; -1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;; -1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;; -1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;; -1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;; -1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;; -1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;; -1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;; -1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;; -1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;; -1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;; -1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;; -1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;; -1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;; -1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;; -1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;; -1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;; -1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;; -1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;; -1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;; -1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;; -1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;; -1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;; -1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;; -1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;; -1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;; -1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;; -1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;; -1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;; -1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;; -1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;; -1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;; -1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;; -1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;; -1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;; -1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;; -1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;; -1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;; -1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;; -1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;; -1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;; -1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;; -1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;; -1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;; -1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;; -1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;; -1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;; -1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;; -1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;; -1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;; -1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;; -1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;; -1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;; -1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L;<sub> 0069;;;;N;;;;; -1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L;<sub> 0072;;;;N;;;;; -1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L;<sub> 0075;;;;N;;;;; -1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L;<sub> 0076;;;;N;;;;; -1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L;<sub> 03B2;;;;N;;;;; -1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L;<sub> 03B3;;;;N;;;;; -1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L;<sub> 03C1;;;;N;;;;; -1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L;<sub> 03C6;;;;N;;;;; -1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L;<sub> 03C7;;;;N;;;;; -1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;; -1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;; -1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;; -1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;;; -1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;; -1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;; -1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;; -1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;;; -1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;; -1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;; -1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;; -1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;; -1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;; -1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;; -1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;; -1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;; -1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;; -1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;; -1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;; -1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;; -1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;; -1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;; -1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;; -1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;; -1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;; -1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;; -1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;; -1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;; -1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;; -1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;; -1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;; -1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;; -1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;; -1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;; -1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;; -1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;; -1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;; -1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;; -1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;; -1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;; -1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;; -1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;; -1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;; -1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;; -1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;; -1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;; -1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;; -1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;; -1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; -1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; -1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;; -1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;; -1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01; -1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00 -1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03; -1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02 -1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05; -1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04 -1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07; -1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06 -1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09; -1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08 -1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B; -1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A -1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D; -1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C -1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F; -1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E -1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11; -1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10 -1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13; -1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12 -1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15; -1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14 -1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17; -1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16 -1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19; -1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18 -1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B; -1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A -1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D; -1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C -1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F; -1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E -1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21; -1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20 -1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23; -1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22 -1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25; -1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24 -1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27; -1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26 -1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29; -1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28 -1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B; -1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A -1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D; -1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C -1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F; -1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E -1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31; -1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30 -1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33; -1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32 -1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35; -1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34 -1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37; -1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36 -1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39; -1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38 -1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B; -1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A -1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D; -1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C -1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F; -1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E -1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41; -1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40 -1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43; -1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42 -1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45; -1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44 -1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47; -1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46 -1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49; -1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48 -1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B; -1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A -1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D; -1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C -1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F; -1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E -1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51; -1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50 -1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53; -1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52 -1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55; -1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54 -1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57; -1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56 -1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59; -1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58 -1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B; -1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A -1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D; -1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C -1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F; -1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E -1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61; -1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60 -1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63; -1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62 -1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65; -1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64 -1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67; -1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66 -1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69; -1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68 -1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B; -1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A -1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D; -1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C -1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F; -1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E -1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71; -1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70 -1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73; -1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72 -1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75; -1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74 -1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77; -1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76 -1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79; -1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78 -1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B; -1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A -1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D; -1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C -1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F; -1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E -1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81; -1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80 -1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83; -1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82 -1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85; -1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84 -1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87; -1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86 -1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89; -1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88 -1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B; -1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A -1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D; -1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C -1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F; -1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E -1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91; -1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90 -1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93; -1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92 -1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95; -1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94 -1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;; -1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;; -1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;; -1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;; -1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;; -1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60 -1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1; -1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0 -1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3; -1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2 -1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5; -1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4 -1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7; -1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6 -1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9; -1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8 -1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB; -1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA -1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD; -1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC -1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF; -1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE -1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1; -1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0 -1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3; -1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2 -1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5; -1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4 -1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7; -1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6 -1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9; -1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8 -1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB; -1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA -1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD; -1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC -1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF; -1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE -1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1; -1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0 -1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3; -1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2 -1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5; -1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4 -1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7; -1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6 -1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9; -1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8 -1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB; -1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA -1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD; -1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC -1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF; -1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE -1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1; -1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0 -1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3; -1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2 -1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5; -1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4 -1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7; -1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6 -1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9; -1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8 -1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB; -1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA -1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD; -1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC -1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF; -1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE -1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1; -1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0 -1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3; -1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2 -1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5; -1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4 -1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7; -1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6 -1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9; -1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8 -1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB; -1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA -1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED; -1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC -1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF; -1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE -1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1; -1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0 -1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3; -1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2 -1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5; -1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4 -1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7; -1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6 -1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9; -1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8 -1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08 -1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09 -1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A -1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B -1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C -1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D -1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E -1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F -1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00; -1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01; -1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02; -1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03; -1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04; -1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05; -1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06; -1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07; -1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18 -1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19 -1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A -1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B -1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C -1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D -1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10; -1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11; -1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12; -1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13; -1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14; -1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15; -1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28 -1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29 -1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A -1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B -1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C -1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D -1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E -1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F -1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20; -1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21; -1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22; -1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23; -1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24; -1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25; -1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26; -1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27; -1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38 -1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39 -1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A -1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B -1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C -1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D -1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E -1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F -1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30; -1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31; -1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32; -1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33; -1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34; -1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35; -1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36; -1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37; -1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48 -1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49 -1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A -1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B -1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C -1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D -1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40; -1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41; -1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42; -1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43; -1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44; -1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45; -1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;; -1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59 -1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;; -1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B -1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;; -1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D -1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;; -1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F -1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51; -1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53; -1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55; -1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57; -1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68 -1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69 -1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A -1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B -1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C -1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D -1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E -1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F -1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60; -1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61; -1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62; -1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63; -1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64; -1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65; -1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66; -1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67; -1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA -1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB -1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8 -1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9 -1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA -1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB -1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA -1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB -1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8 -1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9 -1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA -1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB -1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA -1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB -1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88 -1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89 -1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A -1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B -1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C -1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D -1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E -1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F -1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80; -1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81; -1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82; -1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83; -1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84; -1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85; -1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86; -1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87; -1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98 -1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99 -1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A -1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B -1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C -1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D -1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E -1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F -1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90; -1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91; -1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92; -1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93; -1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94; -1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95; -1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96; -1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97; -1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8 -1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9 -1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA -1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB -1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC -1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD -1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE -1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF -1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0; -1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1; -1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2; -1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3; -1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4; -1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5; -1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6; -1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7; -1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8 -1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9 -1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;; -1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC -1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;; -1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;; -1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;; -1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0; -1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1; -1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70; -1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71; -1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3; -1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;; -1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399 -1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;; -1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;; -1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;; -1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;; -1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC -1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;; -1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;; -1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;; -1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72; -1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73; -1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74; -1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75; -1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3; -1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;; -1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;; -1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;; -1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8 -1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9 -1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;; -1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;; -1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;; -1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;; -1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0; -1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1; -1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76; -1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77; -1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;; -1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;; -1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;; -1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8 -1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9 -1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;; -1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;; -1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;; -1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC -1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;; -1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;; -1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0; -1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1; -1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A; -1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B; -1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5; -1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;; -1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;; -1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;; -1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;; -1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC -1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;; -1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;; -1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;; -1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78; -1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79; -1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C; -1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D; -1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3; -1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;; -1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;; -2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;; -2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;; -2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; -2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; -2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; -2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; -2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; -2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;; -2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; -2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; -200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; -200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;; -200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;; -200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;; -200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;; -200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;; -2010;HYPHEN;Pd;0;ON;;;;;N;;;;; -2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;; -2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;; -2013;EN DASH;Pd;0;ON;;;;;N;;;;; -2014;EM DASH;Pd;0;ON;;;;;N;;;;; -2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;; -2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;; -2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;; -2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;; -2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;; -201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;; -201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;; -201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;; -201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;; -201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;; -201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;; -2020;DAGGER;Po;0;ON;;;;;N;;;;; -2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;; -2022;BULLET;Po;0;ON;;;;;N;;;;; -2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;; -2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;; -2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;; -2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;; -2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;; -2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;; -2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;; -202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;; -202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;; -202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;; -202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;; -202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;; -202F;NARROW NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;;;;; -2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;; -2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; -2032;PRIME;Po;0;ET;;;;;N;;;;; -2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;; -2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;; -2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;; -2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;; -2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;; -2038;CARET;Po;0;ON;;;;;N;;;;; -2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;; -203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;; -203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;; -203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;; -203D;INTERROBANG;Po;0;ON;;;;;N;;;;; -203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;; -203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;; -2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;; -2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;; -2042;ASTERISM;Po;0;ON;;;;;N;;;;; -2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;; -2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;; -2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;; -2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;; -2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;; -2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;; -2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;; -204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;; -204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;; -204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;; -204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;; -204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;; -204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;; -2050;CLOSE UP;Po;0;ON;;;;;N;;;;; -2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;; -2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;; -2053;SWUNG DASH;Po;0;ON;;;;;N;;;;; -2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;; -2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;; -2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;; -2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;; -205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;; -205D;TRICOLON;Po;0;ON;;;;;N;;;;; -205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;; -205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;; -2060;WORD JOINER;Cf;0;BN;;;;;N;;;;; -2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;; -2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;; -2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;; -206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; -206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; -206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; -206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; -206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; -206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; -2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;; -2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L;<super> 0069;;;;N;;;;; -2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;; -2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;; -2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;; -2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;; -2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;; -2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;; -207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES;<super> 002B;;;;N;;;;; -207B;SUPERSCRIPT MINUS;Sm;0;ES;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;; -207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;; -207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;; -207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;; -207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;; -2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;; -2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;; -2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;; -2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;; -2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;; -2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;; -2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;; -2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;; -2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;; -2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;; -208A;SUBSCRIPT PLUS SIGN;Sm;0;ES;<sub> 002B;;;;N;;;;; -208B;SUBSCRIPT MINUS;Sm;0;ES;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;; -208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;; -208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;; -208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;; -2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0061;;;;N;;;;; -2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L;<sub> 0065;;;;N;;;;; -2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 006F;;;;N;;;;; -2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L;<sub> 0078;;;;N;;;;; -2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L;<sub> 0259;;;;N;;;;; -20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; -20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;; -20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;; -20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;; -20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;; -20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;; -20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;; -20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;; -20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;; -20A9;WON SIGN;Sc;0;ET;;;;;N;;;;; -20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;; -20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;; -20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;; -20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;; -20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;; -20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;; -20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;; -20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;; -20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;; -20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;; -20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;; -20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;; -20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; -20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; -20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; -20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;; -20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;; -20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;; -20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;; -20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;; -20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;; -20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;; -20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;; -20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;; -20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;; -20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;; -20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;; -20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;; -20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;; -20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;; -20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;; -20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;; -20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;; -20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; -20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;; -20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;; -20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;; -20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; -20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;; -20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; -2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;; -2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;; -2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;; -2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;; -2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;; -2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;; -2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;; -2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;; -2108;SCRUPLE;So;0;ON;;;;;N;;;;; -2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;; -210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; -210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;; -210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;; -210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;; -210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;; -210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;; -2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;; -2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;; -2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;; -2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;; -2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;; -2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;; -2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;; -2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;; -2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;; -211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;; -211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;; -211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;; -211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;; -211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;; -211F;RESPONSE;So;0;ON;;;;;N;;;;; -2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;; -2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;; -2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;; -2123;VERSICLE;So;0;ON;;;;;N;;;;; -2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;; -2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;; -2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9; -2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;; -2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;; -2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;; -212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B; -212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5; -212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;; -212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;; -212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;; -212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;; -2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;; -2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;; -2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;; -2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; -2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;; -2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;; -2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;; -2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;; -2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;; -213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;; -213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;; -213C;DOUBLE-STRUCK SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; -213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; -213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; -213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; -2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;; -2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;; -2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; -2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; -2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;; -2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -214A;PROPERTY LINE;So;0;ON;;;;;N;;;;; -214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;; -214C;PER SIGN;So;0;ON;;;;;N;;;;; -2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;; -2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;; -2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;; -2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;; -2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;; -2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;; -2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;; -215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;; -215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;; -215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;; -215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;; -215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;; -215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;; -2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170; -2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171; -2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172; -2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173; -2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174; -2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175; -2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176; -2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177; -2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178; -2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179; -216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A; -216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B; -216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C; -216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D; -216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E; -216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F; -2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160 -2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161 -2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162 -2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163 -2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164 -2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165 -2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166 -2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167 -2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168 -2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169 -217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A -217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B -217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C -217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D -217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E -217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F -2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;; -2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;; -2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;; -2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Nl;0;L;;;;;N;;;;; -2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;; -2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;; -2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;; -2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;; -2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; -2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;; -2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;; -2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;; -2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;; -2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;; -219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;; -219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;; -219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;; -219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;; -219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;; -219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;; -21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;; -21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;; -21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;; -21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;; -21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;; -21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;; -21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;; -21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;; -21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;; -21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;; -21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;; -21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;; -21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;; -21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;; -21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;; -21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;; -21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;; -21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;; -21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;; -21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;; -21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;; -21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;; -21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; -21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; -21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;; -21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;; -21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; -21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; -21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;; -21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;; -21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;; -21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;; -21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;; -21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;; -21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;; -21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;; -21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;; -21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;; -21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;; -21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;; -21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;; -21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;; -21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;; -21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;; -21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;; -21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;; -21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;; -21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;; -21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;; -21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;; -21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;; -21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;; -21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;; -21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;; -21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;; -21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;; -21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;; -21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;; -21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;; -21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;; -21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;; -21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;; -21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;; -21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;; -21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;; -21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;; -21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;; -21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;; -21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;; -21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;; -21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;; -21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;; -21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;; -21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;; -21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; -21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;; -21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;; -21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;; -21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; -21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;; -21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;; -21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;; -21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;; -21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;; -21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; -21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; -21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; -21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; -2200;FOR ALL;Sm;0;ON;;;;;N;;;;; -2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;; -2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;; -2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;; -2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;; -2205;EMPTY SET;Sm;0;ON;;;;;N;;;;; -2206;INCREMENT;Sm;0;ON;;;;;N;;;;; -2207;NABLA;Sm;0;ON;;;;;N;;;;; -2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;; -2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;; -220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;; -220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; -220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;; -220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; -220E;END OF PROOF;Sm;0;ON;;;;;N;;;;; -220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;; -2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;; -2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;; -2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;; -2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;; -2214;DOT PLUS;Sm;0;ON;;;;;N;;;;; -2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; -2216;SET MINUS;Sm;0;ON;;;;;Y;;;;; -2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; -2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;; -2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;; -221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;; -221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;; -221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;; -221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;; -221E;INFINITY;Sm;0;ON;;;;;N;;;;; -221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;; -2220;ANGLE;Sm;0;ON;;;;;Y;;;;; -2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;; -2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;; -2223;DIVIDES;Sm;0;ON;;;;;N;;;;; -2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;; -2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;; -2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;; -2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2229;INTERSECTION;Sm;0;ON;;;;;N;;;;; -222A;UNION;Sm;0;ON;;;;;N;;;;; -222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;; -222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;; -222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;; -222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; -222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;; -2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;; -2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2234;THEREFORE;Sm;0;ON;;;;;N;;;;; -2235;BECAUSE;Sm;0;ON;;;;;N;;;;; -2236;RATIO;Sm;0;ON;;;;;N;;;;; -2237;PROPORTION;Sm;0;ON;;;;;N;;;;; -2238;DOT MINUS;Sm;0;ON;;;;;N;;;;; -2239;EXCESS;Sm;0;ON;;;;;Y;;;;; -223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;; -223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;; -223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;; -223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;; -223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;; -2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;; -2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;; -2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;; -2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;; -2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;; -2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;; -224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;; -224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;; -224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; -224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; -224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;; -2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;; -2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;; -2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;; -2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;; -2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;; -2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;; -2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;; -2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;; -2259;ESTIMATES;Sm;0;ON;;;;;N;;;;; -225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;; -225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;; -225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;; -225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;; -225E;MEASURED BY;Sm;0;ON;;;;;N;;;;; -225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;; -2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;; -2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;; -2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; -2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;; -2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;; -2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;; -2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;; -2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;; -2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;; -226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;; -226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;; -226C;BETWEEN;Sm;0;ON;;;;;N;;;;; -226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;; -226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;; -226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;; -2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;; -2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;; -2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;; -2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;; -2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;; -2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;; -2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;; -2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;; -2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;; -2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;; -227A;PRECEDES;Sm;0;ON;;;;;Y;;;;; -227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;; -227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;; -2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;; -2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;; -2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;; -2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;; -2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;; -2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;; -2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;; -228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;; -228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;; -228C;MULTISET;Sm;0;ON;;;;;Y;;;;; -228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;; -228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;; -228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;; -2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; -2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;; -2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;; -2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; -2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;; -2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;; -2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; -2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;; -229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; -229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;; -229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;; -229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;; -229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;; -22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;; -22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;; -22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;; -22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;; -22A5;UP TACK;Sm;0;ON;;;;;N;;;;; -22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;; -22A7;MODELS;Sm;0;ON;;;;;Y;;;;; -22A8;TRUE;Sm;0;ON;;;;;Y;;;;; -22A9;FORCES;Sm;0;ON;;;;;Y;;;;; -22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;; -22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;; -22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;; -22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;; -22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;; -22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;; -22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;; -22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;; -22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; -22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;; -22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;; -22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;; -22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;; -22BB;XOR;Sm;0;ON;;;;;N;;;;; -22BC;NAND;Sm;0;ON;;;;;N;;;;; -22BD;NOR;Sm;0;ON;;;;;N;;;;; -22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;; -22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; -22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;; -22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;; -22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;; -22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;; -22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;; -22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;; -22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;; -22C8;BOWTIE;Sm;0;ON;;;;;N;;;;; -22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;; -22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;; -22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;; -22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;; -22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;; -22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;; -22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;; -22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;; -22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;; -22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;; -22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;; -22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;; -22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;; -22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;; -22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;; -22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;; -22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;; -22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;; -22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;; -22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;; -22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;; -22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;; -22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;; -22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;; -22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;; -22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;; -22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;; -22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;; -22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;; -22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; -22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; -22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; -22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; -22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;; -22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;; -2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;; -2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;; -2302;HOUSE;So;0;ON;;;;;N;;;;; -2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;; -2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;; -2305;PROJECTIVE;So;0;ON;;;;;N;;;;; -2306;PERSPECTIVE;So;0;ON;;;;;N;;;;; -2307;WAVY LINE;So;0;ON;;;;;N;;;;; -2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;; -2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;; -230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;; -230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;; -230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;; -230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;; -230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;; -230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;; -2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;; -2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;; -2312;ARC;So;0;ON;;;;;N;;;;; -2313;SEGMENT;So;0;ON;;;;;N;;;;; -2314;SECTOR;So;0;ON;;;;;N;;;;; -2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;; -2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;; -2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;; -2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;; -2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;; -231A;WATCH;So;0;ON;;;;;N;;;;; -231B;HOURGLASS;So;0;ON;;;;;N;;;;; -231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;; -231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;; -231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;; -231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;; -2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2322;FROWN;So;0;ON;;;;;N;;;;; -2323;SMILE;So;0;ON;;;;;N;;;;; -2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;; -2325;OPTION KEY;So;0;ON;;;;;N;;;;; -2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;; -2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;; -2328;KEYBOARD;So;0;ON;;;;;N;;;;; -2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;; -232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;; -232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;; -232C;BENZENE RING;So;0;ON;;;;;N;;;;; -232D;CYLINDRICITY;So;0;ON;;;;;N;;;;; -232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;; -232F;SYMMETRY;So;0;ON;;;;;N;;;;; -2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;; -2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;; -2332;CONICAL TAPER;So;0;ON;;;;;N;;;;; -2333;SLOPE;So;0;ON;;;;;N;;;;; -2334;COUNTERBORE;So;0;ON;;;;;N;;;;; -2335;COUNTERSINK;So;0;ON;;;;;N;;;;; -2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;; -2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;; -2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;; -2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;; -233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;; -233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;; -233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;; -233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;; -233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;; -233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;; -2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;; -2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;; -2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;; -2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;; -2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;; -2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;; -2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;; -2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;; -2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;; -2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;; -234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;; -234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;; -234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;; -234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;; -234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;; -234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;; -2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;; -2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;; -2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;; -2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;; -2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;; -2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;; -2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;; -2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;; -2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;; -2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;; -235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;; -235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;; -235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;; -235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;; -235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;; -235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;; -2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;; -2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;; -2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;; -2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;; -2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;; -2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;; -2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;; -2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;; -2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;; -2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;; -236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;; -236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;; -236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;; -236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;; -236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;; -236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;; -2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;; -2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;; -2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;; -2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;; -2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;; -2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;; -2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;; -2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;; -2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;; -2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;; -237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;; -237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;; -237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;; -237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;; -237E;BELL SYMBOL;So;0;ON;;;;;N;;;;; -237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;; -2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;; -2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; -2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; -2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;; -2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;; -2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;; -2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;; -2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;; -2388;HELM SYMBOL;So;0;ON;;;;;N;;;;; -2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;; -238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;; -238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;; -238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;; -238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;; -238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;; -238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;; -2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;; -2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; -2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; -2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;; -2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;; -2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;; -2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;; -2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;; -2398;NEXT PAGE;So;0;ON;;;;;N;;;;; -2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;; -239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;; -239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; -239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; -239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; -239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; -239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; -23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; -23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; -23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; -23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; -23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; -23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; -23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; -23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; -23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; -23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; -23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; -23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; -23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; -23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; -23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;; -23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;; -23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; -23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; -23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;; -23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;; -23B4;TOP SQUARE BRACKET;Ps;0;ON;;;;;N;;;;; -23B5;BOTTOM SQUARE BRACKET;Pe;0;ON;;;;;N;;;;; -23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;Po;0;ON;;;;;N;;;;; -23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;; -23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; -23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; -23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;; -23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;; -23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;; -23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;; -23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;; -23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;; -23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;; -23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; -23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; -23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; -23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; -23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; -23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;; -23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; -23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; -23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;; -23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;; -23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;; -23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;; -23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;; -23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;; -23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;; -23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;; -23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;; -23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;; -23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;; -23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;; -23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;; -23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;; -23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;; -23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;; -23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;; -23DA;EARTH GROUND;So;0;ON;;;;;N;;;;; -23DB;FUSE;So;0;ON;;;;;N;;;;; -2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;; -2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;; -2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;; -2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;; -2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;; -2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;; -2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;; -2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;; -2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;; -2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;; -240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;; -240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;; -240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;; -240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;; -240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;; -240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;; -2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;; -2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;; -2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;; -2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;; -2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;; -2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;; -2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;; -2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;; -2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;; -2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;; -241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;; -241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;; -241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;; -241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;; -241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;; -241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;; -2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;; -2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;; -2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;; -2423;OPEN BOX;So;0;ON;;;;;N;;;;; -2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;; -2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;; -2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;; -2440;OCR HOOK;So;0;ON;;;;;N;;;;; -2441;OCR CHAIR;So;0;ON;;;;;N;;;;; -2442;OCR FORK;So;0;ON;;;;;N;;;;; -2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;; -2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;; -2445;OCR BOW TIE;So;0;ON;;;;;N;;;;; -2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;; -2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;; -2448;OCR DASH;So;0;ON;;;;;N;;;;; -2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;; -244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;; -2460;CIRCLED DIGIT ONE;No;0;ON;<circle> 0031;;1;1;N;;;;; -2461;CIRCLED DIGIT TWO;No;0;ON;<circle> 0032;;2;2;N;;;;; -2462;CIRCLED DIGIT THREE;No;0;ON;<circle> 0033;;3;3;N;;;;; -2463;CIRCLED DIGIT FOUR;No;0;ON;<circle> 0034;;4;4;N;;;;; -2464;CIRCLED DIGIT FIVE;No;0;ON;<circle> 0035;;5;5;N;;;;; -2465;CIRCLED DIGIT SIX;No;0;ON;<circle> 0036;;6;6;N;;;;; -2466;CIRCLED DIGIT SEVEN;No;0;ON;<circle> 0037;;7;7;N;;;;; -2467;CIRCLED DIGIT EIGHT;No;0;ON;<circle> 0038;;8;8;N;;;;; -2468;CIRCLED DIGIT NINE;No;0;ON;<circle> 0039;;9;9;N;;;;; -2469;CIRCLED NUMBER TEN;No;0;ON;<circle> 0031 0030;;;10;N;;;;; -246A;CIRCLED NUMBER ELEVEN;No;0;ON;<circle> 0031 0031;;;11;N;;;;; -246B;CIRCLED NUMBER TWELVE;No;0;ON;<circle> 0031 0032;;;12;N;;;;; -246C;CIRCLED NUMBER THIRTEEN;No;0;ON;<circle> 0031 0033;;;13;N;;;;; -246D;CIRCLED NUMBER FOURTEEN;No;0;ON;<circle> 0031 0034;;;14;N;;;;; -246E;CIRCLED NUMBER FIFTEEN;No;0;ON;<circle> 0031 0035;;;15;N;;;;; -246F;CIRCLED NUMBER SIXTEEN;No;0;ON;<circle> 0031 0036;;;16;N;;;;; -2470;CIRCLED NUMBER SEVENTEEN;No;0;ON;<circle> 0031 0037;;;17;N;;;;; -2471;CIRCLED NUMBER EIGHTEEN;No;0;ON;<circle> 0031 0038;;;18;N;;;;; -2472;CIRCLED NUMBER NINETEEN;No;0;ON;<circle> 0031 0039;;;19;N;;;;; -2473;CIRCLED NUMBER TWENTY;No;0;ON;<circle> 0032 0030;;;20;N;;;;; -2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;; -2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;; -2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;; -2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;; -2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;; -2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;; -247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;; -247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;; -247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;; -247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;; -247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;; -247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;; -2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;; -2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;; -2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;; -2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;; -2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;; -2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;; -2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;; -2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<compat> 0028 0032 0030 0029;;;20;N;;;;; -2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;; -2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;; -248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;; -248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;; -248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;; -248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;; -248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;; -248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;; -2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;; -2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;; -2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;; -2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;; -2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;; -2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;; -2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;; -2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;; -2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;; -2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;; -249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;; -249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;; -249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;; -249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;; -249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;; -249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;; -24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;; -24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;; -24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;; -24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;; -24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;; -24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;; -24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;; -24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;; -24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;; -24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;; -24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;; -24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;; -24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;; -24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;; -24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;; -24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;; -24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;; -24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;; -24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;; -24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;; -24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;; -24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;; -24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0; -24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1; -24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2; -24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3; -24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4; -24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5; -24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6; -24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7; -24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8; -24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9; -24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA; -24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB; -24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC; -24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD; -24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE; -24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF; -24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0; -24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1; -24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2; -24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3; -24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4; -24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5; -24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6; -24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7; -24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8; -24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9; -24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6 -24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7 -24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8 -24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9 -24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA -24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB -24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC -24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD -24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE -24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF -24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0 -24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1 -24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2 -24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3 -24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4 -24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5 -24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6 -24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7 -24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8 -24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9 -24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA -24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB -24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC -24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD -24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE -24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF -24EA;CIRCLED DIGIT ZERO;No;0;ON;<circle> 0030;;0;0;N;;;;; -24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;; -24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;; -24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;; -24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;; -24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;; -24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;; -24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;; -24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;; -24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;; -24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;; -24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;; -24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;; -24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;; -24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;; -24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;; -24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;; -24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;; -24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;; -24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;; -24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;; -24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;; -2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;; -2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;; -2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;; -2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;; -2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;; -2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;; -2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;; -2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;; -2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;; -2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;; -250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;; -250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;; -250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;; -250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;; -250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;; -250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;; -2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;; -2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;; -2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;; -2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;; -2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;; -2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;; -2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;; -2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;; -2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;; -2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;; -251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;; -251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;; -251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;; -251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;; -251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;; -251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;; -2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;; -2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;; -2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;; -2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;; -2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;; -2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;; -2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;; -2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;; -2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;; -2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;; -252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;; -252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;; -252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;; -252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;; -252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;; -252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;; -2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;; -2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;; -2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;; -2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;; -2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;; -2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;; -2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;; -2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;; -2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;; -2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;; -253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;; -253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;; -253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;; -253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;; -253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;; -253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;; -2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;; -2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;; -2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;; -2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;; -2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;; -2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;; -2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;; -2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;; -2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;; -2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;; -254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;; -254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;; -254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;; -254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;; -254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;; -254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;; -2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;; -2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;; -2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;; -2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;; -2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;; -2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;; -2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;; -2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;; -2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;; -2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;; -255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;; -255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;; -255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;; -255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;; -255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;; -255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;; -2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;; -2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;; -2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;; -2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;; -2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;; -2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;; -2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;; -2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;; -2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;; -2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;; -256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;; -256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;; -256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;; -256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;; -256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;; -256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;; -2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;; -2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;; -2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;; -2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;; -2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;; -2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;; -2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;; -2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;; -2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;; -2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;; -257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;; -257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;; -257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;; -257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;; -257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;; -257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;; -2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;; -2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; -2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;; -2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;; -2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -2588;FULL BLOCK;So;0;ON;;;;;N;;;;; -2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;; -258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;; -258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; -258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;; -2591;LIGHT SHADE;So;0;ON;;;;;N;;;;; -2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;; -2593;DARK SHADE;So;0;ON;;;;;N;;;;; -2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;; -2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;; -2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;; -2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; -259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;; -259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; -259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;; -25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;; -25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;; -25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; -25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;; -25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; -25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; -25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;; -25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;; -25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; -25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; -25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;; -25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;; -25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;; -25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; -25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; -25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;; -25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;; -25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;; -25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;; -25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;; -25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;; -25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;; -25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;; -25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;; -25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;; -25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;; -25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;; -25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;; -25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;; -25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;; -25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;; -25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;; -25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;; -25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;; -25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;; -25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;; -25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;; -25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;; -25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;; -25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; -25C9;FISHEYE;So;0;ON;;;;;N;;;;; -25CA;LOZENGE;So;0;ON;;;;;N;;;;; -25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;; -25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; -25CE;BULLSEYE;So;0;ON;;;;;N;;;;; -25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;; -25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; -25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; -25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;; -25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;; -25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;; -25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;; -25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; -25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; -25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;; -25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;; -25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;; -25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; -25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; -25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; -25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; -25E6;WHITE BULLET;So;0;ON;;;;;N;;;;; -25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; -25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; -25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;; -25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;; -25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;; -25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;; -25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;; -25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; -25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; -25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; -25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; -25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; -25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; -25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; -25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; -2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;; -2601;CLOUD;So;0;ON;;;;;N;;;;; -2602;UMBRELLA;So;0;ON;;;;;N;;;;; -2603;SNOWMAN;So;0;ON;;;;;N;;;;; -2604;COMET;So;0;ON;;;;;N;;;;; -2605;BLACK STAR;So;0;ON;;;;;N;;;;; -2606;WHITE STAR;So;0;ON;;;;;N;;;;; -2607;LIGHTNING;So;0;ON;;;;;N;;;;; -2608;THUNDERSTORM;So;0;ON;;;;;N;;;;; -2609;SUN;So;0;ON;;;;;N;;;;; -260A;ASCENDING NODE;So;0;ON;;;;;N;;;;; -260B;DESCENDING NODE;So;0;ON;;;;;N;;;;; -260C;CONJUNCTION;So;0;ON;;;;;N;;;;; -260D;OPPOSITION;So;0;ON;;;;;N;;;;; -260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;; -260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;; -2610;BALLOT BOX;So;0;ON;;;;;N;;;;; -2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;; -2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;; -2613;SALTIRE;So;0;ON;;;;;N;;;;; -2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;; -2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;; -2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; -2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; -2618;SHAMROCK;So;0;ON;;;;;N;;;;; -2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; -261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; -261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; -261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; -261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;; -261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; -261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;; -2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;; -2621;CAUTION SIGN;So;0;ON;;;;;N;;;;; -2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;; -2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;; -2624;CADUCEUS;So;0;ON;;;;;N;;;;; -2625;ANKH;So;0;ON;;;;;N;;;;; -2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;; -2627;CHI RHO;So;0;ON;;;;;N;;;;; -2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;; -2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;; -262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;; -262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;; -262C;ADI SHAKTI;So;0;ON;;;;;N;;;;; -262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;; -262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;; -262F;YIN YANG;So;0;ON;;;;;N;;;;; -2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;; -2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;; -2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;; -2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;; -2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;; -2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;; -2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;; -2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; -2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;; -2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;; -263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;; -263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;; -263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;; -263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;; -263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;; -263F;MERCURY;So;0;ON;;;;;N;;;;; -2640;FEMALE SIGN;So;0;ON;;;;;N;;;;; -2641;EARTH;So;0;ON;;;;;N;;;;; -2642;MALE SIGN;So;0;ON;;;;;N;;;;; -2643;JUPITER;So;0;ON;;;;;N;;;;; -2644;SATURN;So;0;ON;;;;;N;;;;; -2645;URANUS;So;0;ON;;;;;N;;;;; -2646;NEPTUNE;So;0;ON;;;;;N;;;;; -2647;PLUTO;So;0;ON;;;;;N;;;;; -2648;ARIES;So;0;ON;;;;;N;;;;; -2649;TAURUS;So;0;ON;;;;;N;;;;; -264A;GEMINI;So;0;ON;;;;;N;;;;; -264B;CANCER;So;0;ON;;;;;N;;;;; -264C;LEO;So;0;ON;;;;;N;;;;; -264D;VIRGO;So;0;ON;;;;;N;;;;; -264E;LIBRA;So;0;ON;;;;;N;;;;; -264F;SCORPIUS;So;0;ON;;;;;N;;;;; -2650;SAGITTARIUS;So;0;ON;;;;;N;;;;; -2651;CAPRICORN;So;0;ON;;;;;N;;;;; -2652;AQUARIUS;So;0;ON;;;;;N;;;;; -2653;PISCES;So;0;ON;;;;;N;;;;; -2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;; -2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;; -2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;; -2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;; -2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;; -2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;; -265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;; -265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;; -265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;; -265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;; -265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;; -265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;; -2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;; -2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;; -2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;; -2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;; -2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;; -2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;; -2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;; -2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;; -2668;HOT SPRINGS;So;0;ON;;;;;N;;;;; -2669;QUARTER NOTE;So;0;ON;;;;;N;;;;; -266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;; -266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;; -266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;; -266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;; -266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;; -266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;; -2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;; -2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;; -2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; -2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;; -2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;; -2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;; -2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;; -2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;; -2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;; -2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;; -267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;; -267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; -267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; -267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; -267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;; -267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;; -2680;DIE FACE-1;So;0;ON;;;;;N;;;;; -2681;DIE FACE-2;So;0;ON;;;;;N;;;;; -2682;DIE FACE-3;So;0;ON;;;;;N;;;;; -2683;DIE FACE-4;So;0;ON;;;;;N;;;;; -2684;DIE FACE-5;So;0;ON;;;;;N;;;;; -2685;DIE FACE-6;So;0;ON;;;;;N;;;;; -2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;; -2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;; -2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;; -2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;; -268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;; -268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;; -268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;; -268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;; -268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;; -268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;; -2690;WHITE FLAG;So;0;ON;;;;;N;;;;; -2691;BLACK FLAG;So;0;ON;;;;;N;;;;; -2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;; -2693;ANCHOR;So;0;ON;;;;;N;;;;; -2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;; -2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;; -2696;SCALES;So;0;ON;;;;;N;;;;; -2697;ALEMBIC;So;0;ON;;;;;N;;;;; -2698;FLOWER;So;0;ON;;;;;N;;;;; -2699;GEAR;So;0;ON;;;;;N;;;;; -269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;; -269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;; -269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;; -26A0;WARNING SIGN;So;0;ON;;;;;N;;;;; -26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;; -26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;; -26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;; -26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;; -26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; -26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; -26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; -26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; -26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; -26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;; -26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;; -26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;; -26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;; -26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;; -26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;; -26B0;COFFIN;So;0;ON;;;;;N;;;;; -26B1;FUNERAL URN;So;0;ON;;;;;N;;;;; -2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;; -2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;; -2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;; -2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;; -2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;; -2707;TAPE DRIVE;So;0;ON;;;;;N;;;;; -2708;AIRPLANE;So;0;ON;;;;;N;;;;; -2709;ENVELOPE;So;0;ON;;;;;N;;;;; -270C;VICTORY HAND;So;0;ON;;;;;N;;;;; -270D;WRITING HAND;So;0;ON;;;;;N;;;;; -270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;; -270F;PENCIL;So;0;ON;;;;;N;;;;; -2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;; -2711;WHITE NIB;So;0;ON;;;;;N;;;;; -2712;BLACK NIB;So;0;ON;;;;;N;;;;; -2713;CHECK MARK;So;0;ON;;;;;N;;;;; -2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;; -2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;; -2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;; -2717;BALLOT X;So;0;ON;;;;;N;;;;; -2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;; -2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;; -271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;; -271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;; -271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;; -271D;LATIN CROSS;So;0;ON;;;;;N;;;;; -271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;; -271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;; -2720;MALTESE CROSS;So;0;ON;;;;;N;;;;; -2721;STAR OF DAVID;So;0;ON;;;;;N;;;;; -2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;; -2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;; -2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; -272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;; -272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;; -272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;; -272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; -272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; -272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;; -2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;; -2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;; -2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;; -2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;; -2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;; -2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;; -2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; -2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; -2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;; -273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;; -273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;; -273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;; -273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;; -2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;; -2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;; -2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;; -2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;; -2744;SNOWFLAKE;So;0;ON;;;;;N;;;;; -2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;; -2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;; -2747;SPARKLE;So;0;ON;;;;;N;;;;; -2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;; -2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; -274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; -274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;; -274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;; -2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;; -2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;; -275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;; -275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;; -2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;; -2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;; -2766;FLORAL HEART;So;0;ON;;;;;N;;;;; -2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; -2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; -276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; -276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; -276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;; -276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;; -2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;; -2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;; -2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;; -277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;; -277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;; -277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;; -277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;; -277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;; -277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;; -2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;; -2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;; -2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;; -2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;; -2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;; -2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;; -2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;; -2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;; -2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;; -2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;; -278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;; -278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;; -278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;; -278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;; -278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;; -278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;; -2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;; -2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;; -2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;; -2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;; -2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;; -2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;; -2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;; -279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;; -279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;; -279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;; -279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;; -279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;; -279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;; -27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;; -27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;; -27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;; -27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;; -27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;; -27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;; -27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;; -27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;; -27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;; -27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;; -27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;; -27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;; -27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;; -27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;; -27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;; -27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;; -27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;; -27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;; -27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;; -27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;; -27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;; -27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;; -27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;; -27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;; -27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;; -27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;; -27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;; -27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;; -27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;; -27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;; -27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;; -27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;; -27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;; -27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;; -27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;; -27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;; -27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; -27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; -27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; -27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; -27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;; -27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;; -27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;; -27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;; -27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;; -27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;; -27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;; -27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;; -27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;; -27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;; -27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;; -27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;; -27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; -27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; -27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; -27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; -27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; -27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; -27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; -27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; -27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; -2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;; -2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;; -2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;; -2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;; -2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;; -2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;; -2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;; -2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;; -2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;; -2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;; -280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;; -280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;; -280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;; -280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;; -280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;; -280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;; -2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;; -2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;; -2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;; -2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;; -2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;; -2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;; -2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;; -2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;; -2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;; -2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;; -281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;; -281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;; -281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;; -281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;; -281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;; -281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;; -2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;; -2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;; -2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;; -2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;; -2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;; -2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;; -2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;; -2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;; -2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;; -2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;; -282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;; -282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;; -282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;; -282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;; -282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;; -282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;; -2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;; -2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;; -2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;; -2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;; -2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;; -2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;; -2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;; -2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;; -2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;; -2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;; -283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;; -283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;; -283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;; -283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;; -283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;; -283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;; -2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;; -2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;; -2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;; -2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;; -2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;; -2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;; -2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;; -2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;; -2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;; -2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;; -284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;; -284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;; -284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;; -284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;; -284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;; -284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;; -2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;; -2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;; -2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;; -2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;; -2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;; -2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;; -2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;; -2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;; -2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;; -2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;; -285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;; -285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;; -285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;; -285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;; -285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;; -285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;; -2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;; -2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;; -2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;; -2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;; -2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;; -2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;; -2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;; -2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;; -2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;; -2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;; -286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;; -286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;; -286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;; -286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;; -286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;; -286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;; -2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;; -2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;; -2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;; -2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;; -2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;; -2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;; -2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;; -2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;; -2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;; -2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;; -287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;; -287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;; -287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;; -287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;; -287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;; -287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;; -2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;; -2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;; -2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;; -2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;; -2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;; -2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;; -2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;; -2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;; -2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;; -2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;; -288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;; -288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;; -288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;; -288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;; -288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;; -288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;; -2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;; -2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;; -2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;; -2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;; -2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;; -2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;; -2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;; -2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;; -2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;; -2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;; -289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;; -289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;; -289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;; -289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;; -289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;; -289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;; -28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;; -28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;; -28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;; -28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;; -28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;; -28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;; -28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;; -28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;; -28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;; -28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;; -28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;; -28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;; -28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;; -28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;; -28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;; -28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;; -28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;; -28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;; -28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;; -28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;; -28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;; -28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;; -28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;; -28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;; -28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;; -28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;; -28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;; -28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;; -28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;; -28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;; -28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;; -28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;; -28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;; -28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;; -28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;; -28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;; -28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;; -28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;; -28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;; -28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;; -28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;; -28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;; -28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;; -28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;; -28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;; -28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;; -28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;; -28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;; -28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;; -28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;; -28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;; -28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;; -28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;; -28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;; -28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;; -28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;; -28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;; -28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;; -28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;; -28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;; -28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;; -28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;; -28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;; -28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;; -28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;; -28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;; -28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;; -28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;; -28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;; -28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;; -28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;; -28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;; -28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;; -28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;; -28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;; -28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;; -28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;; -28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;; -28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;; -28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;; -28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;; -28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;; -28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;; -28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;; -28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;; -28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;; -28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;; -28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;; -28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;; -28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;; -28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;; -28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;; -28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;; -28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;; -28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;; -28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;; -2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; -290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; -290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; -2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; -2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; -2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; -2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;; -292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;; -292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;; -2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;; -2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;; -2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;; -2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;; -2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;; -293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;; -293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; -2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; -2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; -2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; -294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; -294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; -294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; -294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; -294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; -2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; -2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; -2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; -2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; -2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; -2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; -2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; -2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; -2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; -2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; -295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; -295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; -295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; -295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; -295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; -295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; -2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; -2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; -2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; -2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; -2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; -296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; -296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; -296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; -296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;; -2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; -2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;; -2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;; -297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;; -297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;; -297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;; -297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;; -2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;; -2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;; -2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;; -2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;; -2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;; -2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; -2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; -2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;; -2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;; -2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;; -298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;; -298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;; -298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;; -298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;; -298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;; -298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;; -2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;; -2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;; -2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;; -2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; -2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; -2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; -2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; -2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; -2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; -2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;; -299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;; -299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; -299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;; -299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;; -299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;; -299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;; -29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; -29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; -29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;; -29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;; -29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; -29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;; -29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;; -29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;; -29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;; -29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;; -29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;; -29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;; -29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;; -29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;; -29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;; -29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; -29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; -29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;; -29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;; -29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; -29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;; -29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;; -29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; -29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;; -29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;; -29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;; -29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;; -29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; -29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; -29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; -29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; -29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;; -29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;; -29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;; -29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;; -29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;; -29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;; -29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; -29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;; -29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;; -29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;; -29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; -29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; -29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; -29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; -29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;; -29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;; -29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;; -29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;; -29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;; -29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;; -29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; -29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; -29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; -29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;; -29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;; -29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; -29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;; -29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; -29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; -29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;; -29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;; -29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;; -29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;; -29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;; -29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;; -29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; -29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;; -29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; -29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;; -29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;; -29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; -29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; -29FE;TINY;Sm;0;ON;;;;;N;;;;; -29FF;MINY;Sm;0;ON;;;;;N;;;;; -2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;; -2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; -2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;; -2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;; -2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;; -2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;; -2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;; -2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;; -2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; -2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;; -2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;; -2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;; -2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;; -2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;; -2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;; -2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; -2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; -2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;; -2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;; -2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;; -2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;; -2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;; -2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -2A1D;JOIN;Sm;0;ON;;;;;N;;;;; -2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;; -2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;; -2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;; -2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;; -2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; -2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; -2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;; -2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;; -2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;; -2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; -2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;; -2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; -2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;; -2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;; -2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; -2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;; -2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;; -2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; -2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; -2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; -2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;; -2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;; -2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;; -2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;; -2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;; -2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;; -2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;; -2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;; -2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;; -2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;; -2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; -2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;; -2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;; -2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; -2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; -2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; -2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; -2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; -2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; -2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; -2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; -2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; -2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; -2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;; -2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;; -2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;; -2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;; -2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;; -2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;; -2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;; -2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;; -2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;; -2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;; -2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; -2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; -2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; -2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; -2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;; -2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;; -2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; -2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; -2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; -2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; -2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;; -2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;; -2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; -2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; -2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;; -2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;; -2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;; -2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;; -2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;; -2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;; -2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;; -2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; -2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; -2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;; -2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;; -2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; -2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; -2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; -2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; -2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;; -2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;; -2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;; -2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;; -2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;; -2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;; -2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;; -2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;; -2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; -2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;; -2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;; -2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;; -2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; -2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;; -2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;; -2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; -2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; -2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;; -2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; -2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; -2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;; -2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;; -2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;; -2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;; -2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;; -2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; -2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; -2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; -2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; -2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; -2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; -2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; -2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; -2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; -2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30; -2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31; -2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32; -2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33; -2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34; -2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35; -2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36; -2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37; -2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38; -2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39; -2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A; -2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B; -2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C; -2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D; -2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E; -2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F; -2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40; -2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41; -2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42; -2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43; -2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44; -2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45; -2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46; -2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47; -2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48; -2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49; -2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A; -2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B; -2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C; -2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D; -2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E; -2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F; -2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50; -2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51; -2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52; -2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53; -2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54; -2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55; -2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56; -2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57; -2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58; -2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59; -2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A; -2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B; -2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C; -2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D; -2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E; -2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00 -2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01 -2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02 -2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03 -2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04 -2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05 -2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06 -2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07 -2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08 -2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09 -2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A -2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B -2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C -2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D -2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E -2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F -2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10 -2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11 -2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12 -2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13 -2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14 -2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15 -2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16 -2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17 -2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18 -2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19 -2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A -2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B -2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C -2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D -2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E -2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F -2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20 -2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21 -2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22 -2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23 -2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24 -2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25 -2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26 -2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27 -2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28 -2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29 -2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A -2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B -2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C -2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D -2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E -2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81; -2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80 -2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83; -2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82 -2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85; -2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84 -2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87; -2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86 -2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89; -2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88 -2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B; -2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A -2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D; -2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C -2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F; -2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E -2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91; -2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90 -2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93; -2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92 -2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95; -2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94 -2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97; -2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96 -2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99; -2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98 -2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B; -2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A -2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D; -2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C -2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F; -2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E -2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1; -2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0 -2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3; -2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2 -2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5; -2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4 -2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7; -2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6 -2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9; -2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8 -2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB; -2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA -2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD; -2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC -2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF; -2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE -2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1; -2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0 -2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3; -2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2 -2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5; -2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4 -2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7; -2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6 -2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9; -2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8 -2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB; -2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA -2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD; -2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC -2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF; -2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE -2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1; -2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0 -2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3; -2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2 -2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5; -2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4 -2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7; -2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6 -2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9; -2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8 -2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB; -2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA -2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD; -2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC -2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF; -2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE -2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1; -2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0 -2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3; -2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2 -2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5; -2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4 -2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7; -2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6 -2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9; -2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8 -2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB; -2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA -2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD; -2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC -2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF; -2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE -2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1; -2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0 -2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3; -2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2 -2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;; -2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;; -2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;; -2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;; -2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;; -2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;; -2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;; -2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;; -2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; -2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; -2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;; -2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;; -2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;; -2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;; -2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;Khutsuri;10A0;;10A0 -2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;Khutsuri;10A1;;10A1 -2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;Khutsuri;10A2;;10A2 -2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;Khutsuri;10A3;;10A3 -2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;Khutsuri;10A4;;10A4 -2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;Khutsuri;10A5;;10A5 -2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;Khutsuri;10A6;;10A6 -2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;Khutsuri;10A7;;10A7 -2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;Khutsuri;10A8;;10A8 -2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;Khutsuri;10A9;;10A9 -2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;Khutsuri;10AA;;10AA -2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;Khutsuri;10AB;;10AB -2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;Khutsuri;10AC;;10AC -2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;Khutsuri;10AD;;10AD -2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;Khutsuri;10AE;;10AE -2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;Khutsuri;10AF;;10AF -2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;Khutsuri;10B0;;10B0 -2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;Khutsuri;10B1;;10B1 -2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;Khutsuri;10B2;;10B2 -2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;Khutsuri;10B3;;10B3 -2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;Khutsuri;10B4;;10B4 -2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;Khutsuri;10B5;;10B5 -2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;Khutsuri;10B6;;10B6 -2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;Khutsuri;10B7;;10B7 -2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;Khutsuri;10B8;;10B8 -2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;Khutsuri;10B9;;10B9 -2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;Khutsuri;10BA;;10BA -2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;Khutsuri;10BB;;10BB -2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;Khutsuri;10BC;;10BC -2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;Khutsuri;10BD;;10BD -2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;Khutsuri;10BE;;10BE -2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;Khutsuri;10BF;;10BF -2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;Khutsuri;10C0;;10C0 -2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;Khutsuri;10C1;;10C1 -2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;Khutsuri;10C2;;10C2 -2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;Khutsuri;10C3;;10C3 -2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;Khutsuri;10C4;;10C4 -2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;Khutsuri;10C5;;10C5 -2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;; -2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;; -2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;; -2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;; -2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;; -2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;; -2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;; -2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;; -2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;; -2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;; -2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;; -2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;; -2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;; -2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;; -2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;; -2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;; -2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;Tuareg yab;;; -2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;; -2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;; -2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;; -2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;; -2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;; -2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;; -2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;; -2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;; -2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;; -2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;; -2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;; -2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;; -2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;; -2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;; -2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;; -2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;; -2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;; -2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;; -2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;Tuareg yaw;;; -2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;; -2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;; -2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;; -2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;; -2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;Adrar yaj;;; -2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;; -2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;; -2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;; -2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;; -2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;; -2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;; -2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;; -2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;; -2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;; -2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;; -2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;; -2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;harpoon yaz;;; -2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;; -2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;tamatart;;; -2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;; -2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;; -2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;; -2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;; -2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;; -2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;; -2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;; -2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;; -2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;; -2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;; -2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;; -2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;; -2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;; -2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;; -2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;; -2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;; -2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;; -2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;; -2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;; -2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;; -2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;; -2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;; -2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;; -2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;; -2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;; -2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;; -2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;; -2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;; -2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;; -2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;; -2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;; -2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;; -2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;; -2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;; -2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;; -2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;; -2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;; -2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; -2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; -2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; -2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;; -2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;; -2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; -2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; -2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;; -2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;; -2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;; -2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;; -2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;; -2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;; -2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;; -2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;; -2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;; -2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;; -2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;; -2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;; -2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;; -2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;; -2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;; -2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;; -2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;; -2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;; -2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;; -2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;; -2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;; -2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;; -2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;; -2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;; -2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;; -2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;; -2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;; -2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;; -2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;; -2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;; -2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;; -2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;; -2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;; -2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;; -2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;; -2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; -2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; -2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; -2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; -2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;; -2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;; -2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;; -2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;; -2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; -2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; -2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;; -2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;; -2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;; -2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;; -2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;; -2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;; -2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;; -2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;; -2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; -2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; -2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; -2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;; -2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;; -2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;; -2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;; -2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;; -2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;; -2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;; -2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;; -2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;; -2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;; -2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;; -2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;; -2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;; -2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;; -2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;; -2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;; -2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;; -2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;; -2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;; -2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;; -2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;; -2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;; -2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;; -2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;; -2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;; -2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;; -2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;; -2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;; -2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;; -2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;; -2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;; -2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;; -2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;; -2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;; -2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;; -2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;; -2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;; -2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;; -2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;; -2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;; -2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;; -2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;; -2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;; -2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;; -2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;; -2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;; -2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;; -2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;; -2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;; -2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;; -2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;; -2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;; -2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;; -2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;; -2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;; -2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;; -2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;; -2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;; -2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;; -2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;; -2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;; -2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;; -2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;; -2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;; -2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;; -2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;; -2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;; -2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;; -2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;; -2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;; -2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;; -2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;; -2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;; -2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;; -2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;; -2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;; -2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;; -2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;; -2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;; -2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;; -2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;; -2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;; -2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;; -2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;; -2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;; -2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;; -2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;; -2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;; -2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;; -2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;; -2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;; -2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;; -2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;; -2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;; -2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;; -2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;; -2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;; -2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;; -2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;; -2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;; -2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;; -2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;; -2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;; -2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; -2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; -2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; -2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; -2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; -2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; -2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;; -2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;; -2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;; -2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;; -2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;; -2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;; -2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;; -2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;; -2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;; -2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;; -2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;; -2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;; -2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;; -2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;; -2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;; -2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;; -2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;; -2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;; -2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;; -2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;; -2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;; -2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;; -2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;; -2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;; -2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;; -2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;; -2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;; -2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;; -2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;; -2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;; -2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;; -2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;; -2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;; -2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;; -2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;; -2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;; -2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;; -2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;; -2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;; -2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;; -2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;; -2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;; -2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;; -2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;; -2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;; -2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;; -2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;; -2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;; -2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;; -2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;; -2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;; -2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;; -2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;; -2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;; -2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;; -2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;; -2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;; -2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;; -2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;; -2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;; -2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;; -2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;; -2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;; -2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;; -2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;; -2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;; -2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;; -2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;; -2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;; -2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;; -2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;; -2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;; -2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;; -2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;; -2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;; -2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;; -2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;; -2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;; -2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;; -2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;; -2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;; -2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;; -2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;; -2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;; -2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;; -2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;; -2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;; -2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;; -2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;; -2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;; -2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;; -2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;; -2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;; -2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;; -2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;; -2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;; -2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;; -2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;; -2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;; -2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;; -2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;; -2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;; -2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;; -2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;; -2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;; -2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;; -2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;; -2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;; -2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;; -2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;; -2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;; -2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;; -2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;; -2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;; -2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;; -2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;; -2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;; -2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;; -2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;; -2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;; -2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;; -2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;; -2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;; -2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;; -2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;; -2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;; -2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;; -2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;; -2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;; -2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;; -2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;; -2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;; -2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;; -2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;; -2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;; -2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;; -2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;; -2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;; -2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;; -2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;; -2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;; -2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;; -2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;; -2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;; -2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;; -2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;; -2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;; -2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;; -2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;; -2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;; -2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;; -2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;; -2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;; -2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;; -2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;; -2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;; -2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;; -2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;; -2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;; -2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;; -2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;; -2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;; -2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;; -2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;; -2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;; -2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;; -2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;; -2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;; -2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;; -2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;; -2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;; -2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;; -2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;; -2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;; -2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;; -2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;; -2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;; -2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;; -2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;; -2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;; -2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;; -2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;; -2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;; -2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;; -2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;; -2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;; -2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;; -2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;; -2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;; -2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;; -2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;; -2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;; -2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;; -2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;; -2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;; -2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;; -2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;; -2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;; -2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;; -2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;; -2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;; -2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;; -2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;; -2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;; -2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;; -2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;; -2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;; -2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;; -2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;; -2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;; -2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;; -2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;; -2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;; -2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;; -2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;; -2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;; -2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;; -2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;; -2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;; -2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;; -2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;; -2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;; -2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;; -2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;; -2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;; -2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;; -2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;; -2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;; -2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;; -3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;; -3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;; -3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;; -3003;DITTO MARK;Po;0;ON;;;;;N;;;;; -3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;; -3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; -3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;; -3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;; -3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;; -3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;; -300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;; -300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;; -300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;; -300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;; -300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;; -300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;; -3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;; -3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;; -3012;POSTAL MARK;So;0;ON;;;;;N;;;;; -3013;GETA MARK;So;0;ON;;;;;N;;;;; -3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;; -3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;; -3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;; -3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;; -3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;; -3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;; -301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;; -301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;; -301C;WAVE DASH;Pd;0;ON;;;;;N;;;;; -301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;; -301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; -301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; -3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;; -3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;; -3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;; -3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;; -3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;; -3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;; -3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;; -3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;; -3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;; -3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;; -302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;; -302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;; -302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;; -302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;; -302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; -302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; -3030;WAVY DASH;Pd;0;ON;;;;;N;;;;; -3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;; -3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;; -3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;; -3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;; -3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;; -3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;; -3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;; -3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;; -3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;; -303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;; -303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; -303C;MASU MARK;Lo;0;L;;;;;N;;;;; -303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;; -303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;; -303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;; -3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; -3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;; -3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; -3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;; -3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; -3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;; -3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; -3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;; -3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; -304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;; -304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;; -304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;; -304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;; -304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;; -304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;; -3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;; -3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;; -3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;; -3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;; -3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;; -3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;; -3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;; -3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;; -3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;; -3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;; -305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;; -305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;; -305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;; -305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;; -305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;; -305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;; -3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;; -3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;; -3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;; -3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; -3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;; -3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;; -3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;; -3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;; -3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;; -3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;; -306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;; -306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;; -306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;; -306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;; -306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;; -306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;; -3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;; -3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;; -3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;; -3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;; -3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;; -3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;; -3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;; -3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;; -3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;; -3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;; -307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;; -307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;; -307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;; -307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;; -307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;; -307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;; -3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;; -3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;; -3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;; -3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; -3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;; -3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; -3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;; -3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; -3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;; -3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;; -308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;; -308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;; -308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;; -308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;; -308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; -308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;; -3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;; -3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;; -3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;; -3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;; -3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;; -3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; -3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; -3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;; -309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;; -309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;; -309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;; -309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;; -309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;; -309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;; -30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;; -30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; -30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;; -30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; -30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;; -30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; -30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;; -30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; -30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;; -30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; -30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;; -30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;; -30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;; -30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;; -30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;; -30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;; -30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;; -30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;; -30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;; -30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;; -30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;; -30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;; -30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;; -30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;; -30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;; -30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;; -30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;; -30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;; -30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;; -30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;; -30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;; -30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;; -30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;; -30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;; -30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;; -30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; -30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;; -30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;; -30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;; -30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;; -30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;; -30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;; -30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;; -30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;; -30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;; -30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;; -30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;; -30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;; -30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;; -30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;; -30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;; -30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;; -30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;; -30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;; -30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;; -30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;; -30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;; -30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;; -30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;; -30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;; -30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;; -30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;; -30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;; -30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;; -30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;; -30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;; -30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;; -30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; -30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;; -30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; -30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;; -30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; -30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;; -30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;; -30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;; -30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;; -30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;; -30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;; -30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; -30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;; -30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;; -30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;; -30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;; -30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;; -30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;; -30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; -30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; -30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;; -30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;; -30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;; -30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;; -30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;; -30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;; -30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;; -30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;; -30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;; -3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;; -3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;; -3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;; -3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;; -3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;; -310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;; -310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;; -310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;; -310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;; -310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;; -310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;; -3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;; -3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;; -3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;; -3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;; -3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;; -3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;; -3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;; -3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;; -3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;; -3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;; -311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;; -311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;; -311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;; -311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;; -311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;; -311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;; -3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;; -3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;; -3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;; -3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;; -3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;; -3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;; -3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;; -3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;; -3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;; -3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;; -312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;; -312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;; -312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;; -3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;; -3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;; -3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;; -3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;; -3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;; -3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;; -3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;; -3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;; -3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;; -313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;; -313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;; -313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;; -313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;; -313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;; -313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;; -3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;; -3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;; -3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;; -3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;; -3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;; -3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;; -3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;; -3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;; -3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;; -3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;; -314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;; -314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;; -314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;; -314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;; -314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;; -314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;; -3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;; -3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;; -3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;; -3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;; -3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;; -3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;; -3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;; -3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;; -3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;; -3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;; -315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;; -315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;; -315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;; -315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;; -315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;; -315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;; -3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;; -3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;; -3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;; -3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;; -3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;; -3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;; -3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;; -3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;; -3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;; -3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;; -316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;; -316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;; -316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;; -316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;; -316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;; -316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;; -3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;; -3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;; -3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;; -3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;; -3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;; -3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;; -3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;; -3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;; -3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;; -3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;; -317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;; -317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;; -317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;; -317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;; -317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;; -317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;; -3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;; -3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;; -3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;; -3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;; -3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;; -3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;; -3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;; -3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;; -3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;; -3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;; -318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;; -318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;; -318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;; -318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;; -318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;; -3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;; -3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;; -3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;Kaeriten;;; -3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;Kaeriten;;; -3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;Kaeriten;;; -3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;Kaeriten;;; -3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;; -3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;; -3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;; -3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;; -319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;; -319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;; -319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;; -319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;; -319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;; -319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;; -31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;; -31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;; -31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;; -31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;; -31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;; -31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;; -31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;; -31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;; -31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;; -31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;; -31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;; -31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;; -31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;; -31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;; -31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;; -31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;; -31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;; -31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;; -31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;; -31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;; -31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;; -31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;; -31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;; -31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;; -31C0;CJK STROKE T;So;0;ON;;;;;N;;;;; -31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;; -31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;; -31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;; -31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;; -31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;; -31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;; -31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;; -31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;; -31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;; -31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;; -31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;; -31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;; -31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;; -31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;; -31CF;CJK STROKE N;So;0;ON;;;;;N;;;;; -31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;; -31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;; -31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;; -31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;; -31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;; -31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;; -31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;; -31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;; -31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;; -31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;; -31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;; -31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;; -31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;; -31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;; -31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;; -31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;; -3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;; -3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;; -3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;; -3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;; -3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;; -3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;; -3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;; -3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;; -3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;; -3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;; -320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;; -320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;; -320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;; -320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;; -320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;; -320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;; -3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;; -3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;; -3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;; -3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;; -3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;; -3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;; -3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;; -3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;; -3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;; -3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;; -321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;; -321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;; -321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;; -321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;; -321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;; -3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;; -3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;; -3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;; -3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;; -3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;; -3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;; -3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;; -3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;; -3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;; -3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;; -322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;; -322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;; -322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;; -322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;; -322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;; -322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;; -3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;; -3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;; -3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;; -3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;; -3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;; -3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;; -3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;; -3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;; -3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;; -3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;; -323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;; -323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;; -323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;; -323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;; -323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;; -323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;; -3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;; -3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;; -3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;; -3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;; -3250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;N;;;;; -3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;; -3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;; -3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;; -3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;; -3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;; -3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;; -3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;; -3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;; -3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;; -325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;; -325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;; -325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;; -325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;; -325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;; -325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;; -3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;; -3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;; -3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;; -3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;; -3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;; -3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;; -3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;; -3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;; -3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;; -3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;; -326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;; -326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;; -326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;; -326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;; -326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;; -326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;; -3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;; -3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;; -3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;; -3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;; -3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;; -3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;; -3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;; -3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;; -3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;; -3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;; -327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;; -327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;; -327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;; -327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;; -327E;CIRCLED HANGUL IEUNG U;So;0;ON;<circle> 110B 116E;;;;N;;;;; -327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;; -3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;; -3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;; -3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;; -3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;; -3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;; -3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;; -3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;; -3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;; -3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;; -3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;; -328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;; -328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;; -328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;; -328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;; -328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;; -328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;; -3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;; -3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;; -3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;; -3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;; -3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;; -3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;; -3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;; -3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;; -3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;; -3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;; -329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;; -329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;; -329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;; -329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;; -329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;; -329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;; -32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;; -32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;; -32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;; -32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;; -32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;; -32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;; -32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;; -32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;; -32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;; -32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;; -32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;; -32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;; -32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;; -32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;; -32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;; -32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;; -32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;; -32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;; -32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;; -32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;; -32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;; -32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;; -32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;; -32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;; -32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;; -32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;; -32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;; -32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;; -32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;; -32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;; -32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;; -32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;; -32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;; -32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;; -32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;; -32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;; -32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;; -32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;; -32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;; -32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;; -32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;; -32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;; -32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;; -32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;; -32CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;; -32CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;; -32CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;; -32CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;N;;;;; -32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;; -32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;; -32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;; -32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;; -32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;; -32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;; -32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;; -32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;; -32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;; -32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;; -32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;; -32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;; -32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;; -32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;; -32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;; -32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;; -32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;; -32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;; -32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;; -32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;; -32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;; -32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;; -32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;; -32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;; -32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;; -32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;; -32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;; -32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;; -32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;; -32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;; -32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;; -32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;; -32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;; -32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;; -32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;; -32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;; -32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;; -32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;; -32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;; -32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;; -32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;; -32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;; -32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;; -32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;; -32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;; -32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;; -32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;; -3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;; -3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;; -3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;; -3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;; -3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;; -3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;; -3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;; -3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;; -3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;; -3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;; -330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;; -330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;; -330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;; -330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;; -330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;; -330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;; -3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;; -3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;; -3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;; -3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;; -3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;; -3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;; -3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;; -3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;; -3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;; -3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;; -331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;; -331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;; -331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;; -331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;; -331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;; -331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;; -3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;; -3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;; -3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;; -3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;; -3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;; -3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;; -3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;; -3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;; -3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;; -3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;; -332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;; -332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;; -332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;; -332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;; -332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;; -332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;; -3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;; -3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;; -3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;; -3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;; -3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;; -3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;; -3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;; -3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;; -3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;; -3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;; -333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;; -333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;; -333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;; -333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;; -333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;; -333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;; -3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;; -3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;; -3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;; -3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;; -3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;; -3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;; -3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;; -3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;; -3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;; -3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;; -334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;; -334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;; -334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;; -334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;; -334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;; -334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;; -3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;; -3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;; -3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;; -3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;; -3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;; -3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;; -3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;; -3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;; -3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;; -3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;; -335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;; -335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;; -335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;; -335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;; -335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;; -335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;; -3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;; -3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;; -3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;; -3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;; -3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;; -3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;; -3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;; -3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;; -3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;; -3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;; -336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;; -336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;; -336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;; -336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;; -336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;; -336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;; -3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;; -3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;; -3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;; -3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;; -3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;; -3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;; -3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;; -3377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;; -3378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;; -3379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;; -337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;N;;;;; -337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;; -337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;; -337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;; -337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;; -337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;; -3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;; -3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;; -3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;; -3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;; -3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;; -3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;; -3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;; -3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;; -3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;; -3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;; -338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;; -338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;; -338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;; -338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;; -338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;; -338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;; -3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;; -3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;; -3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;; -3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;; -3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;; -3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;; -3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;; -3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;; -3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;; -3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;; -339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;; -339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;; -339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;; -339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;; -339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;; -339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;; -33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;; -33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;; -33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;; -33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;; -33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;; -33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;; -33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;; -33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;; -33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;; -33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;; -33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;; -33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;; -33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;; -33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;; -33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;; -33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;; -33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;; -33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;; -33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;; -33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;; -33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;; -33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;; -33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;; -33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;; -33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;; -33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;; -33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;; -33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;; -33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;; -33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;; -33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;; -33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;; -33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;; -33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;; -33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;; -33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;; -33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;; -33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;; -33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;; -33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;; -33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;; -33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;; -33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;; -33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;; -33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;; -33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;; -33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;; -33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;; -33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;; -33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;; -33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;; -33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;; -33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;; -33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;; -33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;; -33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;; -33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;; -33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;; -33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;; -33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;; -33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;; -33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;; -33DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;; -33DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;; -33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;; -33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;; -33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;; -33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;; -33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;; -33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;; -33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;; -33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;; -33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;; -33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;; -33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;; -33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;; -33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;; -33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;; -33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;; -33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;; -33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;; -33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;; -33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;; -33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;; -33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;; -33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;; -33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;; -33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;; -33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;; -33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;; -33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;; -33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;; -33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;; -33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;; -33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;; -33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;; -3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;; -4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;; -4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;; -4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;; -4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;; -4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;; -4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; -4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;; -4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;; -4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;; -4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;; -4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;; -4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;; -4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;; -4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;; -4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;; -4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;; -4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;; -4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; -4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;; -4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;; -4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;; -4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;; -4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;; -4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;; -4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;; -4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;; -4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;; -4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;; -4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;; -4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;; -4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;; -4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;; -4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;; -4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;; -4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;; -4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;; -4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;; -4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;; -4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; -4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;; -4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;; -4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;; -4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; -4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;; -4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;; -4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;; -4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;; -4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;; -4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;; -4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;; -4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;; -4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;; -4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;; -4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;; -4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;; -4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;; -4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;; -4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;; -4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;; -4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;; -4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;; -4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;; -4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;; -4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; -4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; -4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;; -9FBB;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;; -A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; -A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; -A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; -A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;; -A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;; -A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;; -A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;; -A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;; -A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;; -A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;; -A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;; -A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;; -A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;; -A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;; -A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;; -A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;; -A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;; -A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;; -A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;; -A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;; -A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;; -A015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;; -A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;; -A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;; -A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;; -A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;; -A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;; -A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;; -A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;; -A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;; -A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;; -A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;; -A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;; -A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;; -A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;; -A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;; -A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;; -A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;; -A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;; -A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;; -A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;; -A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;; -A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;; -A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;; -A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;; -A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;; -A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;; -A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;; -A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;; -A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;; -A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;; -A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;; -A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;; -A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;; -A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;; -A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;; -A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;; -A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;; -A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;; -A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;; -A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;; -A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;; -A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;; -A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;; -A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;; -A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;; -A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;; -A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;; -A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;; -A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;; -A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;; -A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;; -A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;; -A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;; -A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;; -A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;; -A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;; -A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;; -A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;; -A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;; -A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;; -A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;; -A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;; -A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;; -A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;; -A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;; -A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;; -A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;; -A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;; -A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;; -A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;; -A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;; -A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;; -A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;; -A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;; -A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;; -A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;; -A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;; -A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;; -A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;; -A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;; -A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;; -A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;; -A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;; -A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;; -A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;; -A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;; -A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;; -A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;; -A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;; -A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;; -A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;; -A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;; -A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;; -A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;; -A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;; -A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;; -A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;; -A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;; -A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;; -A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;; -A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;; -A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;; -A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;; -A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;; -A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;; -A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;; -A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;; -A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;; -A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;; -A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;; -A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;; -A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;; -A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;; -A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;; -A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;; -A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;; -A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;; -A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;; -A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;; -A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;; -A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;; -A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;; -A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;; -A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;; -A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;; -A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;; -A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;; -A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;; -A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;; -A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;; -A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;; -A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;; -A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;; -A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;; -A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;; -A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;; -A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;; -A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;; -A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;; -A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;; -A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;; -A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;; -A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;; -A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;; -A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;; -A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;; -A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;; -A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;; -A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;; -A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;; -A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;; -A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;; -A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;; -A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;; -A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;; -A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;; -A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;; -A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;; -A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;; -A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;; -A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;; -A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;; -A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;; -A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;; -A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;; -A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;; -A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;; -A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;; -A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;; -A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;; -A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;; -A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;; -A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;; -A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;; -A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;; -A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;; -A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;; -A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;; -A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;; -A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;; -A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;; -A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;; -A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;; -A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;; -A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;; -A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;; -A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;; -A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;; -A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;; -A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;; -A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;; -A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;; -A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;; -A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;; -A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;; -A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;; -A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;; -A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;; -A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;; -A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;; -A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;; -A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;; -A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;; -A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;; -A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;; -A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;; -A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;; -A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;; -A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;; -A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;; -A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;; -A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;; -A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;; -A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;; -A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;; -A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;; -A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;; -A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;; -A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;; -A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;; -A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;; -A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;; -A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;; -A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;; -A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;; -A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;; -A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;; -A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;; -A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;; -A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;; -A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;; -A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;; -A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;; -A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;; -A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;; -A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;; -A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;; -A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;; -A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;; -A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;; -A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;; -A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;; -A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;; -A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;; -A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;; -A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;; -A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;; -A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;; -A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;; -A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;; -A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;; -A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;; -A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;; -A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;; -A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;; -A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;; -A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;; -A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;; -A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;; -A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;; -A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;; -A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;; -A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;; -A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;; -A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;; -A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;; -A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;; -A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;; -A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;; -A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;; -A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;; -A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;; -A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;; -A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;; -A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;; -A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;; -A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;; -A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;; -A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;; -A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;; -A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;; -A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;; -A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;; -A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;; -A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;; -A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;; -A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;; -A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;; -A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;; -A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;; -A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;; -A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;; -A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;; -A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;; -A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;; -A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;; -A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;; -A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;; -A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;; -A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;; -A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;; -A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;; -A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;; -A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;; -A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;; -A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;; -A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;; -A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;; -A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;; -A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;; -A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;; -A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;; -A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;; -A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;; -A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;; -A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;; -A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;; -A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;; -A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; -A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;; -A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;; -A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;; -A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;; -A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;; -A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; -A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;; -A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;; -A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;; -A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; -A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;; -A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;; -A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; -A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;; -A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;; -A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;; -A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; -A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;; -A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;; -A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;; -A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;; -A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;; -A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;; -A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;; -A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;; -A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;; -A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;; -A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;; -A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;; -A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;; -A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;; -A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;; -A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;; -A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;; -A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;; -A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;; -A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;; -A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;; -A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;; -A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;; -A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;; -A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;; -A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;; -A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;; -A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;; -A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;; -A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;; -A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;; -A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;; -A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;; -A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;; -A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;; -A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;; -A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;; -A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;; -A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;; -A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;; -A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;; -A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;; -A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;; -A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;; -A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;; -A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;; -A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;; -A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;; -A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;; -A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;; -A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;; -A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;; -A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;; -A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;; -A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;; -A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;; -A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;; -A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;; -A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;; -A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;; -A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;; -A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;; -A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;; -A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;; -A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;; -A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;; -A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;; -A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;; -A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;; -A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;; -A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;; -A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;; -A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;; -A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;; -A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;; -A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;; -A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;; -A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;; -A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;; -A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;; -A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;; -A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;; -A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;; -A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;; -A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;; -A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;; -A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;; -A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;; -A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;; -A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;; -A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;; -A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;; -A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;; -A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;; -A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;; -A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;; -A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;; -A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;; -A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;; -A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;; -A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;; -A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;; -A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;; -A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;; -A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;; -A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;; -A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;; -A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;; -A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;; -A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;; -A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;; -A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;; -A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;; -A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;; -A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;; -A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;; -A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;; -A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;; -A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;; -A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;; -A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;; -A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;; -A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;; -A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;; -A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;; -A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;; -A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;; -A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;; -A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;; -A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;; -A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;; -A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;; -A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;; -A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;; -A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;; -A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;; -A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;; -A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;; -A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;; -A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;; -A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;; -A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;; -A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;; -A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;; -A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;; -A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;; -A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;; -A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;; -A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;; -A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;; -A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;; -A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;; -A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;; -A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;; -A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;; -A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;; -A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;; -A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;; -A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;; -A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;; -A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;; -A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;; -A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;; -A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;; -A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;; -A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;; -A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;; -A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;; -A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;; -A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;; -A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;; -A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;; -A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;; -A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;; -A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;; -A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;; -A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;; -A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;; -A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;; -A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;; -A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;; -A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;; -A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;; -A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;; -A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;; -A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;; -A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;; -A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;; -A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;; -A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;; -A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;; -A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;; -A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;; -A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;; -A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;; -A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;; -A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;; -A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;; -A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;; -A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;; -A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;; -A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;; -A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;; -A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;; -A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;; -A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;; -A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;; -A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;; -A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;; -A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;; -A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;; -A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;; -A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;; -A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;; -A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;; -A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;; -A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;; -A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;; -A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;; -A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;; -A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;; -A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;; -A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;; -A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;; -A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;; -A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;; -A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;; -A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;; -A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;; -A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;; -A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;; -A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;; -A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;; -A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;; -A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;; -A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;; -A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;; -A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;; -A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;; -A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;; -A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;; -A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;; -A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;; -A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;; -A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;; -A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;; -A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;; -A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;; -A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;; -A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;; -A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;; -A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;; -A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;; -A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;; -A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;; -A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;; -A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;; -A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;; -A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;; -A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;; -A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;; -A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;; -A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;; -A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;; -A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;; -A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;; -A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;; -A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;; -A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;; -A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;; -A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;; -A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;; -A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;; -A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;; -A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;; -A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;; -A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;; -A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;; -A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;; -A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;; -A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;; -A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;; -A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;; -A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;; -A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;; -A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;; -A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;; -A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;; -A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;; -A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;; -A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;; -A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;; -A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;; -A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;; -A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;; -A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;; -A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;; -A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;; -A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; -A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;; -A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;; -A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;; -A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;; -A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;; -A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;; -A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; -A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;; -A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;; -A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;; -A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;; -A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;; -A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;; -A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; -A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;; -A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;; -A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; -A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;; -A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;; -A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;; -A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; -A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;; -A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;; -A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;; -A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;; -A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;; -A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;; -A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;; -A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;; -A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;; -A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;; -A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;; -A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;; -A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;; -A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;; -A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;; -A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;; -A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;; -A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;; -A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;; -A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;; -A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;; -A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;; -A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;; -A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;; -A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;; -A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;; -A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;; -A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;; -A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;; -A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;; -A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;; -A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;; -A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;; -A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;; -A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;; -A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;; -A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;; -A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;; -A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;; -A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;; -A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;; -A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;; -A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;; -A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;; -A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;; -A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; -A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;; -A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;; -A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;; -A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;; -A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;; -A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;; -A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;; -A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; -A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;; -A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;; -A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; -A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;; -A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;; -A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; -A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;; -A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;; -A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; -A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;; -A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;; -A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;; -A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;; -A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;; -A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;; -A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;; -A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;; -A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;; -A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;; -A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;; -A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;; -A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;; -A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;; -A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;; -A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;; -A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;; -A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;; -A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;; -A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;; -A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;; -A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;; -A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;; -A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;; -A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;; -A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;; -A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;; -A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;; -A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;; -A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;; -A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;; -A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;; -A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;; -A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;; -A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;; -A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;; -A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;; -A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;; -A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;; -A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;; -A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;; -A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;; -A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;; -A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;; -A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;; -A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;; -A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;; -A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;; -A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;; -A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;; -A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;; -A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;; -A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;; -A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;; -A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;; -A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;; -A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;; -A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;; -A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;; -A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;; -A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;; -A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;; -A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;; -A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;; -A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;; -A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;; -A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;; -A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;; -A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;; -A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;; -A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;; -A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;; -A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;; -A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;; -A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;; -A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;; -A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;; -A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;; -A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;; -A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;; -A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;; -A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;; -A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;; -A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;; -A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;; -A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;; -A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;; -A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;; -A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;; -A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;; -A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;; -A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;; -A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;; -A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;; -A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;; -A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;; -A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;; -A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;; -A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;; -A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;; -A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; -A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;; -A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;; -A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;; -A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;; -A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;; -A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;; -A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; -A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;; -A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;; -A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;; -A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; -A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;; -A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;; -A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;; -A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; -A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;; -A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;; -A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;; -A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;; -A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;; -A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;; -A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;; -A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;; -A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;; -A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;; -A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;; -A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;; -A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;; -A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;; -A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;; -A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;; -A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;; -A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;; -A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;; -A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;; -A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;; -A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;; -A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;; -A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;; -A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;; -A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;; -A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;; -A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;; -A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;; -A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;; -A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;; -A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;; -A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;; -A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;; -A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;; -A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;; -A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;; -A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;; -A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;; -A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;; -A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;; -A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;; -A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;; -A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;; -A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;; -A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;; -A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;; -A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;; -A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;; -A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;; -A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;; -A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;; -A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;; -A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;; -A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;; -A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;; -A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;; -A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;; -A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;; -A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;; -A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;; -A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;; -A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;; -A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;; -A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;; -A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;; -A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;; -A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;; -A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;; -A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;; -A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;; -A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;; -A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;; -A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;; -A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;; -A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;; -A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;; -A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;; -A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;; -A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;; -A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;; -A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;; -A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;; -A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;; -A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;; -A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; -A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;; -A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;; -A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;; -A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;; -A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;; -A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;; -A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; -A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;; -A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;; -A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;; -A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; -A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;; -A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;; -A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;; -A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; -A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;; -A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;; -A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;; -A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;; -A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;; -A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;; -A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;; -A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;; -A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;; -A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;; -A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;; -A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;; -A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;; -A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;; -A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;; -A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;; -A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;; -A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;; -A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;; -A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;; -A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;; -A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;; -A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;; -A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;; -A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;; -A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;; -A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;; -A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;; -A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;; -A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;; -A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;; -A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;; -A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;; -A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;; -A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;; -A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;; -A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;; -A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;; -A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;; -A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;; -A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;; -A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;; -A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;; -A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;; -A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;; -A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;; -A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;; -A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;; -A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;; -A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;; -A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;; -A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;; -A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;; -A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;; -A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;; -A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;; -A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;; -A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;; -A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;; -A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;; -A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;; -A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;; -A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;; -A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;; -A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;; -A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;; -A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;; -A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;; -A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;; -A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;; -A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;; -A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;; -A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;; -A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;; -A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;; -A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;; -A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;; -A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;; -A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;; -A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;; -A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;; -A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;; -A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;; -A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;; -A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;; -A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;; -A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;; -A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;; -A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;; -A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;; -A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;; -A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;; -A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;; -A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;; -A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;; -A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;; -A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;; -A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;; -A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;; -A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;; -A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;; -A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;; -A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;; -A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;; -A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;; -A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;; -A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;; -A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;; -A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;; -A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;; -A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;; -A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;; -A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;; -A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;; -A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;; -A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;; -A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;; -A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;; -A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; -A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;; -A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;; -A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;; -A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;; -A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;; -A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;; -A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;; -A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;; -A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;; -A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; -A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;; -A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;; -A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; -A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;; -A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;; -A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;; -A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;; -A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;; -A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;; -A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;; -A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;; -A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;; -A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;; -A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;; -A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; -A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;; -A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;; -A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;; -A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;; -A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;; -A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;; -A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;; -A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;; -A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;; -A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;; -A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; -A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;; -A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;; -A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;; -A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; -A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;; -A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;; -A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;; -A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;; -A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;; -A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;; -A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;; -A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;; -A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;; -A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;; -A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;; -A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;; -A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;; -A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;; -A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;; -A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;; -A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;; -A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;; -A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;; -A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;; -A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;; -A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;; -A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;; -A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;; -A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;; -A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;; -A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;; -A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;; -A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;; -A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;; -A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;; -A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;; -A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;; -A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;; -A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;; -A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;; -A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;; -A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;; -A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;; -A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;; -A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;; -A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;; -A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;; -A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;; -A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;; -A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;; -A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;; -A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;; -A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;; -A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;; -A491;YI RADICAL LI;So;0;ON;;;;;N;;;;; -A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;; -A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;; -A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;; -A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;; -A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;; -A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;; -A498;YI RADICAL MI;So;0;ON;;;;;N;;;;; -A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;; -A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;; -A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;; -A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;; -A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;; -A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;; -A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;; -A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;; -A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;; -A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;; -A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;; -A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;; -A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;; -A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;; -A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;; -A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;; -A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;; -A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;; -A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;; -A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;; -A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;; -A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;; -A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;; -A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;; -A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;; -A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;; -A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;; -A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;; -A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;; -A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;; -A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;; -A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;; -A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;; -A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;; -A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;; -A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;; -A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;; -A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;; -A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;; -A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;; -A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;; -A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;; -A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;; -A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;; -A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;; -A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;; -A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;; -A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;; -A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;; -A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;; -A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;; -A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;; -A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;; -A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;; -A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;; -A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;; -A802;SYLOTI NAGRI SIGN DVISVARA;Mc;0;NSM;;;;;N;;;;; -A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;; -A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;; -A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;; -A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;; -A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;; -A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;; -A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;; -A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;; -A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;; -A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;; -A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;; -A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;; -A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;; -A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;; -A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;; -A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;; -A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;; -A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;; -A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;; -A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;; -A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;; -A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;; -A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;; -A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;; -A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;; -A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;; -A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;; -A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;; -A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;; -A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;; -A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;; -A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;; -A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;; -A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;; -A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;; -A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;; -AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;; -D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;; -D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;; -DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;; -DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;; -DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;; -DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;; -DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;; -E000;<Private Use, First>;Co;0;L;;;;;N;;;;; -F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;; -F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;; -F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;; -F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;; -F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;; -F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;; -F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;; -F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;; -F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;; -F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;; -F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;; -F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;; -F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;; -F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;; -F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;; -F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;; -F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;; -F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;; -F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;; -F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;; -F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;; -F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;; -F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;; -F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;; -F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;; -F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;; -F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;; -F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;; -F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;; -F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;; -F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;; -F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;; -F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;; -F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;; -F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;; -F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;; -F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;; -F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;; -F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;; -F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;; -F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;; -F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;; -F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;; -F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;; -F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;; -F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;; -F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;; -F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;; -F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;; -F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;; -F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;; -F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;; -F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;; -F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;; -F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;; -F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;; -F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;; -F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;; -F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;; -F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;; -F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;; -F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;; -F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;; -F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;; -F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;; -F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;; -F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;; -F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;; -F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;; -F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;; -F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;; -F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;; -F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;; -F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;; -F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;; -F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;; -F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;; -F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;; -F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;; -F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;; -F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;; -F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;; -F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;; -F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;; -F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;; -F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;; -F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;; -F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;; -F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;; -F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;; -F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;; -F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;; -F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;; -F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;; -F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;; -F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;; -F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;; -F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;; -F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;; -F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;; -F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;; -F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;; -F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;; -F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;; -F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;; -F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;; -F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;; -F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;; -F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;; -F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;; -F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;; -F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;; -F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;; -F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;; -F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;; -F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;; -F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;; -F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;; -F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;; -F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;; -F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;; -F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;; -F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;; -F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;; -F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;; -F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;; -F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;; -F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;; -F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;; -F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;; -F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;; -F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;; -F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;; -F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;; -F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;; -F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;; -F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;; -F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;; -F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;; -F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;; -F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;; -F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;; -F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;; -F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;; -F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;; -F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;; -F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;; -F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;; -F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;; -F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;; -F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;; -F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;; -F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;; -F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;; -F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;; -F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;; -F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;; -F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;; -F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;; -F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;; -F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;; -F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;; -F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;; -F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;; -F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;; -F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;; -F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;; -F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;; -F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;; -F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;; -F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;; -F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;; -F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;; -F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;; -F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;; -F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;; -F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;; -F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;; -F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;; -F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;; -F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;; -F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;; -F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;; -F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;; -F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;; -F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;; -F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;; -F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;; -F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;; -F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;; -F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;; -F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;; -F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;; -F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;; -F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;; -F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;; -F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;; -F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;; -F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;; -F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;; -F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;; -F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;; -F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;; -F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;; -F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;; -F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;; -F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;; -F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;; -F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;; -F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;; -F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;; -F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;; -F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;; -F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;; -F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;; -F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;; -F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;; -F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;; -F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;; -F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;; -F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;; -F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;; -F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;; -F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;; -F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;; -F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;; -F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;; -F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;; -F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;; -F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;; -F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;; -F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;; -F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;; -F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;; -F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;; -F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;; -F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;; -F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;; -F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;; -F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;; -F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;; -F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;; -F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;; -F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;; -F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;; -F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;; -F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;; -F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;; -F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;; -F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;; -F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;; -F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;; -F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;; -F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;; -F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;; -F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;; -F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;; -FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;; -FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;; -FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;; -FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;; -FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;; -FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;; -FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;; -FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;; -FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;; -FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;; -FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;; -FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;; -FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;; -FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;; -FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;; -FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;; -FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;; -FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;; -FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;; -FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;; -FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;; -FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;; -FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;; -FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;; -FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;; -FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;; -FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;; -FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;; -FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;; -FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;; -FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;; -FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;; -FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;; -FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;; -FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;; -FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;; -FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;; -FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;; -FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;; -FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;; -FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;; -FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;; -FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;; -FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;; -FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;; -FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;; -FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;; -FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;; -FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;; -FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;; -FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;; -FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;; -FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;; -FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;; -FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;; -FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;; -FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;; -FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;; -FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;; -FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;; -FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;; -FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;; -FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;; -FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;; -FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;; -FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;; -FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;; -FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;; -FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;; -FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;; -FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;; -FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;; -FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;; -FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;; -FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;; -FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;; -FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;; -FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;; -FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;; -FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;; -FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;; -FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;; -FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;; -FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;; -FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;; -FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;; -FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;; -FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;; -FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;; -FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;; -FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;; -FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;; -FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;; -FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;; -FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;; -FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;; -FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;; -FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;; -FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;; -FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;; -FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;; -FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;; -FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;; -FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;; -FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;; -FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;; -FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;; -FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;; -FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;; -FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;; -FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;; -FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;; -FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;; -FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;; -FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;; -FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;; -FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;; -FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;; -FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;; -FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;; -FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;; -FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;; -FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;; -FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;; -FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;; -FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;; -FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;; -FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;; -FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;; -FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;; -FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;; -FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;; -FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;; -FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;; -FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;; -FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;; -FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;; -FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;; -FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;; -FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;; -FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;; -FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;; -FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;; -FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;; -FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;; -FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;; -FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;; -FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;; -FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;; -FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;; -FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;; -FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;; -FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;; -FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;; -FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;; -FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;; -FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;; -FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;; -FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;; -FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;; -FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;; -FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;; -FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;; -FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;; -FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;; -FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;; -FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;; -FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;; -FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;; -FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;; -FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;; -FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;; -FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;; -FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;; -FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;; -FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;; -FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;; -FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;; -FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;; -FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;; -FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;; -FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;; -FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;; -FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;; -FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;; -FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;; -FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;; -FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;; -FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;; -FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;; -FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;; -FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;; -FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;; -FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;; -FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;; -FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;; -FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;; -FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;; -FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;; -FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;; -FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;; -FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;; -FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;; -FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;; -FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;; -FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;; -FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;; -FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;; -FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;; -FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;; -FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;; -FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;; -FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;; -FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;; -FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;; -FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;; -FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;; -FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;; -FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;; -FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;; -FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;; -FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;; -FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;; -FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;; -FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;; -FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;; -FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;; -FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;; -FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;; -FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;; -FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;; -FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;; -FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;; -FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;; -FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;; -FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES;<font> 002B;;;;N;;;;; -FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;; -FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;; -FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;; -FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;; -FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;; -FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;; -FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;; -FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;; -FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;; -FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;; -FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;; -FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;; -FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;; -FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;; -FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;; -FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;; -FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;; -FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;; -FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;; -FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;; -FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;; -FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;; -FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;; -FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;; -FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;; -FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;; -FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;; -FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;; -FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;; -FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;; -FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;; -FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;; -FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;; -FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;; -FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;; -FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;; -FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;; -FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;; -FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;; -FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;; -FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;; -FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;; -FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;; -FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;; -FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;; -FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;; -FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;; -FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;; -FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;; -FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;; -FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;; -FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;; -FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;; -FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;; -FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;; -FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;; -FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;; -FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;; -FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;; -FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;; -FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;; -FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;; -FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;; -FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;; -FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;; -FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;; -FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;; -FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;; -FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;; -FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;; -FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;; -FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;; -FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;; -FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;; -FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;; -FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;; -FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;; -FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;; -FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;; -FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;; -FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;; -FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;; -FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;; -FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;; -FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;; -FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;; -FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;; -FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;; -FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;; -FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;; -FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;; -FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;; -FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;; -FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;; -FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;; -FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;; -FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;; -FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;; -FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;; -FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;; -FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;; -FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;; -FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;; -FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;; -FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;; -FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;; -FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;; -FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;; -FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;; -FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;; -FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;; -FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;; -FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;; -FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;; -FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;; -FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;; -FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;; -FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;; -FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;; -FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;; -FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;; -FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;; -FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;; -FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;; -FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;; -FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;; -FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;; -FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;; -FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;; -FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;; -FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;; -FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;; -FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;; -FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;; -FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;; -FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;; -FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;; -FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;; -FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;; -FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;; -FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;; -FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;; -FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;; -FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;; -FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;; -FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;; -FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;; -FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;; -FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;; -FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;; -FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;; -FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;; -FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;; -FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;; -FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;; -FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;; -FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;; -FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;; -FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;; -FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;; -FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;; -FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;; -FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;; -FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;; -FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;; -FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;; -FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;; -FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;; -FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;; -FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;; -FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;; -FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;; -FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;; -FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;; -FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;; -FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;; -FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;; -FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;; -FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;; -FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;; -FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;; -FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;; -FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;; -FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;; -FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;; -FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;; -FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;; -FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;; -FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;; -FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;; -FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;; -FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;; -FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;; -FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;; -FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;; -FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;; -FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;; -FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;; -FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;; -FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;; -FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;; -FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;; -FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;; -FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;; -FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;; -FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;; -FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;; -FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;; -FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;; -FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;; -FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;; -FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;; -FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;; -FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;; -FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;; -FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;; -FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;; -FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;; -FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;; -FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;; -FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;; -FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;; -FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;; -FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;; -FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;; -FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;; -FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;; -FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;; -FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;; -FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;; -FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;; -FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;; -FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;; -FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;; -FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;; -FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;; -FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;; -FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;; -FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;; -FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;; -FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;; -FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;; -FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;; -FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;; -FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;; -FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;; -FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;; -FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;; -FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;; -FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;; -FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;; -FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;; -FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;; -FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;; -FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;; -FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;; -FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;; -FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;; -FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;; -FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;; -FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;; -FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;; -FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;; -FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;; -FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;; -FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;; -FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;; -FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;; -FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;; -FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;; -FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;; -FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;; -FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;; -FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;; -FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;; -FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;; -FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;; -FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;; -FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;; -FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;; -FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;; -FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;; -FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;; -FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;; -FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;; -FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;; -FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;; -FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;; -FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;; -FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;; -FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;; -FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;; -FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;; -FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;; -FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;; -FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;; -FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;; -FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;; -FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;; -FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;; -FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;; -FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;; -FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;; -FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;; -FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;; -FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;; -FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;; -FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;; -FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;; -FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;; -FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;; -FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;; -FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;; -FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;; -FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;; -FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;; -FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;; -FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;; -FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;; -FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;; -FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;; -FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;; -FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;; -FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;; -FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;; -FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;; -FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;; -FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;; -FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;; -FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;; -FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;; -FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;; -FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;; -FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;; -FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;; -FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;; -FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;; -FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;; -FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;; -FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;; -FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;; -FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;; -FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;; -FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;; -FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;; -FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;; -FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;; -FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;; -FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;; -FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;; -FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;; -FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;; -FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;; -FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;; -FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;; -FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;; -FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;; -FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;; -FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;; -FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;; -FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;; -FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;; -FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;; -FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;; -FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;; -FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;; -FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;; -FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;; -FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;; -FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;; -FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;; -FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;; -FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;; -FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;; -FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;; -FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;; -FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;; -FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;; -FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;; -FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;; -FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;; -FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;; -FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;; -FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;; -FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;; -FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;; -FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;; -FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;; -FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;; -FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;; -FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;; -FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;; -FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;; -FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;; -FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;; -FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;; -FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;; -FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;; -FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;; -FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;; -FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;; -FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;; -FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;; -FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;; -FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;; -FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;; -FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;; -FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;; -FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;; -FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;; -FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;; -FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;; -FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;; -FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;; -FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;; -FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;; -FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;; -FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;; -FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;; -FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;; -FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;; -FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;; -FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;; -FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;; -FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;; -FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;; -FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;; -FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;; -FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;; -FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;; -FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;; -FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;; -FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;; -FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;; -FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;; -FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;; -FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;; -FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;; -FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;; -FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;; -FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;; -FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;; -FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;; -FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;; -FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;; -FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;; -FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;; -FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;; -FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;; -FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;; -FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;; -FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;; -FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;; -FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;; -FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;; -FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;; -FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;; -FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;; -FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;; -FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;; -FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;; -FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;; -FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;; -FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;; -FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;; -FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;; -FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;; -FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;; -FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;; -FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;; -FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;; -FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;; -FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;; -FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;; -FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;; -FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;; -FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;; -FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;; -FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;; -FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;; -FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;; -FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;; -FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;; -FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;; -FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;; -FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;; -FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;; -FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;; -FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;; -FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;; -FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;; -FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;; -FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;; -FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;; -FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;; -FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;; -FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;; -FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;; -FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;; -FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;; -FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;; -FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;; -FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;; -FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;; -FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;; -FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;; -FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;; -FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;; -FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;; -FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;; -FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;; -FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;; -FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;; -FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;; -FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;; -FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;; -FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;; -FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;; -FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;; -FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;; -FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;; -FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;; -FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;; -FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;; -FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;; -FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;; -FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;; -FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;; -FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;; -FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;; -FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;; -FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;; -FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;; -FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;; -FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;; -FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;; -FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;; -FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;; -FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;; -FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;; -FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;; -FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;; -FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;; -FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;; -FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;; -FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;; -FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;; -FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;; -FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;; -FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;; -FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;; -FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;; -FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;; -FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;; -FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;; -FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;; -FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;; -FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;; -FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;; -FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;; -FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;; -FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;; -FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;; -FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;; -FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;; -FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;; -FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;; -FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;; -FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;; -FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;; -FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;; -FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;; -FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;; -FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;; -FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;; -FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;; -FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;; -FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;; -FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;; -FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;; -FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;; -FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;; -FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;; -FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;; -FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;; -FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;; -FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;; -FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;; -FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;; -FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;; -FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;; -FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;; -FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;; -FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;; -FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;; -FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;; -FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;; -FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;; -FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;; -FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;; -FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;; -FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;; -FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;; -FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;; -FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;; -FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;; -FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;; -FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;; -FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;; -FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;; -FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;; -FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;; -FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;; -FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;; -FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;; -FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;; -FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;; -FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;; -FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;; -FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;; -FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;; -FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;; -FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;; -FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;; -FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;; -FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; -FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;; -FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;; -FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;; -FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;; -FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;; -FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;; -FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;; -FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;; -FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;; -FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;; -FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;; -FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;; -FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;; -FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;; -FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;; -FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;; -FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;; -FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;; -FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON;<vertical> 002C;;;;N;;;;; -FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON;<vertical> 3001;;;;N;;;;; -FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON;<vertical> 3002;;;;N;;;;; -FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON;<vertical> 003A;;;;N;;;;; -FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON;<vertical> 003B;;;;N;;;;; -FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON;<vertical> 0021;;;;N;;;;; -FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON;<vertical> 003F;;;;N;;;;; -FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;<vertical> 3016;;;;N;;;;; -FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON;<vertical> 3017;;;;N;;;;; -FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON;<vertical> 2026;;;;N;;;;; -FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;; -FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; -FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;; -FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; -FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;; -FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;; -FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;; -FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;; -FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;; -FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;; -FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;; -FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;; -FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;; -FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;; -FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;; -FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;; -FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;; -FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;; -FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;; -FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;; -FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;; -FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;; -FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;; -FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;; -FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;; -FE45;SESAME DOT;Po;0;ON;;;;;N;;;;; -FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;; -FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON;<vertical> 005B;;;;N;;;;; -FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;N;;;;; -FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;; -FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;; -FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;; -FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;; -FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;; -FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;; -FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;; -FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;; -FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;; -FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;; -FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;; -FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;; -FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;; -FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;; -FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;; -FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;N;SMALL OPENING PARENTHESIS;;;; -FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;; -FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;; -FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;; -FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;; -FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;; -FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;; -FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;; -FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;; -FE62;SMALL PLUS SIGN;Sm;0;ES;<small> 002B;;;;N;;;;; -FE63;SMALL HYPHEN-MINUS;Pd;0;ES;<small> 002D;;;;N;;;;; -FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;; -FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;; -FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;; -FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;; -FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;; -FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;; -FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;; -FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;; -FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;; -FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;; -FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;; -FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;; -FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;; -FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;; -FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;; -FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;; -FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;; -FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;; -FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;; -FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;; -FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;; -FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;; -FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;; -FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;; -FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;; -FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;; -FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;; -FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;; -FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;; -FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;; -FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;; -FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;; -FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;; -FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;; -FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;; -FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;; -FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;; -FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;; -FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;; -FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;; -FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;; -FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;; -FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;; -FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;; -FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;; -FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;; -FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;; -FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;; -FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;; -FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;; -FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;; -FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;; -FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;; -FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;; -FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;; -FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;; -FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;; -FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;; -FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;; -FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;; -FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;; -FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;; -FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;; -FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;; -FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;; -FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;; -FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;; -FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;; -FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;; -FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;; -FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;; -FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;; -FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;; -FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;; -FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;; -FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;; -FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;; -FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;; -FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;; -FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;; -FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;; -FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;; -FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;; -FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;; -FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;; -FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;; -FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;; -FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;; -FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;; -FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;; -FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;; -FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;; -FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;; -FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;; -FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;; -FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;; -FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;; -FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;; -FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;; -FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;; -FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;; -FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;; -FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;; -FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;; -FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;; -FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;; -FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;; -FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;; -FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;; -FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;; -FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;; -FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;; -FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;; -FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;; -FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;; -FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;; -FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;; -FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;; -FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;; -FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;; -FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;; -FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;; -FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;; -FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;; -FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;; -FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;; -FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;; -FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;; -FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;; -FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;; -FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;; -FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;; -FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;; -FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;; -FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;; -FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;; -FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;; -FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;; -FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;; -FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;; -FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;; -FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; -FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; -FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; -FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; -FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;; -FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;; -FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;; -FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;; -FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;; -FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;; -FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;; -FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;; -FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;; -FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;; -FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;; -FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;; -FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;; -FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES;<wide> 002B;;;;N;;;;; -FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;; -FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;; -FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;; -FF0F;FULLWIDTH SOLIDUS;Po;0;CS;<wide> 002F;;;;N;FULLWIDTH SLASH;;;; -FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;; -FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;; -FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;; -FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;; -FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;; -FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;; -FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;; -FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;; -FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;; -FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;; -FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;; -FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;; -FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;; -FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;; -FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;; -FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;; -FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;; -FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41; -FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42; -FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43; -FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44; -FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45; -FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46; -FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47; -FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48; -FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49; -FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A; -FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B; -FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C; -FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D; -FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E; -FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F; -FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50; -FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51; -FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52; -FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53; -FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54; -FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55; -FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56; -FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57; -FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58; -FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59; -FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A; -FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;; -FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;; -FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;; -FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;; -FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;; -FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;; -FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21 -FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22 -FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23 -FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24 -FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25 -FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26 -FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27 -FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28 -FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29 -FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A -FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B -FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C -FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D -FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E -FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F -FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30 -FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31 -FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32 -FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33 -FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34 -FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35 -FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36 -FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37 -FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38 -FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39 -FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A -FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;; -FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;; -FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;; -FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;; -FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;*;;; -FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;*;;; -FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;; -FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;; -FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;; -FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;; -FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON;<narrow> 30FB;;;;N;;;;; -FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;; -FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;; -FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;; -FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;; -FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;; -FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;; -FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;; -FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;; -FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;; -FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;; -FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;; -FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;; -FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;; -FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;; -FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;; -FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;; -FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;; -FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;; -FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;; -FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;; -FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;; -FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;; -FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;; -FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;; -FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;; -FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;; -FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;; -FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;; -FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;; -FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;; -FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;; -FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;; -FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;; -FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;; -FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;; -FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;; -FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;; -FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;; -FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;; -FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;; -FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;; -FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;; -FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;; -FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;; -FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;; -FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;; -FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;; -FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;; -FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;; -FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;; -FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;; -FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;; -FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;; -FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;; -FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;; -FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;; -FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;; -FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;; -FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;; -FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;; -FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;; -FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;; -FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;; -FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;; -FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;; -FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;; -FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;; -FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;; -FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;; -FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;; -FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;; -FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;; -FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;; -FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;; -FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;; -FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;; -FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;; -FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;; -FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;; -FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;; -FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;; -FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;; -FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;; -FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;; -FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;; -FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;; -FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;; -FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;; -FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;; -FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;; -FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;; -FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;; -FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;; -FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;; -FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;; -FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;; -FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;; -FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;; -FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;; -FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;; -FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;; -FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;; -FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;; -FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;; -FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;; -FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;; -FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;; -FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;; -FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;; -FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;; -FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;; -FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;; -FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;; -FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;; -FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;; -FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;; -FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;; -FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;; -FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;; -FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;; -FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;; -FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;; -FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;; -FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;; -FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;; -FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;; -FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;; -FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; -FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; -10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;; -10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;; -10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;; -10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;; -10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;; -10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;; -10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;; -10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;; -10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;; -10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;; -1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;; -1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;; -1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;; -1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;; -1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;; -10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;; -10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;; -10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;; -10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;; -10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;; -10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;; -10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;; -10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;; -10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;; -10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;; -1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;; -1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;; -1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;; -1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;; -1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;; -1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;; -10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;; -10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;; -10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;; -10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;; -10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;; -10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;; -10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;; -10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;; -10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;; -1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;; -1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;; -1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;; -1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;; -1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;; -1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;; -10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;; -10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;; -10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;; -10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;; -10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;; -10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;; -10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;; -10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;; -10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;; -10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;; -1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;; -1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;; -1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;; -1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;; -10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;; -10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;; -10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;; -10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;; -10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;; -10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;; -10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;; -10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;; -10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;; -10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;; -1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;; -1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;; -1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;; -1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;; -10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;; -10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;; -10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;; -10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;; -10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;; -10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;; -10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;; -10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;; -10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;; -10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;; -1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;; -1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;; -1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;; -1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;; -10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;; -10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;; -10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;; -10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;; -10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;; -10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;; -10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;; -10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;; -10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;; -10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;; -1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;; -1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;; -1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;; -1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;; -1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;; -1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;; -10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;; -10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;; -10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;; -10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;; -10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;; -10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;; -10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;; -10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;; -10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;; -10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;; -1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;; -1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;; -1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;; -1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;; -1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;; -1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;; -100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;; -100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;; -100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;; -100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;; -100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;; -100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;; -100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;; -100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;; -100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;; -100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;; -100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;; -100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;; -100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;; -100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;; -100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;; -100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;; -100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;; -100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;; -100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;; -100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;; -100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;; -100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;; -100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;; -100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;; -100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;; -100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;; -100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;; -100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;; -100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;; -100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;; -100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;; -100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;; -100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;; -100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;; -100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;; -100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;; -100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;; -100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;; -100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;; -100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;; -100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;; -100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;pug;;; -100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;; -100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;gup;;; -100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;; -100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;; -100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;; -100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;; -100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;; -100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;; -100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;; -100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;; -100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;; -100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;; -100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;; -100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;; -100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;; -100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;; -100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;; -100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;; -100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;; -100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;; -100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;; -100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;; -100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;; -100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;; -100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;; -100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;; -100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;; -100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;; -100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;; -100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;; -100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;; -100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;; -100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;; -100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;; -100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;; -100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;; -100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;; -100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;; -100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;; -100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;; -100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;; -100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;; -100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;; -100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;; -100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;; -100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;; -100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;; -100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;; -100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;; -10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;; -10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;; -10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;; -10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;; -10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;; -10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;; -1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;; -1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;; -1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;; -1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;; -1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;; -1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;; -10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;; -10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;; -10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;; -10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;; -10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;; -10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;; -10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;; -10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;; -10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;; -10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; -1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;; -1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;; -1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;; -1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;; -1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;; -1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;; -10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;; -10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;; -10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; -10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;; -10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;; -10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;; -10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;; -10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;; -10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;; -10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;; -1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;; -1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; -1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;; -1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;; -1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;; -1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;; -10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;; -10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;; -10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;; -10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;; -10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;; -10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;; -10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;; -1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;; -1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;; -1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; -1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; -1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;; -1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;; -10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;; -10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;; -10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;; -10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;; -10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;; -10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; -10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;; -10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;; -10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;; -1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;; -1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;; -1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;; -1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;; -1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;; -1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;; -10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;; -10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;; -10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;; -10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;; -10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;; -10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;; -10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;; -10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;; -10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;; -10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;; -1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;; -1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;; -1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;; -1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; -1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; -1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;; -10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;; -10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;; -10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;; -10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;; -10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;; -10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;; -10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;; -10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;; -10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;; -10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;; -1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;; -1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;; -1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;; -10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; -10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;; -10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;; -10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;; -10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;; -10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;; -10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;; -10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;; -1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;; -1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;; -1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;; -1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;; -1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;; -1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;; -10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;; -10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;; -10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;; -10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;; -10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;; -10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;; -10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;; -10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;; -10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;; -10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;; -1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;; -10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;; -10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;; -10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;; -10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;; -10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;; -10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;; -10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;; -10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;; -10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;; -10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;; -1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;; -1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;; -1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;; -1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;; -1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;; -1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;; -10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;; -10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;; -10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;; -10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;; -10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;; -10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;; -10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;; -10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;; -10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;; -10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;; -1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;; -1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;; -1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;; -1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;; -1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;; -10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;; -10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;; -10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;; -10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;; -10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;; -10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;; -10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;; -10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;; -10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;; -10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;; -10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;; -10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;; -10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;; -10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;; -1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;; -1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;; -1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;; -1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;; -1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;; -1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;; -10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;; -10341;GOTHIC LETTER NINETY;Lo;0;L;;;;;N;;;;; -10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;; -10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;; -10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;; -10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;; -10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;; -10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;; -10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;; -10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;; -1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;; -10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;; -10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;; -10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;; -10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;; -10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;; -10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;; -10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;; -10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;; -10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;; -10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;; -1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;; -1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;; -1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;; -1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;; -1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;; -1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;; -10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;; -10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;; -10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;; -10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;; -10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;; -10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;; -10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;; -10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;; -10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;; -10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;; -1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;; -1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;; -1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;; -1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;; -1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;; -103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;; -103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;; -103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;; -103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;; -103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;; -103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;; -103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;; -103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;; -103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;; -103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;; -103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;; -103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;; -103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;; -103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;; -103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;; -103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;; -103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;; -103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;; -103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;; -103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;; -103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;; -103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;; -103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;; -103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;; -103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;; -103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;; -103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;; -103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;; -103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;; -103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;; -103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;; -103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;; -103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;; -103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;; -103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;; -103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;; -103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;; -103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;; -103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;; -103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;; -103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;; -103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;; -103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;; -103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;; -103D0;OLD PERSIAN WORD DIVIDER;So;0;L;;;;;N;;;;; -103D1;OLD PERSIAN NUMBER ONE;Nl;0;ON;;;;1;N;;;;; -103D2;OLD PERSIAN NUMBER TWO;Nl;0;ON;;;;2;N;;;;; -103D3;OLD PERSIAN NUMBER TEN;Nl;0;ON;;;;10;N;;;;; -103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;ON;;;;20;N;;;;; -103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;ON;;;;100;N;;;;; -10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428; -10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429; -10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A; -10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B; -10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C; -10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D; -10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E; -10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F; -10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430; -10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431; -1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432; -1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433; -1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434; -1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435; -1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436; -1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437; -10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438; -10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439; -10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A; -10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B; -10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C; -10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D; -10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E; -10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F; -10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440; -10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441; -1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442; -1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443; -1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444; -1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445; -1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446; -1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447; -10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448; -10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449; -10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A; -10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B; -10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C; -10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D; -10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E; -10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F; -10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400 -10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401 -1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402 -1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403 -1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404 -1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405 -1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406 -1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407 -10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408 -10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409 -10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A -10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B -10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C -10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D -10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E -10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F -10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410 -10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411 -1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412 -1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413 -1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414 -1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415 -1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416 -1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417 -10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418 -10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419 -10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A -10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B -10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C -10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D -10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E -10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F -10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420 -10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421 -1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422 -1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423 -1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424 -1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425 -1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426 -1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427 -10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;; -10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;; -10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;; -10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;; -10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;; -10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;; -10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;; -10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;; -10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;; -10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;; -1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;; -1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;; -1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;; -1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;; -1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;; -1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;; -10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;; -10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;; -10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;; -10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;; -10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;; -10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;; -10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;; -10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;; -10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;; -10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;; -1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;; -1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;; -1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;; -1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;; -1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;; -1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;; -10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;; -10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;; -10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;; -10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;; -10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;; -10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;; -10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;; -10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;; -10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;; -10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;; -1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;; -1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;; -1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;; -1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;; -1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;; -1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;; -10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;; -10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;; -10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;; -10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;; -10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;; -10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;; -10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;; -10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;; -10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;; -10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;; -1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;; -1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;; -1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;; -1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;; -1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;; -1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;; -10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;; -10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;; -10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;; -10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;; -10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;; -10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;; -10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;; -10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;; -10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;; -10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;; -1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;; -1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;; -1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;; -1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;; -104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;; -10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;; -10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;; -10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;; -10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;; -10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;; -10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;; -1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;; -1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;; -1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;; -1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;; -1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;; -1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;; -10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;; -10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;; -10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;; -10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;; -10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;; -10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;; -10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;; -10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;; -10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;; -10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;; -1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;; -1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;; -1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;; -1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;; -1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;; -1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;; -10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;; -10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;; -10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;; -10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;; -10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;; -10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;; -10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;; -10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;; -10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;; -10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;; -1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;; -1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;; -1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;; -1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;; -1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;; -1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;; -10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;; -10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;; -10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;; -10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;; -10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;; -10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;; -10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;; -10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;; -1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;; -1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;; -10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;; -10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;; -10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; -10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;; -10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;; -10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;; -10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;; -10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;; -10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;; -10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;; -10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;; -10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;; -10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;; -10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;; -10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;; -10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;; -10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;; -10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;; -10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;; -10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;; -10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;; -10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;; -10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;; -10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;; -10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;; -10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;; -10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;; -10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;; -10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;; -10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;; -10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;; -10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;; -10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;; -10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;; -10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;; -10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;; -10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;; -10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;; -10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;; -10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;; -10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; -10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;; -10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;; -10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;; -10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;; -10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;; -10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;; -10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;; -10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; -10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; -10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;; -10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;; -10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;; -10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;; -10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;; -10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;; -10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;; -10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;; -10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;; -1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;; -1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;; -1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;; -1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;; -1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;; -1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;; -1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;; -1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;; -1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;; -1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;; -1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;; -1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;; -1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;; -1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;; -1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;; -1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;; -1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;; -1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;; -1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;; -1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;; -1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;; -1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;; -1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;; -1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;; -1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;; -1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;; -1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;; -1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;; -1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;; -1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;; -1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;; -1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;; -1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;; -1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;; -1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;; -1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;; -1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;; -1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;; -1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;; -1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;; -1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;; -1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;; -1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;; -1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;; -1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;; -1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;; -1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;; -1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;; -1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;; -1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;; -1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;; -1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;; -1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;; -1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;; -1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;; -1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;; -1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;; -1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;; -1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;; -1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;; -1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;; -1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;; -1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;; -1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;; -1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;; -1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;; -1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;; -1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;; -1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;; -1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;; -1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;; -1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;; -1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;; -1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;; -1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;; -1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;; -1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;; -1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;; -1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;; -1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;; -1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;; -1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;; -1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;; -1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;; -1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;; -1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;; -1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;; -1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;; -1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;; -1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;; -1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;; -1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;; -1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;; -1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;; -1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;; -1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;; -1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;; -1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;; -1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;; -1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;; -1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;; -1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;; -1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;; -1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;; -1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;; -1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;; -1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;; -1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;; -1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;; -1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;; -1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;; -1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;; -1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;; -1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;; -1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;; -1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;; -1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;; -1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;; -1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;; -1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;; -1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;; -1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;; -1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;; -1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;; -1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;; -1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;; -1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;; -1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;; -1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;; -1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;; -1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;; -1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;; -1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;; -1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;; -1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;; -1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;; -1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;; -1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;; -1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;; -1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;; -1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;; -1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;; -1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;; -1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;; -1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;; -1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; -1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;; -1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;; -1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;; -1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; -1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;; -1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;; -1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;; -1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;; -1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;; -1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;; -1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;; -1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;; -1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;; -1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;; -1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;; -1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;; -1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;; -1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;; -1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;; -1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;; -1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;; -1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;; -1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;; -1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;; -1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;; -1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;; -1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; -1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; -1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;; -1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;; -1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;; -1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;; -1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;; -1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;; -1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;; -1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;; -1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;; -1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;; -1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;; -1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;; -1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;; -1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;; -1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;; -1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;; -1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;; -1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;; -1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;; -1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;; -1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;; -1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;; -1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;; -1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;; -1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;; -1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;; -1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;; -1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;; -1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;; -1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;; -1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;; -1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;; -1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;; -1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;; -1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; -1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; -1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; -1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; -1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; -1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; -1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; -1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; -1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;; -1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;; -1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;; -1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;; -1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;; -1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;; -1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;; -1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;; -1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;; -1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;; -1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;; -1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;; -1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;; -1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;; -1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;; -1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;; -1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;; -1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;; -1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;; -1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;; -1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;; -1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;; -1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;; -1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;; -1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;; -1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;; -1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;; -1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;; -1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;; -1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;; -1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;; -1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;; -1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;; -1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;; -1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;; -1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;; -1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;; -1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;; -1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;; -1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;; -1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;; -1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;; -1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;; -1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;; -1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;; -1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;; -1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;; -1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;; -1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;; -1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;; -1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;; -1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;; -1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;; -1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;; -1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;; -1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;; -1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;; -1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;; -1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;; -1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;; -1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;; -1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; -1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; -1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;; -1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;; -1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; -1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; -1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;; -1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;; -1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;; -1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;; -1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;; -1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;; -1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;; -1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;; -1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;; -1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;; -1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;; -1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;; -1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;; -1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;; -1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;; -1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;; -1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;; -1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;; -1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;; -1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;; -1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;; -1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;; -1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;; -1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;; -1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;; -1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;; -1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;; -1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;; -1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;; -1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;; -1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;; -1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;; -1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;; -1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;; -1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;; -1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;; -1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;; -1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; -1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; -1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;; -1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;; -1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;; -1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; -1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; -1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;; -1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;; -1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;; -1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;; -1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;; -1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;; -1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;; -1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;; -1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;; -1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;; -1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;; -1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;; -1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;; -1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;; -1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;; -1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;; -1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;; -1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;; -1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;; -1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;; -1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;; -1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;; -1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;; -1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;; -1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;; -1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;; -1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;; -1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;; -1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;; -1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;; -1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;; -1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;; -1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;; -1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;; -1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;; -1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;; -1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;; -1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;; -1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;; -1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;; -1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;; -1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;; -1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;; -1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;; -1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;; -1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;; -1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;; -1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;; -1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;; -1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;; -1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;; -1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;; -1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;; -1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;; -1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;; -1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;; -1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;; -1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;; -1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;; -1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;; -1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;; -1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;; -1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;; -1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;; -1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;; -1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;; -1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;; -1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;; -1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;; -1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;; -1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;; -1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;; -1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;; -1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;; -1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;; -1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;; -1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;; -1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;; -1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;; -1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;; -1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;; -1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;; -1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;; -1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;; -1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;; -1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;; -1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;; -1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;; -1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;; -1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;; -1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;; -1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;; -1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;; -1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;; -1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;; -1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;; -1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;; -1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;; -1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;; -1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;; -1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;; -1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;; -1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;; -1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;; -1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;; -1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;; -1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;; -1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;; -1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;; -1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;; -1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;; -1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; -1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; -1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; -1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; -1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; -1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; -1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;; -1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;; -1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;; -1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;; -1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;; -1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;; -1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;; -1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;; -1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;; -1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;; -1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;; -1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;; -1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;; -1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;; -1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;; -1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;; -1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;; -1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; -1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; -1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;; -1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; -1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; -1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;; -1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; -1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; -1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;; -1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;; -1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; -1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; -1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; -1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; -1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;; -1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;; -1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; -1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; -1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; -1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;; -1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;; -1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;; -1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; -1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; -1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; -1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; -1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; -1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; -1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; -1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; -1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; -1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; -1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; -1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; -1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; -1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; -1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; -1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; -1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; -1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; -1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; -1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; -1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; -1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; -1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;; -1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;; -1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;; -1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;; -1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;; -1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;; -1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;; -1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;; -1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;; -1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;; -1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;; -1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;; -1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;; -1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;; -1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;; -1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;; -1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;; -1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; -1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; -1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; -1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; -1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; -1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;; -1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;; -1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;; -1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;; -1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;;;; -1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;; -1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;; -1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;;;; -1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;;;; -1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; -1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;; -1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;; -1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;; -1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;; -1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;; -1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;; -1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;; -1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; -1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;; -1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;; -1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;; -1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;; -1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; -1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;; -1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;; -1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;; -1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;; -1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; -1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; -1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;; -1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;; -1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;; -1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;; -1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;; -1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;; -1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;; -1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;; -1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;; -1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;; -1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;; -1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;; -1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;; -1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;; -1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;; -1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;; -1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;; -1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;; -1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;; -1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;; -1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;; -1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;; -1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;; -1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;; -1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;; -1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;; -1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;; -1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;; -1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;; -1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;; -1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;; -1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;; -1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;; -1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;; -1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;; -1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;; -1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;; -1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;; -1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;; -1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;; -1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;; -1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;; -1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;; -1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;; -1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;; -1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;; -1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;; -1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;; -1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;; -1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;; -1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;; -1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;; -1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;; -1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;; -1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;; -1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;; -1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;; -1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;; -1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;; -1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;; -1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;; -1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;; -1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; -1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; -1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; -1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; -1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; -1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; -1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; -1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; -1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; -1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; -1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; -1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; -1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; -1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; -1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; -1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; -1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; -1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; -1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; -1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; -1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; -1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; -1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; -1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; -1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; -1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; -1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; -1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; -1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; -1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; -1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; -1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; -1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; -1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; -1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; -1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; -1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; -1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; -1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; -1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; -1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; -1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; -1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; -1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; -1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; -1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; -1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; -1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; -1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; -1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; -1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; -1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; -1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; -1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; -1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; -1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; -1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; -1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; -1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; -1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; -1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; -1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; -1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; -1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; -1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; -1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; -1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; -1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; -1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; -1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; -1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; -1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; -1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; -1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; -1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; -1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; -1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; -1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; -1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; -1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; -1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; -1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; -1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; -1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; -1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; -1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; -1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; -1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; -1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; -1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; -1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; -1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; -1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; -1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; -1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; -1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; -1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; -1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; -1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; -1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; -1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; -1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; -1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; -1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; -1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; -1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; -1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; -1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; -1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; -1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; -1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; -1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; -1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; -1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; -1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; -1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; -1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; -1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; -1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; -1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; -1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; -1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; -1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; -1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; -1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; -1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; -1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; -1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; -1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; -1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; -1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; -1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; -1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; -1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; -1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; -1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; -1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; -1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; -1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; -1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; -1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; -1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; -1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; -1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; -1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; -1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; -1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; -1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; -1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; -1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; -1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; -1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; -1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; -1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; -1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; -1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; -1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; -1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; -1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; -1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; -1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; -1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; -1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; -1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; -1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; -1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; -1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; -1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; -1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; -1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; -1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; -1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; -1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; -1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; -1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; -1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; -1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; -1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; -1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; -1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; -1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; -1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; -1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; -1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; -1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; -1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; -1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; -1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; -1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; -1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; -1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; -1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; -1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; -1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; -1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; -1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; -1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; -1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; -1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; -1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; -1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; -1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; -1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; -1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; -1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; -1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; -1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; -1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; -1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; -1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; -1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; -1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; -1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; -1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; -1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; -1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; -1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; -1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; -1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; -1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; -1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; -1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; -1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; -1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; -1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; -1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; -1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; -1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; -1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; -1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; -1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; -1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; -1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; -1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; -1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; -1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; -1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; -1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; -1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; -1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; -1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; -1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; -1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; -1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; -1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; -1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; -1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; -1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; -1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; -1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; -1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; -1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; -1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; -1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; -1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; -1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; -1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; -1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; -1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; -1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; -1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; -1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; -1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; -1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; -1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; -1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; -1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; -1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; -1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; -1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; -1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; -1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; -1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; -1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; -1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; -1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; -1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; -1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; -1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; -1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; -1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; -1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; -1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; -1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; -1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; -1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; -1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; -1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; -1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; -1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; -1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; -1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; -1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; -1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; -1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; -1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; -1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; -1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; -1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; -1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; -1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; -1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; -1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; -1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; -1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; -1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; -1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; -1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; -1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; -1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; -1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; -1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; -1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; -1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; -1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; -1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; -1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; -1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; -1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; -1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; -1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; -1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; -1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; -1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; -1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; -1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; -1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; -1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; -1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; -1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; -1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; -1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; -1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; -1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; -1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; -1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; -1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; -1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; -1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; -1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; -1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; -1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; -1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; -1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; -1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; -1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; -1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; -1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; -1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; -1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; -1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; -1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; -1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; -1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; -1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; -1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; -1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; -1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; -1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; -1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; -1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; -1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; -1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; -1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; -1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; -1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; -1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; -1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; -1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; -1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; -1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; -1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; -1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; -1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; -1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; -1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; -1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; -1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; -1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; -1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; -1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; -1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; -1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; -1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; -1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; -1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; -1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; -1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; -1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; -1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; -1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; -1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; -1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; -1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; -1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; -1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; -1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; -1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; -1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; -1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; -1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; -1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; -1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; -1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; -1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; -1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; -1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; -1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; -1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; -1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; -1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; -1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; -1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; -1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; -1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; -1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; -1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; -1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; -1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; -1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; -1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; -1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; -1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; -1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; -1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; -1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; -1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; -1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; -1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; -1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; -1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; -1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; -1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; -1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; -1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; -1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; -1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; -1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; -1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; -1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; -1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; -1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; -1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; -1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; -1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; -1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; -1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; -1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; -1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; -1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; -1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; -1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; -1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; -1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; -1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; -1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; -1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; -1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; -1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; -1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; -1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; -1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; -1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; -1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; -1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; -1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; -1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; -1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; -1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; -1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; -1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; -1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; -1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; -1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; -1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; -1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; -1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; -1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; -1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; -1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; -1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; -1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; -1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; -1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; -1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; -1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; -1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; -1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; -1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; -1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; -1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; -1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; -1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; -1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; -1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; -1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; -1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; -1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; -1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; -1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; -1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; -1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; -1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; -1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; -1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; -1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; -1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; -1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; -1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; -1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; -1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; -1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; -1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; -1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; -1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; -1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; -1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; -1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; -1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; -1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; -1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; -1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; -1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; -1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; -1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; -1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; -1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; -1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; -1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; -1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;; -1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;; -1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;; -1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;; -1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;; -1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;; -1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;; -1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;; -1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;; -1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;; -1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;; -1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;; -1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;; -1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;; -1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;; -1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;; -1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;; -1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;; -1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;; -1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;; -1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;; -1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;; -1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;; -1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;; -1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;; -1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;; -1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;; -1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;; -1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;; -1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;; -1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;; -1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;; -1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;; -1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;; -1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;; -1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;; -1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;; -1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;; -1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;; -1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;; -1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;; -1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;; -1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;; -1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;; -1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;; -1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;; -1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;; -1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;; -1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;; -1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;; -1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;; -1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;; -1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L;<font> 0131;;;;N;;;;; -1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L;<font> 0237;;;;N;;;;; -1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; -1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; -1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; -1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; -1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; -1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; -1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; -1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; -1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; -1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; -1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; -1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; -1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; -1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; -1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; -1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; -1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; -1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; -1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; -1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; -1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; -1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; -1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; -1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; -1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; -1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;; -1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; -1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; -1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; -1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; -1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; -1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; -1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; -1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; -1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; -1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; -1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; -1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; -1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; -1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; -1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; -1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; -1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; -1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; -1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; -1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; -1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; -1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; -1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; -1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; -1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; -1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;; -1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; -1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; -1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; -1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; -1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; -1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; -1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; -1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; -1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; -1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; -1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; -1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; -1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; -1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; -1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; -1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; -1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; -1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; -1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; -1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; -1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; -1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; -1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; -1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; -1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; -1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; -1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; -1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; -1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; -1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; -1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; -1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;; -1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; -1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; -1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; -1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; -1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; -1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; -1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; -1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; -1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; -1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; -1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; -1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; -1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; -1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; -1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; -1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; -1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; -1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; -1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; -1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; -1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; -1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; -1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; -1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; -1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; -1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;; -1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; -1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; -1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; -1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; -1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; -1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; -1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; -1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; -1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; -1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; -1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; -1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; -1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; -1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; -1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; -1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; -1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; -1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; -1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; -1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; -1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; -1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; -1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; -1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; -1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; -1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; -1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; -1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; -1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; -1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; -1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; -1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;; -1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; -1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; -1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; -1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; -1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; -1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; -1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; -1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; -1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; -1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; -1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; -1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; -1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; -1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; -1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; -1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; -1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; -1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; -1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; -1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; -1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; -1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; -1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; -1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; -1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; -1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;; -1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; -1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; -1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; -1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; -1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; -1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; -1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; -1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; -1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; -1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; -1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; -1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; -1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; -1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; -1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; -1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; -1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; -1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; -1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; -1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; -1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; -1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; -1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; -1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; -1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; -1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; -1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; -1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; -1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; -1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; -1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; -1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;; -1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; -1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; -1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; -1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; -1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; -1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; -1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; -1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; -1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; -1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; -1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; -1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; -1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; -1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; -1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; -1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; -1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; -1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; -1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; -1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; -1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; -1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; -1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; -1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; -1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; -1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;; -1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; -1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; -1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; -1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; -1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; -1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; -1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;; -1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;; -1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;; -1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;; -1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;; -1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;; -1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;; -1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;; -1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;; -1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;; -1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;; -1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;; -1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;; -1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;; -1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;; -1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;; -1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;; -1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;; -1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;; -1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;; -1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;; -1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;; -1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;; -1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;; -1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;; -1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;; -1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;; -1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;; -1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;; -1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;; -1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;; -1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;; -1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;; -1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;; -1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;; -1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;; -1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;; -1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;; -1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;; -1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;; -1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;; -1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;; -1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;; -1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;; -1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;; -1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;; -1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;; -1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;; -1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;; -1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;; -1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;; -1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;N;;;;; -1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;; -1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;; -1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;; -1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;; -1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;; -1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;; -1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; -1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; -1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; -1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; -1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; -1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; -1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; -1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; -1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; -1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; -1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; -1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; -1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; -1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; -1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; -1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; -1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; -1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; -1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; -1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; -1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; -1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; -1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; -1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; -1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; -1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; -1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; -1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; -1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; -1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; -1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; -1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; -1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; -1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; -1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; -1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; -1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; -1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; -1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; -1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; -1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;; -1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;; -1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;; -1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;; -1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;; -1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;; -1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;; -1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;; -1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;; -1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;; -20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;; -2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;; -2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; -2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; -2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; -2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;; -2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;; -2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;; -2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;; -2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;; -2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;; -2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;; -2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;; -2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;; -2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;; -2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;; -2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;; -2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;; -2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;; -2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;; -2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;; -2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;; -2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;; -2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;; -2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;; -2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;; -2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;; -2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;; -2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;; -2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;; -2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;; -2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;; -2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;; -2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;; -2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;; -2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;; -2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;; -2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;; -2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;; -2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;; -2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;; -2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;; -2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;; -2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;; -2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;; -2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;; -2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;; -2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;; -2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;; -2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;; -2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;; -2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;; -2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;; -2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;; -2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;; -2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;; -2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;; -2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;; -2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;; -2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;; -2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;; -2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;; -2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;; -2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;; -2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;; -2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;; -2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;; -2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;; -2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;; -2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;; -2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;; -2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;; -2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;; -2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;; -2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;; -2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;; -2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;; -2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;; -2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;; -2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;; -2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;; -2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;; -2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;; -2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;; -2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;; -2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;; -2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;; -2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;; -2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;; -2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;; -2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;; -2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;; -2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;; -2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;; -2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;; -2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;; -2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;; -2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;; -2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;; -2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;; -2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;; -2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;; -2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;; -2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;; -2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;; -2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;; -2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;; -2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;; -2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;; -2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;; -2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;; -2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;; -2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;; -2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;; -2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;; -2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;; -2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;; -2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;; -2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;; -2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;; -2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;; -2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;; -2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;; -2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;; -2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;; -2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;; -2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;; -2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;; -2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;; -2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;; -2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;; -2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;; -2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;; -2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;; -2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;; -2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;; -2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;; -2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;; -2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;; -2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;; -2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;; -2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;; -2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;; -2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;; -2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;; -2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;; -2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;;N;;;;; -2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;; -2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;; -2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;; -2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;; -2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;; -2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;; -2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;; -2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;; -2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;; -2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;; -2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;; -2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;; -2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;; -2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;; -2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;; -2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;; -2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;; -2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;; -2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;; -2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;; -2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;; -2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;; -2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;; -2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;; -2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;; -2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;; -2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;; -2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;; -2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;; -2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;; -2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;; -2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;; -2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;; -2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;; -2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;; -2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;; -2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;; -2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;; -2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;; -2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;; -2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;; -2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;; -2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;; -2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;; -2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;; -2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;; -2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;; -2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;; -2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;; -2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;; -2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;; -2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;; -2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;; -2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;; -2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;; -2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;; -2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;; -2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;; -2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;; -2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;; -2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;; -2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;; -2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;; -2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;; -2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;; -2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;; -2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;; -2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;; -2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;; -2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;; -2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;; -2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;; -2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;; -2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;; -2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;; -2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;; -2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;; -2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;; -2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;; -2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;; -2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;; -2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;; -2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;; -2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;; -2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;; -2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;; -2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;; -2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;; -2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;; -2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;; -2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;; -2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;; -2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;; -2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;; -2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;; -2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;; -2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;; -2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;; -2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;; -2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;; -2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;; -2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;; -2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;; -2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;; -2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;; -2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;; -2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;; -2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;; -2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;; -2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;; -2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;; -2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;; -2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;; -2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;; -2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;; -2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;; -2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;; -2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;; -2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;; -2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;; -2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;; -2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;; -2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;; -2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;; -2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;; -2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;; -2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;; -2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;; -2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;; -2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;; -2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;; -2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;; -2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;; -2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;; -2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;; -2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;; -2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;; -2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;; -2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;; -2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;; -2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;; -2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;; -2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;; -2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;; -2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;; -2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;; -2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;; -2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;; -2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;; -2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;; -2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;; -2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;; -2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;; -2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;; -2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;; -2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;; -2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;; -2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;; -2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;; -2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;; -2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;; -2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;; -2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;; -2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;; -2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;; -2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;; -2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;; -2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;; -2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;; -2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;; -2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;; -2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;; -2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;; -2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;; -2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;; -2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;; -2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;; -2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;; -2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;; -2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;; -2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;; -2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;; -2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;; -2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;; -2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;; -2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;; -2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;; -2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;; -2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;; -2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;; -2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;; -2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;; -2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;; -2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;; -2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;; -2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;; -2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;; -2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;; -2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;; -2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;; -2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;; -2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;; -2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;; -2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;; -2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;; -2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;; -2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;; -2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;; -2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;; -2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;; -2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;; -2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;; -2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;; -2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;; -2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;; -2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;; -2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;; -2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;; -2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;; -2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;; -2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;; -2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;; -2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;; -2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;; -2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;; -2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;; -2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;; -2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;; -2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;; -2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;; -2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;; -2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;; -2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;; -2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;; -2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;; -2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;; -2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;; -2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;; -2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;; -2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;; -2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;; -2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;; -2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;; -2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;; -2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;; -2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;; -2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;; -2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;; -2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;; -2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;; -2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;; -2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;; -2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;; -2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;; -2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;; -2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;; -2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;; -2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;; -2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;; -2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;; -2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;; -2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;; -2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;; -2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;; -2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;; -2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;; -2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;; -2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;; -2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;; -2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;; -2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;; -2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;; -2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;; -2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;; -2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;; -2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;; -2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;; -2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;; -2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;; -2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;; -2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;; -2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;; -2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;; -2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;; -2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;; -2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;; -2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;; -2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;; -2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;; -2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;; -2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;; -2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;; -2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;; -2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;; -2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;; -2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;; -2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;; -2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;; -2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;; -2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;; -2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;; -2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;; -2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;; -2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;; -2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;; -2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;; -2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;; -2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;; -2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;; -2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;; -2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;; -2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;; -2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;; -2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;; -2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;; -2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;; -2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;; -2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;; -2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;; -2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;; -2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;; -2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;; -2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;; -2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;; -2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;; -2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;; -2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;; -2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;; -2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;; -2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;; -2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;; -2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;; -2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;; -2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;; -2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;; -2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;; -2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;; -2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;; -2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;; -2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;; -2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;; -2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;; -2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;; -2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;; -2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;; -2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;; -2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;; -2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;; -2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;; -2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;; -2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;; -2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;; -2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;; -2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;; -2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;; -2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;; -2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;; -2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;; -2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;; -2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;; -2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;; -2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;; -2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;; -2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;; -2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;; -2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;; -2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;; -2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;; -2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;; -2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;; -2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;; -2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;; -2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;; -2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;; -2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;; -2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;; -2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;; -2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;; -2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;; -2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;; -2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;; -2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;; -2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;; -2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;; -2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;; -2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;; -2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;; -2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;; -2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;; -2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;; -2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;; -2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;; -2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;; -2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;; -2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;; -2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;; -2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;; -E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;; -E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;; -E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;; -E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;; -E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;; -E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;; -E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;; -E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;; -E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;; -E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;; -E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;; -E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;; -E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;; -E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;; -E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;; -E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;; -E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;; -E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;; -E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;; -E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;; -E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;; -E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;; -E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;; -E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;; -E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;; -E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;; -E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;; -E003A;TAG COLON;Cf;0;BN;;;;;N;;;;; -E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;; -E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;; -E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;; -E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;; -E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;; -E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;; -E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;; -E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;; -E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;; -E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;; -E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;; -E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;; -E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;; -E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;; -E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;; -E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;; -E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;; -E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;; -E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;; -E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;; -E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;; -E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;; -E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;; -E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;; -E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;; -E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;; -E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;; -E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;; -E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;; -E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;; -E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;; -E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;; -E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; -E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;; -E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; -E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;; -E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;; -E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;; -E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;; -E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;; -E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;; -E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;; -E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;; -E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;; -E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;; -E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;; -E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;; -E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;; -E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;; -E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;; -E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;; -E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;; -E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;; -E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;; -E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;; -E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;; -E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;; -E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;; -E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;; -E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;; -E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;; -E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;; -E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;; -E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;; -E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; -E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;; -E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; -E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;; -E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;; -E0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;; -E0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;; -E0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;; -E0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;; -E0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;; -E0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;; -E0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;; -E0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;; -E0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;; -E0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;; -E010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;; -E010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;; -E010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;; -E010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;; -E010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;; -E010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;; -E0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;; -E0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;; -E0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;; -E0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;; -E0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;; -E0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;; -E0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;; -E0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;; -E0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;; -E0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;; -E011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;; -E011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;; -E011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;; -E011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;; -E011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;; -E011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;; -E0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;; -E0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;; -E0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;; -E0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;; -E0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;; -E0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;; -E0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;; -E0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;; -E0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;; -E0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;; -E012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;; -E012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;; -E012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;; -E012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;; -E012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;; -E012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;; -E0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;; -E0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;; -E0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;; -E0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;; -E0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;; -E0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;; -E0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;; -E0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;; -E0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;; -E0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;; -E013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;; -E013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;; -E013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;; -E013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;; -E013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;; -E013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;; -E0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;; -E0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;; -E0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;; -E0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;; -E0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;; -E0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;; -E0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;; -E0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;; -E0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;; -E0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;; -E014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;; -E014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;; -E014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;; -E014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;; -E014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;; -E014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;; -E0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;; -E0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;; -E0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;; -E0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;; -E0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;; -E0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;; -E0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;; -E0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;; -E0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;; -E0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;; -E015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;; -E015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;; -E015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;; -E015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;; -E015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;; -E015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;; -E0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;; -E0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;; -E0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;; -E0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;; -E0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;; -E0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;; -E0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;; -E0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;; -E0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;; -E0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;; -E016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;; -E016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;; -E016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;; -E016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;; -E016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;; -E016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;; -E0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;; -E0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;; -E0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;; -E0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;; -E0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;; -E0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;; -E0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;; -E0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;; -E0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;; -E0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;; -E017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;; -E017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;; -E017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;; -E017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;; -E017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;; -E017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;; -E0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;; -E0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;; -E0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;; -E0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;; -E0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;; -E0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;; -E0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;; -E0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;; -E0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;; -E0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;; -E018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;; -E018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;; -E018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;; -E018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;; -E018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;; -E018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;; -E0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;; -E0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;; -E0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;; -E0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;; -E0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;; -E0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;; -E0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;; -E0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;; -E0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;; -E0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;; -E019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;; -E019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;; -E019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;; -E019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;; -E019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;; -E019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;; -E01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;; -E01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;; -E01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;; -E01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;; -E01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;; -E01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;; -E01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;; -E01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;; -E01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;; -E01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;; -E01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;; -E01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;; -E01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;; -E01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;; -E01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;; -E01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;; -E01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;; -E01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;; -E01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;; -E01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;; -E01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;; -E01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;; -E01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;; -E01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;; -E01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;; -E01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;; -E01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;; -E01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;; -E01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;; -E01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;; -E01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;; -E01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;; -E01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;; -E01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;; -E01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;; -E01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;; -E01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;; -E01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;; -E01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;; -E01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;; -E01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;; -E01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;; -E01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;; -E01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;; -E01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;; -E01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;; -E01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;; -E01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;; -E01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;; -E01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;; -E01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;; -E01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;; -E01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;; -E01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;; -E01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;; -E01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;; -E01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;; -E01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;; -E01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;; -E01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;; -E01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;; -E01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;; -E01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;; -E01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;; -E01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;; -E01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;; -E01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;; -E01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;; -E01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;; -E01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;; -E01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;; -E01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;; -E01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;; -E01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;; -E01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;; -E01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;; -E01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;; -E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;; -E01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;; -E01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;N;;;;; -F0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;; -FFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;; -100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;; -10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;; diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/AL.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/AL.pl deleted file mode 100644 index f8fa70d730f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/AL.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! - -# -# BidiClass category 'Arabic_Letter' -# -return <<'END'; -0600 0603 -060B -060D -061B -061E 061F -0621 063A -0640 064A -066D 066F -0671 06D5 -06DD -06E5 06E6 -06EE 06EF -06FA 070D -0710 -0712 072F -074D 076D -0780 07A5 -07B1 -FB50 FBB1 -FBD3 FD3D -FD50 FD8F -FD92 FDC7 -FDF0 FDFC -FE70 FE74 -FE76 FEFC -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/AN.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/AN.pl deleted file mode 100644 index 018e6977a86..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/AN.pl +++ /dev/null @@ -1,11 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# BidiClass category 'Arabic_Number' -# -return <<'END'; -0660 0669 -066B 066C -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/B.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/B.pl deleted file mode 100644 index d6402e620cc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/B.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! - -# -# BidiClass category 'Paragraph_Separator' -# -return <<'END'; -000A -000D -001C 001E -0085 -2029 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/BN.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/BN.pl deleted file mode 100644 index 3e87d4e6ddd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/BN.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! - -# -# BidiClass category 'Boundary_Neutral' -# -return <<'END'; -0000 0008 -000E 001B -007F 0084 -0086 009F -00AD -070F -200B 200D -2060 2063 -206A 206F -FEFF -1D173 1D17A -E0001 -E0020 E007F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/CS.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/CS.pl deleted file mode 100644 index b1470ad0bb9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/CS.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! - -# -# BidiClass category 'Common_Separator' -# -return <<'END'; -002C -002E 002F -003A -00A0 -060C -202F -2044 -FE50 -FE52 -FE55 -FF0C -FF0E FF0F -FF1A -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/EN.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/EN.pl deleted file mode 100644 index a0186d50cd3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/EN.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! - -# -# BidiClass category 'European_Number' -# -return <<'END'; -0030 0039 -00B2 00B3 -00B9 -06F0 06F9 -2070 -2074 2079 -2080 2089 -2488 249B -FF10 FF19 -1D7CE 1D7FF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/ES.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/ES.pl deleted file mode 100644 index c33abdfb3a6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/ES.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! - -# -# BidiClass category 'European_Separator' -# -return <<'END'; -002B -002D -207A 207B -208A 208B -2212 -FB29 -FE62 FE63 -FF0B -FF0D -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/ET.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/ET.pl deleted file mode 100644 index f27a05ca3db..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/ET.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! - -# -# BidiClass category 'European_Terminator' -# -return <<'END'; -0023 0025 -00A2 00A5 -00B0 00B1 -066A -09F2 09F3 -0AF1 -0BF9 -0E3F -17DB -2030 2034 -20A0 20B5 -212E -2213 -FE5F -FE69 FE6A -FF03 FF05 -FFE0 FFE1 -FFE5 FFE6 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/L.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/L.pl deleted file mode 100644 index 020f5b36396..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/L.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! - -# -# BidiClass category 'Left_To_Right' -# -return <<'END'; -0041 005A -0061 007A -00AA -00B5 -00BA -00C0 00D6 -00D8 00F6 -00F8 0241 -0250 02B8 -02BB 02C1 -02D0 02D1 -02E0 02E4 -02EE -037A -0386 -0388 038A -038C -038E 03A1 -03A3 03CE -03D0 03F5 -03F7 0482 -048A 04CE -04D0 04F9 -0500 050F -0531 0556 -0559 055F -0561 0587 -0589 -0903 0939 -093D 0940 -0949 094C -0950 -0958 0961 -0964 0970 -097D -0982 0983 -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BD 09C0 -09C7 09C8 -09CB 09CC -09CE -09D7 -09DC 09DD -09DF 09E1 -09E6 09F1 -09F4 09FA -0A03 -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 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABD 0AC0 -0AC9 -0ACB 0ACC -0AD0 -0AE0 0AE1 -0AE6 0AEF -0B02 0B03 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3D 0B3E -0B40 -0B47 0B48 -0B4B 0B4C -0B57 -0B5C 0B5D -0B5F 0B61 -0B66 0B71 -0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 0BB9 -0BBE 0BBF -0BC1 0BC2 -0BC6 0BC8 -0BCA 0BCC -0BD7 -0BE6 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 -0CBD 0CC4 -0CC6 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 0FD1 -1000 1021 -1023 1027 -1029 102A -102C -1031 -1038 -1040 1057 -10A0 10C5 -10D0 10FC -1100 1159 -115F 11A2 -11A8 11F9 -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -1360 137C -1380 138F -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 -1900 191C -1923 1926 -1930 1931 -1933 1938 -1946 196D -1970 1974 -1980 19A9 -19B0 19C9 -19D0 19D9 -1A00 1A16 -1A19 1A1B -1A1E 1A1F -1D00 1DBF -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 -2090 2094 -2102 -2107 -210A 2113 -2115 -2119 211D -2124 -2126 -2128 -212A 212D -212F 2131 -2133 2139 -213C 213F -2145 2149 -2160 2183 -2336 237A -2395 -249C 24E9 -26AC -2800 28FF -2C00 2C2E -2C30 2C5E -2C80 2CE4 -2D00 2D25 -2D30 2D65 -2D6F -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -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 -A800 A801 -A803 A805 -A807 A80A -A80C A824 -A827 -F900 FA2D -FA30 FA6A -FA70 FAD9 -FB00 FB06 -FB13 FB17 -FF21 FF3A -FF41 FF5A -FF66 FFBE -FFC2 FFC7 -FFCA FFCF -FFD2 FFD7 -FFDA FFDC -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10100 -10102 -10107 10133 -10137 1013F -10300 1031E -10320 10323 -10330 1034A -10380 1039D -1039F 103C3 -103C8 103D0 -10400 1049D -104A0 104A9 -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 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -1D6A8 1D7C9 -2F800 2FA1D -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/LRE.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/LRE.pl deleted file mode 100644 index 22129c44f2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/LRE.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# BidiClass category 'Left_To_Right_Embedding' -# -return <<'END'; -202A -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/LRO.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/LRO.pl deleted file mode 100644 index 10790d181d8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/LRO.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# BidiClass category 'Left_To_Right_Override' -# -return <<'END'; -202D -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/NSM.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/NSM.pl deleted file mode 100644 index 75a8e8adc67..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/NSM.pl +++ /dev/null @@ -1,131 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# BidiClass category 'Nonspacing_Mark' -# -return <<'END'; -0300 036F -0483 0486 -0488 0489 -0591 05B9 -05BB 05BD -05BF -05C1 05C2 -05C4 05C5 -05C7 -0610 0615 -064B 065E -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 -0A01 0A02 -0A3C -0A41 0A42 -0A47 0A48 -0A4B 0A4D -0A70 0A71 -0A81 0A82 -0ABC -0AC1 0AC5 -0AC7 0AC8 -0ACD -0AE2 0AE3 -0B01 -0B3C -0B3F -0B41 0B43 -0B4D -0B56 -0B82 -0BC0 -0BCD -0C3E 0C40 -0C46 0C48 -0C4A 0C4D -0C55 0C56 -0CBC -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 -135F -1712 1714 -1732 1734 -1752 1753 -1772 1773 -17B7 17BD -17C6 -17C9 17D3 -17DD -180B 180D -18A9 -1920 1922 -1927 192B -1932 -1939 193B -1A17 1A18 -1DC0 1DC3 -20D0 20EB -302A 302F -3099 309A -A802 -A806 -A80B -A825 A826 -FB1E -FE00 FE0F -FE20 FE23 -10A01 10A03 -10A05 10A06 -10A0C 10A0F -10A38 10A3A -10A3F -1D167 1D169 -1D17B 1D182 -1D185 1D18B -1D1AA 1D1AD -1D242 1D244 -E0100 E01EF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/ON.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/ON.pl deleted file mode 100644 index 7d51dcbdd50..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/ON.pl +++ /dev/null @@ -1,150 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# BidiClass category 'Other_Neutral' -# -return <<'END'; -0021 0022 -0026 002A -003B 0040 -005B 0060 -007B 007E -00A1 -00A6 00A9 -00AB 00AC -00AE 00AF -00B4 -00B6 00B8 -00BB 00BF -00D7 -00F7 -02B9 02BA -02C2 02CF -02D2 02DF -02E5 02ED -02EF 02FF -0374 0375 -037E -0384 0385 -0387 -03F6 -058A -060E 060F -06E9 -0BF3 0BF8 -0BFA -0F3A 0F3D -1390 1399 -169B 169C -17F0 17F9 -1800 180A -1940 -1944 1945 -19DE 19FF -1FBD -1FBF 1FC1 -1FCD 1FCF -1FDD 1FDF -1FED 1FEF -1FFD 1FFE -2010 2027 -2035 2043 -2045 205E -207C 207E -208C 208E -2100 2101 -2103 2106 -2108 2109 -2114 -2116 2118 -211E 2123 -2125 -2127 -2129 -2132 -213A 213B -2140 2144 -214A 214C -2153 215F -2190 2211 -2214 2335 -237B 2394 -2396 23DB -2400 2426 -2440 244A -2460 2487 -24EA 269C -26A0 26AB -26AD 26B1 -2701 2704 -2706 2709 -270C 2727 -2729 274B -274D -274F 2752 -2756 -2758 275E -2761 2794 -2798 27AF -27B1 27BE -27C0 27C6 -27D0 27EB -27F0 27FF -2900 2B13 -2CE5 2CEA -2CF9 2CFF -2E00 2E17 -2E1C 2E1D -2E80 2E99 -2E9B 2EF3 -2F00 2FD5 -2FF0 2FFB -3001 3004 -3008 3020 -3030 -3036 3037 -303D 303F -309B 309C -30A0 -30FB -31C0 31CF -321D 321E -3250 325F -327C 327E -32B1 32BF -32CC 32CF -3377 337A -33DE 33DF -33FF -4DC0 4DFF -A490 A4C6 -A700 A716 -A828 A82B -FD3E FD3F -FDFD -FE10 FE19 -FE30 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 -FFF9 FFFD -10101 -10140 1018A -103D1 103D5 -1D200 1D241 -1D245 -1D300 1D356 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/PDF.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/PDF.pl deleted file mode 100644 index 6cbfb1f8d1b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/PDF.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# BidiClass category 'Pop_Directional_Format' -# -return <<'END'; -202C -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/R.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/R.pl deleted file mode 100644 index 65ba799e3bb..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/R.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! - -# -# BidiClass category 'Right_To_Left' -# -return <<'END'; -05BE -05C0 -05C3 -05C6 -05D0 05EA -05F0 05F4 -200F -FB1D -FB1F FB28 -FB2A FB36 -FB38 FB3C -FB3E -FB40 FB41 -FB43 FB44 -FB46 FB4F -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 -10A10 10A13 -10A15 10A17 -10A19 10A33 -10A40 10A47 -10A50 10A58 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/RLE.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/RLE.pl deleted file mode 100644 index 851f1fd3513..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/RLE.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# BidiClass category 'Right_To_Left_Embedding' -# -return <<'END'; -202B -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/RLO.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/RLO.pl deleted file mode 100644 index 565941526ff..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/RLO.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# BidiClass category 'Right_To_Left_Override' -# -return <<'END'; -202E -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/S.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/S.pl deleted file mode 100644 index ac494648f0f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/S.pl +++ /dev/null @@ -1,12 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# BidiClass category 'Segment_Separator' -# -return <<'END'; -0009 -000B -001F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/WS.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/WS.pl deleted file mode 100644 index 98f3a5ea3fb..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/bc/WS.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! - -# -# BidiClass category 'White_Space' -# -return <<'END'; -000C -0020 -1680 -180E -2000 200A -2028 -205F -3000 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/A.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/A.pl deleted file mode 100644 index 0a094e60306..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/A.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Above' -# -return <<'END'; -00E6 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/AL.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/AL.pl deleted file mode 100644 index 9d820799c98..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/AL.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Above_Left' -# -return <<'END'; -00E4 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/AR.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/AR.pl deleted file mode 100644 index c0f80d057b0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/AR.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Above_Right' -# -return <<'END'; -00E8 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/ATAR.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/ATAR.pl deleted file mode 100644 index e5af6df6d8e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/ATAR.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Attached_Above_Right' -# -return <<'END'; -00D8 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/ATB.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/ATB.pl deleted file mode 100644 index 186ef05559a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/ATB.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Attached_Below' -# -return <<'END'; -00CA -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/ATBL.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/ATBL.pl deleted file mode 100644 index c67cd441643..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/ATBL.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Attached_Below_Left' -# -return <<'END'; -00C8 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/B.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/B.pl deleted file mode 100644 index 33ed0f6c825..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/B.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Below' -# -return <<'END'; -00DC -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/BL.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/BL.pl deleted file mode 100644 index 6f3377bbdfa..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/BL.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Below_Left' -# -return <<'END'; -00DA -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/BR.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/BR.pl deleted file mode 100644 index c836d184506..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/BR.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Below_Right' -# -return <<'END'; -00DE -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/DA.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/DA.pl deleted file mode 100644 index 8fd33b2e57e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/DA.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Double_Above' -# -return <<'END'; -00EA -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/DB.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/DB.pl deleted file mode 100644 index a151b8bf94c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/DB.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Double_Below' -# -return <<'END'; -00E9 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/IS.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/IS.pl deleted file mode 100644 index 5d0573a5ee3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/IS.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Iota_Subscript' -# -return <<'END'; -00F0 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/KV.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/KV.pl deleted file mode 100644 index b3a98646ca4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/KV.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Kana_Voicing' -# -return <<'END'; -0008 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/L.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/L.pl deleted file mode 100644 index 587a1c4d9c2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/L.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Left' -# -return <<'END'; -00E0 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/NK.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/NK.pl deleted file mode 100644 index ff831830fe2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/NK.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Nukta' -# -return <<'END'; -0007 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/NR.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/NR.pl deleted file mode 100644 index d6bf5574952..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/NR.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Not_Reordered' -# -return <<'END'; -0000 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/OV.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/OV.pl deleted file mode 100644 index 1ebefafb28f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/OV.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Overlay' -# -return <<'END'; -0001 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/R.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/R.pl deleted file mode 100644 index 4046b71875d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/R.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Right' -# -return <<'END'; -00E2 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/VR.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/VR.pl deleted file mode 100644 index 482ff128797..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ccc/VR.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# CombiningClass category 'Virama' -# -return <<'END'; -0009 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/can.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/can.pl deleted file mode 100644 index 08ddf367ee4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/can.pl +++ /dev/null @@ -1,222 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# DecompositionType category 'Canonical' -# -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 -FA70 FAD9 -FB1D -FB1F -FB2A FB36 -FB38 FB3C -FB3E -FB40 FB41 -FB43 FB44 -FB46 FB4E -1D15E 1D164 -1D1BB 1D1C0 -2F800 2FA1D -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/com.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/com.pl deleted file mode 100644 index 973c63cfdad..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/com.pl +++ /dev/null @@ -1,820 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# DecompositionType category 'Compat' -# -return <<'END'; -00A0 -00A8 -00A8 -00AA -00AF -00AF -00B2 00B4 -00B4 00B5 -00B5 -00B8 -00B8 00BA -00BC 00BE -0132 -0132 0133 -0133 -013F -013F 0140 -0140 -0149 -0149 -017F -017F -01C4 -01C4 01C5 -01C5 01C6 -01C6 01C7 -01C7 01C8 -01C8 01C9 -01C9 01CA -01CA 01CB -01CB 01CC -01CC -01F1 -01F1 01F2 -01F2 01F3 -01F3 -02B0 02B8 -02D8 -02D8 02D9 -02D9 02DA -02DA 02DB -02DB 02DC -02DC 02DD -02DD -02E0 02E4 -037A -037A -0384 -0384 -03D0 -03D0 03D1 -03D1 03D2 -03D2 -03D5 -03D5 03D6 -03D6 -03F0 -03F0 03F1 -03F1 03F2 -03F2 -03F4 -03F4 03F5 -03F5 -03F9 -03F9 -0587 -0587 -0675 -0675 0676 -0676 0677 -0677 0678 -0678 -0E33 -0E33 -0EB3 -0EB3 -0EDC -0EDC 0EDD -0EDD -0F0C -0F77 -0F77 -0F79 -0F79 -10FC -1D2C 1D2E -1D30 1D3A -1D3C 1D4D -1D4F 1D6A -1D78 -1D9B 1DBF -1E9A -1E9A -1FBD -1FBD -1FBF -1FBF 1FC0 -1FC0 -1FFE -1FFE -2002 -2002 2003 -2003 2004 -2004 2005 -2005 2006 -2006 2008 -2008 2009 -2009 200A -200A -2011 -2017 -2017 -2024 -2024 2025 -2025 2026 -2026 -202F -2033 -2033 2034 -2034 -2036 -2036 2037 -2037 -203C -203C -203E -203E -2047 -2047 2048 -2048 2049 -2049 -2057 -2057 -205F -205F -2070 2071 -2074 208E -2090 2094 -20A8 -20A8 -2100 -2100 2101 -2101 2103 -2103 -2105 -2105 2106 -2106 2107 -2107 -2109 -2109 2113 -2115 2116 -2116 -2119 211D -2120 2121 -2121 2122 -2124 -2128 -212C 212D -212F 2131 -2133 2135 -2135 2136 -2136 2137 -2137 2138 -2138 2139 -213B -213B 2140 -2145 2149 -2153 2160 -2160 2161 -2161 2162 -2162 2163 -2163 2164 -2164 2165 -2165 2166 -2166 2167 -2167 2168 -2168 2169 -2169 216A -216A 216B -216B 216C -216C 216D -216D 216E -216E 216F -216F 2170 -2170 2171 -2171 2172 -2172 2173 -2173 2174 -2174 2175 -2175 2176 -2176 2177 -2177 2178 -2178 2179 -2179 217A -217A 217B -217B 217C -217C 217D -217D 217E -217E 217F -217F -222C -222C 222D -222D -222F -222F 2230 -2230 -2460 2474 -2474 2475 -2475 2476 -2476 2477 -2477 2478 -2478 2479 -2479 247A -247A 247B -247B 247C -247C 247D -247D 247E -247E 247F -247F 2480 -2480 2481 -2481 2482 -2482 2483 -2483 2484 -2484 2485 -2485 2486 -2486 2487 -2487 2488 -2488 2489 -2489 248A -248A 248B -248B 248C -248C 248D -248D 248E -248E 248F -248F 2490 -2490 2491 -2491 2492 -2492 2493 -2493 2494 -2494 2495 -2495 2496 -2496 2497 -2497 2498 -2498 2499 -2499 249A -249A 249B -249B 249C -249C 249D -249D 249E -249E 249F -249F 24A0 -24A0 24A1 -24A1 24A2 -24A2 24A3 -24A3 24A4 -24A4 24A5 -24A5 24A6 -24A6 24A7 -24A7 24A8 -24A8 24A9 -24A9 24AA -24AA 24AB -24AB 24AC -24AC 24AD -24AD 24AE -24AE 24AF -24AF 24B0 -24B0 24B1 -24B1 24B2 -24B2 24B3 -24B3 24B4 -24B4 24B5 -24B5 24EA -2A0C -2A0C -2A74 -2A74 2A75 -2A75 2A76 -2A76 -2D6F -2E9F -2E9F -2EF3 -2EF3 -2F00 -2F00 2F01 -2F01 2F02 -2F02 2F03 -2F03 2F04 -2F04 2F05 -2F05 2F06 -2F06 2F07 -2F07 2F08 -2F08 2F09 -2F09 2F0A -2F0A 2F0B -2F0B 2F0C -2F0C 2F0D -2F0D 2F0E -2F0E 2F0F -2F0F 2F10 -2F10 2F11 -2F11 2F12 -2F12 2F13 -2F13 2F14 -2F14 2F15 -2F15 2F16 -2F16 2F17 -2F17 2F18 -2F18 2F19 -2F19 2F1A -2F1A 2F1B -2F1B 2F1C -2F1C 2F1D -2F1D 2F1E -2F1E 2F1F -2F1F 2F20 -2F20 2F21 -2F21 2F22 -2F22 2F23 -2F23 2F24 -2F24 2F25 -2F25 2F26 -2F26 2F27 -2F27 2F28 -2F28 2F29 -2F29 2F2A -2F2A 2F2B -2F2B 2F2C -2F2C 2F2D -2F2D 2F2E -2F2E 2F2F -2F2F 2F30 -2F30 2F31 -2F31 2F32 -2F32 2F33 -2F33 2F34 -2F34 2F35 -2F35 2F36 -2F36 2F37 -2F37 2F38 -2F38 2F39 -2F39 2F3A -2F3A 2F3B -2F3B 2F3C -2F3C 2F3D -2F3D 2F3E -2F3E 2F3F -2F3F 2F40 -2F40 2F41 -2F41 2F42 -2F42 2F43 -2F43 2F44 -2F44 2F45 -2F45 2F46 -2F46 2F47 -2F47 2F48 -2F48 2F49 -2F49 2F4A -2F4A 2F4B -2F4B 2F4C -2F4C 2F4D -2F4D 2F4E -2F4E 2F4F -2F4F 2F50 -2F50 2F51 -2F51 2F52 -2F52 2F53 -2F53 2F54 -2F54 2F55 -2F55 2F56 -2F56 2F57 -2F57 2F58 -2F58 2F59 -2F59 2F5A -2F5A 2F5B -2F5B 2F5C -2F5C 2F5D -2F5D 2F5E -2F5E 2F5F -2F5F 2F60 -2F60 2F61 -2F61 2F62 -2F62 2F63 -2F63 2F64 -2F64 2F65 -2F65 2F66 -2F66 2F67 -2F67 2F68 -2F68 2F69 -2F69 2F6A -2F6A 2F6B -2F6B 2F6C -2F6C 2F6D -2F6D 2F6E -2F6E 2F6F -2F6F 2F70 -2F70 2F71 -2F71 2F72 -2F72 2F73 -2F73 2F74 -2F74 2F75 -2F75 2F76 -2F76 2F77 -2F77 2F78 -2F78 2F79 -2F79 2F7A -2F7A 2F7B -2F7B 2F7C -2F7C 2F7D -2F7D 2F7E -2F7E 2F7F -2F7F 2F80 -2F80 2F81 -2F81 2F82 -2F82 2F83 -2F83 2F84 -2F84 2F85 -2F85 2F86 -2F86 2F87 -2F87 2F88 -2F88 2F89 -2F89 2F8A -2F8A 2F8B -2F8B 2F8C -2F8C 2F8D -2F8D 2F8E -2F8E 2F8F -2F8F 2F90 -2F90 2F91 -2F91 2F92 -2F92 2F93 -2F93 2F94 -2F94 2F95 -2F95 2F96 -2F96 2F97 -2F97 2F98 -2F98 2F99 -2F99 2F9A -2F9A 2F9B -2F9B 2F9C -2F9C 2F9D -2F9D 2F9E -2F9E 2F9F -2F9F 2FA0 -2FA0 2FA1 -2FA1 2FA2 -2FA2 2FA3 -2FA3 2FA4 -2FA4 2FA5 -2FA5 2FA6 -2FA6 2FA7 -2FA7 2FA8 -2FA8 2FA9 -2FA9 2FAA -2FAA 2FAB -2FAB 2FAC -2FAC 2FAD -2FAD 2FAE -2FAE 2FAF -2FAF 2FB0 -2FB0 2FB1 -2FB1 2FB2 -2FB2 2FB3 -2FB3 2FB4 -2FB4 2FB5 -2FB5 2FB6 -2FB6 2FB7 -2FB7 2FB8 -2FB8 2FB9 -2FB9 2FBA -2FBA 2FBB -2FBB 2FBC -2FBC 2FBD -2FBD 2FBE -2FBE 2FBF -2FBF 2FC0 -2FC0 2FC1 -2FC1 2FC2 -2FC2 2FC3 -2FC3 2FC4 -2FC4 2FC5 -2FC5 2FC6 -2FC6 2FC7 -2FC7 2FC8 -2FC8 2FC9 -2FC9 2FCA -2FCA 2FCB -2FCB 2FCC -2FCC 2FCD -2FCD 2FCE -2FCE 2FCF -2FCF 2FD0 -2FD0 2FD1 -2FD1 2FD2 -2FD2 2FD3 -2FD3 2FD4 -2FD4 2FD5 -2FD5 -3000 -3036 -3036 -3038 -3038 3039 -3039 303A -303A -309B -309B 309C -309C -309F -30FF -3131 -3131 3132 -3132 3133 -3133 3134 -3134 3135 -3135 3136 -3136 3137 -3137 3138 -3138 3139 -3139 313A -313A 313B -313B 313C -313C 313D -313D 313E -313E 313F -313F 3140 -3140 3141 -3141 3142 -3142 3143 -3143 3144 -3144 3145 -3145 3146 -3146 3147 -3147 3148 -3148 3149 -3149 314A -314A 314B -314B 314C -314C 314D -314D 314E -314E 314F -314F 3150 -3150 3151 -3151 3152 -3152 3153 -3153 3154 -3154 3155 -3155 3156 -3156 3157 -3157 3158 -3158 3159 -3159 315A -315A 315B -315B 315C -315C 315D -315D 315E -315E 315F -315F 3160 -3160 3161 -3161 3162 -3162 3163 -3163 3164 -3164 3165 -3165 3166 -3166 3167 -3167 3168 -3168 3169 -3169 316A -316A 316B -316B 316C -316C 316D -316D 316E -316E 316F -316F 3170 -3170 3171 -3171 3172 -3172 3173 -3173 3174 -3174 3175 -3175 3176 -3176 3177 -3177 3178 -3178 3179 -3179 317A -317A 317B -317B 317C -317C 317D -317D 317E -317E 317F -317F 3180 -3180 3181 -3181 3182 -3182 3183 -3183 3184 -3184 3185 -3185 3186 -3186 3187 -3187 3188 -3188 3189 -3189 318A -318A 318B -318B 318C -318C 318D -318D 318E -318E -3192 319F -3200 -3200 3201 -3201 3202 -3202 3203 -3203 3204 -3204 3205 -3205 3206 -3206 3207 -3207 3208 -3208 3209 -3209 320A -320A 320B -320B 320C -320C 320D -320D 320E -320E 320F -320F 3210 -3210 3211 -3211 3212 -3212 3213 -3213 3214 -3214 3215 -3215 3216 -3216 3217 -3217 3218 -3218 3219 -3219 321A -321A 321B -321B 321C -321C 321D -321D 321E -321E -3220 -3220 3221 -3221 3222 -3222 3223 -3223 3224 -3224 3225 -3225 3226 -3226 3227 -3227 3228 -3228 3229 -3229 322A -322A 322B -322B 322C -322C 322D -322D 322E -322E 322F -322F 3230 -3230 3231 -3231 3232 -3232 3233 -3233 3234 -3234 3235 -3235 3236 -3236 3237 -3237 3238 -3238 3239 -3239 323A -323A 323B -323B 323C -323C 323D -323D 323E -323E 323F -323F 3240 -3240 3241 -3241 3242 -3242 3243 -3243 -3250 327E -3280 32C0 -32C0 32C1 -32C1 32C2 -32C2 32C3 -32C3 32C4 -32C4 32C5 -32C5 32C6 -32C6 32C7 -32C7 32C8 -32C8 32C9 -32C9 32CA -32CA 32CB -32CB 32FE -3300 3358 -3358 3359 -3359 335A -335A 335B -335B 335C -335C 335D -335D 335E -335E 335F -335F 3360 -3360 3361 -3361 3362 -3362 3363 -3363 3364 -3364 3365 -3365 3366 -3366 3367 -3367 3368 -3368 3369 -3369 336A -336A 336B -336B 336C -336C 336D -336D 336E -336E 336F -336F 3370 -3370 33E0 -33E0 33E1 -33E1 33E2 -33E2 33E3 -33E3 33E4 -33E4 33E5 -33E5 33E6 -33E6 33E7 -33E7 33E8 -33E8 33E9 -33E9 33EA -33EA 33EB -33EB 33EC -33EC 33ED -33ED 33EE -33EE 33EF -33EF 33F0 -33F0 33F1 -33F1 33F2 -33F2 33F3 -33F3 33F4 -33F4 33F5 -33F5 33F6 -33F6 33F7 -33F7 33F8 -33F8 33F9 -33F9 33FA -33FA 33FB -33FB 33FC -33FC 33FD -33FD 33FE -33FE 33FF -FB00 -FB00 FB01 -FB01 FB02 -FB02 FB03 -FB03 FB04 -FB04 FB05 -FB05 FB06 -FB06 -FB13 -FB13 FB14 -FB14 FB15 -FB15 FB16 -FB16 FB17 -FB17 -FB20 FB29 -FB4F -FB4F FBB1 -FBD3 FD3D -FD50 FD8F -FD92 FDC7 -FDF0 FDFC -FE10 FE19 -FE30 FE44 -FE47 FE49 -FE49 FE4A -FE4A FE4B -FE4B FE4C -FE4C FE4D -FE4D FE4E -FE4E FE4F -FE4F 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 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -1D6A8 1D7C9 -1D7CE 1D7FF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/enc.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/enc.pl deleted file mode 100644 index e5cb3a29692..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/enc.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! - -# -# DecompositionType category 'Circle' -# -return <<'END'; -2460 2473 -24B6 24EA -3251 327E -3280 32BF -32D0 32FE -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/fin.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/fin.pl deleted file mode 100644 index 904383302ff..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/fin.pl +++ /dev/null @@ -1,122 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# DecompositionType category '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/tlpkg/tlperl.old/lib/unicore/lib/dt/font.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/font.pl deleted file mode 100644 index 849112dbd4d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/font.pl +++ /dev/null @@ -1,43 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# DecompositionType category 'Font' -# -return <<'END'; -2102 -210A 2113 -2115 -2119 211D -2124 -2128 -212C 212D -212F 2131 -2133 2134 -2139 -213C 2140 -2145 2149 -FB20 FB29 -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -1D6A8 1D7C9 -1D7CE 1D7FF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/fra.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/fra.pl deleted file mode 100644 index 94db2d36735..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/fra.pl +++ /dev/null @@ -1,11 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# DecompositionType category 'Fraction' -# -return <<'END'; -00BC 00BE -2153 215F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/init.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/init.pl deleted file mode 100644 index 7fd35d29ae5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/init.pl +++ /dev/null @@ -1,84 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# DecompositionType category '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/tlpkg/tlperl.old/lib/unicore/lib/dt/iso.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/iso.pl deleted file mode 100644 index 1c39772d1a4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/iso.pl +++ /dev/null @@ -1,107 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# DecompositionType category '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/tlpkg/tlperl.old/lib/unicore/lib/dt/med.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/med.pl deleted file mode 100644 index 88ae9102947..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/med.pl +++ /dev/null @@ -1,63 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# DecompositionType category '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/tlpkg/tlperl.old/lib/unicore/lib/dt/nar.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/nar.pl deleted file mode 100644 index 03d169a7250..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/nar.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! - -# -# DecompositionType category 'Narrow' -# -return <<'END'; -FF61 FFBE -FFC2 FFC7 -FFCA FFCF -FFD2 FFD7 -FFDA FFDC -FFE8 FFEE -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/nb.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/nb.pl deleted file mode 100644 index bdf1ac40251..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/nb.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! - -# -# DecompositionType category 'Nobreak' -# -return <<'END'; -00A0 -0F0C -2007 -2011 -202F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/sml.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/sml.pl deleted file mode 100644 index ca6b15f36f8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/sml.pl +++ /dev/null @@ -1,12 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# DecompositionType category 'Small' -# -return <<'END'; -FE50 FE52 -FE54 FE66 -FE68 FE6B -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/sqr.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/sqr.pl deleted file mode 100644 index 604d8978744..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/sqr.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! - -# -# DecompositionType category 'Square' -# -return <<'END'; -3250 -32CC 32CF -3300 3357 -3371 33DF -33FF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/sub.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/sub.pl deleted file mode 100644 index c5eee14337c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/sub.pl +++ /dev/null @@ -1,12 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# DecompositionType category 'Sub' -# -return <<'END'; -1D62 1D6A -2080 208E -2090 2094 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/sup.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/sup.pl deleted file mode 100644 index ae522e76b37..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/sup.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! - -# -# DecompositionType category 'Super' -# -return <<'END'; -00AA -00B2 00B3 -00B9 00BA -02B0 02B8 -02E0 02E4 -10FC -1D2C 1D2E -1D30 1D3A -1D3C 1D4D -1D4F 1D61 -1D78 -1D9B 1DBF -2070 2071 -2074 207F -2120 -2122 -2D6F -3192 319F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/vert.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/vert.pl deleted file mode 100644 index 6edf400e8e1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/vert.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! - -# -# DecompositionType category 'Vertical' -# -return <<'END'; -309F -30FF -FE10 FE19 -FE30 FE44 -FE47 FE48 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/wide.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/wide.pl deleted file mode 100644 index 99ef5131f17..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/dt/wide.pl +++ /dev/null @@ -1,12 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# DecompositionType category 'Wide' -# -return <<'END'; -3000 -FF01 FF60 -FFE0 FFE6 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/A.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/A.pl deleted file mode 100644 index 4a0cbd04120..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/A.pl +++ /dev/null @@ -1,168 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# EastAsianWidth category 'Ambiguous' -# -return <<'END'; -00A1 -00A4 -00A7 00A8 -00AA -00AD 00AE -00B0 00B4 -00B6 00BA -00BC 00BF -00C6 -00D0 -00D7 00D8 -00DE 00E1 -00E6 -00E8 00EA -00EC 00ED -00F0 -00F2 00F3 -00F7 00FA -00FC -00FE -0101 -0111 -0113 -011B -0126 0127 -012B -0131 0133 -0138 -013F 0142 -0144 -0148 014B -014D -0152 0153 -0166 0167 -016B -01CE -01D0 -01D2 -01D4 -01D6 -01D8 -01DA -01DC -0251 -0261 -02C4 -02C7 -02C9 02CB -02CD -02D0 -02D8 02DB -02DD -02DF -0300 036F -0391 03A1 -03A3 03A9 -03B1 03C1 -03C3 03C9 -0401 -0410 044F -0451 -2010 -2013 2016 -2018 2019 -201C 201D -2020 2022 -2024 2027 -2030 -2032 2033 -2035 -203B -203E -2074 -207F -2081 2084 -20AC -2103 -2105 -2109 -2113 -2116 -2121 2122 -2126 -212B -2153 2154 -215B 215E -2160 216B -2170 2179 -2190 2199 -21B8 21B9 -21D2 -21D4 -21E7 -2200 -2202 2203 -2207 2208 -220B -220F -2211 -2215 -221A -221D 2220 -2223 -2225 -2227 222C -222E -2234 2237 -223C 223D -2248 -224C -2252 -2260 2261 -2264 2267 -226A 226B -226E 226F -2282 2283 -2286 2287 -2295 -2299 -22A5 -22BF -2312 -2460 24E9 -24EB 254B -2550 2573 -2580 258F -2592 2595 -25A0 25A1 -25A3 25A9 -25B2 25B3 -25B6 25B7 -25BC 25BD -25C0 25C1 -25C6 25C8 -25CB -25CE 25D1 -25E2 25E5 -25EF -2605 2606 -2609 -260E 260F -2614 2615 -261C -261E -2640 -2642 -2660 2661 -2663 2665 -2667 266A -266C 266D -266F -273D -2776 277F -E000 F8FF -FE00 FE0F -FFFD -E0100 E01EF -F0000 FFFFD -100000 10FFFD -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/F.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/F.pl deleted file mode 100644 index 593b4680ec2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/F.pl +++ /dev/null @@ -1,12 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# EastAsianWidth category 'Fullwidth' -# -return <<'END'; -3000 -FF01 FF60 -FFE0 FFE6 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/H.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/H.pl deleted file mode 100644 index ad6e3280b78..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/H.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! - -# -# EastAsianWidth category 'Halfwidth' -# -return <<'END'; -20A9 -FF61 FFBE -FFC2 FFC7 -FFCA FFCF -FFD2 FFD7 -FFDA FFDC -FFE8 FFEE -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/N.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/N.pl deleted file mode 100644 index fc34014ca7a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/N.pl +++ /dev/null @@ -1,540 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# EastAsianWidth category 'Neutral' -# -return <<'END'; -0000 001F -007F 00A0 -00A9 -00AB -00B5 -00BB -00C0 00C5 -00C7 00CF -00D1 00D6 -00D9 00DD -00E2 00E5 -00E7 -00EB -00EE 00EF -00F1 -00F4 00F6 -00FB -00FD -00FF 0100 -0102 0110 -0112 -0114 011A -011C 0125 -0128 012A -012C 0130 -0134 0137 -0139 013E -0143 -0145 0147 -014C -014E 0151 -0154 0165 -0168 016A -016C 01CD -01CF -01D1 -01D3 -01D5 -01D7 -01D9 -01DB -01DD 0241 -0250 -0252 0260 -0262 02C3 -02C5 02C6 -02C8 -02CC -02CE 02CF -02D1 02D7 -02DC -02DE -02E0 02FF -0374 0375 -037A -037E -0384 038A -038C -038E 0390 -03AA 03B0 -03C2 -03CA 03CE -03D0 0400 -0402 040F -0450 -0452 0486 -0488 04CE -04D0 04F9 -0500 050F -0531 0556 -0559 055F -0561 0587 -0589 058A -0591 05B9 -05BB 05C7 -05D0 05EA -05F0 05F4 -0600 0603 -060B 0615 -061B -061E 061F -0621 063A -0640 065E -0660 070D -070F 074A -074D 076D -0780 07B1 -0901 0939 -093C 094D -0950 0954 -0958 0970 -097D -0981 0983 -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BC 09C4 -09C7 09C8 -09CB 09CE -09D7 -09DC 09DD -09DF 09E3 -09E6 09FA -0A01 0A03 -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 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABC 0AC5 -0AC7 0AC9 -0ACB 0ACD -0AD0 -0AE0 0AE3 -0AE6 0AEF -0AF1 -0B01 0B03 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3C 0B43 -0B47 0B48 -0B4B 0B4D -0B56 0B57 -0B5C 0B5D -0B5F 0B61 -0B66 0B71 -0B82 0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 0BB9 -0BBE 0BC2 -0BC6 0BC8 -0BCA 0BCD -0BD7 -0BE6 0BFA -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 -0CBC 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 0FD1 -1000 1021 -1023 1027 -1029 102A -102C 1032 -1036 1039 -1040 1059 -10A0 10C5 -10D0 10FC -1160 11A2 -11A8 11F9 -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -135F 137C -1380 1399 -13A0 13F4 -1401 1676 -1680 169C -16A0 16F0 -1700 170C -170E 1714 -1720 1736 -1740 1753 -1760 176C -176E 1770 -1772 1773 -1780 17DD -17E0 17E9 -17F0 17F9 -1800 180E -1810 1819 -1820 1877 -1880 18A9 -1900 191C -1920 192B -1930 193B -1940 -1944 196D -1970 1974 -1980 19A9 -19B0 19C9 -19D0 19D9 -19DE 1A1B -1A1E 1A1F -1D00 1DC3 -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 200F -2011 2012 -2017 -201A 201B -201E 201F -2023 -2028 202F -2031 -2034 -2036 203A -203C 203D -203F 2063 -206A 2071 -2075 207E -2080 -2085 208E -2090 2094 -20A0 20A8 -20AA 20AB -20AD 20B5 -20D0 20EB -2100 2102 -2104 -2106 2108 -210A 2112 -2114 2115 -2117 2120 -2123 2125 -2127 212A -212C 214C -2155 215A -215F -216C 216F -217A 2183 -219A 21B7 -21BA 21D1 -21D3 -21D5 21E6 -21E8 21FF -2201 -2204 2206 -2209 220A -220C 220E -2210 -2212 2214 -2216 2219 -221B 221C -2221 2222 -2224 -2226 -222D -222F 2233 -2238 223B -223E 2247 -2249 224B -224D 2251 -2253 225F -2262 2263 -2268 2269 -226C 226D -2270 2281 -2284 2285 -2288 2294 -2296 2298 -229A 22A4 -22A6 22BE -22C0 2311 -2313 2328 -232B 23DB -2400 2426 -2440 244A -24EA -254C 254F -2574 257F -2590 2591 -2596 259F -25A2 -25AA 25B1 -25B4 25B5 -25B8 25BB -25BE 25BF -25C2 25C5 -25C9 25CA -25CC 25CD -25D2 25E1 -25E6 25EE -25F0 2604 -2607 2608 -260A 260D -2610 2613 -2616 261B -261D -261F 263F -2641 -2643 265F -2662 -2666 -266B -266E -2670 269C -26A0 26B1 -2701 2704 -2706 2709 -270C 2727 -2729 273C -273E 274B -274D -274F 2752 -2756 -2758 275E -2761 2775 -2780 2794 -2798 27AF -27B1 27BE -27C0 27C6 -27D0 27E5 -27F0 2984 -2987 2B13 -2C00 2C2E -2C30 2C5E -2C80 2CEA -2CF9 2D25 -2D30 2D65 -2D6F -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -2E00 2E17 -2E1C 2E1D -303F -4DC0 4DFF -A700 A716 -A800 A82B -D800 DFFF -FB00 FB06 -FB13 FB17 -FB1D FB36 -FB38 FB3C -FB3E -FB40 FB41 -FB43 FB44 -FB46 FBB1 -FBD3 FD3F -FD50 FD8F -FD92 FDC7 -FDF0 FDFD -FE20 FE23 -FE70 FE74 -FE76 FEFC -FEFF -FFF9 FFFC -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10100 10102 -10107 10133 -10137 1018A -10300 1031E -10320 10323 -10330 1034A -10380 1039D -1039F 103C3 -103C8 103D5 -10400 1049D -104A0 104A9 -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 10A03 -10A05 10A06 -10A0C 10A13 -10A15 10A17 -10A19 10A33 -10A38 10A3A -10A3F 10A47 -10A50 10A58 -1D000 1D0F5 -1D100 1D126 -1D12A 1D1DD -1D200 1D245 -1D300 1D356 -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -1D6A8 1D7C9 -1D7CE 1D7FF -E0001 -E0020 E007F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/Na.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/Na.pl deleted file mode 100644 index 3e74768687b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/Na.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! - -# -# EastAsianWidth category 'Narrow' -# -return <<'END'; -0020 007E -00A2 00A3 -00A5 00A6 -00AC -00AF -27E6 27EB -2985 2986 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/W.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/W.pl deleted file mode 100644 index 5976941c199..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/ea/W.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! - -# -# EastAsianWidth category 'Wide' -# -return <<'END'; -1100 1159 -115F -2329 232A -2E80 2E99 -2E9B 2EF3 -2F00 2FD5 -2FF0 2FFB -3001 303E -3041 3096 -3099 30FF -3105 312C -3131 318E -3190 31B7 -31C0 31CF -31F0 321E -3220 3243 -3250 32FE -3300 4DB5 -4E00 9FBB -A000 A48C -A490 A4C6 -AC00 D7A3 -F900 FA2D -FA30 FA6A -FA70 FAD9 -FE10 FE19 -FE30 FE52 -FE54 FE66 -FE68 FE6B -20000 2FFFD -30000 3FFFD -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/AHex.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/AHex.pl deleted file mode 100644 index 917392baafc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/AHex.pl +++ /dev/null @@ -1,12 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Binary 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/ASCII.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/ASCII.pl deleted file mode 100644 index dc7db1e1773..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Alnum.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Alnum.pl deleted file mode 100644 index 58176b0bb58..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Alnum.pl +++ /dev/null @@ -1,448 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -00B5 -00BA -00C0 00D6 -00D8 00F6 -00F8 0241 -0250 02C1 -02C6 02D1 -02E0 02E4 -02EE -0300 036F -037A -0386 -0388 038A -038C -038E 03A1 -03A3 03CE -03D0 03F5 -03F7 0481 -0483 0486 -0488 04CE -04D0 04F9 -0500 050F -0531 0556 -0559 -0561 0587 -0591 05B9 -05BB 05BD -05BF -05C1 05C2 -05C4 05C5 -05C7 -05D0 05EA -05F0 05F2 -0610 0615 -0621 063A -0640 065E -0660 0669 -066E 06D3 -06D5 06DC -06DE 06E8 -06EA 06FC -06FF -0710 074A -074D 076D -0780 07B1 -0901 0939 -093C 094D -0950 0954 -0958 0963 -0966 096F -097D -0981 0983 -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BC 09C4 -09C7 09C8 -09CB 09CE -09D7 -09DC 09DD -09DF 09E3 -09E6 09F1 -0A01 0A03 -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 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABC 0AC5 -0AC7 0AC9 -0ACB 0ACD -0AD0 -0AE0 0AE3 -0AE6 0AEF -0B01 0B03 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3C 0B43 -0B47 0B48 -0B4B 0B4D -0B56 0B57 -0B5C 0B5D -0B5F 0B61 -0B66 0B6F -0B71 -0B82 0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 0BB9 -0BBE 0BC2 -0BC6 0BC8 -0BCA 0BCD -0BD7 -0BE6 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 -0CBC 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 10FA -10FC -1100 1159 -115F 11A2 -11A8 11F9 -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -135F -1380 138F -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 17B3 -17B6 17D3 -17D7 -17DC 17DD -17E0 17E9 -180B 180D -1810 1819 -1820 1877 -1880 18A9 -1900 191C -1920 192B -1930 193B -1946 196D -1970 1974 -1980 19A9 -19B0 19C9 -19D0 19D9 -1A00 1A1B -1D00 1DC3 -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 -2090 2094 -20D0 20EB -2102 -2107 -210A 2113 -2115 -2119 211D -2124 -2126 -2128 -212A 212D -212F 2131 -2133 2139 -213C 213F -2145 2149 -2C00 2C2E -2C30 2C5E -2C80 2CE4 -2D00 2D25 -2D30 2D65 -2D6F -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -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 9FBB -A000 A48C -A800 A827 -AC00 D7A3 -F900 FA2D -FA30 FA6A -FA70 FAD9 -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 -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10300 1031E -10330 10349 -10380 1039D -103A0 103C3 -103C8 103CF -10400 1049D -104A0 104A9 -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 10A03 -10A05 10A06 -10A0C 10A13 -10A15 10A17 -10A19 10A33 -10A38 10A3A -10A3F -1D165 1D169 -1D16D 1D172 -1D17B 1D182 -1D185 1D18B -1D1AA 1D1AD -1D242 1D244 -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -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 -E0100 E01EF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Alpha.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Alpha.pl deleted file mode 100644 index 54a4bda4b05..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Alpha.pl +++ /dev/null @@ -1,430 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 0241 -0250 02C1 -02C6 02D1 -02E0 02E4 -02EE -0300 036F -037A -0386 -0388 038A -038C -038E 03A1 -03A3 03CE -03D0 03F5 -03F7 0481 -0483 0486 -0488 04CE -04D0 04F9 -0500 050F -0531 0556 -0559 -0561 0587 -0591 05B9 -05BB 05BD -05BF -05C1 05C2 -05C4 05C5 -05C7 -05D0 05EA -05F0 05F2 -0610 0615 -0621 063A -0640 065E -066E 06D3 -06D5 06DC -06DE 06E8 -06EA 06EF -06FA 06FC -06FF -0710 074A -074D 076D -0780 07B1 -0901 0939 -093C 094D -0950 0954 -0958 0963 -097D -0981 0983 -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BC 09C4 -09C7 09C8 -09CB 09CE -09D7 -09DC 09DD -09DF 09E3 -09F0 09F1 -0A01 0A03 -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 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABC 0AC5 -0AC7 0AC9 -0ACB 0ACD -0AD0 -0AE0 0AE3 -0B01 0B03 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3C 0B43 -0B47 0B48 -0B4B 0B4D -0B56 0B57 -0B5C 0B5D -0B5F 0B61 -0B71 -0B82 0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 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 -0CBC 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 10FA -10FC -1100 1159 -115F 11A2 -11A8 11F9 -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -135F -1380 138F -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 17B3 -17B6 17D3 -17D7 -17DC 17DD -180B 180D -1820 1877 -1880 18A9 -1900 191C -1920 192B -1930 193B -1950 196D -1970 1974 -1980 19A9 -19B0 19C9 -1A00 1A1B -1D00 1DC3 -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 -2090 2094 -20D0 20EB -2102 -2107 -210A 2113 -2115 -2119 211D -2124 -2126 -2128 -212A 212D -212F 2131 -2133 2139 -213C 213F -2145 2149 -2C00 2C2E -2C30 2C5E -2C80 2CE4 -2D00 2D25 -2D30 2D65 -2D6F -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -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 9FBB -A000 A48C -A800 A827 -AC00 D7A3 -F900 FA2D -FA30 FA6A -FA70 FAD9 -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 -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10300 1031E -10330 10349 -10380 1039D -103A0 103C3 -103C8 103CF -10400 1049D -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 10A03 -10A05 10A06 -10A0C 10A13 -10A15 10A17 -10A19 10A33 -10A38 10A3A -10A3F -1D165 1D169 -1D16D 1D172 -1D17B 1D182 -1D185 1D18B -1D1AA 1D1AD -1D242 1D244 -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -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 -E0100 E01EF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Alphabet.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Alphabet.pl deleted file mode 100644 index 17b2548e144..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Alphabet.pl +++ /dev/null @@ -1,415 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 0241 -0250 02C1 -02C6 02D1 -02E0 02E4 -02EE -0345 -037A -0386 -0388 038A -038C -038E 03A1 -03A3 03CE -03D0 03F5 -03F7 0481 -048A 04CE -04D0 04F9 -0500 050F -0531 0556 -0559 -0561 0587 -05B0 05B9 -05BB 05BD -05BF -05C1 05C2 -05C4 05C5 -05C7 -05D0 05EA -05F0 05F2 -0610 0615 -0621 063A -0640 0657 -0659 065E -066E 06D3 -06D5 06DC -06E1 06E8 -06ED 06EF -06FA 06FC -06FF -0710 073F -074D 076D -0780 07B1 -0901 0939 -093D 094C -0950 -0958 0963 -097D -0981 0983 -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BD 09C4 -09C7 09C8 -09CB 09CC -09CE -09D7 -09DC 09DD -09DF 09E3 -09F0 09F1 -0A01 0A03 -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 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABD 0AC5 -0AC7 0AC9 -0ACB 0ACC -0AD0 -0AE0 0AE3 -0B01 0B03 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3D 0B43 -0B47 0B48 -0B4B 0B4C -0B56 0B57 -0B5C 0B5D -0B5F 0B61 -0B71 -0B82 0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 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 -0CBD 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 10FA -10FC -1100 1159 -115F 11A2 -11A8 11F9 -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -135F -1380 138F -13A0 13F4 -1401 166C -166F 1676 -1681 169A -16A0 16EA -1700 170C -170E 1713 -1720 1733 -1740 1753 -1760 176C -176E 1770 -1772 1773 -1780 17B3 -17B6 17C8 -17D7 -17DC -1820 1877 -1880 18A9 -1900 191C -1920 192B -1930 1938 -1950 196D -1970 1974 -1980 19A9 -19B0 19C9 -1A00 1A1B -1D00 1DBF -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 -2090 2094 -2102 -2107 -210A 2113 -2115 -2119 211D -2124 -2126 -2128 -212A 212D -212F 2131 -2133 2139 -213C 213F -2145 2149 -24B6 24E9 -2C00 2C2E -2C30 2C5E -2C80 2CE4 -2D00 2D25 -2D30 2D65 -2D6F -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -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 9FBB -A000 A48C -A800 A801 -A803 A805 -A807 A80A -A80C A827 -AC00 D7A3 -F900 FA2D -FA30 FA6A -FA70 FAD9 -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 -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10300 1031E -10330 10349 -10380 1039D -103A0 103C3 -103C8 103CF -10400 1049D -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 10A03 -10A05 10A06 -10A0C 10A13 -10A15 10A17 -10A19 10A33 -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Any.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Any.pl deleted file mode 100644 index f98cd73ced4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Arab.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Arab.pl deleted file mode 100644 index ed9ebd5c069..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Arab.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{Arabic} (and fuzzy permutations) -# -# Meaning: Script 'Arabic' -# -return <<'END'; -060B Arabic -060D 0615 Arabic -061E Arabic -0621 063A Arabic -0641 064A Arabic -0656 065E Arabic -066A 066F Arabic -0671 06DC Arabic -06DE 06FF Arabic -0750 076D Arabic -FB50 FBB1 Arabic -FBD3 FD3D Arabic -FD50 FD8F Arabic -FD92 FDC7 Arabic -FDF0 FDFC Arabic -FE70 FE74 Arabic -FE76 FEFC Arabic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Armn.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Armn.pl deleted file mode 100644 index 0aa98b8de20..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Armn.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{Armenian} (and fuzzy permutations) -# -# Meaning: Script 'Armenian' -# -return <<'END'; -0531 0556 Armenian -0559 055F Armenian -0561 0587 Armenian -058A Armenian -FB13 FB17 Armenian -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/AsciiHex.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/AsciiHex.pl deleted file mode 100644 index be2637d80ed..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Assigned.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Assigned.pl deleted file mode 100644 index 66a7c540201..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Assigned.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{Assigned} -# -# Meaning: All assigned code points -# -return <<'END'; -0000 0241 -0250 036F -0374 0375 -037A -037E -0384 038A -038C -038E 03A1 -03A3 03CE -03D0 0486 -0488 04CE -04D0 04F9 -0500 050F -0531 0556 -0559 055F -0561 0587 -0589 058A -0591 05B9 -05BB 05C7 -05D0 05EA -05F0 05F4 -0600 0603 -060B 0615 -061B -061E 061F -0621 063A -0640 065E -0660 070D -070F 074A -074D 076D -0780 07B1 -0901 0939 -093C 094D -0950 0954 -0958 0970 -097D -0981 0983 -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BC 09C4 -09C7 09C8 -09CB 09CE -09D7 -09DC 09DD -09DF 09E3 -09E6 09FA -0A01 0A03 -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 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABC 0AC5 -0AC7 0AC9 -0ACB 0ACD -0AD0 -0AE0 0AE3 -0AE6 0AEF -0AF1 -0B01 0B03 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3C 0B43 -0B47 0B48 -0B4B 0B4D -0B56 0B57 -0B5C 0B5D -0B5F 0B61 -0B66 0B71 -0B82 0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 0BB9 -0BBE 0BC2 -0BC6 0BC8 -0BCA 0BCD -0BD7 -0BE6 0BFA -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 -0CBC 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 0FD1 -1000 1021 -1023 1027 -1029 102A -102C 1032 -1036 1039 -1040 1059 -10A0 10C5 -10D0 10FC -1100 1159 -115F 11A2 -11A8 11F9 -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -135F 137C -1380 1399 -13A0 13F4 -1401 1676 -1680 169C -16A0 16F0 -1700 170C -170E 1714 -1720 1736 -1740 1753 -1760 176C -176E 1770 -1772 1773 -1780 17DD -17E0 17E9 -17F0 17F9 -1800 180E -1810 1819 -1820 1877 -1880 18A9 -1900 191C -1920 192B -1930 193B -1940 -1944 196D -1970 1974 -1980 19A9 -19B0 19C9 -19D0 19D9 -19DE 1A1B -1A1E 1A1F -1D00 1DC3 -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 2063 -206A 2071 -2074 208E -2090 2094 -20A0 20B5 -20D0 20EB -2100 214C -2153 2183 -2190 23DB -2400 2426 -2440 244A -2460 269C -26A0 26B1 -2701 2704 -2706 2709 -270C 2727 -2729 274B -274D -274F 2752 -2756 -2758 275E -2761 2794 -2798 27AF -27B1 27BE -27C0 27C6 -27D0 27EB -27F0 2B13 -2C00 2C2E -2C30 2C5E -2C80 2CEA -2CF9 2D25 -2D30 2D65 -2D6F -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -2E00 2E17 -2E1C 2E1D -2E80 2E99 -2E9B 2EF3 -2F00 2FD5 -2FF0 2FFB -3000 303F -3041 3096 -3099 30FF -3105 312C -3131 318E -3190 31B7 -31C0 31CF -31F0 321E -3220 3243 -3250 32FE -3300 4DB5 -4DC0 9FBB -A000 A48C -A490 A4C6 -A700 A716 -A800 A82B -AC00 D7A3 -D800 FA2D -FA30 FA6A -FA70 FAD9 -FB00 FB06 -FB13 FB17 -FB1D FB36 -FB38 FB3C -FB3E -FB40 FB41 -FB43 FB44 -FB46 FBB1 -FBD3 FD3F -FD50 FD8F -FD92 FDC7 -FDF0 FDFD -FE00 FE19 -FE20 FE23 -FE30 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 -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10100 10102 -10107 10133 -10137 1018A -10300 1031E -10320 10323 -10330 1034A -10380 1039D -1039F 103C3 -103C8 103D5 -10400 1049D -104A0 104A9 -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 10A03 -10A05 10A06 -10A0C 10A13 -10A15 10A17 -10A19 10A33 -10A38 10A3A -10A3F 10A47 -10A50 10A58 -1D000 1D0F5 -1D100 1D126 -1D12A 1D1DD -1D200 1D245 -1D300 1D356 -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -1D6A8 1D7C9 -1D7CE 1D7FF -20000 2A6D6 -2F800 2FA1D -E0001 -E0020 E007F -E0100 E01EF -F0000 FFFFD -100000 10FFFD -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Beng.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Beng.pl deleted file mode 100644 index 2df6a3ccfa4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Beng.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{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 09C4 Bengali -09C7 09C8 Bengali -09CB 09CE Bengali -09D7 Bengali -09DC 09DD Bengali -09DF 09E3 Bengali -09E6 09FA Bengali -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/BidiC.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/BidiC.pl deleted file mode 100644 index 634625fc6f2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/BidiC.pl +++ /dev/null @@ -1,11 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Binary property 'Bidi_Control' -# -return <<'END'; -200E 200F Bidi_Control -202A 202E Bidi_Control -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/BidiCont.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/BidiCont.pl deleted file mode 100644 index 7f51ac42b26..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Blank.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Blank.pl deleted file mode 100644 index 6d8519ac41c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Blank.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{Blank} -# -# Meaning: [[:Blank:]] -# -return <<'END'; -0009 -0020 -00A0 -1680 -180E -2000 200A -202F -205F -3000 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Bopo.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Bopo.pl deleted file mode 100644 index 955e0c99a2d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Bopo.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Brai.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Brai.pl deleted file mode 100644 index 368ded7e411..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Brai.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{Braille} (and fuzzy permutations) -# -# Meaning: Script 'Braille' -# -return <<'END'; -2800 28FF Braille -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Bugi.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Bugi.pl deleted file mode 100644 index 41957df22fe..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Bugi.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{Buginese} (and fuzzy permutations) -# -# Meaning: Script 'Buginese' -# -return <<'END'; -1A00 1A1B Buginese -1A1E 1A1F Buginese -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Buhd.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Buhd.pl deleted file mode 100644 index 47e8b1f6134..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Buhd.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/C.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/C.pl deleted file mode 100644 index 9d6c14681d9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/C.pl +++ /dev/null @@ -1,435 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -00AD -0242 024F -0370 0373 -0376 0379 -037B 037D -037F 0383 -038B -038D -03A2 -03CF -0487 -04CF -04FA 04FF -0510 0530 -0557 0558 -0560 -0588 -058B 0590 -05BA -05C8 05CF -05EB 05EF -05F5 060A -0616 061A -061C 061D -0620 -063B 063F -065F -06DD -070E 070F -074B 074C -076E 077F -07B2 0900 -093A 093B -094E 094F -0955 0957 -0971 097C -097E 0980 -0984 -098D 098E -0991 0992 -09A9 -09B1 -09B3 09B5 -09BA 09BB -09C5 09C6 -09C9 09CA -09CF 09D6 -09D8 09DB -09DE -09E4 09E5 -09FB 0A00 -0A04 -0A0B 0A0E -0A11 0A12 -0A29 -0A31 -0A34 -0A37 -0A3A 0A3B -0A3D -0A43 0A46 -0A49 0A4A -0A4E 0A58 -0A5D -0A5F 0A65 -0A75 0A80 -0A84 -0A8E -0A92 -0AA9 -0AB1 -0AB4 -0ABA 0ABB -0AC6 -0ACA -0ACE 0ACF -0AD1 0ADF -0AE4 0AE5 -0AF0 -0AF2 0B00 -0B04 -0B0D 0B0E -0B11 0B12 -0B29 -0B31 -0B34 -0B3A 0B3B -0B44 0B46 -0B49 0B4A -0B4E 0B55 -0B58 0B5B -0B5E -0B62 0B65 -0B72 0B81 -0B84 -0B8B 0B8D -0B91 -0B96 0B98 -0B9B -0B9D -0BA0 0BA2 -0BA5 0BA7 -0BAB 0BAD -0BBA 0BBD -0BC3 0BC5 -0BC9 -0BCE 0BD6 -0BD8 0BE5 -0BFB 0C00 -0C04 -0C0D -0C11 -0C29 -0C34 -0C3A 0C3D -0C45 -0C49 -0C4E 0C54 -0C57 0C5F -0C62 0C65 -0C70 0C81 -0C84 -0C8D -0C91 -0CA9 -0CB4 -0CBA 0CBB -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 -0FD2 0FFF -1022 -1028 -102B -1033 1035 -103A 103F -105A 109F -10C6 10CF -10FD 10FF -115A 115E -11A3 11A7 -11FA 11FF -1249 -124E 124F -1257 -1259 -125E 125F -1289 -128E 128F -12B1 -12B6 12B7 -12BF -12C1 -12C6 12C7 -12D7 -1311 -1316 1317 -135B 135E -137D 137F -139A 139F -13F5 1400 -1677 167F -169D 169F -16F1 16FF -170D -1715 171F -1737 173F -1754 175F -176D -1771 -1774 177F -17B4 17B5 -17DE 17DF -17EA 17EF -17FA 17FF -180F -181A 181F -1878 187F -18AA 18FF -191D 191F -192C 192F -193C 193F -1941 1943 -196E 196F -1975 197F -19AA 19AF -19CA 19CF -19DA 19DD -1A1C 1A1D -1A20 1CFF -1DC4 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 -200B 200F -202A 202E -2060 206F -2072 2073 -208F -2095 209F -20B6 20CF -20EC 20FF -214D 2152 -2184 218F -23DC 23FF -2427 243F -244B 245F -269D 269F -26B2 2700 -2705 -270A 270B -2728 -274C -274E -2753 2755 -2757 -275F 2760 -2795 2797 -27B0 -27BF -27C7 27CF -27EC 27EF -2B14 2BFF -2C2F -2C5F 2C7F -2CEB 2CF8 -2D26 2D2F -2D66 2D6E -2D70 2D7F -2D97 2D9F -2DA7 -2DAF -2DB7 -2DBF -2DC7 -2DCF -2DD7 -2DDF 2DFF -2E18 2E1B -2E1E 2E7F -2E9A -2EF4 2EFF -2FD6 2FEF -2FFC 2FFF -3040 -3097 3098 -3100 3104 -312D 3130 -318F -31B8 31BF -31D0 31EF -321F -3244 324F -32FF -4DB6 4DBF -9FBC 9FFF -A48D A48F -A4C7 A6FF -A717 A7FF -A82C ABFF -D7A4 F8FF -FA2E FA2F -FA6B FA6F -FADA FAFF -FB07 FB12 -FB18 FB1C -FB37 -FB3D -FB3F -FB42 -FB45 -FBB2 FBD2 -FD40 FD4F -FD90 FD91 -FDC8 FDEF -FDFE FDFF -FE1A FE1F -FE24 FE2F -FE53 -FE67 -FE6C FE6F -FE75 -FEFD FF00 -FFBF FFC1 -FFC8 FFC9 -FFD0 FFD1 -FFD8 FFD9 -FFDD FFDF -FFE7 -FFEF FFFB -FFFE FFFF -1000C -10027 -1003B -1003E -1004E 1004F -1005E 1007F -100FB 100FF -10103 10106 -10134 10136 -1018B 102FF -1031F -10324 1032F -1034B 1037F -1039E -103C4 103C7 -103D6 103FF -1049E 1049F -104AA 107FF -10806 10807 -10809 -10836 -10839 1083B -1083D 1083E -10840 109FF -10A04 -10A07 10A0B -10A14 -10A18 -10A34 10A37 -10A3B 10A3E -10A48 10A4F -10A59 1CFFF -1D0F6 1D0FF -1D127 1D129 -1D173 1D17A -1D1DE 1D1FF -1D246 1D2FF -1D357 1D3FF -1D455 -1D49D -1D4A0 1D4A1 -1D4A3 1D4A4 -1D4A7 1D4A8 -1D4AD -1D4BA -1D4BC -1D4C4 -1D506 -1D50B 1D50C -1D515 -1D51D -1D53A -1D53F -1D545 -1D547 1D549 -1D551 -1D6A6 1D6A7 -1D7CA 1D7CD -1D800 1FFFF -2A6D7 2F7FF -2FA1E E00FF -E01F0 10FFFF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Canadian.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Canadian.pl deleted file mode 100644 index 6eb1c061bad..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Canadian.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{CanadianAboriginal} (and fuzzy permutations) -# -# Meaning: Script 'Canadian_Aboriginal' -# -return <<'END'; -1401 1676 Canadian_Aboriginal -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cc.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cc.pl deleted file mode 100644 index f7715fc9d24..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cf.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cf.pl deleted file mode 100644 index d2291e2bce5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cf.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{Cf} -# \p{Cf} (and fuzzy permutations) -# -# Meaning: General Category 'Cf' -# -return <<'END'; -00AD -0600 0603 -06DD -070F -17B4 17B5 -200B 200F -202A 202E -2060 2063 -206A 206F -FEFF -FFF9 FFFB -1D173 1D17A -E0001 -E0020 E007F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cher.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cher.pl deleted file mode 100644 index 11e7733fcb7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cher.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cn.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cn.pl deleted file mode 100644 index d94d4bc7e11..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cn.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{Cn} -# \p{Cn} (and fuzzy permutations) -# -# Meaning: General Category 'Cn' [not functional in Perl] -# -return <<'END'; -0242 024F -0370 0373 -0376 0379 -037B 037D -037F 0383 -038B -038D -03A2 -03CF -0487 -04CF -04FA 04FF -0510 0530 -0557 0558 -0560 -0588 -058B 0590 -05BA -05C8 05CF -05EB 05EF -05F5 05FF -0604 060A -0616 061A -061C 061D -0620 -063B 063F -065F -070E -074B 074C -076E 077F -07B2 0900 -093A 093B -094E 094F -0955 0957 -0971 097C -097E 0980 -0984 -098D 098E -0991 0992 -09A9 -09B1 -09B3 09B5 -09BA 09BB -09C5 09C6 -09C9 09CA -09CF 09D6 -09D8 09DB -09DE -09E4 09E5 -09FB 0A00 -0A04 -0A0B 0A0E -0A11 0A12 -0A29 -0A31 -0A34 -0A37 -0A3A 0A3B -0A3D -0A43 0A46 -0A49 0A4A -0A4E 0A58 -0A5D -0A5F 0A65 -0A75 0A80 -0A84 -0A8E -0A92 -0AA9 -0AB1 -0AB4 -0ABA 0ABB -0AC6 -0ACA -0ACE 0ACF -0AD1 0ADF -0AE4 0AE5 -0AF0 -0AF2 0B00 -0B04 -0B0D 0B0E -0B11 0B12 -0B29 -0B31 -0B34 -0B3A 0B3B -0B44 0B46 -0B49 0B4A -0B4E 0B55 -0B58 0B5B -0B5E -0B62 0B65 -0B72 0B81 -0B84 -0B8B 0B8D -0B91 -0B96 0B98 -0B9B -0B9D -0BA0 0BA2 -0BA5 0BA7 -0BAB 0BAD -0BBA 0BBD -0BC3 0BC5 -0BC9 -0BCE 0BD6 -0BD8 0BE5 -0BFB 0C00 -0C04 -0C0D -0C11 -0C29 -0C34 -0C3A 0C3D -0C45 -0C49 -0C4E 0C54 -0C57 0C5F -0C62 0C65 -0C70 0C81 -0C84 -0C8D -0C91 -0CA9 -0CB4 -0CBA 0CBB -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 -0FD2 0FFF -1022 -1028 -102B -1033 1035 -103A 103F -105A 109F -10C6 10CF -10FD 10FF -115A 115E -11A3 11A7 -11FA 11FF -1249 -124E 124F -1257 -1259 -125E 125F -1289 -128E 128F -12B1 -12B6 12B7 -12BF -12C1 -12C6 12C7 -12D7 -1311 -1316 1317 -135B 135E -137D 137F -139A 139F -13F5 1400 -1677 167F -169D 169F -16F1 16FF -170D -1715 171F -1737 173F -1754 175F -176D -1771 -1774 177F -17DE 17DF -17EA 17EF -17FA 17FF -180F -181A 181F -1878 187F -18AA 18FF -191D 191F -192C 192F -193C 193F -1941 1943 -196E 196F -1975 197F -19AA 19AF -19CA 19CF -19DA 19DD -1A1C 1A1D -1A20 1CFF -1DC4 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 -2064 2069 -2072 2073 -208F -2095 209F -20B6 20CF -20EC 20FF -214D 2152 -2184 218F -23DC 23FF -2427 243F -244B 245F -269D 269F -26B2 2700 -2705 -270A 270B -2728 -274C -274E -2753 2755 -2757 -275F 2760 -2795 2797 -27B0 -27BF -27C7 27CF -27EC 27EF -2B14 2BFF -2C2F -2C5F 2C7F -2CEB 2CF8 -2D26 2D2F -2D66 2D6E -2D70 2D7F -2D97 2D9F -2DA7 -2DAF -2DB7 -2DBF -2DC7 -2DCF -2DD7 -2DDF 2DFF -2E18 2E1B -2E1E 2E7F -2E9A -2EF4 2EFF -2FD6 2FEF -2FFC 2FFF -3040 -3097 3098 -3100 3104 -312D 3130 -318F -31B8 31BF -31D0 31EF -321F -3244 324F -32FF -4DB6 4DBF -9FBC 9FFF -A48D A48F -A4C7 A6FF -A717 A7FF -A82C ABFF -D7A4 D7FF -FA2E FA2F -FA6B FA6F -FADA FAFF -FB07 FB12 -FB18 FB1C -FB37 -FB3D -FB3F -FB42 -FB45 -FBB2 FBD2 -FD40 FD4F -FD90 FD91 -FDC8 FDEF -FDFE FDFF -FE1A FE1F -FE24 FE2F -FE53 -FE67 -FE6C FE6F -FE75 -FEFD FEFE -FF00 -FFBF FFC1 -FFC8 FFC9 -FFD0 FFD1 -FFD8 FFD9 -FFDD FFDF -FFE7 -FFEF FFF8 -FFFE FFFF -1000C -10027 -1003B -1003E -1004E 1004F -1005E 1007F -100FB 100FF -10103 10106 -10134 10136 -1018B 102FF -1031F -10324 1032F -1034B 1037F -1039E -103C4 103C7 -103D6 103FF -1049E 1049F -104AA 107FF -10806 10807 -10809 -10836 -10839 1083B -1083D 1083E -10840 109FF -10A04 -10A07 10A0B -10A14 -10A18 -10A34 10A37 -10A3B 10A3E -10A48 10A4F -10A59 1CFFF -1D0F6 1D0FF -1D127 1D129 -1D1DE 1D1FF -1D246 1D2FF -1D357 1D3FF -1D455 -1D49D -1D4A0 1D4A1 -1D4A3 1D4A4 -1D4A7 1D4A8 -1D4AD -1D4BA -1D4BC -1D4C4 -1D506 -1D50B 1D50C -1D515 -1D51D -1D53A -1D53F -1D545 -1D547 1D549 -1D551 -1D6A6 1D6A7 -1D7CA 1D7CD -1D800 1FFFF -2A6D7 2F7FF -2FA1E E0000 -E0002 E001F -E0080 E00FF -E01F0 EFFFF -FFFFE FFFFF -10FFFE 10FFFF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cntrl.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cntrl.pl deleted file mode 100644 index 9d9f7407318..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cntrl.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{Cntrl} -# -# Meaning: [[:Cntrl:]] -# -return <<'END'; -0000 001F -007F 009F -00AD -0600 0603 -06DD -070F -17B4 17B5 -200B 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Co.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Co.pl deleted file mode 100644 index 5cb8379366e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Copt.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Copt.pl deleted file mode 100644 index f8942a996f9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Copt.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{Coptic} (and fuzzy permutations) -# -# Meaning: Script 'Coptic' -# -return <<'END'; -03E2 03EF Coptic -2C80 2CEA Coptic -2CF9 2CFF Coptic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cprt.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cprt.pl deleted file mode 100644 index 95b9922a16e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cprt.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{Cypriot} (and fuzzy permutations) -# -# Meaning: Script 'Cypriot' -# -return <<'END'; -10800 10805 Cypriot -10808 Cypriot -1080A 10835 Cypriot -10837 10838 Cypriot -1083C Cypriot -1083F Cypriot -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cs.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cs.pl deleted file mode 100644 index 02ccb70cae6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cyrl.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cyrl.pl deleted file mode 100644 index 1b3412ffffe..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Cyrl.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 0486 Cyrillic -0488 04CE Cyrillic -04D0 04F9 Cyrillic -0500 050F Cyrillic -1D2B Cyrillic -1D78 Cyrillic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dash.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dash.pl deleted file mode 100644 index 98b7e3401ed..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dash.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! - -# -# Binary property 'Dash' -# -return <<'END'; -002D Dash -058A Dash -1806 Dash -2010 2015 Dash -2053 Dash -207B Dash -208B Dash -2212 Dash -2E17 Dash -301C Dash -3030 Dash -30A0 Dash -FE31 FE32 Dash -FE58 Dash -FE63 Dash -FF0D Dash -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dash2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dash2.pl deleted file mode 100644 index b6c40f34bb5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dash2.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{Dash} (and fuzzy permutations) -# -# Meaning: Extended property 'Dash' -# -return <<'END'; -002D Dash -058A Dash -1806 Dash -2010 2015 Dash -2053 Dash -207B Dash -208B Dash -2212 Dash -2E17 Dash -301C Dash -3030 Dash -30A0 Dash -FE31 FE32 Dash -FE58 Dash -FE63 Dash -FF0D Dash -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dep.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dep.pl deleted file mode 100644 index c2b4606d967..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dep.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! - -# -# Binary property 'Deprecated' -# -return <<'END'; -0340 0341 Deprecated -17A3 Deprecated -17D3 Deprecated -206A 206F Deprecated -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Deprecat.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Deprecat.pl deleted file mode 100644 index b9adc5df2a0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Deprecat.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{Deprecated} (and fuzzy permutations) -# -# Meaning: Extended property 'Deprecated' -# -return <<'END'; -0340 0341 Deprecated -17A3 Deprecated -17D3 Deprecated -206A 206F Deprecated -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Deva.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Deva.pl deleted file mode 100644 index 53bab955a4e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Deva.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 0939 Devanagari -093C 094D Devanagari -0950 0954 Devanagari -0958 0963 Devanagari -0966 096F Devanagari -097D Devanagari -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dia.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dia.pl deleted file mode 100644 index 2d790de5e5d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dia.pl +++ /dev/null @@ -1,91 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Binary property 'Diacritic' -# -return <<'END'; -005E Diacritic -0060 Diacritic -00A8 Diacritic -00AF Diacritic -00B4 Diacritic -00B7 00B8 Diacritic -02B0 034E Diacritic -0350 0357 Diacritic -035D 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 -0657 0658 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 -0CBC 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 -17DD Diacritic -1939 193B Diacritic -1D2C 1D6A 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Diacriti.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Diacriti.pl deleted file mode 100644 index 6b4cf421db0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Diacriti.pl +++ /dev/null @@ -1,94 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 034E Diacritic -0350 0357 Diacritic -035D 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 -0657 0658 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 -0CBC 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 -17DD Diacritic -1939 193B Diacritic -1D2C 1D6A 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Digit.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Digit.pl deleted file mode 100644 index bdcab28dd2b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Digit.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{Digit} -# -# Meaning: [[:Digit:]] -# -return <<'END'; -0030 0039 -0660 0669 -06F0 06F9 -0966 096F -09E6 09EF -0A66 0A6F -0AE6 0AEF -0B66 0B6F -0BE6 0BEF -0C66 0C6F -0CE6 0CEF -0D66 0D6F -0E50 0E59 -0ED0 0ED9 -0F20 0F29 -1040 1049 -17E0 17E9 -1810 1819 -1946 194F -19D0 19D9 -FF10 FF19 -104A0 104A9 -1D7CE 1D7FF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dsrt.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dsrt.pl deleted file mode 100644 index dcc68e83478..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Dsrt.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{Deseret} (and fuzzy permutations) -# -# Meaning: Script 'Deseret' -# -return <<'END'; -10400 1044F Deseret -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ethi.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ethi.pl deleted file mode 100644 index 318289d6a2c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ethi.pl +++ /dev/null @@ -1,39 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 1248 Ethiopic -124A 124D Ethiopic -1250 1256 Ethiopic -1258 Ethiopic -125A 125D Ethiopic -1260 1288 Ethiopic -128A 128D Ethiopic -1290 12B0 Ethiopic -12B2 12B5 Ethiopic -12B8 12BE Ethiopic -12C0 Ethiopic -12C2 12C5 Ethiopic -12C8 12D6 Ethiopic -12D8 1310 Ethiopic -1312 1315 Ethiopic -1318 135A Ethiopic -135F 137C Ethiopic -1380 1399 Ethiopic -2D80 2D96 Ethiopic -2DA0 2DA6 Ethiopic -2DA8 2DAE Ethiopic -2DB0 2DB6 Ethiopic -2DB8 2DBE Ethiopic -2DC0 2DC6 Ethiopic -2DC8 2DCE Ethiopic -2DD0 2DD6 Ethiopic -2DD8 2DDE Ethiopic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ext.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ext.pl deleted file mode 100644 index 0166715de23..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ext.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! - -# -# Binary 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 -A015 Extender -FF70 Extender -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Extender.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Extender.pl deleted file mode 100644 index c9131e041dd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Extender.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{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 -A015 Extender -FF70 Extender -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Geor.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Geor.pl deleted file mode 100644 index 63033e2f429..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Geor.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{Georgian} (and fuzzy permutations) -# -# Meaning: Script 'Georgian' -# -return <<'END'; -10A0 10C5 Georgian -10D0 10FA Georgian -10FC Georgian -2D00 2D25 Georgian -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Glag.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Glag.pl deleted file mode 100644 index 2b873484e1e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Glag.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{Glagolitic} (and fuzzy permutations) -# -# Meaning: Script 'Glagolitic' -# -return <<'END'; -2C00 2C2E Glagolitic -2C30 2C5E Glagolitic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Goth.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Goth.pl deleted file mode 100644 index 7637cc65826..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Goth.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/GrLink.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/GrLink.pl deleted file mode 100644 index 58bca9fe1a7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/GrLink.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! - -# -# Binary property 'Grapheme_Link' -# -return <<'END'; -034F Grapheme_Link -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 -A806 Grapheme_Link -10A3F Grapheme_Link -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Graph.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Graph.pl deleted file mode 100644 index be38ba9505c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Graph.pl +++ /dev/null @@ -1,436 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 0241 -0250 036F -0374 0375 -037A -037E -0384 038A -038C -038E 03A1 -03A3 03CE -03D0 0486 -0488 04CE -04D0 04F9 -0500 050F -0531 0556 -0559 055F -0561 0587 -0589 058A -0591 05B9 -05BB 05C7 -05D0 05EA -05F0 05F4 -0600 0603 -060B 0615 -061B -061E 061F -0621 063A -0640 065E -0660 070D -070F 074A -074D 076D -0780 07B1 -0901 0939 -093C 094D -0950 0954 -0958 0970 -097D -0981 0983 -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BC 09C4 -09C7 09C8 -09CB 09CE -09D7 -09DC 09DD -09DF 09E3 -09E6 09FA -0A01 0A03 -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 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABC 0AC5 -0AC7 0AC9 -0ACB 0ACD -0AD0 -0AE0 0AE3 -0AE6 0AEF -0AF1 -0B01 0B03 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3C 0B43 -0B47 0B48 -0B4B 0B4D -0B56 0B57 -0B5C 0B5D -0B5F 0B61 -0B66 0B71 -0B82 0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 0BB9 -0BBE 0BC2 -0BC6 0BC8 -0BCA 0BCD -0BD7 -0BE6 0BFA -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 -0CBC 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 0FD1 -1000 1021 -1023 1027 -1029 102A -102C 1032 -1036 1039 -1040 1059 -10A0 10C5 -10D0 10FC -1100 1159 -115F 11A2 -11A8 11F9 -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -135F 137C -1380 1399 -13A0 13F4 -1401 1676 -1681 169C -16A0 16F0 -1700 170C -170E 1714 -1720 1736 -1740 1753 -1760 176C -176E 1770 -1772 1773 -1780 17DD -17E0 17E9 -17F0 17F9 -1800 180D -1810 1819 -1820 1877 -1880 18A9 -1900 191C -1920 192B -1930 193B -1940 -1944 196D -1970 1974 -1980 19A9 -19B0 19C9 -19D0 19D9 -19DE 1A1B -1A1E 1A1F -1D00 1DC3 -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 -200B 2027 -202A 202E -2030 205E -2060 2063 -206A 2071 -2074 208E -2090 2094 -20A0 20B5 -20D0 20EB -2100 214C -2153 2183 -2190 23DB -2400 2426 -2440 244A -2460 269C -26A0 26B1 -2701 2704 -2706 2709 -270C 2727 -2729 274B -274D -274F 2752 -2756 -2758 275E -2761 2794 -2798 27AF -27B1 27BE -27C0 27C6 -27D0 27EB -27F0 2B13 -2C00 2C2E -2C30 2C5E -2C80 2CEA -2CF9 2D25 -2D30 2D65 -2D6F -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -2E00 2E17 -2E1C 2E1D -2E80 2E99 -2E9B 2EF3 -2F00 2FD5 -2FF0 2FFB -3001 303F -3041 3096 -3099 30FF -3105 312C -3131 318E -3190 31B7 -31C0 31CF -31F0 321E -3220 3243 -3250 32FE -3300 4DB5 -4DC0 9FBB -A000 A48C -A490 A4C6 -A700 A716 -A800 A82B -AC00 D7A3 -E000 FA2D -FA30 FA6A -FA70 FAD9 -FB00 FB06 -FB13 FB17 -FB1D FB36 -FB38 FB3C -FB3E -FB40 FB41 -FB43 FB44 -FB46 FBB1 -FBD3 FD3F -FD50 FD8F -FD92 FDC7 -FDF0 FDFD -FE00 FE19 -FE20 FE23 -FE30 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 -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10100 10102 -10107 10133 -10137 1018A -10300 1031E -10320 10323 -10330 1034A -10380 1039D -1039F 103C3 -103C8 103D5 -10400 1049D -104A0 104A9 -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 10A03 -10A05 10A06 -10A0C 10A13 -10A15 10A17 -10A19 10A33 -10A38 10A3A -10A3F 10A47 -10A50 10A58 -1D000 1D0F5 -1D100 1D126 -1D12A 1D1DD -1D200 1D245 -1D300 1D356 -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -1D6A8 1D7C9 -1D7CE 1D7FF -20000 2A6D6 -2F800 2FA1D -E0001 -E0020 E007F -E0100 E01EF -F0000 FFFFD -100000 10FFFD -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Grapheme.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Grapheme.pl deleted file mode 100644 index b01db81fb31..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Grapheme.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{GraphemeLink} (and fuzzy permutations) -# -# Meaning: Extended property 'Grapheme_Link' -# -return <<'END'; -034F Grapheme_Link -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 -A806 Grapheme_Link -10A3F Grapheme_Link -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Grek.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Grek.pl deleted file mode 100644 index 6dce82bb2db..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Grek.pl +++ /dev/null @@ -1,43 +0,0 @@ -# !!!!!!! DO NOT EDIT 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'; -0374 0375 Greek -037A Greek -0384 0386 Greek -0388 038A Greek -038C Greek -038E 03A1 Greek -03A3 03CE Greek -03D0 03E1 Greek -03F0 03FF Greek -1D26 1D2A Greek -1D5D 1D61 Greek -1D66 1D6A 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 1FC4 Greek -1FC6 1FD3 Greek -1FD6 1FDB Greek -1FDD 1FEF Greek -1FF2 1FF4 Greek -1FF6 1FFE Greek -2126 Greek -10140 1018A Greek -1D200 1D245 Greek -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Gujr.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Gujr.pl deleted file mode 100644 index b35bce38c9f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Gujr.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 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 0AE3 Gujarati -0AE6 0AEF Gujarati -0AF1 Gujarati -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Guru.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Guru.pl deleted file mode 100644 index 7525edc2ef0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Guru.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'; -0A01 0A03 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hang.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hang.pl deleted file mode 100644 index d7de1eaf34e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hang.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{Hangul} (and fuzzy permutations) -# -# Meaning: Script 'Hangul' -# -return <<'END'; -1100 1159 Hangul -115F 11A2 Hangul -11A8 11F9 Hangul -3131 318E Hangul -3200 321E Hangul -3260 327D Hangul -AC00 D7A3 Hangul -FFA0 FFBE Hangul -FFC2 FFC7 Hangul -FFCA FFCF Hangul -FFD2 FFD7 Hangul -FFDA FFDC Hangul -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hani.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hani.pl deleted file mode 100644 index e641a71d69e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hani.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{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 9FBB Han -F900 FA2D Han -FA30 FA6A Han -FA70 FAD9 Han -20000 2A6D6 Han -2F800 2FA1D Han -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hano.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hano.pl deleted file mode 100644 index f11def791e4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hano.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hebr.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hebr.pl deleted file mode 100644 index bdb6829c218..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hebr.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'; -0591 05B9 Hebrew -05BB 05C7 Hebrew -05D0 05EA Hebrew -05F0 05F4 Hebrew -FB1D FB36 Hebrew -FB38 FB3C Hebrew -FB3E Hebrew -FB40 FB41 Hebrew -FB43 FB44 Hebrew -FB46 FB4F Hebrew -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hex.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hex.pl deleted file mode 100644 index 328d4abaaf1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hex.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! - -# -# Binary 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/HexDigit.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/HexDigit.pl deleted file mode 100644 index 83ce8547cf3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hira.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hira.pl deleted file mode 100644 index 1b98d7c690c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hira.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hyphen.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hyphen.pl deleted file mode 100644 index 8741bf21b0a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hyphen.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! - -# -# Binary property 'Hyphen' -# -return <<'END'; -002D Hyphen -00AD Hyphen -058A Hyphen -1806 Hyphen -2010 2011 Hyphen -2E17 Hyphen -30FB Hyphen -FE63 Hyphen -FF0D Hyphen -FF65 Hyphen -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hyphen2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hyphen2.pl deleted file mode 100644 index 387bfc0fa40..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Hyphen2.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{Hyphen} (and fuzzy permutations) -# -# Meaning: Extended property 'Hyphen' -# -return <<'END'; -002D Hyphen -00AD Hyphen -058A Hyphen -1806 Hyphen -2010 2011 Hyphen -2E17 Hyphen -30FB Hyphen -FE63 Hyphen -FF0D Hyphen -FF65 Hyphen -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IDSB.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IDSB.pl deleted file mode 100644 index b0282c29d26..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IDSB.pl +++ /dev/null @@ -1,11 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Binary property 'IDS_Binary_Operator' -# -return <<'END'; -2FF0 2FF1 IDS_Binary_Operator -2FF4 2FFB IDS_Binary_Operator -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IDST.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IDST.pl deleted file mode 100644 index 7bafc477652..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IDST.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Binary property 'IDS_Trinary_Operator' -# -return <<'END'; -2FF2 2FF3 IDS_Trinary_Operator -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IdContin.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IdContin.pl deleted file mode 100644 index 324e85f68f8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IdContin.pl +++ /dev/null @@ -1,460 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 0241 -0250 02C1 -02C6 02D1 -02E0 02E4 -02EE -0300 036F -037A -0386 -0388 038A -038C -038E 03A1 -03A3 03CE -03D0 03F5 -03F7 0481 -0483 0486 -048A 04CE -04D0 04F9 -0500 050F -0531 0556 -0559 -0561 0587 -0591 05B9 -05BB 05BD -05BF -05C1 05C2 -05C4 05C5 -05C7 -05D0 05EA -05F0 05F2 -0610 0615 -0621 063A -0640 065E -0660 0669 -066E 06D3 -06D5 06DC -06DF 06E8 -06EA 06FC -06FF -0710 074A -074D 076D -0780 07B1 -0901 0939 -093C 094D -0950 0954 -0958 0963 -0966 096F -097D -0981 0983 -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BC 09C4 -09C7 09C8 -09CB 09CE -09D7 -09DC 09DD -09DF 09E3 -09E6 09F1 -0A01 0A03 -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 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABC 0AC5 -0AC7 0AC9 -0ACB 0ACD -0AD0 -0AE0 0AE3 -0AE6 0AEF -0B01 0B03 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3C 0B43 -0B47 0B48 -0B4B 0B4D -0B56 0B57 -0B5C 0B5D -0B5F 0B61 -0B66 0B6F -0B71 -0B82 0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 0BB9 -0BBE 0BC2 -0BC6 0BC8 -0BCA 0BCD -0BD7 -0BE6 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 -0CBC 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 10FA -10FC -1100 1159 -115F 11A2 -11A8 11F9 -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -135F -1380 138F -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 17B3 -17B6 17D3 -17D7 -17DC 17DD -17E0 17E9 -180B 180D -1810 1819 -1820 1877 -1880 18A9 -1900 191C -1920 192B -1930 193B -1946 196D -1970 1974 -1980 19A9 -19B0 19C9 -19D0 19D9 -1A00 1A1B -1D00 1DC3 -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 -2054 -2071 -207F -2090 2094 -20D0 20DC -20E1 -20E5 20EB -2102 -2107 -210A 2113 -2115 -2119 211D -2124 -2126 -2128 -212A 212D -212F 2131 -2133 2139 -213C 213F -2145 2149 -2160 2183 -2C00 2C2E -2C30 2C5E -2C80 2CE4 -2D00 2D25 -2D30 2D65 -2D6F -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -3005 3007 -3021 302F -3031 3035 -3038 303C -3041 3096 -3099 309A -309D 309F -30A1 30FA -30FC 30FF -3105 312C -3131 318E -31A0 31B7 -31F0 31FF -3400 4DB5 -4E00 9FBB -A000 A48C -A800 A827 -AC00 D7A3 -F900 FA2D -FA30 FA6A -FA70 FAD9 -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 -FF66 FFBE -FFC2 FFC7 -FFCA FFCF -FFD2 FFD7 -FFDA FFDC -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10140 10174 -10300 1031E -10330 1034A -10380 1039D -103A0 103C3 -103C8 103CF -103D1 103D5 -10400 1049D -104A0 104A9 -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 10A03 -10A05 10A06 -10A0C 10A13 -10A15 10A17 -10A19 10A33 -10A38 10A3A -10A3F -1D165 1D169 -1D16D 1D172 -1D17B 1D182 -1D185 1D18B -1D1AA 1D1AD -1D242 1D244 -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -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 -E0100 E01EF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IdStart.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IdStart.pl deleted file mode 100644 index 36b6b51a205..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IdStart.pl +++ /dev/null @@ -1,364 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 0241 -0250 02C1 -02C6 02D1 -02E0 02E4 -02EE -037A -0386 -0388 038A -038C -038E 03A1 -03A3 03CE -03D0 03F5 -03F7 0481 -048A 04CE -04D0 04F9 -0500 050F -0531 0556 -0559 -0561 0587 -05D0 05EA -05F0 05F2 -0621 063A -0640 064A -066E 066F -0671 06D3 -06D5 -06E5 06E6 -06EE 06EF -06FA 06FC -06FF -0710 -0712 072F -074D 076D -0780 07A5 -07B1 -0904 0939 -093D -0950 -0958 0961 -097D -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BD -09CE -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 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABD -0AD0 -0AE0 0AE1 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3D -0B5C 0B5D -0B5F 0B61 -0B71 -0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 0BB9 -0C05 0C0C -0C0E 0C10 -0C12 0C28 -0C2A 0C33 -0C35 0C39 -0C60 0C61 -0C85 0C8C -0C8E 0C90 -0C92 0CA8 -0CAA 0CB3 -0CB5 0CB9 -0CBD -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 10FA -10FC -1100 1159 -115F 11A2 -11A8 11F9 -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -1380 138F -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 -1900 191C -1950 196D -1970 1974 -1980 19A9 -19C1 19C7 -1A00 1A16 -1D00 1DBF -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 -2090 2094 -2102 -2107 -210A 2113 -2115 -2119 211D -2124 -2126 -2128 -212A 212D -212F 2131 -2133 2139 -213C 213F -2145 2149 -2160 2183 -2C00 2C2E -2C30 2C5E -2C80 2CE4 -2D00 2D25 -2D30 2D65 -2D6F -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -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 9FBB -A000 A48C -A800 A801 -A803 A805 -A807 A80A -A80C A822 -AC00 D7A3 -F900 FA2D -FA30 FA6A -FA70 FAD9 -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 -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10140 10174 -10300 1031E -10330 1034A -10380 1039D -103A0 103C3 -103C8 103CF -103D1 103D5 -10400 1049D -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 -10A10 10A13 -10A15 10A17 -10A19 10A33 -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ideo.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ideo.pl deleted file mode 100644 index 1c5231cf614..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ideo.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! - -# -# Binary property 'Ideographic' -# -return <<'END'; -3006 3007 Ideographic -3021 3029 Ideographic -3038 303A Ideographic -3400 4DB5 Ideographic -4E00 9FBB Ideographic -F900 FA2D Ideographic -FA70 FAD9 Ideographic -20000 2A6D6 Ideographic -2F800 2FA1D Ideographic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ideograp.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ideograp.pl deleted file mode 100644 index e102ddc5f9c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ideograp.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{Ideographic} (and fuzzy permutations) -# -# Meaning: Extended property 'Ideographic' -# -return <<'END'; -3006 3007 Ideographic -3021 3029 Ideographic -3038 303A Ideographic -3400 4DB5 Ideographic -4E00 9FBB Ideographic -F900 FA2D Ideographic -FA70 FAD9 Ideographic -20000 2A6D6 Ideographic -2F800 2FA1D Ideographic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IdsBinar.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IdsBinar.pl deleted file mode 100644 index f4369d3c5d5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IdsTrina.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/IdsTrina.pl deleted file mode 100644 index c670c87c9fd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InAegean.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InAegean.pl deleted file mode 100644 index cc79a027883..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InAegean.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{InAegeanNumbers} (and fuzzy permutations) -# -# Meaning: Block 'Aegean Numbers' -# -return <<'END'; -10100 1013F Aegean Numbers -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InAlphab.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InAlphab.pl deleted file mode 100644 index 077354b7014..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InAncie2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InAncie2.pl deleted file mode 100644 index 86bb0d1e934..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InAncie2.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{InAncientGreekMusicalNotation} (and fuzzy permutations) -# -# Meaning: Block 'Ancient Greek Musical Notation' -# -return <<'END'; -1D200 1D24F Ancient Greek Musical Notation -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InAncien.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InAncien.pl deleted file mode 100644 index 7bd66942de4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InAncien.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{InAncientGreekNumbers} (and fuzzy permutations) -# -# Meaning: Block 'Ancient Greek Numbers' -# -return <<'END'; -10140 1018F Ancient Greek Numbers -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InArabi2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InArabi2.pl deleted file mode 100644 index 8f51aa9c114..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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{InArabicSupplement} (and fuzzy permutations) -# -# Meaning: Block 'Arabic Supplement' -# -return <<'END'; -0750 077F Arabic Supplement -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InArabi3.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InArabi3.pl deleted file mode 100644 index 0c73cbaddba..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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{InArabicPresentationFormsB} (and fuzzy permutations) -# -# Meaning: Block 'Arabic Presentation Forms-B' -# -return <<'END'; -FE70 FEFF Arabic Presentation Forms-B -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InArabi4.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InArabi4.pl deleted file mode 100644 index d05b7d9e62e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InArabi4.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InArabic.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InArabic.pl deleted file mode 100644 index aa60b068c6b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InArmeni.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InArmeni.pl deleted file mode 100644 index 789cbc27e18..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InArrows.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InArrows.pl deleted file mode 100644 index 028e3e75465..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBasicL.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBasicL.pl deleted file mode 100644 index e1b019a4007..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBengal.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBengal.pl deleted file mode 100644 index 50b23eed58c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBlockE.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBlockE.pl deleted file mode 100644 index a7fb74e514b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBopom2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBopom2.pl deleted file mode 100644 index 2e68025f4ba..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBopomo.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBopomo.pl deleted file mode 100644 index b5ef89cfd72..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBoxDra.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBoxDra.pl deleted file mode 100644 index f98d5b9ceff..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBraill.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBraill.pl deleted file mode 100644 index c3229754d8e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBugine.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBugine.pl deleted file mode 100644 index c9c343866bb..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBugine.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{InBuginese} (and fuzzy permutations) -# -# Meaning: Block 'Buginese' -# -return <<'END'; -1A00 1A1F Buginese -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBuhid.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InBuhid.pl deleted file mode 100644 index 53c924ed26c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InByzant.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InByzant.pl deleted file mode 100644 index 85d4bd0cc31..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCherok.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCherok.pl deleted file mode 100644 index cd72f1c1364..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkCo2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkCo2.pl deleted file mode 100644 index cc47a3717f4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkCo3.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkCo3.pl deleted file mode 100644 index bf3387cd61d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkCo4.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkCo4.pl deleted file mode 100644 index 0e280e12d80..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkCom.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkCom.pl deleted file mode 100644 index 28ddd82a363..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkRad.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkRad.pl deleted file mode 100644 index d89d3db21ab..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkStr.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkStr.pl deleted file mode 100644 index 0b3751b44cc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkStr.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{InCjkStrokes} (and fuzzy permutations) -# -# Meaning: Block 'CJK Strokes' -# -return <<'END'; -31C0 31EF CJK Strokes -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkSym.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkSym.pl deleted file mode 100644 index d40cb8942ad..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkUn2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkUn2.pl deleted file mode 100644 index 1ef3202509b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkUn3.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkUn3.pl deleted file mode 100644 index 49496758c55..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkUni.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCjkUni.pl deleted file mode 100644 index b6f4934beb3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCombi2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCombi2.pl deleted file mode 100644 index 1d3f01809f3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCombi3.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCombi3.pl deleted file mode 100644 index db10c12f5ee..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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{InCombiningDiacriticalMarksSupplement} (and fuzzy permutations) -# -# Meaning: Block 'Combining Diacritical Marks Supplement' -# -return <<'END'; -1DC0 1DFF Combining Diacritical Marks Supplement -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCombi4.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCombi4.pl deleted file mode 100644 index 192f74bf1b0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCombi4.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCombin.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCombin.pl deleted file mode 100644 index 0bcbaa88331..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InContro.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InContro.pl deleted file mode 100644 index 58274485166..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCoptic.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCoptic.pl deleted file mode 100644 index 0e60f4faf9a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCoptic.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{InCoptic} (and fuzzy permutations) -# -# Meaning: Block 'Coptic' -# -return <<'END'; -2C80 2CFF Coptic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCurren.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCurren.pl deleted file mode 100644 index c5778875dd4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCyprio.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCyprio.pl deleted file mode 100644 index f1f53874a92..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCyprio.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{InCypriotSyllabary} (and fuzzy permutations) -# -# Meaning: Block 'Cypriot Syllabary' -# -return <<'END'; -10800 1083F Cypriot Syllabary -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCyril2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCyril2.pl deleted file mode 100644 index 0f748ef501f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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{InCyrillicSupplement} (and fuzzy permutations) -# -# Meaning: Block 'Cyrillic Supplement' -# -return <<'END'; -0500 052F Cyrillic Supplement -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCyrill.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InCyrill.pl deleted file mode 100644 index fc252cfcd5e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InDesere.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InDesere.pl deleted file mode 100644 index 1f670a5e540..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InDevana.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InDevana.pl deleted file mode 100644 index 147b3ba239c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InDingba.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InDingba.pl deleted file mode 100644 index 758fe902a39..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InEnclo2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InEnclo2.pl deleted file mode 100644 index 8f040d22cf3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InEnclos.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InEnclos.pl deleted file mode 100644 index 2a8fc240d4e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InEthio2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InEthio2.pl deleted file mode 100644 index 0c3c5c9b66f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InEthio2.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{InEthiopicExtended} (and fuzzy permutations) -# -# Meaning: Block 'Ethiopic Extended' -# -return <<'END'; -2D80 2DDF Ethiopic Extended -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InEthio3.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InEthio3.pl deleted file mode 100644 index 026972adc84..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InEthio3.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{InEthiopicSupplement} (and fuzzy permutations) -# -# Meaning: Block 'Ethiopic Supplement' -# -return <<'END'; -1380 139F Ethiopic Supplement -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InEthiop.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InEthiop.pl deleted file mode 100644 index 5a9c8058c90..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGenera.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGenera.pl deleted file mode 100644 index c8f64b98c15..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGeomet.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGeomet.pl deleted file mode 100644 index f6f80ef24e9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGeorg2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGeorg2.pl deleted file mode 100644 index 0af43cd13e1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGeorg2.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{InGeorgianSupplement} (and fuzzy permutations) -# -# Meaning: Block 'Georgian Supplement' -# -return <<'END'; -2D00 2D2F Georgian Supplement -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGeorgi.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGeorgi.pl deleted file mode 100644 index c91f2e01ddd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGlagol.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGlagol.pl deleted file mode 100644 index c9f8d6ab8d6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGlagol.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{InGlagolitic} (and fuzzy permutations) -# -# Meaning: Block 'Glagolitic' -# -return <<'END'; -2C00 2C5F Glagolitic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGothic.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGothic.pl deleted file mode 100644 index 8e6db64ce9f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGreekA.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGreekA.pl deleted file mode 100644 index 404e9687525..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGreekE.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGreekE.pl deleted file mode 100644 index 941e892f9cf..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGujara.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGujara.pl deleted file mode 100644 index 6028b4411ed..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGurmuk.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InGurmuk.pl deleted file mode 100644 index 53dbbdbde9b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHalfwi.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHalfwi.pl deleted file mode 100644 index a03cb114347..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHangu2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHangu2.pl deleted file mode 100644 index 558674c704b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHangu3.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHangu3.pl deleted file mode 100644 index 87e35ea36e4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHangul.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHangul.pl deleted file mode 100644 index c73c1650994..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHanuno.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHanuno.pl deleted file mode 100644 index 38802fff087..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHebrew.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHebrew.pl deleted file mode 100644 index ab060cc410f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHighPr.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHighPr.pl deleted file mode 100644 index df0eaebc3cd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHighSu.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHighSu.pl deleted file mode 100644 index 52d75820482..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHiraga.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InHiraga.pl deleted file mode 100644 index d683fc34abe..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InIdeogr.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InIdeogr.pl deleted file mode 100644 index 9e5798a4792..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InIpaExt.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InIpaExt.pl deleted file mode 100644 index ad4bd5f3daf..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKanbun.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKanbun.pl deleted file mode 100644 index 86a2c184c53..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKangxi.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKangxi.pl deleted file mode 100644 index 4ad505a139f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKannad.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKannad.pl deleted file mode 100644 index fa11e21ef26..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKatak2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKatak2.pl deleted file mode 100644 index 5be44f8eb36..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKataka.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKataka.pl deleted file mode 100644 index 00abc4a8eab..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKharos.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKharos.pl deleted file mode 100644 index d504623a164..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKharos.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{InKharoshthi} (and fuzzy permutations) -# -# Meaning: Block 'Kharoshthi' -# -return <<'END'; -10A00 10A5F Kharoshthi -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKhmer.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKhmer.pl deleted file mode 100644 index 062e5448eca..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKhmerS.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKhmerS.pl deleted file mode 100644 index 4de36f31bfc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InKhmerS.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{InKhmerSymbols} (and fuzzy permutations) -# -# Meaning: Block 'Khmer Symbols' -# -return <<'END'; -19E0 19FF Khmer Symbols -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLao.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLao.pl deleted file mode 100644 index 48d350e6b6a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLatin1.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLatin1.pl deleted file mode 100644 index 0c226d9dfe0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLatin2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLatin2.pl deleted file mode 100644 index 0cc83e013b3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLatin3.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLatin3.pl deleted file mode 100644 index 9e507e3698c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLatinE.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLatinE.pl deleted file mode 100644 index bcd85ce3f23..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLetter.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLetter.pl deleted file mode 100644 index 30cb9322c04..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLimbu.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLimbu.pl deleted file mode 100644 index 18f69237c30..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLimbu.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{InLimbu} (and fuzzy permutations) -# -# Meaning: Block 'Limbu' -# -return <<'END'; -1900 194F Limbu -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLinea2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLinea2.pl deleted file mode 100644 index d988b319af2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLinea2.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{InLinearBSyllabary} (and fuzzy permutations) -# -# Meaning: Block 'Linear B Syllabary' -# -return <<'END'; -10000 1007F Linear B Syllabary -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLinear.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLinear.pl deleted file mode 100644 index 26fa532dbc4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLinear.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{InLinearBIdeograms} (and fuzzy permutations) -# -# Meaning: Block 'Linear B Ideograms' -# -return <<'END'; -10080 100FF Linear B Ideograms -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLowSur.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InLowSur.pl deleted file mode 100644 index 2a8df1afd9c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMalaya.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMalaya.pl deleted file mode 100644 index 4963a2e752f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMathe2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMathe2.pl deleted file mode 100644 index 28fad1fe920..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMathem.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMathem.pl deleted file mode 100644 index 7e4b77e48a1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMisce2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMisce2.pl deleted file mode 100644 index cb5de83c684..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMisce3.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMisce3.pl deleted file mode 100644 index 2df83f9e504..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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{InMiscellaneousSymbolsAndArrows} (and fuzzy permutations) -# -# Meaning: Block 'Miscellaneous Symbols and Arrows' -# -return <<'END'; -2B00 2BFF Miscellaneous Symbols and Arrows -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMisce4.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMisce4.pl deleted file mode 100644 index 1be2bed9102..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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{InMiscellaneousMathematicalSymbolsA} (and fuzzy permutations) -# -# Meaning: Block 'Miscellaneous Mathematical Symbols-A' -# -return <<'END'; -27C0 27EF Miscellaneous Mathematical Symbols-A -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMisce5.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMisce5.pl deleted file mode 100644 index 765410a21cd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMisce5.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMiscel.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMiscel.pl deleted file mode 100644 index e03e58a6407..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InModifi.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InModifi.pl deleted file mode 100644 index 301b68e2c7f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InModifi.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{InModifierToneLetters} (and fuzzy permutations) -# -# Meaning: Block 'Modifier Tone Letters' -# -return <<'END'; -A700 A71F Modifier Tone Letters -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMongol.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMongol.pl deleted file mode 100644 index facdf8583bf..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMusica.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMusica.pl deleted file mode 100644 index e13a83ed3d2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMyanma.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InMyanma.pl deleted file mode 100644 index 4fc596ad29d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InNewTai.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InNewTai.pl deleted file mode 100644 index 8eb2d94520c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InNewTai.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{InNewTaiLue} (and fuzzy permutations) -# -# Meaning: Block 'New Tai Lue' -# -return <<'END'; -1980 19DF New Tai Lue -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InNumber.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InNumber.pl deleted file mode 100644 index e962dad1830..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOgham.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOgham.pl deleted file mode 100644 index aabf05a0460..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOldIta.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOldIta.pl deleted file mode 100644 index 4a20df50380..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOldPer.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOldPer.pl deleted file mode 100644 index 8cc534e29fe..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOldPer.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{InOldPersian} (and fuzzy permutations) -# -# Meaning: Block 'Old Persian' -# -return <<'END'; -103A0 103DF Old Persian -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOptica.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOptica.pl deleted file mode 100644 index a191ec9621e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOriya.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOriya.pl deleted file mode 100644 index a44c55a2615..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOsmany.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOsmany.pl deleted file mode 100644 index 9ec5f8b7032..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InOsmany.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{InOsmanya} (and fuzzy permutations) -# -# Meaning: Block 'Osmanya' -# -return <<'END'; -10480 104AF Osmanya -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InPhone2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InPhone2.pl deleted file mode 100644 index f22e8d16d96..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InPhone2.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{InPhoneticExtensionsSupplement} (and fuzzy permutations) -# -# Meaning: Block 'Phonetic Extensions Supplement' -# -return <<'END'; -1D80 1DBF Phonetic Extensions Supplement -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InPhonet.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InPhonet.pl deleted file mode 100644 index 017d026a9b1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InPhonet.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{InPhoneticExtensions} (and fuzzy permutations) -# -# Meaning: Block 'Phonetic Extensions' -# -return <<'END'; -1D00 1D7F Phonetic Extensions -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InPrivat.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InPrivat.pl deleted file mode 100644 index 42fcd64103a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InRunic.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InRunic.pl deleted file mode 100644 index 786799e7052..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InShavia.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InShavia.pl deleted file mode 100644 index 341fb513954..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InShavia.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{InShavian} (and fuzzy permutations) -# -# Meaning: Block 'Shavian' -# -return <<'END'; -10450 1047F Shavian -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSinhal.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSinhal.pl deleted file mode 100644 index 6a374728ff2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSmallF.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSmallF.pl deleted file mode 100644 index 011abec7579..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSpacin.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSpacin.pl deleted file mode 100644 index 960ec0adde1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSpecia.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSpecia.pl deleted file mode 100644 index 85771f6a27c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSupers.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSupers.pl deleted file mode 100644 index df6a9adf689..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSuppl2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSuppl2.pl deleted file mode 100644 index d6201c7377c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSuppl3.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSuppl3.pl deleted file mode 100644 index a1fe7ce5c03..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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{InSupplementalPunctuation} (and fuzzy permutations) -# -# Meaning: Block 'Supplemental Punctuation' -# -return <<'END'; -2E00 2E7F Supplemental Punctuation -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSuppl4.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSuppl4.pl deleted file mode 100644 index ed610354f9d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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{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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSuppl5.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSuppl5.pl deleted file mode 100644 index 19e3d669059..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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{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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSuppl6.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSuppl6.pl deleted file mode 100644 index a5efef621a0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSuppl6.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSupple.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSupple.pl deleted file mode 100644 index 755dc683567..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSyloti.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSyloti.pl deleted file mode 100644 index d29f285b5e3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSyloti.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{InSylotiNagri} (and fuzzy permutations) -# -# Meaning: Block 'Syloti Nagri' -# -return <<'END'; -A800 A82F Syloti Nagri -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSyriac.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InSyriac.pl deleted file mode 100644 index aed8b10fabf..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTagalo.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTagalo.pl deleted file mode 100644 index 32a9c5840df..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTagban.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTagban.pl deleted file mode 100644 index ed664910df1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTags.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTags.pl deleted file mode 100644 index 6dff3c0bff5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTaiLe.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTaiLe.pl deleted file mode 100644 index f5e01dc6504..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTaiLe.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{InTaiLe} (and fuzzy permutations) -# -# Meaning: Block 'Tai Le' -# -return <<'END'; -1950 197F Tai Le -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTaiXua.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTaiXua.pl deleted file mode 100644 index 16bb6ec493a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTaiXua.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{InTaiXuanJingSymbols} (and fuzzy permutations) -# -# Meaning: Block 'Tai Xuan Jing Symbols' -# -return <<'END'; -1D300 1D35F Tai Xuan Jing Symbols -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTamil.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTamil.pl deleted file mode 100644 index 8880319d95b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTelugu.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTelugu.pl deleted file mode 100644 index a67de0ac2ae..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InThaana.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InThaana.pl deleted file mode 100644 index 118ea7217bd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InThai.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InThai.pl deleted file mode 100644 index 584ac9c236f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTibeta.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTibeta.pl deleted file mode 100644 index c91c5278534..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTifina.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTifina.pl deleted file mode 100644 index 4035719d5a0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InTifina.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{InTifinagh} (and fuzzy permutations) -# -# Meaning: Block 'Tifinagh' -# -return <<'END'; -2D30 2D7F Tifinagh -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InUgarit.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InUgarit.pl deleted file mode 100644 index e2b8b1a2f1c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InUgarit.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{InUgaritic} (and fuzzy permutations) -# -# Meaning: Block 'Ugaritic' -# -return <<'END'; -10380 1039F Ugaritic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InUnifie.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InUnifie.pl deleted file mode 100644 index 0eb4ecbe8f3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InVaria2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InVaria2.pl deleted file mode 100644 index d6633f7ec5b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InVaria2.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{InVariationSelectorsSupplement} (and fuzzy permutations) -# -# Meaning: Block 'Variation Selectors Supplement' -# -return <<'END'; -E0100 E01EF Variation Selectors Supplement -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InVariat.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InVariat.pl deleted file mode 100644 index edd7cb38ea5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InVertic.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InVertic.pl deleted file mode 100644 index c3a67dcd8a7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InVertic.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{InVerticalForms} (and fuzzy permutations) -# -# Meaning: Block 'Vertical Forms' -# -return <<'END'; -FE10 FE1F Vertical Forms -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InYiRadi.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InYiRadi.pl deleted file mode 100644 index 92a91f2621f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InYiSyll.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InYiSyll.pl deleted file mode 100644 index 1570090781b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InYijing.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InYijing.pl deleted file mode 100644 index 4253e74bc23..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/InYijing.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{InYijingHexagramSymbols} (and fuzzy permutations) -# -# Meaning: Block 'Yijing Hexagram Symbols' -# -return <<'END'; -4DC0 4DFF Yijing Hexagram Symbols -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/JoinC.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/JoinC.pl deleted file mode 100644 index eefe1c748b6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/JoinC.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Binary property 'Join_Control' -# -return <<'END'; -200C 200D Join_Control -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/JoinCont.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/JoinCont.pl deleted file mode 100644 index b75583f586e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Kana.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Kana.pl deleted file mode 100644 index d544196323f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Kana.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Khar.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Khar.pl deleted file mode 100644 index 8197e1534b0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Khar.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{Kharoshthi} (and fuzzy permutations) -# -# Meaning: Script 'Kharoshthi' -# -return <<'END'; -10A00 10A03 Kharoshthi -10A05 10A06 Kharoshthi -10A0C 10A13 Kharoshthi -10A15 10A17 Kharoshthi -10A19 10A33 Kharoshthi -10A38 10A3A Kharoshthi -10A3F 10A47 Kharoshthi -10A50 10A58 Kharoshthi -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Khmr.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Khmr.pl deleted file mode 100644 index d1850f5b5a8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Khmr.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{Khmer} (and fuzzy permutations) -# -# Meaning: Script 'Khmer' -# -return <<'END'; -1780 17DD Khmer -17E0 17E9 Khmer -17F0 17F9 Khmer -19E0 19FF Khmer -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Knda.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Knda.pl deleted file mode 100644 index 0c2c23aa10b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Knda.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 -0CBC 0CC4 Kannada -0CC6 0CC8 Kannada -0CCA 0CCD Kannada -0CD5 0CD6 Kannada -0CDE Kannada -0CE0 0CE1 Kannada -0CE6 0CEF Kannada -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/L.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/L.pl deleted file mode 100644 index bae3355a4b4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/L.pl +++ /dev/null @@ -1,360 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 0241 -0250 02C1 -02C6 02D1 -02E0 02E4 -02EE -037A -0386 -0388 038A -038C -038E 03A1 -03A3 03CE -03D0 03F5 -03F7 0481 -048A 04CE -04D0 04F9 -0500 050F -0531 0556 -0559 -0561 0587 -05D0 05EA -05F0 05F2 -0621 063A -0640 064A -066E 066F -0671 06D3 -06D5 -06E5 06E6 -06EE 06EF -06FA 06FC -06FF -0710 -0712 072F -074D 076D -0780 07A5 -07B1 -0904 0939 -093D -0950 -0958 0961 -097D -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BD -09CE -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 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABD -0AD0 -0AE0 0AE1 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3D -0B5C 0B5D -0B5F 0B61 -0B71 -0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 0BB9 -0C05 0C0C -0C0E 0C10 -0C12 0C28 -0C2A 0C33 -0C35 0C39 -0C60 0C61 -0C85 0C8C -0C8E 0C90 -0C92 0CA8 -0CAA 0CB3 -0CB5 0CB9 -0CBD -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 10FA -10FC -1100 1159 -115F 11A2 -11A8 11F9 -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -1380 138F -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 -1900 191C -1950 196D -1970 1974 -1980 19A9 -19C1 19C7 -1A00 1A16 -1D00 1DBF -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 -2090 2094 -2102 -2107 -210A 2113 -2115 -2119 211D -2124 -2126 -2128 -212A 212D -212F 2131 -2133 2139 -213C 213F -2145 2149 -2C00 2C2E -2C30 2C5E -2C80 2CE4 -2D00 2D25 -2D30 2D65 -2D6F -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -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 9FBB -A000 A48C -A800 A801 -A803 A805 -A807 A80A -A80C A822 -AC00 D7A3 -F900 FA2D -FA30 FA6A -FA70 FAD9 -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 -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10300 1031E -10330 10349 -10380 1039D -103A0 103C3 -103C8 103CF -10400 1049D -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 -10A10 10A13 -10A15 10A17 -10A19 10A33 -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/LC.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/LC.pl deleted file mode 100644 index c86b0a6af8a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/LC.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! - -# -# This file supports: -# \p{LC} -# \p{LC} (and fuzzy permutations) -# -# 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 0241 -0250 02AF -0386 -0388 038A -038C -038E 03A1 -03A3 03CE -03D0 03F5 -03F7 0481 -048A 04CE -04D0 04F9 -0500 050F -0531 0556 -0561 0587 -10A0 10C5 -1D00 1D2B -1D62 1D77 -1D79 1D9A -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 -213C 213F -2145 2149 -2C00 2C2E -2C30 2C5E -2C80 2CE4 -2D00 2D25 -FB00 FB06 -FB13 FB17 -FF21 FF3A -FF41 FF5A -10400 1044F -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/LOE.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/LOE.pl deleted file mode 100644 index f82a91f1cf9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/LOE.pl +++ /dev/null @@ -1,11 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Binary property 'Logical_Order_Exception' -# -return <<'END'; -0E40 0E44 Logical_Order_Exception -0EC0 0EC4 Logical_Order_Exception -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Laoo.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Laoo.pl deleted file mode 100644 index e34a6e44bc8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Laoo.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Latn.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Latn.pl deleted file mode 100644 index c5d4b83d5b2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Latn.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{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 0241 Latin -0250 02B8 Latin -02E0 02E4 Latin -1D00 1D25 Latin -1D2C 1D5C Latin -1D62 1D65 Latin -1D6B 1D77 Latin -1D79 1DBF Latin -1E00 1E9B Latin -1EA0 1EF9 Latin -2071 Latin -207F Latin -2090 2094 Latin -212A 212B Latin -FB00 FB06 Latin -FF21 FF3A Latin -FF41 FF5A Latin -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Limb.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Limb.pl deleted file mode 100644 index be5d715d4e2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Limb.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{Limbu} (and fuzzy permutations) -# -# Meaning: Script 'Limbu' -# -return <<'END'; -1900 191C Limbu -1920 192B Limbu -1930 193B Limbu -1940 Limbu -1944 194F Limbu -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/LinearB.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/LinearB.pl deleted file mode 100644 index 04fb45a392b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/LinearB.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{LinearB} (and fuzzy permutations) -# -# Meaning: Script 'Linear_B' -# -return <<'END'; -10000 1000B Linear_B -1000D 10026 Linear_B -10028 1003A Linear_B -1003C 1003D Linear_B -1003F 1004D Linear_B -10050 1005D Linear_B -10080 100FA Linear_B -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ll.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ll.pl deleted file mode 100644 index 1d4db7696e3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ll.pl +++ /dev/null @@ -1,493 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -0221 -0223 -0225 -0227 -0229 -022B -022D -022F -0231 -0233 0239 -023C -023F 0240 -0250 02AF -0390 -03AC 03CE -03D0 03D1 -03D5 03D7 -03D9 -03DB -03DD -03DF -03E1 -03E3 -03E5 -03E7 -03E9 -03EB -03ED -03EF 03F3 -03F5 -03F8 -03FB 03FC -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 -04F7 -04F9 -0501 -0503 -0505 -0507 -0509 -050B -050D -050F -0561 0587 -1D00 1D2B -1D62 1D77 -1D79 1D9A -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 -213C 213D -2146 2149 -2C30 2C5E -2C81 -2C83 -2C85 -2C87 -2C89 -2C8B -2C8D -2C8F -2C91 -2C93 -2C95 -2C97 -2C99 -2C9B -2C9D -2C9F -2CA1 -2CA3 -2CA5 -2CA7 -2CA9 -2CAB -2CAD -2CAF -2CB1 -2CB3 -2CB5 -2CB7 -2CB9 -2CBB -2CBD -2CBF -2CC1 -2CC3 -2CC5 -2CC7 -2CC9 -2CCB -2CCD -2CCF -2CD1 -2CD3 -2CD5 -2CD7 -2CD9 -2CDB -2CDD -2CDF -2CE1 -2CE3 2CE4 -2D00 2D25 -FB00 FB06 -FB13 FB17 -FF41 FF5A -10428 1044F -1D41A 1D433 -1D44E 1D454 -1D456 1D467 -1D482 1D49B -1D4B6 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D4CF -1D4EA 1D503 -1D51E 1D537 -1D552 1D56B -1D586 1D59F -1D5BA 1D5D3 -1D5EE 1D607 -1D622 1D63B -1D656 1D66F -1D68A 1D6A5 -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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lm.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lm.pl deleted file mode 100644 index 7e1e28af9ed..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lm.pl +++ /dev/null @@ -1,39 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 02C1 -02C6 02D1 -02E0 02E4 -02EE -037A -0559 -0640 -06E5 06E6 -0E46 -0EC6 -10FC -17D7 -1843 -1D2C 1D61 -1D78 -1D9B 1DBF -2090 2094 -2D6F -3005 -3031 3035 -303B -309D 309E -30FC 30FE -A015 -FF70 -FF9E FF9F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lo.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lo.pl deleted file mode 100644 index 7721bac7e20..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lo.pl +++ /dev/null @@ -1,258 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -06EE 06EF -06FA 06FC -06FF -0710 -0712 072F -074D 076D -0780 07A5 -07B1 -0904 0939 -093D -0950 -0958 0961 -097D -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BD -09CE -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 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABD -0AD0 -0AE0 0AE1 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3D -0B5C 0B5D -0B5F 0B61 -0B71 -0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 0BB9 -0C05 0C0C -0C0E 0C10 -0C12 0C28 -0C2A 0C33 -0C35 0C39 -0C60 0C61 -0C85 0C8C -0C8E 0C90 -0C92 0CA8 -0CAA 0CB3 -0CB5 0CB9 -0CBD -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 10FA -1100 1159 -115F 11A2 -11A8 11F9 -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -1380 138F -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 -1900 191C -1950 196D -1970 1974 -1980 19A9 -19C1 19C7 -1A00 1A16 -2135 2138 -2D30 2D65 -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -3006 -303C -3041 3096 -309F -30A1 30FA -30FF -3105 312C -3131 318E -31A0 31B7 -31F0 31FF -3400 4DB5 -4E00 9FBB -A000 A014 -A016 A48C -A800 A801 -A803 A805 -A807 A80A -A80C A822 -AC00 D7A3 -F900 FA2D -FA30 FA6A -FA70 FAD9 -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 -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10300 1031E -10330 10349 -10380 1039D -103A0 103C3 -103C8 103CF -10450 1049D -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 -10A10 10A13 -10A15 10A17 -10A19 10A33 -20000 2A6D6 -2F800 2FA1D -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/LogicalO.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/LogicalO.pl deleted file mode 100644 index 72ed9fe581d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lower.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lower.pl deleted file mode 100644 index f4208ffd909..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lower.pl +++ /dev/null @@ -1,492 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -0221 -0223 -0225 -0227 -0229 -022B -022D -022F -0231 -0233 0239 -023C -023F 0240 -0250 02AF -0390 -03AC 03CE -03D0 03D1 -03D5 03D7 -03D9 -03DB -03DD -03DF -03E1 -03E3 -03E5 -03E7 -03E9 -03EB -03ED -03EF 03F3 -03F5 -03F8 -03FB 03FC -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 -04F7 -04F9 -0501 -0503 -0505 -0507 -0509 -050B -050D -050F -0561 0587 -1D00 1D2B -1D62 1D77 -1D79 1D9A -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 -213C 213D -2146 2149 -2C30 2C5E -2C81 -2C83 -2C85 -2C87 -2C89 -2C8B -2C8D -2C8F -2C91 -2C93 -2C95 -2C97 -2C99 -2C9B -2C9D -2C9F -2CA1 -2CA3 -2CA5 -2CA7 -2CA9 -2CAB -2CAD -2CAF -2CB1 -2CB3 -2CB5 -2CB7 -2CB9 -2CBB -2CBD -2CBF -2CC1 -2CC3 -2CC5 -2CC7 -2CC9 -2CCB -2CCD -2CCF -2CD1 -2CD3 -2CD5 -2CD7 -2CD9 -2CDB -2CDD -2CDF -2CE1 -2CE3 2CE4 -2D00 2D25 -FB00 FB06 -FB13 FB17 -FF41 FF5A -10428 1044F -1D41A 1D433 -1D44E 1D454 -1D456 1D467 -1D482 1D49B -1D4B6 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D4CF -1D4EA 1D503 -1D51E 1D537 -1D552 1D56B -1D586 1D59F -1D5BA 1D5D3 -1D5EE 1D607 -1D622 1D63B -1D656 1D66F -1D68A 1D6A5 -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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lowercas.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lowercas.pl deleted file mode 100644 index 86dd301eec8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lowercas.pl +++ /dev/null @@ -1,497 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -0221 -0223 -0225 -0227 -0229 -022B -022D -022F -0231 -0233 0239 -023C -023F 0240 -0250 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 -03F8 -03FB 03FC -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 -04F7 -04F9 -0501 -0503 -0505 -0507 -0509 -050B -050D -050F -0561 0587 -1D00 1DBF -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 -2090 2094 -210A -210E 210F -2113 -212F -2134 -2139 -213C 213D -2146 2149 -2170 217F -24D0 24E9 -2C30 2C5E -2C81 -2C83 -2C85 -2C87 -2C89 -2C8B -2C8D -2C8F -2C91 -2C93 -2C95 -2C97 -2C99 -2C9B -2C9D -2C9F -2CA1 -2CA3 -2CA5 -2CA7 -2CA9 -2CAB -2CAD -2CAF -2CB1 -2CB3 -2CB5 -2CB7 -2CB9 -2CBB -2CBD -2CBF -2CC1 -2CC3 -2CC5 -2CC7 -2CC9 -2CCB -2CCD -2CCF -2CD1 -2CD3 -2CD5 -2CD7 -2CD9 -2CDB -2CDD -2CDF -2CE1 -2CE3 2CE4 -2D00 2D25 -FB00 FB06 -FB13 FB17 -FF41 FF5A -10428 1044F -1D41A 1D433 -1D44E 1D454 -1D456 1D467 -1D482 1D49B -1D4B6 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D4CF -1D4EA 1D503 -1D51E 1D537 -1D552 1D56B -1D586 1D59F -1D5BA 1D5D3 -1D5EE 1D607 -1D622 1D63B -1D656 1D66F -1D68A 1D6A5 -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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lt.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lt.pl deleted file mode 100644 index 6518f8e079c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lu.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lu.pl deleted file mode 100644 index 18634cb627e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Lu.pl +++ /dev/null @@ -1,489 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -023A 023B -023D 023E -0241 -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 -03F7 -03F9 03FA -03FD 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 -04F6 -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 -2C00 2C2E -2C80 -2C82 -2C84 -2C86 -2C88 -2C8A -2C8C -2C8E -2C90 -2C92 -2C94 -2C96 -2C98 -2C9A -2C9C -2C9E -2CA0 -2CA2 -2CA4 -2CA6 -2CA8 -2CAA -2CAC -2CAE -2CB0 -2CB2 -2CB4 -2CB6 -2CB8 -2CBA -2CBC -2CBE -2CC0 -2CC2 -2CC4 -2CC6 -2CC8 -2CCA -2CCC -2CCE -2CD0 -2CD2 -2CD4 -2CD6 -2CD8 -2CDA -2CDC -2CDE -2CE0 -2CE2 -FF21 FF3A -10400 10427 -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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/M.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/M.pl deleted file mode 100644 index 10d6c61a669..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/M.pl +++ /dev/null @@ -1,146 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 036F -0483 0486 -0488 0489 -0591 05B9 -05BB 05BD -05BF -05C1 05C2 -05C4 05C5 -05C7 -0610 0615 -064B 065E -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 -0A01 0A03 -0A3C -0A3E 0A42 -0A47 0A48 -0A4B 0A4D -0A70 0A71 -0A81 0A83 -0ABC -0ABE 0AC5 -0AC7 0AC9 -0ACB 0ACD -0AE2 0AE3 -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 -0CBC -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 -135F -1712 1714 -1732 1734 -1752 1753 -1772 1773 -17B6 17D3 -17DD -180B 180D -18A9 -1920 192B -1930 193B -19B0 19C0 -19C8 19C9 -1A17 1A1B -1DC0 1DC3 -20D0 20EB -302A 302F -3099 309A -A802 -A806 -A80B -A823 A827 -FB1E -FE00 FE0F -FE20 FE23 -10A01 10A03 -10A05 10A06 -10A0C 10A0F -10A38 10A3A -10A3F -1D165 1D169 -1D16D 1D172 -1D17B 1D182 -1D185 1D18B -1D1AA 1D1AD -1D242 1D244 -E0100 E01EF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Math.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Math.pl deleted file mode 100644 index a8cb569a258..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Math.pl +++ /dev/null @@ -1,103 +0,0 @@ -# !!!!!!! DO NOT EDIT 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'; -002B -003C 003E -005E -007C -007E -00AC -00B1 -00D7 -00F7 -03D0 03D2 -03D5 -03F0 03F1 -03F4 03F6 -2016 -2032 2034 -2040 -2044 -2052 -2061 2063 -207A 207E -208A 208E -20D0 20DC -20E1 -20E5 20E6 -2102 -210A 2113 -2115 -2119 211D -2124 -2128 2129 -212C 212D -212F 2131 -2133 2138 -213C 2149 -214B -2190 2194 -219A 219B -21A0 -21A3 -21A6 -21AE -21CE 21CF -21D2 -21D4 -21F4 22FF -2308 230B -2320 2321 -237C -239B 23B3 -23B7 -23D0 -25B7 -25C1 -25F8 25FF -266F -27C0 27C6 -27D0 27EB -27F0 27FF -2900 2AFF -FB29 -FE61 FE66 -FE68 -FF0B -FF1C FF1E -FF3C -FF3E -FF5C -FF5E -FFE2 -FFE9 FFEC -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mc.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mc.pl deleted file mode 100644 index 26e02469f02..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mc.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{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 -0A03 -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 -17B6 -17BE 17C5 -17C7 17C8 -1923 1926 -1929 192B -1930 1931 -1933 1938 -19B0 19C0 -19C8 19C9 -1A19 1A1B -A802 -A823 A824 -A827 -1D165 1D166 -1D16D 1D172 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Me.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Me.pl deleted file mode 100644 index a8ffc8fee21..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mlym.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mlym.pl deleted file mode 100644 index 9a3ad1b56cc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mlym.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mn.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mn.pl deleted file mode 100644 index a37b319a1cb..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mn.pl +++ /dev/null @@ -1,137 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 036F -0483 0486 -0591 05B9 -05BB 05BD -05BF -05C1 05C2 -05C4 05C5 -05C7 -0610 0615 -064B 065E -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 -0A01 0A02 -0A3C -0A41 0A42 -0A47 0A48 -0A4B 0A4D -0A70 0A71 -0A81 0A82 -0ABC -0AC1 0AC5 -0AC7 0AC8 -0ACD -0AE2 0AE3 -0B01 -0B3C -0B3F -0B41 0B43 -0B4D -0B56 -0B82 -0BC0 -0BCD -0C3E 0C40 -0C46 0C48 -0C4A 0C4D -0C55 0C56 -0CBC -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 -135F -1712 1714 -1732 1734 -1752 1753 -1772 1773 -17B7 17BD -17C6 -17C9 17D3 -17DD -180B 180D -18A9 -1920 1922 -1927 1928 -1932 -1939 193B -1A17 1A18 -1DC0 1DC3 -20D0 20DC -20E1 -20E5 20EB -302A 302F -3099 309A -A806 -A80B -A825 A826 -FB1E -FE00 FE0F -FE20 FE23 -10A01 10A03 -10A05 10A06 -10A0C 10A0F -10A38 10A3A -10A3F -1D167 1D169 -1D17B 1D182 -1D185 1D18B -1D1AA 1D1AD -1D242 1D244 -E0100 E01EF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mong.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mong.pl deleted file mode 100644 index b72e78316c8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mong.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{Mongolian} (and fuzzy permutations) -# -# Meaning: Script 'Mongolian' -# -return <<'END'; -1800 180E Mongolian -1810 1819 Mongolian -1820 1877 Mongolian -1880 18A9 Mongolian -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mymr.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mymr.pl deleted file mode 100644 index dc737eee2c9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Mymr.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{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 1059 Myanmar -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/N.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/N.pl deleted file mode 100644 index c94d2d97317..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/N.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{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 -0BE6 0BF2 -0C66 0C6F -0CE6 0CEF -0D66 0D6F -0E50 0E59 -0ED0 0ED9 -0F20 0F33 -1040 1049 -1369 137C -16EE 16F0 -17E0 17E9 -17F0 17F9 -1810 1819 -1946 194F -19D0 19D9 -2070 -2074 2079 -2080 2089 -2153 2183 -2460 249B -24EA 24FF -2776 2793 -2CFD -3007 -3021 3029 -3038 303A -3192 3195 -3220 3229 -3251 325F -3280 3289 -32B1 32BF -FF10 FF19 -10107 10133 -10140 10178 -1018A -10320 10323 -1034A -103D1 103D5 -104A0 104A9 -10A40 10A47 -1D7CE 1D7FF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/NChar.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/NChar.pl deleted file mode 100644 index 46f865d878c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/NChar.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! - -# -# Binary 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Nd.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Nd.pl deleted file mode 100644 index e38926a9880..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Nd.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{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 -0BE6 0BEF -0C66 0C6F -0CE6 0CEF -0D66 0D6F -0E50 0E59 -0ED0 0ED9 -0F20 0F29 -1040 1049 -17E0 17E9 -1810 1819 -1946 194F -19D0 19D9 -FF10 FF19 -104A0 104A9 -1D7CE 1D7FF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/NewTaiLu.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/NewTaiLu.pl deleted file mode 100644 index 506c6011ab5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/NewTaiLu.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{NewTaiLue} (and fuzzy permutations) -# -# Meaning: Script 'New_Tai_Lue' -# -return <<'END'; -1980 19A9 New_Tai_Lue -19B0 19C9 New_Tai_Lue -19D0 19D9 New_Tai_Lue -19DE 19DF New_Tai_Lue -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Nl.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Nl.pl deleted file mode 100644 index 3acf890e1e9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Nl.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{Nl} -# \p{Nl} (and fuzzy permutations) -# -# Meaning: General Category 'Nl' -# -return <<'END'; -16EE 16F0 -2160 2183 -3007 -3021 3029 -3038 303A -10140 10174 -1034A -103D1 103D5 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/No.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/No.pl deleted file mode 100644 index 4e8b11c2ab6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/No.pl +++ /dev/null @@ -1,39 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -1369 137C -17F0 17F9 -2070 -2074 2079 -2080 2089 -2153 215F -2460 249B -24EA 24FF -2776 2793 -2CFD -3192 3195 -3220 3229 -3251 325F -3280 3289 -32B1 32BF -10107 10133 -10175 10178 -1018A -10320 10323 -10A40 10A47 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Nonchara.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Nonchara.pl deleted file mode 100644 index 02624831133..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OAlpha.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OAlpha.pl deleted file mode 100644 index ad6b3b331dd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OAlpha.pl +++ /dev/null @@ -1,108 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Binary property 'Other_Alphabetic' -# -return <<'END'; -0345 Other_Alphabetic -05B0 05B9 Other_Alphabetic -05BB 05BD Other_Alphabetic -05BF Other_Alphabetic -05C1 05C2 Other_Alphabetic -05C4 05C5 Other_Alphabetic -05C7 Other_Alphabetic -0610 0615 Other_Alphabetic -064B 0657 Other_Alphabetic -0659 065E 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 -0A01 0A03 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 -0AE2 0AE3 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 -135F Other_Alphabetic -1712 1713 Other_Alphabetic -1732 1733 Other_Alphabetic -1752 1753 Other_Alphabetic -1772 1773 Other_Alphabetic -17B6 17C8 Other_Alphabetic -18A9 Other_Alphabetic -1920 192B Other_Alphabetic -1930 1938 Other_Alphabetic -19B0 19C0 Other_Alphabetic -19C8 19C9 Other_Alphabetic -1A17 1A1B Other_Alphabetic -24B6 24E9 Other_Alphabetic -A823 A827 Other_Alphabetic -FB1E Other_Alphabetic -10A01 10A03 Other_Alphabetic -10A05 10A06 Other_Alphabetic -10A0C 10A0F Other_Alphabetic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/ODI.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/ODI.pl deleted file mode 100644 index 0bcb43d5650..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/ODI.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! - -# -# Binary property 'Other_Default_Ignorable_Code_Point' -# -return <<'END'; -034F Other_Default_Ignorable_Code_Point -115F 1160 Other_Default_Ignorable_Code_Point -2064 2069 Other_Default_Ignorable_Code_Point -3164 Other_Default_Ignorable_Code_Point -FFA0 Other_Default_Ignorable_Code_Point -FFF0 FFF8 Other_Default_Ignorable_Code_Point -E0000 Other_Default_Ignorable_Code_Point -E0002 E001F Other_Default_Ignorable_Code_Point -E0080 E00FF Other_Default_Ignorable_Code_Point -E01F0 E0FFF Other_Default_Ignorable_Code_Point -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OGrExt.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OGrExt.pl deleted file mode 100644 index 1db852615cc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OGrExt.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! - -# -# Binary property 'Other_Grapheme_Extend' -# -return <<'END'; -09BE Other_Grapheme_Extend -09D7 Other_Grapheme_Extend -0B3E Other_Grapheme_Extend -0B57 Other_Grapheme_Extend -0BBE Other_Grapheme_Extend -0BD7 Other_Grapheme_Extend -0CC2 Other_Grapheme_Extend -0CD5 0CD6 Other_Grapheme_Extend -0D3E Other_Grapheme_Extend -0D57 Other_Grapheme_Extend -0DCF Other_Grapheme_Extend -0DDF Other_Grapheme_Extend -200C 200D Other_Grapheme_Extend -1D165 Other_Grapheme_Extend -1D16E 1D172 Other_Grapheme_Extend -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OIDC.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OIDC.pl deleted file mode 100644 index 3c66febbd46..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OIDC.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Binary property 'Other_ID_Continue' -# -return <<'END'; -1369 1371 Other_ID_Continue -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OIDS.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OIDS.pl deleted file mode 100644 index 2fa61e8bf7d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OIDS.pl +++ /dev/null @@ -1,12 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Binary property 'Other_ID_Start' -# -return <<'END'; -2118 Other_ID_Start -212E Other_ID_Start -309B 309C Other_ID_Start -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OLower.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OLower.pl deleted file mode 100644 index d403c834e8a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OLower.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! - -# -# Binary property 'Other_Lowercase' -# -return <<'END'; -02B0 02B8 Other_Lowercase -02C0 02C1 Other_Lowercase -02E0 02E4 Other_Lowercase -0345 Other_Lowercase -037A Other_Lowercase -1D2C 1D61 Other_Lowercase -1D78 Other_Lowercase -1D9B 1DBF Other_Lowercase -2090 2094 Other_Lowercase -2170 217F Other_Lowercase -24D0 24E9 Other_Lowercase -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OMath.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OMath.pl deleted file mode 100644 index a04d5d44761..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OMath.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! - -# -# Binary property 'Other_Math' -# -return <<'END'; -005E Other_Math -03D0 03D2 Other_Math -03D5 Other_Math -03F0 03F1 Other_Math -03F4 03F5 Other_Math -2016 Other_Math -2032 2034 Other_Math -2040 Other_Math -2061 2063 Other_Math -207D 207E Other_Math -208D 208E Other_Math -20D0 20DC Other_Math -20E1 Other_Math -20E5 20E6 Other_Math -2102 Other_Math -210A 2113 Other_Math -2115 Other_Math -2119 211D Other_Math -2124 Other_Math -2128 2129 Other_Math -212C 212D Other_Math -212F 2131 Other_Math -2133 2138 Other_Math -213C 213F Other_Math -2145 2149 Other_Math -23B7 Other_Math -23D0 Other_Math -27C5 27C6 Other_Math -27E6 27EB Other_Math -2983 2998 Other_Math -29D8 29DB Other_Math -29FC 29FD Other_Math -FE61 Other_Math -FE63 Other_Math -FE68 Other_Math -FF3C Other_Math -FF3E 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 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OUpper.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OUpper.pl deleted file mode 100644 index 28ae9bec896..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OUpper.pl +++ /dev/null @@ -1,11 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Binary property 'Other_Uppercase' -# -return <<'END'; -2160 216F Other_Uppercase -24B6 24CF Other_Uppercase -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ogam.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ogam.pl deleted file mode 100644 index febdcd5f0f9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ogam.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'; -1680 169C Ogham -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OldItali.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OldItali.pl deleted file mode 100644 index d2084536937..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OldItali.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{OldItalic} (and fuzzy permutations) -# -# Meaning: Script 'Old_Italic' -# -return <<'END'; -10300 1031E Old_Italic -10320 10323 Old_Italic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OldPersi.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OldPersi.pl deleted file mode 100644 index 9558e2e822e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OldPersi.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{OldPersian} (and fuzzy permutations) -# -# Meaning: Script 'Old_Persian' -# -return <<'END'; -103A0 103C3 Old_Persian -103C8 103D5 Old_Persian -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Orya.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Orya.pl deleted file mode 100644 index 9b96b1f7dee..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Orya.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 -0B35 0B39 Oriya -0B3C 0B43 Oriya -0B47 0B48 Oriya -0B4B 0B4D Oriya -0B56 0B57 Oriya -0B5C 0B5D Oriya -0B5F 0B61 Oriya -0B66 0B71 Oriya -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Osma.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Osma.pl deleted file mode 100644 index de7a8935552..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Osma.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{Osmanya} (and fuzzy permutations) -# -# Meaning: Script 'Osmanya' -# -return <<'END'; -10480 1049D Osmanya -104A0 104A9 Osmanya -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherAlp.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherAlp.pl deleted file mode 100644 index a786ad9fb6e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherAlp.pl +++ /dev/null @@ -1,111 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 05C5 Other_Alphabetic -05C7 Other_Alphabetic -0610 0615 Other_Alphabetic -064B 0657 Other_Alphabetic -0659 065E 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 -0A01 0A03 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 -0AE2 0AE3 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 -135F Other_Alphabetic -1712 1713 Other_Alphabetic -1732 1733 Other_Alphabetic -1752 1753 Other_Alphabetic -1772 1773 Other_Alphabetic -17B6 17C8 Other_Alphabetic -18A9 Other_Alphabetic -1920 192B Other_Alphabetic -1930 1938 Other_Alphabetic -19B0 19C0 Other_Alphabetic -19C8 19C9 Other_Alphabetic -1A17 1A1B Other_Alphabetic -24B6 24E9 Other_Alphabetic -A823 A827 Other_Alphabetic -FB1E Other_Alphabetic -10A01 10A03 Other_Alphabetic -10A05 10A06 Other_Alphabetic -10A0C 10A0F Other_Alphabetic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherDef.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherDef.pl deleted file mode 100644 index ced4761b930..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherDef.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{OtherDefaultIgnorableCodePoint} (and fuzzy permutations) -# -# Meaning: Extended property 'Other_Default_Ignorable_Code_Point' -# -return <<'END'; -034F Other_Default_Ignorable_Code_Point -115F 1160 Other_Default_Ignorable_Code_Point -2064 2069 Other_Default_Ignorable_Code_Point -3164 Other_Default_Ignorable_Code_Point -FFA0 Other_Default_Ignorable_Code_Point -FFF0 FFF8 Other_Default_Ignorable_Code_Point -E0000 Other_Default_Ignorable_Code_Point -E0002 E001F Other_Default_Ignorable_Code_Point -E0080 E00FF Other_Default_Ignorable_Code_Point -E01F0 E0FFF Other_Default_Ignorable_Code_Point -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherGra.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherGra.pl deleted file mode 100644 index 00e75a8c5fa..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherGra.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{OtherGraphemeExtend} (and fuzzy permutations) -# -# Meaning: Extended property 'Other_Grapheme_Extend' -# -return <<'END'; -09BE Other_Grapheme_Extend -09D7 Other_Grapheme_Extend -0B3E Other_Grapheme_Extend -0B57 Other_Grapheme_Extend -0BBE Other_Grapheme_Extend -0BD7 Other_Grapheme_Extend -0CC2 Other_Grapheme_Extend -0CD5 0CD6 Other_Grapheme_Extend -0D3E Other_Grapheme_Extend -0D57 Other_Grapheme_Extend -0DCF Other_Grapheme_Extend -0DDF Other_Grapheme_Extend -200C 200D Other_Grapheme_Extend -1D165 Other_Grapheme_Extend -1D16E 1D172 Other_Grapheme_Extend -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherIdC.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherIdC.pl deleted file mode 100644 index ddd390b2241..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherIdC.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{OtherIdContinue} (and fuzzy permutations) -# -# Meaning: Extended property 'Other_ID_Continue' -# -return <<'END'; -1369 1371 Other_ID_Continue -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherIdS.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherIdS.pl deleted file mode 100644 index 1f165d1ce17..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherIdS.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{OtherIdStart} (and fuzzy permutations) -# -# Meaning: Extended property 'Other_ID_Start' -# -return <<'END'; -2118 Other_ID_Start -212E Other_ID_Start -309B 309C Other_ID_Start -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherLow.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherLow.pl deleted file mode 100644 index b2804306e65..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherLow.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{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 -1D2C 1D61 Other_Lowercase -1D78 Other_Lowercase -1D9B 1DBF Other_Lowercase -2090 2094 Other_Lowercase -2170 217F Other_Lowercase -24D0 24E9 Other_Lowercase -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherMat.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherMat.pl deleted file mode 100644 index 6264a6b0d89..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherMat.pl +++ /dev/null @@ -1,80 +0,0 @@ -# !!!!!!! DO NOT EDIT 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'; -005E Other_Math -03D0 03D2 Other_Math -03D5 Other_Math -03F0 03F1 Other_Math -03F4 03F5 Other_Math -2016 Other_Math -2032 2034 Other_Math -2040 Other_Math -2061 2063 Other_Math -207D 207E Other_Math -208D 208E Other_Math -20D0 20DC Other_Math -20E1 Other_Math -20E5 20E6 Other_Math -2102 Other_Math -210A 2113 Other_Math -2115 Other_Math -2119 211D Other_Math -2124 Other_Math -2128 2129 Other_Math -212C 212D Other_Math -212F 2131 Other_Math -2133 2138 Other_Math -213C 213F Other_Math -2145 2149 Other_Math -23B7 Other_Math -23D0 Other_Math -27C5 27C6 Other_Math -27E6 27EB Other_Math -2983 2998 Other_Math -29D8 29DB Other_Math -29FC 29FD Other_Math -FE61 Other_Math -FE63 Other_Math -FE68 Other_Math -FF3C Other_Math -FF3E 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 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherUpp.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/OtherUpp.pl deleted file mode 100644 index 4ee526f338e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/P.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/P.pl deleted file mode 100644 index 9633611f351..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/P.pl +++ /dev/null @@ -1,109 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -00B7 -00BB -00BF -037E -0387 -055A 055F -0589 058A -05BE -05C0 -05C3 -05C6 -05F3 05F4 -060C 060D -061B -061E 061F -066A 066D -06D4 -0700 070D -0964 0965 -0970 -0DF4 -0E4F -0E5A 0E5B -0F04 0F12 -0F3A 0F3D -0F85 -0FD0 0FD1 -104A 104F -10FB -1361 1368 -166D 166E -169B 169C -16EB 16ED -1735 1736 -17D4 17D6 -17D8 17DA -1800 180A -1944 1945 -19DE 19DF -1A1E 1A1F -2010 2027 -2030 2043 -2045 2051 -2053 205E -207D 207E -208D 208E -2329 232A -23B4 23B6 -2768 2775 -27C5 27C6 -27E6 27EB -2983 2998 -29D8 29DB -29FC 29FD -2CF9 2CFC -2CFE 2CFF -2E00 2E17 -2E1C 2E1D -3001 3003 -3008 3011 -3014 301F -3030 -303D -30A0 -30FB -FD3E FD3F -FE10 FE19 -FE30 FE52 -FE54 FE61 -FE63 -FE68 -FE6A FE6B -FF01 FF03 -FF05 FF0A -FF0C FF0F -FF1A FF1B -FF1F FF20 -FF3B FF3D -FF3F -FF5B -FF5D -FF5F FF65 -10100 10101 -1039F -10A50 10A58 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/PatSyn.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/PatSyn.pl deleted file mode 100644 index bb53683d6e4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/PatSyn.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! - -# -# Binary property 'Pattern_Syntax' -# -return <<'END'; -0021 002F Pattern_Syntax -003A 0040 Pattern_Syntax -005B 005E Pattern_Syntax -0060 Pattern_Syntax -007B 007E Pattern_Syntax -00A1 00A7 Pattern_Syntax -00A9 Pattern_Syntax -00AB 00AC Pattern_Syntax -00AE Pattern_Syntax -00B0 00B1 Pattern_Syntax -00B6 Pattern_Syntax -00BB Pattern_Syntax -00BF Pattern_Syntax -00D7 Pattern_Syntax -00F7 Pattern_Syntax -2010 2027 Pattern_Syntax -2030 203E Pattern_Syntax -2041 2053 Pattern_Syntax -2055 205E Pattern_Syntax -2190 245F Pattern_Syntax -2500 2775 Pattern_Syntax -2794 2BFF Pattern_Syntax -2E00 2E7F Pattern_Syntax -3001 3003 Pattern_Syntax -3008 3020 Pattern_Syntax -3030 Pattern_Syntax -FD3E FD3F Pattern_Syntax -FE45 FE46 Pattern_Syntax -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/PatWS.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/PatWS.pl deleted file mode 100644 index 4157e6479c7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/PatWS.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! - -# -# Binary property 'Pattern_White_Space' -# -return <<'END'; -0009 000D Pattern_White_Space -0020 Pattern_White_Space -0085 Pattern_White_Space -200E 200F Pattern_White_Space -2028 2029 Pattern_White_Space -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/PatternS.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/PatternS.pl deleted file mode 100644 index ef8441d6b6f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/PatternS.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{PatternSyntax} (and fuzzy permutations) -# -# Meaning: Extended property 'Pattern_Syntax' -# -return <<'END'; -0021 002F Pattern_Syntax -003A 0040 Pattern_Syntax -005B 005E Pattern_Syntax -0060 Pattern_Syntax -007B 007E Pattern_Syntax -00A1 00A7 Pattern_Syntax -00A9 Pattern_Syntax -00AB 00AC Pattern_Syntax -00AE Pattern_Syntax -00B0 00B1 Pattern_Syntax -00B6 Pattern_Syntax -00BB Pattern_Syntax -00BF Pattern_Syntax -00D7 Pattern_Syntax -00F7 Pattern_Syntax -2010 2027 Pattern_Syntax -2030 203E Pattern_Syntax -2041 2053 Pattern_Syntax -2055 205E Pattern_Syntax -2190 245F Pattern_Syntax -2500 2775 Pattern_Syntax -2794 2BFF Pattern_Syntax -2E00 2E7F Pattern_Syntax -3001 3003 Pattern_Syntax -3008 3020 Pattern_Syntax -3030 Pattern_Syntax -FD3E FD3F Pattern_Syntax -FE45 FE46 Pattern_Syntax -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/PatternW.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/PatternW.pl deleted file mode 100644 index 9d63eca6541..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/PatternW.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{PatternWhiteSpace} (and fuzzy permutations) -# -# Meaning: Extended property 'Pattern_White_Space' -# -return <<'END'; -0009 000D Pattern_White_Space -0020 Pattern_White_Space -0085 Pattern_White_Space -200E 200F Pattern_White_Space -2028 2029 Pattern_White_Space -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pc.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pc.pl deleted file mode 100644 index 2a2cbe552dc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pc.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{Pc} -# \p{Pc} (and fuzzy permutations) -# -# Meaning: General Category 'Pc' -# -return <<'END'; -005F -203F 2040 -2054 -FE33 FE34 -FE4D FE4F -FF3F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pd.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pd.pl deleted file mode 100644 index 5aa3eb3ee32..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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 -058A -1806 -2010 2015 -2E17 -301C -3030 -30A0 -FE31 FE32 -FE58 -FE63 -FF0D -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pe.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pe.pl deleted file mode 100644 index c22445a2790..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pe.pl +++ /dev/null @@ -1,78 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -27C6 -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 -FE18 -FE36 -FE38 -FE3A -FE3C -FE3E -FE40 -FE42 -FE44 -FE48 -FE5A -FE5C -FE5E -FF09 -FF3D -FF5D -FF60 -FF63 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pf.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pf.pl deleted file mode 100644 index 256bef78d23..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pf.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{Pf} -# \p{Pf} (and fuzzy permutations) -# -# Meaning: General Category 'Pf' -# -return <<'END'; -00BB -2019 -201D -203A -2E03 -2E05 -2E0A -2E0D -2E1D -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pi.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pi.pl deleted file mode 100644 index d1e23c27b3d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Pi.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{Pi} -# \p{Pi} (and fuzzy permutations) -# -# Meaning: General Category 'Pi' -# -return <<'END'; -00AB -2018 -201B 201C -201F -2039 -2E02 -2E04 -2E09 -2E0C -2E1C -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Po.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Po.pl deleted file mode 100644 index 55ca20ca1e7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Po.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{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 -05C6 -05F3 05F4 -060C 060D -061B -061E 061F -066A 066D -06D4 -0700 070D -0964 0965 -0970 -0DF4 -0E4F -0E5A 0E5B -0F04 0F12 -0F85 -0FD0 0FD1 -104A 104F -10FB -1361 1368 -166D 166E -16EB 16ED -1735 1736 -17D4 17D6 -17D8 17DA -1800 1805 -1807 180A -1944 1945 -19DE 19DF -1A1E 1A1F -2016 2017 -2020 2027 -2030 2038 -203B 203E -2041 2043 -2047 2051 -2053 -2055 205E -23B6 -2CF9 2CFC -2CFE 2CFF -2E00 2E01 -2E06 2E08 -2E0B -2E0E 2E16 -3001 3003 -303D -30FB -FE10 FE16 -FE19 -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 FF65 -10100 10101 -1039F -10A50 10A58 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Print.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Print.pl deleted file mode 100644 index e2df8d7b884..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Print.pl +++ /dev/null @@ -1,435 +0,0 @@ -# !!!!!!! DO NOT EDIT 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'; -0009 000D -0020 007E -0085 -00A0 0241 -0250 036F -0374 0375 -037A -037E -0384 038A -038C -038E 03A1 -03A3 03CE -03D0 0486 -0488 04CE -04D0 04F9 -0500 050F -0531 0556 -0559 055F -0561 0587 -0589 058A -0591 05B9 -05BB 05C7 -05D0 05EA -05F0 05F4 -0600 0603 -060B 0615 -061B -061E 061F -0621 063A -0640 065E -0660 070D -070F 074A -074D 076D -0780 07B1 -0901 0939 -093C 094D -0950 0954 -0958 0970 -097D -0981 0983 -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BC 09C4 -09C7 09C8 -09CB 09CE -09D7 -09DC 09DD -09DF 09E3 -09E6 09FA -0A01 0A03 -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 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABC 0AC5 -0AC7 0AC9 -0ACB 0ACD -0AD0 -0AE0 0AE3 -0AE6 0AEF -0AF1 -0B01 0B03 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3C 0B43 -0B47 0B48 -0B4B 0B4D -0B56 0B57 -0B5C 0B5D -0B5F 0B61 -0B66 0B71 -0B82 0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 0BB9 -0BBE 0BC2 -0BC6 0BC8 -0BCA 0BCD -0BD7 -0BE6 0BFA -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 -0CBC 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 0FD1 -1000 1021 -1023 1027 -1029 102A -102C 1032 -1036 1039 -1040 1059 -10A0 10C5 -10D0 10FC -1100 1159 -115F 11A2 -11A8 11F9 -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -135F 137C -1380 1399 -13A0 13F4 -1401 1676 -1680 169C -16A0 16F0 -1700 170C -170E 1714 -1720 1736 -1740 1753 -1760 176C -176E 1770 -1772 1773 -1780 17DD -17E0 17E9 -17F0 17F9 -1800 180E -1810 1819 -1820 1877 -1880 18A9 -1900 191C -1920 192B -1930 193B -1940 -1944 196D -1970 1974 -1980 19A9 -19B0 19C9 -19D0 19D9 -19DE 1A1B -1A1E 1A1F -1D00 1DC3 -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 2063 -206A 2071 -2074 208E -2090 2094 -20A0 20B5 -20D0 20EB -2100 214C -2153 2183 -2190 23DB -2400 2426 -2440 244A -2460 269C -26A0 26B1 -2701 2704 -2706 2709 -270C 2727 -2729 274B -274D -274F 2752 -2756 -2758 275E -2761 2794 -2798 27AF -27B1 27BE -27C0 27C6 -27D0 27EB -27F0 2B13 -2C00 2C2E -2C30 2C5E -2C80 2CEA -2CF9 2D25 -2D30 2D65 -2D6F -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -2E00 2E17 -2E1C 2E1D -2E80 2E99 -2E9B 2EF3 -2F00 2FD5 -2FF0 2FFB -3000 303F -3041 3096 -3099 30FF -3105 312C -3131 318E -3190 31B7 -31C0 31CF -31F0 321E -3220 3243 -3250 32FE -3300 4DB5 -4DC0 9FBB -A000 A48C -A490 A4C6 -A700 A716 -A800 A82B -AC00 D7A3 -E000 FA2D -FA30 FA6A -FA70 FAD9 -FB00 FB06 -FB13 FB17 -FB1D FB36 -FB38 FB3C -FB3E -FB40 FB41 -FB43 FB44 -FB46 FBB1 -FBD3 FD3F -FD50 FD8F -FD92 FDC7 -FDF0 FDFD -FE00 FE19 -FE20 FE23 -FE30 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 -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10100 10102 -10107 10133 -10137 1018A -10300 1031E -10320 10323 -10330 1034A -10380 1039D -1039F 103C3 -103C8 103D5 -10400 1049D -104A0 104A9 -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 10A03 -10A05 10A06 -10A0C 10A13 -10A15 10A17 -10A19 10A33 -10A38 10A3A -10A3F 10A47 -10A50 10A58 -1D000 1D0F5 -1D100 1D126 -1D12A 1D1DD -1D200 1D245 -1D300 1D356 -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -1D6A8 1D7C9 -1D7CE 1D7FF -20000 2A6D6 -2F800 2FA1D -E0001 -E0020 E007F -E0100 E01EF -F0000 FFFFD -100000 10FFFD -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ps.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ps.pl deleted file mode 100644 index f08bebe61ac..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ps.pl +++ /dev/null @@ -1,80 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -27C5 -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 -FE17 -FE35 -FE37 -FE39 -FE3B -FE3D -FE3F -FE41 -FE43 -FE47 -FE59 -FE5B -FE5D -FF08 -FF3B -FF5B -FF5F -FF62 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Punct.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Punct.pl deleted file mode 100644 index d6cfefe06e2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Punct.pl +++ /dev/null @@ -1,108 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -00B7 -00BB -00BF -037E -0387 -055A 055F -0589 058A -05BE -05C0 -05C3 -05C6 -05F3 05F4 -060C 060D -061B -061E 061F -066A 066D -06D4 -0700 070D -0964 0965 -0970 -0DF4 -0E4F -0E5A 0E5B -0F04 0F12 -0F3A 0F3D -0F85 -0FD0 0FD1 -104A 104F -10FB -1361 1368 -166D 166E -169B 169C -16EB 16ED -1735 1736 -17D4 17D6 -17D8 17DA -1800 180A -1944 1945 -19DE 19DF -1A1E 1A1F -2010 2027 -2030 2043 -2045 2051 -2053 205E -207D 207E -208D 208E -2329 232A -23B4 23B6 -2768 2775 -27C5 27C6 -27E6 27EB -2983 2998 -29D8 29DB -29FC 29FD -2CF9 2CFC -2CFE 2CFF -2E00 2E17 -2E1C 2E1D -3001 3003 -3008 3011 -3014 301F -3030 -303D -30A0 -30FB -FD3E FD3F -FE10 FE19 -FE30 FE52 -FE54 FE61 -FE63 -FE68 -FE6A FE6B -FF01 FF03 -FF05 FF0A -FF0C FF0F -FF1A FF1B -FF1F FF20 -FF3B FF3D -FF3F -FF5B -FF5D -FF5F FF65 -10100 10101 -1039F -10A50 10A58 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/QMark.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/QMark.pl deleted file mode 100644 index 9778cd953bb..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/QMark.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! - -# -# Binary 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Qaai.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Qaai.pl deleted file mode 100644 index afbf5fea80d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Qaai.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{Inherited} (and fuzzy permutations) -# -# Meaning: Script 'Inherited' -# -return <<'END'; -0300 036F Inherited -064B 0655 Inherited -0670 Inherited -1DC0 1DC3 Inherited -200C 200D Inherited -20D0 20EB Inherited -302A 302F Inherited -3099 309A Inherited -FE00 FE0F Inherited -FE20 FE23 Inherited -1D167 1D169 Inherited -1D17B 1D182 Inherited -1D185 1D18B Inherited -1D1AA 1D1AD Inherited -E0100 E01EF Inherited -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Quotatio.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Quotatio.pl deleted file mode 100644 index 255d986ff3b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Radical.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Radical.pl deleted file mode 100644 index aeb66ed45b9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Radical.pl +++ /dev/null @@ -1,12 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Binary property 'Radical' -# -return <<'END'; -2E80 2E99 Radical -2E9B 2EF3 Radical -2F00 2FD5 Radical -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Radical2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Radical2.pl deleted file mode 100644 index 1bd455af14a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Radical2.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Runr.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Runr.pl deleted file mode 100644 index 02f180a46aa..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Runr.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/S.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/S.pl deleted file mode 100644 index 58f6e311eab..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/S.pl +++ /dev/null @@ -1,175 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -02C2 02C5 -02D2 02DF -02E5 02ED -02EF 02FF -0374 0375 -0384 0385 -03F6 -0482 -060B -060E 060F -06E9 -06FD 06FE -09F2 09F3 -09FA -0AF1 -0B70 -0BF3 0BFA -0E3F -0F01 0F03 -0F13 0F17 -0F1A 0F1F -0F34 -0F36 -0F38 -0FBE 0FC5 -0FC7 0FCC -0FCF -1360 -1390 1399 -17DB -1940 -19E0 19FF -1FBD -1FBF 1FC1 -1FCD 1FCF -1FDD 1FDF -1FED 1FEF -1FFD 1FFE -2044 -2052 -207A 207C -208A 208C -20A0 20B5 -2100 2101 -2103 2106 -2108 2109 -2114 -2116 2118 -211E 2123 -2125 -2127 -2129 -212E -2132 -213A 213B -2140 2144 -214A 214C -2190 2328 -232B 23B3 -23B7 23DB -2400 2426 -2440 244A -249C 24E9 -2500 269C -26A0 26B1 -2701 2704 -2706 2709 -270C 2727 -2729 274B -274D -274F 2752 -2756 -2758 275E -2761 2767 -2794 -2798 27AF -27B1 27BE -27C0 27C4 -27D0 27E5 -27F0 2982 -2999 29D7 -29DC 29FB -29FE 2B13 -2CE5 2CEA -2E80 2E99 -2E9B 2EF3 -2F00 2FD5 -2FF0 2FFB -3004 -3012 3013 -3020 -3036 3037 -303E 303F -309B 309C -3190 3191 -3196 319F -31C0 31CF -3200 321E -322A 3243 -3250 -3260 327F -328A 32B0 -32C0 32FE -3300 33FF -4DC0 4DFF -A490 A4C6 -A700 A716 -A828 A82B -FB29 -FDFC FDFD -FE62 -FE64 FE66 -FE69 -FF04 -FF0B -FF1C FF1E -FF3E -FF40 -FF5C -FF5E -FFE0 FFE6 -FFE8 FFEE -FFFC FFFD -10102 -10137 1013F -10179 10189 -103D0 -1D000 1D0F5 -1D100 1D126 -1D12A 1D164 -1D16A 1D16C -1D183 1D184 -1D18C 1D1A9 -1D1AE 1D1DD -1D200 1D241 -1D245 -1D300 1D356 -1D6C1 -1D6DB -1D6FB -1D715 -1D735 -1D74F -1D76F -1D789 -1D7A9 -1D7C3 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/SD.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/SD.pl deleted file mode 100644 index f8d12d548ae..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/SD.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! - -# -# Binary property 'Soft_Dotted' -# -return <<'END'; -0069 006A Soft_Dotted -012F Soft_Dotted -0268 Soft_Dotted -029D Soft_Dotted -02B2 Soft_Dotted -03F3 Soft_Dotted -0456 Soft_Dotted -0458 Soft_Dotted -1D62 Soft_Dotted -1D96 Soft_Dotted -1DA4 Soft_Dotted -1DA8 Soft_Dotted -1E2D Soft_Dotted -1ECB Soft_Dotted -2071 Soft_Dotted -2148 2149 Soft_Dotted -1D422 1D423 Soft_Dotted -1D456 1D457 Soft_Dotted -1D48A 1D48B Soft_Dotted -1D4BE 1D4BF Soft_Dotted -1D4F2 1D4F3 Soft_Dotted -1D526 1D527 Soft_Dotted -1D55A 1D55B Soft_Dotted -1D58E 1D58F Soft_Dotted -1D5C2 1D5C3 Soft_Dotted -1D5F6 1D5F7 Soft_Dotted -1D62A 1D62B Soft_Dotted -1D65E 1D65F Soft_Dotted -1D692 1D693 Soft_Dotted -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/STerm.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/STerm.pl deleted file mode 100644 index 2e1ac3958dc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/STerm.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! - -# -# Binary property 'STerm' -# -return <<'END'; -0021 STerm -002E STerm -003F STerm -055C STerm -055E STerm -0589 STerm -061F STerm -06D4 STerm -0700 0702 STerm -0964 0965 STerm -104A 104B STerm -1362 STerm -1367 1368 STerm -166E STerm -1803 STerm -1809 STerm -1944 1945 STerm -203C 203D STerm -2047 2049 STerm -3002 STerm -FE52 STerm -FE56 FE57 STerm -FF01 STerm -FF0E STerm -FF1F STerm -FF61 STerm -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sc.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sc.pl deleted file mode 100644 index c85cf4175b3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sc.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{Sc} -# \p{Sc} (and fuzzy permutations) -# -# Meaning: General Category 'Sc' -# -return <<'END'; -0024 -00A2 00A5 -060B -09F2 09F3 -0AF1 -0BF9 -0E3F -17DB -20A0 20B5 -FDFC -FE69 -FF04 -FFE0 FFE1 -FFE5 FFE6 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Shaw.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Shaw.pl deleted file mode 100644 index 385dd06f31d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Shaw.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{Shavian} (and fuzzy permutations) -# -# Meaning: Script 'Shavian' -# -return <<'END'; -10450 1047F Shavian -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sinh.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sinh.pl deleted file mode 100644 index 154fcd4fddb..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sinh.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 0DF4 Sinhala -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sk.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sk.pl deleted file mode 100644 index 7e202b38f32..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sk.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{Sk} -# \p{Sk} (and fuzzy permutations) -# -# Meaning: General Category 'Sk' -# -return <<'END'; -005E -0060 -00A8 -00AF -00B4 -00B8 -02C2 02C5 -02D2 02DF -02E5 02ED -02EF 02FF -0374 0375 -0384 0385 -1FBD -1FBF 1FC1 -1FCD 1FCF -1FDD 1FDF -1FED 1FEF -1FFD 1FFE -309B 309C -A700 A716 -FF3E -FF40 -FFE3 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sm.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sm.pl deleted file mode 100644 index e5b5e4d0320..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sm.pl +++ /dev/null @@ -1,72 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -27C0 27C4 -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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/So.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/So.pl deleted file mode 100644 index d50e3f63bf4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/So.pl +++ /dev/null @@ -1,133 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -060E 060F -06E9 -06FD 06FE -09FA -0B70 -0BF3 0BF8 -0BFA -0F01 0F03 -0F13 0F17 -0F1A 0F1F -0F34 -0F36 -0F38 -0FBE 0FC5 -0FC7 0FCC -0FCF -1360 -1390 1399 -1940 -19E0 19FF -2100 2101 -2103 2106 -2108 2109 -2114 -2116 2118 -211E 2123 -2125 -2127 -2129 -212E -2132 -213A 213B -214A -214C -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 23DB -2400 2426 -2440 244A -249C 24E9 -2500 25B6 -25B8 25C0 -25C2 25F7 -2600 266E -2670 269C -26A0 26B1 -2701 2704 -2706 2709 -270C 2727 -2729 274B -274D -274F 2752 -2756 -2758 275E -2761 2767 -2794 -2798 27AF -27B1 27BE -2800 28FF -2B00 2B13 -2CE5 2CEA -2E80 2E99 -2E9B 2EF3 -2F00 2FD5 -2FF0 2FFB -3004 -3012 3013 -3020 -3036 3037 -303E 303F -3190 3191 -3196 319F -31C0 31CF -3200 321E -322A 3243 -3250 -3260 327F -328A 32B0 -32C0 32FE -3300 33FF -4DC0 4DFF -A490 A4C6 -A828 A82B -FDFD -FFE4 -FFE8 -FFED FFEE -FFFC FFFD -10102 -10137 1013F -10179 10189 -103D0 -1D000 1D0F5 -1D100 1D126 -1D12A 1D164 -1D16A 1D16C -1D183 1D184 -1D18C 1D1A9 -1D1AE 1D1DD -1D200 1D241 -1D245 -1D300 1D356 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/SoftDott.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/SoftDott.pl deleted file mode 100644 index 0542df885ef..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/SoftDott.pl +++ /dev/null @@ -1,41 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -029D Soft_Dotted -02B2 Soft_Dotted -03F3 Soft_Dotted -0456 Soft_Dotted -0458 Soft_Dotted -1D62 Soft_Dotted -1D96 Soft_Dotted -1DA4 Soft_Dotted -1DA8 Soft_Dotted -1E2D Soft_Dotted -1ECB Soft_Dotted -2071 Soft_Dotted -2148 2149 Soft_Dotted -1D422 1D423 Soft_Dotted -1D456 1D457 Soft_Dotted -1D48A 1D48B Soft_Dotted -1D4BE 1D4BF Soft_Dotted -1D4F2 1D4F3 Soft_Dotted -1D526 1D527 Soft_Dotted -1D55A 1D55B Soft_Dotted -1D58E 1D58F Soft_Dotted -1D5C2 1D5C3 Soft_Dotted -1D5F6 1D5F7 Soft_Dotted -1D62A 1D62B Soft_Dotted -1D65E 1D65F Soft_Dotted -1D692 1D693 Soft_Dotted -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Space.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Space.pl deleted file mode 100644 index 44b8a618ad8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Space.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{Space} -# -# Meaning: [[:Space:]] -# -return <<'END'; -0009 000D -0020 -0085 -00A0 -1680 -180E -2000 200A -2028 2029 -202F -205F -3000 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/SpacePer.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/SpacePer.pl deleted file mode 100644 index 97281a6f1a6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/SpacePer.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{SpacePerl} -# -# Meaning: \s -# -return <<'END'; -0009 000A -000C 000D -0020 -0085 -00A0 -1680 -180E -2000 200A -2028 2029 -202F -205F -3000 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sterm2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sterm2.pl deleted file mode 100644 index c76da9a15b8..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Sterm2.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{Sterm} (and fuzzy permutations) -# -# Meaning: Extended property 'STerm' -# -return <<'END'; -0021 STerm -002E STerm -003F STerm -055C STerm -055E STerm -0589 STerm -061F STerm -06D4 STerm -0700 0702 STerm -0964 0965 STerm -104A 104B STerm -1362 STerm -1367 1368 STerm -166E STerm -1803 STerm -1809 STerm -1944 1945 STerm -203C 203D STerm -2047 2049 STerm -3002 STerm -FE52 STerm -FE56 FE57 STerm -FF01 STerm -FF0E STerm -FF1F STerm -FF61 STerm -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/SylotiNa.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/SylotiNa.pl deleted file mode 100644 index d95b569f671..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/SylotiNa.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{SylotiNagri} (and fuzzy permutations) -# -# Meaning: Script 'Syloti_Nagri' -# -return <<'END'; -A800 A82B Syloti_Nagri -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Syrc.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Syrc.pl deleted file mode 100644 index 8c7aa69187a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Syrc.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{Syriac} (and fuzzy permutations) -# -# Meaning: Script 'Syriac' -# -return <<'END'; -0700 070D Syriac -070F 074A Syriac -074D 074F Syriac -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Tagb.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Tagb.pl deleted file mode 100644 index 5ea4e4a29d9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Tagb.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/TaiLe.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/TaiLe.pl deleted file mode 100644 index 92d901046dd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/TaiLe.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{TaiLe} (and fuzzy permutations) -# -# Meaning: Script 'Tai_Le' -# -return <<'END'; -1950 196D Tai_Le -1970 1974 Tai_Le -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Taml.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Taml.pl deleted file mode 100644 index 6c4c5fff8d7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Taml.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{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 0BB9 Tamil -0BBE 0BC2 Tamil -0BC6 0BC8 Tamil -0BCA 0BCD Tamil -0BD7 Tamil -0BE6 0BFA Tamil -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Telu.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Telu.pl deleted file mode 100644 index 74de197eeb9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Telu.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Term.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Term.pl deleted file mode 100644 index 124872bd54c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Term.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! - -# -# Binary 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 -05C3 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 -0F08 Terminal_Punctuation -0F0D 0F12 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 -1944 1945 Terminal_Punctuation -203C 203D Terminal_Punctuation -2047 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Terminal.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Terminal.pl deleted file mode 100644 index da5860f1fe3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Terminal.pl +++ /dev/null @@ -1,52 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -05C3 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 -0F08 Terminal_Punctuation -0F0D 0F12 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 -1944 1945 Terminal_Punctuation -203C 203D Terminal_Punctuation -2047 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Tfng.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Tfng.pl deleted file mode 100644 index 4ee12034069..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Tfng.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{Tifinagh} (and fuzzy permutations) -# -# Meaning: Script 'Tifinagh' -# -return <<'END'; -2D30 2D65 Tifinagh -2D6F Tifinagh -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Tglg.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Tglg.pl deleted file mode 100644 index f9d24576279..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Tglg.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Thaa.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Thaa.pl deleted file mode 100644 index 7ab38dc4eab..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Thaa.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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Thai.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Thai.pl deleted file mode 100644 index 03467d4b8ec..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Thai.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{Thai} (and fuzzy permutations) -# -# Meaning: Script 'Thai' -# -return <<'END'; -0E01 0E3A Thai -0E40 0E5B Thai -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Tibt.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Tibt.pl deleted file mode 100644 index aa6be295479..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Tibt.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{Tibetan} (and fuzzy permutations) -# -# Meaning: Script 'Tibetan' -# -return <<'END'; -0F00 0F47 Tibetan -0F49 0F6A Tibetan -0F71 0F8B Tibetan -0F90 0F97 Tibetan -0F99 0FBC Tibetan -0FBE 0FCC Tibetan -0FCF 0FD1 Tibetan -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Title.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Title.pl deleted file mode 100644 index 158a6cd6eb5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/UIdeo.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/UIdeo.pl deleted file mode 100644 index e0629a335d0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/UIdeo.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! - -# -# Binary property 'Unified_Ideograph' -# -return <<'END'; -3400 4DB5 Unified_Ideograph -4E00 9FBB 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ugar.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ugar.pl deleted file mode 100644 index e79e6c67738..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Ugar.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{Ugaritic} (and fuzzy permutations) -# -# Meaning: Script 'Ugaritic' -# -return <<'END'; -10380 1039D Ugaritic -1039F Ugaritic -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/UnifiedI.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/UnifiedI.pl deleted file mode 100644 index 440dc126aae..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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 9FBB 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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Upper.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Upper.pl deleted file mode 100644 index 214ab48efef..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Upper.pl +++ /dev/null @@ -1,488 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -023A 023B -023D 023E -0241 -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 -03F7 -03F9 03FA -03FD 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 -04F6 -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 -2C00 2C2E -2C80 -2C82 -2C84 -2C86 -2C88 -2C8A -2C8C -2C8E -2C90 -2C92 -2C94 -2C96 -2C98 -2C9A -2C9C -2C9E -2CA0 -2CA2 -2CA4 -2CA6 -2CA8 -2CAA -2CAC -2CAE -2CB0 -2CB2 -2CB4 -2CB6 -2CB8 -2CBA -2CBC -2CBE -2CC0 -2CC2 -2CC4 -2CC6 -2CC8 -2CCA -2CCC -2CCE -2CD0 -2CD2 -2CD4 -2CD6 -2CD8 -2CDA -2CDC -2CDE -2CE0 -2CE2 -FF21 FF3A -10400 10427 -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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Uppercas.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Uppercas.pl deleted file mode 100644 index 4778dc3ab52..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Uppercas.pl +++ /dev/null @@ -1,490 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -023A 023B -023D 023E -0241 -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 -03F7 -03F9 03FA -03FD 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 -04F6 -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 -2C00 2C2E -2C80 -2C82 -2C84 -2C86 -2C88 -2C8A -2C8C -2C8E -2C90 -2C92 -2C94 -2C96 -2C98 -2C9A -2C9C -2C9E -2CA0 -2CA2 -2CA4 -2CA6 -2CA8 -2CAA -2CAC -2CAE -2CB0 -2CB2 -2CB4 -2CB6 -2CB8 -2CBA -2CBC -2CBE -2CC0 -2CC2 -2CC4 -2CC6 -2CC8 -2CCA -2CCC -2CCE -2CD0 -2CD2 -2CD4 -2CD6 -2CD8 -2CDA -2CDC -2CDE -2CE0 -2CE2 -FF21 FF3A -10400 10427 -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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/VS.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/VS.pl deleted file mode 100644 index ca505d75531..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/VS.pl +++ /dev/null @@ -1,12 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Binary property 'Variation_Selector' -# -return <<'END'; -180B 180D Variation_Selector -FE00 FE0F Variation_Selector -E0100 E01EF Variation_Selector -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Variatio.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Variatio.pl deleted file mode 100644 index 74173e857ce..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Variatio.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{VariationSelector} (and fuzzy permutations) -# -# Meaning: Extended property 'Variation_Selector' -# -return <<'END'; -180B 180D Variation_Selector -FE00 FE0F Variation_Selector -E0100 E01EF Variation_Selector -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/WSpace.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/WSpace.pl deleted file mode 100644 index 0078091db50..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/WSpace.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! - -# -# Binary property 'White_Space' -# -return <<'END'; -0009 000D White_Space -0020 White_Space -0085 White_Space -00A0 White_Space -1680 White_Space -180E White_Space -2000 200A White_Space -2028 2029 White_Space -202F White_Space -205F White_Space -3000 White_Space -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/WhiteSpa.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/WhiteSpa.pl deleted file mode 100644 index 0284bc05318..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/WhiteSpa.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{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 -180E White_Space -2000 200A White_Space -2028 2029 White_Space -202F White_Space -205F White_Space -3000 White_Space -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Word.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Word.pl deleted file mode 100644 index fcae9e4d565..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Word.pl +++ /dev/null @@ -1,476 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 0241 -0250 02C1 -02C6 02D1 -02E0 02E4 -02EE -0300 036F -037A -0386 -0388 038A -038C -038E 03A1 -03A3 03CE -03D0 03F5 -03F7 0481 -0483 0486 -0488 04CE -04D0 04F9 -0500 050F -0531 0556 -0559 -0561 0587 -0591 05B9 -05BB 05BD -05BF -05C1 05C2 -05C4 05C5 -05C7 -05D0 05EA -05F0 05F2 -0610 0615 -0621 063A -0640 065E -0660 0669 -066E 06D3 -06D5 06DC -06DE 06E8 -06EA 06FC -06FF -0710 074A -074D 076D -0780 07B1 -0901 0939 -093C 094D -0950 0954 -0958 0963 -0966 096F -097D -0981 0983 -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BC 09C4 -09C7 09C8 -09CB 09CE -09D7 -09DC 09DD -09DF 09E3 -09E6 09F1 -09F4 09F9 -0A01 0A03 -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 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABC 0AC5 -0AC7 0AC9 -0ACB 0ACD -0AD0 -0AE0 0AE3 -0AE6 0AEF -0B01 0B03 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3C 0B43 -0B47 0B48 -0B4B 0B4D -0B56 0B57 -0B5C 0B5D -0B5F 0B61 -0B66 0B6F -0B71 -0B82 0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 0BB9 -0BBE 0BC2 -0BC6 0BC8 -0BCA 0BCD -0BD7 -0BE6 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 -0CBC 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 10FA -10FC -1100 1159 -115F 11A2 -11A8 11F9 -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -135F -1369 137C -1380 138F -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 17B3 -17B6 17D3 -17D7 -17DC 17DD -17E0 17E9 -17F0 17F9 -180B 180D -1810 1819 -1820 1877 -1880 18A9 -1900 191C -1920 192B -1930 193B -1946 196D -1970 1974 -1980 19A9 -19B0 19C9 -19D0 19D9 -1A00 1A1B -1D00 1DC3 -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 -2054 -2070 2071 -2074 2079 -207F 2089 -2090 2094 -20D0 20EB -2102 -2107 -210A 2113 -2115 -2119 211D -2124 -2126 -2128 -212A 212D -212F 2131 -2133 2139 -213C 213F -2145 2149 -2153 2183 -2460 249B -24EA 24FF -2776 2793 -2C00 2C2E -2C30 2C5E -2C80 2CE4 -2CFD -2D00 2D25 -2D30 2D65 -2D6F -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -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 9FBB -A000 A48C -A800 A827 -AC00 D7A3 -F900 FA2D -FA30 FA6A -FA70 FAD9 -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 -FF66 FFBE -FFC2 FFC7 -FFCA FFCF -FFD2 FFD7 -FFDA FFDC -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10107 10133 -10140 10178 -1018A -10300 1031E -10320 10323 -10330 1034A -10380 1039D -103A0 103C3 -103C8 103CF -103D1 103D5 -10400 1049D -104A0 104A9 -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 10A03 -10A05 10A06 -10A0C 10A13 -10A15 10A17 -10A19 10A33 -10A38 10A3A -10A3F 10A47 -1D165 1D169 -1D16D 1D172 -1D17B 1D182 -1D185 1D18B -1D1AA 1D1AD -1D242 1D244 -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -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 -E0100 E01EF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/XDigit.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/XDigit.pl deleted file mode 100644 index 62350a4646f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Yiii.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Yiii.pl deleted file mode 100644 index 628bd87ba41..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Yiii.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{Yi} (and fuzzy permutations) -# -# Meaning: Script 'Yi' -# -return <<'END'; -A000 A48C Yi -A490 A4C6 Yi -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Z.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Z.pl deleted file mode 100644 index 361c4a92e23..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Z.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{Z} -# \p{Z} (and fuzzy permutations) -# -# Meaning: Major Category 'Z' -# -return <<'END'; -0020 -00A0 -1680 -180E -2000 200A -2028 2029 -202F -205F -3000 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Zl.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Zl.pl deleted file mode 100644 index ed1819bd008..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Zp.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Zp.pl deleted file mode 100644 index bd18ea4696f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Zs.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Zs.pl deleted file mode 100644 index 32c9497794c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Zs.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{Zs} -# \p{Zs} (and fuzzy permutations) -# -# Meaning: General Category 'Zs' -# -return <<'END'; -0020 -00A0 -1680 -180E -2000 200A -202F -205F -3000 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Zyyy.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Zyyy.pl deleted file mode 100644 index a6eaa6a6887..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/Zyyy.pl +++ /dev/null @@ -1,138 +0,0 @@ -# !!!!!!! DO NOT EDIT 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: Script 'Common' -# -return <<'END'; -0000 0040 Common -005B 0060 Common -007B 00A9 Common -00AB 00B9 Common -00BB 00BF Common -00D7 Common -00F7 Common -02B9 02DF Common -02E5 02FF Common -037E Common -0387 Common -0589 Common -0600 0603 Common -060C Common -061B Common -061F Common -0640 Common -0660 0669 Common -06DD Common -0964 0965 Common -0970 Common -0E3F Common -10FB Common -16EB 16ED Common -1735 1736 Common -2000 200B Common -200E 2063 Common -206A 2070 Common -2074 207E Common -2080 208E Common -20A0 20B5 Common -2100 2125 Common -2127 2129 Common -212C 214C Common -2153 2183 Common -2190 23DB Common -2400 2426 Common -2440 244A Common -2460 269C Common -26A0 26B1 Common -2701 2704 Common -2706 2709 Common -270C 2727 Common -2729 274B Common -274D Common -274F 2752 Common -2756 Common -2758 275E Common -2761 2794 Common -2798 27AF Common -27B1 27BE Common -27C0 27C6 Common -27D0 27EB Common -27F0 27FF Common -2900 2B13 Common -2E00 2E17 Common -2E1C 2E1D Common -2FF0 2FFB Common -3000 3004 Common -3006 Common -3008 3020 Common -3030 3037 Common -303C 303F Common -309B 309C Common -30A0 Common -30FB 30FC Common -3190 319F Common -31C0 31CF Common -3220 3243 Common -3250 325F Common -327E 32FE Common -3300 33FF Common -4DC0 4DFF Common -A700 A716 Common -E000 F8FF Common -FD3E FD3F Common -FDFD Common -FE10 FE19 Common -FE30 FE52 Common -FE54 FE66 Common -FE68 FE6B Common -FEFF Common -FF01 FF20 Common -FF3B FF40 Common -FF5B FF65 Common -FF70 Common -FF9E FF9F Common -FFE0 FFE6 Common -FFE8 FFEE Common -FFF9 FFFD Common -10100 10102 Common -10107 10133 Common -10137 1013F Common -1D000 1D0F5 Common -1D100 1D126 Common -1D12A 1D166 Common -1D16A 1D17A Common -1D183 1D184 Common -1D18C 1D1A9 Common -1D1AE 1D1DD Common -1D300 1D356 Common -1D400 1D454 Common -1D456 1D49C Common -1D49E 1D49F Common -1D4A2 Common -1D4A5 1D4A6 Common -1D4A9 1D4AC Common -1D4AE 1D4B9 Common -1D4BB Common -1D4BD 1D4C3 Common -1D4C5 1D505 Common -1D507 1D50A Common -1D50D 1D514 Common -1D516 1D51C Common -1D51E 1D539 Common -1D53B 1D53E Common -1D540 1D544 Common -1D546 Common -1D54A 1D550 Common -1D552 1D6A5 Common -1D6A8 1D7C9 Common -1D7CE 1D7FF Common -E0001 Common -E0020 E007F Common -F0000 FFFFD Common -100000 10FFFD Common -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/_CanonDC.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/_CanonDC.pl deleted file mode 100644 index 5da8da98335..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/_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/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/_CaseIgn.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/_CaseIgn.pl deleted file mode 100644 index e6c2b6619d3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/_CaseIgn.pl +++ /dev/null @@ -1,138 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 036F -0483 0486 -0591 05B9 -05BB 05BD -05BF -05C1 05C2 -05C4 05C5 -05C7 -0610 0615 -064B 065E -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 -0A01 0A02 -0A3C -0A41 0A42 -0A47 0A48 -0A4B 0A4D -0A70 0A71 -0A81 0A82 -0ABC -0AC1 0AC5 -0AC7 0AC8 -0ACD -0AE2 0AE3 -0B01 -0B3C -0B3F -0B41 0B43 -0B4D -0B56 -0B82 -0BC0 -0BCD -0C3E 0C40 -0C46 0C48 -0C4A 0C4D -0C55 0C56 -0CBC -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 -135F -1712 1714 -1732 1734 -1752 1753 -1772 1773 -17B7 17BD -17C6 -17C9 17D3 -17DD -180B 180D -18A9 -1920 1922 -1927 1928 -1932 -1939 193B -1A17 1A18 -1DC0 1DC3 -2010 -20D0 20DC -20E1 -20E5 20EB -302A 302F -3099 309A -A806 -A80B -A825 A826 -FB1E -FE00 FE0F -FE20 FE23 -10A01 10A03 -10A05 10A06 -10A0C 10A0F -10A38 10A3A -10A3F -1D167 1D169 -1D17B 1D182 -1D185 1D18B -1D1AA 1D1AD -1D242 1D244 -E0100 E01EF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/_CombAbo.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/_CombAbo.pl deleted file mode 100644 index 0bf4915039c..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/gc_sc/_CombAbo.pl +++ /dev/null @@ -1,69 +0,0 @@ -# !!!!!!! DO NOT EDIT 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 -0350 0352 -0357 -035B -0363 036F -0483 0486 -0592 0595 -0597 0599 -059C 05A1 -05A8 05A9 -05AB 05AC -05AF -05C4 -0610 0615 -0653 0654 -0657 065B -065D 065E -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 -135F -17DD -193A -1A17 -1DC0 1DC1 -1DC3 -20D0 20D1 -20D4 20D7 -20DB 20DC -20E1 -20E7 -20E9 -FE20 FE23 -10A0F -10A38 -1D185 1D189 -1D1AA 1D1AD -1D242 1D244 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/L.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/L.pl deleted file mode 100644 index 945fc18394f..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/L.pl +++ /dev/null @@ -1,11 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# HangulSyllableType category 'Leading_Jamo' -# -return <<'END'; -1100 1159 -115F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/LV.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/LV.pl deleted file mode 100644 index 13d12ad5f31..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/LV.pl +++ /dev/null @@ -1,408 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# HangulSyllableType category 'LV_Syllable' -# -return <<'END'; -AC00 -AC1C -AC38 -AC54 -AC70 -AC8C -ACA8 -ACC4 -ACE0 -ACFC -AD18 -AD34 -AD50 -AD6C -AD88 -ADA4 -ADC0 -ADDC -ADF8 -AE14 -AE30 -AE4C -AE68 -AE84 -AEA0 -AEBC -AED8 -AEF4 -AF10 -AF2C -AF48 -AF64 -AF80 -AF9C -AFB8 -AFD4 -AFF0 -B00C -B028 -B044 -B060 -B07C -B098 -B0B4 -B0D0 -B0EC -B108 -B124 -B140 -B15C -B178 -B194 -B1B0 -B1CC -B1E8 -B204 -B220 -B23C -B258 -B274 -B290 -B2AC -B2C8 -B2E4 -B300 -B31C -B338 -B354 -B370 -B38C -B3A8 -B3C4 -B3E0 -B3FC -B418 -B434 -B450 -B46C -B488 -B4A4 -B4C0 -B4DC -B4F8 -B514 -B530 -B54C -B568 -B584 -B5A0 -B5BC -B5D8 -B5F4 -B610 -B62C -B648 -B664 -B680 -B69C -B6B8 -B6D4 -B6F0 -B70C -B728 -B744 -B760 -B77C -B798 -B7B4 -B7D0 -B7EC -B808 -B824 -B840 -B85C -B878 -B894 -B8B0 -B8CC -B8E8 -B904 -B920 -B93C -B958 -B974 -B990 -B9AC -B9C8 -B9E4 -BA00 -BA1C -BA38 -BA54 -BA70 -BA8C -BAA8 -BAC4 -BAE0 -BAFC -BB18 -BB34 -BB50 -BB6C -BB88 -BBA4 -BBC0 -BBDC -BBF8 -BC14 -BC30 -BC4C -BC68 -BC84 -BCA0 -BCBC -BCD8 -BCF4 -BD10 -BD2C -BD48 -BD64 -BD80 -BD9C -BDB8 -BDD4 -BDF0 -BE0C -BE28 -BE44 -BE60 -BE7C -BE98 -BEB4 -BED0 -BEEC -BF08 -BF24 -BF40 -BF5C -BF78 -BF94 -BFB0 -BFCC -BFE8 -C004 -C020 -C03C -C058 -C074 -C090 -C0AC -C0C8 -C0E4 -C100 -C11C -C138 -C154 -C170 -C18C -C1A8 -C1C4 -C1E0 -C1FC -C218 -C234 -C250 -C26C -C288 -C2A4 -C2C0 -C2DC -C2F8 -C314 -C330 -C34C -C368 -C384 -C3A0 -C3BC -C3D8 -C3F4 -C410 -C42C -C448 -C464 -C480 -C49C -C4B8 -C4D4 -C4F0 -C50C -C528 -C544 -C560 -C57C -C598 -C5B4 -C5D0 -C5EC -C608 -C624 -C640 -C65C -C678 -C694 -C6B0 -C6CC -C6E8 -C704 -C720 -C73C -C758 -C774 -C790 -C7AC -C7C8 -C7E4 -C800 -C81C -C838 -C854 -C870 -C88C -C8A8 -C8C4 -C8E0 -C8FC -C918 -C934 -C950 -C96C -C988 -C9A4 -C9C0 -C9DC -C9F8 -CA14 -CA30 -CA4C -CA68 -CA84 -CAA0 -CABC -CAD8 -CAF4 -CB10 -CB2C -CB48 -CB64 -CB80 -CB9C -CBB8 -CBD4 -CBF0 -CC0C -CC28 -CC44 -CC60 -CC7C -CC98 -CCB4 -CCD0 -CCEC -CD08 -CD24 -CD40 -CD5C -CD78 -CD94 -CDB0 -CDCC -CDE8 -CE04 -CE20 -CE3C -CE58 -CE74 -CE90 -CEAC -CEC8 -CEE4 -CF00 -CF1C -CF38 -CF54 -CF70 -CF8C -CFA8 -CFC4 -CFE0 -CFFC -D018 -D034 -D050 -D06C -D088 -D0A4 -D0C0 -D0DC -D0F8 -D114 -D130 -D14C -D168 -D184 -D1A0 -D1BC -D1D8 -D1F4 -D210 -D22C -D248 -D264 -D280 -D29C -D2B8 -D2D4 -D2F0 -D30C -D328 -D344 -D360 -D37C -D398 -D3B4 -D3D0 -D3EC -D408 -D424 -D440 -D45C -D478 -D494 -D4B0 -D4CC -D4E8 -D504 -D520 -D53C -D558 -D574 -D590 -D5AC -D5C8 -D5E4 -D600 -D61C -D638 -D654 -D670 -D68C -D6A8 -D6C4 -D6E0 -D6FC -D718 -D734 -D750 -D76C -D788 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/LVT.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/LVT.pl deleted file mode 100644 index c429e0216ee..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/LVT.pl +++ /dev/null @@ -1,408 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# HangulSyllableType category 'LVT_Syllable' -# -return <<'END'; -AC01 AC1B -AC1D AC37 -AC39 AC53 -AC55 AC6F -AC71 AC8B -AC8D ACA7 -ACA9 ACC3 -ACC5 ACDF -ACE1 ACFB -ACFD AD17 -AD19 AD33 -AD35 AD4F -AD51 AD6B -AD6D AD87 -AD89 ADA3 -ADA5 ADBF -ADC1 ADDB -ADDD ADF7 -ADF9 AE13 -AE15 AE2F -AE31 AE4B -AE4D AE67 -AE69 AE83 -AE85 AE9F -AEA1 AEBB -AEBD AED7 -AED9 AEF3 -AEF5 AF0F -AF11 AF2B -AF2D AF47 -AF49 AF63 -AF65 AF7F -AF81 AF9B -AF9D AFB7 -AFB9 AFD3 -AFD5 AFEF -AFF1 B00B -B00D B027 -B029 B043 -B045 B05F -B061 B07B -B07D B097 -B099 B0B3 -B0B5 B0CF -B0D1 B0EB -B0ED B107 -B109 B123 -B125 B13F -B141 B15B -B15D B177 -B179 B193 -B195 B1AF -B1B1 B1CB -B1CD B1E7 -B1E9 B203 -B205 B21F -B221 B23B -B23D B257 -B259 B273 -B275 B28F -B291 B2AB -B2AD B2C7 -B2C9 B2E3 -B2E5 B2FF -B301 B31B -B31D B337 -B339 B353 -B355 B36F -B371 B38B -B38D B3A7 -B3A9 B3C3 -B3C5 B3DF -B3E1 B3FB -B3FD B417 -B419 B433 -B435 B44F -B451 B46B -B46D B487 -B489 B4A3 -B4A5 B4BF -B4C1 B4DB -B4DD B4F7 -B4F9 B513 -B515 B52F -B531 B54B -B54D B567 -B569 B583 -B585 B59F -B5A1 B5BB -B5BD B5D7 -B5D9 B5F3 -B5F5 B60F -B611 B62B -B62D B647 -B649 B663 -B665 B67F -B681 B69B -B69D B6B7 -B6B9 B6D3 -B6D5 B6EF -B6F1 B70B -B70D B727 -B729 B743 -B745 B75F -B761 B77B -B77D B797 -B799 B7B3 -B7B5 B7CF -B7D1 B7EB -B7ED B807 -B809 B823 -B825 B83F -B841 B85B -B85D B877 -B879 B893 -B895 B8AF -B8B1 B8CB -B8CD B8E7 -B8E9 B903 -B905 B91F -B921 B93B -B93D B957 -B959 B973 -B975 B98F -B991 B9AB -B9AD B9C7 -B9C9 B9E3 -B9E5 B9FF -BA01 BA1B -BA1D BA37 -BA39 BA53 -BA55 BA6F -BA71 BA8B -BA8D BAA7 -BAA9 BAC3 -BAC5 BADF -BAE1 BAFB -BAFD BB17 -BB19 BB33 -BB35 BB4F -BB51 BB6B -BB6D BB87 -BB89 BBA3 -BBA5 BBBF -BBC1 BBDB -BBDD BBF7 -BBF9 BC13 -BC15 BC2F -BC31 BC4B -BC4D BC67 -BC69 BC83 -BC85 BC9F -BCA1 BCBB -BCBD BCD7 -BCD9 BCF3 -BCF5 BD0F -BD11 BD2B -BD2D BD47 -BD49 BD63 -BD65 BD7F -BD81 BD9B -BD9D BDB7 -BDB9 BDD3 -BDD5 BDEF -BDF1 BE0B -BE0D BE27 -BE29 BE43 -BE45 BE5F -BE61 BE7B -BE7D BE97 -BE99 BEB3 -BEB5 BECF -BED1 BEEB -BEED BF07 -BF09 BF23 -BF25 BF3F -BF41 BF5B -BF5D BF77 -BF79 BF93 -BF95 BFAF -BFB1 BFCB -BFCD BFE7 -BFE9 C003 -C005 C01F -C021 C03B -C03D C057 -C059 C073 -C075 C08F -C091 C0AB -C0AD C0C7 -C0C9 C0E3 -C0E5 C0FF -C101 C11B -C11D C137 -C139 C153 -C155 C16F -C171 C18B -C18D C1A7 -C1A9 C1C3 -C1C5 C1DF -C1E1 C1FB -C1FD C217 -C219 C233 -C235 C24F -C251 C26B -C26D C287 -C289 C2A3 -C2A5 C2BF -C2C1 C2DB -C2DD C2F7 -C2F9 C313 -C315 C32F -C331 C34B -C34D C367 -C369 C383 -C385 C39F -C3A1 C3BB -C3BD C3D7 -C3D9 C3F3 -C3F5 C40F -C411 C42B -C42D C447 -C449 C463 -C465 C47F -C481 C49B -C49D C4B7 -C4B9 C4D3 -C4D5 C4EF -C4F1 C50B -C50D C527 -C529 C543 -C545 C55F -C561 C57B -C57D C597 -C599 C5B3 -C5B5 C5CF -C5D1 C5EB -C5ED C607 -C609 C623 -C625 C63F -C641 C65B -C65D C677 -C679 C693 -C695 C6AF -C6B1 C6CB -C6CD C6E7 -C6E9 C703 -C705 C71F -C721 C73B -C73D C757 -C759 C773 -C775 C78F -C791 C7AB -C7AD C7C7 -C7C9 C7E3 -C7E5 C7FF -C801 C81B -C81D C837 -C839 C853 -C855 C86F -C871 C88B -C88D C8A7 -C8A9 C8C3 -C8C5 C8DF -C8E1 C8FB -C8FD C917 -C919 C933 -C935 C94F -C951 C96B -C96D C987 -C989 C9A3 -C9A5 C9BF -C9C1 C9DB -C9DD C9F7 -C9F9 CA13 -CA15 CA2F -CA31 CA4B -CA4D CA67 -CA69 CA83 -CA85 CA9F -CAA1 CABB -CABD CAD7 -CAD9 CAF3 -CAF5 CB0F -CB11 CB2B -CB2D CB47 -CB49 CB63 -CB65 CB7F -CB81 CB9B -CB9D CBB7 -CBB9 CBD3 -CBD5 CBEF -CBF1 CC0B -CC0D CC27 -CC29 CC43 -CC45 CC5F -CC61 CC7B -CC7D CC97 -CC99 CCB3 -CCB5 CCCF -CCD1 CCEB -CCED CD07 -CD09 CD23 -CD25 CD3F -CD41 CD5B -CD5D CD77 -CD79 CD93 -CD95 CDAF -CDB1 CDCB -CDCD CDE7 -CDE9 CE03 -CE05 CE1F -CE21 CE3B -CE3D CE57 -CE59 CE73 -CE75 CE8F -CE91 CEAB -CEAD CEC7 -CEC9 CEE3 -CEE5 CEFF -CF01 CF1B -CF1D CF37 -CF39 CF53 -CF55 CF6F -CF71 CF8B -CF8D CFA7 -CFA9 CFC3 -CFC5 CFDF -CFE1 CFFB -CFFD D017 -D019 D033 -D035 D04F -D051 D06B -D06D D087 -D089 D0A3 -D0A5 D0BF -D0C1 D0DB -D0DD D0F7 -D0F9 D113 -D115 D12F -D131 D14B -D14D D167 -D169 D183 -D185 D19F -D1A1 D1BB -D1BD D1D7 -D1D9 D1F3 -D1F5 D20F -D211 D22B -D22D D247 -D249 D263 -D265 D27F -D281 D29B -D29D D2B7 -D2B9 D2D3 -D2D5 D2EF -D2F1 D30B -D30D D327 -D329 D343 -D345 D35F -D361 D37B -D37D D397 -D399 D3B3 -D3B5 D3CF -D3D1 D3EB -D3ED D407 -D409 D423 -D425 D43F -D441 D45B -D45D D477 -D479 D493 -D495 D4AF -D4B1 D4CB -D4CD D4E7 -D4E9 D503 -D505 D51F -D521 D53B -D53D D557 -D559 D573 -D575 D58F -D591 D5AB -D5AD D5C7 -D5C9 D5E3 -D5E5 D5FF -D601 D61B -D61D D637 -D639 D653 -D655 D66F -D671 D68B -D68D D6A7 -D6A9 D6C3 -D6C5 D6DF -D6E1 D6FB -D6FD D717 -D719 D733 -D735 D74F -D751 D76B -D76D D787 -D789 D7A3 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/T.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/T.pl deleted file mode 100644 index 7a319da9208..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/T.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# HangulSyllableType category 'Trailing_Jamo' -# -return <<'END'; -11A8 11F9 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/V.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/V.pl deleted file mode 100644 index a15ff227215..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/hst/V.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# HangulSyllableType category 'Vowel_Jamo' -# -return <<'END'; -1160 11A2 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/jt/C.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/jt/C.pl deleted file mode 100644 index ff7d7801b8d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/jt/C.pl +++ /dev/null @@ -1,11 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# JoiningType category 'Join_Causing' -# -return <<'END'; -0640 -200D -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/jt/D.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/jt/D.pl deleted file mode 100644 index b5fe86b95c5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/jt/D.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! - -# -# JoiningType category 'Dual_Joining' -# -return <<'END'; -0626 -0628 -062A 062E -0633 063A -0641 0647 -0649 064A -066E 066F -0678 0687 -069A 06BF -06C1 06C2 -06CC -06CE -06D0 06D1 -06FA 06FC -06FF -0712 0714 -071A 071D -071F 0727 -0729 -072B -072D 072E -074E 0758 -075C 076A -076D -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/jt/R.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/jt/R.pl deleted file mode 100644 index 5ab772036f0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/jt/R.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! - -# -# JoiningType category 'Right_Joining' -# -return <<'END'; -0622 0625 -0627 -0629 -062F 0632 -0648 -0671 0673 -0675 0677 -0688 0699 -06C0 -06C3 06CB -06CD -06CF -06D2 06D3 -06D5 -06EE 06EF -0710 -0715 0719 -071E -0728 -072A -072C -072F -074D -0759 075B -076B 076C -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/jt/U.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/jt/U.pl deleted file mode 100644 index 5d344f64f3a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/jt/U.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! - -# -# JoiningType category 'Non_Joining' -# -return <<'END'; -0600 0603 -060B -0621 -0674 -06DD -200C -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/AI.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/AI.pl deleted file mode 100644 index 2837c8eca14..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/AI.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! - -# -# Linebreak category 'Ambiguous' -# -return <<'END'; -00A1 -00A7 00A8 -00AA -00B2 00B3 -00B6 00BA -00BC 00BF -00D7 -00F7 -02C7 -02C9 02CB -02CD -02D0 -02D8 02DB -02DD -2015 2016 -2020 2021 -203B -2074 -207F -2081 2084 -2105 -2113 -2121 2122 -212B -2154 2155 -215B -215E -2160 216B -2170 2179 -2190 2199 -21D2 -21D4 -2200 -2202 2203 -2207 2208 -220B -220F -2211 -2215 -221A -221D 2220 -2223 -2225 -2227 222C -222E -2234 2237 -223C 223D -2248 -224C -2252 -2260 2261 -2264 2267 -226A 226B -226E 226F -2282 2283 -2286 2287 -2295 -2299 -22A5 -22BF -2312 -2460 24FE -2500 254B -2550 2574 -2580 258F -2592 2595 -25A0 25A1 -25A3 25A9 -25B2 25B3 -25B6 25B7 -25BC 25BD -25C0 25C1 -25C6 25C8 -25CB -25CE 25D1 -25E2 25E5 -25EF -2605 2606 -2609 -260E 260F -2614 2617 -261C -261E -2640 -2642 -2660 2661 -2663 2665 -2667 266A -266C 266D -266F -2776 2793 -FFFD -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/AL.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/AL.pl deleted file mode 100644 index 7263f9ca1e6..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/AL.pl +++ /dev/null @@ -1,449 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Alphabetic' -# -return <<'END'; -0023 -0026 -002A -003C 003E -0040 005A -005E 007A -007E -00A6 -00A9 -00AC -00AE 00AF -00B5 -00C0 00D6 -00D8 00F6 -00F8 0241 -0250 02C6 -02CE 02CF -02D1 02D7 -02DC -02DE 02FF -0374 0375 -037A -0384 038A -038C -038E 03A1 -03A3 03CE -03D0 0482 -048A 04CE -04D0 04F9 -0500 050F -0531 0556 -0559 055F -0561 0587 -05BE -05C0 -05C3 -05D0 05EA -05F0 05F4 -0600 0603 -060E 060F -0621 063A -0640 064A -066D 066F -0671 06D3 -06D5 -06DD -06E5 06E6 -06E9 -06EE 06EF -06FA 070D -070F 0710 -0712 072F -074D 076D -0780 07A5 -07B1 -0904 0939 -093D -0950 -0958 0961 -0970 -097D -0985 098C -098F 0990 -0993 09A8 -09AA 09B0 -09B2 -09B6 09B9 -09BD -09CE -09DC 09DD -09DF 09E1 -09F0 09F1 -09F4 09FA -0A05 0A0A -0A0F 0A10 -0A13 0A28 -0A2A 0A30 -0A32 0A33 -0A35 0A36 -0A38 0A39 -0A59 0A5C -0A5E -0A72 0A74 -0A85 0A8D -0A8F 0A91 -0A93 0AA8 -0AAA 0AB0 -0AB2 0AB3 -0AB5 0AB9 -0ABD -0AD0 -0AE0 0AE1 -0B05 0B0C -0B0F 0B10 -0B13 0B28 -0B2A 0B30 -0B32 0B33 -0B35 0B39 -0B3D -0B5C 0B5D -0B5F 0B61 -0B70 0B71 -0B83 -0B85 0B8A -0B8E 0B90 -0B92 0B95 -0B99 0B9A -0B9C -0B9E 0B9F -0BA3 0BA4 -0BA8 0BAA -0BAE 0BB9 -0BF0 0BF8 -0BFA -0C05 0C0C -0C0E 0C10 -0C12 0C28 -0C2A 0C33 -0C35 0C39 -0C60 0C61 -0C85 0C8C -0C8E 0C90 -0C92 0CA8 -0CAA 0CB3 -0CB5 0CB9 -0CBD -0CDE -0CE0 0CE1 -0D05 0D0C -0D0E 0D10 -0D12 0D28 -0D2A 0D39 -0D60 0D61 -0D85 0D96 -0D9A 0DB1 -0DB3 0DBB -0DBD -0DC0 0DC6 -0DF4 -0E4F -0F00 -0F05 -0F13 -0F15 0F17 -0F1A 0F1F -0F2A 0F33 -0F36 -0F38 -0F40 0F47 -0F49 0F6A -0F88 0F8B -0FC0 0FC5 -0FC7 0FCC -0FCF -104C 104F -10A0 10C5 -10D0 10FC -1200 1248 -124A 124D -1250 1256 -1258 -125A 125D -1260 1288 -128A 128D -1290 12B0 -12B2 12B5 -12B8 12BE -12C0 -12C2 12C5 -12C8 12D6 -12D8 1310 -1312 1315 -1318 135A -1360 -1362 137C -1380 1399 -13A0 13F4 -1401 1676 -1681 169A -16A0 16EA -16EE 16F0 -1700 170C -170E 1711 -1720 1731 -1735 1736 -1740 1751 -1760 176C -176E 1770 -17DC -17F0 17F9 -1800 1801 -1807 -180A -1820 1877 -1880 18A8 -1900 191C -1940 -1950 196D -1970 1974 -1980 19A9 -19C1 19C7 -19DE 1A16 -1A1F -1D00 1DBF -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 -2017 -2022 2023 -2038 -203D 2043 -2047 2055 -2057 -205C -2061 2063 -2070 2071 -2075 207C -2080 -2085 208C -2090 2094 -2100 2102 -2104 -2106 2108 -210A 2112 -2114 2115 -2117 2120 -2123 212A -212C 214C -2153 -2156 215A -215C 215D -215F -216C 216F -217A 2183 -219A 21D1 -21D3 -21D5 21FF -2201 -2204 2206 -2209 220A -220C 220E -2210 -2214 -2216 2219 -221B 221C -2221 2222 -2224 -2226 -222D -222F 2233 -2238 223B -223E 2247 -2249 224B -224D 2251 -2253 225F -2262 2263 -2268 2269 -226C 226D -2270 2281 -2284 2285 -2288 2294 -2296 2298 -229A 22A4 -22A6 22BE -22C0 2311 -2313 2328 -232B 23B3 -23B7 23DB -2400 2426 -2440 244A -24FF -254C 254F -2575 257F -2590 2591 -2596 259F -25A2 -25AA 25B1 -25B4 25B5 -25B8 25BB -25BE 25BF -25C2 25C5 -25C9 25CA -25CC 25CD -25D2 25E1 -25E6 25EE -25F0 2604 -2607 2608 -260A 260D -2610 2613 -2618 261B -261D -261F 263F -2641 -2643 265F -2662 -2666 -266B -266E -2670 269C -26A0 26B1 -2701 2704 -2706 2709 -270C 2727 -2729 274B -274D -274F 2752 -2756 -2758 275A -2761 -2764 2767 -2794 -2798 27AF -27B1 27BE -27C0 27C4 -27D0 27E5 -27F0 2982 -2999 29D7 -29DC 29FB -29FE 2B13 -2C00 2C2E -2C30 2C5E -2C80 2CEA -2CFD -2D00 2D25 -2D30 2D65 -2D6F -2D80 2D96 -2DA0 2DA6 -2DA8 2DAE -2DB0 2DB6 -2DB8 2DBE -2DC0 2DC6 -2DC8 2DCE -2DD0 2DD6 -2DD8 2DDE -2E16 -4DC0 4DFF -A700 A716 -A800 A801 -A803 A805 -A807 A80A -A80C A822 -A828 A82B -FB00 FB06 -FB13 FB17 -FB1D -FB1F FB36 -FB38 FB3C -FB3E -FB40 FB41 -FB43 FB44 -FB46 FBB1 -FBD3 FD3D -FD50 FD8F -FD92 FDC7 -FDF0 FDFB -FDFD -FE70 FE74 -FE76 FEFC -FF66 -FF71 FF9D -FFA0 FFBE -FFC2 FFC7 -FFCA FFCF -FFD2 FFD7 -FFDA FFDC -FFE8 FFEE -10000 1000B -1000D 10026 -10028 1003A -1003C 1003D -1003F 1004D -10050 1005D -10080 100FA -10107 10133 -10137 1018A -10300 1031E -10320 10323 -10330 1034A -10380 1039D -103A0 103C3 -103C8 103D5 -10400 1049D -10800 10805 -10808 -1080A 10835 -10837 10838 -1083C -1083F -10A00 -10A10 10A13 -10A15 10A17 -10A19 10A33 -10A40 10A47 -10A58 -1D000 1D0F5 -1D100 1D126 -1D12A 1D164 -1D16A 1D16C -1D183 1D184 -1D18C 1D1A9 -1D1AE 1D1DD -1D200 1D241 -1D245 -1D300 1D356 -1D400 1D454 -1D456 1D49C -1D49E 1D49F -1D4A2 -1D4A5 1D4A6 -1D4A9 1D4AC -1D4AE 1D4B9 -1D4BB -1D4BD 1D4C3 -1D4C5 1D505 -1D507 1D50A -1D50D 1D514 -1D516 1D51C -1D51E 1D539 -1D53B 1D53E -1D540 1D544 -1D546 -1D54A 1D550 -1D552 1D6A5 -1D6A8 1D7C9 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/B2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/B2.pl deleted file mode 100644 index d00f5791082..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/B2.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Break_Both' -# -return <<'END'; -2014 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/BA.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/BA.pl deleted file mode 100644 index 48d2f10faf0..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/BA.pl +++ /dev/null @@ -1,45 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Break_After' -# -return <<'END'; -0009 -007C -00AD -058A -0964 0965 -0E5A 0E5B -0F0B -0F34 -0F7F -0F85 -0FBE 0FBF -104A 104B -1361 -1680 -16EB 16ED -17D4 17D5 -17D8 -17DA -1802 1805 -1808 1809 -1A1E -2000 2006 -2008 200A -2010 -2012 2013 -2027 -2056 -2058 205B -205D 205F -2CF9 2CFC -2CFE 2CFF -2E0E 2E15 -2E17 -10100 10102 -1039F -10A50 10A57 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/BB.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/BB.pl deleted file mode 100644 index 497a4b89835..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/BB.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! - -# -# Linebreak category 'Break_Before' -# -return <<'END'; -00B4 -02C8 -02CC -0F01 0F04 -0F06 0F07 -0F09 0F0A -0FD0 0FD1 -1806 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/BK.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/BK.pl deleted file mode 100644 index c55b1be7ebd..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/BK.pl +++ /dev/null @@ -1,11 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Mandatory_Break' -# -return <<'END'; -000C -2028 2029 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/CB.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/CB.pl deleted file mode 100644 index eb229b7bf98..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/CB.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Contingent_Break' -# -return <<'END'; -FFFC -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/CL.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/CL.pl deleted file mode 100644 index 337639a26a5..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/CL.pl +++ /dev/null @@ -1,80 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Close_Punctuation' -# -return <<'END'; -0029 -005D -007D -0F3B -0F3D -169C -2046 -207E -208E -232A -23B5 -2769 -276B -276D -276F -2771 -2773 -2775 -27C6 -27E7 -27E9 -27EB -2984 -2986 -2988 -298A -298C -298E -2990 -2992 -2994 -2996 -2998 -29D9 -29DB -29FD -3001 3002 -3009 -300B -300D -300F -3011 -3015 -3017 -3019 -301B -301E 301F -FD3F -FE11 FE12 -FE18 -FE36 -FE38 -FE3A -FE3C -FE3E -FE40 -FE42 -FE44 -FE48 -FE50 -FE52 -FE5A -FE5C -FE5E -FF09 -FF0C -FF0E -FF3D -FF5D -FF60 FF61 -FF63 FF64 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/CM.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/CM.pl deleted file mode 100644 index 56aff56a330..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/CM.pl +++ /dev/null @@ -1,155 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Combining_Mark' -# -return <<'END'; -0000 0008 -000B -000E 001F -007F 0084 -0086 009F -0300 034E -0350 035C -0363 036F -0483 0486 -0488 0489 -0591 05B9 -05BB 05BD -05BF -05C1 05C2 -05C4 05C5 -05C7 -0610 0615 -064B 065E -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 -0A01 0A03 -0A3C -0A3E 0A42 -0A47 0A48 -0A4B 0A4D -0A70 0A71 -0A81 0A83 -0ABC -0ABE 0AC5 -0AC7 0AC9 -0ACB 0ACD -0AE2 0AE3 -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 -0CBC -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 0F7E -0F80 0F84 -0F86 0F87 -0F90 0F97 -0F99 0FBC -0FC6 -102C 1032 -1036 1039 -1056 1059 -135F -1712 1714 -1732 1734 -1752 1753 -1772 1773 -17B6 17D3 -17DD -180B 180D -18A9 -1920 192B -1930 193B -19B0 19C0 -19C8 19C9 -1A17 1A1B -1DC0 1DC3 -200C 200F -202A 202E -206A 206F -20D0 20EB -302A 302F -3099 309A -A802 -A806 -A80B -A823 A827 -FB1E -FE00 FE0F -FE20 FE23 -FFF9 FFFB -10A01 10A03 -10A05 10A06 -10A0C 10A0F -10A38 10A3A -10A3F -1D165 1D169 -1D16D 1D182 -1D185 1D18B -1D1AA 1D1AD -1D242 1D244 -E0001 -E0020 E007F -E0100 E01EF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/CR.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/CR.pl deleted file mode 100644 index b4c096404b2..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/CR.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Carriage_Return' -# -return <<'END'; -000D -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/EX.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/EX.pl deleted file mode 100644 index c459ef107a4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/EX.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! - -# -# Linebreak category 'Exclamation' -# -return <<'END'; -0021 -003F -05C6 -060C -061B -061E 061F -066A -06D4 -0F0D 0F11 -0F14 -1944 1945 -2762 2763 -FE15 FE16 -FE56 FE57 -FF01 -FF1F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/GL.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/GL.pl deleted file mode 100644 index 5ec8b1513d4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/GL.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! - -# -# Linebreak category 'Glue' -# -return <<'END'; -00A0 -034F -035D 0362 -0F08 -0F0C -0F12 -180E -2007 -2011 -202F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/H2.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/H2.pl deleted file mode 100644 index c4b8a0a65eb..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/H2.pl +++ /dev/null @@ -1,408 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'H2' -# -return <<'END'; -AC00 -AC1C -AC38 -AC54 -AC70 -AC8C -ACA8 -ACC4 -ACE0 -ACFC -AD18 -AD34 -AD50 -AD6C -AD88 -ADA4 -ADC0 -ADDC -ADF8 -AE14 -AE30 -AE4C -AE68 -AE84 -AEA0 -AEBC -AED8 -AEF4 -AF10 -AF2C -AF48 -AF64 -AF80 -AF9C -AFB8 -AFD4 -AFF0 -B00C -B028 -B044 -B060 -B07C -B098 -B0B4 -B0D0 -B0EC -B108 -B124 -B140 -B15C -B178 -B194 -B1B0 -B1CC -B1E8 -B204 -B220 -B23C -B258 -B274 -B290 -B2AC -B2C8 -B2E4 -B300 -B31C -B338 -B354 -B370 -B38C -B3A8 -B3C4 -B3E0 -B3FC -B418 -B434 -B450 -B46C -B488 -B4A4 -B4C0 -B4DC -B4F8 -B514 -B530 -B54C -B568 -B584 -B5A0 -B5BC -B5D8 -B5F4 -B610 -B62C -B648 -B664 -B680 -B69C -B6B8 -B6D4 -B6F0 -B70C -B728 -B744 -B760 -B77C -B798 -B7B4 -B7D0 -B7EC -B808 -B824 -B840 -B85C -B878 -B894 -B8B0 -B8CC -B8E8 -B904 -B920 -B93C -B958 -B974 -B990 -B9AC -B9C8 -B9E4 -BA00 -BA1C -BA38 -BA54 -BA70 -BA8C -BAA8 -BAC4 -BAE0 -BAFC -BB18 -BB34 -BB50 -BB6C -BB88 -BBA4 -BBC0 -BBDC -BBF8 -BC14 -BC30 -BC4C -BC68 -BC84 -BCA0 -BCBC -BCD8 -BCF4 -BD10 -BD2C -BD48 -BD64 -BD80 -BD9C -BDB8 -BDD4 -BDF0 -BE0C -BE28 -BE44 -BE60 -BE7C -BE98 -BEB4 -BED0 -BEEC -BF08 -BF24 -BF40 -BF5C -BF78 -BF94 -BFB0 -BFCC -BFE8 -C004 -C020 -C03C -C058 -C074 -C090 -C0AC -C0C8 -C0E4 -C100 -C11C -C138 -C154 -C170 -C18C -C1A8 -C1C4 -C1E0 -C1FC -C218 -C234 -C250 -C26C -C288 -C2A4 -C2C0 -C2DC -C2F8 -C314 -C330 -C34C -C368 -C384 -C3A0 -C3BC -C3D8 -C3F4 -C410 -C42C -C448 -C464 -C480 -C49C -C4B8 -C4D4 -C4F0 -C50C -C528 -C544 -C560 -C57C -C598 -C5B4 -C5D0 -C5EC -C608 -C624 -C640 -C65C -C678 -C694 -C6B0 -C6CC -C6E8 -C704 -C720 -C73C -C758 -C774 -C790 -C7AC -C7C8 -C7E4 -C800 -C81C -C838 -C854 -C870 -C88C -C8A8 -C8C4 -C8E0 -C8FC -C918 -C934 -C950 -C96C -C988 -C9A4 -C9C0 -C9DC -C9F8 -CA14 -CA30 -CA4C -CA68 -CA84 -CAA0 -CABC -CAD8 -CAF4 -CB10 -CB2C -CB48 -CB64 -CB80 -CB9C -CBB8 -CBD4 -CBF0 -CC0C -CC28 -CC44 -CC60 -CC7C -CC98 -CCB4 -CCD0 -CCEC -CD08 -CD24 -CD40 -CD5C -CD78 -CD94 -CDB0 -CDCC -CDE8 -CE04 -CE20 -CE3C -CE58 -CE74 -CE90 -CEAC -CEC8 -CEE4 -CF00 -CF1C -CF38 -CF54 -CF70 -CF8C -CFA8 -CFC4 -CFE0 -CFFC -D018 -D034 -D050 -D06C -D088 -D0A4 -D0C0 -D0DC -D0F8 -D114 -D130 -D14C -D168 -D184 -D1A0 -D1BC -D1D8 -D1F4 -D210 -D22C -D248 -D264 -D280 -D29C -D2B8 -D2D4 -D2F0 -D30C -D328 -D344 -D360 -D37C -D398 -D3B4 -D3D0 -D3EC -D408 -D424 -D440 -D45C -D478 -D494 -D4B0 -D4CC -D4E8 -D504 -D520 -D53C -D558 -D574 -D590 -D5AC -D5C8 -D5E4 -D600 -D61C -D638 -D654 -D670 -D68C -D6A8 -D6C4 -D6E0 -D6FC -D718 -D734 -D750 -D76C -D788 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/H3.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/H3.pl deleted file mode 100644 index fdb4a80a8b9..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/H3.pl +++ /dev/null @@ -1,408 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'H3' -# -return <<'END'; -AC01 AC1B -AC1D AC37 -AC39 AC53 -AC55 AC6F -AC71 AC8B -AC8D ACA7 -ACA9 ACC3 -ACC5 ACDF -ACE1 ACFB -ACFD AD17 -AD19 AD33 -AD35 AD4F -AD51 AD6B -AD6D AD87 -AD89 ADA3 -ADA5 ADBF -ADC1 ADDB -ADDD ADF7 -ADF9 AE13 -AE15 AE2F -AE31 AE4B -AE4D AE67 -AE69 AE83 -AE85 AE9F -AEA1 AEBB -AEBD AED7 -AED9 AEF3 -AEF5 AF0F -AF11 AF2B -AF2D AF47 -AF49 AF63 -AF65 AF7F -AF81 AF9B -AF9D AFB7 -AFB9 AFD3 -AFD5 AFEF -AFF1 B00B -B00D B027 -B029 B043 -B045 B05F -B061 B07B -B07D B097 -B099 B0B3 -B0B5 B0CF -B0D1 B0EB -B0ED B107 -B109 B123 -B125 B13F -B141 B15B -B15D B177 -B179 B193 -B195 B1AF -B1B1 B1CB -B1CD B1E7 -B1E9 B203 -B205 B21F -B221 B23B -B23D B257 -B259 B273 -B275 B28F -B291 B2AB -B2AD B2C7 -B2C9 B2E3 -B2E5 B2FF -B301 B31B -B31D B337 -B339 B353 -B355 B36F -B371 B38B -B38D B3A7 -B3A9 B3C3 -B3C5 B3DF -B3E1 B3FB -B3FD B417 -B419 B433 -B435 B44F -B451 B46B -B46D B487 -B489 B4A3 -B4A5 B4BF -B4C1 B4DB -B4DD B4F7 -B4F9 B513 -B515 B52F -B531 B54B -B54D B567 -B569 B583 -B585 B59F -B5A1 B5BB -B5BD B5D7 -B5D9 B5F3 -B5F5 B60F -B611 B62B -B62D B647 -B649 B663 -B665 B67F -B681 B69B -B69D B6B7 -B6B9 B6D3 -B6D5 B6EF -B6F1 B70B -B70D B727 -B729 B743 -B745 B75F -B761 B77B -B77D B797 -B799 B7B3 -B7B5 B7CF -B7D1 B7EB -B7ED B807 -B809 B823 -B825 B83F -B841 B85B -B85D B877 -B879 B893 -B895 B8AF -B8B1 B8CB -B8CD B8E7 -B8E9 B903 -B905 B91F -B921 B93B -B93D B957 -B959 B973 -B975 B98F -B991 B9AB -B9AD B9C7 -B9C9 B9E3 -B9E5 B9FF -BA01 BA1B -BA1D BA37 -BA39 BA53 -BA55 BA6F -BA71 BA8B -BA8D BAA7 -BAA9 BAC3 -BAC5 BADF -BAE1 BAFB -BAFD BB17 -BB19 BB33 -BB35 BB4F -BB51 BB6B -BB6D BB87 -BB89 BBA3 -BBA5 BBBF -BBC1 BBDB -BBDD BBF7 -BBF9 BC13 -BC15 BC2F -BC31 BC4B -BC4D BC67 -BC69 BC83 -BC85 BC9F -BCA1 BCBB -BCBD BCD7 -BCD9 BCF3 -BCF5 BD0F -BD11 BD2B -BD2D BD47 -BD49 BD63 -BD65 BD7F -BD81 BD9B -BD9D BDB7 -BDB9 BDD3 -BDD5 BDEF -BDF1 BE0B -BE0D BE27 -BE29 BE43 -BE45 BE5F -BE61 BE7B -BE7D BE97 -BE99 BEB3 -BEB5 BECF -BED1 BEEB -BEED BF07 -BF09 BF23 -BF25 BF3F -BF41 BF5B -BF5D BF77 -BF79 BF93 -BF95 BFAF -BFB1 BFCB -BFCD BFE7 -BFE9 C003 -C005 C01F -C021 C03B -C03D C057 -C059 C073 -C075 C08F -C091 C0AB -C0AD C0C7 -C0C9 C0E3 -C0E5 C0FF -C101 C11B -C11D C137 -C139 C153 -C155 C16F -C171 C18B -C18D C1A7 -C1A9 C1C3 -C1C5 C1DF -C1E1 C1FB -C1FD C217 -C219 C233 -C235 C24F -C251 C26B -C26D C287 -C289 C2A3 -C2A5 C2BF -C2C1 C2DB -C2DD C2F7 -C2F9 C313 -C315 C32F -C331 C34B -C34D C367 -C369 C383 -C385 C39F -C3A1 C3BB -C3BD C3D7 -C3D9 C3F3 -C3F5 C40F -C411 C42B -C42D C447 -C449 C463 -C465 C47F -C481 C49B -C49D C4B7 -C4B9 C4D3 -C4D5 C4EF -C4F1 C50B -C50D C527 -C529 C543 -C545 C55F -C561 C57B -C57D C597 -C599 C5B3 -C5B5 C5CF -C5D1 C5EB -C5ED C607 -C609 C623 -C625 C63F -C641 C65B -C65D C677 -C679 C693 -C695 C6AF -C6B1 C6CB -C6CD C6E7 -C6E9 C703 -C705 C71F -C721 C73B -C73D C757 -C759 C773 -C775 C78F -C791 C7AB -C7AD C7C7 -C7C9 C7E3 -C7E5 C7FF -C801 C81B -C81D C837 -C839 C853 -C855 C86F -C871 C88B -C88D C8A7 -C8A9 C8C3 -C8C5 C8DF -C8E1 C8FB -C8FD C917 -C919 C933 -C935 C94F -C951 C96B -C96D C987 -C989 C9A3 -C9A5 C9BF -C9C1 C9DB -C9DD C9F7 -C9F9 CA13 -CA15 CA2F -CA31 CA4B -CA4D CA67 -CA69 CA83 -CA85 CA9F -CAA1 CABB -CABD CAD7 -CAD9 CAF3 -CAF5 CB0F -CB11 CB2B -CB2D CB47 -CB49 CB63 -CB65 CB7F -CB81 CB9B -CB9D CBB7 -CBB9 CBD3 -CBD5 CBEF -CBF1 CC0B -CC0D CC27 -CC29 CC43 -CC45 CC5F -CC61 CC7B -CC7D CC97 -CC99 CCB3 -CCB5 CCCF -CCD1 CCEB -CCED CD07 -CD09 CD23 -CD25 CD3F -CD41 CD5B -CD5D CD77 -CD79 CD93 -CD95 CDAF -CDB1 CDCB -CDCD CDE7 -CDE9 CE03 -CE05 CE1F -CE21 CE3B -CE3D CE57 -CE59 CE73 -CE75 CE8F -CE91 CEAB -CEAD CEC7 -CEC9 CEE3 -CEE5 CEFF -CF01 CF1B -CF1D CF37 -CF39 CF53 -CF55 CF6F -CF71 CF8B -CF8D CFA7 -CFA9 CFC3 -CFC5 CFDF -CFE1 CFFB -CFFD D017 -D019 D033 -D035 D04F -D051 D06B -D06D D087 -D089 D0A3 -D0A5 D0BF -D0C1 D0DB -D0DD D0F7 -D0F9 D113 -D115 D12F -D131 D14B -D14D D167 -D169 D183 -D185 D19F -D1A1 D1BB -D1BD D1D7 -D1D9 D1F3 -D1F5 D20F -D211 D22B -D22D D247 -D249 D263 -D265 D27F -D281 D29B -D29D D2B7 -D2B9 D2D3 -D2D5 D2EF -D2F1 D30B -D30D D327 -D329 D343 -D345 D35F -D361 D37B -D37D D397 -D399 D3B3 -D3B5 D3CF -D3D1 D3EB -D3ED D407 -D409 D423 -D425 D43F -D441 D45B -D45D D477 -D479 D493 -D495 D4AF -D4B1 D4CB -D4CD D4E7 -D4E9 D503 -D505 D51F -D521 D53B -D53D D557 -D559 D573 -D575 D58F -D591 D5AB -D5AD D5C7 -D5C9 D5E3 -D5E5 D5FF -D601 D61B -D61D D637 -D639 D653 -D655 D66F -D671 D68B -D68D D6A7 -D6A9 D6C3 -D6C5 D6DF -D6E1 D6FB -D6FD D717 -D719 D733 -D735 D74F -D751 D76B -D76D D787 -D789 D7A3 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/HY.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/HY.pl deleted file mode 100644 index 321218960fc..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/HY.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Hyphen' -# -return <<'END'; -002D -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/ID.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/ID.pl deleted file mode 100644 index 9e6b32e5bab..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/ID.pl +++ /dev/null @@ -1,80 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Ideographic' -# -return <<'END'; -2E80 2E99 -2E9B 2EF3 -2F00 2FD5 -2FF0 2FFB -3000 -3003 3004 -3006 3007 -3012 3013 -3020 3029 -3030 303A -303D 303F -3042 -3044 -3046 -3048 -304A 3062 -3064 3082 -3084 -3086 -3088 308D -308F 3094 -309F -30A2 -30A4 -30A6 -30A8 -30AA 30C2 -30C4 30E2 -30E4 -30E6 -30E8 30ED -30EF 30F4 -30F7 30FA -30FF -3105 312C -3131 318E -3190 31B7 -31C0 31CF -3200 321E -3220 3243 -3250 32FE -3300 4DB5 -4E00 9FBB -A000 A014 -A016 A48C -A490 A4C6 -F900 FA2D -FA30 FA6A -FA70 FAD9 -FE30 FE34 -FE45 FE46 -FE49 FE4F -FE51 -FE58 -FE5F FE66 -FE68 -FE6B -FF02 FF03 -FF06 FF07 -FF0A FF0B -FF0D -FF0F FF19 -FF1C FF1E -FF20 FF3A -FF3C -FF3E FF5A -FF5C -FF5E -FFE2 FFE4 -20000 2A6D6 -2F800 2FA1D -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/IN.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/IN.pl deleted file mode 100644 index c13572b1169..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/IN.pl +++ /dev/null @@ -1,11 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Inseparable' -# -return <<'END'; -2024 2026 -FE19 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/IS.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/IS.pl deleted file mode 100644 index 7ce2318e40e..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/IS.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! - -# -# Linebreak category 'Infix_Numeric' -# -return <<'END'; -002C -002E -003A 003B -037E -0589 -060D -2044 -FE10 -FE13 FE14 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/JL.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/JL.pl deleted file mode 100644 index c771ea9bd0d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/JL.pl +++ /dev/null @@ -1,11 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'JL' -# -return <<'END'; -1100 1159 -115F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/JT.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/JT.pl deleted file mode 100644 index 8697ef25a76..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/JT.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'JT' -# -return <<'END'; -11A8 11F9 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/JV.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/JV.pl deleted file mode 100644 index 5d615ad6fec..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/JV.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'JV' -# -return <<'END'; -1160 11A2 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/LF.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/LF.pl deleted file mode 100644 index 08bb773718d..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/LF.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Line_Feed' -# -return <<'END'; -000A -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/NL.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/NL.pl deleted file mode 100644 index c1c59b268ac..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/NL.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Next_Line' -# -return <<'END'; -0085 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/NS.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/NS.pl deleted file mode 100644 index babb9c703c7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/NS.pl +++ /dev/null @@ -1,46 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Nonstarter' -# -return <<'END'; -17D6 17D7 -17D9 -203C -3005 -301C -303B 303C -3041 -3043 -3045 -3047 -3049 -3063 -3083 -3085 -3087 -308E -3095 3096 -309B 309E -30A0 30A1 -30A3 -30A5 -30A7 -30A9 -30C3 -30E3 -30E5 -30E7 -30EE -30F5 30F6 -30FB 30FE -31F0 31FF -A015 -FE54 FE55 -FF1A FF1B -FF65 -FF67 FF70 -FF9E FF9F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/NU.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/NU.pl deleted file mode 100644 index aa493a09add..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/NU.pl +++ /dev/null @@ -1,32 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Numeric' -# -return <<'END'; -0030 0039 -0660 0669 -066B 066C -06F0 06F9 -0966 096F -09E6 09EF -0A66 0A6F -0AE6 0AEF -0B66 0B6F -0BE6 0BEF -0C66 0C6F -0CE6 0CEF -0D66 0D6F -0E50 0E59 -0ED0 0ED9 -0F20 0F29 -1040 1049 -17E0 17E9 -1810 1819 -1946 194F -19D0 19D9 -104A0 104A9 -1D7CE 1D7FF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/OP.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/OP.pl deleted file mode 100644 index 01c0761ad8a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/OP.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! - -# -# Linebreak category 'Open_Punctuation' -# -return <<'END'; -0028 -005B -007B -0F3A -0F3C -169B -201A -201E -2045 -207D -208D -2329 -23B4 -2768 -276A -276C -276E -2770 -2772 -2774 -27C5 -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 -FE17 -FE35 -FE37 -FE39 -FE3B -FE3D -FE3F -FE41 -FE43 -FE47 -FE59 -FE5B -FE5D -FF08 -FF3B -FF5B -FF5F -FF62 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/PO.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/PO.pl deleted file mode 100644 index f3765ef7b61..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/PO.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! - -# -# Linebreak category 'Postfix_Numeric' -# -return <<'END'; -0025 -00A2 -00B0 -060B -2030 2037 -20A7 -2103 -2109 -FDFC -FE6A -FF05 -FFE0 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/PR.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/PR.pl deleted file mode 100644 index 65195054dd1..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/PR.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! - -# -# Linebreak category 'Prefix_Numeric' -# -return <<'END'; -0024 -002B -005C -00A3 00A5 -00B1 -09F2 09F3 -0AF1 -0BF9 -0E3F -17DB -20A0 20A6 -20A8 20B5 -2116 -2212 2213 -FE69 -FF04 -FFE1 -FFE5 FFE6 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/QU.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/QU.pl deleted file mode 100644 index 6f4386b1d24..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/QU.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! - -# -# Linebreak category 'Quotation' -# -return <<'END'; -0022 -0027 -00AB -00BB -2018 2019 -201B 201D -201F -2039 203A -23B6 -275B 275E -2E00 2E0D -2E1C 2E1D -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/SA.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/SA.pl deleted file mode 100644 index e6308583bf4..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/SA.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! - -# -# Linebreak category 'Complex_Context' -# -return <<'END'; -0E01 0E30 -0E32 0E33 -0E40 0E46 -0E81 0E82 -0E84 -0E87 0E88 -0E8A -0E8D -0E94 0E97 -0E99 0E9F -0EA1 0EA3 -0EA5 -0EA7 -0EAA 0EAB -0EAD 0EB0 -0EB2 0EB3 -0EBD -0EC0 0EC4 -0EC6 -0EDC 0EDD -1000 1021 -1023 1027 -1029 102A -1050 1055 -1780 17B5 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/SG.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/SG.pl deleted file mode 100644 index 65be30b6844..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/SG.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Surrogate' -# -return <<'END'; -D800 DFFF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/SP.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/SP.pl deleted file mode 100644 index ae815232b92..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/SP.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Space' -# -return <<'END'; -0020 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/SY.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/SY.pl deleted file mode 100644 index ae43e49e922..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/SY.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Break_Symbols' -# -return <<'END'; -002F -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/WJ.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/WJ.pl deleted file mode 100644 index e4375785a47..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/WJ.pl +++ /dev/null @@ -1,11 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Word_Joiner' -# -return <<'END'; -2060 -FEFF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/XX.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/XX.pl deleted file mode 100644 index 552f71808a7..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/XX.pl +++ /dev/null @@ -1,12 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'Unknown' -# -return <<'END'; -E000 F8FF -F0000 FFFFD -100000 10FFFD -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/ZW.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/ZW.pl deleted file mode 100644 index 8cc1e823e24..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/lb/ZW.pl +++ /dev/null @@ -1,10 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# Linebreak category 'ZWSpace' -# -return <<'END'; -200B -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/nt/De.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/nt/De.pl deleted file mode 100644 index af3697fc7ac..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/nt/De.pl +++ /dev/null @@ -1,32 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# NumericType category 'Decimal' -# -return <<'END'; -0030 0039 -0660 0669 -06F0 06F9 -0966 096F -09E6 09EF -0A66 0A6F -0AE6 0AEF -0B66 0B6F -0BE6 0BEF -0C66 0C6F -0CE6 0CEF -0D66 0D6F -0E50 0E59 -0ED0 0ED9 -0F20 0F29 -1040 1049 -17E0 17E9 -1810 1819 -1946 194F -19D0 19D9 -FF10 FF19 -104A0 104A9 -1D7CE 1D7FF -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/nt/Di.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/nt/Di.pl deleted file mode 100644 index 8a29b9db9c3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/nt/Di.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! - -# -# NumericType category 'Digit' -# -return <<'END'; -00B2 00B3 -00B9 -1369 1371 -2070 -2074 2079 -2080 2089 -2460 2468 -2474 247C -2488 2490 -24EA -24F5 24FD -24FF -2776 277E -2780 2788 -278A 2792 -10A40 10A43 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/lib/nt/Nu.pl b/Master/tlpkg/tlperl.old/lib/unicore/lib/nt/Nu.pl deleted file mode 100644 index 587a3a6e113..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/lib/nt/Nu.pl +++ /dev/null @@ -1,42 +0,0 @@ -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -# -# NumericType category 'Numeric' -# -return <<'END'; -00BC 00BE -09F4 09F7 -09F9 -0BF0 0BF2 -0F2A 0F33 -1372 137C -16EE 16F0 -17F0 17F9 -2153 2182 -2469 2473 -247D 2487 -2491 249B -24EB 24F4 -24FE -277F -2789 -2793 -2CFD -3007 -3021 3029 -3038 303A -3192 3195 -3220 3229 -3251 325F -3280 3289 -32B1 32BF -10107 10133 -10140 10178 -1018A -10320 10323 -1034A -103D1 103D5 -10A44 10A47 -END diff --git a/Master/tlpkg/tlperl.old/lib/unicore/mktables b/Master/tlpkg/tlperl.old/lib/unicore/mktables deleted file mode 100644 index 42003663849..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/mktables +++ /dev/null @@ -1,2197 +0,0 @@ -## !!!!!!!!!!!!!! IF YOU MODIFY THIS FILE !!!!!!!!!!!!!!!!!!!!!!!!! -## Any files created or read by this program should be listed in 'mktables.lst' - -#!/usr/bin/perl -w -require 5.008; # Needs pack "U". Probably safest to run on 5.8.x -use strict; -use Carp; -use File::Spec; - -## -## mktables -- create the runtime Perl Unicode files (lib/unicore/**/*.pl) -## from the Unicode database files (lib/unicore/*.txt). -## - -## "Fuzzy" means this section in Unicode TR18: -## -## The recommended names for UCD properties and property values are in -## PropertyAliases.txt [Prop] and PropertyValueAliases.txt -## [PropValue]. There are both abbreviated names and longer, more -## descriptive names. It is strongly recommended that both names be -## recognized, and that loose matching of property names be used, -## whereby the case distinctions, whitespace, hyphens, and underbar -## are ignored. - -## Base names already used in lib/gc_sc (for avoiding 8.3 conflicts) -my %BaseNames; - -## -## Process any args. -## -my $Verbose = 0; -my $MakeTestScript = 0; -my $AlwaysWrite = 0; -my $UseDir = ""; -my $FileList = "$0.lst"; -my $MakeList = 0; - -while (@ARGV) -{ - my $arg = shift @ARGV; - if ($arg eq '-v') { - $Verbose = 1; - } elsif ($arg eq '-q') { - $Verbose = 0; - } elsif ($arg eq '-w') { - $AlwaysWrite = 1; # update the files even if they havent changed - $FileList = ""; - } elsif ($arg eq '-maketest') { - $MakeTestScript = 1; - } elsif ($arg eq '-makelist') { - $MakeList = 1; - } elsif ($arg eq '-C' && defined ($UseDir = shift)) { - -d $UseDir or die "Unknown directory '$UseDir'"; - } elsif ($arg eq '-L' && defined ($FileList = shift)) { - -e $FileList or die "Filelist '$FileList' doesn't appear to exist!"; - } else { - die "usage: $0 [-v|-q|-w|-C dir|-L filelist] [-maketest] [-makelist]\n", - " -v : Verbose Mode\n", - " -q : Quiet Mode\n", - " -w : Write files regardless\n", - " -maketest : Make test script\n", - " -makelist : Rewrite the file list based on current setup\n", - " -L filelist : Use this file list, (defaults to $0)\n", - " -C dir : Change to this directory before proceding\n"; - } -} - -if ($FileList) { - print "Reading file list '$FileList'\n" - if $Verbose; - open my $fh,"<",$FileList or die "Failed to read '$FileList':$!"; - my @input; - my @output; - for my $list ( \@input, \@output ) { - while (<$fh>) { - s/^ \s+ | \s+ $//xg; - next if /^ \s* (?: \# .* )? $/x; - last if /^ =+ $/x; - my ( $file ) = split /\t/, $_; - push @$list, $file; - } - my %dupe; - @$list = grep !$dupe{ $_ }++, @$list; - } - close $fh; - die "No input or output files in '$FileList'!" - if !@input or !@output; - if ( $MakeList ) { - foreach my $file (@output) { - unlink $file; - } - } - if ( $Verbose ) { - print "Expecting ".scalar( @input )." input files. ", - "Checking ".scalar( @output )." output files.\n"; - } - # we set maxtime to be the youngest input file, including $0 itself. - my $maxtime = -M $0; # do this before the chdir! - if ($UseDir) { - chdir $UseDir or die "Failed to chdir to '$UseDir':$!"; - } - foreach my $in (@input) { - my $time = -M $in; - die "Missing input file '$in'" unless defined $time; - $maxtime = $time if $maxtime < $time; - } - - # now we check to see if any output files are older than maxtime, if - # they are we need to continue on, otherwise we can presumably bail. - my $ok = 1; - foreach my $out (@output) { - if ( ! -e $out ) { - print "'$out' is missing.\n" - if $Verbose; - $ok = 0; - last; - } - if ( -M $out > $maxtime ) { - print "'$out' is too old.\n" - if $Verbose; - $ok = 0; - last; - } - } - if ($ok) { - print "Files seem to be ok, not bothering to rebuild.\n"; - exit(0); - } - print "Must rebuild tables.\n" - if $Verbose; -} else { - if ($Verbose) { - print "Not checking filelist.\n"; - } - if ($UseDir) { - chdir $UseDir or die "Failed to chdir to '$UseDir':$!"; - } -} - -foreach my $lib ('To', 'lib', - map {File::Spec->catdir("lib",$_)} - qw(gc_sc dt bc hst ea jt lb nt ccc)) { - next if -d $lib; - mkdir $lib, 0755 or die "mkdir '$lib': $!"; -} - -my $LastUnicodeCodepoint = 0x10FFFF; # As of Unicode 3.1.1. - -my $HEADER=<<"EOF"; -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by $0 from e.g. UnicodeData.txt. -# Any changes made here will be lost! - -EOF - -sub force_unlink { - my $filename = shift; - return unless -e $filename; - return if CORE::unlink($filename); - # We might need write permission - chmod 0777, $filename; - CORE::unlink($filename) or die "Couldn't unlink $filename: $!\n"; -} - -## -## Given a filename and a reference to an array of lines, -## write the lines to the file only if the contents have not changed. -## Filename can be given as an arrayref of directory names -## -sub WriteIfChanged($\@) -{ - my $file = shift; - my $lines = shift; - - $file = File::Spec->catfile(@$file) if ref $file; - - my $TextToWrite = join '', @$lines; - if (open IN, $file) { - local($/) = undef; - my $PreviousText = <IN>; - close IN; - if ($PreviousText eq $TextToWrite) { - print "$file unchanged.\n" if $Verbose; - return unless $AlwaysWrite; - } - } - force_unlink ($file); - if (not open OUT, ">$file") { - die "$0: can't open $file for output: $!\n"; - } - print "$file written.\n" if $Verbose; - - print OUT $TextToWrite; - close OUT; -} - -## -## The main datastructure (a "Table") represents a set of code points that -## are part of a particular quality (that are part of \pL, \p{InGreek}, -## etc.). They are kept as ranges of code points (starting and ending of -## each range). -## -## For example, a range ASCII LETTERS would be represented as: -## [ [ 0x41 => 0x5A, 'UPPER' ], -## [ 0x61 => 0x7A, 'LOWER, ] ] -## -sub RANGE_START() { 0 } ## index into range element -sub RANGE_END() { 1 } ## index into range element -sub RANGE_NAME() { 2 } ## index into range element - -## Conceptually, these should really be folded into the 'Table' objects -my %TableInfo; -my %TableDesc; -my %FuzzyNames; -my %AliasInfo; -my %CanonicalToOrig; - -## -## Turn something like -## OLD-ITALIC -## into -## OldItalic -## -sub CanonicalName($) -{ - my $orig = shift; - my $name = lc $orig; - $name =~ s/(?<![a-z])(\w)/\u$1/g; - $name =~ s/[-_\s]+//g; - - $CanonicalToOrig{$name} = $orig if not $CanonicalToOrig{$name}; - return $name; -} - - -## -## Store the alias definitions for later use. -## -my %PropertyAlias; -my %PropValueAlias; - -my %PA_reverse; -my %PVA_reverse; - -sub Build_Aliases() -{ - ## - ## Most of the work with aliases doesn't occur here, - ## but rather in utf8_heavy.pl, which uses PVA.pl, - - # Placate the warnings about used only once. (They are used again, but - # via a typeglob lookup) - %utf8::PropertyAlias = (); - %utf8::PA_reverse = (); - %utf8::PropValueAlias = (); - %utf8::PVA_reverse = (); - %utf8::PVA_abbr_map = (); - - open PA, "< PropertyAliases.txt" - or confess "Can't open PropertyAliases.txt: $!"; - while (<PA>) { - s/#.*//; - s/\s+$//; - next if /^$/; - - my ($abbrev, $name) = split /\s*;\s*/; - next if $abbrev eq "n/a"; - $PropertyAlias{$abbrev} = $name; - $PA_reverse{$name} = $abbrev; - - # The %utf8::... versions use japhy's code originally from utf8_pva.pl - # However, it's moved here so that we build the tables at runtime. - tr/ _-//d for $abbrev, $name; - $utf8::PropertyAlias{lc $abbrev} = $name; - $utf8::PA_reverse{lc $name} = $abbrev; - } - close PA; - - open PVA, "< PropValueAliases.txt" - or confess "Can't open PropValueAliases.txt: $!"; - while (<PVA>) { - s/#.*//; - s/\s+$//; - next if /^$/; - - my ($prop, @data) = split /\s*;\s*/; - - if ($prop eq 'ccc') { - $PropValueAlias{$prop}{$data[1]} = [ @data[0,2] ]; - $PVA_reverse{$prop}{$data[2]} = [ @data[0,1] ]; - } - else { - next if $data[0] eq "n/a"; - $PropValueAlias{$prop}{$data[0]} = $data[1]; - $PVA_reverse{$prop}{$data[1]} = $data[0]; - } - - shift @data if $prop eq 'ccc'; - next if $data[0] eq "n/a"; - - $data[1] =~ tr/ _-//d; - $utf8::PropValueAlias{$prop}{lc $data[0]} = $data[1]; - $utf8::PVA_reverse{$prop}{lc $data[1]} = $data[0]; - - my $abbr_class = ($prop eq 'gc' or $prop eq 'sc') ? 'gc_sc' : $prop; - $utf8::PVA_abbr_map{$abbr_class}{lc $data[0]} = $data[0]; - } - close PVA; - - # backwards compatibility for L& -> LC - $utf8::PropValueAlias{gc}{'l&'} = $utf8::PropValueAlias{gc}{lc}; - $utf8::PVA_abbr_map{gc_sc}{'l&'} = $utf8::PVA_abbr_map{gc_sc}{lc}; - -} - - -## -## Associates a property ("Greek", "Lu", "Assigned",...) with a Table. -## -## Called like: -## New_Prop(In => 'Greek', $Table, Desc => 'Greek Block', Fuzzy => 1); -## -## Normally, these parameters are set when the Table is created (when the -## Table->New constructor is called), but there are times when it needs to -## be done after-the-fact...) -## -sub New_Prop($$$@) -{ - my $Type = shift; ## "Is" or "In"; - my $Name = shift; - my $Table = shift; - - ## remaining args are optional key/val - my %Args = @_; - - my $Fuzzy = delete $Args{Fuzzy}; - my $Desc = delete $Args{Desc}; # description - - $Name = CanonicalName($Name) if $Fuzzy; - - ## sanity check a few args - if (%Args or ($Type ne 'Is' and $Type ne 'In') or not ref $Table) { - confess "$0: bad args to New_Prop" - } - - if (not $TableInfo{$Type}->{$Name}) - { - $TableInfo{$Type}->{$Name} = $Table; - $TableDesc{$Type}->{$Name} = $Desc; - if ($Fuzzy) { - $FuzzyNames{$Type}->{$Name} = $Name; - } - } -} - - -## -## Creates a new Table object. -## -## Args are key/value pairs: -## In => Name -- Name of "In" property to be associated with -## Is => Name -- Name of "Is" property to be associated with -## Fuzzy => Boolean -- True if name can be accessed "fuzzily" -## Desc => String -- Description of the property -## -## No args are required. -## -sub Table::New -{ - my $class = shift; - my %Args = @_; - - my $Table = bless [], $class; - - my $Fuzzy = delete $Args{Fuzzy}; - my $Desc = delete $Args{Desc}; - - for my $Type ('Is', 'In') - { - if (my $Name = delete $Args{$Type}) { - New_Prop($Type => $Name, $Table, Desc => $Desc, Fuzzy => $Fuzzy); - } - } - - ## shouldn't have any left over - if (%Args) { - confess "$0: bad args to Table->New" - } - - return $Table; -} - - -## -## Returns the maximum code point currently in the table. -## -sub Table::Max -{ - my $last = $_[0]->[-1]; ## last code point - confess "oops" unless $last; ## must have code points to have a max - return $last->[RANGE_END]; -} - -## -## Replaces the codepoints in the Table with those in the Table given -## as an arg. (NOTE: this is not a "deep copy"). -## -sub Table::Replace($$) -{ - my $Table = shift; #self - my $New = shift; - - @$Table = @$New; -} - -## -## Given a new code point, make the last range of the Table extend to -## include the new (and all intervening) code points. -## -## Takes the time to make sure that the extension is valid. -## -sub Table::Extend -{ - my $Table = shift; #self - my $codepoint = shift; - - my $PrevMax = $Table->Max; - - confess "oops ($codepoint <= $PrevMax)" if $codepoint <= $PrevMax; - - $Table->ExtendNoCheck($codepoint); -} - - -## -## Given a new code point, make the last range of the Table extend to -## include the new (and all intervening) code points. -## -## Does NOT check that the extension is valid. Assumes that the caller -## has already made this check. -## -sub Table::ExtendNoCheck -{ - ## Optmized adding: Assumes $Table and $codepoint as parms - $_[0]->[-1]->[RANGE_END] = $_[1]; -} - -## -## Given a code point range start and end (and optional name), blindly -## append them to the list of ranges for the Table. -## -## NOTE: Code points must be added in strictly ascending numeric order. -## -sub Table::RawAppendRange -{ - my $Table = shift; #self - my $start = shift; - my $end = shift; - my $name = shift; - $name = "" if not defined $name; ## warning: $name can be "0" - - push @$Table, [ $start, # RANGE_START - $end, # RANGE_END - $name ]; # RANGE_NAME -} - -## -## Given a code point (and optional name), add it to the Table. -## -## NOTE: Code points must be added in strictly ascending numeric order. -## -sub Table::Append -{ - my $Table = shift; #self - my $codepoint = shift; - my $name = shift; - $name = "" if not defined $name; ## warning: $name can be "0" - - ## - ## If we've already got a range working, and this code point is the next - ## one in line, and if the name is the same, just extend the current range. - ## - my $last = $Table->[-1]; - if ($last - and - $last->[RANGE_END] == $codepoint - 1 - and - $last->[RANGE_NAME] eq $name) - { - $Table->ExtendNoCheck($codepoint); - } - else - { - $Table->RawAppendRange($codepoint, $codepoint, $name); - } -} - -## -## Given a code point range starting value and ending value (and name), -## Add the range to teh Table. -## -## NOTE: Code points must be added in strictly ascending numeric order. -## -sub Table::AppendRange -{ - my $Table = shift; #self - my $start = shift; - my $end = shift; - my $name = shift; - $name = "" if not defined $name; ## warning: $name can be "0" - - $Table->Append($start, $name); - $Table->Extend($end) if $end > $start; -} - -## -## Return a new Table that represents all code points not in the Table. -## -sub Table::Invert -{ - my $Table = shift; #self - - my $New = Table->New(); - my $max = -1; - for my $range (@$Table) - { - my $start = $range->[RANGE_START]; - my $end = $range->[RANGE_END]; - if ($start-1 >= $max+1) { - $New->AppendRange($max+1, $start-1, ""); - } - $max = $end; - } - if ($max+1 < $LastUnicodeCodepoint) { - $New->AppendRange($max+1, $LastUnicodeCodepoint); - } - return $New; -} - -## -## Merges any number of other tables with $self, returning the new table. -## (existing tables are not modified) -## -## -## Args may be Tables, or individual code points (as integers). -## -## Can be called as either a constructor or a method. -## -sub Table::Merge -{ - shift(@_) if not ref $_[0]; ## if called as a constructor, lose the class - my @Tables = @_; - - ## Accumulate all records from all tables - my @Records; - for my $Arg (@Tables) - { - if (ref $Arg) { - ## arg is a table -- get its ranges - push @Records, @$Arg; - } else { - ## arg is a codepoint, make a range - push @Records, [ $Arg, $Arg ] - } - } - - ## sort by range start, with longer ranges coming first. - my ($first, @Rest) = sort { - ($a->[RANGE_START] <=> $b->[RANGE_START]) - or - ($b->[RANGE_END] <=> $b->[RANGE_END]) - } @Records; - - my $New = Table->New(); - - ## Ensuring the first range is there makes the subsequent loop easier - $New->AppendRange($first->[RANGE_START], - $first->[RANGE_END]); - - ## Fold in records so long as they add new information. - for my $set (@Rest) - { - my $start = $set->[RANGE_START]; - my $end = $set->[RANGE_END]; - if ($start > $New->Max) { - $New->AppendRange($start, $end); - } elsif ($end > $New->Max) { - $New->ExtendNoCheck($end); - } - } - - return $New; -} - -## -## Given a filename, write a representation of the Table to a file. -## May have an optional comment as a 2nd arg. -## Filename may actually be an arrayref of directories -## -sub Table::Write -{ - my $Table = shift; #self - my $filename = shift; - my $comment = shift; - - my @OUT = $HEADER; - if (defined $comment) { - $comment =~ s/\s+\Z//; - $comment =~ s/^/# /gm; - push @OUT, "#\n$comment\n#\n"; - } - push @OUT, "return <<'END';\n"; - - for my $set (@$Table) - { - my $start = $set->[RANGE_START]; - my $end = $set->[RANGE_END]; - my $name = $set->[RANGE_NAME]; - - if ($start == $end) { - push @OUT, sprintf "%04X\t\t%s\n", $start, $name; - } else { - push @OUT, sprintf "%04X\t%04X\t%s\n", $start, $end, $name; - } - } - - push @OUT, "END\n"; - - WriteIfChanged($filename, @OUT); -} - -## This used only for making the test script. -## helper function -sub IsUsable($) -{ - my $code = shift; - return 0 if $code <= 0x0000; ## don't use null - return 0 if $code >= $LastUnicodeCodepoint; ## keep in range - return 0 if ($code >= 0xD800 and $code <= 0xDFFF); ## no surrogates - return 0 if ($code >= 0xFDD0 and $code <= 0xFDEF); ## utf8.c says no good - return 0 if (($code & 0xFFFF) == 0xFFFE); ## utf8.c says no good - return 0 if (($code & 0xFFFF) == 0xFFFF); ## utf8.c says no good - return 1; -} - -## Return a code point that's part of the table. -## Returns nothing if the table is empty (or covers only surrogates). -## This used only for making the test script. -sub Table::ValidCode -{ - my $Table = shift; #self - for my $set (@$Table) { - return $set->[RANGE_END] if IsUsable($set->[RANGE_END]); - } - return (); -} - -## Return a code point that's not part of the table -## Returns nothing if the table covers all code points. -## This used only for making the test script. -sub Table::InvalidCode -{ - my $Table = shift; #self - - return 0x1234 if not @$Table; - - for my $set (@$Table) - { - if (IsUsable($set->[RANGE_END] + 1)) - { - return $set->[RANGE_END] + 1; - } - - if (IsUsable($set->[RANGE_START] - 1)) - { - return $set->[RANGE_START] - 1; - } - } - return (); -} - -########################################################################### -########################################################################### -########################################################################### - - -## -## Called like: -## New_Alias(Is => 'All', SameAs => 'Any', Fuzzy => 1); -## -## The args must be in that order, although the Fuzzy pair may be omitted. -## -## This creates 'IsAll' as an alias for 'IsAny' -## -sub New_Alias($$$@) -{ - my $Type = shift; ## "Is" or "In" - my $Alias = shift; - my $SameAs = shift; # expecting "SameAs" -- just ignored - my $Name = shift; - - ## remaining args are optional key/val - my %Args = @_; - - my $Fuzzy = delete $Args{Fuzzy}; - - ## sanity check a few args - if (%Args or ($Type ne 'Is' and $Type ne 'In') or $SameAs ne 'SameAs') { - confess "$0: bad args to New_Alias" - } - - $Alias = CanonicalName($Alias) if $Fuzzy; - - if (not $TableInfo{$Type}->{$Name}) - { - my $CName = CanonicalName($Name); - if ($TableInfo{$Type}->{$CName}) { - confess "$0: Use canonical form '$CName' instead of '$Name' for alias."; - } else { - confess "$0: don't have original $Type => $Name to make alias\n"; - } - } - if ($TableInfo{$Alias}) { - confess "$0: already have original $Type => $Alias; can't make alias"; - } - $AliasInfo{$Type}->{$Name} = $Alias; - if ($Fuzzy) { - $FuzzyNames{$Type}->{$Alias} = $Name; - } - -} - - -## All assigned code points -my $Assigned = Table->New(Is => 'Assigned', - Desc => "All assigned code points", - Fuzzy => 0); - -my $Name = Table->New(); ## all characters, individually by name -my $General = Table->New(); ## all characters, grouped by category -my %General; -my %Cat; - -## Simple Data::Dumper alike. Good enough for our needs. We can't use the real -## thing as we have to run under miniperl -sub simple_dumper { - my @lines; - my $item; - foreach $item (@_) { - if (ref $item) { - if (ref $item eq 'ARRAY') { - push @lines, "[\n", simple_dumper (@$item), "],\n"; - } elsif (ref $item eq 'HASH') { - push @lines, "{\n", simple_dumper (%$item), "},\n"; - } else { - die "Can't cope with $item"; - } - } else { - if (defined $item) { - my $copy = $item; - $copy =~ s/([\'\\])/\\$1/gs; - push @lines, "'$copy',\n"; - } else { - push @lines, "undef,\n"; - } - } - } - @lines; -} - -## -## Process UnicodeData.txt (Categories, etc.) -## -sub UnicodeData_Txt() -{ - my $Bidi = Table->New(); - my $Deco = Table->New(); - my $Comb = Table->New(); - my $Number = Table->New(); - my $Mirrored = Table->New();#Is => 'Mirrored', - #Desc => "Mirrored in bidirectional text", - #Fuzzy => 0); - - my %DC; - my %Bidi; - my %Number; - $DC{can} = Table->New(); - $DC{com} = Table->New(); - - ## Initialize Perl-generated categories - ## (Categories from UnicodeData.txt are auto-initialized in gencat) - $Cat{Alnum} = - Table->New(Is => 'Alnum', Desc => "[[:Alnum:]]", Fuzzy => 0); - $Cat{Alpha} = - Table->New(Is => 'Alpha', Desc => "[[:Alpha:]]", Fuzzy => 0); - $Cat{ASCII} = - Table->New(Is => 'ASCII', Desc => "[[:ASCII:]]", Fuzzy => 0); - $Cat{Blank} = - Table->New(Is => 'Blank', Desc => "[[:Blank:]]", Fuzzy => 0); - $Cat{Cntrl} = - Table->New(Is => 'Cntrl', Desc => "[[:Cntrl:]]", Fuzzy => 0); - $Cat{Digit} = - Table->New(Is => 'Digit', Desc => "[[:Digit:]]", Fuzzy => 0); - $Cat{Graph} = - Table->New(Is => 'Graph', Desc => "[[:Graph:]]", Fuzzy => 0); - $Cat{Lower} = - Table->New(Is => 'Lower', Desc => "[[:Lower:]]", Fuzzy => 0); - $Cat{Print} = - Table->New(Is => 'Print', Desc => "[[:Print:]]", Fuzzy => 0); - $Cat{Punct} = - Table->New(Is => 'Punct', Desc => "[[:Punct:]]", Fuzzy => 0); - $Cat{Space} = - Table->New(Is => 'Space', Desc => "[[:Space:]]", Fuzzy => 0); - $Cat{Title} = - Table->New(Is => 'Title', Desc => "[[:Title:]]", Fuzzy => 0); - $Cat{Upper} = - Table->New(Is => 'Upper', Desc => "[[:Upper:]]", Fuzzy => 0); - $Cat{XDigit} = - Table->New(Is => 'XDigit', Desc => "[[:XDigit:]]", Fuzzy => 0); - $Cat{Word} = - Table->New(Is => 'Word', Desc => "[[:Word:]]", Fuzzy => 0); - $Cat{SpacePerl} = - Table->New(Is => 'SpacePerl', Desc => '\s', Fuzzy => 0); - - my %To; - $To{Upper} = Table->New(); - $To{Lower} = Table->New(); - $To{Title} = Table->New(); - $To{Digit} = Table->New(); - - sub gencat($$$$) - { - my ($name, ## Name ("LATIN CAPITAL LETTER A") - $cat, ## Category ("Lu", "Zp", "Nd", etc.) - $code, ## Code point (as an integer) - $op) = @_; - - my $MajorCat = substr($cat, 0, 1); ## L, M, Z, S, etc - - $Assigned->$op($code); - $Name->$op($code, $name); - $General->$op($code, $cat); - - ## add to the sub category (e.g. "Lu", "Nd", "Cf", ..) - $Cat{$cat} ||= Table->New(Is => $cat, - Desc => "General Category '$cat'", - Fuzzy => 0); - $Cat{$cat}->$op($code); - - ## add to the major category (e.g. "L", "N", "C", ...) - $Cat{$MajorCat} ||= Table->New(Is => $MajorCat, - Desc => "Major Category '$MajorCat'", - Fuzzy => 0); - $Cat{$MajorCat}->$op($code); - - ($General{$name} ||= Table->New)->$op($code, $name); - - # 005F: SPACING UNDERSCORE - $Cat{Word}->$op($code) if $cat =~ /^[LMN]|Pc/; - $Cat{Alnum}->$op($code) if $cat =~ /^[LM]|Nd/; - $Cat{Alpha}->$op($code) if $cat =~ /^[LM]/; - - my $isspace = - ($cat =~ /Zs|Zl|Zp/ && - $code != 0x200B) # 200B is ZWSP which is for line break control - # and therefore it is not part of "space" even while it is "Zs". - || $code == 0x0009 # 0009: HORIZONTAL TAB - || $code == 0x000A # 000A: LINE FEED - || $code == 0x000B # 000B: VERTICAL TAB - || $code == 0x000C # 000C: FORM FEED - || $code == 0x000D # 000D: CARRIAGE RETURN - || $code == 0x0085 # 0085: NEL - - ; - - $Cat{Space}->$op($code) if $isspace; - - $Cat{SpacePerl}->$op($code) if $isspace - && $code != 0x000B; # Backward compat. - - $Cat{Blank}->$op($code) if $isspace - && !($code == 0x000A || - $code == 0x000B || - $code == 0x000C || - $code == 0x000D || - $code == 0x0085 || - $cat =~ /^Z[lp]/); - - $Cat{Digit}->$op($code) if $cat eq "Nd"; - $Cat{Upper}->$op($code) if $cat eq "Lu"; - $Cat{Lower}->$op($code) if $cat eq "Ll"; - $Cat{Title}->$op($code) if $cat eq "Lt"; - $Cat{ASCII}->$op($code) if $code <= 0x007F; - $Cat{Cntrl}->$op($code) if $cat =~ /^C/; - my $isgraph = !$isspace && $cat !~ /Cc|Cs|Cn/; - $Cat{Graph}->$op($code) if $isgraph; - $Cat{Print}->$op($code) if $isgraph || $isspace; - $Cat{Punct}->$op($code) if $cat =~ /^P/; - - $Cat{XDigit}->$op($code) if ($code >= 0x30 && $code <= 0x39) ## 0..9 - || ($code >= 0x41 && $code <= 0x46) ## A..F - || ($code >= 0x61 && $code <= 0x66); ## a..f - } - - ## open ane read file..... - if (not open IN, "UnicodeData.txt") { - die "$0: UnicodeData.txt: $!\n"; - } - - ## - ## For building \p{_CombAbove} and \p{_CanonDCIJ} - ## - my %_Above_HexCodes; ## Hexcodes for chars with $comb == 230 ("ABOVE") - - my %CodeToDeco; ## Maps code to decomp. list for chars with first - ## decomp. char an "i" or "j" (for \p{_CanonDCIJ}) - - ## This is filled in as we go.... - my $CombAbove = Table->New(Is => '_CombAbove', - Desc => '(for internal casefolding use)', - Fuzzy => 0); - - while (<IN>) - { - next unless /^[0-9A-Fa-f]+;/; - s/\s+$//; - - my ($hexcode, ## code point in hex (e.g. "0041") - $name, ## character name (e.g. "LATIN CAPITAL LETTER A") - $cat, ## category (e.g. "Lu") - $comb, ## Canonical combining class (e.t. "230") - $bidi, ## directional category (e.g. "L") - $deco, ## decomposition mapping - $decimal, ## decimal digit value - $digit, ## digit value - $number, ## numeric value - $mirrored, ## mirrored - $unicode10, ## name in Unicode 1.0 - $comment, ## comment field - $upper, ## uppercase mapping - $lower, ## lowercase mapping - $title, ## titlecase mapping - ) = split(/\s*;\s*/); - - # Note that in Unicode 3.2 there will be names like - # LINE FEED (LF), which probably means that \N{} needs - # to cope also with LINE FEED and LF. - $name = $unicode10 if $name eq '<control>' && $unicode10 ne ''; - - my $code = hex($hexcode); - - if ($comb and $comb == 230) { - $CombAbove->Append($code); - $_Above_HexCodes{$hexcode} = 1; - } - - ## Used in building \p{_CanonDCIJ} - if ($deco and $deco =~ m/^006[9A]\b/) { - $CodeToDeco{$code} = $deco; - } - - ## - ## There are a few pairs of lines like: - ## AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;; - ## D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;; - ## that define ranges. - ## - if ($name =~ /^<(.+), (First|Last)>$/) - { - $name = $1; - gencat($name, $cat, $code, $2 eq 'First' ? 'Append' : 'Extend'); - #New_Prop(In => $name, $General{$name}, Fuzzy => 1); - } - else - { - ## normal (single-character) lines - gencat($name, $cat, $code, 'Append'); - - # No Append() here since since several codes may map into one. - $To{Upper}->RawAppendRange($code, $code, $upper) if $upper; - $To{Lower}->RawAppendRange($code, $code, $lower) if $lower; - $To{Title}->RawAppendRange($code, $code, $title) if $title; - $To{Digit}->Append($code, $decimal) if length $decimal; - - $Bidi->Append($code, $bidi); - $Comb->Append($code, $comb) if $comb; - $Number->Append($code, $number) if length $number; - - length($decimal) and ($Number{De} ||= Table->New())->Append($code) - or - length($digit) and ($Number{Di} ||= Table->New())->Append($code) - or - length($number) and ($Number{Nu} ||= Table->New())->Append($code); - - $Mirrored->Append($code) if $mirrored eq "Y"; - - $Bidi{$bidi} ||= Table->New();#Is => "bt/$bidi", - #Desc => "Bi-directional category '$bidi'", - #Fuzzy => 0); - $Bidi{$bidi}->Append($code); - - if ($deco) - { - $Deco->Append($code, $deco); - if ($deco =~/^<(\w+)>/) - { - my $dshort = $PVA_reverse{dt}{ucfirst lc $1}; - $DC{com}->Append($code); - - $DC{$dshort} ||= Table->New(); - $DC{$dshort}->Append($code); - } - else - { - $DC{can}->Append($code); - } - } - } - } - close IN; - - ## - ## Tidy up a few special cases.... - ## - - $Cat{Cn} = $Assigned->Invert; ## Cn is everything that doesn't exist - New_Prop(Is => 'Cn', - $Cat{Cn}, - Desc => "General Category 'Cn' [not functional in Perl]", - Fuzzy => 0); - - ## Unassigned is the same as 'Cn' - New_Alias(Is => 'Unassigned', SameAs => 'Cn', Fuzzy => 0); - - $Cat{C}->Replace($Cat{C}->Merge($Cat{Cn})); ## Now merge in Cn into C - - - # LC is Ll, Lu, and Lt. - # (used to be L& or L_, but PropValueAliases.txt defines it as LC) - New_Prop(Is => 'LC', - Table->Merge(@Cat{qw[Ll Lu Lt]}), - Desc => '[\p{Ll}\p{Lu}\p{Lt}]', - Fuzzy => 0); - - ## Any and All are all code points. - my $Any = Table->New(Is => 'Any', - Desc => sprintf("[\\x{0000}-\\x{%X}]", - $LastUnicodeCodepoint), - Fuzzy => 0); - $Any->RawAppendRange(0, $LastUnicodeCodepoint); - - New_Alias(Is => 'All', SameAs => 'Any', Fuzzy => 0); - - ## - ## Build special properties for Perl's internal case-folding needs: - ## \p{_CaseIgnorable} - ## \p{_CanonDCIJ} - ## \p{_CombAbove} - ## _CombAbove was built above. Others are built here.... - ## - - ## \p{_CaseIgnorable} is [\p{Mn}\0x00AD\x2010] - New_Prop(Is => '_CaseIgnorable', - Table->Merge($Cat{Mn}, - 0x00AD, #SOFT HYPHEN - 0x2010), #HYPHEN - Desc => '(for internal casefolding use)', - Fuzzy => 0); - - - ## \p{_CanonDCIJ} is fairly complex... - my $CanonCDIJ = Table->New(Is => '_CanonDCIJ', - Desc => '(for internal casefolding use)', - Fuzzy => 0); - ## It contains the ASCII 'i' and 'j'.... - $CanonCDIJ->Append(0x0069); # ASCII ord("i") - $CanonCDIJ->Append(0x006A); # ASCII ord("j") - ## ...and any character with a decomposition that starts with either of - ## those code points, but only if the decomposition does not have any - ## combining character with the "ABOVE" canonical combining class. - for my $code (sort { $a <=> $b} keys %CodeToDeco) - { - ## Need to ensure that all decomposition characters do not have - ## a %HexCodeToComb in %AboveCombClasses. - my $want = 1; - for my $deco_hexcode (split / /, $CodeToDeco{$code}) - { - if (exists $_Above_HexCodes{$deco_hexcode}) { - ## one of the decmposition chars has an ABOVE combination - ## class, so we're not interested in this one - $want = 0; - last; - } - } - if ($want) { - $CanonCDIJ->Append($code); - } - } - - - - ## - ## Now dump the files. - ## - $Name->Write("Name.pl"); - - { - my @PVA = $HEADER; - foreach my $name (qw (PropertyAlias PA_reverse PropValueAlias - PVA_reverse PVA_abbr_map)) { - # Should I really jump through typeglob hoops just to avoid a - # symbolic reference? (%{"utf8::$name}) - push @PVA, "\n", "\%utf8::$name = (\n", - simple_dumper (%{$utf8::{$name}}), ");\n"; - } - push @PVA, "1;\n"; - WriteIfChanged("PVA.pl", @PVA); - } - - # $Bidi->Write("Bidirectional.pl"); - for (keys %Bidi) { - $Bidi{$_}->Write( - ["lib","bc","$_.pl"], - "BidiClass category '$PropValueAlias{bc}{$_}'" - ); - } - - $Comb->Write("CombiningClass.pl"); - for (keys %{ $PropValueAlias{ccc} }) { - my ($code, $name) = @{ $PropValueAlias{ccc}{$_} }; - (my $c = Table->New())->Append($code); - $c->Write( - ["lib","ccc","$_.pl"], - "CombiningClass category '$name'" - ); - } - - $Deco->Write("Decomposition.pl"); - for (keys %DC) { - $DC{$_}->Write( - ["lib","dt","$_.pl"], - "DecompositionType category '$PropValueAlias{dt}{$_}'" - ); - } - - # $Number->Write("Number.pl"); - for (keys %Number) { - $Number{$_}->Write( - ["lib","nt","$_.pl"], - "NumericType category '$PropValueAlias{nt}{$_}'" - ); - } - - # $General->Write("Category.pl"); - - for my $to (sort keys %To) { - $To{$to}->Write(["To","$to.pl"]); - } - - for (keys %{ $PropValueAlias{gc} }) { - New_Alias(Is => $PropValueAlias{gc}{$_}, SameAs => $_, Fuzzy => 1); - } -} - -## -## Process LineBreak.txt -## -sub LineBreak_Txt() -{ - if (not open IN, "LineBreak.txt") { - die "$0: LineBreak.txt: $!\n"; - } - - my $Lbrk = Table->New(); - my %Lbrk; - - while (<IN>) - { - next unless /^([0-9A-Fa-f]+)(?:\.\.([0-9A-Fa-f]+))?\s*;\s*(\w+)/; - - my ($first, $last, $lbrk) = (hex($1), hex($2||""), $3); - - $Lbrk->Append($first, $lbrk); - - $Lbrk{$lbrk} ||= Table->New(); - $Lbrk{$lbrk}->Append($first); - - if ($last) { - $Lbrk->Extend($last); - $Lbrk{$lbrk}->Extend($last); - } - } - close IN; - - # $Lbrk->Write("Lbrk.pl"); - - - for (keys %Lbrk) { - $Lbrk{$_}->Write( - ["lib","lb","$_.pl"], - "Linebreak category '$PropValueAlias{lb}{$_}'" - ); - } -} - -## -## Process ArabicShaping.txt. -## -sub ArabicShaping_txt() -{ - if (not open IN, "ArabicShaping.txt") { - die "$0: ArabicShaping.txt: $!\n"; - } - - my $ArabLink = Table->New(); - my $ArabLinkGroup = Table->New(); - - my %JoinType; - - while (<IN>) - { - next unless /^[0-9A-Fa-f]+;/; - s/\s+$//; - - my ($hexcode, $name, $link, $linkgroup) = split(/\s*;\s*/); - my $code = hex($hexcode); - $ArabLink->Append($code, $link); - $ArabLinkGroup->Append($code, $linkgroup); - - $JoinType{$link} ||= Table->New(Is => "JoinType$link"); - $JoinType{$link}->Append($code); - } - close IN; - - # $ArabLink->Write("ArabLink.pl"); - # $ArabLinkGroup->Write("ArabLnkGrp.pl"); - - - for (keys %JoinType) { - $JoinType{$_}->Write( - ["lib","jt","$_.pl"], - "JoiningType category '$PropValueAlias{jt}{$_}'" - ); - } -} - -## -## Process EastAsianWidth.txt. -## -sub EastAsianWidth_txt() -{ - if (not open IN, "EastAsianWidth.txt") { - die "$0: EastAsianWidth.txt: $!\n"; - } - - my %EAW; - - while (<IN>) - { - next unless /^[0-9A-Fa-f]+(\.\.[0-9A-Fa-f]+)?;/; - s/#.*//; - s/\s+$//; - - my ($hexcodes, $pv) = split(/\s*;\s*/); - $EAW{$pv} ||= Table->New(Is => "EastAsianWidth$pv"); - my ($start, $end) = split(/\.\./, $hexcodes); - if (defined $end) { - $EAW{$pv}->AppendRange(hex($start), hex($end)); - } else { - $EAW{$pv}->Append(hex($start)); - } - } - close IN; - - - for (keys %EAW) { - $EAW{$_}->Write( - ["lib","ea","$_.pl"], - "EastAsianWidth category '$PropValueAlias{ea}{$_}'" - ); - } -} - -## -## Process HangulSyllableType.txt. -## -sub HangulSyllableType_txt() -{ - if (not open IN, "HangulSyllableType.txt") { - die "$0: HangulSyllableType.txt: $!\n"; - } - - my %HST; - - while (<IN>) - { - next unless /^([0-9A-Fa-f]+)(?:\.\.([0-9A-Fa-f]+))?\s*;\s*(\w+)/; - my ($first, $last, $pv) = (hex($1), hex($2||""), $3); - - $HST{$pv} ||= Table->New(Is => "HangulSyllableType$pv"); - $HST{$pv}->Append($first); - - if ($last) { $HST{$pv}->Extend($last) } - } - close IN; - - for (keys %HST) { - $HST{$_}->Write( - ["lib","hst","$_.pl"], - "HangulSyllableType category '$PropValueAlias{hst}{$_}'" - ); - } -} - -## -## Process Jamo.txt. -## -sub Jamo_txt() -{ - if (not open IN, "Jamo.txt") { - die "$0: Jamo.txt: $!\n"; - } - my $Short = Table->New(); - - while (<IN>) - { - next unless /^([0-9A-Fa-f]+)\s*;\s*(\w*)/; - my ($code, $short) = (hex($1), $2); - - $Short->Append($code, $short); - } - close IN; - # $Short->Write("JamoShort.pl"); -} - -## -## Process Scripts.txt. -## -sub Scripts_txt() -{ - my @ScriptInfo; - - if (not open(IN, "Scripts.txt")) { - die "$0: Scripts.txt: $!\n"; - } - while (<IN>) { - next unless /^([0-9A-Fa-f]+)(?:\.\.([0-9A-Fa-f]+))?\s*;\s*(.+?)\s*\#/; - - # Wait until all the scripts have been read since - # they are not listed in numeric order. - push @ScriptInfo, [ hex($1), hex($2||""), $3 ]; - } - close IN; - - # Now append the scripts properties in their code point order. - - my %Script; - my $Scripts = Table->New(); - - for my $script (sort { $a->[0] <=> $b->[0] } @ScriptInfo) - { - my ($first, $last, $name) = @$script; - $Scripts->Append($first, $name); - - $Script{$name} ||= Table->New(Is => $name, - Desc => "Script '$name'", - Fuzzy => 1); - $Script{$name}->Append($first, $name); - - if ($last) { - $Scripts->Extend($last); - $Script{$name}->Extend($last); - } - } - - # $Scripts->Write("Scripts.pl"); - - ## Common is everything not explicitly assigned to a Script - ## - ## ***shouldn't this be intersected with \p{Assigned}? ****** - ## - New_Prop(Is => 'Common', - $Scripts->Invert, - Desc => 'Pseudo-Script of codepoints not in other Unicode scripts', - Fuzzy => 1); -} - -## -## Given a name like "Close Punctuation", return a regex (that when applied -## with /i) matches any valid form of that name (e.g. "ClosePunctuation", -## "Close-Punctuation", etc.) -## -## Accept any space, dash, or underbar where in the official name there is -## space or a dash (or underbar, but there never is). -## -## -sub NameToRegex($) -{ - my $Name = shift; - $Name =~ s/[- _]/(?:[-_]|\\s+)?/g; - return $Name; -} - -## -## Process Blocks.txt. -## -sub Blocks_txt() -{ - my $Blocks = Table->New(); - my %Blocks; - - if (not open IN, "Blocks.txt") { - die "$0: Blocks.txt: $!\n"; - } - - while (<IN>) - { - #next if not /Private Use$/; - next if not /^([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+)\s*;\s*(.+?)\s*$/; - - my ($first, $last, $name) = (hex($1), hex($2), $3); - - $Blocks->Append($first, $name); - - $Blocks{$name} ||= Table->New(In => $name, - Desc => "Block '$name'", - Fuzzy => 1); - $Blocks{$name}->Append($first, $name); - - if ($last and $last != $first) { - $Blocks->Extend($last); - $Blocks{$name}->Extend($last); - } - } - close IN; - - # $Blocks->Write("Blocks.pl"); -} - -## -## Read in the PropList.txt. It contains extended properties not -## listed in the UnicodeData.txt, such as 'Other_Alphabetic': -## alphabetic but not of the general category L; many modifiers -## belong to this extended property category: while they are not -## alphabets, they are alphabetic in nature. -## -sub PropList_txt() -{ - my @PropInfo; - - if (not open IN, "PropList.txt") { - die "$0: PropList.txt: $!\n"; - } - - while (<IN>) - { - next unless /^([0-9A-Fa-f]+)(?:\.\.([0-9A-Fa-f]+))?\s*;\s*(.+?)\s*\#/; - - # Wait until all the extended properties have been read since - # they are not listed in numeric order. - push @PropInfo, [ hex($1), hex($2||""), $3 ]; - } - close IN; - - # Now append the extended properties in their code point order. - my $Props = Table->New(); - my %Prop; - - for my $prop (sort { $a->[0] <=> $b->[0] } @PropInfo) - { - my ($first, $last, $name) = @$prop; - $Props->Append($first, $name); - - $Prop{$name} ||= Table->New(Is => $name, - Desc => "Extended property '$name'", - Fuzzy => 1); - $Prop{$name}->Append($first, $name); - - if ($last) { - $Props->Extend($last); - $Prop{$name}->Extend($last); - } - } - - for (keys %Prop) { - (my $file = $PA_reverse{$_}) =~ tr/_//d; - # XXX I'm assuming that the names from %Prop don't suffer 8.3 clashes. - $BaseNames{lc $file}++; - $Prop{$_}->Write( - ["lib","gc_sc","$file.pl"], - "Binary property '$_'" - ); - } - - # Alphabetic is L and Other_Alphabetic. - New_Prop(Is => 'Alphabetic', - Table->Merge($Cat{L}, $Prop{Other_Alphabetic}), - Desc => '[\p{L}\p{OtherAlphabetic}]', # use canonical names here - Fuzzy => 1); - - # Lowercase is Ll and Other_Lowercase. - New_Prop(Is => 'Lowercase', - Table->Merge($Cat{Ll}, $Prop{Other_Lowercase}), - Desc => '[\p{Ll}\p{OtherLowercase}]', # use canonical names here - Fuzzy => 1); - - # Uppercase is Lu and Other_Uppercase. - New_Prop(Is => 'Uppercase', - Table->Merge($Cat{Lu}, $Prop{Other_Uppercase}), - Desc => '[\p{Lu}\p{Other_Uppercase}]', # use canonical names here - Fuzzy => 1); - - # Math is Sm and Other_Math. - New_Prop(Is => 'Math', - Table->Merge($Cat{Sm}, $Prop{Other_Math}), - Desc => '[\p{Sm}\p{OtherMath}]', # use canonical names here - Fuzzy => 1); - - # ID_Start is Ll, Lu, Lt, Lm, Lo, and Nl. - New_Prop(Is => 'ID_Start', - Table->Merge(@Cat{qw[Ll Lu Lt Lm Lo Nl]}), - Desc => '[\p{Ll}\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{Nl}]', - Fuzzy => 1); - - # ID_Continue is ID_Start, Mn, Mc, Nd, and Pc. - New_Prop(Is => 'ID_Continue', - Table->Merge(@Cat{qw[Ll Lu Lt Lm Lo Nl Mn Mc Nd Pc ]}), - Desc => '[\p{ID_Start}\p{Mn}\p{Mc}\p{Nd}\p{Pc}]', - Fuzzy => 1); -} - - -## -## These are used in: -## MakePropTestScript() -## WriteAllMappings() -## for making the test script. -## -my %FuzzyNameToTest; -my %ExactNameToTest; - - -## This used only for making the test script -sub GenTests($$$$) -{ - my $FH = shift; - my $Prop = shift; - my $MatchCode = shift; - my $FailCode = shift; - - if (defined $MatchCode) { - printf $FH qq/Expect(1, "\\x{%04X}", '\\p{$Prop}' );\n/, $MatchCode; - printf $FH qq/Expect(0, "\\x{%04X}", '\\p{^$Prop}');\n/, $MatchCode; - printf $FH qq/Expect(0, "\\x{%04X}", '\\P{$Prop}' );\n/, $MatchCode; - printf $FH qq/Expect(1, "\\x{%04X}", '\\P{^$Prop}');\n/, $MatchCode; - } - if (defined $FailCode) { - printf $FH qq/Expect(0, "\\x{%04X}", '\\p{$Prop}' );\n/, $FailCode; - printf $FH qq/Expect(1, "\\x{%04X}", '\\p{^$Prop}');\n/, $FailCode; - printf $FH qq/Expect(1, "\\x{%04X}", '\\P{$Prop}' );\n/, $FailCode; - printf $FH qq/Expect(0, "\\x{%04X}", '\\P{^$Prop}');\n/, $FailCode; - } -} - -## This used only for making the test script -sub ExpectError($$) -{ - my $FH = shift; - my $prop = shift; - - print $FH qq/Error('\\p{$prop}');\n/; - print $FH qq/Error('\\P{$prop}');\n/; -} - -## This used only for making the test script -my @GoodSeps = ( - " ", - "-", - " \t ", - "", - "", - "_", - ); -my @BadSeps = ( - "--", - "__", - " _", - "/" - ); - -## This used only for making the test script -sub RandomlyFuzzifyName($;$) -{ - my $Name = shift; - my $WantError = shift; ## if true, make an error - - my @parts; - for my $part (split /[-\s_]+/, $Name) - { - if (@parts) { - if ($WantError and rand() < 0.3) { - push @parts, $BadSeps[rand(@BadSeps)]; - $WantError = 0; - } else { - push @parts, $GoodSeps[rand(@GoodSeps)]; - } - } - my $switch = int rand(4); - if ($switch == 0) { - push @parts, uc $part; - } elsif ($switch == 1) { - push @parts, lc $part; - } elsif ($switch == 2) { - push @parts, ucfirst $part; - } else { - push @parts, $part; - } - } - my $new = join('', @parts); - - if ($WantError) { - if (rand() >= 0.5) { - $new .= $BadSeps[rand(@BadSeps)]; - } else { - $new = $BadSeps[rand(@BadSeps)] . $new; - } - } - return $new; -} - -## This used only for making the test script -sub MakePropTestScript() -{ - ## this written directly -- it's huge. - force_unlink ("TestProp.pl"); - if (not open OUT, ">TestProp.pl") { - die "$0: TestProp.pl: $!\n"; - } - print OUT <DATA>; - - while (my ($Name, $Table) = each %ExactNameToTest) - { - GenTests(*OUT, $Name, $Table->ValidCode, $Table->InvalidCode); - ExpectError(*OUT, uc $Name) if uc $Name ne $Name; - ExpectError(*OUT, lc $Name) if lc $Name ne $Name; - } - - - while (my ($Name, $Table) = each %FuzzyNameToTest) - { - my $Orig = $CanonicalToOrig{$Name}; - my %Names = ( - $Name => 1, - $Orig => 1, - RandomlyFuzzifyName($Orig) => 1 - ); - - for my $N (keys %Names) { - GenTests(*OUT, $N, $Table->ValidCode, $Table->InvalidCode); - } - - ExpectError(*OUT, RandomlyFuzzifyName($Orig, 'ERROR')); - } - - print OUT "Finished();\n"; - close OUT; -} - - -## -## These are used only in: -## RegisterFileForName() -## WriteAllMappings() -## -my %Exact; ## will become %utf8::Exact; -my %Canonical; ## will become %utf8::Canonical; -my %CaComment; ## Comment for %Canonical entry of same key - -## -## Given info about a name and a datafile that it should be associated with, -## register that assocation in %Exact and %Canonical. -sub RegisterFileForName($$$$) -{ - my $Type = shift; - my $Name = shift; - my $IsFuzzy = shift; - my $filename = shift; - - ## - ## Now in details for the mapping. $Type eq 'Is' has the - ## Is removed, as it will be removed in utf8_heavy when this - ## data is being checked. In keeps its "In", but a second - ## sans-In record is written if it doesn't conflict with - ## anything already there. - ## - if (not $IsFuzzy) - { - if ($Type eq 'Is') { - die "oops[$Name]" if $Exact{$Name}; - $Exact{$Name} = $filename; - } else { - die "oops[$Type$Name]" if $Exact{"$Type$Name"}; - $Exact{"$Type$Name"} = $filename; - $Exact{$Name} = $filename if not $Exact{$Name}; - } - } - else - { - my $CName = lc $Name; - if ($Type eq 'Is') { - die "oops[$CName]" if $Canonical{$CName}; - $Canonical{$CName} = $filename; - $CaComment{$CName} = $Name if $Name =~ tr/A-Z// >= 2; - } else { - die "oops[$Type$CName]" if $Canonical{lc "$Type$CName"}; - $Canonical{lc "$Type$CName"} = $filename; - $CaComment{lc "$Type$CName"} = "$Type$Name"; - if (not $Canonical{$CName}) { - $Canonical{$CName} = $filename; - $CaComment{$CName} = "$Type$Name"; - } - } - } -} - -## -## Writes the info accumulated in -## -## %TableInfo; -## %FuzzyNames; -## %AliasInfo; -## -## -sub WriteAllMappings() -{ - my @MAP; - - ## 'Is' *MUST* come first, so its names have precidence over 'In's - for my $Type ('Is', 'In') - { - my %RawNameToFile; ## a per-$Type cache - - for my $Name (sort {length $a <=> length $b} keys %{$TableInfo{$Type}}) - { - ## Note: $Name is already canonical - my $Table = $TableInfo{$Type}->{$Name}; - my $IsFuzzy = $FuzzyNames{$Type}->{$Name}; - - ## Need an 8.3 safe filename (which means "an 8 safe" $filename) - my $filename; - { - ## 'Is' items lose 'Is' from the basename. - $filename = $Type eq 'Is' ? - ($PVA_reverse{sc}{$Name} || $Name) : - "$Type$Name"; - - $filename =~ s/[^\w_]+/_/g; # "L&" -> "L_" - substr($filename, 8) = '' if length($filename) > 8; - - ## - ## Make sure the basename doesn't conflict with something we - ## might have already written. If we have, say, - ## InGreekExtended1 - ## InGreekExtended2 - ## they become - ## InGreekE - ## InGreek2 - ## - while (my $num = $BaseNames{lc $filename}++) - { - $num++; ## so basenames with numbers start with '2', which - ## just looks more natural. - ## Want to append $num, but if it'll make the basename longer - ## than 8 characters, pre-truncate $filename so that the result - ## is acceptable. - my $delta = length($filename) + length($num) - 8; - if ($delta > 0) { - substr($filename, -$delta) = $num; - } else { - $filename .= $num; - } - } - }; - - ## - ## Construct a nice comment to add to the file, and build data - ## for the "./Properties" file along the way. - ## - my $Comment; - { - my $Desc = $TableDesc{$Type}->{$Name} || ""; - ## get list of names this table is reference by - my @Supported = $Name; - while (my ($Orig, $Alias) = each %{ $AliasInfo{$Type} }) - { - if ($Orig eq $Name) { - push @Supported, $Alias; - } - } - - my $TypeToShow = $Type eq 'Is' ? "" : $Type; - my $OrigProp; - - $Comment = "This file supports:\n"; - for my $N (@Supported) - { - my $IsFuzzy = $FuzzyNames{$Type}->{$N}; - my $Prop = "\\p{$TypeToShow$Name}"; - $OrigProp = $Prop if not $OrigProp; #cache for aliases - if ($IsFuzzy) { - $Comment .= "\t$Prop (and fuzzy permutations)\n"; - } else { - $Comment .= "\t$Prop\n"; - } - my $MyDesc = ($N eq $Name) ? $Desc : "Alias for $OrigProp ($Desc)"; - - push @MAP, sprintf("%s %-42s %s\n", - $IsFuzzy ? '*' : ' ', $Prop, $MyDesc); - } - if ($Desc) { - $Comment .= "\nMeaning: $Desc\n"; - } - - } - ## - ## Okay, write the file... - ## - $Table->Write(["lib","gc_sc","$filename.pl"], $Comment); - - ## and register it - $RawNameToFile{$Name} = $filename; - RegisterFileForName($Type => $Name, $IsFuzzy, $filename); - - if ($IsFuzzy) - { - my $CName = CanonicalName($Type . '_'. $Name); - $FuzzyNameToTest{$Name} = $Table if !$FuzzyNameToTest{$Name}; - $FuzzyNameToTest{$CName} = $Table if !$FuzzyNameToTest{$CName}; - } else { - $ExactNameToTest{$Name} = $Table; - } - - } - - ## Register aliase info - for my $Name (sort {length $a <=> length $b} keys %{$AliasInfo{$Type}}) - { - my $Alias = $AliasInfo{$Type}->{$Name}; - my $IsFuzzy = $FuzzyNames{$Type}->{$Alias}; - my $filename = $RawNameToFile{$Name}; - die "oops [$Alias]->[$Name]" if not $filename; - RegisterFileForName($Type => $Alias, $IsFuzzy, $filename); - - my $Table = $TableInfo{$Type}->{$Name}; - die "oops" if not $Table; - if ($IsFuzzy) - { - my $CName = CanonicalName($Type .'_'. $Alias); - $FuzzyNameToTest{$Alias} = $Table if !$FuzzyNameToTest{$Alias}; - $FuzzyNameToTest{$CName} = $Table if !$FuzzyNameToTest{$CName}; - } else { - $ExactNameToTest{$Alias} = $Table; - } - } - } - - ## - ## Write out the property list - ## - { - my @OUT = ( - "##\n", - "## This file created by $0\n", - "## List of built-in \\p{...}/\\P{...} properties.\n", - "##\n", - "## '*' means name may be 'fuzzy'\n", - "##\n\n", - sort { substr($a,2) cmp substr($b, 2) } @MAP, - ); - WriteIfChanged('Properties', @OUT); - } - - use Text::Tabs (); ## using this makes the files about half the size - - ## Write Exact.pl - { - my @OUT = ( - $HEADER, - "##\n", - "## Data in this file used by ../utf8_heavy.pl\n", - "##\n\n", - "## Mapping from name to filename in ./lib/gc_sc\n", - "%utf8::Exact = (\n", - ); - - $Exact{InGreek} = 'InGreekA'; # this is evil kludge - for my $Name (sort keys %Exact) - { - my $File = $Exact{$Name}; - $Name = $Name =~ m/\W/ ? qq/'$Name'/ : " $Name "; - my $Text = sprintf("%-15s => %s,\n", $Name, qq/'$File'/); - push @OUT, Text::Tabs::unexpand($Text); - } - push @OUT, ");\n1;\n"; - - WriteIfChanged('Exact.pl', @OUT); - } - - ## Write Canonical.pl - { - my @OUT = ( - $HEADER, - "##\n", - "## Data in this file used by ../utf8_heavy.pl\n", - "##\n\n", - "## Mapping from lc(canonical name) to filename in ./lib\n", - "%utf8::Canonical = (\n", - ); - my $Trail = ""; ## used just to keep the spacing pretty - for my $Name (sort keys %Canonical) - { - my $File = $Canonical{$Name}; - if ($CaComment{$Name}) { - push @OUT, "\n" if not $Trail; - push @OUT, " # $CaComment{$Name}\n"; - $Trail = "\n"; - } else { - $Trail = ""; - } - $Name = $Name =~ m/\W/ ? qq/'$Name'/ : " $Name "; - my $Text = sprintf(" %-41s => %s,\n$Trail", $Name, qq/'$File'/); - push @OUT, Text::Tabs::unexpand($Text); - } - push @OUT, ");\n1\n"; - WriteIfChanged('Canonical.pl', @OUT); - } - - MakePropTestScript() if $MakeTestScript; -} - - -sub SpecialCasing_txt() -{ - # - # Read in the special cases. - # - - my %CaseInfo; - - if (not open IN, "SpecialCasing.txt") { - die "$0: SpecialCasing.txt: $!\n"; - } - while (<IN>) { - next unless /^[0-9A-Fa-f]+;/; - s/\#.*//; - s/\s+$//; - - my ($code, $lower, $title, $upper, $condition) = split(/\s*;\s*/); - - if ($condition) { # not implemented yet - print "# SKIPPING $_\n" if $Verbose; - next; - } - - # Wait until all the special cases have been read since - # they are not listed in numeric order. - my $ix = hex($code); - push @{$CaseInfo{Lower}}, [ $ix, $code, $lower ] - unless $code eq $lower; - push @{$CaseInfo{Title}}, [ $ix, $code, $title ] - unless $code eq $title; - push @{$CaseInfo{Upper}}, [ $ix, $code, $upper ] - unless $code eq $upper; - } - close IN; - - # Now write out the special cases properties in their code point order. - # Prepend them to the To/{Upper,Lower,Title}.pl. - - for my $case (qw(Lower Title Upper)) - { - my $NormalCase = do "To/$case.pl" || die "$0: $@\n"; - - my @OUT = - ( - $HEADER, "\n", - "# The key UTF-8 _bytes_, the value UTF-8 (speed hack)\n", - "%utf8::ToSpec$case =\n(\n", - ); - - for my $prop (sort { $a->[0] <=> $b->[0] } @{$CaseInfo{$case}}) { - my ($ix, $code, $to) = @$prop; - my $tostr = - join "", map { sprintf "\\x{%s}", $_ } split ' ', $to; - push @OUT, sprintf qq["%s" => "$tostr",\n], join("", map { sprintf "\\x%02X", $_ } unpack("U0C*", pack("U", $ix))); - # Remove any single-character mappings for - # the same character since we are going for - # the special casing rules. - $NormalCase =~ s/^$code\t\t\w+\n//m; - } - push @OUT, ( - ");\n\n", - "return <<'END';\n", - $NormalCase, - "END\n" - ); - WriteIfChanged(["To","$case.pl"], @OUT); - } -} - -# -# Read in the case foldings. -# -# We will do full case folding, C + F + I (see CaseFolding.txt). -# -sub CaseFolding_txt() -{ - if (not open IN, "CaseFolding.txt") { - die "$0: CaseFolding.txt: $!\n"; - } - - my $Fold = Table->New(); - my %Fold; - - while (<IN>) { - # Skip status 'S', simple case folding - next unless /^([0-9A-Fa-f]+)\s*;\s*([CFI])\s*;\s*([0-9A-Fa-f]+(?: [0-9A-Fa-f]+)*)\s*;/; - - my ($code, $status, $fold) = (hex($1), $2, $3); - - if ($status eq 'C') { # Common: one-to-one folding - # No append() since several codes may fold into one. - $Fold->RawAppendRange($code, $code, $fold); - } else { # F: full, or I: dotted uppercase I -> dotless lowercase I - $Fold{$code} = $fold; - } - } - close IN; - - $Fold->Write("To/Fold.pl"); - - # - # Prepend the special foldings to the common foldings. - # - my $CommonFold = do "To/Fold.pl" || die "$0: To/Fold.pl: $!\n"; - - my @OUT = - ( - $HEADER, "\n", - "# The ke UTF-8 _bytes_, the value UTF-8 (speed hack)\n", - "%utf8::ToSpecFold =\n(\n", - ); - for my $code (sort { $a <=> $b } keys %Fold) { - my $foldstr = - join "", map { sprintf "\\x{%s}", $_ } split ' ', $Fold{$code}; - push @OUT, sprintf qq["%s" => "$foldstr",\n], join("", map { sprintf "\\x%02X", $_ } unpack("U0C*", pack("U", $code))); - } - push @OUT, ( - ");\n\n", - "return <<'END';\n", - $CommonFold, - "END\n", - ); - - WriteIfChanged(["To","Fold.pl"], @OUT); -} - -## Do it.... - -Build_Aliases(); -UnicodeData_Txt(); -PropList_txt(); - -Scripts_txt(); -Blocks_txt(); - -WriteAllMappings(); - -LineBreak_Txt(); -ArabicShaping_txt(); -EastAsianWidth_txt(); -HangulSyllableType_txt(); -Jamo_txt(); -SpecialCasing_txt(); -CaseFolding_txt(); - -if ( $FileList and $MakeList ) { - - print "Updating '$FileList'\n" - if ($Verbose); - - open my $ofh,">",$FileList - or die "Can't write to '$FileList':$!"; - print $ofh <<"EOFHEADER"; -# -# mktables.lst -- File list for mktables. -# -# Autogenerated on @{[scalar localtime]} -# -# - First section is input files -# (mktables itself is automatically included) -# - Section seperator is /^=+\$/ -# - Second section is a list of output files. -# - Lines matching /^\\s*#/ are treated as comments -# which along with blank lines are ignored. -# - -# Input files: - -EOFHEADER - my @input=("version",glob('*.txt')); - print $ofh "$_\n" for - @input, - "\n=================================\n", - "# Output files:\n", - # special files - "Properties"; - - - require File::Find; - my $count=0; - File::Find::find({ - no_chdir=>1, - wanted=>sub { - if (/\.pl$/) { - s!^\./!!; - print $ofh "$_\n"; - $count++; - } - }, - },"."); - - print $ofh "\n# ",scalar(@input)," input files\n", - "# ",scalar($count+1)," output files\n\n", - "# End list\n"; - close $ofh - or warn "Failed to close $ofh: $!"; - - print "Filelist has ",scalar(@input)," input files and ", - scalar($count+1)," output files\n" - if $Verbose; -} -print "All done\n" if $Verbose; -exit(0); - -## TRAILING CODE IS USED BY MakePropTestScript() -__DATA__ -use strict; -use warnings; - -my $Tests = 0; -my $Fails = 0; - -sub Expect($$$) -{ - my $Expect = shift; - my $String = shift; - my $Regex = shift; - my $Line = (caller)[2]; - - $Tests++; - my $RegObj; - my $result = eval { - $RegObj = qr/$Regex/; - $String =~ $RegObj ? 1 : 0 - }; - - if (not defined $result) { - print "couldn't compile /$Regex/ on $0 line $Line: $@\n"; - $Fails++; - } elsif ($result ^ $Expect) { - print "bad result (expected $Expect) on $0 line $Line: $@\n"; - $Fails++; - } -} - -sub Error($) -{ - my $Regex = shift; - $Tests++; - if (eval { 'x' =~ qr/$Regex/; 1 }) { - $Fails++; - my $Line = (caller)[2]; - print "expected error for /$Regex/ on $0 line $Line: $@\n"; - } -} - -sub Finished() -{ - if ($Fails == 0) { - print "All $Tests tests passed.\n"; - exit(0); - } else { - print "$Tests tests, $Fails failed!\n"; - exit(-1); - } -} diff --git a/Master/tlpkg/tlperl.old/lib/unicore/mktables.lst b/Master/tlpkg/tlperl.old/lib/unicore/mktables.lst deleted file mode 100644 index c3b6dc8b32b..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/mktables.lst +++ /dev/null @@ -1,505 +0,0 @@ -# -# mktables.lst -- File list for mktables. -# -# Autogenerated on Sun Apr 24 21:25:22 2005 -# -# - First section is input files -# (mktables itself is automatically included) -# - Section seperator is /^=+$/ -# - Second section is a list of output files. -# - Lines matching /^\s*#/ are treated as comments -# which along with blank lines are ignored. -# - -# Input files: - -version -ArabicShaping.txt -BidiMirroring.txt -Blocks.txt -CaseFolding.txt -CompositionExclusions.txt -EastAsianWidth.txt -HangulSyllableType.txt -Index.txt -Jamo.txt -LineBreak.txt -NamedSequences.txt -NamesList.txt -NormalizationCorrections.txt -PropertyAliases.txt -PropList.txt -PropValueAliases.txt -ReadMe.txt -Scripts.txt -SpecialCasing.txt -StandardizedVariants.txt -UnicodeData.txt - -================================= - -# Output files: - -Properties -Canonical.pl -CombiningClass.pl -Decomposition.pl -Exact.pl -Name.pl -PVA.pl -lib/bc/AL.pl -lib/bc/AN.pl -lib/bc/B.pl -lib/bc/BN.pl -lib/bc/CS.pl -lib/bc/EN.pl -lib/bc/ES.pl -lib/bc/ET.pl -lib/bc/L.pl -lib/bc/LRE.pl -lib/bc/LRO.pl -lib/bc/NSM.pl -lib/bc/ON.pl -lib/bc/PDF.pl -lib/bc/R.pl -lib/bc/RLE.pl -lib/bc/RLO.pl -lib/bc/S.pl -lib/bc/WS.pl -lib/ccc/A.pl -lib/ccc/AL.pl -lib/ccc/AR.pl -lib/ccc/ATAR.pl -lib/ccc/ATB.pl -lib/ccc/ATBL.pl -lib/ccc/B.pl -lib/ccc/BL.pl -lib/ccc/BR.pl -lib/ccc/DA.pl -lib/ccc/DB.pl -lib/ccc/IS.pl -lib/ccc/KV.pl -lib/ccc/L.pl -lib/ccc/NK.pl -lib/ccc/NR.pl -lib/ccc/OV.pl -lib/ccc/R.pl -lib/ccc/VR.pl -lib/dt/can.pl -lib/dt/com.pl -lib/dt/enc.pl -lib/dt/fin.pl -lib/dt/font.pl -lib/dt/fra.pl -lib/dt/init.pl -lib/dt/iso.pl -lib/dt/med.pl -lib/dt/nar.pl -lib/dt/nb.pl -lib/dt/sml.pl -lib/dt/sqr.pl -lib/dt/sub.pl -lib/dt/sup.pl -lib/dt/vert.pl -lib/dt/wide.pl -lib/ea/A.pl -lib/ea/F.pl -lib/ea/H.pl -lib/ea/N.pl -lib/ea/Na.pl -lib/ea/W.pl -lib/gc_sc/AHex.pl -lib/gc_sc/Alnum.pl -lib/gc_sc/Alpha.pl -lib/gc_sc/Alphabet.pl -lib/gc_sc/Any.pl -lib/gc_sc/Arab.pl -lib/gc_sc/Armn.pl -lib/gc_sc/ASCII.pl -lib/gc_sc/AsciiHex.pl -lib/gc_sc/Assigned.pl -lib/gc_sc/Beng.pl -lib/gc_sc/BidiC.pl -lib/gc_sc/BidiCont.pl -lib/gc_sc/Blank.pl -lib/gc_sc/Bopo.pl -lib/gc_sc/Brai.pl -lib/gc_sc/Bugi.pl -lib/gc_sc/Buhd.pl -lib/gc_sc/C.pl -lib/gc_sc/Canadian.pl -lib/gc_sc/Cc.pl -lib/gc_sc/Cf.pl -lib/gc_sc/Cher.pl -lib/gc_sc/Cn.pl -lib/gc_sc/Cntrl.pl -lib/gc_sc/Co.pl -lib/gc_sc/Copt.pl -lib/gc_sc/Cprt.pl -lib/gc_sc/Cs.pl -lib/gc_sc/Cyrl.pl -lib/gc_sc/Dash.pl -lib/gc_sc/Dash2.pl -lib/gc_sc/Dep.pl -lib/gc_sc/Deprecat.pl -lib/gc_sc/Deva.pl -lib/gc_sc/Dia.pl -lib/gc_sc/Diacriti.pl -lib/gc_sc/Digit.pl -lib/gc_sc/Dsrt.pl -lib/gc_sc/Ethi.pl -lib/gc_sc/Ext.pl -lib/gc_sc/Extender.pl -lib/gc_sc/Geor.pl -lib/gc_sc/Glag.pl -lib/gc_sc/Goth.pl -lib/gc_sc/Graph.pl -lib/gc_sc/Grapheme.pl -lib/gc_sc/Grek.pl -lib/gc_sc/GrLink.pl -lib/gc_sc/Gujr.pl -lib/gc_sc/Guru.pl -lib/gc_sc/Hang.pl -lib/gc_sc/Hani.pl -lib/gc_sc/Hano.pl -lib/gc_sc/Hebr.pl -lib/gc_sc/Hex.pl -lib/gc_sc/HexDigit.pl -lib/gc_sc/Hira.pl -lib/gc_sc/Hyphen.pl -lib/gc_sc/Hyphen2.pl -lib/gc_sc/IdContin.pl -lib/gc_sc/Ideo.pl -lib/gc_sc/Ideograp.pl -lib/gc_sc/IDSB.pl -lib/gc_sc/IdsBinar.pl -lib/gc_sc/IDST.pl -lib/gc_sc/IdStart.pl -lib/gc_sc/IdsTrina.pl -lib/gc_sc/InAegean.pl -lib/gc_sc/InAlphab.pl -lib/gc_sc/InAncie2.pl -lib/gc_sc/InAncien.pl -lib/gc_sc/InArabi2.pl -lib/gc_sc/InArabi3.pl -lib/gc_sc/InArabi4.pl -lib/gc_sc/InArabic.pl -lib/gc_sc/InArmeni.pl -lib/gc_sc/InArrows.pl -lib/gc_sc/InBasicL.pl -lib/gc_sc/InBengal.pl -lib/gc_sc/InBlockE.pl -lib/gc_sc/InBopom2.pl -lib/gc_sc/InBopomo.pl -lib/gc_sc/InBoxDra.pl -lib/gc_sc/InBraill.pl -lib/gc_sc/InBugine.pl -lib/gc_sc/InBuhid.pl -lib/gc_sc/InByzant.pl -lib/gc_sc/InCherok.pl -lib/gc_sc/InCjkCo2.pl -lib/gc_sc/InCjkCo3.pl -lib/gc_sc/InCjkCo4.pl -lib/gc_sc/InCjkCom.pl -lib/gc_sc/InCjkRad.pl -lib/gc_sc/InCjkStr.pl -lib/gc_sc/InCjkSym.pl -lib/gc_sc/InCjkUn2.pl -lib/gc_sc/InCjkUn3.pl -lib/gc_sc/InCjkUni.pl -lib/gc_sc/InCombi2.pl -lib/gc_sc/InCombi3.pl -lib/gc_sc/InCombi4.pl -lib/gc_sc/InCombin.pl -lib/gc_sc/InContro.pl -lib/gc_sc/InCoptic.pl -lib/gc_sc/InCurren.pl -lib/gc_sc/InCyprio.pl -lib/gc_sc/InCyril2.pl -lib/gc_sc/InCyrill.pl -lib/gc_sc/InDesere.pl -lib/gc_sc/InDevana.pl -lib/gc_sc/InDingba.pl -lib/gc_sc/InEnclo2.pl -lib/gc_sc/InEnclos.pl -lib/gc_sc/InEthio2.pl -lib/gc_sc/InEthio3.pl -lib/gc_sc/InEthiop.pl -lib/gc_sc/InGenera.pl -lib/gc_sc/InGeomet.pl -lib/gc_sc/InGeorg2.pl -lib/gc_sc/InGeorgi.pl -lib/gc_sc/InGlagol.pl -lib/gc_sc/InGothic.pl -lib/gc_sc/InGreekA.pl -lib/gc_sc/InGreekE.pl -lib/gc_sc/InGujara.pl -lib/gc_sc/InGurmuk.pl -lib/gc_sc/InHalfwi.pl -lib/gc_sc/InHangu2.pl -lib/gc_sc/InHangu3.pl -lib/gc_sc/InHangul.pl -lib/gc_sc/InHanuno.pl -lib/gc_sc/InHebrew.pl -lib/gc_sc/InHighPr.pl -lib/gc_sc/InHighSu.pl -lib/gc_sc/InHiraga.pl -lib/gc_sc/InIdeogr.pl -lib/gc_sc/InIpaExt.pl -lib/gc_sc/InKanbun.pl -lib/gc_sc/InKangxi.pl -lib/gc_sc/InKannad.pl -lib/gc_sc/InKatak2.pl -lib/gc_sc/InKataka.pl -lib/gc_sc/InKharos.pl -lib/gc_sc/InKhmer.pl -lib/gc_sc/InKhmerS.pl -lib/gc_sc/InLao.pl -lib/gc_sc/InLatin1.pl -lib/gc_sc/InLatin2.pl -lib/gc_sc/InLatin3.pl -lib/gc_sc/InLatinE.pl -lib/gc_sc/InLetter.pl -lib/gc_sc/InLimbu.pl -lib/gc_sc/InLinea2.pl -lib/gc_sc/InLinear.pl -lib/gc_sc/InLowSur.pl -lib/gc_sc/InMalaya.pl -lib/gc_sc/InMathe2.pl -lib/gc_sc/InMathem.pl -lib/gc_sc/InMisce2.pl -lib/gc_sc/InMisce3.pl -lib/gc_sc/InMisce4.pl -lib/gc_sc/InMisce5.pl -lib/gc_sc/InMiscel.pl -lib/gc_sc/InModifi.pl -lib/gc_sc/InMongol.pl -lib/gc_sc/InMusica.pl -lib/gc_sc/InMyanma.pl -lib/gc_sc/InNewTai.pl -lib/gc_sc/InNumber.pl -lib/gc_sc/InOgham.pl -lib/gc_sc/InOldIta.pl -lib/gc_sc/InOldPer.pl -lib/gc_sc/InOptica.pl -lib/gc_sc/InOriya.pl -lib/gc_sc/InOsmany.pl -lib/gc_sc/InPhone2.pl -lib/gc_sc/InPhonet.pl -lib/gc_sc/InPrivat.pl -lib/gc_sc/InRunic.pl -lib/gc_sc/InShavia.pl -lib/gc_sc/InSinhal.pl -lib/gc_sc/InSmallF.pl -lib/gc_sc/InSpacin.pl -lib/gc_sc/InSpecia.pl -lib/gc_sc/InSupers.pl -lib/gc_sc/InSuppl2.pl -lib/gc_sc/InSuppl3.pl -lib/gc_sc/InSuppl4.pl -lib/gc_sc/InSuppl5.pl -lib/gc_sc/InSuppl6.pl -lib/gc_sc/InSupple.pl -lib/gc_sc/InSyloti.pl -lib/gc_sc/InSyriac.pl -lib/gc_sc/InTagalo.pl -lib/gc_sc/InTagban.pl -lib/gc_sc/InTags.pl -lib/gc_sc/InTaiLe.pl -lib/gc_sc/InTaiXua.pl -lib/gc_sc/InTamil.pl -lib/gc_sc/InTelugu.pl -lib/gc_sc/InThaana.pl -lib/gc_sc/InThai.pl -lib/gc_sc/InTibeta.pl -lib/gc_sc/InTifina.pl -lib/gc_sc/InUgarit.pl -lib/gc_sc/InUnifie.pl -lib/gc_sc/InVaria2.pl -lib/gc_sc/InVariat.pl -lib/gc_sc/InVertic.pl -lib/gc_sc/InYijing.pl -lib/gc_sc/InYiRadi.pl -lib/gc_sc/InYiSyll.pl -lib/gc_sc/JoinC.pl -lib/gc_sc/JoinCont.pl -lib/gc_sc/Kana.pl -lib/gc_sc/Khar.pl -lib/gc_sc/Khmr.pl -lib/gc_sc/Knda.pl -lib/gc_sc/L.pl -lib/gc_sc/Laoo.pl -lib/gc_sc/Latn.pl -lib/gc_sc/LC.pl -lib/gc_sc/Limb.pl -lib/gc_sc/LinearB.pl -lib/gc_sc/Ll.pl -lib/gc_sc/Lm.pl -lib/gc_sc/Lo.pl -lib/gc_sc/LOE.pl -lib/gc_sc/LogicalO.pl -lib/gc_sc/Lower.pl -lib/gc_sc/Lowercas.pl -lib/gc_sc/Lt.pl -lib/gc_sc/Lu.pl -lib/gc_sc/M.pl -lib/gc_sc/Math.pl -lib/gc_sc/Mc.pl -lib/gc_sc/Me.pl -lib/gc_sc/Mlym.pl -lib/gc_sc/Mn.pl -lib/gc_sc/Mong.pl -lib/gc_sc/Mymr.pl -lib/gc_sc/N.pl -lib/gc_sc/NChar.pl -lib/gc_sc/Nd.pl -lib/gc_sc/NewTaiLu.pl -lib/gc_sc/Nl.pl -lib/gc_sc/No.pl -lib/gc_sc/Nonchara.pl -lib/gc_sc/OAlpha.pl -lib/gc_sc/ODI.pl -lib/gc_sc/Ogam.pl -lib/gc_sc/OGrExt.pl -lib/gc_sc/OIDC.pl -lib/gc_sc/OIDS.pl -lib/gc_sc/OldItali.pl -lib/gc_sc/OldPersi.pl -lib/gc_sc/OLower.pl -lib/gc_sc/OMath.pl -lib/gc_sc/Orya.pl -lib/gc_sc/Osma.pl -lib/gc_sc/OtherAlp.pl -lib/gc_sc/OtherDef.pl -lib/gc_sc/OtherGra.pl -lib/gc_sc/OtherIdC.pl -lib/gc_sc/OtherIdS.pl -lib/gc_sc/OtherLow.pl -lib/gc_sc/OtherMat.pl -lib/gc_sc/OtherUpp.pl -lib/gc_sc/OUpper.pl -lib/gc_sc/P.pl -lib/gc_sc/PatSyn.pl -lib/gc_sc/PatternS.pl -lib/gc_sc/PatternW.pl -lib/gc_sc/PatWS.pl -lib/gc_sc/Pc.pl -lib/gc_sc/Pd.pl -lib/gc_sc/Pe.pl -lib/gc_sc/Pf.pl -lib/gc_sc/Pi.pl -lib/gc_sc/Po.pl -lib/gc_sc/Print.pl -lib/gc_sc/Ps.pl -lib/gc_sc/Punct.pl -lib/gc_sc/Qaai.pl -lib/gc_sc/QMark.pl -lib/gc_sc/Quotatio.pl -lib/gc_sc/Radical.pl -lib/gc_sc/Radical2.pl -lib/gc_sc/Runr.pl -lib/gc_sc/S.pl -lib/gc_sc/Sc.pl -lib/gc_sc/SD.pl -lib/gc_sc/Shaw.pl -lib/gc_sc/Sinh.pl -lib/gc_sc/Sk.pl -lib/gc_sc/Sm.pl -lib/gc_sc/So.pl -lib/gc_sc/SoftDott.pl -lib/gc_sc/Space.pl -lib/gc_sc/SpacePer.pl -lib/gc_sc/STerm.pl -lib/gc_sc/Sterm2.pl -lib/gc_sc/SylotiNa.pl -lib/gc_sc/Syrc.pl -lib/gc_sc/Tagb.pl -lib/gc_sc/TaiLe.pl -lib/gc_sc/Taml.pl -lib/gc_sc/Telu.pl -lib/gc_sc/Term.pl -lib/gc_sc/Terminal.pl -lib/gc_sc/Tfng.pl -lib/gc_sc/Tglg.pl -lib/gc_sc/Thaa.pl -lib/gc_sc/Thai.pl -lib/gc_sc/Tibt.pl -lib/gc_sc/Title.pl -lib/gc_sc/Ugar.pl -lib/gc_sc/UIdeo.pl -lib/gc_sc/UnifiedI.pl -lib/gc_sc/Upper.pl -lib/gc_sc/Uppercas.pl -lib/gc_sc/Variatio.pl -lib/gc_sc/VS.pl -lib/gc_sc/WhiteSpa.pl -lib/gc_sc/Word.pl -lib/gc_sc/WSpace.pl -lib/gc_sc/XDigit.pl -lib/gc_sc/Yiii.pl -lib/gc_sc/Z.pl -lib/gc_sc/Zl.pl -lib/gc_sc/Zp.pl -lib/gc_sc/Zs.pl -lib/gc_sc/Zyyy.pl -lib/gc_sc/_CanonDC.pl -lib/gc_sc/_CaseIgn.pl -lib/gc_sc/_CombAbo.pl -lib/hst/L.pl -lib/hst/LV.pl -lib/hst/LVT.pl -lib/hst/T.pl -lib/hst/V.pl -lib/jt/C.pl -lib/jt/D.pl -lib/jt/R.pl -lib/jt/U.pl -lib/lb/AI.pl -lib/lb/AL.pl -lib/lb/B2.pl -lib/lb/BA.pl -lib/lb/BB.pl -lib/lb/BK.pl -lib/lb/CB.pl -lib/lb/CL.pl -lib/lb/CM.pl -lib/lb/CR.pl -lib/lb/EX.pl -lib/lb/GL.pl -lib/lb/H2.pl -lib/lb/H3.pl -lib/lb/HY.pl -lib/lb/ID.pl -lib/lb/IN.pl -lib/lb/IS.pl -lib/lb/JL.pl -lib/lb/JT.pl -lib/lb/JV.pl -lib/lb/LF.pl -lib/lb/NL.pl -lib/lb/NS.pl -lib/lb/NU.pl -lib/lb/OP.pl -lib/lb/PO.pl -lib/lb/PR.pl -lib/lb/QU.pl -lib/lb/SA.pl -lib/lb/SG.pl -lib/lb/SP.pl -lib/lb/SY.pl -lib/lb/WJ.pl -lib/lb/XX.pl -lib/lb/ZW.pl -lib/nt/De.pl -lib/nt/Di.pl -lib/nt/Nu.pl -To/Digit.pl -To/Fold.pl -To/Lower.pl -To/Title.pl -To/Upper.pl - -# 22 input files -# 458 output files - -# End list diff --git a/Master/tlpkg/tlperl.old/lib/unicore/version b/Master/tlpkg/tlperl.old/lib/unicore/version deleted file mode 100644 index ee74734aa22..00000000000 --- a/Master/tlpkg/tlperl.old/lib/unicore/version +++ /dev/null @@ -1 +0,0 @@ -4.1.0 diff --git a/Master/tlpkg/tlperl.old/lib/utf8.pm b/Master/tlpkg/tlperl.old/lib/utf8.pm deleted file mode 100644 index 56c991bef9a..00000000000 --- a/Master/tlpkg/tlperl.old/lib/utf8.pm +++ /dev/null @@ -1,214 +0,0 @@ -package utf8; - -$utf8::hint_bits = 0x00800000; - -our $VERSION = '1.06'; - -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; - require Carp; - 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; - - # Convert a Perl scalar to/from UTF-8. - $num_octets = utf8::upgrade($string); - $success = utf8::downgrade($string[, FAIL_OK]); - - # Change the native bytes of a Perl scalar to/from UTF-8 bytes. - utf8::encode($string); - utf8::decode($string); - - $flag = utf8::is_utf8(STRING); # since Perl 5.8.1 - $flag = utf8::valid(STRING); - -=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. - -B<Do not use this pragma for anything else than telling Perl that your -script is written in UTF-8.> The utility functions described below are -useful for their own purposes, but they are not really part of the -"pragmatic" effect. - -Until UTF-8 becomes the default format for source text, either this -pragma or the L<encoding> 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. - -See also the effects of the C<-C> switch and its cousin, the -C<$ENV{PERL_UNICODE}>, in L<perlrun>. - -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;>. - -If you want to automatically upgrade your 8-bit legacy bytes to UTF-8, -use the L<encoding> pragma instead of this pragma. For example, if -you want to implicitly upgrade your ISO 8859-1 (Latin-1) bytes to UTF-8 -as used in e.g. C<chr()> and C<\x{...}>, try this: - - use encoding "latin-1"; - my $c = chr(0xc4); - my $x = "\x{c5}"; - -In case you are wondering: yes, C<use encoding 'utf8';> works much -the same as C<use utf8;>. - -=head2 Utility functions - -The following functions are defined in the C<utf8::> package by the -Perl core. You do not need to say C<use utf8> to use these and in fact -you should not say that unless you really want to have UTF-8 source code. - -=over 4 - -=item * $num_octets = utf8::upgrade($string) - -Converts in-place the octet sequence in the native encoding -(Latin-1 or EBCDIC) to the equivalent character sequence in I<UTF-X>. -I<$string> already encoded as characters does no harm. -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 Unicode on strings -containing characters in the range 0x80-0xFF (on ASCII and -derivatives). - -B<Note that this function does not handle arbitrary encodings.> -Therefore I<Encode.pm> is recommended for the general purposes. - -Affected by the encoding pragma. - -=item * $success = utf8::downgrade($string[, FAIL_OK]) - -Converts in-place the character sequence in I<UTF-X> -to the equivalent octet sequence in the native encoding (Latin-1 or EBCDIC). -I<$string> already encoded as octets does no harm. -Returns true on success. On failure dies or, if the value of -C<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. - -B<Note that this function does not handle arbitrary encodings.> -Therefore I<Encode.pm> is recommended for the general purposes. - -B<Not> affected by the encoding pragma. - -B<NOTE:> this function is experimental and may change -or be removed without notice. - -=item * utf8::encode($string) - -Converts in-place the character sequence to the corresponding octet sequence -in I<UTF-X>. The UTF-8 flag is turned off. Returns nothing. - -B<Note that this function does not handle arbitrary encodings.> -Therefore I<Encode.pm> is recommended for the general purposes. - -=item * utf8::decode($string) - -Attempts to convert in-place the octet sequence in I<UTF-X> -to the corresponding character sequence. The UTF-8 flag is turned on -only if the source string contains multiple-byte I<UTF-X> characters. -If I<$string> is invalid as I<UTF-X>, returns false; otherwise returns true. - -B<Note that this function does not handle arbitrary encodings.> -Therefore I<Encode.pm> is recommended for the general purposes. - -B<NOTE:> this function is experimental and may change -or be removed without notice. - -=item * $flag = utf8::is_utf8(STRING) - -(Since Perl 5.8.1) Test whether STRING is in UTF-8. Functionally -the same as Encode::is_utf8(). - -=item * $flag = utf8::valid(STRING) - -[INTERNAL] Test whether STRING is in a consistent state regarding -UTF-8. Will return true is well-formed UTF-8 and has the UTF-8 flag -on B<or> if string is held as bytes (both these states are 'consistent'). -Main reason for this routine is to allow Perl's testsuite to check -that operations have left strings in a consistent state. You most -probably want to use utf8::is_utf8() instead. - -=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 and 5.8.1 implementation -the functions utf8::is_utf8, 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<perluniintro>, L<encoding>, L<perlrun>, L<bytes>, L<perlunicode> - -=cut diff --git a/Master/tlpkg/tlperl.old/lib/utf8_heavy.pl b/Master/tlpkg/tlperl.old/lib/utf8_heavy.pl deleted file mode 100644 index b6fdeb997b3..00000000000 --- a/Master/tlpkg/tlperl.old/lib/utf8_heavy.pl +++ /dev/null @@ -1,412 +0,0 @@ -package utf8; -use strict; -use warnings; - -sub DEBUG () { 0 } - -sub DESTROY {} - -my %Cache; - -our (%PropertyAlias, %PA_reverse, %PropValueAlias, %PVA_reverse, %PVA_abbr_map); - -sub croak { require Carp; Carp::croak(@_) } - -## -## "SWASH" == "SWATCH HASH". A "swatch" is a swatch of the Unicode landscape. -## It's a data structure that encodes a set of Unicode characters. -## - -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 - ## unorthodox 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: - { - ## - ## It could be a user-defined property. - ## - - my $caller1 = $type =~ s/(.+)::// ? $1 : caller(1); - - if (defined $caller1 && $type =~ /^(?:\w+)$/) { - my $prop = "${caller1}::$type"; - if (exists &{$prop}) { - no strict 'refs'; - - $list = &{$prop}; - last GETFILE; - } - } - - my $wasIs; - - ($wasIs = $type =~ s/^Is(?:\s+|[-_])?//i) - or - $type =~ s/^(?:(?:General(?:\s+|_)?)?Category|gc)\s*[:=]\s*//i - or - $type =~ s/^(?:Script|sc)\s*[:=]\s*//i - or - $type =~ s/^Block\s*[:=]\s*/In/i; - - - ## - ## See if it's in some enumeration. - ## - require "unicore/PVA.pl"; - if ($type =~ /^([\w\s]+)[:=]\s*(.*)/) { - my ($enum, $val) = (lc $1, lc $2); - $enum =~ tr/ _-//d; - $val =~ tr/ _-//d; - - my $pa = $PropertyAlias{$enum} ? $enum : $PA_reverse{$enum}; - my $f = $PropValueAlias{$pa}{$val} ? $val : $PVA_reverse{$pa}{lc $val}; - - if ($pa and $f) { - $pa = "gc_sc" if $pa eq "gc" or $pa eq "sc"; - $file = "unicore/lib/$pa/$PVA_abbr_map{$pa}{lc $f}.pl"; - last GETFILE; - } - } - else { - my $t = lc $type; - $t =~ tr/ _-//d; - - if ($PropValueAlias{gc}{$t} or $PropValueAlias{sc}{$t}) { - $file = "unicore/lib/gc_sc/$PVA_abbr_map{gc_sc}{$t}.pl"; - last GETFILE; - } - } - - ## - ## See if it's in the direct mapping table. - ## - require "unicore/Exact.pl"; - if (my $base = $utf8::Exact{$type}) { - $file = "unicore/lib/gc_sc/$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} || $utf8::Canonical{ lc $utf8::PropertyAlias{$canonical} })) { - $file = "unicore/lib/gc_sc/$base.pl"; - last GETFILE; - } - - ## - ## See if it's a user-level "To". - ## - - my $caller0 = caller(0); - - if (defined $caller0 && $type =~ /^To(?:\w+)$/) { - my $map = $caller0 . "::" . $type; - - if (exists &{$map}) { - no strict 'refs'; - - $list = &{$map}; - last GETFILE; - } - } - - ## - ## Last attempt -- see if it's a standard "To" name - ## (e.g. "ToLower") ToTitle is used by ucfirst(). - ## The user-level way to access ToDigit() and ToFold() - ## is to use Unicode::UCD. - ## - if ($type =~ /^To(Digit|Fold|Lower|Title|Upper)$/) - { - $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 and mappings), 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 = 0; - - my $ORIG = $list; - if ($list) { - my @tmp = split(/^/m, $list); - my %seen; - no warnings; - $extras = join '', grep /^[^0-9a-fA-F]/, @tmp; - $list = join '', - map { $_->[1] } - sort { $a->[0] <=> $b->[0] } - map { /^([0-9a-fA-F]+)/; [ hex($1), $_ ] } - 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 = defined $2 ? hex $2 : $min; - my $val = defined $3 ? hex $3 : 0; - $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 = utf8->SWASHNEW($t, "", 0, 0, 0); - } - elsif (exists &$name) { - $subobj = utf8->SWASHNEW($name, "", 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) { - chomp; - my ($a, $b, $c) = ($1, $2, $3); - croak "$type: illegal mapping '$_'" - if $type =~ /^To/ && - !(defined $a && defined $c); - my $min = hex $a; - my $max = defined $b ? hex $b : $min; - my $val = defined $c ? hex $c : 0; - 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) { - chomp; - 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; - } - } - } - } - 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/tlpkg/tlperl.old/lib/vars.pm b/Master/tlpkg/tlperl.old/lib/vars.pm deleted file mode 100644 index a0151b84030..00000000000 --- a/Master/tlpkg/tlperl.old/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/tlpkg/tlperl.old/lib/warnings.pm b/Master/tlpkg/tlperl.old/lib/warnings.pm deleted file mode 100644 index e43b686c908..00000000000 --- a/Master/tlpkg/tlperl.old/lib/warnings.pm +++ /dev/null @@ -1,497 +0,0 @@ -# -*- buffer-read-only: t -*- -# !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file was created by warnings.pl -# Any changes made here will be lost. -# - -package warnings; - -our $VERSION = '1.05'; - -=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 - -The C<warnings> pragma is a replacement for the command line flag C<-w>, -but the pragma is limited to the enclosing block, while the flag is global. -See L<perllexwarn> for more information. - -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 (); - -our %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, - ); - -our %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] - ); - -our %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 -{ - local $Carp::CarpInternal{'warnings'}; - delete $Carp::CarpInternal{'warnings'}; - Carp::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 ; -} - -my %builtin_type; @builtin_type{qw(SCALAR ARRAY HASH CODE REF GLOB LVALUE Regexp)} = (); - -sub __chk -{ - my $category ; - my $offset ; - my $isobj = 0 ; - - if (@_) { - # check the category supplied. - $category = shift ; - if (my $type = ref $category) { - Croaker("not an object") - if exists $builtin_type{$type}; - $category = $type; - $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(@_) ; - Carp::croak($message) - if vec($callers_bitmask, $offset+1, 1) || - vec($callers_bitmask, $Offsets{'all'}+1, 1) ; - Carp::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)) ; - - Carp::croak($message) - if vec($callers_bitmask, $offset+1, 1) || - vec($callers_bitmask, $Offsets{'all'}+1, 1) ; - - Carp::carp($message) ; -} - -1; -# ex: set ro: diff --git a/Master/tlpkg/tlperl.old/lib/warnings/register.pm b/Master/tlpkg/tlperl.old/lib/warnings/register.pm deleted file mode 100644 index 57c865df522..00000000000 --- a/Master/tlpkg/tlperl.old/lib/warnings/register.pm +++ /dev/null @@ -1,51 +0,0 @@ -package warnings::register; - -our $VERSION = '1.01'; - -=pod - -=head1 NAME - -warnings::register - warnings import function - -=head1 SYNOPSIS - - use warnings::register; - -=head1 DESCRIPTION - -Creates a warnings category with the same name as the current package. - -See L<warnings> and L<perllexwarn> for more information on this module's -usage. - -=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; |